{"version":3,"sources":["webpack:///./src/components/sub/listCz.vue?31f1","webpack:///./src/assets/icon_project.png","webpack:///./src/components/globle/tabs.vue?629b","webpack:///./src/components/lib/vue-picture-viewer.vue?93e8","webpack:///./src/assets/icon-set-b.png","webpack:///./src/assets/icon_edit.png","webpack:///./src/assets/icon-mc-b.png","webpack:///./src/js/urls.js","webpack:///./src/assets/icon-guide.png","webpack:///./src/assets/icon-warning.png","webpack:///./src/ueditor/ueditor.config.js","webpack:///./src/components/tan/tanEditComAddress.vue?5703","webpack:///./src/assets/user.png","webpack:///./src/components/lib/icon/iconfont.svg","webpack:///./src/assets/icon-notice.png","webpack:///./src/assets/base-config.png","webpack:///./src/js/urls_sxm.js","webpack:///./src/components/globle/warns.vue?5a88","webpack:///./src/assets/icon-bid.png","webpack:///./src/App.vue?261d","webpack:///./src/assets/icon-search.png","webpack:///./src/assets/xz.png","webpack:///./src/js/mixins.js","webpack:///./src/ueditor/ueditor.parse.js","webpack:///./src/assets/icon_add.png","webpack:///./src/assets/icon-add-b.png","webpack:///./src/assets/icon-help.png","webpack:///./src/js/util.js","webpack:///./src/assets/icon-result.png","webpack:///src/App.vue","webpack:///./src/App.vue?edc5","webpack:///./src/App.vue","webpack:///./src/store/common.js","webpack:///./src/store/index.js","webpack:///./src/router/map/wzm.js","webpack:///./src/router/map/ls.js","webpack:///./src/router/map/sxm.js","webpack:///./src/router/maps.js","webpack:///./src/router/map/qym.js","webpack:///./src/router/map/hy.js","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/assets/icon-folder.png","webpack:///./src/assets/envi-word.png","webpack:///./src/js/env.js","webpack:///./src/components/lib/vue-picture-viewer.vue?b1db","webpack:///./src/App.vue?e354","webpack:///./src/js/param.js","webpack:///./src/assets/icon-select.png","webpack:///src/components/globle/tabs.vue","webpack:///./src/components/globle/tabs.vue?7f7f","webpack:///./src/components/globle/tabs.vue","webpack:///src/components/globle/childCom.vue","webpack:///./src/components/globle/childCom.vue?323c","webpack:///./src/components/globle/childCom.vue","webpack:///src/components/globle/warns.vue","webpack:///./src/components/globle/warns.vue?f13b","webpack:///./src/components/globle/warns.vue","webpack:///./src/components/globle/index.js","webpack:///./src/components/tan/tanEditComAddress.vue?72cb","webpack:///./src/components/globle/childCom.vue?dc20","webpack:///./src/assets/icon-cab.png","webpack:///./src/components/sub/listCaoZuoO.vue?1016","webpack:///./src/components/globle/childCom.vue?55dc","webpack:///./src/assets/icon-infor.png","webpack:///./src/assets/phone.png","webpack:///./src/assets/icon_seeDeatlia.png","webpack:///./src/components/lib/icon/iconfont.eot","webpack:///./src/assets/icon-more.png","webpack:///./src/assets/icon-printing.png","webpack:///./src/assets/icon-other.png","webpack:///./src/assets/icon-cabient-b.png","webpack:///./src/js/common.js","webpack:///./src/ueditor/lang/zh-cn/zh-cn.js","webpack:///./src/assets/icon-cabient.png","webpack:///src/components/sub/listCz.vue","webpack:///./src/components/sub/listCz.vue?cca2","webpack:///./src/components/sub/listCz.vue","webpack:///src/components/tan/tanEditComAddress.vue","webpack:///./src/components/tan/tanEditComAddress.vue?7abe","webpack:///./src/components/tan/tanEditComAddress.vue","webpack:///src/components/sub/listCaoZuo.vue","webpack:///./src/components/sub/listCaoZuo.vue?2dc3","webpack:///./src/components/sub/listCaoZuo.vue","webpack:///src/components/sub/listCaoZuoO.vue","webpack:///./src/components/sub/listCaoZuoO.vue?4a34","webpack:///./src/components/sub/listCaoZuoO.vue","webpack:///src/components/globle/listTable.vue","webpack:///./src/components/globle/listTable.vue?d821","webpack:///./src/components/globle/listTable.vue","webpack:///./src/components/sub/listCaoZuoO.vue?6695","webpack:///./src/assets/icon-export.png","webpack:///./src/assets/depart.png","webpack:///./src/components/sub/listCaoZuo.vue?55e6","webpack:///./src/components/globle/tabs.vue?899e","webpack:///./src/js/fetch.js","webpack:///./src/assets/jl.png","webpack:///./src/components/globle/warns.vue?7963","webpack:///./src/components/sub/listCaoZuo.vue?9ae6","webpack:///./src/ueditor/ueditor.all.js","webpack:///./src/components/sub/listCz.vue?3d7e","webpack:///./src/assets/icon-set.png","webpack:///./src/assets/icon-mc.png","webpack:///./src/assets/security.png","webpack:///./src/components/lib/icon/iconfont.ttf","webpack:///src/components/lib/vue-picture-viewer.vue","webpack:///./src/components/lib/vue-picture-viewer.vue?5c1c","webpack:///./src/components/lib/vue-picture-viewer.vue","webpack:///./src/components/lib/index.js","webpack:///./src/assets/icon-add.png","webpack:///./src/assets/lock.png"],"names":["content","__webpack_require__","module","i","locals","exports","escape","push","version","sources","names","mappings","file","sourcesContent","sourceRoot","d","__webpack_exports__","GetMenuList","GetBusinessLicenseList","DeleteBusinessLicense","EditBusinessLicense","AddBusinessLicense","GetQualificationsCertificateList","DeleteQualificationsCertificate","EditQualificationsCertificate","AddQualificationsCertificate","GetSafetyProductionLicenseList","DeleteSafetyProductionLicense","EditSafetyProductionLicense","AddSafetyProductionLicense","GetBankAccountList","DeleteBankAccount","EditBankAccount","AddBankAccount","GetComCustomizeCertificateList","DeleteComCustomizeCertificate","EditComCustomizeCertificate","AddComCustomizeCertificate","GetRegisterClassList","DeleteRegisterClass","EditRegisterClass","AddRegisterClass","GetTechnicalTitleList","DeleteTechnicalTitle","EditTechnicalTitle","AddTechnicalTitle","GetSiteManageList","DeleteSiteManage","EditSiteManage","AddSiteManage","GetTechnologyWorkerList","DeleteTechnologyWorker","EditTechnologyWorker","AddTechnologyWorker","GetSafetyThreeTypeList","DeleteSafetyThreeType","EditSafetyThreeType","AddSafetyThreeType","GetSpecialtyOperationList","DeleteSpecialtyOperation","EditSpecialtyOperation","AddSpecialtyOperation","GetPersonCustomizeCertificateList","DeletePersonCustomizeCertificate","EditPersonCustomizeCertificate","AddPersonCustomizeCertificate","EditDigitalCertificateInfo","companyLockList","onlineLockList","personLockList","DelectDigitalCertificate","GetPersonnelBasicList","DeletePersonnelBasic","GetDeparturePersonnelBasicList","GetProjectTenderList","GetProjectBidTenderList","DeleteProjectTender","GetProjectListing","GetProjectListed","DelectProjectInfo","GetProjectContractListget","GetProjectContractListpay","DeleteProjectContract","NewGetDepartmentTree","GetCertificateClassifyList","GetCurrentUserAuthority","NewGetByKey","GetById","GetPersonnelPhone","EditPersonnelPhone","GetFileFolderDetail","GetCabinetFileDetail","GetCertificateDetialInfo","GetCertificateDetialAuthority","AddCertificateFileCabinet","DeleteCertificateFileCabinet","EditCertificateFileCabinet","GetFolderFileStatisticsInfo","MoveCertificatePosition","GetSelectPersonnelBasicList","DeleteCertificateSite","GetPersonnelBasicDetail","UserCertificateRecordPage","UserPersonCertificatePage","GetBusinessLicenseDetail","GetQualificationsCertificateInfo","GetSafetyLicenseInfo","GetBankAccountInfo","GetComCustomizeCertificateDetail","GetDigitalCertificateInfo","GetRegisterClassDetail","GetTechnicalTitleDetail","GetSiteManageDetail","GetTechnologyWorkerDetail","GetSafetyThreeTypeDetail","GetSpecialtyOperationDetail","GetPersonCustomizeCertificateDetail","GetProjectInfo","GetProjectContractDetail","GetAddress","AddEmployeeBasic","EditPersonnelBasic","AddEmployeeContract","DeleteEmployeeContract","AddEmployeeSocialInsurance","DeleteEmployeeSocialInsurance","AddEmployeeProvidentFund","DeleteEmployeeProvidentFund","EditEmployeeContract","EditEmployeeSocialInsurance","EditEmployeeProvidentFund","GetCertificateFileCabinetList","GetSystemWareConfigurationList","EditSystemWareConfiguration","GetSelectRole","GetSensitiveWordList","OpenOrCloseSensitiveWord","GetClassify","GetProjectManagerList","GetProjectUserList","GetSelectProjectInfo","GetProjectTenderDetail","EditProjectTender","AddProjectTenderMargin","DeleteProjectTenderMargin","AddProjectTenderCarry","DeleteProjectTenderCarry","AddProjectTenderAuditRecord","AddProjectMainInfo","EditProjectMainInfo","AddProjectUser","DelectProjectUserMake","AddProjectCompany","DelectProjectCompany","AddProjectContract","EditProjectContract","GetCertificateRecordList","GetCertificateBorrowInfo","EditCertificate","AddFeedback","nav_url","__WEBPACK_IMPORTED_MODULE_0__fetch__","data","fetch","url","window","UEDITOR_HOME_URL","URL","getUEBasePath","docUrl","confUrl","basePath","test","exec","replace","split","path","protocol","tmp","res","length","shift","pop","join","optimizationPath","getBasePath","self","document","location","href","configPath","getElementsByTagName","src","UEDITOR_CONFIG","serverUrl","toolbars","zIndex","xssFilterRules","inputXssFilter","outputXssFilter","whitList","a","abbr","address","area","article","aside","audio","b","bdi","bdo","big","blockquote","br","caption","center","cite","code","col","colgroup","dd","del","details","div","dl","dt","em","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","p","pre","s","section","small","span","sub","sup","strong","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","UE","GetTechnicalDirectorList","EditTenderBidding_state","DeleteUserRole","AddRoleAndRoleUseCase","GetNewCurrentRoleUseCaseInfo","NewEditRoleAndRoleUseCase","VerificationRepeatData","GetPersonSmartMatchInfo","GetAddressNameByID","GetPersonCerInfoByMoreCondition","SendSMSVerificationCode","UserLoginVerification","GetCurrentUserDetail","CurrentUserEditPwd","GetAllRoleList","GetCurrentUserSelectRole","SetUserRole","GetNoDistributionEmployee","AddUser","EditUser","GetUserManageInfoList","GetUserDetail","GetUserInfoList","GetRoleList","GetCurrentRoleSelectUser","DeleteRole","GetNewMenuUseCaseInfo","SetRoleUser","GetWorkFlowProcessList","OpenOrCloseWorkFlowProcess","AddDepartment","DeleteDepartment","EditDepartment","GetNoDeptEmployee","EditEmpDept","methods","httpBack","promise","successBack","errorBack","msgObj","_this","this","then","Panduanxx","msg","errorMsg","$message","error","message","msgByCode","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default","reject","successMsg","success","Message","catch","catchError","failure","usernameorpwderror","systemdata","repeat","data_repeat","notexist","existsubset","notAuthority","packageMaturity","notAccessAuthority","notAccessDataAuthority","loginExpired","loginFailure","paramError","deptname_exist","idcard_exist","nofull","depthaveemp","depthavechilddept","emphavecer","menuhavechildmenu","rolehaveuser","unknown","oversize","noIncomingData","NonExistentUser","MessageCodeError","openNewTab","param","tag","title","menu_name","name","key","$store","state","common","allPath","obj","label","menu_id","$router","history","current","meta","keepAlive","tabObjs","dispatch","params","getByKey","str","callback","getById","id","iConfirm","subtitle","errorback","_this2","$confirm","confirmButtonText","cancelButtonText","type","iPrompt","_this3","$prompt","_ref","value","isIE","ActiveXObject","utils","removeLastbs","extend","t","arguments","notCover","isBoolean","len","x","k","hasOwnProperty","cssRule","style","doc","indexList","index","sheetStyle","styleSheets","undefined","createStyleSheet","cssText","node","head","getElementById","createElement","appendChild","innerHTML","removeChild","domReady","onready","readyState","isReady","documentElement","doScroll","setTimeout","callee","attachEvent","addEventListener","removeEventListener","each","iterator","context","l","call","inArray","arr","item","v","pushItem","trim","indexOf","array","start","isNumber","hasClass","element","className","ci","cls","RegExp","addClass","elm","classNames","removeClass","isArray","removeAttribute","on","handler","types","_d","els","toString","evt","srcElement","event","off","detachEvent","e","splice","loadFile","tmpList","getItem","fn","ready","funs","body","setAttribute","onload","onreadystatechange","fi","onerror","Error","html","write","Object","prototype","apply","parselist","parse","register","parseName","load","opt","uParse","selector","querySelectorAll","contents","root","jsurl","cssurl","pres","XRegExp","rootPath","highlightJsUrl","highlightCssUrl","rel","defer","pi","SyntaxHighlighter","highlight","me","tables","findParentByTagName","target","tagNames","tagName","toUpperCase","parentNode","sort","compareFn","item1","item2","localeCompare","j","cells","firstChild","cell","colIndex","rows","sortType","getAttribute","sortByCellIndex","trArray","flag","Fn","reversecurrent","td1","td2","orderbyasc","value1","innerText","textContent","value2","reversebyasc","orderbynum","match","reversebynum","tr1","tr2","fragment","ownerDocument","createDocumentFragment","sortTable","tableSortCompareFn","updateTable","chartContainerHeight","resourceRoot","containers","formatData","tableNode","row","metaConfig","rowData","metaData","loadHighcharts","Highcharts","loadTypeConfig","config","chartConfig","analysisConfig","renderChart","createContainer","typeConfig","chartType","render","container","$","highcharts","credits","enabled","exporting","text","subTitle","xAxis","xTitle","categories","yAxis","yTitle","plotLines","width","color","tooltip","valueSuffix","suffix","legend","layout","align","verticalAlign","borderWidth","series","replaceChild","result","dataFormat","jlen","slice","curData","tip","rootNode","extractChartData","jQuery","styles","customCss","customStyle","cn","cn1","cn2","num","num1","num2","dash","dot","liiconpath","listDefaultPaddingLeft","ols","uls","applyStyle","nodes","T","list","listStyle","childNodes","sourcePath","swfUrl","videojs","autoSetup","options","flash","swf","Vue","component","session","lsVal","sessionStorage","JSON","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_typeof___default","Array","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default","setItem","deepcopy","source","sourceCopy","response","status","removeItem","onClose","reload","App","created","init","token","util","_h","$createElement","_c","_self","attrs","_withStripped","esExports","staticRenderFns","selectortype_template_index_0_src_App","disposed","Component","normalizeComponent","ssrContext","__file","src_App","initTab","loginData","currentTabPage","currentTab","home","currentTable","commonPage","tabsDom","currentPageParam","biaotouName","cabinetName","zxtabledata","mutations","muDelTab","idx","topTabs","actions","addTopTab","commit","changeTopTab","_ref2","getters","use","Vuex","store","Store","modules","wzm","resolve","require","__WEBPACK_AMD_REQUIRE_ARRAY__","bind","oe","detail","edit","add","delPromise","ls","sxm","toConcat","allarr","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","get_iterator_default","next","done","concat","err","return","defineProperty_default","Router","baseRoute","children","maps","redirect","router","routes","beforeEach","to","from","ElementUI","mixin","mixins","Print","vuePictureViewer","productionTip","Bus","el","components","template","baseUrl","attachmentBaseUrl","colors","warns","$black","$lblack","$lgray","$blue","$purple","warning","tabs","currentPage","computed","watch","deep","removeTab","targetName","needTab","delTab","lastTab","Shendufuzhi","needName","pp","toRoute","changeTab","tab","getCurrentTab","_vm","staticClass","closable","tab-click","tab-remove","model","$$v","expression","_l","globle_tabs","components_globle_tabs","childCom","childChoose","props","childCompany","default","chooseChildCompany","val","$emit","isChanged","childCom_render","_v","size","placeholder","change","com_name","com_id","childCom_esExports","globle_childCom","childCom_disposed","childCom_Component","childCom_normalizeComponent","components_globle_childCom","warn","warns_render","warns_esExports","globle_warns","warns_disposed","warns_Component","warns_normalizeComponent","components_globle_warns","listTable","baseurl","getCookie","reg","cookie","unescape","setCookie","exp","Date","setTime","getTime","Days","toGMTString","formatDate","time","format","tf","getFullYear","getMonth","getMinutes","getDate","getHours","getSeconds","now","nowDayOfWeek","getDay","nowDay","nowDD","nowMonth","nowmm","nowYear","getYear","nowHours","nowHH","nowMinutes","nowMM","nowSeconds","nowss","dtime","getMonthDays","myMonth","monthStartDate","getMonthStartDate","getMonthEndDate","monthEndDate","checkReg","no","pattern","chars","generateMixed","n","Math","ceil","random","htmlencode","createTextNode","htmldecode","jisuanshijian","tiwen","shijiancha","parseInt","JiahaoTihuan","JiahaoFan","Canshuurl","CanshuurlID","Canshuurl_biy","id_type","sczt_type","sczt","Canshuurl_ciy","Json_","all","bztime","myDate","yyyy","MM","hh","mm","ss","riqi","txsj","stra","strb","tsa","tsb","tsc","quchukongge","allkong","cc","zhuanma","jiema","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof___default","decodeURIComponent","jiema_x","Tidai","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default","jsona","caidanurl","txfs","patt0","patt1","patt2","end","str_ls","shijian","danwei","from_qh","from_str","string","from_str_ed1","str1","str2","arr_in","from_str_vs1","jine","jtem","biaoti","abs","in_id_str","str0","count","not_in_id_str","downloadFile","sUrl","navigator","userAgent","alert","isChrome","isSafari","link","download","fileName","substring","lastIndexOf","createEvent","initEvent","dispatchEvent","open","mxcs","endstr","mxcs_act","dx_str","huanhangfu","zsjb_info","dtem","four","tt_c","jb","jibie","zy","zhuanye","zc","chu_zhuan","sl","shuliang","fs","fenshu","sanleirenyuan","zhicheng","yongtu","shebaoxinxi","jiage","nian","daizhuanye","xuanz","zsjb_text","zhengshujibie","ls_jibie","Dangqianriqi","date","year","month","strDate","riqichuli","Huoquriqi","dangqian","shu","zuotian","zhou","getUTCDay","benzhou","shangzhoustar","shangzhouend","qitian","day","benyue","setDate","nowdays","shangyuestar","shangyueend","Panduangeshi","Shujupanduan","Sousuoxunhuan","neirong","geshiz","sousuo","u10","u1","leixing","u6","Liebiaolistchuli","biaotou","Biaotouchuli","u8","c","Forinreturn","Shuxingsousuo","lx","eval","Localzhuan","localStorage","Localjie","Geshizhuanhuan","Caidancaifen","CheckBankNo","bankno","luhnCheck","lastNum","substr","first15Num","newArr","arrJiShu","arrJiShu2","arrOuShu","jishu_child1","jishu_child2","h","sumTotal","sumJiShu","sumOuShu","sumJiShuChild1","sumJiShuChild2","m","location_href","hostname","port","zutu_chuli","zutu","zutu_ls","IdCard","UUserCard","age","huoquhoushijian","hour","min","setHours","setMinutes","setSeconds","Shujubidui","original","keys","newshuju","delshuju","forEach","bi","pan","z","jigou_jlxz","jigou_list","ktem","jigoumingcheng","Diguichuli","restr","I18N","labelMap","anchor","undo","redo","bold","indent","snapscreen","italic","underline","strikethrough","subscript","fontborder","superscript","formatmatch","pasteplain","selectall","print","preview","horizontal","removeformat","unlink","insertrow","insertcol","mergeright","mergedown","deleterow","deletecol","splittorows","splittocols","splittocells","deletecaption","inserttitle","mergecells","deletetable","cleardoc","insertparagraphbeforetable","insertcode","fontfamily","fontsize","paragraph","simpleupload","insertimage","edittable","edittd","emotion","spechars","searchreplace","map","gmap","insertvideo","help","justifyleft","justifyright","justifycenter","justifyjustify","forecolor","backcolor","insertorderedlist","insertunorderedlist","fullscreen","directionalityltr","directionalityrtl","rowspacingtop","rowspacingbottom","pagebreak","insertframe","imagenone","imageleft","imageright","attachment","imagecenter","wordimage","lineheight","edittip","customstyle","autotypeset","webapp","touppercase","tolowercase","background","scrawl","music","inserttable","drafts","charts","decimal","lower-alpha","lower-roman","upper-alpha","upper-roman","circle","disc","square","songti","kaiti","heiti","lishu","yahei","andaleMono","arial","arialBlack","comicSansMs","impact","timesNewRoman","tc","tl","im","hi","autoupload","exceedSizeError","exceedTypeError","jsonEncodeError","loading","loadError","errorLoadConfig","elementPathTip","wordCountTip","wordCountMsg","wordOverFlowMsg","ok","cancel","closeDialog","tableDrag","autofloatMsg","loadconfigError","loadconfigFormatError","loadconfigHttpError","snapScreen_plugin","browserMsg","callBackErrorMsg","uploadErrorMsg","as3","bash","cpp","css","cf","c#","delphi","diff","erlang","groovy","java","jfx","js","pl","php","plain","ps","python","ruby","scala","sql","vb","xml","confirmClear","contextMenu","delete","deletecode","confirmclear","aligntd","aligntable","tableleft","tablecenter","tableright","setbordervisible","insertparagraphbefore","insertparagraphafter","insertrownext","insertcolnext","insertcaption","deletetitle","inserttitlecol","deletetitlecol","averageDiseRow","averageDisCol","mergeleft","tablesort","enablesort","disablesort","borderbk","setcolor","unsetcolor","setbackground","unsetbackground","redandblue","threecolorgradient","copy","copymsg","paste","pastemsg","anthorMsg","clearColor","standardColor","themeColor","property","modify","justify","clear","anchorMsg","clickToUpload","unset","t_row","t_col","more","pasteOpt","pasteSourceFormat","tagFormat","pasteTextFormat","autoTypeSet","mergeLine","delLine","removeFormat","alignment","imageFloat","removeFontsize","removeFontFamily","removeHtml","pasteFilter","run","symbol","bdc2sb","tobdc","static","lang_background_normal","lang_background_local","lang_background_set","lang_background_none","lang_background_colored","lang_background_color","lang_background_netimg","lang_background_align","lang_background_position","repeatType","noUploadImage","toggleSelect","lang_tab_remote","lang_tab_upload","lang_tab_online","lang_tab_search","lang_input_url","lang_input_size","lang_input_width","lang_input_height","lang_input_border","lang_input_vhspace","lang_input_title","lang_input_align","lang_imgLoading","lang_start_upload","lock","searchType","searchTxt","searchBtn","searchReset","noneAlign","leftAlign","rightAlign","centerAlign","uploadSelectFile","uploadAddFile","uploadStart","uploadPause","uploadContinue","uploadRetry","uploadDelete","uploadTurnLeft","uploadTurnRight","uploadPreview","uploadNoPreview","updateStatusReady","updateStatusConfirm","updateStatusFinish","updateStatusError","errorNotSupport","errorExceedSize","errorFileType","errorInterrupt","errorUploadRetry","errorHttp","errorServerUpload","remoteLockError","numError","imageUrlError","imageLoadError","searchRemind","searchLoading","searchRetry","lang_drop_remind","lang_tab_insertV","lang_tab_searchV","lang_tab_uploadV","lang_video_url","lang_video_size","lang_videoW","lang_videoH","lang_alignment","videoSearchTxt","videoType","videoSearchBtn","videoSearchReset","lang_input_fileStatus","startUpload","lang_upload_size","lang_upload_width","lang_upload_height","lang_upload_alignment","lang_format_advice","floatLeft","floatRight","\"default\"","block","urlError","clickToSelect","goToSource","noVideo","browseFiles","uploadSuccess","delSuccessFile","delFailSaveFile","statusPrompt","flashVersionError","flashLoadingError","fileUploadReady","delUploadQueue","limitPrompt1","limitPrompt2","delFailFile","fileSizeLimit","emptyFile","fileTypeError","unknownError","fileUploading","cancelUpload","netError","failUpload","serverIOError","noAuthority","fileNumLimit","failCheck","fileCanceling","stopUploading","tip1","tip2","applyFor","anthorApi","lang_template_bkcolor","lang_template_clear","lang_template_select","blank","blog","resume","richText","sciPapers","lang_input_previousStep","lang_input_nextsStep","lang_input_clear","lang_input_addPic","lang_input_ScalePic","lang_input_removePic","J_imgTxt","noScarwl","scrawlUpLoading","continueBtn","imageError","backgroundUploading","lang_input_tips","J_searchBtn","emptyTxt","chapter","singer","special","listenTest","lang_input_anchorName","lang_data_source","lang_chart_format","lang_data_align","lang_chart_align_same","lang_chart_align_reverse","lang_chart_title","lang_chart_main_title","lang_chart_sub_title","lang_chart_x_title","lang_chart_y_title","lang_chart_tip","lang_cahrt_tip_prefix","lang_cahrt_tip_description","lang_chart_data_unit","lang_chart_data_unit_title","lang_chart_data_unit_description","lang_chart_type","lang_prev_btn","lang_next_btn","lang_input_choice","lang_input_Tuzki","lang_input_BOBO","lang_input_lvdouwa","lang_input_babyCat","lang_input_bubble","lang_input_youa","lang_input_address","lang_input_search","searchError","lang_input_about","lang_input_shortcuts","lang_input_introduction","lang_Txt_shortcuts","lang_Txt_func","lang_Txt_bold","lang_Txt_copy","lang_Txt_cut","lang_Txt_Paste","lang_Txt_undo","lang_Txt_redo","lang_Txt_italic","lang_Txt_underline","lang_Txt_selectAll","lang_Txt_visualEnter","lang_Txt_fullscreen","lang_input_isScroll","lang_input_frameborder","lang_input_alignMode","enterAddress","lang_input_text","lang_input_target","validLink","httpPrompt","lang_city","lang_address","city","lang_search","lang_dynamicmap","cityMsg","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","lang_tableStyle","lang_insertCaption","lang_insertTitle","lang_insertTitleCol","lang_orderbycontent","lang_tableSize","lang_autoSizeContent","lang_autoSizePage","lang_example","lang_borderStyle","lang_color","captionName","titleName","cellsName","lang_delRow","lang_delCol","lang_tdBkColor","formula","lang_resave","uploadBtn","alt","clipboard","lang_step","fileType","flashError","copySuccess","flashI18n","autosave","saving","listCz","authority","childrenCom","click","buttons","$event","stopPropagation","_s","txt","_e","sub_listCz","components_sub_listCz","tanEditComAddress","visible","ishow","iptDatas","isDisable","dept_id","dept_name","email","emp_id","emp_name","phone_number","seat_phone","titles","Boolean","tanData","wai_show","nei_show","getDatas","handleClose","alter","urls","tanEditComAddress_render","show-close","close-on-click-modal","append-to-body","before-close","update:visible","ref","label-width","staticStyle","disabled","$set","margin-left","tanEditComAddress_esExports","tan_tanEditComAddress","tanEditComAddress_disposed","tanEditComAddress_Component","tanEditComAddress_normalizeComponent","listCaoZuo","tanComAddressShow","tanComAddressData","isZB","isBM","mapping","BusinessLicense","QualificationsCertificate","SafetyProductionLicense","BankAccount","ComCustomizeCertificate","PersonCertificateBase","TechnicalTitleAttribute","SiteManageAttribute","TechnologyWorkerAttribute","SafetyThreeTypeAttribute","SpecialtyOperationAttribute","PersonCustomizeCertificate","DigitalCertificate","bidReview","confirm","$route","toSeePage","toPage","fixCabient","certificate_goes","certificate_state","certificate_File_num","sure_shenhe","sure_baoming","primary_key","tablename","distinguishCancelAndClose","urls_sxm","project_tender_id","bidding_state","$parent","getinfo","action","base_table_name","base_table_id","certificate_type_id","child_menu_id","show_authority","audit_state","bidding_state_id","_this4","file_cabinet_id","file_cabinet_name","tanEdit","listCaoZuo_render","update:ishow","listCaoZuo_esExports","sub_listCaoZuo","listCaoZuo_disposed","listCaoZuo_Component","listCaoZuo_normalizeComponent","components_sub_listCaoZuo","listCaoZuoO","locked","unlock","defualt","is_findpower","setState","borrow","GoseString","StateName","listCaoZuoO_render","directives","rawName","height","listCaoZuoO_esExports","sub_listCaoZuoO","listCaoZuoO_disposed","listCaoZuoO_Component","listCaoZuoO_normalizeComponent","tableData","selectData","total","mergeSpan","caozuoArr","baseConfig","tableHead","String","datePickerStyle","showSelect","showCaozuo","otherCaozuo","showXuhao","showPage","showTootip","shuaXin","showBorder","caozuoWidth","Number","changepage","activated","objectSpanMethod","column","rowIndex","columnIndex","mergeObj","isMerge","rowspan","columnLength","colspan","needMerge","merge","arrRes","merges","stringify_default","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","assign_default","powerShuaXin","page","limit","orderby","httpPromise","setTableData","killNull","changepagesize","scope","wselect","caozuo","rowClick","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","getTableRef","$refs","tableList","listTable_render","min-width","span-method","show-overflow-tooltip","element-loading-text","element-loading-spinner","element-loading-background","border","stripe","max-height","row-click","selection-change","scopedSlots","_u","$index","sortable","prop","field","domProps","templet","fixed","current-page","update:currentPage","update:current-page","current-change","size-change","listTable_esExports","globle_listTable","listTable_Component","listTable_normalizeComponent","getUrlString","dataArr","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default","uploadImage","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_promise___default","formData","FormData","append","uri","method","headers","Content-Type","x-access-token","json","responseData","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_asyncToGenerator___default","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_regenerator___default","_callee","requestConfig","wrap","_context","prev","abrupt","mode","cache","sent","t0","requestObj","XMLHttpRequest","sendData","setRequestHeader","send","stop","baidu","editor","plugins","commands","instants","_customizeUI","dom","browser","agent","toLowerCase","opera","ie","webkit","mac","quirks","compatMode","gecko","product","v1","v2","max","ie11Compat","documentMode","ie9Compat","ie8","ie8Compat","ie7Compat","ie6Compat","ie9above","ie9below","ie11above","ie11below","geckoRelease","chrome","safari","parseFloat","isCompatible","mobile","air","makeInstance","noop","Function","extend2","inherits","subClass","superClass","oldP","newP","constructor","delay","exclusion","timerID","clearTimeout","listToMap","unhtml","<","&","\"",">","'","unhtmlForUrl","<","&",""",">","'"," ","cssStyleToDomStyle","float","cssFloat","styleFloat","cssName","charAt","isEmptyObject","isString","fixColor","optCss","padding","margin","top","bottom","left","r","right","clone","transUnitToPx","unit","round","fnArr","doReady","win","nodeType","serializeParam","strArr","encodeURIComponent","formatUrl","isCrossDomainUrl","clearEmptyAttrs","str2json","json2str","pad","escapeMap","\b","\t","\n","\f","\r","\\","isFinite","charCodeAt","floor","preComma","encodeArray","isDate","encodeDate","encode","EventBase","getListener","force","allListeners","__allListeners","addListener","listener","ti","removeListener","trigger","fireEvent","listeners","dtd","_","X","A","isindex","fieldset","B","input","button","select","textarea","C","D","iframe","E","menu","noscript","dir","noframes","F","script","G","acronym","var","#","kbd","strike","q","samp","dfn","H","embed","object","basefont","applet","I","J","K","form","L","M","N","O","P","Q","R","S","base","U","V","empty","command","dialog","keygen","track","wbr","$nonBodyContent","$block","$inline","$inlineWithA","$body","$cdata","$empty","$nonChild","$listItem","$list","$isNotEmpty","$removeEmpty","$removeEmptyBlock","$tableContent","$notTransContent","option","optgroup","getDomNode","ltr","startFromChild","guard","parent","tmpNode","attrFix","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","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","8","46","16","17","18","37","38","39","40","13","getPosition","nodeA","nodeB","parentsA","parentsB","reverse","nextSibling","getNodeIndex","ignoreTextNode","preNode","previousSibling","inDoc","findParent","filterFn","includeSelf","isBody","excludeFn","findParents","closerFirst","parents","insertAfter","newNode","insertBefore","remove","keepChildren","child","hasChildNodes","getNextDomNode","getPreDomNode","isBookmarkNode","getWindow","defaultView","parentWindow","getCommonAncestor","clearEmptySibling","ignoreNext","ignorePre","isEmptyInlineElement","nodeValue","offset","retval","splitText","isWhitespace","getXY","y","offsetParent","offsetTop","offsetLeft","un","isSameElement","thisAttrs","attributes","otherAttrs","attrA","attrB","al","bl","nodeName","specified","isSameStyle","getNamedItem","styleA","styleB","isBlockElm","getComputedStyle","breakParent","leftNodes","rightNodes","parentClone","cloneNode","trimWhiteTextNode","mergeChild","filter","ni","mergeToParent","textDecoration","mergeSibling","rtl","lastChild","unSelectable","onselectstart","onclick","onkeyup","onkeydown","unselectable","MozUserSelect","webkitUserSelect","msUserSelect","KhtmlUserSelect","removeAttributes","attrNames","getAttributeNode","removeAttributeNode","setAttributes","attr","styleName","fontSize","offsetHeight","getStyle","getPropertyValue","currentStyle","removeClasses","isRegExp","preventDefault","returnValue","removeStyle","removeProperty","setStyle","setStyles","removeDirtyAttr","getChildCount","first","isEmptyNode","isBr","clearSelectedArr","scrollToView","winHeight","clientWidth","clientHeight","currentScroll","pageXOffset","pageYOffset","scrollLeft","scrollTop","getScrollPosition","scrollTo","isFillChar","isInStart","isStartInblock","range","tmpRange","cloneRange","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","fillData","guid","selectOneNode","collapsed","endContainer","endOffset","setEndPoint","toStart","updateCollapse","execContentsAction","tmpStart","tmpEnd","frag","substringData","deleteData","currentLevel","startParents","endParents","si","ei","Range","removeFillData","excludeNode","contains","cloneContents","deleteContents","extractContents","setEnd","setStartAfter","setEndAfter","setEndBefore","setStartAtFirst","setStartAtLast","setEndAtFirst","setEndAtLast","selectNode","selectNodeContents","shrinkBoundary","ignoreEnd","check","trimBoundary","txtToElmBoundary","textNode","ignoreCollapsed","adjust","insertNode","nextNode","setCursor","toEnd","noFillData","createBookmark","serialize","same","endNode","startNode","moveToBookmark","bookmark","enlarge","toBlock","stopFn","enlargeToBlockElm","adjustmentBoundary","applyInlineStyle","aNode","level","removeInlineStyle","getClosedNode","textRange","nativeRange","createControlRange","addElement","createTextRange","moveToElementText","moveStart","tmpText","nativeRangeEnd","notInsertFillData","txtNode","sel","getSelection","focus","removeAllRanges","createRange","checkOffset","addRange","inFillChar","createAddress","ignoreTxt","addr","getAddress","isStart","addrs","firstIndex","startAddress","endAddress","moveToAddress","getNode","equals","traversal","doFn","getBoundaryInformation","getIndex","duplicate","parentElement","distance","siblings","testRange","startIndex","endIndex","position","compareEndPoints","_getIERange","ieRange","getNative","Selection","frameElement","_bakIERange","getIERange","ex","rangeInBody","txtRange","selection","_cachedRange","getRange","_cachedStartElement","_cachedStartElementPath","getStartElementPath","isFocus","rangeCount","optimze","transformIERangeToRange","firstRange","getRangeAt","lastRange","_bakRange","getText","nativeSel","clearRange","_selectionChangeTimer","uid","setValue","tis","hasContents","allHtmlEnabled","getAllHtml","getContent","langReadied","langIsReady","Editor","shortcutkeys","inputRules","outputRules","setOpt","defaultOptions","loadServerConfig","langPath","lang","plugin","checkCurLang","registerCommand","getOpt","destroy","display","offsetWidth","delEditor","getStyleValue","initialFrameWidth","minFrameWidth","initialFrameHeight","minFrameHeight","iframeCssUrl","initialStyle","customDomain","domain","overflow","_setup","geckoSel","contentEditable","spellcheck","_initEvents","autoSyncData","initialContent","autoClearinitialContent","oldExecCommand","execCommand","_setDefaultContent","setContent","focusInEnd","_selectionChange","ui","setFullScreen","_bindshortcutKeys","_bakNativeRange","setInterval","isShow","setHide","setDisabled","sync","formId","setHeight","notSetHeight","addshortcutkey","cmd","keyCode","which","$1","ctrlKey","metaKey","$2","$3","queryCommandState","notSetCursor","ignoreBlank","formatter","htmlparser","filterOutputRule","toHtml","headHtml","headHtmlForIE9","charset","getPlainTxt","getContentTxt","isAppendTo","notFireSelectionchange","filterInputRule","enterTag","blur","nativeRng","_proxyDomEvent","shiftKey","altKey","mouseX","mouseY","hackForMouseUp","clientX","clientY","bakGetIERange","moveToPoint","_callCmdFn","fnName","args","cmdFn","cmdName","notNeedUndo","__hasEnterExecCommand","ignoreContentChange","_ignoreContentChange","queryCommandValue","tags","reset","setEnabled","lastBk","bkqueryCommandState","bkqueryCommandValue","enable","except","disable","cont","setShow","show","hide","getLang","getContentLength","ingoneHtml","addInputRule","rule","addOutputRule","getActionUrl","actionName","imageUrl","_url","autoClearEmptyNode","imagePopup","theme","themePath","scaleEnabled","tableNativeEditInFF","fileNameFormat","showErrorMsg","console","configUrl","isJsonp","_serverConfigLoaded","ajax","request","dataType","onsuccess","responseText","isServerConfigLoaded","afterConfigReady","readyHandler","fnStr","creatAjaxRequest","doJsonp","opts","callbackFnName","timer","matches","successhandler","scr","callbackField","timeOut","getCallBack","search","queryStr","onTimeOut","exception","oncomplete","createScriptTag","ajaxOptions","xhr","timeIsOut","defaultAjaxOptions","timeout","async","ajaxOpts","submitStr","abort","doAjax","getJSONP","filterWord","transUnit","marks","parts","filterPasteWord","uNode","notTransAttrs","_src","_href","cdata_data","notTransTagName","indentChar","breakChar","insertLine","begin","insertIndent","nodeToHtml","isText","attrhtml","isElement","isComment","getNodeById","getAttr","getNodesByTagName","createText","noTrans","htmlstr","tmpRoot","textStr","getData","cj","attrName","setAttr","attrVal","isObject","cssStyle","nodeTraversal","re_tag","re_attr","allowEmptyTags","needParentNode","needChild","htmlattr","needParentTag","hasParent","tmpParent","currentIndex","nextIndex","currentParent","lastIndex","filterNode","rules","tmpVal","tmpAttrs","tmpCssStyle","_plugins","pluginName","oldOptionName","afterDisabled","optionName","execFn","_export","eventName","execName","exeFn","keymap","Backspace","Tab","Enter","Shift","Control","Alt","CapsLock","Esc","Spacebar","PageUp","PageDown","End","Home","Left","Up","Right","Down","Insert","Del","NumLock","Cmd","=","-","LocalStorage","storage","addBehavior","LOCAL_FILE","save","getUserData","saveLocalData","getLocalData","ROOTKEY","getObj","sourceEditors","setPreferences","getPreferences","removePreferences","allowDivTransToP","disabledTableInTable","cdata_tag","_ue_custom_node_","last","tmpNodes","tdParent","notNeedFilter","filterRules","hadBreak","tmpLi","autoHeightEnabled","mergeEmptyline","removeEmptyline","textAlign","imageBlockLine","clearFontSize","clearFontFamily","removeEmptyNode","removeTagNames","indentValue","highlightCont","cookieOpt","remainClass","selectTdClass","anchorclass","remainTag","autotype","isLine","notEmpty","removeNotAttributeSpan","fontFamily","textIndent","pN","pNode","txtstring","fromCharCode","ToDBC","DBC2SB","shortcutkey","autosubmit","submit","isSetColored","cssRuleId","stringToObj","setBackground","orgFn","bindEvents","su","imagePath","bgObj","background-color","background-image","background-repeat","background-position","aftersetcontent","inputRule","outputRule","floatStyle","unhtmlData","hspace","vspace","imgCi","defaultValue","bookmark2","text-align","doJustify","fonts","needCmd","needSetChild","mergesibling","bk","mergeWithParent","backgroundColor","1","2","3","4","5","6","7","spanParent","styleVal","optimize","textValue","rngClone","doLink","pe","as","_iframe","removeFormatTags","removeFormatAttributes","notIncludeA","tagReg","isRedundantSpan","bookmark1","doRemove","startBlock","endBlock","blockquotes","doEnd","childs","bkEnd","curNode","close","selectAll","notExchange","sourceCmdName","para","doParagraph","forward","doDirectionality","ii","formatTime","yy","filterTxtRules","brs","notNeedCodeQuery","insertparagraph","elementpath","inserthtml","fillchar","evtName","anchorname","20","notBreakTags","isHr","pageBreakTag","noshade","images","urlList","word_img","saveSceneTimer","maxUndoCount","maxInputCount","noNeedFillCharTags","orgState","compareAddr","indexA","indexB","undoManger","hasUndo","hasRedo","restore","scene","update","clearKey","getScene","rngAddress","notCompareRange","rngAddrA","rngAddrB","currentScene","lastScene","keycont","exclude","inputType","Undo","Redo","isCollapsed","interalTimer","clearInterval","stopCmdUndo","startCmdUndo","initZeroClipboard","ZeroClipboard","debug","swfPath","client","zeroclipboard","setText","setHtml","getClipboardData","pastebin","pastebins","txtContent","htmlContent","getPureHtml","atr","di","divs","tmpP","metas","dirtyNodes","spans","retainOnlyLabelPasted","plainType","tmpAddress","transP","removeNode","TD","PRE","BLOCKQUOTE","listToArray","autoTransWordToList","listiconpath","maxListLevel","disablePInList","OL","UL","adjustListStyle","ignore","nodeStyleType","styleIndex","setListStyle","paddingLeft","adjustList","ignoreEmpty","nextList","preList","getLi","pn","newChildrens","lastNode","checkListType","unorderlisttype","orderlisttype","cacheNode","appendLi","preventAndSave","findList","parentList","nextLi","checkLevel","levelNum","closeList","parentLi","startParent","endParent","bko","modifyStart","modifyEnd","nodeStyle","tmpFrag","tmpfrag","hasBlock","tmpDiv","tmpDivs","holder","onresize","setSelectionRange","dispose","codemirror","codeEditor","CodeMirror","tabMode","lineNumbers","lineWrapping","getWrapperElement","getScrollerElement","refresh","getCodeMirror","getValue","sourceEditor","orgSetContent","bakCssText","oldGetContent","bakAddress","sourceMode","sourceEditorFirst","oldQueryCommandState","codeMirrorJsUrl","codeMirrorCssUrl","hTag","doSave","startTd","endTd","excludeTagNameForTabKey","tabSize","tabNode","elementUpdated","Scale","resizer","cover","prePos","startPos","dragId","hands","getDom","initStyle","initEvents","isDraging","_eventHandler","hand","proxy","updateContainerStyle","updateTargetElement","attachTo","_validScaledProp","ele","isNaN","hideCover","showCover","editorPos","iframePos","targetObj","imgPos","borderLeftWidth","borderTopWidth","imageScale","imageScaleEnabled","_keyDownHandler","_mouseDownHandler","keydown","charCode","keyCodes","32","checkIsCludeLink","bakOverflow","currentHeight","isFullscreen","lastHeight","f","adjustHeight","enableAutoHeight","overflowY","disableAutoHeight","lastScrollY","onscroll","scrollY","topOffset","optsAutoFloatEnabled","autoFloatEnabled","toolbarBox","orgTop","uiUtils","LteIE6","placeHolder","defer_updateFloating","updateFloating","getClientRect","docStyle","backgroundImage","backgroundAttachment","unsetFloating","toobarBoxPos","origalFloat","origalLeft","rect3","toolbarTopOffset","creatInsertStr","classname","ext","switchImgAndVideo","img2video","videoObjs","cl","vi","UETable","indexTable","selectedTds","cellsRange","removeSelectedClass","addSelectedClass","getWidth","getTableCellAlignState","tempStatus","isSame","cellNode","currentState","getTableItemsByRange","getUETableBySelected","ueTable","getDefaultValue","tableBorder","tdPadding","tdBorder","tmpValue","borderMap","thin","medium","thick","insertRow","insertCell","getUETable","tdOrTable","cloneCell","ignoreMerge","keepPro","tmpCell","rowSpan","colSpan","borderLeftStyle","borderTopStyle","borderLeftColor","borderRightColor","borderRightWidth","borderTopColor","borderBottomColor","borderBottomWidth","getMaxRows","maxLen","currentMax","getMaxCols","cellRows","cellsNum","getCellColIndex","getHSideCell","previewRowIndex","previewColIndex","cellInfo","getCellInfo","beginColIndex","endColIndex","colsNum","beginRowIndex","getCell","cellIndex","getTabNextCell","preRowIndex","nextCell","getVSideCell","ignoreRange","nextRowIndex","nextColIndex","endRowIndex","rowsNum","getSameEndPosCells","xOrY","returns","setCellContent","getSameStartPosXCells","dNum","tds","selectTds","startInfo","endInfo","rowInfo","numCols","deleteCell","getCellsRange","cellA","cellB","cellAInfo","cellBInfo","checkRange","tmpBeginRowIndex","tmpBeginColIndex","tmpEndRowIndex","tmpEndColIndex","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","insertCellIndex","nextRow","preMerged","getPreviewMergedCellsNum","deleteTds","cacheMap","tmpRowIndex","tmpCellIndex","mergeTds","insertCol","preCell","backWidth","isInsertTitleCol","updateWidth","tmpWidth","deleteCol","tableRows","backTableWidth","backTdWidth","toFixed","splitToCells","splitToRows","splitToCols","endRow","indexRow","endCol","isLastCell","getLastCell","cols","selectRow","selectTable","colorList","removeBackground","UT","resetTdWidth","needIEHack","getTableWidth","tdsWidths","getSelectedArr","ut","defaultCols","numRows","defaultRows","tdvalign","firstParentBlock","tableWidth","tdWidth","createTable","valign","firstRow","tableItems","maxRowNum","newCell","maxColNum","averageWidth","setAverageWidth","tb","sumWidth","tbAttr","getAverageWidth","averageHeight","rowNum","sumHeight","tdpadding","captionHeight","thHeight","captionArr","thArr","trs","getAverageHeight","vAlign","activeMenuCell","borderColor","bkColor","interlaced","classList","borderStyle","tableDragTimer","cellMinWidth","isInResizeBuffer","cellBorderWidth","offsetOfTableCell","singleClickState","userActionStatus","dblclickTime","orgGetText","currentTd","onDrag","onBorder","dragButton","dragOver","dragLine","dragTd","mousedown","cursorpath","tableDragable","cellvalign","adaptbytext","adaptbywindow","adaptbycustomer","averagedistributecol","averagedistributerow","removeStyleSize","replaceToProperty","getParentTdOrTh","mouseCoords","pageX","pageY","clientLeft","clientTop","mouseMoveEvent","isEditorDisabled","pos","clearTableDragTimer","tableBorderDrag","toggleDraggableState","preTd","nextTd","getPermissionX","mousePosY","getPermissionY","getRelation","inTableSide","cursor","toggleDragButton","onmouseover","onmouseout","doDblClick","createDragButton","capHeight","draggable","mousePos","hideDragLine","getDragLine","showDragLineAt","elePos","mouseDownEvent","getTargetTd","tableClickHander","tableDbclickHandler","getCellsByMoveBorder","originArr","extractArray","oldWidth","newWidth","changeable","getTabcellSpace","newObj","reconstruct","borderActionHandler","mouseOverEvent","mouseUpEvent","dragTdPos","dragLinePos","changeValue","relatedCell","direction","getTableCellWidth","cellGroup","curCell","correctChangeValue","changeColWidth","backHeight","setCellHeight","changeRowHeight","tar","lineHight","tmpHeight","isContainMergeCell","temp","borderCells","tabRow","currIndex","tabCell","offsetVal","getTableCellOffset","tabcellSpace","trow","tabcell","mirror","paddingSpace","tmpTabWidth","contenteditable","onresizestart","ondragstart","line","tablePos","cellPos","switchBorderColor","tableArr","cellWidth","cellHeight","tableCopyList","cloneTd","wordBreak","onmousemove","endTdCol","endTdRow","currentRowIndex","ua","notCtrlKey","ratio","backWidths","datatat","cmdFun","lastState","lastValue","lastRowIndex","items","group","icon","subMenu","getDialog","getViewportOffsetByEvent","contextItems","subItem","query","getLabel","Menu","showAt","clip","shortcutMenu","customEvt","screenX","screenY","ShortCutMenu","isHidden","basestyles","Bold","Italic","Underline","elementPathEnabled","addList","imgT","addFormat","_blockElm","findTextInString","searchStr","casesensitive","findNTextInBlockElm","currentNode","currentNodeLength","searchReplace","startBlockNode","rngText","replaceStr","replaceText","methodName","findTextBlockElm","rngStart","rngEnd","tmpObj","catchRemoteImageEnable","catcherLocalDomain","catcherActionUrl","catcherUrlPrefix","catcherFieldName","remoteImages","imgs","host","catchremoteimage","callbacks","oldSrc","newSrc","snapplugin","getLocation","pathname","hash","local","onSuccess","rs","snapscreenUrlPrefix","snapscreenImgAlign","saveSnapshot","_dialogs","front","createInsertStr","toEmbed","cssfloat","logo","tnode","musicObj","sendAndInsertFile","fieldName","urlPrefix","maxSize","allowFiles","actionUrl","loadingHtml","errorHandler","successHandler","filetype","loadingId","loader","fileext","fd","er","FileReader","hasImg","clipboardData","getPasteImage","dataTransfer","files","getDropImage","getAsFile","lastSaveTime","MIN_TIME","saveKey","saveData","_saveFlag","saveInterval","contentchange","clearlocaldata","getlocaldata","chartserror","flagText","validData","tableDataFormat","firstRows","cellCount","getSection","nextSection","previousSection","parentSection","getNodeFromAddress","bindMultiEvents","afterexeccommand","keyup","getsections","levels","levelFn","getSectionLevel","Directory","previous","tmpSection","movesection","sourceSection","targetSection","isAfter","targetAddress","addressTarget","isAfterStartAddress","isBeforeEndAddress","isContainsAddress","deletesection","selectsection","scrolltosection","containerBtn","isLoaded","initUploadBtn","w","btnIframe","btnStyle","wrapper","btnIframeDoc","btnIframeBody","timestrap","contentDocument","contentWindow","imageFieldName","stateTimer","imageActionUrl","filename","showErrorLoader","imageUrlPrefix","simpleuploadbtnready","serverParam","serverparam","insertfile","filelist","iconDir","rar","zip","gz","bz2","docx","pdf","mp3","xls","chm","ppt","pptx","avi","rmvb","wmv","flv","rm","exe","psd","jpg","png","jpeg","gif","ico","bmp","xssFilter","tagList","uidCount","hook","dg","_callbacks","createElementByHtml","getViewportElement","bcr","getViewportRect","viewportEl","innerWidth","innerHeight","fixedLayer","getFixedLayer","getEventOffset","frameEl","setGlobal","magic","unsetGlobal","copyAttributes","tgt","attrNode","elA","elB","compareDocumentPosition","startDrag","startX","startY","handleMouseMove","ondragmove","cancelBubble","handleMouseUp","ondragstop","releaseCaptrue","releaseCapture","setCapture","layer","updateFixedOffset","makeUnselectable","WebkitUserSelect","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","_doAutoRender","mesureSize","fitSize","sized","__size","popBodyEl","showAnchor","hoz","showAnchorRect","adj","visibility","_show","sideLeft","sideUp","popSize","popEl","notNofity","ColorPicker","noColorText","COLORS","genColorPicker","_onTableClick","_onTableOver","_onTableOut","_onPickNoColor","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","setChecked","checked","Button","btnName","cssRules","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","AutoTypeSetButton","initAutoTypeSetButton","getPara","ipt","editorId","ipts","attrValue","iptchild","iptChilds","selects","popupUI","radios","defalutSelect","symbolConver","checkboxs","CellAlignPicker","initSelected","initCellAlignPicker","middle","selected","selectedIndex","alignType","tempClassName","tempIndex","tmpl","PastePicker","initPastePicker","_isTransfer","cur","screenHt","subPop","Toolbar","initToolbar","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","modalMask","dragMask","activeDialog","Dialog","autoReset","onok","oncancel","onclose","holdScroll","initDialog","closeButton","initResizeEvent","__resizeTimer","dialogWrapNode","contentNode","wrapRect","contentRect","safeSetOffset","showAtCenter","_originalContext","overflowX","titleHeight","getContentHtml","contentHtml","iframeUrl","footHtml","_hide","_onTitlebarMouseDown","wrapNode","_onCloseButtonClick","MenuButton","initMenuButton","_value","MultiMenuPop","initMultiMenu","iframe_rendered","onshow","timeID","UI","allMenus","isSubMenuShow","initShortCutMenu","hideAllMenu","SPACE","getSubMenuMark","eventType","wt","ht","distanceX","distanceY","setOpacity","relatedTgt","opacity","layerEle","hasContextmenu","fixedlayer","setPos","setPosByCxtMenu","Breakline","initMessage","keepshow","setType","closer","getType","editorui","_Dialog","scrollX","iframeUrlMap","btnCmds","causeByUi","uiReady","typeset","imagefloat","directionality","cmd2","dialogBtns","noOk","vals","mapUrl","onselect","langLabel","langCs","ck","ri","rowspacings","lists","_onMenuClick","isFullScreen","iconSpan","nodeStack","EditorUI","initEditorUI","_initToolbars","_actualFrameWidth","wordCount","setCount","_scale","enableScale","disableScale","pastePop","isPaste","maximumWords","errMsg","countDom","_onEditButtonClick","linkDialog","_onImgEditButtonClick","_onImgSetFloat","_setIframeAlign","frame","anchorEl","newFrame","_updateIframe","mapDialog","insertframeDialog","_onRemoveButtonClick","dialogs","dialogName","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","clearSelection","fullScreen","timerId","updateFullScreenTime","showToolbarMsg","hideToolbarMsg","zoom","instances","oldRender","renderUI","newDiv","displays","styleWidth","getEditor","registerUI","_messageItems","updateHolderPos","toolbarbox","mid","vue_picture_viewer","imgData","switch","showEle","dispalyViewer","displayThumbnailContainer","rotateDeg","bigImgUrl","bigImgName","imgLength","imgIndex","showTips","tipsText","bigImgConWidth","bigImgConHeight","maskContainer","z-index","imgContainer","transform","bigImg","marginLeft","marginTop","href_","imgname","switchImgUrl","mounted","screenW","screenH","scrollHeight","$nextTick","naturalWidth","naturalHeight","rotateInit","reduce","rotate","handlePrev","tips","handleNext","imgsrc","closeViewer","eleShow","eleHide","mouseover","mouseleave","lib_vue_picture_viewer","components_lib_vue_picture_viewer","pictureviewer","install"],"mappings":"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","file":"static/js/app.98b7db448fcb4edc8f05.js","sourcesContent":["// style-loader: Adds some css to the DOM by adding a \\r\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"sourceMap\":true}!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0e2dcdc2\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/lib/vue-picture-viewer.vue\n// module id = 3Kil\n// module chunks = 105","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-set-b.png\n// module id = 4SqY\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0Y0MUNBMzhERTZEMTFFOEIyNkQ5ODVGMDVCNDhCRjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0Y0MUNBMzlERTZEMTFFOEIyNkQ5ODVGMDVCNDhCRjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDRjQxQ0EzNkRFNkQxMUU4QjI2RDk4NUYwNUI0OEJGOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDRjQxQ0EzN0RFNkQxMUU4QjI2RDk4NUYwNUI0OEJGOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrWenQ8AAAF/SURBVHjapNNLKMRRFMfxO2OIsmCtxN5W2U1iYiFJIVnIo+QVKVGUUgYbSoMsPGrKa+mRQtIsbBXy2KIsFCmPGGZ8Tx2l0f8//8mpTzP3zn9+c+5jXO1jEbcxZgXVJn6FkYV7HdciN9Dn8svAgxkNktdnJFkEufCOFx13YkredIxHCwn0uejsjvEt8o3zko6W0YKgNhGUJT7iM4GgBg2SKqajN14vUSnLjNgsLbZKsYAhrOGYJUozGfC6E+ioCDuYxzCusKVBJXQYchrmwz5W0axzcmBVKCNo9+c041Ue5OFN3XipfrSikaBtljohW+VxEHSKA5TrXDdG0YZFnauTQ7QLy8EJQrpfRgMm0YPZX89e48tuz871onp1XI9pDGjgn7LqrABpuEEvzrCk3fitft0qrAtHaMKFzo1g0G6DrcIqkIpDPGEuXpBd2IZ+tod1PDi5jB79K4Vj5mtMYiXfT5awTKSb/1U2XiUsoCcmt/hDr4PTinL7U7SZwLcAAwC7al054RvWfQAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon_edit.png\n// module id = 5KQ+\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTVDRUZDNTFERTZEMTFFOEEzRDA5NzAwM0Q1Q0NDMUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTVDRUZDNTJERTZEMTFFOEEzRDA5NzAwM0Q1Q0NDMUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NUNFRkM0RkRFNkQxMUU4QTNEMDk3MDAzRDVDQ0MxQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5NUNFRkM1MERFNkQxMUU4QTNEMDk3MDAzRDVDQ0MxQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp5y1RMAAAINSURBVHjapJS7SxxRFMZndBcVfKOLgqRYCSomiCAqKljZ+D8osV0xRcpA+tikkV1MJYEEBNHKQlASUXyAhbLmsaIkWCwkJtFkfMTn6nfCd+EwzDqDHvhxZu6de+Y8rx2Px61bJB8Mg8cgzLUr8BE8B04sFvM8GLJulyh4Cv6AA64Vgm4wCT5kO+hnOI+6AXxXa6eMJqvk+BjOUFeptWqVkjsbtqkdtea49u6UClvl2lHPvk75Gd6nnvXY+3Efw7ugB0TAS3bEENgD6/cxLDJH3QcqwLsAZ3yLp+WaBBJbTZ4UZRDUuwwYg52cvnkW1XYVeQeMYhK/uFMxAJ6Bzx4HMxyIXFDrEans94IS8MRtuITT1ZgluhnmuEUvmrsikUgkocq9cvw7YE8Hac//Hj/gmIqnxaADnIAkQ6wDZaAGFIF2XkopevqI6xJNFO9t0L/E8Cf2p5El6i4+p1xerVAX8A7ZdN0jq+AsRKMvwDQ3pUBr4CE/EulnBKZ7pkAlo7B4jZqRbwWvTfHEwIb68zFby9TgPUjzeVs5kMMCLpiDSIWk8cIcLPco1KXq54jaq1ItlqExnUqJ5NoYTnv0ZVh1wje191V5HKLHR677xTapmABbajCkyof0WmSZF49IqUrXCT2W/XNGKHkPi+FXbLEINySKcbDI9zHQxHay+LM34Cf4B96CZuXxXzByI8AA2xx8Nhu9GbcAAAAASUVORK5CYII=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-mc-b.png\n// module id = 5M7D\n// module chunks = 105","import fetch from './fetch'\r\n\r\n\r\nexport const GetMenuUseCaseInfo =(data)=>{\r\n\treturn fetch('/api/UseCase/GetMenuUseCaseInfo',data,'POST')\r\n}\r\n//登录接口\r\nexport const login = (data) => {\r\n\treturn fetch('/api/User/UserLogin', data, 'POST')\r\n}\r\n//获取菜单权限数据\r\nexport const getMenuInfo = (data) => {\r\n\treturn fetch('/api/Menu/GetMenuInfo', data, 'GET')\r\n}\r\n//获取菜单权限数据\r\nexport const GetMenuList = (data) => {\r\n\treturn fetch('/api/Menu/GetNewMenuInfo', data, 'POST')\r\n}\r\n\r\n//营业执照列表\r\nexport const GetBusinessLicenseList = (data) => {\r\n\treturn fetch('/api/BusinessLicense/GetBusinessLicenseList', data, 'POST')\r\n}\r\nexport const DeleteBusinessLicense = (data) => {\r\n\treturn fetch('/api/BusinessLicense/DeleteBusinessLicense', data, 'POST')\r\n}\r\nexport const EditBusinessLicense = (data) => {\r\n\treturn fetch('/api/BusinessLicense/EditBusinessLicense', data, 'POST')\r\n}\r\nexport const AddBusinessLicense = (data) => {\r\n\treturn fetch('/api/BusinessLicense/AddBusinessLicense', data, 'POST')\r\n}\r\n//资质证书\r\nexport const GetQualificationsCertificateList = (data) => {\r\n\treturn fetch('/api/QualificationsCertificate/GetQualificationsCertificateList', data, 'POST')\r\n}\r\nexport const DeleteQualificationsCertificate = (data) => {\r\n\treturn fetch('/api/QualificationsCertificate/DeleteQualificationsCertificate', data, 'POST')\r\n}\r\nexport const EditQualificationsCertificate = (data) => {\r\n\treturn fetch('/api/QualificationsCertificate/EditQualificationsCertificate', data, 'POST')\r\n}\r\nexport const AddQualificationsCertificate = (data) => {\r\n\treturn fetch('/api/QualificationsCertificate/AddQualificationsCertificate', data, 'POST')\r\n}\r\n//安全许可证\r\nexport const GetSafetyProductionLicenseList = (data) => {\r\n\treturn fetch('/api/SafetyProductionLicense/GetSafetyProductionLicenseList', data, 'POST')\r\n}\r\nexport const DeleteSafetyProductionLicense = (data) => {\r\n\treturn fetch('/api/SafetyProductionLicense/DeleteSafetyProductionLicense', data, 'POST')\r\n}\r\nexport const EditSafetyProductionLicense = (data) => {\r\n\treturn fetch('/api/SafetyProductionLicense/EditSafetyProductionLicense', data, 'POST')\r\n}\r\nexport const AddSafetyProductionLicense = (data) => {\r\n\treturn fetch('/api/SafetyProductionLicense/AddSafetyProductionLicense', data, 'POST')\r\n}\r\n//银行账户\r\nexport const GetBankAccountList = (data) => {\r\n\treturn fetch('/api/BankAccount/GetBankAccountList', data, 'POST')\r\n}\r\nexport const DeleteBankAccount = (data) => {\r\n\treturn fetch('/api/BankAccount/DeleteBankAccount', data, 'POST')\r\n}\r\nexport const EditBankAccount = (data) => {\r\n\treturn fetch('/api/BankAccount/EditBankAccount', data, 'POST')\r\n}\r\nexport const AddBankAccount = (data) => {\r\n\treturn fetch('/api/BankAccount/AddBankAccount', data, 'POST')\r\n}\r\n//自定义企业证书\r\nexport const GetComCustomizeCertificateList = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/GetComCustomizeCertificateList', data, 'POST')\r\n}\r\nexport const DeleteComCustomizeCertificate = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/DeleteComCustomizeCertificate', data, 'POST')\r\n}\r\nexport const EditComCustomizeCertificate = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/EditComCustomizeCertificate', data, 'POST')\r\n}\r\nexport const AddComCustomizeCertificate = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/AddComCustomizeCertificate', data, 'POST')\r\n}\r\n\r\n//注册类人员\r\nexport const GetRegisterClassList = (data) => {\r\n\treturn fetch('/api/RegisterClass/GetNewRegisterClassList', data, 'POST')\r\n}\r\nexport const DeleteRegisterClass = (data) => {\r\n\treturn fetch('/api/RegisterClass/DeleteRegisterClass', data, 'POST')\r\n}\r\nexport const EditRegisterClass = (data) => {\r\n\treturn fetch('/api/RegisterClass/EditRegisterClass', data, 'POST')\r\n}\r\nexport const AddRegisterClass = (data) => {\r\n\treturn fetch('/api/RegisterClass/AddRegisterClass', data, 'POST')\r\n}\r\n\r\n//技术职称人员\r\nexport const GetTechnicalTitleList = (data) => {\r\n\treturn fetch('/api/TechnicalTitle/NewGetTechnicalTitleList', data, 'POST')\r\n}\r\nexport const DeleteTechnicalTitle = (data) => {\r\n\treturn fetch('/api/TechnicalTitle/DeleteTechnicalTitle', data, 'POST')\r\n}\r\nexport const EditTechnicalTitle = (data) => {\r\n\treturn fetch('/api/TechnicalTitle/EditTechnicalTitle', data, 'POST')\r\n}\r\nexport const AddTechnicalTitle = (data) => {\r\n\treturn fetch('/api/TechnicalTitle/AddTechnicalTitle', data, 'POST')\r\n}\r\n//现场管理人员\r\nexport const GetSiteManageList = (data) => {\r\n\treturn fetch('/api/SiteManage/NewGetSiteManageList', data, 'POST')\r\n}\r\nexport const DeleteSiteManage = (data) => {\r\n\treturn fetch('/api/SiteManage/DeleteSiteManage', data, 'POST')\r\n}\r\nexport const EditSiteManage = (data) => {\r\n\treturn fetch('/api/SiteManage/EditSiteManage', data, 'POST')\r\n}\r\nexport const AddSiteManage = (data) => {\r\n\treturn fetch('/api/SiteManage/AddSiteManage', data, 'POST')\r\n}\r\n//技术工人\r\nexport const GetTechnologyWorkerList = (data) => {\r\n\treturn fetch('/api/TechnologyWorker/GetNewTechnologyWorkerList', data, 'POST')\r\n}\r\nexport const DeleteTechnologyWorker = (data) => {\r\n\treturn fetch('/api/TechnologyWorker/DeleteTechnologyWorker', data, 'POST')\r\n}\r\nexport const EditTechnologyWorker = (data) => {\r\n\treturn fetch('/api/TechnologyWorker/EditTechnologyWorker', data, 'POST')\r\n}\r\nexport const AddTechnologyWorker = (data) => {\r\n\treturn fetch('/api/TechnologyWorker/AddTechnologyWorker', data, 'POST')\r\n}\r\n//安全三类人员\r\nexport const GetSafetyThreeTypeList = (data) => {\r\n\treturn fetch('/api/SafetyThreeType/GetNewSafetyThreeTypeList', data, 'POST')\r\n}\r\nexport const DeleteSafetyThreeType = (data) => {\r\n\treturn fetch('/api/SafetyThreeType/DeleteSafetyThreeType', data, 'POST')\r\n}\r\nexport const EditSafetyThreeType = (data) => {\r\n\treturn fetch('/api/SafetyThreeType/EditSafetyThreeType', data, 'POST')\r\n}\r\nexport const AddSafetyThreeType = (data) => {\r\n\treturn fetch('/api/SafetyThreeType/AddSafetyThreeType', data, 'POST')\r\n}\r\n//特种作业人员\r\nexport const GetSpecialtyOperationList = (data) => {\r\n\treturn fetch('/api/SpecialtyOperation/GetNewSpecialtyOperationList', data, 'POST')\r\n}\r\nexport const DeleteSpecialtyOperation = (data) => {\r\n\treturn fetch('/api/SpecialtyOperation/DeleteSpecialtyOperation', data, 'POST')\r\n}\r\nexport const EditSpecialtyOperation = (data) => {\r\n\treturn fetch('/api/SpecialtyOperation/EditSpecialtyOperation', data, 'POST')\r\n}\r\nexport const AddSpecialtyOperation = (data) => {\r\n\treturn fetch('/api/SpecialtyOperation/AddSpecialtyOperation', data, 'POST')\r\n}\r\n//自定义人员证书\r\nexport const GetPersonCustomizeCertificateList = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/GetNewPersonCustomizeCertificateList', data, 'POST')\r\n}\r\nexport const DeletePersonCustomizeCertificate = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/DeletePersonCustomizeCertificate', data, 'POST')\r\n}\r\nexport const EditPersonCustomizeCertificate = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/EditPersonCustomizeCertificate', data, 'POST')\r\n}\r\nexport const AddPersonCustomizeCertificate = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/AddPersonCustomizeCertificate', data, 'POST')\r\n}\r\n\r\n\r\n// 数字证书\r\nexport const EditDigitalCertificateInfo = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/EditDigitalCertificateInfo?type=' + 1337, data, 'POST')\r\n}\r\nexport const AddDigitalCertificateInfo = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/AddDigitalCertificateInfo?type=' + 1337, data, 'POST')\r\n}\r\n//企业锁\r\nexport const companyLockList = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/GetDigitalList?type=' + 1337, data, 'POST')\r\n}\r\n//网银锁\r\nexport const onlineLockList = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/GetDigitalList?type=' + 1338, data, 'POST')\r\n}\r\n//个人锁\r\nexport const personLockList = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/GetDigitalList?type=' + 1336, data, 'POST')\r\n}\r\nexport const DelectDigitalCertificate = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/DelectDigitalCertificate', data, 'POST')\r\n}\r\n\r\n//在职员工\r\nexport const GetPersonnelBasicList = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetPersonnelBasicList', data, 'POST')\r\n}\r\nexport const DeletePersonnelBasic = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/DeletePersonnelBasic', data, 'POST')\r\n}\r\n\r\n//离职员工\r\nexport const GetDeparturePersonnelBasicList = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetDeparturePersonnelBasicList', data, 'POST')\r\n}\r\n\r\n// 投标项目列表\r\nexport const GetProjectTenderList = (data) => {\r\n\treturn fetch('/api/ProjectTender/GetProjectTenderList', data, 'POST')\r\n}\r\n\r\n// 中标项目列表\r\nexport const GetProjectBidTenderList = (data) => {\r\n\treturn fetch('/api/ProjectTender/GetProjectBidTenderList', data, 'POST')\r\n}\r\n\r\nexport const DeleteProjectTender = (data) => {\r\n\treturn fetch('/api/ProjectTender/DeleteProjectTender', data, 'POST')\r\n}\r\n\r\n// 在建项目\r\nexport const GetProjectListing = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/GetProjectList?type=1264', data, 'POST')\r\n}\r\n\r\n// 竣工项目\r\nexport const GetProjectListed = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/GetProjectList?type=1265', data, 'POST')\r\n}\r\nexport const DelectProjectInfo = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/DelectProjectInfo', data, 'POST')\r\n}\r\n\r\n// 收款合同\r\nexport const GetProjectContractListget = (data) => {\r\n\treturn fetch('/api/ProjectContract/GetProjectContractList', data, 'POST')\r\n}\r\n// 付款合同\r\nexport const GetProjectContractListpay = (data) => {\r\n\treturn fetch('/api/ProjectContract/GetProjectContractList', data, 'POST')\r\n}\r\nexport const DeleteProjectContract = (data) => {\r\n\treturn fetch('/api/ProjectContract/DeleteProjectContract', data, 'POST')\r\n}\r\n\r\n//员工信息list树形结构,部门\r\nexport const NewGetDepartmentTree = (data) => {\r\n\treturn fetch('/api/Department/NewGetDepartmentTree', data, 'POST')\r\n}\r\n//获取子部门的数据\r\nexport const GetDepartmentSubInfo = (data) => {\r\n\treturn fetch('/api/Department/GetDepartmentSubInfo', data, 'POST')\r\n}\r\n\r\n//根据下拉框进行类型切换\r\nexport const GetCertificateClassifyList = (data) => {\r\n\treturn fetch('/api/CertificateClassify/GetCertificateClassifyList', data, 'POST')\r\n}\r\n//根据menu_id请求权限和分公司\r\nexport const GetCurrentUserAuthority = (data) => {\r\n\treturn fetch('/api/UseCase/GetCurrentUserAuthority', data, 'POST')\r\n}\r\n//根据基础数据请求下拉数据\r\nexport const NewGetByKey = (data) => {\r\n\treturn fetch('/api/BaseData/NewGetByKey', data, 'POST')\r\n}\r\n//根据基础id数据请求下拉数据\r\nexport const GetById = (data) => {\r\n\treturn fetch('/api/BaseData/GetById', data, 'GET')\r\n}\r\n\r\n//员工通讯录列表\r\nexport const GetPersonnelPhone = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetPersonnelPhone', data, 'POST')\r\n}\r\n//员工通讯录列表\r\nexport const GetPersonnelInfo = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetPersonnelInfo', data, 'POST')\r\n}\r\n//修改员工通讯录\r\nexport const EditPersonnelPhone = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/EditPersonnelPhone', data, 'POST')\r\n}\r\n\r\n//证书文件柜获取\r\nexport const GetFileFolderDetail = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetFileFolderDetail', data, 'POST')\r\n}\r\n\r\n//证书文件柜文件夹获取\r\nexport const GetCabinetFileDetail = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetCabinetFileDetail', data, 'POST')\r\n}\r\n\r\n//获取文件夹下详细的证书信息\r\nexport const GetCertificateDetialInfo = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetCertificateDetialWhere', data, 'POST')\r\n}\r\n//获取文件夹下证书信息\r\nexport const GetCertificateFileDetialInfo = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetCertificateFileDetialInfo', data, 'POST')\r\n}\r\n//获取文件夹下证书信息2\r\nexport const GetCertificateDetialAuthority = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetCertificateDetialAuthority', data, 'POST')\r\n}\r\n//添加证书文件柜信息\r\nexport const AddCertificateFileCabinet = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/AddCertificateFileCabinet', data, 'POST')\r\n}\r\n//删除证书文件柜信息\r\nexport const DeleteCertificateFileCabinet = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/DeleteCertificateFileCabinet', data, 'POST')\r\n}\r\n//编辑证书文件柜信息,包含文件夹\r\nexport const EditCertificateFileCabinet = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/EditCertificateFileCabinet', data, 'POST')\r\n}\r\n\r\n//文件柜下文件夹统计信息\r\nexport const GetFolderFileStatisticsInfo = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetFolderFileStatisticsInfo', data, 'POST')\r\n}\r\n//文件柜下文件移动操作\r\nexport const MoveCertificatePosition = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/MoveCertificatePosition', data, 'POST')\r\n}\r\n\r\n//获取考试记录列表\r\nexport const GetExamBasicList = (data) => {\r\n\treturn fetch('/api/ExamBasic/GetExamBasicList', data, 'POST')\r\n}\r\n//获取考试记录详情数据\r\nexport const GetExamBasicDetail = (data) => {\r\n\treturn fetch('/api/ExamBasic/GetExamBasicDetail', data, 'POST')\r\n}\r\n//新增考试记录\r\nexport const AddExamBasicInfo = (data) => {\r\n\treturn fetch('/api/ExamBasic/AddExamBasicInfo', data, 'POST')\r\n}\r\n//修改考试记录数据\r\nexport const EditExamBasic = (data) => {\r\n\treturn fetch('/api/ExamBasic/EditExamBasic', data, 'POST')\r\n}\r\n//删除考试管理信息\r\nexport const DelectExamBasic = (data) => {\r\n\treturn fetch('/api/ExamBasic/DelectExamBasic', data, 'POST')\r\n}\r\n\r\n//得到选择员工基本信息列表数据\r\nexport const GetSelectPersonnelBasicList = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetSelectPersonnelBasicList', data, 'POST')\r\n} \r\n\r\n\r\n\r\n/**\r\n * --------- 李爽 ----------\r\n */\r\n//删除文件夹证书\r\nexport const DeleteCertificateSite = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/DeleteCertificateSite', data, 'POST')\r\n}\r\n//员工详情\r\nexport const GetPersonCertificates = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetPersonCertificates', data, 'POST')\r\n}\r\nexport const GetPersonnelBasicDetail = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetPersonnelBasicDetail', data, 'POST')\r\n}\r\nexport const GetUserCertificateRecordInfo = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetUserCertificateRecordInfo', data, 'POST')\r\n}\r\n//获取员工借证记录分页\r\nexport const UserCertificateRecordPage = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/UserCertificateRecordPage', data, 'POST')\r\n}\r\n\r\n//获取员工证书记录分页\r\nexport const UserPersonCertificatePage = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/UserPersonCertificatePage', data, 'POST')\r\n}\r\n\r\n\r\n//企业证书信息 \r\nexport const GetBusinessLicenseDetail = (data) => {\r\n\treturn fetch('/api/BusinessLicense/GetBusinessLicenseDetail', data, 'POST')\r\n}\r\n//资质证书\r\nexport const GetQualificationsCertificateInfo = (data) => {\r\n\treturn fetch('/api/QualificationsCertificate/GetQualificationsCertificateInfo', data, 'POST')\r\n}\r\n//安全生产许可证\r\nexport const GetSafetyLicenseInfo = (data) => {\r\n\treturn fetch('/api/SafetyProductionLicense/GetSafetyLicenseInfo', data, 'POST')\r\n}\r\n//银行账户\r\nexport const GetBankAccountInfo = (data) => {\r\n\treturn fetch('/api/BankAccount/GetBankAccountInfo', data, 'POST')\r\n}\r\n//自定义企业证书\r\nexport const GetComCustomizeCertificateDetail = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/GetComCustomizeCertificateDetail', data, 'POST')\r\n}\r\n//企业锁 个人锁 网银锁\r\nexport const GetDigitalCertificateInfo = (data) => {\r\n\treturn fetch('/api/DigitalCertificate/GetDigitalCertificateInfo', data, 'POST')\r\n}\r\n//注册类人员证书\r\nexport const GetRegisterClassDetail = (data) => {\r\n\treturn fetch('/api/RegisterClass/GetRegisterClassDetail', data, 'POST')\r\n}\r\n//技术职称人员\r\nexport const GetTechnicalTitleDetail = (data) => {\r\n\treturn fetch('/api/TechnicalTitle/GetTechnicalTitleDetail', data, 'POST')\r\n}\r\n//现场管理人员\r\nexport const GetSiteManageDetail = (data) => {\r\n\treturn fetch('/api/SiteManage/GetSiteManageDetail', data, 'POST')\r\n}\r\n//技术人员\r\nexport const GetTechnologyWorkerDetail = (data) => {\r\n\treturn fetch('/api/TechnologyWorker/GetTechnologyWorkerDetail', data, 'POST')\r\n}\r\n//安全三类人员\r\nexport const GetSafetyThreeTypeDetail = (data) => {\r\n\treturn fetch('/api/SafetyThreeType/GetSafetyThreeTypeDetail', data, 'POST')\r\n}\r\n//特种作业人员\r\nexport const GetSpecialtyOperationDetail = (data) => {\r\n\treturn fetch('/api/SpecialtyOperation/GetSpecialtyOperationDetail', data, 'POST')\r\n}\r\n//自定义人员\r\nexport const GetPersonCustomizeCertificateDetail = (data) => {\r\n\treturn fetch('/api/CustomizeCertificate/GetPersonCustomizeCertificateDetail', data, 'POST')\r\n}\r\n//投标项目信息 中标项目信息\r\n// export const GetProjectTenderDetail = (data) => {\r\n// \treturn fetch('/api/ProjectTender/GetProjectTenderDetail', data, 'POST')\r\n// }\r\n//在建项目 竣工项目\r\nexport const GetProjectInfo = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/GetProjectInfo', data, 'POST')\r\n}\r\n//收款合同 付款合同\r\nexport const GetProjectContractDetail = (data) => {\r\n\treturn fetch('/api/ProjectContract/GetProjectContractDetail', data, 'POST')\r\n}\r\n//地址\r\nexport const GetAddress = (data) => {\r\n\treturn fetch('/api/Address/GetAddress', data, 'GET')\r\n}\r\n//添加员工信息\r\nexport const AddEmployeeBasic = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/AddEmployeeBasic', data, 'POST')\r\n}\r\n//编辑员工信息\r\nexport const EditPersonnelBasic = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/EditPersonnelBasic', data, 'POST')\r\n}\r\n//添加劳动合同\r\nexport const AddEmployeeContract = (data) => {\r\n\treturn fetch('/api/EmployeeContract/AddEmployeeContract', data, 'POST')\r\n}\r\n//删除劳动合同\r\nexport const DeleteEmployeeContract = (data) => {\r\n\treturn fetch('/api/EmployeeContract/DeleteEmployeeContract', data, 'POST')\r\n}\r\n//添加社保信息\r\nexport const AddEmployeeSocialInsurance = (data) => {\r\n\treturn fetch('/api/EmployeeSocialInsurance/AddEmployeeSocialInsurance', data, 'POST')\r\n}\r\n//删除社保信息\r\nexport const DeleteEmployeeSocialInsurance = (data) => {\r\n\treturn fetch('/api/EmployeeSocialInsurance/DeleteEmployeeSocialInsurance', data, 'POST')\r\n}\r\n//添加公积金\r\nexport const AddEmployeeProvidentFund = (data) => {\r\n\treturn fetch('/api/EmployeeProvidentFund/AddEmployeeProvidentFund', data, 'POST')\r\n}\r\n//删除公积金\r\nexport const DeleteEmployeeProvidentFund = (data) => {\r\n\treturn fetch('/api/EmployeeProvidentFund/DeleteEmployeeProvidentFund', data, 'POST')\r\n}\r\n//修改劳动合同\r\nexport const EditEmployeeContract = (data) => {\r\n\treturn fetch('/api/EmployeeContract/EditEmployeeContract', data, 'POST')\r\n}\r\n\r\n//修改社保信息\r\nexport const EditEmployeeSocialInsurance = (data) => {\r\n\treturn fetch('/api/EmployeeSocialInsurance/EditEmployeeSocialInsurance', data, 'POST')\r\n}\r\n//修改公积金\r\nexport const EditEmployeeProvidentFund = (data) => {\r\n\treturn fetch('/api/EmployeeProvidentFund/EditEmployeeProvidentFund', data, 'POST')\r\n}\r\n//文件柜地址获取 \r\nexport const GetCertificateFileCabinetList = (data) => {\r\n\treturn fetch('/api/CertificateFileCabinet/GetCertificateFileCabinetListNew', data, 'GET')\r\n}\r\n\r\n//预警列表\r\nexport const GetSystemWareConfigurationList = (data) => {\r\n\treturn fetch('/api/SystemWareConfiguration/GetSystemWareConfigurationList', data, 'POST')\r\n}\r\n//员工身份证验证\r\nexport const VerificationRepeatData = (data) => {\r\n\treturn fetch('/api/PublicVerification/VerificationRepeatData', data, 'POST')\r\n}\r\n\r\n\r\n\r\n\r\n\r\n//预警启用关闭\r\nexport const EditSystemWareConfiguration = (data) => {\r\n\treturn fetch('/api/SystemWareConfiguration/EditSystemWareConfiguration', data, 'POST')\r\n}\r\n//预警获取人员\r\nexport const GetSelectRole = (data) => {\r\n\treturn fetch('/api/SystemWareConfiguration/GetSelectRole', data, 'POST')\r\n}\r\n//敏感词\r\nexport const GetSensitiveWordList = (data) => {\r\n\treturn fetch('/api/SensitiveWord/GetSensitiveWordList', data, 'POST')\r\n}\r\n//敏感词开启\r\nexport const OpenOrCloseSensitiveWord = (data) => {\r\n\treturn fetch('/api/SensitiveWord/OpenOrCloseSensitiveWord', data, 'POST')\r\n}\r\n//基础设置\r\nexport const GetClassify = (data) => {\r\n\treturn fetch('/api/BaseData/GetClassify', data, 'POST')\r\n}\r\n//项目经理\r\nexport const GetProjectManagerList = (data) => {\r\n\treturn fetch('/api/ProjectUserMakeUp/GetProjectManagerList', data, 'POST')\r\n}\r\n//班组成员\r\nexport const GetProjectUserList = (data) => {\r\n\treturn fetch('/api/ProjectUserMakeUp/GetProjectUserList', data, 'POST')\r\n}\r\n// 合同项目名称\r\nexport const GetSelectProjectInfo = (data) => {\r\n\treturn fetch('/api/ProjectContract/GetSelectProjectInfo', data, 'POST')\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/*--------- 粟雪梅 ----------*/\r\n// 获取投标信息\r\nexport const GetProjectTenderDetail = (data) => {\r\n\treturn fetch('/api/ProjectTender/GetProjectTenderDetail', data, 'POST')\r\n}\r\n// 编辑投标\r\nexport const EditProjectTender = (data) => {\r\n\treturn fetch('/api/ProjectTender/EditProjectTender', data, 'POST')\r\n}\r\n\r\n// 保证金往来\r\nexport const AddProjectTenderMargin = (data) => {\r\n\treturn fetch('/api/ProjectTenderMargin/AddProjectTenderMargin', data, 'POST')\r\n}\r\nexport const DeleteProjectTenderMargin = (data) => {\r\n\treturn fetch('/api/ProjectTenderMargin/DeleteProjectTenderMargin', data, 'POST')\r\n}\r\n\r\n// 项目执行记录\r\nexport const AddProjectTenderCarry = (data) => {\r\n\treturn fetch('/api/ProjectTenderCarry/AddProjectTenderCarry', data, 'POST')\r\n}\r\nexport const DeleteProjectTenderCarry = (data) => {\r\n\treturn fetch('/api/ProjectTenderCarry/DeleteProjectTenderCarry', data, 'POST')\r\n}\r\n\r\n\r\n// 新增投标\r\nexport const AddProjectTender = (data) => {\r\n\treturn fetch('/api/ProjectTender/AddProjectTender', data, 'POST')\r\n}\r\n\r\n// 新增中标\r\nexport const AddProjectTenderAuditRecord = (data) => {\r\n\treturn fetch('/api/ProjectTender/AddProjectTenderAuditRecord', data, 'POST')\r\n}\r\n\r\n// 新增项目\r\nexport const AddProjectMainInfo = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/AddProjectMainInfo', data, 'POST')\r\n}\r\nexport const EditProjectMainInfo = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/EditProjectMainInfo', data, 'POST')\r\n}\r\n// 班组成员\r\nexport const AddProjectUser = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/AddProjectUser', data, 'POST')\r\n}\r\nexport const DelectProjectUserMake = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/DelectProjectUserMake', data, 'POST')\r\n}\r\n// 单位信息\r\nexport const AddProjectCompany = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/AddProjectCompany', data, 'POST')\r\n}\r\nexport const DelectProjectCompany = (data) => {\r\n\treturn fetch('/api/ProjectMainInfo/DelectProjectCompany', data, 'POST')\r\n}\r\n\r\n// 新增合同\r\nexport const AddProjectContract = (data) => {\r\n\treturn fetch('/api/ProjectContract/AddProjectContract', data, 'POST')\r\n}\r\nexport const EditProjectContract = (data) => {\r\n\treturn fetch('/api/ProjectContract/EditProjectContract', data, 'POST')\r\n}\r\n\r\n\r\n\r\n/*--------- 黄英 ----------*/\r\n//证书借还\r\nexport const GetCertificateRecordList = (data) => {\r\n\treturn fetch('/api/CertificateBorrowOrRecord/GetCertificateRecordList', data, 'POST')\r\n}\r\n// 证书借出\r\nexport const GetCertificateBorrowInfo = (data) => {\r\n\treturn fetch('/api/CertificateBorrowOrRecord/GetCertificateBorrowInfo', data, 'POST')\r\n}\r\n//借证\r\nexport const GetCurrentUserCertificateRecordList = (data) => {\r\n\treturn fetch('/api/CertificateBorrowOrRecord/GetCurrentUserCertificateRecordList', data, 'POST')\r\n}\r\n//归还\r\nexport const EditCertificate = (data) => {\r\n\treturn fetch('/api/CertificateBorrowOrRecord/EditCertificate', data, 'POST')\r\n}\r\n//意见反馈\r\nexport const AddFeedback = (data) => {\r\n\treturn fetch('/api/Feedback/AddFeedback', data, 'POST')\r\n}\r\n\r\n/*--------- 曲一鸣 ----------*/\r\n\r\n//员工统计获取\r\nexport const GetAllPersonnelMessage=(data)=>{\r\n\treturn fetch('/api/EmployeeBasic/EmployeeJobStatistics',data,'POST')\r\n}\r\n//员工地址获取\r\nexport const GetEmployeeAddress=(data)=>{\r\n\treturn fetch('/api/EmployeeBasic/GetPersonAddressStatistics',data,'GET')\r\n}\r\n//证书名称请求\r\nexport const GetCertificateName=(data)=>{\r\n\treturn fetch('/api/BaseData/NewGetByKey',data,'POST')\r\n}\r\n//增项证书请求\r\nexport const GetCertificateMajor=(data)=>{\r\n\treturn fetch('/api/BaseData/GetById',data,'GET')\r\n}\r\n//增项人员请求\r\nexport const GetListData=(data)=>{\r\n\treturn fetch('/api/CertificateStatistics/AddItemStatistics',data,'POST')\r\n}\r\n//B证统计\r\nexport const GetBCertificate=(data)=>{\r\n\treturn fetch('/api/CertificateStatistics/BCertificateStatistics',data,'POST')\r\n}\r\n//证书统计表格,所有人员\r\nexport const GetCertificateStatistics=(data)=>{\r\n\treturn fetch('/api/CertificateStatistics/AllCertificateStatistics',data,'POST')\r\n}\r\n//证书统计联动下拉首选项\r\nexport const GetFirstSelect=(data)=>{\r\n\treturn fetch('/api/CertificateClassify/GetCertificateClassifyList',data,'POST')\r\n}\r\n//证书统计联动下拉框数据\r\nexport const GetCertificateSelect=(data)=>{\r\n\treturn fetch('/api/CertificateStatistics/CertificateSelect',data,'POST')\r\n}\r\n\r\n//办事指南的数据\r\nexport const nav_url = (data) => {\r\n\treturn fetch({\r\n\t\turl:'//api.58jzr.com/api/NavUrl/GetNavUrlList'\r\n\t}, data, 'GET')\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/js/urls.js","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-guide.png\n// module id = 60G+\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADhGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI5NjNjNDA2LTQwYzktYWY0MS1iMTFkLTJiYzVjZTFlOTBhMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTFEQjI1OERFNjYxMUU4ODlGOENGRDc0NDQ1NTUxMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTFEQjI1N0RFNjYxMUU4ODlGOENGRDc0NDQ1NTUxMSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowZTU4NmI2MC03ZTQyLWM3NDQtYTkxZS02YWI0MmJkMzczNjgiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmODBkNDk3NC1iNDY2LTQ4NDEtYjg2My01NTVkNDhmZWRmMzAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5JYejXAAABRElEQVR42ozTzStEURjH8XsniTIpkwWzsFbKwo5spmbBwoaNUQobjLLwurAbCyklLzGSLGQl/4GsyEpJkSQbsUJZKFPj+p56Fk9P505Ofeo+557zu6dzzg3zK79BhbaHJAbjBiRMfYhxVfeiX9VDOKkU8I4dNEs9gKw8N+AIX3pClQmYwTNepb5S7z4wgV27ggOso076tjCGW7gNinCHKTXZjV3GqQu4xCSG5eUZ9tGGUPpasYkLqfsw6+qEDK5GEQVk1Ao/caPqTmzjGDVY05tYiyWzJxu4Nn1utU2+U8iagQ9YxYjn+Ht8AfXq+Qdd+JaAvAlI+gLK6rmEBSzK5WoxAWVfQGS+MIcOMW8CoribaNuTHF9s0zfxxfOVUTR65r3pgGl0o90MCmMmB3Jzc7h3ASn5eR5xHvyvuXuQdv/HnwADAEBiPKhyfcW3AAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-warning.png\n// module id = 6JuL\n// module chunks = 105","/**\n * ueditor完整配置项\n * 可以在这里配置整个编辑器的特性\n */\n/**************************提示********************************\n * 所有被注释的配置项均为UEditor默认值。\n * 修改默认配置请首先确保已经完全明确该参数的真实用途。\n * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。\n * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。\n **************************提示********************************/\n\n(function () {\n\n /**\n * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。\n * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用\"相对于网站根目录的相对路径\"进行配置。\n * \"相对于网站根目录的相对路径\"也就是以斜杠开头的形如\"/myProject/ueditor/\"这样的路径。\n * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。\n * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。\n * window.UEDITOR_HOME_URL = \"/xxxx/xxxx/\";\n */\r\n\twindow.UEDITOR_HOME_URL = \"/ueditor\";\n var URL = window.UEDITOR_HOME_URL || getUEBasePath();\n\n /**\n * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。\n */\n window.UEDITOR_CONFIG = {\n\n //为编辑器实例添加一个路径,这个不能被注释\n UEDITOR_HOME_URL: URL\n\n // 服务器统一请求接口路径\n //,serverUrl: \"http://v2.58jzr.com/ueditor/net/controller.ashx\",\r\n\t\t,serverUrl: \"/ueditor/net/controller.ashx\"\n\n //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义\n , toolbars: [[\n 'fullscreen', 'source', '|', 'undo', 'redo', '|',\n 'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',\n 'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',\n 'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',\n 'directionalityltr', 'directionalityrtl', 'indent', '|',\n 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',\n 'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',\n 'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',\n 'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',\n 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',\n 'print', 'preview', 'searchreplace', 'drafts', 'help'\n ]]\n //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准\n //,labelMap:{\n // 'anchor':'', 'undo':''\n //}\n\n //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件:\n //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase()\n //,lang:\"zh-cn\"\n //,langPath:URL +\"lang/\"\n\n //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件:\n //现有如下皮肤:default\n //,theme:'default'\n //,themePath:URL +\"themes/\"\n\n ,zIndex : 0 //编辑器层级的基数,默认是900\n\n //针对getAllHtml方法,会在对应的head标签中增加该编码设置。\n //,charset:\"utf-8\"\n\n //若实例化编辑器的页面手动修改的domain,此处需要设置为true\n //,customDomain:false\n\n //常用配置项目\n //,isShow : true //默认显示编辑器\n\n //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值\n\n //,initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子\n\n //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了\n\n //,focus:false //初始化时,是否让编辑器获得焦点true或false\n\n //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感\n //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等\n\n //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件\n\n //indentValue\n //首行缩进距离,默认是2em\n //,indentValue:'2em'\n\n //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000\n //,initialFrameHeight:320 //初始化编辑器高度,默认320\n\n //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false\n\n //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况)\n\n //启用自动保存\n //,enableAutoSave: true\n //自动保存间隔时间, 单位ms\n //,saveInterval: 500\n\n //,fullscreen : false //是否开启初始化时即全屏,默认关闭\n\n //,imagePopup:true //图片操作的浮层开关,默认打开\n\n //,autoSyncData:true //自动同步编辑器要提交的数据\n //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹\n\n //粘贴只保留标签,去除标签所有属性\n //,retainOnlyLabelPasted: false\n\n //,pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴\n //纯文本粘贴模式下的过滤规则\n //'filterTxtRules' : function(){\n // function transP(node){\n // node.tagName = 'p';\n // node.setStyle();\n // }\n // return {\n // //直接删除及其字节点内容\n // '-' : 'script style object iframe embed input select',\n // 'p': {$:{}},\n // 'br':{$:{}},\n // 'div':{'$':{}},\n // 'li':{'$':{}},\n // 'caption':transP,\n // 'th':transP,\n // 'tr':transP,\n // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP,\n // 'td':function(node){\n // //没有内容的td直接删掉\n // var txt = !!node.innerText();\n // if(txt){\n // node.parentNode.insertAfter(UE.uNode.createText('    '),node);\n // }\n // node.parentNode.removeChild(node,node.innerText())\n // }\n // }\n //}()\n\n //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串\n\n //insertorderedlist\n //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准\n //,'insertorderedlist':{\n // //自定的样式\n // 'num':'1,2,3...',\n // 'num1':'1),2),3)...',\n // 'num2':'(1),(2),(3)...',\n // 'cn':'一,二,三....',\n // 'cn1':'一),二),三)....',\n // 'cn2':'(一),(二),(三)....',\n // //系统自带\n // 'decimal' : '' , //'1,2,3...'\n // 'lower-alpha' : '' , // 'a,b,c...'\n // 'lower-roman' : '' , //'i,ii,iii...'\n // 'upper-alpha' : '' , lang //'A,B,C'\n // 'upper-roman' : '' //'I,II,III...'\n //}\n\n //insertunorderedlist\n //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准\n //,insertunorderedlist : { //自定的样式\n // 'dash' :'— 破折号', //-破折号\n // 'dot':' 。 小圆圈', //系统自带\n // 'circle' : '', // '○ 小圆圈'\n // 'disc' : '', // '● 小圆点'\n // 'square' : '' //'■ 小方块'\n //}\n //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍\n //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径\n //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制\n\n //,autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签\n\n //fontfamily\n //字体设置 label留空支持多语言自动切换,若配置,则以配置值为准\n //,'fontfamily':[\n // { label:'',name:'songti',val:'宋体,SimSun'},\n // { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'},\n // { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'},\n // { label:'',name:'heiti',val:'黑体, SimHei'},\n // { label:'',name:'lishu',val:'隶书, SimLi'},\n // { label:'',name:'andaleMono',val:'andale mono'},\n // { label:'',name:'arial',val:'arial, helvetica,sans-serif'},\n // { label:'',name:'arialBlack',val:'arial black,avant garde'},\n // { label:'',name:'comicSansMs',val:'comic sans ms'},\n // { label:'',name:'impact',val:'impact,chicago'},\n // { label:'',name:'timesNewRoman',val:'times new roman'}\n //]\n\n //fontsize\n //字号\n //,'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36]\n\n //paragraph\n //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准\n //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}\n\n //rowspacingtop\n //段间距 值和显示的名字相同\n //,'rowspacingtop':['5', '10', '15', '20', '25']\n\n //rowspacingBottom\n //段间距 值和显示的名字相同\n //,'rowspacingbottom':['5', '10', '15', '20', '25']\n\n //lineheight\n //行内间距 值和显示的名字相同\n //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5']\n\n //customstyle\n //自定义样式,不支持国际化,此处配置值即可最后显示值\n //block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置\n //尽量使用一些常用的标签\n //参数说明\n //tag 使用的标签名字\n //label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同,\n //style 添加的样式\n //每一个对象就是一个自定义的样式\n //,'customstyle':[\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;'},\n // {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'},\n // {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'},\n // {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'}\n //]\n\n //打开右键菜单功能\n //,enableContextMenu: true\n //右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准\n //,contextMenu:[\n // {\n // label:'', //显示的名称\n // cmdName:'selectall',//执行的command命令,当点击这个右键菜单时\n // //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName\n // exec:function () {\n // //this是当前编辑器的实例\n // //this.ui._dialogs['inserttableDialog'].open();\n // }\n // }\n //]\n\n //快捷菜单\n //,shortcutMenu:[\"fontfamily\", \"fontsize\", \"bold\", \"italic\", \"underline\", \"forecolor\", \"backcolor\", \"insertorderedlist\", \"insertunorderedlist\"]\n\n //elementPathEnabled\n //是否启用元素路径,默认是显示\n //,elementPathEnabled : true\n\n //wordCount\n //,wordCount:true //是否开启字数统计\n //,maximumWords:10000 //允许的最大字符数\n //字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示\n //,wordCountMsg:'' //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符\n //超出字数限制提示 留空支持多语言自动切换,否则按此配置显示\n //,wordOverFlowMsg:'' //你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!\n\n //tab\n //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位\n //,tabSize:4\n //,tabNode:' '\n\n //removeFormat\n //清除格式时可以删除的标签和属性\n //removeForamtTags标签\n //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'\n //removeFormatAttributes属性\n //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign'\n\n //undo\n //可以最多回退的次数,默认20\n //,maxUndoCount:20\n //当输入的字符数超过该值时,保存一次现场\n //,maxInputCount:1\n\n //autoHeightEnabled\n // 是否自动长高,默认true\n //,autoHeightEnabled:true\n\n //scaleEnabled\n //是否可以拉伸长高,默认true(当开启时,自动长高失效)\n //,scaleEnabled:false\n //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800\n //,minFrameHeight:220 //编辑器拖动时最小高度,默认220\n\n //autoFloatEnabled\n //是否保持toolbar的位置不动,默认true\n //,autoFloatEnabled:true\n //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面\n //,topOffset:30\n //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效)\n //,toolbarTopOffset:400\n\n //设置远程图片是否抓取到本地保存\n //,catchRemoteImageEnable: true //设置是否抓取远程图片\n\n //pageBreakTag\n //分页标识符,默认是_ueditor_page_break_tag_\n //,pageBreakTag:'_ueditor_page_break_tag_'\n\n //autotypeset\n //自动排版参数\n //,autotypeset: {\n // mergeEmptyline: true, //合并空行\n // removeClass: true, //去掉冗余的class\n // removeEmptyline: false, //去掉空行\n // textAlign:\"left\", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版\n // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版\n // pasteFilter: false, //根据规则过滤没事粘贴进来的内容\n // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号\n // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体\n // removeEmptyNode: false, // 去掉空节点\n // //可以去掉的标签\n // removeTagNames: {标签名字:1},\n // indent: false, // 行首缩进\n // indentValue : '2em', //行首缩进的大小\n // bdc2sb: false,\n // tobdc: false\n //}\n\n //tableDragable\n //表格是否可以拖拽\n //,tableDragable: true\n\n\n\n //sourceEditor\n //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror\n //注意默认codemirror只能在ie8+和非ie中使用\n //,sourceEditor:\"codemirror\"\n //如果sourceEditor是codemirror,还用配置一下两个参数\n //codeMirrorJsUrl js加载的路径,默认是 URL + \"third-party/codemirror/codemirror.js\"\n //,codeMirrorJsUrl:URL + \"third-party/codemirror/codemirror.js\"\n //codeMirrorCssUrl css加载的路径,默认是 URL + \"third-party/codemirror/codemirror.css\"\n //,codeMirrorCssUrl:URL + \"third-party/codemirror/codemirror.css\"\n //编辑器初始化完成后是否进入源码模式,默认为否。\n //,sourceEditorFirst:false\n\n //iframeUrlMap\n //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径\n //,iframeUrlMap:{\n // 'anchor':'~/dialogs/anchor/anchor.html',\n //}\n\n //allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http\n //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:']\n\n //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html\n //, webAppKey: \"\"\n\n //默认过滤规则相关配置项目\n //,disabledTableInTable:true //禁止表格嵌套\n //,allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签\n //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式\n\n\t\t// xss 过滤是否开启,inserthtml等操作\n\t\t,xssFilterRules: true\n\t\t//input xss过滤\n\t\t,inputXssFilter: true\n\t\t//output xss过滤\n\t\t,outputXssFilter: true\n\t\t// xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js\n\t\t,whitList: {\n\t\t\ta: ['target', 'href', 'title', 'class', 'style'],\n\t\t\tabbr: ['title', 'class', 'style'],\n\t\t\taddress: ['class', 'style'],\n\t\t\tarea: ['shape', 'coords', 'href', 'alt'],\n\t\t\tarticle: [],\n\t\t\taside: [],\n\t\t\taudio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'],\n\t\t\tb: ['class', 'style'],\n\t\t\tbdi: ['dir'],\n\t\t\tbdo: ['dir'],\n\t\t\tbig: [],\n\t\t\tblockquote: ['cite', 'class', 'style'],\n\t\t\tbr: [],\n\t\t\tcaption: ['class', 'style'],\n\t\t\tcenter: [],\n\t\t\tcite: [],\n\t\t\tcode: ['class', 'style'],\n\t\t\tcol: ['align', 'valign', 'span', 'width', 'class', 'style'],\n\t\t\tcolgroup: ['align', 'valign', 'span', 'width', 'class', 'style'],\n\t\t\tdd: ['class', 'style'],\n\t\t\tdel: ['datetime'],\n\t\t\tdetails: ['open'],\n\t\t\tdiv: ['class', 'style'],\n\t\t\tdl: ['class', 'style'],\n\t\t\tdt: ['class', 'style'],\n\t\t\tem: ['class', 'style'],\n\t\t\tfont: ['color', 'size', 'face'],\n\t\t\tfooter: [],\n\t\t\th1: ['class', 'style'],\n\t\t\th2: ['class', 'style'],\n\t\t\th3: ['class', 'style'],\n\t\t\th4: ['class', 'style'],\n\t\t\th5: ['class', 'style'],\n\t\t\th6: ['class', 'style'],\n\t\t\theader: [],\n\t\t\thr: [],\n\t\t\ti: ['class', 'style'],\n\t\t\timg: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'],\n\t\t\tins: ['datetime'],\n\t\t\tli: ['class', 'style'],\n\t\t\tmark: [],\n\t\t\tnav: [],\n\t\t\tol: ['class', 'style'],\n\t\t\tp: ['class', 'style'],\n\t\t\tpre: ['class', 'style'],\n\t\t\ts: [],\n\t\t\tsection:[],\n\t\t\tsmall: [],\n\t\t\tspan: ['class', 'style'],\n\t\t\tsub: ['class', 'style'],\n\t\t\tsup: ['class', 'style'],\n\t\t\tstrong: ['class', 'style'],\n\t\t\ttable: ['width', 'border', 'align', 'valign', 'class', 'style'],\n\t\t\ttbody: ['align', 'valign', 'class', 'style'],\n\t\t\ttd: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],\n\t\t\ttfoot: ['align', 'valign', 'class', 'style'],\n\t\t\tth: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],\n\t\t\tthead: ['align', 'valign', 'class', 'style'],\n\t\t\ttr: ['rowspan', 'align', 'valign', 'class', 'style'],\n\t\t\ttt: [],\n\t\t\tu: [],\n\t\t\tul: ['class', 'style'],\n\t\t\tvideo: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style']\n\t\t}\n };\n\n function getUEBasePath(docUrl, confUrl) {\n\n return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());\n\n }\n\n function getConfigFilePath() {\n\n var configPath = document.getElementsByTagName('script');\n\n return configPath[ configPath.length - 1 ].src;\n\n }\n\n function getBasePath(docUrl, confUrl) {\n\n var basePath = confUrl;\n\n\n if (/^(\\/|\\\\\\\\)/.test(confUrl)) {\n\n basePath = /^.+?\\w(\\/|\\\\\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\\/|\\\\\\\\)/, '');\n\n } else if (!/^[a-z]+:/i.test(confUrl)) {\n\n docUrl = docUrl.split(\"#\")[0].split(\"?\")[0].replace(/[^\\\\\\/]+$/, '');\n\n basePath = docUrl + \"\" + confUrl;\n\n }\n\n return optimizationPath(basePath);\n\n }\n\n function optimizationPath(path) {\n\n var protocol = /^[a-z]+:\\/\\//.exec(path)[ 0 ],\n tmp = null,\n res = [];\n\n path = path.replace(protocol, \"\").split(\"?\")[0].split(\"#\")[0];\n\n path = path.replace(/\\\\/g, '/').split(/\\//);\n\n path[ path.length - 1 ] = \"\";\n\n while (path.length) {\n\n if (( tmp = path.shift() ) === \"..\") {\n res.pop();\n } else if (tmp !== \".\") {\n res.push(tmp);\n }\n\n }\n\n return protocol + res.join(\"/\");\n\n }\n\n window.UE = {\n getUEBasePath: getUEBasePath\n };\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ueditor/ueditor.config.js","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.label-width {\\n width: 50px;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"D:/workspace/JZR2.1/src/components/tan/D:/workspace/JZR2.1/src/components/tan/tanEditComAddress.vue\"],\"names\":[],\"mappings\":\";AAsHA;EACC,YAAW;CACX\",\"file\":\"tanEditComAddress.vue\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.label-width {\\n\\twidth: 50px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"sourceMap\":true}!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-31a757e0\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/tan/tanEditComAddress.vue\n// module id = 8Pza\n// module chunks = 105","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAB/ElEQVQ4T63UQWsTQRQH8PdmV1lZDwpCwUPBq5EgyeybkItW+wUUPXrrQT0IKmKvvQheRBSqh57ag4cW/QJqKELYmV0aieToQT2VCiIYDCSZJyNGNiXpbqBz293//zczu+wgHPLAPC9N0yPW2pLLCSE6Usr+QZ0DwSRJrllrVwDgg0MQ8SIirkdR9GgaOhVMkmSRmR+GYXilVCr9ckCn0zne7XbfMPOGUmp9EjoVNMZ8stYu1mq13WwxjuM5IcQ7IjpXGGy1Wif6/f57IqpMKhljdoIguFwul3/sfz5xhc1m85jv+5+J6PQUcG8wGMzX6/XfhUAXMsa8ZuZXSqnNbElrfR0RHxARFd6yC2qtzyBiwswrnudtuXvMfPXf9aVqtdqeCUzT9JS1dhkA7meLzLzled4tKeX3wqAx5jYA3EPEp4i4IaX86SZg5vPMLAFgCQCeENFq7jvUWj9DxLkgCG5O+ooOaLfbJ3u93ktm3lVK3cmiY19Za72EiBUicivMHcaYVWbeUUqtjcL/Qbel4XC4TURlRBzmagDQaDT8MAw/+r6/UKlU9v7+nqOiMWaZmbtKqedFsFFGa30XAI4qpR7vB7eFEDeklF9nAeM4PiuEeEFEF8ZArfU3IppHRJ4FZGZMkuSL646B7nSJoujtLNgom+3mHrCzTnDo4B8MudMVdRxI/gAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/user.png\n// module id = 8tHC\n// module chunks = 105","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPCEtLQoyMDEzLTktMzA6IENyZWF0ZWQuCi0tPgo8c3ZnPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgaWNvbmZvbnQKPC9tZXRhZGF0YT4KPGRlZnM+Cgo8Zm9udCBpZD0iaWNvbmZvbnQiIGhvcml6LWFkdi14PSIxMDI0IiA+CiAgPGZvbnQtZmFjZQogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgYXNjZW50PSI4OTYiCiAgICBkZXNjZW50PSItMTI4IgogIC8+CiAgICA8bWlzc2luZy1nbHlwaCAvPgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieCIgdW5pY29kZT0ieCIgaG9yaXotYWR2LXg9IjEwMDEiCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICAKCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmllMDM5IiB1bmljb2RlPSImIzU5MDM0OyIgZD0iTTQyNi42NTYgODIwcTc4LjAxNiAwIDE0OS4xNTItMzAuNDk2dDEyMi40OTYtODEuODI0IDgxLjgyNC0xMjIuNDk2IDMwLjQ5Ni0xNDkuMTUycTAtNjcuMDA4LTIxLjgyNC0xMjguMzJ0LTYyLjE3Ni0xMTEuMzI4bDI0Mi4zMzYtMjQyLjAxNnExMi4zMi0xMi4zMiAxMi4zMi0zMC4zMzYgMC0xOC4zMzYtMTIuMTYtMzAuNDk2dC0zMC40OTYtMTIuMTZxLTE4LjAxNiAwLTMwLjMzNiAxMi4zMmwtMjQyLjAxNiAyNDIuMzM2cS01MC4wMTYtNDAuMzItMTExLjMyOC02Mi4xNzZ0LTEyOC4zMi0yMS44MjRxLTc4LjAxNiAwLTE0OS4xNTIgMzAuNDk2dC0xMjIuNDk2IDgxLjgyNC04MS44MjQgMTIyLjQ5Ni0zMC40OTYgMTQ5LjE1MiAzMC40OTYgMTQ5LjE1MiA4MS44MjQgMTIyLjQ5NiAxMjIuNDk2IDgxLjgyNCAxNDkuMTUyIDMwLjQ5NnpNNDI2LjY1NiA3MzQuNjU2cS02MC42NzIgMC0xMTYtMjMuNjh0LTk1LjMyOC02My42OC02My42OC05NS4zMjgtMjMuNjgtMTE2IDIzLjY4LTExNiA2My42OC05NS4zMjggOTUuMzI4LTYzLjY4IDExNi0yMy42OCAxMTYgMjMuNjggOTUuMzI4IDYzLjY4IDYzLjY4IDk1LjMyOCAyMy42OCAxMTYtMjMuNjggMTE2LTYzLjY4IDk1LjMyOC05NS4zMjggNjMuNjgtMTE2IDIzLjY4ek0yOTguNjU2IDQ3OC42NTZsMjU2IDBxMTcuNjY0IDAgMzAuMTc2LTEyLjUxMnQxMi41MTItMzAuMTc2LTEyLjUxMi0zMC4xNzYtMzAuMTc2LTEyLjUxMmwtMjU2IDBxLTE3LjY2NCAwLTMwLjE3NiAxMi41MTJ0LTEyLjUxMiAzMC4xNzYgMTIuNTEyIDMwLjE3NiAzMC4xNzYgMTIuNTEyeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAogICAgPGdseXBoIGdseXBoLW5hbWU9Imd1YW5iaSIgdW5pY29kZT0iJiM1ODg4NjsiIGQ9Ik01ODcuNyAzODQuMUw5MTIuMyA3MDljMjAuOSAyMSAyMC45IDU0LjggMCA3NS44cy01NC44IDIxLTc1LjcgMEw1MTIgNDU5LjkgMTg3LjUgNzg0LjhjLTIwLjkgMjEtNTQuOCAyMS03NS43IDAtMjAuOS0yMS0yMC45LTU0LjggMC03NS44bDMyNC41LTMyNC44LTMyNC41LTMyNC45Yy0yMC45LTIxLTIwLjktNTQuOCAwLTc1LjggMTAuNC0xMC41IDI0LjEtMTUuNyAzNy45LTE1LjcgMTMuNyAwIDI3LjQgNS4yIDM3LjkgMTUuN0w1MTIgMzA4LjNsMzI0LjUtMzI0LjhjMTAuNC0xMC41IDI0LjItMTUuNyAzNy45LTE1LjdzMjcuNCA1LjIgMzcuOCAxNS43YzIwLjkgMjEgMjAuOSA1NC44IDAgNzUuOEw1ODcuNyAzODQuMXoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ4dWFuemh1YW4iIHVuaWNvZGU9IiYjNTg5OTE7IiBkPSJNMjg4IDU0NHYtMTkyaDEyOHYtNjRoLTEyOHYtNjRoMTkydjMyMGgtMTkyeiBtMTI4LTEyOGgtNjR2NjRoNjR2LTY0ek01NDQgNTQ0di0zMjBoMTkydjMyMGgtMTkyeiBtMTI4LTI1NmgtNjR2MTkyaDY0di0xOTJ6TTk1Ny40NCAzNjQuMTZoMS4zNDR2MS45MmwtMS4zNDQtMS45MnpNOTk0LjU2IDQyMS4xMmwtMzUuODQtNTUuMDQtMS4yOC0xLjkyLTM1Ljg0LTU1LjA0LTYwLjE2IDExOS4wNCAzMi0xLjkyQzg3Mi4zMiA2MTguMjQgNzA5Ljc2IDc2OCA1MTIgNzY4IDMwMC4xNiA3NjggMTI4IDU5NS44NCAxMjggMzg0czE3Mi4xNi0zODQgMzg0LTM4NGMxNDAuMTYgMCAyNjMuMDQgNzUuNTIgMzI5LjYgMTg4LjE2aDEuODU2bDAuNzA0LTAuNzA0IDUzLjA1Ni0zMS4yOTZBNDQ2LjQgNDQ2LjQgMCAwIDAgNTEyLTY0Yy0yNDcuNjggMC00NDggMjAwLjMyLTQ0OCA0NDhzMjAwLjMyIDQ0OCA0NDggNDQ4YzIzNC44OCAwIDQyNi44OC0xNzkuODQgNDQ2LjA4LTQwOC45NmwzNi40OC0xLjkyeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhbmdkYSIgdW5pY29kZT0iJiM1ODg4NDsiIGQ9Ik05NDMuOCAzLjVsLTIwMS40IDIwMWMyNC4yIDI5IDQzLjkgNjEuMyA1OC43IDk2LjMgMjAgNDcuMyAzMC4xIDk3LjYgMzAuMSAxNDkuNHMtMTAuMSAxMDItMzAuMSAxNDkuNGMtMTkuMyA0NS43LTQ3IDg2LjctODIuMSAxMjItMzUuMiAzNS4yLTc2LjIgNjIuOS0xMjEuOSA4Mi4yLTQ3LjMgMjAtOTcuNSAzMC4yLTE0OS4zIDMwLjItNTEuOCAwLTEwMi0xMC4yLTE0OS4zLTMwLjItNDUuNy0xOS4zLTg2LjctNDctMTIxLjktODIuMnMtNjIuOC03Ni4zLTgyLjEtMTIyYy0yMC00Ny4zLTMwLjEtOTcuNi0zMC4xLTE0OS40czEwLjEtMTAyIDMwLjEtMTQ5LjRjMTkuMy00NS43IDQ3LTg2LjcgODIuMS0xMjIgMzUuMi0zNS4yIDc2LjItNjIuOSAxMjEuOS04Mi4yIDQ3LjMtMjAgOTcuNS0zMC4yIDE0OS4zLTMwLjIgNTEuNyAwIDEwMiAxMC4yIDE0OS4zIDMwLjIgMzQuNiAxNC43IDY2LjYgMzQuMSA5NS4zIDU4bDIwMS41LTIwMWM2LjktNi45IDE1LjktMTAuMyAyNC45LTEwLjMgOS4xIDAgMTguMSAzLjUgMjUgMTAuNCAxMy44IDEzLjcgMTMuOCAzNi4xIDAgNDkuOHpNNjY5LjcgMjI5LjRjLTAuNC0wLjQtMC44LTAuNy0xLjItMS4xLTAuMy0wLjMtMC42LTAuNi0wLjgtMC45LTU5LTU4LjMtMTM3LTkwLjQtMjE5LjktOTAuNC04My41IDAtMTYyLjEgMzIuNi0yMjEuMiA5MS43LTU5LjEgNTkuMS05MS42IDEzNy44LTkxLjYgMjIxLjRzMzIuNSAxNjIuMyA5MS42IDIyMS40YzU5LjEgNTkuMSAxMzcuNiA5MS43IDIyMS4yIDkxLjdzMTYyLjEtMzIuNiAyMjEuMi05MS43YzU5LjEtNTkuMSA5MS42LTEzNy44IDkxLjYtMjIxLjQgMC04My4zLTMyLjMtMTYxLjYtOTAuOS0yMjAuN3pNNTczLjcgNDc3SDQ3M3Y5OGMwIDE5LjUtMTMgMzUuMy0zMi41IDM1LjNTNDA4IDU5NC41IDQwOCA1NzV2LTk4SDMwNS4zYy0xOS41IDAtMzUuMy0xMy0zNS4zLTMyLjVzMTUuOC0zMi41IDM1LjMtMzIuNUg0MDh2LTEwNS40YzAtMTkuNSAxMy0zNS4zIDMyLjUtMzUuM3MzMi41IDE1LjggMzIuNSAzNS4zVjQxMmgxMDAuN2MxOS41IDAgMzUuMyAxMyAzNS4zIDMyLjVTNTkzLjIgNDc3IDU3My43IDQ3N3oiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uIiB1bmljb2RlPSImIzU4ODg4OyIgZD0iTTI2NS40NTk4MSAxMzIuMTkzNTI0YzAgMTUuOTkzOTA1IDEyLjkyMTkwNSAyOC45NjQ1NzEgMjguOTY0NTcxIDI4Ljk2NDU3MWg0NzIuMTYxNTI0YTI4Ljk2NDU3MSAyOC45NjQ1NzEgMCAwIDAgMC01Ny45MjkxNDNIMjk0LjQyNDM4MWEyOC45NjQ1NzEgMjguOTY0NTcxIDAgMCAwLTI4Ljk2NDU3MSAyOC45NjQ1NzJ6TTUzMC41Mjk1MjQgNjk3Ljc4Mjg1N2EyOC43Njk1MjQgMjguNzY5NTI0IDAgMCAwIDI4LjcyMDc2Mi0yOC43MjA3NjJ2LTQyOC40MjIwOTVoLTU3LjUzOTA0OFY2NjkuMDYyMDk1YTI4Ljc2OTUyNCAyOC43Njk1MjQgMCAwIDAgMjguNzY5NTI0IDI4Ljc2OTUyNHpNNjgxLjIwMzgxIDM3Mi44ODIyODZhMjguNzY5NTI0IDI4Ljc2OTUyNCAwIDAgMCAwLTQwLjY2NzQyOWwtMTUxLjQ1NDQ3Ny0xNTEuNDA1NzE0LTE0OS44OTQwOTUgMTQ5Ljk0Mjg1N2EyOC45NjQ1NzEgMjguOTY0NTcxIDAgMSAwIDQwLjk2IDQwLjk2bDEwOS4yNzU0MjktMTA5LjI3NTQyOSAxMTAuNDQ1NzE0IDExMC40NDU3MTVhMjguNzY5NTI0IDI4Ljc2OTUyNCAwIDAgMCA0MC42Njc0MjkgMHoiICBob3Jpei1hZHYteD0iMTA3MiIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6dW8teXVhbiIgdW5pY29kZT0iJiM1OTMzNTsiIGQ9Ik05MzAuOTA5MDkxIDM4NGMwLTIzMC45ODE4MTgtMTg3LjkyNzI3My00MTguOTA5MDkxLTQxOC45MDkwOTEtNDE4LjkwOTA5MVM5My4wOTA5MDkgMTUzLjAxODE4MiA5My4wOTA5MDkgMzg0IDI4MS4wMTgxODIgODAyLjkwOTA5MSA1MTIgODAyLjkwOTA5MXM0MTguOTA5MDkxLTE4Ny45MjcyNzMgNDE4LjkwOTA5MS00MTguOTA5MDkxTTIzLjI3MjcyNyAzODRjMC0yNjkuOTE3MDkxIDIxOC44MTAxODItNDg4LjcyNzI3MyA0ODguNzI3MjczLTQ4OC43MjcyNzNzNDg4LjcyNzI3MyAyMTguODEwMTgyIDQ4OC43MjcyNzMgNDg4LjcyNzI3M1M3ODEuOTE3MDkxIDg3Mi43MjcyNzMgNTEyIDg3Mi43MjcyNzMgMjMuMjcyNzI3IDY1My45MTcwOTEgMjMuMjcyNzI3IDM4NG0zNDguMzkyNzI4IDM1LjQ2NzYzNmEzNC45MzIzNjQgMzQuOTMyMzY0IDAgMCAxLTEuMzczMDkxLTQ5LjM4NDcyN2wxODYuMTgxODE4LTE5Ni4zMDU0NTRhMzQuOTA5MDkxIDM0LjkwOTA5MSAwIDAgMSA1MC42NjQ3MjcgNDguMDU4MTgxbC0xNjIuMTE3ODE4IDE3MC45MzgxODIgMTYwLjgxNDU0NSAxNTIuMDQwNzI3YzcuMjM3ODE4IDYuODY1NDU1IDEwLjg5MTYzNiAxNi4xMDQ3MjcgMTAuODkxNjM3IDI1LjM2NzI3M2EzNC45MDkwOTEgMzQuOTA5MDkxIDAgMCAxLTU4LjkwMzI3MyAyNS4zNDRsLTE4Ni4xODE4MTgtMTc2LjA1ODE4MnoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ5b3UteXVhbiIgdW5pY29kZT0iJiM1OTMzNjsiIGQ9Ik05My4wOTA5MDkgMzg0YzAgMjMwLjk4MTgxOCAxODcuOTI3MjczIDQxOC45MDkwOTEgNDE4LjkwOTA5MSA0MTguOTA5MDkxczQxOC45MDkwOTEtMTg3LjkyNzI3MyA0MTguOTA5MDkxLTQxOC45MDkwOTEtMTg3LjkyNzI3My00MTguOTA5MDkxLTQxOC45MDkwOTEtNDE4LjkwOTA5MVM5My4wOTA5MDkgMTUzLjAxODE4MiA5My4wOTA5MDkgMzg0bTkwNy42MzYzNjQgMGMwIDI2OS45MTcwOTEtMjE4LjgxMDE4MiA0ODguNzI3MjczLTQ4OC43MjcyNzMgNDg4LjcyNzI3M1MyMy4yNzI3MjcgNjUzLjkxNzA5MSAyMy4yNzI3MjcgMzg0czIxOC44MTAxODItNDg4LjcyNzI3MyA0ODguNzI3MjczLTQ4OC43MjcyNzMgNDg4LjcyNzI3MyAyMTguODEwMTgyIDQ4OC43MjcyNzMgNDg4LjcyNzI3M20tMzQ4LjM5MjcyOC0zNS40Njc2MzZhMzQuOTMyMzY0IDM0LjkzMjM2NCAwIDAgMSAxLjM3MzA5MSA0OS4zODQ3MjdsLTE4Ni4xODE4MTggMTk2LjMwNTQ1NGEzNC45MDkwOTEgMzQuOTA5MDkxIDAgMCAxLTUwLjY2NDcyNy00OC4wNTgxODFsMTYyLjExNzgxOC0xNzAuOTM4MTgyLTE2MC44MTQ1NDUtMTUyLjA0MDcyN0EzNC43OTI3MjcgMzQuNzkyNzI3IDAgMCAxIDQwNy4yNzI3MjcgMTk3LjgxODE4MmEzNC45MDkwOTEgMzQuOTA5MDkxIDAgMCAxIDU4LjkwMzI3My0yNS4zNDRsMTg2LjE4MTgxOCAxNzYuMDU4MTgyeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAoKCiAgPC9mb250Pgo8L2RlZnM+PC9zdmc+Cg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/lib/icon/iconfont.svg?t=1526025951747\n// module id = A92b\n// module chunks = 105","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-notice.png\n// module id = ALX0\n// module chunks = 105","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAABnElEQVQ4T63Uv0scQRwF8Pdmz9ImjZxVqgRTWEgMaCBVSBUIBO0kneCP3eRQES67CRa7HqSLu2csQooEO9Ei6fwTjjQ2CoGkSJNKEUEQmXlhAwl3udsYWaed4TNv5vudoZ/oGaFHAAxKDkHfGcTOAtoU8bWkB4JLDBInBz5ohtwtCwaJ+/EH7DtHy1bcooAByDSyF/w219CosXpJor9wM+HMgRvNiDsdIOUekxyScEigmkZmzI/tW4B3QG0Xp+c4gWtpaG7/BWoawACBIxFDWWhuBrF9nxcrjbypItCPtQToSRaZ4Q5QwoGBPgKoOo8P1+tslQLzogSJfQVwJA3N/TxRsKpZSU0C/FfBJG1kkTfbkbAXmCPzq7pBi8Ei0FRwslbn518B2qtcBF6mlUqBKysyh324pX58SZ/yrHRCP7EfCE4JOPbAe69D7nUl9GPNkHrzv8eUOEGoJqqVhd5CFwiJcwnuGqFyEUqjNO/R/GURXE5DvusGL1La5msNXbcOk47Ybz7np553eAmv59LfCU8hbV3Z93WlH6xw8hMQNB/s7wPFqgAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/base-config.png\n// module id = Ctyf\n// module chunks = 105","import fetch from './fetch'\r\n\r\n// 项目管理\r\n// 开标人\r\nexport const GetPersonnelBasicList = (data) => {\r\n\treturn fetch('/api/EmployeeBasic/GetPersonnelBasicList', data, 'POST')\r\n}\r\nexport const GetTechnicalDirectorList = (data) => {\r\n\treturn fetch('/api/ProjectUserMakeUp/GetTechnicalDirectorList', data, 'POST')\r\n}\r\n\r\n// 报名确认\r\nexport const EditTenderBidding_state = (data) => {\r\n\treturn fetch('/api/ProjectTender/EditTenderBidding_state', data, 'POST')\r\n}\r\n\r\n// 删除角色人员\r\nexport const DeleteUserRole = (data) => {\r\n\treturn fetch('/api/User/DeleteUserRole', data, 'POST')\r\n}\r\n\r\n\r\n\r\n// 添加角色\r\nexport const AddRoleAndRoleUseCase = (data) => {\r\n\treturn fetch('/api/RoleUseCase/AddRoleAndRoleUseCase', data, 'POST')\r\n}\r\nexport const GetNewCurrentRoleUseCaseInfo = (data) => {\r\n\treturn fetch('/api/UseCase/GetNewCurrentRoleUseCaseInfo', data, 'POST')\r\n}\r\nexport const NewEditRoleAndRoleUseCase = (data) => {\r\n\treturn fetch('/api/RoleUseCase/NewEditRoleAndRoleUseCase', data, 'POST')\r\n}\r\n\r\n\r\n\r\n// 编号验证\r\nexport const VerificationRepeatData = (data) => {\r\n\treturn fetch('/api/PublicVerification/VerificationRepeatData', data, 'POST')\r\n}\r\n\r\n// 人员智能匹配\r\nexport const GetPersonSmartMatchInfo = (data) => {\r\n\treturn fetch('/api/PersonSmartMatch/GetPersonSmartMatchInfo', data, 'POST')\r\n}\r\n\r\n// 获取地址\r\nexport const GetAddressNameByID = (data) => {\r\n\treturn fetch('/api/Address/GetAddressNameByID', data, 'POST')\r\n}\r\n\r\n// 人员匹配\r\nexport const GetPersonCerInfoByMoreCondition = (data) => {\r\n\treturn fetch('/api/PersonSmartMatch/GetPersonCerInfoByMoreCondition', data, 'POST')\r\n}\r\n\r\n// 获取验证码\r\nexport const SendSMSVerificationCode = (data) => {\r\n\treturn fetch('/api/SMS/SendSMSVerificationCode', data, 'POST')\r\n}\r\n\r\n// 登录接口\r\nexport const UserLoginVerification = (data) => {\r\n\treturn fetch('/api/User/UserLoginVerification', data, 'POST')\r\n\t// return fetch('/api/User/UserLogin', data, 'POST')\r\n}\r\n\r\n// 基本资料\r\nexport const GetCurrentUserDetail = (data) => {\r\n\treturn fetch('/api/User/GetCurrentUserDetail', data, 'POST')\r\n}\r\n\r\n// 修改密码\r\nexport const CurrentUserEditPwd = (data) => {\r\n\treturn fetch('/api/User/CurrentUserEditPwd', data, 'POST')\r\n}\r\n\r\n// 权限信息\r\nexport const GetAllRoleList = (data) => {\r\n\treturn fetch('/api/Role/GetAllRoleList', data, 'POST')\r\n}\r\n\r\n// 用户信息列表\r\nexport const GetUserList = (data) => {\r\n\treturn fetch('/api/User/GetUserList', data, 'POST')\r\n}\r\nexport const GetCurrentUserSelectRole = (data) => {\r\n\treturn fetch('/api/User/GetCurrentUserSelectRole', data, 'POST')\r\n}\r\nexport const SetUserRole = (data) => {\r\n\treturn fetch('/api/User/SetUserRole', data, 'POST')\r\n}\r\n\r\n// 添加用户\r\nexport const GetNoDistributionEmployee = (data) => {\r\n\treturn fetch('/api/User/GetNoDistributionEmployee', data, 'POST')\r\n}\r\nexport const AddUser = (data) => {\r\n\treturn fetch('/api/User/AddUser', data, 'POST')\r\n}\r\nexport const EditUser = (data) => {\r\n\treturn fetch('/api/User/EditUser', data, 'POST')\r\n}\r\n\r\n\r\n\r\n// 用户管理\r\nexport const GetUserManageInfoList = (data) => {\r\n\treturn fetch('/api/User/GetUserManageInfoList', data, 'POST')\r\n}\r\nexport const DeleteUser = (data) => {\r\n\treturn fetch('/api/User/DeleteUser', data, 'POST')\r\n}\r\nexport const GetUserDetail = (data) => {\r\n\treturn fetch('/api/User/GetUserDetail', data, 'POST')\r\n}\r\n\r\n\r\n// 查询用户信息\r\nexport const GetUserInfoList = (data) => {\r\n\treturn fetch('/api/User/GetUserInfoList', data, 'POST')\r\n}\r\n\r\n// 角色信息\r\nexport const GetRoleList = (data) => {\r\n\treturn fetch('/api/Role/GetRoleList', data, 'POST')\r\n}\r\nexport const GetCurrentRoleSelectUser = (data) => {\r\n\treturn fetch('/api/Role/GetCurrentRoleSelectUser', data, 'POST')\r\n}\r\n\r\nexport const DeleteRole = (data) => {\r\n\treturn fetch('/api/Role/DeleteRole', data, 'POST')\r\n}\r\n\r\nexport const GetNewMenuUseCaseInfo = (data) => {\r\n\treturn fetch('/api/UseCase/GetNewMenuUseCaseInfo', data, 'POST')\r\n}\r\nexport const SetRoleUser = (data) => {\r\n\treturn fetch('/api/Role/SetRoleUser', data, 'POST')\r\n}\r\n\r\n\r\n\r\n\r\n// 流程审批\r\nexport const GetWorkFlowProcessList = (data) => {\r\n\treturn fetch('/api/WorkFlowProcess/GetWorkFlowProcessList', data, 'POST')\r\n}\r\nexport const OpenOrCloseWorkFlowProcess = (data) => {\r\n\treturn fetch('/api/WorkFlowProcess/OpenOrCloseWorkFlowProcess', data, 'POST')\r\n}\r\n\r\n// 部门管理\r\nexport const NewGetDepartmentTree = (data) => {\r\n\treturn fetch('/api/Department/NewGetDepartmentTree', data, 'POST')\r\n}\r\nexport const AddDepartment = (data) => {\r\n\treturn fetch('/api/Department/AddDepartment', data, 'POST')\r\n}\r\nexport const DeleteDepartment = (data) => {\r\n\treturn fetch('/api/Department/DeleteDepartment', data, 'POST')\r\n}\r\nexport const EditDepartment = (data) => {\r\n\treturn fetch('/api/Department/EditDepartment', data, 'POST')\r\n}\r\nexport const GetNoDeptEmployee = (data) => {\r\n\treturn fetch('/api/Department/GetNoDeptEmployee', data, 'POST')\r\n}\r\nexport const EditEmpDept = (data) => {\r\n\treturn fetch('/api/Department/EditEmpDept', data, 'POST')\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/urls_sxm.js","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"warns.vue\",\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"sourceMap\":true}!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-3dfdfec2\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/globle/warns.vue\n// module id = FbaC\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADhGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI5NjNjNDA2LTQwYzktYWY0MS1iMTFkLTJiYzVjZTFlOTBhMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMDJBOTIzOERFNjYxMUU4OEI1MkU2N0NCMTA1MzkxNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMDJBOTIzN0RFNjYxMUU4OEI1MkU2N0NCMTA1MzkxNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowZTU4NmI2MC03ZTQyLWM3NDQtYTkxZS02YWI0MmJkMzczNjgiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmODBkNDk3NC1iNDY2LTQ4NDEtYjg2My01NTVkNDhmZWRmMzAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6b5cVaAAABIElEQVR42ozSsUtCQRzAcbUHEdKgQxi0NLlHSGNDuBdCNDXUEiHS0lqDkg2GOChEDS0NIdUaCYIN4SD+E4LIQ23Mpfoe/ITjcd27gw88fnf3u9/93kVPyz8Rx3GEZVT1YMxh4zpauMNGcNKzbFxABQWMkcV3cJGtgi/ZfIht7KODnGsFZ3JyGg9a/BZNlwrUnfu4CsQTuHZt4hQjQ/w8LMEKatKHuFxlPlRFW3hGKZhgCZdyah5vSOICbWTwgU/sYuhpv0w1rYhFKV09nBeZv8cAdWziCSeYqAQHuEFKFtfldP2J/uIVviTo6b/xUb77krVr6MlM+uKbXuIxVqV82/BNQU/uZxs72PtnbuiFbFav8N22ICzBGhrSA9OY/QkwACUpOSB9v+yXAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-bid.png\n// module id = GvvK\n// module chunks = 105","var escape = require(\"../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \"\\nhtml,\\nbody {\\n margin: 0;\\n height: 100%;\\n}\\n.el-button--primary {\\n color: #fff;\\n background-color: #6d85fe;\\n border-color: #6d85fe;\\n}\\nli {\\n list-style: none;\\n}\\n.el-tabs__nav-wrap::after {\\n content: \\\"\\\";\\n height: 0;\\n}\\n.el-input-group__append button.el-button,\\nbutton[type=button].el-button:hover {\\n border-color: transparent;\\n background-color: #6d85fe;\\n color: white;\\n}\\n.el-pagination.is-background .el-pager li:not(.disabled).active {\\n background-color: #6d85fe;\\n}\\n.el-pagination.is-background .el-pager li:not(.disabled):hover {\\n color: #6d85fe;\\n}\\n.el-loading-mask {\\n position: fixed;\\n top: 50%;\\n margin-left: -150px;\\n left: 50%;\\n width: 300px;\\n height: 80px;\\n}\\n.el-loading-mask .el-loading-text, .el-loading-mask .el-icon-loading {\\n color: #fff;\\n}\\n.box-card {\\n border: 1px solid gainsboro;\\n border-radius: 10px;\\n}\\n.table-content {\\n padding: 5px 10px 30px 10px;\\n margin-bottom: -2%;\\n}\\n#app .page_list {\\n margin-top: 16px;\\n}\\n#app .el-table td {\\n border: none;\\n}\\n#app .el-tabs__nav-scroll {\\n background: white;\\n padding-top: 8px;\\n}\\n#app .el-tabs__nav.is-stretch > * {\\n -webkit-box-flex: initial;\\n -ms-flex: initial;\\n flex: initial;\\n}\\n#app .card .el-tabs__nav-wrap::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n bottom: 0;\\n top: 0;\\n width: 100%;\\n height: 1px;\\n background-color: #e4e7ed;\\n z-index: 1;\\n}\\n#app .el-tabs__active-bar {\\n background-color: transparent;\\n}\\n#app .main-tab-pane .el-tabs__header {\\n overflow: auto;\\n}\\n#app .el-tabs--card > .el-tabs__header .el-tabs__nav {\\n border: 0px;\\n}\\n#app .el-tabs--card > .el-tabs__header .el-tabs__item {\\n border: 1px solid #eeeeee;\\n margin-right: 8px;\\n border-top-left-radius: 8px;\\n border-top-right-radius: 8px;\\n}\\n#app .el-tabs--card > .el-tabs__header .el-tabs__item:first-child {\\n border: 1px solid #eeeeee;\\n}\\n#app .el-button--text:active {\\n color: #6d85fe;\\n background-color: transparent;\\n}\\n#app .el-input__inner,\\n#app .el-textarea__inner {\\n border-color: #959595;\\n}\\n#app .el-textarea__inner {\\n height: 120px;\\n}\\n#app .el-tabs__nav .is-active {\\n background: #6d85fe;\\n border: 0px;\\n color: #ffffff;\\n}\\n#app .el-tabs--card > .el-tabs__header .el-tabs__item .el-icon-close {\\n top: -20px;\\n right: -25px;\\n padding: 2px;\\n font-size: 14px;\\n}\\n#app .el-tabs--card > .el-tabs__header .el-tabs__item:hover .el-icon-close {\\n top: -20px;\\n right: -20px;\\n background: #44d2fa;\\n color: #ffffff;\\n -webkit-box-shadow: 1px 1px 1px #ccc;\\n box-shadow: 1px 1px 1px #ccc;\\n}\\n#app .el-tabs--card > .el-tabs__header .is-active .el-icon-close {\\n top: -20px;\\n right: -25px;\\n background: white;\\n color: #666666;\\n -webkit-box-shadow: 1px 1px 1px #ccc;\\n box-shadow: 1px 1px 1px #ccc;\\n}\\n#app .el-tabs--card > .el-tabs__header .is-active:hover .el-icon-close {\\n top: -20px;\\n right: -25px;\\n background: #44d2fa;\\n color: white;\\n}\\n#app .gradual-change {\\n background: -webkit-linear-gradient(left, #46d1fb, #8ea3fe);\\n}\\n#app .theme-color {\\n color: #6d85fe;\\n}\\n#app .wg-line {\\n display: inline-block;\\n}\\n#app .wg-line .el-input {\\n width: 217px;\\n}\\n#app .list-top {\\n font-size: 15px !important;\\n}\\n#app .flex-hen {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n#app .flex-hen-center {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-line-pack: center;\\n align-content: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n#app .flex-hen-vcenter {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n#app .flex-hen-hcenter {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n#app .flex-bettwen {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n clear: both;\\n}\\n#app .search_box {\\n width: 100%;\\n clear: both;\\n}\\n#app .mrg-right {\\n margin-right: 10px;\\n}\\n#app .padding-hen {\\n padding: 8px;\\n}\\n#app .padding-hen .searchItem {\\n width: 30%;\\n height: 60px;\\n min-width: 300px;\\n}\\n#app .padding-hen .searchItem button {\\n width: 80px;\\n}\\n#app .padding-hen .searchItem_ {\\n width: 33%;\\n height: 45px;\\n min-width: 420px;\\n}\\n#app span.filter-txt {\\n width: 80px;\\n display: inline-block;\\n margin-right: 8px;\\n color: #959595;\\n text-align: right;\\n font-size: 15px;\\n}\\n#app .padding-hen .searchItem_ button {\\n width: 80px;\\n}\\n#app .list-top {\\n margin-bottom: 20px;\\n text-align: left;\\n font-size: 14px;\\n}\\n#app .list-top .search_box {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-flow: row wrap;\\n flex-flow: row wrap;\\n margin: 16px 0;\\n}\\n#app .blue-txt {\\n color: #6d85fe;\\n font-weight: bold;\\n padding-left: 20px;\\n font-size: 15px;\\n display: inline-table;\\n}\\n#app .blue-txt span {\\n margin-left: 4px;\\n}\\n#app .blue-hover :hover {\\n color: #6d85fe;\\n}\\n#app .icon_set_b {\\n color: #666666;\\n}\\n#app .icon_search {\\n background: url(\" + escape(require(\"./assets/icon-search.png\")) + \") no-repeat left center;\\n}\\n#app .icon_folder {\\n background: url(\" + escape(require(\"./assets/icon-folder.png\")) + \") no-repeat left center;\\n}\\n#app .icon_searchResult {\\n background: url(\" + escape(require(\"./assets/icon-result.png\")) + \") no-repeat left center;\\n}\\n#app .icon_add {\\n background: url(\" + escape(require(\"./assets/icon-add.png\")) + \") no-repeat left center;\\n}\\n#app .icon_add_b {\\n background: url(\" + escape(require(\"./assets/icon-add-b.png\")) + \") no-repeat left center;\\n}\\n#app .icon_export {\\n background: url(\" + escape(require(\"./assets/icon-export.png\")) + \") no-repeat left center;\\n}\\n#app .icon_set {\\n background: url(\" + escape(require(\"./assets/icon-set.png\")) + \") no-repeat left center;\\n}\\n#app .icon_set_b {\\n background: url(\" + escape(require(\"./assets/icon-set-b.png\")) + \") no-repeat left center;\\n}\\n#app .icon_cab {\\n background: url(\" + escape(require(\"./assets/icon-cab.png\")) + \") no-repeat left center;\\n}\\n#app .icon_mc {\\n background: url(\" + escape(require(\"./assets/icon-mc.png\")) + \") no-repeat left center;\\n}\\n#app .icon_jl {\\n background: url(\" + escape(require(\"./assets/jl.png\")) + \") no-repeat left center;\\n}\\n#app .icon_xz {\\n background: url(\" + escape(require(\"./assets/xz.png\")) + \") no-repeat left center;\\n}\\n#app .icon_mc_b {\\n background: url(\" + escape(require(\"./assets/icon-mc-b.png\")) + \") no-repeat left center;\\n}\\n#app .icon_select {\\n background: url(\" + escape(require(\"./assets/icon-select.png\")) + \") no-repeat left center;\\n}\\n#app .icon_warning {\\n background: url(\" + escape(require(\"./assets/icon-warning.png\")) + \") no-repeat left center;\\n}\\n#app .icon_infor {\\n background: url(\" + escape(require(\"./assets/icon-infor.png\")) + \") no-repeat left center;\\n}\\n#app .icon_notice {\\n background: url(\" + escape(require(\"./assets/icon-notice.png\")) + \") no-repeat left center;\\n}\\n#app .icon_help {\\n background: url(\" + escape(require(\"./assets/icon-help.png\")) + \") no-repeat left center;\\n}\\n#app .icon_guide {\\n background: url(\" + escape(require(\"./assets/icon-guide.png\")) + \") no-repeat left center;\\n}\\n#app .icon_more {\\n background: url(\" + escape(require(\"./assets/icon-more.png\")) + \") no-repeat right center;\\n}\\n#app .icon_bid {\\n background: url(\" + escape(require(\"./assets/icon-bid.png\")) + \") no-repeat left center;\\n}\\n#app .icon_seeDeatlia {\\n background: url(\" + escape(require(\"./assets/icon_seeDeatlia.png\")) + \") no-repeat left center;\\n}\\n#app .icon-printing {\\n background: url(\" + escape(require(\"./assets/icon-printing.png\")) + \") no-repeat left center;\\n}\\n#app .icon-lock {\\n background: url(\" + escape(require(\"./assets/lock.png\")) + \") no-repeat left center;\\n}\\n#app .icon-phone {\\n background: url(\" + escape(require(\"./assets/phone.png\")) + \") no-repeat left center;\\n}\\n#app .icon-security {\\n background: url(\" + escape(require(\"./assets/security.png\")) + \") no-repeat left center;\\n}\\n#app .icon-user {\\n background: url(\" + escape(require(\"./assets/user.png\")) + \") no-repeat left center;\\n}\\n#app .icon-base-config {\\n background: url(\" + escape(require(\"./assets/base-config.png\")) + \") no-repeat left center;\\n}\\n#app .icon-depart {\\n background: url(\" + escape(require(\"./assets/depart.png\")) + \") no-repeat left center;\\n}\\n#app .icon-envi-word {\\n background: url(\" + escape(require(\"./assets/envi-word.png\")) + \") no-repeat left center;\\n}\\n#app .icon-edit {\\n background: url(\" + escape(require(\"./assets/icon_edit.png\")) + \") no-repeat left center;\\n}\\n#app .icon-add {\\n background: url(\" + escape(require(\"./assets/icon_add.png\")) + \") no-repeat left center;\\n}\\n#app .icon_project {\\n background: url(\" + escape(require(\"./assets/icon_project.png\")) + \") no-repeat left center;\\n}\\n#app .icon-down {\\n background: url(\" + escape(require(\"./assets/icon-other.png\")) + \");\\n background-position: 347px 248px;\\n}\\n#app .jzr-btn {\\n background: #6d85fe;\\n border: 0px;\\n}\\n#app .list-box {\\n width: 100%;\\n margin-top: 10px;\\n}\\n#app .list-left {\\n width: 300px;\\n margin-right: 20px;\\n margin-top: 20px;\\n}\\n#app .list-right {\\n width: 100%;\\n margin-top: 20px;\\n}\\n#app .leftBoxTitle {\\n width: 100%;\\n height: 40px;\\n text-align: left;\\n}\\n#app .cabientBtn {\\n width: 100%;\\n height: 100px;\\n margin: 0px;\\n}\\n#app .cabientBtn button {\\n width: 100%;\\n height: 50px;\\n color: #999;\\n}\\n#app .cabientBtn button:hover {\\n border-left: 3px solid #6d85fe;\\n border-radius: 0px;\\n background-color: #f6fdff;\\n}\\n#app .cabientBtn .el-button {\\n margin-left: 0px;\\n}\\n#app .cabientBtn .el-button--default {\\n border: 0px;\\n background-position: 15% 50%;\\n padding-left: 30px;\\n}\\n#app .cabient-box {\\n border: 1px solid #EEEEEE;\\n padding-top: 10px;\\n margin-top: 20px;\\n}\\n#app .cabient-box span {\\n width: 50%;\\n height: 90px;\\n background: url(\" + escape(require(\"./assets/icon-cabient-b.png\")) + \") no-repeat center top;\\n font-size: 13px;\\n line-height: 120px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n#app .cabient-box span:hover,\\n#app .cabient-box .active {\\n background: url(\" + escape(require(\"./assets/icon-cabient.png\")) + \") no-repeat center top;\\n color: #6d85fe;\\n}\\n#app .homeall {\\n overflow: auto;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n background: #f9f8fd;\\n margin-top: 20px;\\n font-size: 15px;\\n}\\n#app .honetitle {\\n margin-bottom: 10px;\\n text-align: left;\\n font-size: 16px;\\n}\\n#app .honetitle .more {\\n font-size: 14px;\\n padding-right: 15px;\\n cursor: pointer;\\n}\\n#app .contlist {\\n width: 100%;\\n margin: 0px;\\n padding: 0px;\\n}\\n#app .contlist li:hover {\\n color: #46d1fb;\\n}\\n#app .warn-home {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n margin-top: 12px;\\n -ms-flex-pack: distribute;\\n justify-content: space-around;\\n -webkit-box-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n text-align: left;\\n}\\n#app .warn-home .el-card {\\n border-radius: 8px;\\n}\\n#app .warn-home .el-tabs__header {\\n margin-bottom: 5px;\\n}\\n#app .warn-home .icon_more > span {\\n margin-right: 8px;\\n}\\n#app .warn-home > div {\\n width: 32%;\\n height: 370px;\\n font-size: 14px;\\n text-align: left;\\n position: relative;\\n}\\n#app .warn-home > div ul {\\n -webkit-padding-start: 14px;\\n height: 186px;\\n}\\n#app .warn-home > div li {\\n line-height: 24px;\\n}\\n#app .warn-home > div li a:link {\\n color: black;\\n}\\n#app .warn-home > div li a:visited {\\n color: black;\\n}\\n#app .warn-home > div li a:hover {\\n color: #6d85fe;\\n}\\n#app .warn-home > div li span {\\n display: inline-block;\\n width: 95%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n#app .warn-home > div li em {\\n position: relative;\\n bottom: 4px;\\n margin-left: 10px;\\n cursor: pointer;\\n}\\n#app .warn-home > div .card > button {\\n width: 100%;\\n text-align: right;\\n}\\n#app .warn-home > div .icon_more > span {\\n margin-right: 16px;\\n}\\n#app .tab-btn {\\n border-radius: 20px;\\n}\\n#app .tab-btn .btntext > span {\\n margin-left: -8px;\\n}\\n#app .tab-btn .btntext.blue-txt {\\n height: 38px;\\n}\\n#app .login-page .el-form-item__content {\\n width: 360px;\\n}\\n#app #loginForm .el-tabs__item {\\n font-size: 18px;\\n font-weight: 540;\\n color: #6d85fe;\\n -webkit-box-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\n#app .el-tabs--top .el-tabs__item.is-top:nth-child(2) {\\n padding-left: 20px;\\n}\\n#app .el-tabs--top .el-tabs__item.is-top:last-child {\\n padding-right: 20px;\\n}\\n#app #earlyWarning > .tabs, #app #announcement > .header {\\n margin: 20px 0 8px 24px;\\n}\\n#app #earlyWarning > .msg .el-card__body {\\n margin-top: 25px;\\n}\\n#app #earlyWarning > .msg .el-card__bod > div {\\n margin-left: 50px;\\n}\\n#app #homeEchart {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: distribute;\\n justify-content: space-around;\\n margin-top: 40px;\\n position: relative;\\n}\\n#app #homeEchart .Echart_ {\\n width: 100%;\\n height: 250px;\\n}\\n#app #homeEchart .el-card {\\n border-radius: 8px;\\n width: 32%;\\n}\\n#app #homeEchart .icon {\\n width: 20px;\\n height: 20px;\\n z-index: 5;\\n position: absolute;\\n}\\n#app {\\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-align: center;\\n color: #252a34;\\n width: 100%;\\n height: 100%;\\n overflow-x: hidden;\\n font-size: 15px;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"D:/workspace/JZR2.1/src/D:/workspace/JZR2.1/src/css/common.scss\",\"D:/workspace/JZR2.1/src/D:/workspace/JZR2.1/src/css/config.scss\",\"D:/workspace/JZR2.1/src/D:/workspace/JZR2.1/src/App.vue\"],\"names\":[],\"mappings\":\"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\",\"file\":\"App.vue\",\"sourcesContent\":[\"@import 'config.scss';\\r\\nhtml,\\r\\nbody {\\r\\n margin: 0;\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\n.el-button--primary {\\r\\n color: #fff;\\r\\n background-color: $theme;\\r\\n border-color: $theme;\\r\\n}\\r\\nli {\\r\\n list-style: none;\\r\\n}\\r\\n\\r\\n.el-tabs__nav-wrap::after {\\r\\n content: \\\"\\\";\\r\\n height: 0;\\r\\n}\\r\\n.el-input-group__append button.el-button,\\r\\nbutton[type=button].el-button:hover{\\r\\n\\tborder-color: transparent;\\r\\n\\tbackground-color: $theme;\\r\\n\\tcolor: white\\r\\n}\\r\\n\\r\\n.el-pagination.is-background .el-pager li:not(.disabled).active {\\r\\n background-color: $theme;\\r\\n}\\r\\n\\r\\n.el-pagination.is-background .el-pager li:not(.disabled):hover {\\r\\n color: $theme;\\r\\n}\\r\\n.el-loading-mask {\\r\\n\\tposition: fixed;\\r\\n\\ttop: 50%;\\r\\n\\tmargin-left: -150px;\\r\\n\\tleft: 50%;\\r\\n\\twidth: 300px;\\r\\n\\theight: 80px;\\r\\n\\t\\r\\n\\t.el-loading-text,.el-icon-loading {\\r\\n\\t\\tcolor: #fff;\\r\\n\\t}\\r\\n}\\r\\n.box-card {\\r\\n border: 1px solid gainsboro;\\r\\n border-radius: 10px;\\r\\n }\\r\\n .table-content {\\r\\n padding: 5px 10px 30px 10px;\\r\\n margin-bottom: -2%\\r\\n }\\r\\n#app {\\r\\n .page_list {\\r\\n margin-top: 16px;\\r\\n }\\r\\n\\t.el-table td{\\r\\n\\t\\tborder: none;\\r\\n\\t}\\r\\n .el-tabs__nav-scroll {\\r\\n background: white;\\r\\n padding-top: 8px;\\r\\n }\\r\\n .el-tabs__nav.is-stretch>* {\\r\\n flex: initial;\\r\\n }\\r\\n .card .el-tabs__nav-wrap::after {\\r\\n content: \\\"\\\";\\r\\n position: absolute;\\r\\n left: 0;\\r\\n bottom: 0;\\r\\n top: 0;\\r\\n width: 100%;\\r\\n height: 1px;\\r\\n background-color: #e4e7ed;\\r\\n z-index: 1;\\r\\n }\\r\\n .el-tabs__active-bar {\\r\\n background-color: transparent;\\r\\n }\\r\\n .main-tab-pane .el-tabs__header {\\r\\n overflow: auto;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .el-tabs__nav {\\r\\n border: 0px;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .el-tabs__item {\\r\\n border: 1px solid #eeeeee;\\r\\n margin-right: 8px;\\r\\n border-top-left-radius: 8px;\\r\\n border-top-right-radius: 8px;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .el-tabs__item:first-child {\\r\\n border: 1px solid #eeeeee;\\r\\n }\\r\\n .el-button--text:active {\\r\\n color: $theme;\\r\\n background-color: transparent;\\r\\n }\\r\\n .el-input__inner,\\r\\n .el-textarea__inner {\\r\\n border-color: $lblack;\\r\\n }\\r\\n .el-textarea__inner {\\r\\n height: 120px;\\r\\n }\\r\\n .el-tabs__nav .is-active {\\r\\n background: #6d85fe;\\r\\n border: 0px;\\r\\n color: #ffffff;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close {\\r\\n top: -20px;\\r\\n right: -25px;\\r\\n padding: 2px;\\r\\n font-size: 14px;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .el-tabs__item:hover .el-icon-close {\\r\\n top: -20px;\\r\\n right: -20px;\\r\\n background: #44d2fa;\\r\\n color: #ffffff;\\r\\n box-shadow: 1px 1px 1px #ccc;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .is-active .el-icon-close {\\r\\n top: -20px;\\r\\n right: -25px;\\r\\n background: white;\\r\\n color: #666666;\\r\\n box-shadow: 1px 1px 1px #ccc;\\r\\n }\\r\\n .el-tabs--card>.el-tabs__header .is-active:hover .el-icon-close {\\r\\n top: -20px;\\r\\n right: -25px;\\r\\n background: #44d2fa;\\r\\n color: white;\\r\\n }\\r\\n .gradual-change {\\r\\n background: -webkit-linear-gradient(left, #46d1fb, #8ea3fe);\\r\\n }\\r\\n .theme-color {\\r\\n color: $theme;\\r\\n }\\r\\n .wg-line {\\r\\n display: inline-block;\\r\\n .el-input {\\r\\n width: 217px;\\r\\n }\\r\\n }\\r\\n .list-top {\\r\\n font-size: 15px !important;\\r\\n }\\r\\n .flex-hen {\\r\\n display: flex;\\r\\n }\\r\\n .flex-hen-center {\\r\\n display: flex;\\r\\n align-content: center;\\r\\n justify-content: center;\\r\\n }\\r\\n .flex-hen-vcenter {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n }\\r\\n .flex-hen-hcenter {\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n }\\r\\n .flex-bettwen {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n clear: both;\\r\\n }\\r\\n .search_box {\\r\\n width: 100%;\\r\\n clear: both;\\r\\n }\\r\\n .mrg-right {\\r\\n margin-right: 10px;\\r\\n }\\r\\n .padding-hen {\\r\\n padding: 8px;\\r\\n }\\r\\n .padding-hen .searchItem {\\r\\n width: 30%;\\r\\n height: 60px;\\r\\n // float: left;\\r\\n min-width: 300px;\\r\\n }\\r\\n .padding-hen .searchItem button {\\r\\n width: 80px;\\r\\n }\\r\\n .padding-hen .searchItem_ {\\r\\n width: 33%;\\r\\n height: 45px;\\r\\n // float: left;\\r\\n min-width: 420px;\\r\\n }\\r\\n span.filter-txt {\\r\\n width: 80px;\\r\\n display: inline-block;\\r\\n margin-right: 8px;\\r\\n color: $gray;\\r\\n text-align: right;\\r\\n font-size: 15px;\\r\\n }\\r\\n .padding-hen .searchItem_ button {\\r\\n width: 80px;\\r\\n }\\r\\n .list-top {\\r\\n margin-bottom: 20px;\\r\\n text-align: left;\\r\\n font-size: 14px;\\r\\n .search_box {\\r\\n display: flex;\\r\\n flex-flow: row wrap;\\r\\n margin: 16px 0;\\r\\n }\\r\\n }\\r\\n .blue-txt {\\r\\n color: $theme;\\r\\n font-weight: bold;\\r\\n padding-left: 20px;\\r\\n font-size: 15px;\\r\\n display: inline-table;\\r\\n span {\\r\\n margin-left: 4px;\\r\\n }\\r\\n }\\r\\n\\t.blue-hover :hover {\\r\\n\\t\\tcolor: $theme;\\r\\n\\t}\\r\\n .icon_set_b {\\r\\n color: $txtgray;\\r\\n }\\r\\n //icons\\r\\n .icon_search {\\r\\n background: url(assets/icon-search.png) no-repeat left center;\\r\\n }\\r\\n .icon_folder {\\r\\n background: url(assets/icon-folder.png) no-repeat left center;\\r\\n }\\r\\n .icon_searchResult {\\r\\n background: url(assets/icon-result.png) no-repeat left center;\\r\\n }\\r\\n .icon_add {\\r\\n \\tbackground: url(assets/icon-add.png) no-repeat left center;\\r\\n }\\r\\n .icon_add_b {\\r\\n \\tbackground: url(assets/icon-add-b.png) no-repeat left center;\\r\\n }\\r\\n .icon_export {\\r\\n background: url(assets/icon-export.png) no-repeat left center;\\r\\n }\\r\\n .icon_set {\\r\\n \\tbackground: url(assets/icon-set.png) no-repeat left center;\\r\\n }\\r\\n .icon_set_b {\\r\\n \\tbackground: url(assets/icon-set-b.png) no-repeat left center;\\r\\n }\\r\\n .icon_cab {\\r\\n background: url(assets/icon-cab.png) no-repeat left center;\\r\\n }\\r\\n\\t.icon_mc {\\r\\n\\t\\tbackground: url(assets/icon-mc.png) no-repeat left center;\\r\\n\\t}\\r\\n\\t.icon_jl {\\r\\n\\t\\tbackground: url(assets/jl.png) no-repeat left center;\\r\\n\\t}\\r\\n\\t.icon_xz {\\r\\n\\t\\tbackground: url(assets/xz.png) no-repeat left center;\\r\\n\\t}\\r\\n .icon_mc_b {\\r\\n background: url(assets/icon-mc-b.png) no-repeat left center;\\r\\n }\\r\\n .icon_select {\\r\\n background: url(assets/icon-select.png) no-repeat left center;\\r\\n }\\r\\n .icon_warning {\\r\\n background: url(assets/icon-warning.png) no-repeat left center;\\r\\n }\\r\\n .icon_infor {\\r\\n background: url(assets/icon-infor.png) no-repeat left center;\\r\\n }\\r\\n .icon_notice {\\r\\n background: url(assets/icon-notice.png) no-repeat left center;\\r\\n }\\r\\n .icon_help {\\r\\n background: url(assets/icon-help.png) no-repeat left center;\\r\\n }\\r\\n .icon_guide {\\r\\n background: url(assets/icon-guide.png) no-repeat left center;\\r\\n }\\r\\n .icon_more {\\r\\n background: url(assets/icon-more.png) no-repeat right center;\\r\\n }\\r\\n .icon_bid{\\r\\n background: url(assets/icon-bid.png) no-repeat left center;\\r\\n }\\r\\n //icon_seeDeatlia\\r\\n .icon_seeDeatlia{\\r\\n background: url(assets/icon_seeDeatlia.png) no-repeat left center;\\r\\n }\\r\\n .icon-printing{\\r\\n background: url(assets/icon-printing.png) no-repeat left center;\\r\\n }\\r\\n .icon-lock {\\r\\n background: url(assets/lock.png) no-repeat left center;\\r\\n }\\r\\n .icon-phone {\\r\\n background: url(assets/phone.png) no-repeat left center;\\r\\n }\\r\\n .icon-security {\\r\\n background: url(assets/security.png) no-repeat left center;\\r\\n }\\r\\n .icon-user {\\r\\n background: url(assets/user.png) no-repeat left center;\\r\\n }\\r\\n .icon-base-config {\\r\\n background: url(assets/base-config.png) no-repeat left center;\\r\\n }\\r\\n .icon-depart {\\r\\n background: url(assets/depart.png) no-repeat left center;\\r\\n }\\r\\n .icon-envi-word {\\r\\n background: url(assets/envi-word.png) no-repeat left center;\\r\\n }\\r\\n\\t.icon-edit {\\r\\n\\t\\tbackground: url(assets/icon_edit.png) no-repeat left center;\\r\\n\\t}\\r\\n\\t.icon-add {\\r\\n\\t\\tbackground: url(assets/icon_add.png) no-repeat left center;\\r\\n }\\r\\n .icon_project{\\r\\n background: url(assets/icon_project.png) no-repeat left center;\\r\\n }\\r\\n\\t.icon-down {\\r\\n\\t\\tbackground: url(assets/icon-other.png);\\r\\n\\t\\tbackground-position: 347px 248px;\\r\\n\\t}\\r\\n //按钮背景\\r\\n .jzr-btn {\\r\\n background: $theme;\\r\\n border: 0px;\\r\\n }\\r\\n //列表页面公共配置\\r\\n .list-box {\\r\\n width: 100%;\\r\\n margin-top: 10px;\\r\\n }\\r\\n .list-left {\\r\\n width: 300px;\\r\\n margin-right: 20px;\\r\\n margin-top: 20px;\\r\\n }\\r\\n .list-right {\\r\\n width: 100%;\\r\\n margin-top: 20px;\\r\\n }\\r\\n .leftBoxTitle {\\r\\n width: 100%;\\r\\n height: 40px;\\r\\n text-align: left;\\r\\n }\\r\\n .cabientBtn {\\r\\n width: 100%;\\r\\n height: 100px;\\r\\n margin: 0px;\\r\\n }\\r\\n .cabientBtn button {\\r\\n width: 100%;\\r\\n height: 50px;\\r\\n // float: left;\\r\\n color: #999;\\r\\n }\\r\\n .cabientBtn button:hover {\\r\\n border-left: 3px solid $theme;\\r\\n border-radius: 0px;\\r\\n background-color: #f6fdff;\\r\\n }\\r\\n .cabientBtn .el-button {\\r\\n margin-left: 0px;\\r\\n }\\r\\n .cabientBtn .el-button--default {\\r\\n border: 0px;\\r\\n background-position: 15% 50%;\\r\\n padding-left: 30px;\\r\\n }\\r\\n .cabient-box {\\r\\n border: 1px solid #EEEEEE;\\r\\n padding-top: 10px;\\r\\n margin-top: 20px;\\r\\n }\\r\\n .cabient-box span {\\r\\n width: 50%;\\r\\n height: 90px;\\r\\n background: url(assets/icon-cabient-b.png) no-repeat center top;\\r\\n font-size: 13px;\\r\\n line-height: 120px;\\r\\n cursor: pointer;\\r\\n overflow: hidden;\\r\\n }\\r\\n .cabient-box span:hover,\\r\\n .cabient-box .active {\\r\\n background: url(assets/icon-cabient.png) no-repeat center top;\\r\\n color: $theme;\\r\\n }\\r\\n //home\\r\\n .homeall {\\r\\n overflow: auto;\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n background: #f9f8fd;\\r\\n margin-top: 20px;\\r\\n font-size: 15px;\\r\\n }\\r\\n // .homeBox {\\r\\n // padding: 0px 0px 20px 20px;\\r\\n // }\\r\\n // .homeBox .card {\\r\\n // width: 100%;\\r\\n // background: #FFFFFF;\\r\\n // }\\r\\n // .homeBox .el-card {\\r\\n // border: 0px;\\r\\n // width: 100%;\\r\\n // }\\r\\n .honetitle {\\r\\n margin-bottom: 10px;\\r\\n text-align: left;\\r\\n font-size: 16px;\\r\\n }\\r\\n .honetitle .more {\\r\\n // float: right;\\r\\n font-size: 14px;\\r\\n padding-right: 15px;\\r\\n cursor: pointer;\\r\\n }\\r\\n .contlist {\\r\\n width: 100%;\\r\\n margin: 0px;\\r\\n padding: 0px\\r\\n }\\r\\n .contlist li:hover {\\r\\n color: #46d1fb\\r\\n }\\r\\n .warn-home {\\r\\n display: flex;\\r\\n margin-top: 12px;\\r\\n justify-content: space-around;\\r\\n flex: 1;\\r\\n text-align: left;\\r\\n .el-card {\\r\\n border-radius: 8px;\\r\\n }\\r\\n .el-tabs__header {\\r\\n margin-bottom: 5px;\\r\\n }\\r\\n .icon_more>span {\\r\\n margin-right: 8px;\\r\\n }\\r\\n }\\r\\n .warn-home>div {\\r\\n width: 32%;\\r\\n height:370px;\\r\\n font-size: 14px;\\r\\n text-align: left;\\r\\n position: relative;\\r\\n ul {\\r\\n -webkit-padding-start: 14px;\\r\\n height:186px;\\r\\n }\\r\\n li {\\r\\n line-height: 24px;\\r\\n a:link {\\r\\n color: black\\r\\n }\\r\\n a:visited {\\r\\n color: black;\\r\\n }\\r\\n a:hover {\\r\\n color: $theme;\\r\\n }\\r\\n span {\\r\\n display: inline-block;\\r\\n width: 95%;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n cursor: pointer;\\r\\n }\\r\\n em {\\r\\n position: relative;\\r\\n bottom: 4px;\\r\\n margin-left: 10px;\\r\\n cursor: pointer;\\r\\n }\\r\\n }\\r\\n .card>button {\\r\\n width: 100%;\\r\\n text-align: right;\\r\\n }\\r\\n .icon_more>span {\\r\\n margin-right: 16px;\\r\\n }\\r\\n }\\r\\n .tab-btn {\\r\\n border-radius: 20px;\\r\\n// height: 30px;\\r\\n// line-height: 30px;\\r\\n .btntext>span {\\r\\n margin-left: -8px;\\r\\n }\\r\\n .btntext.blue-txt {\\r\\n height: 38px;\\r\\n }\\r\\n// .el-tabs__item.is-top {\\r\\n// border-radius: 12px;\\r\\n// height: 24px;\\r\\n// line-height: 24px;\\r\\n// }\\r\\n }\\r\\n .login-page .el-form-item__content {\\r\\n width: 360px\\r\\n }\\r\\n #loginForm .el-tabs__item {\\r\\n font-size: 18px;\\r\\n font-weight: 540;\\r\\n color: $theme;\\r\\n -webkit-box-flex: 1;\\r\\n -ms-flex: 1;\\r\\n flex: 1;\\r\\n }\\r\\n .el-tabs--top .el-tabs__item.is-top:nth-child(2) {\\r\\n padding-left: 20px\\r\\n }\\r\\n .el-tabs--top .el-tabs__item.is-top:last-child {\\r\\n padding-right: 20px\\r\\n }\\r\\n\\t#earlyWarning>.tabs,#announcement>.header{\\r\\n\\t\\tmargin: 20px 0 8px 24px;\\r\\n\\t}\\r\\n\\t#earlyWarning>.msg .el-card__body{\\r\\n\\t\\tmargin-top: 25px;\\r\\n\\t}\\r\\n\\t#earlyWarning>.msg .el-card__bod>div{\\r\\n\\t\\tmargin-left: 50px;\\r\\n }\\r\\n #homeEchart{\\r\\n display: flex;\\r\\n justify-content: space-around;\\r\\n margin-top: 40px;\\r\\n position: relative;\\r\\n .Echart_{\\r\\n width:100%;\\r\\n height:250px;\\r\\n }\\r\\n .el-card {\\r\\n border-radius: 8px;\\r\\n width:32%\\r\\n }\\r\\n .icon{\\r\\n width: 20px;\\r\\n height:20px;\\r\\n z-index:5;\\r\\n position: absolute;\\r\\n }\\r\\n }\\r\\n}\",\"//尺寸\\r\\n$head-height:55px;\\r\\n$min-width:1024px;\\r\\n$side-width:50px;\\r\\n//侧边栏在雪碧图上的绝对高度定位\\r\\n$icon-height:-135px;\\r\\n//颜色\\r\\n$theme:#6d85fe;\\r\\n$black:#252a34;\\r\\n$lblack:#959595;\\r\\n$llblack:#384150;\\r\\n$txtgray:#666666;\\r\\n$lgray:#f9f8fd;\\r\\n$sgray:#bdc5d7;\\r\\n$gray:#959595;\\r\\n$blue:#46d1fb;\\r\\n$purple:#8ea3fe;\",\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import \\\"./css/config.scss\\\";\\n@import \\\"./css/common.scss\\\";\\n\\n#app {\\n\\tfont-family: 'Avenir', Helvetica, Arial, sans-serif;\\n\\t-webkit-font-smoothing: antialiased;\\n\\t-moz-osx-font-smoothing: grayscale;\\n\\ttext-align: center;\\n\\tcolor: $black;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\toverflow-x: hidden;\\n\\tfont-size: 15px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"sourceMap\":true}!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7ba5bd90\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/App.vue\n// module id = HL3V\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzUyODVDMDZERTZEMTFFOEIzMkJENDgxNUQyMEQ4MDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzUyODVDMDdERTZEMTFFOEIzMkJENDgxNUQyMEQ4MDYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNTI4NUMwNERFNkQxMUU4QjMyQkQ0ODE1RDIwRDgwNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNTI4NUMwNURFNkQxMUU4QjMyQkQ0ODE1RDIwRDgwNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmbNs28AAAFzSURBVHjahNNPKARRHAfwN0j+lFAkDksOcnHzr1CU4qDk4CAHBw7azUktspJsrZzIQVFycFEOjpxw8OfmoCQlOa1CcrAO2vX96jsZ08zsrz7z5s28fu/93puxwon0qDGmyfyFpXYBUtAFcejQ8zfYhBikN6KWycPNKlSZ/7GmBEsa/AE7StAKcxDW5E9M0gi1kNEqvuEGxpWAll2TcPwtXEdWMhVM8s6Oa1AubMGxRwLGoxIlYTHHeMeI2knjH89wCfNMsqfMdK8BNWofTHAc8sJy6iHkemknK9Gm+kUzL1xJGxRDkTBO1cayrGQIDuw9+dSRptR/gV2YhnafBEdqIyynwaMcntaYnp/DPmyrtBaYgWoYxMeWZJILKPOYiWV2QwKiMOx4x3J74M7eWNZV50pQDpW656yzWgH37Ev9kDPJiQQFv+YrR38AeqHQPh2jckqz4OryNZ57VKCf83cl69Cp2YKCE75CH0xBP0zA2Y8AAwA9402J+KIBvQAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-search.png\n// module id = IRNI\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjU5QjkwQjNERTZEMTFFODhGNTBCNkZDMjY2NEQ3MEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjU5QjkwQjRERTZEMTFFODhGNTBCNkZDMjY2NEQ3MEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2NTlCOTBCMURFNkQxMUU4OEY1MEI2RkMyNjY0RDcwQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2NTlCOTBCMkRFNkQxMUU4OEY1MEI2RkMyNjY0RDcwQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Prvgt4AAAAF8SURBVHjalNPLK0RxFMDxO2O8kixEea/IhgULWdjO0pKV10IWY+NRslEWhLUoTVl4/AEWhJQNWYiQMkUhj43HwoLIjO/R+dXtdu+dO6c+zX387pnz+/3OLxSbSY5aljWALyuz+ET3/FjoKsLFCHpx7Bj0qr/FHkn2MI4eSfKAC9tHJqrw5PLcxDl+5SKMFIpcBi3hByUeSfLwbZJ4xR2ecYlmv8WJ+LyrxrCOkfWKYtdtoF8lWajHmuwCdtBve1+A/HSVJJGt1yt4wSZKMYU33WbfJCaRiS004QTl6EJhkCTOOEWltkWOmV7YyjweEUIjVk0lskA3LoNzXZ5JP7XoNJaxODibaotoQ8kOXNsGx3GvJUvUaXfK2G0c4EMrKZMknZBDWOHoRin5TO8TOEKrVj2HDXnBAfyfTsKx//Y+qMW+/mODTnEC0yZJuoV9x6S2vWznLRawrtOMBklSo+0e03uZQocmlArbg5ydPt1OE4d6dqRbh8z2SvwJMABVHk/ugevbCAAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/xz.png\n// module id = Ilvj\n// module chunks = 105","import {\r\n\tcatchError\r\n} from '@/js/util'\r\nimport {\r\n\tNewGetByKey,\r\n\tGetById\r\n} from '@/js/urls'\r\nexport default {\r\n\tmethods: {\r\n\t\thttpBack(promise, successBack, errorBack, msgObj) {\r\n\t\t\tpromise.then((res) => {\r\n\t\t\t\tif (window.Panduanxx(res) == 'json') {\r\n\t\t\t\t\tif ('msg' in res) {\r\n\t\t\t\t\t\tif (res.msg == 'ok' || res.code == 'success') {\r\n\t\t\t\t\t\t\tsuccessBack ? successBack(res) : false\r\n\t\t\t\t\t\t\tmsgObj && msgObj.successMsg ? this.$message.success(msgObj.successMsg) : false\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\terrorBack ? errorBack(res) : false\r\n\t\t\t\t\t\t\tmsgObj && msgObj.errorMsg ? this.$message.error(msgObj.errorMsg) : false\r\n\t\t\t\t\t\t\tlet message = (res.msg && res.msg !== 'error') ? res.msg : this.msgByCode(res.code)\r\n\t\t\t\t\t\t\tthis.$message.error(message)\r\n\t\t\t\t\t\t\treturn Promise.reject({\r\n\t\t\t\t\t\t\t\tmessage\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (res.Message == '发生错误。') {\r\n\t\t\t\t\t\t\terrorBack ? errorBack(res) : false\r\n\t\t\t\t\t\t\tmsgObj && msgObj.errorMsg ? this.$message.error(msgObj.errorMsg) : false\r\n\t\t\t\t\t\t\treturn Promise.reject({\r\n\t\t\t\t\t\t\t\tmessage: '登录异常!'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsuccessBack ? successBack(res) : false\r\n\t\t\t\t\t\t\tmsgObj && msgObj.successMsg ? this.$message.success(msgObj.successMsg) : false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsuccessBack ? successBack(res) : false\r\n\t\t\t\t}\r\n\t\t\t}).catch(catchError);\r\n\t\t},\r\n\t\tmsgByCode(code) {\r\n\t\t\tlet obj = {\r\n\t\t\t\t/// \r\n\t\t\t\t/// 成功\r\n\t\t\t\t/// \r\n\t\t\t\tsuccess: '成功',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 失败\r\n\t\t\t\t/// \r\n\t\t\t\tfailure: '获取数据出错,请重新加载',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 用户名或者密码错误\r\n\t\t\t\t/// \r\n\t\t\t\tusernameorpwderror: '用户名或者密码错误',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 系统数据\r\n\t\t\t\t/// \r\n\t\t\t\tsystemdata: '系统数据',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 重复\r\n\t\t\t\t/// \r\n\t\t\t\trepeat: '重复',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 数据重复\r\n\t\t\t\t/// \r\n\t\t\t\tdata_repeat: '数据重复',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 不存在\r\n\t\t\t\t/// \r\n\t\t\t\tnotexist: '不存在',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 存在子集\r\n\t\t\t\t/// \r\n\t\t\t\texistsubset: '存在子集',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 无权限\r\n\t\t\t\t/// \r\n\t\t\t\tnotAuthority: '无权限',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 套餐到期\r\n\t\t\t\t/// \r\n\t\t\t\tpackageMaturity: '套餐到期',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 无访问url权限\r\n\t\t\t\t/// \r\n\t\t\t\tnotAccessAuthority: '无访问url权限',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 无访问数据权限\r\n\t\t\t\t/// \r\n\t\t\t\tnotAccessDataAuthority: '无访问数据权限',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 登录过期\r\n\t\t\t\t/// \r\n\t\t\t\tloginExpired: '登录过期',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 登录失败\r\n\t\t\t\t/// \r\n\t\t\t\tloginFailure: '登录失败',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 参数错误\r\n\t\t\t\t/// \r\n\t\t\t\tparamError: '参数错误',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 部门名称重复\r\n\t\t\t\t/// \r\n\t\t\t\tdeptname_exist: '部门名称重复',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 身份证重复\r\n\t\t\t\t/// \r\n\t\t\t\tidcard_exist: '身份证重复',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 文件柜或者文件夹重复\r\n\t\t\t\t/// \r\n\t\t\t\t// fileCabinet_exist: '文件柜或者文件夹重复',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 主表信息不完整\r\n\t\t\t\t/// \r\n\t\t\t\tnofull: '主表信息不完整',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 部门下有员工信息\r\n\t\t\t\t/// \r\n\t\t\t\tdepthaveemp: '部门下有员工信息',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 部门包含子部门\r\n\t\t\t\t/// \r\n\t\t\t\tdepthavechilddept: '部门包含子部门',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 人员下包含证书\r\n\t\t\t\t/// \r\n\t\t\t\temphavecer: '人员下包含证书',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 菜单包含子菜单\r\n\t\t\t\t/// \r\n\t\t\t\tmenuhavechildmenu: '菜单包含子菜单',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 角色下包含有用户\r\n\t\t\t\t/// \r\n\t\t\t\trolehaveuser: '角色下包含有用户',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 未知错误\r\n\t\t\t\t/// \r\n\t\t\t\tunknown: '未知错误',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 文件过大\r\n\t\t\t\t/// \r\n\t\t\t\toversize: '文件过大',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 未传入数据\r\n\t\t\t\t/// \r\n\t\t\t\tnoIncomingData: '未传入数据',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 不存在此用户\r\n\t\t\t\t/// \r\n\t\t\t\tNonExistentUser: '不存在此用户',\r\n\t\t\t\t/// \r\n\t\t\t\t/// 短信验证错误\r\n\t\t\t\t/// \r\n\t\t\t\tMessageCodeError: '短信验证错误'\r\n\t\t\t}\r\n\t\t\treturn obj[code]\r\n\t\t},\r\n\t\t/**\r\n\t\t * 新增tab即新页面的操作\r\n\t\t */\r\n\t\topenNewTab(param, data, tag) {\r\n\t\t\tlet exp1 = /编辑$/\r\n\t\t\tlet exp2 = /添加$/\r\n\t\t\tlet exp3 = /详情$/\r\n\t\t\tconsole.log(param)\r\n\t\t\tlet title = param.title || param.menu_name\r\n\t\t\tlet name = param.url || param.name\r\n\t\t\tlet key = name.replace('Edit', '').replace('Detail', '').replace('Add', '')\r\n\t\t\tif (exp1.test(title) || exp2.test(title) || exp3.test(title)) {\r\n\t\t\t\tif (this.$store.state.common.allPath[key]) {\r\n\t\t\t\t\ttitle = this.$store.state.common.allPath[key].menu_name + '-' + title\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttag = tag ? (param.url + tag) : name\r\n\t\t\tlet obj = {\r\n\t\t\t\ttag,\r\n\t\t\t\tname,\r\n\t\t\t\tlabel: title,\r\n\t\t\t\tcontent: title,\r\n\t\t\t\tparam: data ? data : param,\r\n\t\t\t\tmenu_id: param.menu_id ? param.menu_id : null,\r\n\t\t\t}\r\n\t\t\tconsole.log(obj, 'mmm')\r\n\t\t\t// console.log(this.$router.history)\r\n\t\t\tthis.$router.history.current.meta.keepAlive = true\r\n\t\t\t//如果页面已经打开\r\n\t\t\tif (tag in this.$store.state.common.tabObjs) {\r\n\t\t\t\tthis.$store.dispatch('changeTopTab', obj);\r\n\t\t\t} else { //如果没打开,则新增\r\n\t\t\t\tthis.$store.dispatch('addTopTab', obj)\r\n\t\t\t}\r\n\t\t\tthis.$router.replace({\r\n\t\t\t\tname,\r\n\t\t\t\tparams: data ? data : param,\r\n\t\t\t})\r\n\t\t},\r\n\t\t//根据基础数据请求\r\n\t\tgetByKey(str, callback) {\r\n\t\t\tif (str) {\r\n\t\t\t\tthis.httpBack(NewGetByKey({\r\n\t\t\t\t\tkey: str\r\n\t\t\t\t}), (res) => {\r\n\t\t\t\t\tcallback(res)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t//根据id请求基础数据\r\n\t\tgetById(str, callback) {\r\n\t\t\tif (str) {\r\n\t\t\t\tthis.httpBack(GetById({\r\n\t\t\t\t\tid: str\r\n\t\t\t\t}), (res) => {\r\n\t\t\t\t\tcallback(res)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t//确认提示框\r\n\t\tiConfirm(title, subtitle, callback, errorback) {\r\n\t\t\tthis.$confirm(subtitle, title, {\r\n\t\t\t\tconfirmButtonText: '确定',\r\n\t\t\t\tcancelButtonText: '取消',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tcallback ? callback(true) : false\r\n\t\t\t}).catch(() => {\r\n\t\t\t\terrorback ? errorback(false) : false\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: '点击取消'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\t\t//输入框弹框\r\n\t\tiPrompt(title, subtitle, callback, errorback) {\r\n\t\t\tthis.$prompt(subtitle, title, {\r\n\t\t\t\tconfirmButtonText: '确定',\r\n\t\t\t\tcancelButtonText: '取消',\r\n\t\t\t}).then(({\r\n\t\t\t\tvalue\r\n\t\t\t}) => {\r\n\t\t\t\tcallback ? callback(value) : false\r\n\t\t\t}).catch(() => {\r\n\t\t\t\terrorback ? errorback(false) : false\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: '取消输入'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\t}\r\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/mixins.js","/*!\n * UEditor\n * version: ueditor\n * build: Wed Aug 10 2016 11:05:21 GMT+0800 (CST)\n */\n\n(function(){\n\n(function(){\n UE = window.UE || {};\n var isIE = !!window.ActiveXObject;\n //定义utils工具\n var utils = {\n removeLastbs : function(url){\n return url.replace(/\\/$/,'')\n },\n extend : function(t,s){\n var a = arguments,\n notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false,\n len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length;\n for (var i = 1; i < len; i++) {\n var x = a[i];\n for (var k in x) {\n if (!notCover || !t.hasOwnProperty(k)) {\n t[k] = x[k];\n }\n }\n }\n return t;\n },\n isIE : isIE,\n cssRule : isIE ? function(key,style,doc){\n var indexList,index;\n doc = doc || document;\n if(doc.indexList){\n indexList = doc.indexList;\n }else{\n indexList = doc.indexList = {};\n }\n var sheetStyle;\n if(!indexList[key]){\n if(style === undefined){\n return ''\n }\n sheetStyle = doc.createStyleSheet('',index = doc.styleSheets.length);\n indexList[key] = index;\n }else{\n sheetStyle = doc.styleSheets[indexList[key]];\n }\n if(style === undefined){\n return sheetStyle.cssText\n }\n sheetStyle.cssText = sheetStyle.cssText + '\\n' + (style || '')\n } : function(key,style,doc){\n doc = doc || document;\n var head = doc.getElementsByTagName('head')[0],node;\n if(!(node = doc.getElementById(key))){\n if(style === undefined){\n return ''\n }\n node = doc.createElement('style');\n node.id = key;\n head.appendChild(node)\n }\n if(style === undefined){\n return node.innerHTML\n }\n if(style !== ''){\n node.innerHTML = node.innerHTML + '\\n' + style;\n }else{\n head.removeChild(node)\n }\n },\n domReady : function (onready) {\n var doc = window.document;\n if (doc.readyState === \"complete\") {\n onready();\n }else{\n if (isIE) {\n (function () {\n if (doc.isReady) return;\n try {\n doc.documentElement.doScroll(\"left\");\n } catch (error) {\n setTimeout(arguments.callee, 0);\n return;\n }\n onready();\n })();\n window.attachEvent('onload', function(){\n onready()\n });\n } else {\n doc.addEventListener(\"DOMContentLoaded\", function () {\n doc.removeEventListener(\"DOMContentLoaded\", arguments.callee, false);\n onready();\n }, false);\n window.addEventListener('load', function(){onready()}, false);\n }\n }\n\n },\n each : function(obj, iterator, context) {\n if (obj == null) return;\n if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if(iterator.call(context, obj[i], i, obj) === false)\n return false;\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if(iterator.call(context, obj[key], key, obj) === false)\n return false;\n }\n }\n }\n },\n inArray : function(arr,item){\n var index = -1;\n this.each(arr,function(v,i){\n if(v === item){\n index = i;\n return false;\n }\n });\n return index;\n },\n pushItem : function(arr,item){\n if(this.inArray(arr,item)==-1){\n arr.push(item)\n }\n },\n trim: function (str) {\n return str.replace(/(^[ \\t\\n\\r]+)|([ \\t\\n\\r]+$)/g, '');\n },\n indexOf: function (array, item, start) {\n var index = -1;\n start = this.isNumber(start) ? start : 0;\n this.each(array, function (v, i) {\n if (i >= start && v === item) {\n index = i;\n return false;\n }\n });\n return index;\n },\n hasClass: function (element, className) {\n className = className.replace(/(^[ ]+)|([ ]+$)/g, '').replace(/[ ]{2,}/g, ' ').split(' ');\n for (var i = 0, ci, cls = element.className; ci = className[i++];) {\n if (!new RegExp('\\\\b' + ci + '\\\\b', 'i').test(cls)) {\n return false;\n }\n }\n return i - 1 == className.length;\n },\n addClass:function (elm, classNames) {\n if(!elm)return;\n classNames = this.trim(classNames).replace(/[ ]{2,}/g,' ').split(' ');\n for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){\n if(!new RegExp('\\\\b' + ci + '\\\\b').test(cls)){\n cls += ' ' + ci;\n }\n }\n elm.className = utils.trim(cls);\n },\n removeClass:function (elm, classNames) {\n classNames = this.isArray(classNames) ? classNames :\n this.trim(classNames).replace(/[ ]{2,}/g,' ').split(' ');\n for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){\n cls = cls.replace(new RegExp('\\\\b' + ci + '\\\\b'),'')\n }\n cls = this.trim(cls).replace(/[ ]{2,}/g,' ');\n elm.className = cls;\n !cls && elm.removeAttribute('className');\n },\n on: function (element, type, handler) {\n var types = this.isArray(type) ? type : type.split(/\\s+/),\n k = types.length;\n if (k) while (k--) {\n type = types[k];\n if (element.addEventListener) {\n element.addEventListener(type, handler, false);\n } else {\n if (!handler._d) {\n handler._d = {\n els : []\n };\n }\n var key = type + handler.toString(),index = utils.indexOf(handler._d.els,element);\n if (!handler._d[key] || index == -1) {\n if(index == -1){\n handler._d.els.push(element);\n }\n if(!handler._d[key]){\n handler._d[key] = function (evt) {\n return handler.call(evt.srcElement, evt || window.event);\n };\n }\n\n\n element.attachEvent('on' + type, handler._d[key]);\n }\n }\n }\n element = null;\n },\n off: function (element, type, handler) {\n var types = this.isArray(type) ? type : type.split(/\\s+/),\n k = types.length;\n if (k) while (k--) {\n type = types[k];\n if (element.removeEventListener) {\n element.removeEventListener(type, handler, false);\n } else {\n var key = type + handler.toString();\n try{\n element.detachEvent('on' + type, handler._d ? handler._d[key] : handler);\n }catch(e){}\n if (handler._d && handler._d[key]) {\n var index = utils.indexOf(handler._d.els,element);\n if(index!=-1){\n handler._d.els.splice(index,1);\n }\n handler._d.els.length == 0 && delete handler._d[key];\n }\n }\n }\n },\n loadFile : function () {\n var tmpList = [];\n function getItem(doc,obj){\n try{\n for(var i= 0,ci;ci=tmpList[i++];){\n if(ci.doc === doc && ci.url == (obj.src || obj.href)){\n return ci;\n }\n }\n }catch(e){\n return null;\n }\n\n }\n return function (doc, obj, fn) {\n var item = getItem(doc,obj);\n if (item) {\n if(item.ready){\n fn && fn();\n }else{\n item.funs.push(fn)\n }\n return;\n }\n tmpList.push({\n doc:doc,\n url:obj.src||obj.href,\n funs:[fn]\n });\n if (!doc.body) {\n var html = [];\n for(var p in obj){\n if(p == 'tag')continue;\n html.push(p + '=\"' + obj[p] + '\"')\n }\n doc.write('<' + obj.tag + ' ' + html.join(' ') + ' >');\n return;\n }\n if (obj.id && doc.getElementById(obj.id)) {\n return;\n }\n var element = doc.createElement(obj.tag);\n delete obj.tag;\n for (var p in obj) {\n element.setAttribute(p, obj[p]);\n }\n element.onload = element.onreadystatechange = function () {\n if (!this.readyState || /loaded|complete/.test(this.readyState)) {\n item = getItem(doc,obj);\n if (item.funs.length > 0) {\n item.ready = 1;\n for (var fi; fi = item.funs.pop();) {\n fi();\n }\n }\n element.onload = element.onreadystatechange = null;\n }\n };\n element.onerror = function(){\n throw Error('The load '+(obj.href||obj.src)+' fails,check the url')\n };\n doc.getElementsByTagName(\"head\")[0].appendChild(element);\n }\n }()\n };\n utils.each(['String', 'Function', 'Array', 'Number', 'RegExp', 'Object','Boolean'], function (v) {\n utils['is' + v] = function (obj) {\n return Object.prototype.toString.apply(obj) == '[object ' + v + ']';\n }\n });\n var parselist = {};\n UE.parse = {\n register : function(parseName,fn){\n parselist[parseName] = fn;\n },\n load : function(opt){\n utils.each(parselist,function(v){\n v.call(opt,utils);\n })\n }\n };\n uParse = function(selector,opt){\n utils.domReady(function(){\n var contents;\n if(document.querySelectorAll){\n contents = document.querySelectorAll(selector)\n }else{\n if(/^#/.test(selector)){\n contents = [document.getElementById(selector.replace(/^#/,''))]\n }else if(/^\\./.test(selector)){\n var contents = [];\n utils.each(document.getElementsByTagName('*'),function(node){\n if(node.className && new RegExp('\\\\b' + selector.replace(/^\\./,'') + '\\\\b','i').test(node.className)){\n contents.push(node)\n }\n })\n }else{\n contents = document.getElementsByTagName(selector)\n }\n }\n utils.each(contents,function(v){\n UE.parse.load(utils.extend({root:v,selector:selector},opt))\n })\n })\n }\n})();\n\nUE.parse.register('insertcode',function(utils){\n var pres = this.root.getElementsByTagName('pre');\n if(pres.length){\n if(typeof XRegExp == \"undefined\"){\n var jsurl,cssurl;\n if(this.rootPath !== undefined){\n jsurl = utils.removeLastbs(this.rootPath) + '/third-party/SyntaxHighlighter/shCore.js';\n cssurl = utils.removeLastbs(this.rootPath) + '/third-party/SyntaxHighlighter/shCoreDefault.css';\n }else{\n jsurl = this.highlightJsUrl;\n cssurl = this.highlightCssUrl;\n }\n utils.loadFile(document,{\n id : \"syntaxhighlighter_css\",\n tag : \"link\",\n rel : \"stylesheet\",\n type : \"text/css\",\n href : cssurl\n });\n utils.loadFile(document,{\n id : \"syntaxhighlighter_js\",\n src : jsurl,\n tag : \"script\",\n type : \"text/javascript\",\n defer : \"defer\"\n },function(){\n utils.each(pres,function(pi){\n if(pi && /brush/i.test(pi.className)){\n SyntaxHighlighter.highlight(pi);\n }\n });\n });\n }else{\n utils.each(pres,function(pi){\n if(pi && /brush/i.test(pi.className)){\n SyntaxHighlighter.highlight(pi);\n }\n });\n }\n }\n\n});\nUE.parse.register('table', function (utils) {\n var me = this,\n root = this.root,\n tables = root.getElementsByTagName('table');\n if (tables.length) {\n var selector = this.selector;\n //追加默认的表格样式\n utils.cssRule('table',\n selector + ' table.noBorderTable td,' +\n selector + ' table.noBorderTable th,' +\n selector + ' table.noBorderTable caption{border:1px dashed #ddd !important}' +\n selector + ' table.sortEnabled tr.firstRow th,' + selector + ' table.sortEnabled tr.firstRow td{padding-right:20px; background-repeat: no-repeat;' +\n 'background-position: center right; background-image:url(' + this.rootPath + 'themes/default/images/sortable.png);}' +\n selector + ' table.sortEnabled tr.firstRow th:hover,' + selector + ' table.sortEnabled tr.firstRow td:hover{background-color: #EEE;}' +\n selector + ' table{margin-bottom:10px;border-collapse:collapse;display:table;}' +\n selector + ' td,' + selector + ' th{ background:white; padding: 5px 10px;border: 1px solid #DDD;}' +\n selector + ' caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' +\n selector + ' th{border-top:1px solid #BBB;background:#F7F7F7;}' +\n selector + ' table tr.firstRow th{border-top:2px solid #BBB;background:#F7F7F7;}' +\n selector + ' tr.ue-table-interlace-color-single td{ background: #fcfcfc; }' +\n selector + ' tr.ue-table-interlace-color-double td{ background: #f7faff; }' +\n selector + ' td p{margin:0;padding:0;}',\n document);\n //填充空的单元格\n\n utils.each('td th caption'.split(' '), function (tag) {\n var cells = root.getElementsByTagName(tag);\n cells.length && utils.each(cells, function (node) {\n if (!node.firstChild) {\n node.innerHTML = ' ';\n\n }\n })\n });\n\n //表格可排序\n var tables = root.getElementsByTagName('table');\n utils.each(tables, function (table) {\n if (/\\bsortEnabled\\b/.test(table.className)) {\n utils.on(table, 'click', function(e){\n var target = e.target || e.srcElement,\n cell = findParentByTagName(target, ['td', 'th']);\n var table = findParentByTagName(target, 'table'),\n colIndex = utils.indexOf(table.rows[0].cells, cell),\n sortType = table.getAttribute('data-sort-type');\n if(colIndex != -1) {\n sortTable(table, colIndex, me.tableSortCompareFn || sortType);\n updateTable(table);\n }\n });\n }\n });\n\n //按照标签名查找父节点\n function findParentByTagName(target, tagNames) {\n var i, current = target;\n tagNames = utils.isArray(tagNames) ? tagNames:[tagNames];\n while(current){\n for(i = 0;i < tagNames.length; i++) {\n if(current.tagName == tagNames[i].toUpperCase()) return current;\n }\n current = current.parentNode;\n }\n return null;\n }\n //表格排序\n function sortTable(table, sortByCellIndex, compareFn) {\n var rows = table.rows,\n trArray = [],\n flag = rows[0].cells[0].tagName === \"TH\",\n lastRowIndex = 0;\n\n for (var i = 0,len = rows.length; i < len; i++) {\n trArray[i] = rows[i];\n }\n\n var Fn = {\n 'reversecurrent': function(td1,td2){\n return 1;\n },\n 'orderbyasc': function(td1,td2){\n var value1 = td1.innerText||td1.textContent,\n value2 = td2.innerText||td2.textContent;\n return value1.localeCompare(value2);\n },\n 'reversebyasc': function(td1,td2){\n var value1 = td1.innerHTML,\n value2 = td2.innerHTML;\n return value2.localeCompare(value1);\n },\n 'orderbynum': function(td1,td2){\n var value1 = td1[utils.isIE ? 'innerText':'textContent'].match(/\\d+/),\n value2 = td2[utils.isIE ? 'innerText':'textContent'].match(/\\d+/);\n if(value1) value1 = +value1[0];\n if(value2) value2 = +value2[0];\n return (value1||0) - (value2||0);\n },\n 'reversebynum': function(td1,td2){\n var value1 = td1[utils.isIE ? 'innerText':'textContent'].match(/\\d+/),\n value2 = td2[utils.isIE ? 'innerText':'textContent'].match(/\\d+/);\n if(value1) value1 = +value1[0];\n if(value2) value2 = +value2[0];\n return (value2||0) - (value1||0);\n }\n };\n\n //对表格设置排序的标记data-sort-type\n table.setAttribute('data-sort-type', compareFn && typeof compareFn === \"string\" && Fn[compareFn] ? compareFn:'');\n\n //th不参与排序\n flag && trArray.splice(0, 1);\n trArray = sort(trArray,function (tr1, tr2) {\n var result;\n if (compareFn && typeof compareFn === \"function\") {\n result = compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\n } else if (compareFn && typeof compareFn === \"number\") {\n result = 1;\n } else if (compareFn && typeof compareFn === \"string\" && Fn[compareFn]) {\n result = Fn[compareFn].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\n } else {\n result = Fn['orderbyasc'].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\n }\n return result;\n });\n var fragment = table.ownerDocument.createDocumentFragment();\n for (var j = 0, len = trArray.length; j < len; j++) {\n fragment.appendChild(trArray[j]);\n }\n var tbody = table.getElementsByTagName(\"tbody\")[0];\n if(!lastRowIndex){\n tbody.appendChild(fragment);\n }else{\n tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1])\n }\n }\n //冒泡排序\n function sort(array, compareFn){\n compareFn = compareFn || function(item1, item2){ return item1.localeCompare(item2);};\n for(var i= 0,len = array.length; i 0){\n var t = array[i];\n array[i] = array[j];\n array[j] = t;\n }\n }\n }\n return array;\n }\n //更新表格\n function updateTable(table) {\n //给第一行设置firstRow的样式名称,在排序图标的样式上使用到\n if(!utils.hasClass(table.rows[0], \"firstRow\")) {\n for(var i = 1; i< table.rows.length; i++) {\n utils.removeClass(table.rows[i], \"firstRow\");\n }\n utils.addClass(table.rows[0], \"firstRow\");\n }\n }\n }\n});\nUE.parse.register('charts',function( utils ){\n\n utils.cssRule('chartsContainerHeight','.edui-chart-container { height:'+(this.chartContainerHeight||300)+'px}');\n var resourceRoot = this.rootPath,\n containers = this.root,\n sources = null;\n\n //不存在指定的根路径, 则直接退出\n if ( !resourceRoot ) {\n return;\n }\n\n if ( sources = parseSources() ) {\n\n loadResources();\n\n }\n\n\n function parseSources () {\n\n if ( !containers ) {\n return null;\n }\n\n return extractChartData( containers );\n\n }\n\n /**\n * 提取数据\n */\n function extractChartData ( rootNode ) {\n\n var data = [],\n tables = rootNode.getElementsByTagName( \"table\" );\n\n for ( var i = 0, tableNode; tableNode = tables[ i ]; i++ ) {\n\n if ( tableNode.getAttribute( \"data-chart\" ) !== null ) {\n\n data.push( formatData( tableNode ) );\n\n }\n\n }\n\n return data.length ? data : null;\n\n }\n\n function formatData ( tableNode ) {\n\n var meta = tableNode.getAttribute( \"data-chart\" ),\n metaConfig = {},\n data = [];\n\n //提取table数据\n for ( var i = 0, row; row = tableNode.rows[ i ]; i++ ) {\n\n var rowData = [];\n\n for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) {\n\n var value = ( cell.innerText || cell.textContent || '' );\n rowData.push( cell.tagName == 'TH' ? value:(value | 0) );\n\n }\n\n data.push( rowData );\n\n }\n\n //解析元信息\n meta = meta.split( \";\" );\n for ( var i = 0, metaData; metaData = meta[ i ]; i++ ) {\n\n metaData = metaData.split( \":\" );\n metaConfig[ metaData[ 0 ] ] = metaData[ 1 ];\n\n }\n\n\n return {\n table: tableNode,\n meta: metaConfig,\n data: data\n };\n\n }\n\n //加载资源\n function loadResources () {\n\n loadJQuery();\n\n }\n\n function loadJQuery () {\n\n //不存在jquery, 则加载jquery\n if ( !window.jQuery ) {\n\n utils.loadFile(document,{\n src : resourceRoot + \"/third-party/jquery-1.10.2.min.js\",\n tag : \"script\",\n type : \"text/javascript\",\n defer : \"defer\"\n },function(){\n\n loadHighcharts();\n\n });\n\n } else {\n\n loadHighcharts();\n\n }\n\n }\n\n function loadHighcharts () {\n\n //不存在Highcharts, 则加载Highcharts\n if ( !window.Highcharts ) {\n\n utils.loadFile(document,{\n src : resourceRoot + \"/third-party/highcharts/highcharts.js\",\n tag : \"script\",\n type : \"text/javascript\",\n defer : \"defer\"\n },function(){\n\n loadTypeConfig();\n\n });\n\n } else {\n\n loadTypeConfig();\n\n }\n\n }\n\n //加载图表差异化配置文件\n function loadTypeConfig () {\n\n utils.loadFile(document,{\n src : resourceRoot + \"/dialogs/charts/chart.config.js\",\n tag : \"script\",\n type : \"text/javascript\",\n defer : \"defer\"\n },function(){\n\n render();\n\n });\n\n }\n\n //渲染图表\n function render () {\n\n var config = null,\n chartConfig = null,\n container = null;\n\n for ( var i = 0, len = sources.length; i < len; i++ ) {\n\n config = sources[ i ];\n\n chartConfig = analysisConfig( config );\n\n container = createContainer( config.table );\n\n renderChart( container, typeConfig[ config.meta.chartType ], chartConfig );\n\n }\n\n\n }\n\n /**\n * 渲染图表\n * @param container 图表容器节点对象\n * @param typeConfig 图表类型配置\n * @param config 图表通用配置\n * */\n function renderChart ( container, typeConfig, config ) {\n\n\n $( container ).highcharts( $.extend( {}, typeConfig, {\n\n credits: {\n enabled: false\n },\n exporting: {\n enabled: false\n },\n title: {\n text: config.title,\n x: -20 //center\n },\n subtitle: {\n text: config.subTitle,\n x: -20\n },\n xAxis: {\n title: {\n text: config.xTitle\n },\n categories: config.categories\n },\n yAxis: {\n title: {\n text: config.yTitle\n },\n plotLines: [{\n value: 0,\n width: 1,\n color: '#808080'\n }]\n },\n tooltip: {\n enabled: true,\n valueSuffix: config.suffix\n },\n legend: {\n layout: 'vertical',\n align: 'right',\n verticalAlign: 'middle',\n borderWidth: 1\n },\n series: config.series\n\n } ));\n\n }\n\n /**\n * 创建图表的容器\n * 新创建的容器会替换掉对应的table对象\n * */\n function createContainer ( tableNode ) {\n\n var container = document.createElement( \"div\" );\n container.className = \"edui-chart-container\";\n\n tableNode.parentNode.replaceChild( container, tableNode );\n\n return container;\n\n }\n\n //根据config解析出正确的类别和图表数据信息\n function analysisConfig ( config ) {\n\n var series = [],\n //数据类别\n categories = [],\n result = [],\n data = config.data,\n meta = config.meta;\n\n //数据对齐方式为相反的方式, 需要反转数据\n if ( meta.dataFormat != \"1\" ) {\n\n for ( var i = 0, len = data.length; i < len ; i++ ) {\n\n for ( var j = 0, jlen = data[ i ].length; j < jlen; j++ ) {\n\n if ( !result[ j ] ) {\n result[ j ] = [];\n }\n\n result[ j ][ i ] = data[ i ][ j ];\n\n }\n\n }\n\n data = result;\n\n }\n\n result = {};\n\n //普通图表\n if ( meta.chartType != typeConfig.length - 1 ) {\n\n categories = data[ 0 ].slice( 1 );\n\n for ( var i = 1, curData; curData = data[ i ]; i++ ) {\n series.push( {\n name: curData[ 0 ],\n data: curData.slice( 1 )\n } );\n }\n\n result.series = series;\n result.categories = categories;\n result.title = meta.title;\n result.subTitle = meta.subTitle;\n result.xTitle = meta.xTitle;\n result.yTitle = meta.yTitle;\n result.suffix = meta.suffix;\n\n } else {\n\n var curData = [];\n\n for ( var i = 1, len = data[ 0 ].length; i < len; i++ ) {\n\n curData.push( [ data[ 0 ][ i ], data[ 1 ][ i ] | 0 ] );\n\n }\n\n //饼图\n series[ 0 ] = {\n type: 'pie',\n name: meta.tip,\n data: curData\n };\n\n result.series = series;\n result.title = meta.title;\n result.suffix = meta.suffix;\n\n }\n\n return result;\n\n }\n\n});\nUE.parse.register('background', function (utils) {\n var me = this,\n root = me.root,\n p = root.getElementsByTagName('p'),\n styles;\n\n for (var i = 0,ci; ci = p[i++];) {\n styles = ci.getAttribute('data-background');\n if (styles){\n ci.parentNode.removeChild(ci);\n }\n }\n\n //追加默认的表格样式\n styles && utils.cssRule('ueditor_background', me.selector + '{' + styles + '}', document);\n});\nUE.parse.register('list',function(utils){\n var customCss = [],\n customStyle = {\n 'cn' : 'cn-1-',\n 'cn1' : 'cn-2-',\n 'cn2' : 'cn-3-',\n 'num' : 'num-1-',\n 'num1' : 'num-2-',\n 'num2' : 'num-3-',\n 'dash' : 'dash',\n 'dot' : 'dot'\n };\n\n\n utils.extend(this,{\n liiconpath : 'http://bs.baidu.com/listicon/',\n listDefaultPaddingLeft : '20'\n });\n\n var root = this.root,\n ols = root.getElementsByTagName('ol'),\n uls = root.getElementsByTagName('ul'),\n selector = this.selector;\n\n if(ols.length){\n applyStyle.call(this,ols);\n }\n\n if(uls.length){\n applyStyle.call(this,uls);\n }\n\n if(ols.length || uls.length){\n customCss.push(selector +' .list-paddingleft-1{padding-left:0}');\n customCss.push(selector +' .list-paddingleft-2{padding-left:'+ this.listDefaultPaddingLeft+'px}');\n customCss.push(selector +' .list-paddingleft-3{padding-left:'+ this.listDefaultPaddingLeft*2+'px}');\n\n utils.cssRule('list', selector +' ol,'+selector +' ul{margin:0;padding:0;}li{clear:both;}'+customCss.join('\\n'), document);\n }\n function applyStyle(nodes){\n var T = this;\n utils.each(nodes,function(list){\n if(list.className && /custom_/i.test(list.className)){\n var listStyle = list.className.match(/custom_(\\w+)/)[1];\n if(listStyle == 'dash' || listStyle == 'dot'){\n utils.pushItem(customCss,selector +' li.list-' + customStyle[listStyle] + '{background-image:url(' + T.liiconpath +customStyle[listStyle]+'.gif)}');\n utils.pushItem(customCss,selector +' ul.custom_'+listStyle+'{list-style:none;} '+ selector +' ul.custom_'+listStyle+' li{background-position:0 3px;background-repeat:no-repeat}');\n\n }else{\n var index = 1;\n utils.each(list.childNodes,function(li){\n if(li.tagName == 'LI'){\n utils.pushItem(customCss,selector + ' li.list-' + customStyle[listStyle] + index + '{background-image:url(' + T.liiconpath + 'list-'+customStyle[listStyle] +index + '.gif)}');\n index++;\n }\n });\n utils.pushItem(customCss,selector + ' ol.custom_'+listStyle+'{list-style:none;}'+selector+' ol.custom_'+listStyle+' li{background-position:0 3px;background-repeat:no-repeat}');\n }\n switch(listStyle){\n case 'cn':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:25px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:40px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-3{padding-left:55px}');\n break;\n case 'cn1':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:30px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:40px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-3{padding-left:55px}');\n break;\n case 'cn2':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:40px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:55px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-3{padding-left:68px}');\n break;\n case 'num':\n case 'num1':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:25px}');\n break;\n case 'num2':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:35px}');\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:40px}');\n break;\n case 'dash':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft{padding-left:35px}');\n break;\n case 'dot':\n utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft{padding-left:20px}');\n }\n }\n });\n }\n\n\n});\nUE.parse.register('vedio',function(utils){\n var video = this.root.getElementsByTagName('video'),\n audio = this.root.getElementsByTagName('audio');\n\n document.createElement('video');document.createElement('audio');\n if(video.length || audio.length){\n var sourcePath = utils.removeLastbs(this.rootPath),\n jsurl = sourcePath + '/third-party/video-js/video.js',\n cssurl = sourcePath + '/third-party/video-js/video-js.min.css',\n swfUrl = sourcePath + '/third-party/video-js/video-js.swf';\n\n if(window.videojs) {\n videojs.autoSetup();\n } else {\n utils.loadFile(document,{\n id : \"video_css\",\n tag : \"link\",\n rel : \"stylesheet\",\n type : \"text/css\",\n href : cssurl\n });\n utils.loadFile(document,{\n id : \"video_js\",\n src : jsurl,\n tag : \"script\",\n type : \"text/javascript\"\n },function(){\n videojs.options.flash.swf = swfUrl;\n videojs.autoSetup();\n });\n }\n\n }\n});\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ueditor/ueditor.parse.js","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAACLklEQVQ4jZ3Uz4sXRBjH8desq7GZqZF5McoIT24XwahT4KFD9BekBFIHCXYCISyGMHYCQUTm1i3a2lWD+guMAsGLkujBkpAORVSHCvJHW/KdDt8Z+q7urn33uczMMzPv+TzPPDNhZnZwBO9iytrtBk6UFI5CmJkdVPyOj1ERxoD19a/hQUyVFP6abJPvlBQ+WKvMmOsveB+TMNH8W9YKbLaxtVUn46eY60NYwANjwC6XFN7CP6PODr2BDXh5TIVbWztYDjpdUvjceJc0ahtHBx36Xcx1G05hnZabVawf/nVJ4TAWR/0dutj6e7He0nAm3RvBnea73cY9DUsuarqk8Bkevo/ClexT3OqHdOi3MdetONcUdGUB75UUTvfdMdcDeNGwSv7EQknhbNuL/+q0v4zNeAyPYhsecdcl4BnsMUxRxRsx12sx19f7gq706ZLCGTy+Wowx14JXsaekcH3E/wK+jLneKSl82JX+vRqsbdyHg9heUrgec93SUqGk8JXhJR+Lue6bWIVztx3CfElhMeYasB0vxVwnGvgCLuHQONBN+Kb138QR7MLJmOv+5v8emyaX2byS3cTO1p/HRRzGccNygh242ZX+8T+gc3gFSgq/4grOlhR+LCn8FnN9Es9jrn/SH7VwBpa+noBBg4i5nsKz2F1S6OrEXHfhGt4uKRwLM7ODq3gCP6wERS4pLDTAGcNaPY+f8RSewyclhQSh1vv9HffaMq9qvqTwRZ//Fy4RsbVsO3QSAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon_add.png\n// module id = KLdF\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODc3RTg3QzlERTZEMTFFOEJDMDZBNUE0MzQ4MTVBMEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODc3RTg3Q0FERTZEMTFFOEJDMDZBNUE0MzQ4MTVBMEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4NzdFODdDN0RFNkQxMUU4QkMwNkE1QTQzNDgxNUEwQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4NzdFODdDOERFNkQxMUU4QkMwNkE1QTQzNDgxNUEwQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpyrMy0AAAJTSURBVHjapJVLSFRRGMfvHbWnZaaU0CYTggyMXLUwoiA3QbXoRUVEj4V30aJQimjTQghRiJopKCpIojZJ0SaKHuIigmAgMCipTRKjWfSkpNF+R/4Hbodz7wgd+M0359x7/vM9zvkmzGazQcKohE2wDdbCYq1/ggG4DfeiKBrzbc4kiB6RwE0JG9Gv8AUWwma4Bh9zudyJ6QgvgEdwFirgCmzUepWsiWQdnNOeTsTzUJ8kbDa8gPXwGJbDQXgoT+34Af2Kqg7uwCow4nU+4QewDG7ABnjjRNMCrc5agRxvxfbAfOX+H+EI1sAz2JOQ96dw31cXxI+pmA143W2FZ8B5vbMlSB4/SxR8B0zCUcRrMqpwCNdhJEX4l+yk7yFeFzHdmh4wwvs0uRikDytYTHmnR3Z/RoUy43nwnwOvP2B+Q6MRngvf4I+em3NbgFGHGj0fVcqm1snnCOyK6b83H+We8GbDohTHaj1rc2LfJ6zwuG5UqDze1fcyJ7cFic5UdKEVIgXxgi6xR+eJFpodL4piQtjN45pPPY+LkpJaeT9khHvtESlRG+thWco7bbK9RrhPk8NOrtxRMY2DcVz2shH+Die1sS9lU1XaBSENl+TYVdIzbK9np5pOa+z2uMM0m7226o5oO+YQfFbkQRj7BzHVfAnV6nCmLY6VCH2WHIk0X4m3g25DGYYmeAW7dQHOwAqPYAOc0kWJZFdbUV+nMremEbp0CjpgUEfsHbxVox+C0zAPLpgfQjQfFypPCLFDrXQ77FQkS2M3K6/+ewvB1z6BvwIMAH7BqF2XhkeZAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-add-b.png\n// module id = L5Ex\n// module chunks = 105","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-help.png\n// module id = LFAA\n// module chunks = 105","import Vue from 'vue'\nimport { Message } from 'element-ui'\nVue.component(Message.name, Message)\n\n//sessionStorage\nexport const session = function(key, value) {\n\tif(value === void(0)) {\n\t\tvar lsVal = sessionStorage.getItem(key);\n\t\tif(lsVal && lsVal.indexOf('autostringify-') === 0) {\n\t\t\treturn JSON.parse(lsVal.split('autostringify-')[1]);\n\t\t} else {\n\t\t\treturn lsVal;\n\t\t}\n\t} else {\n\t\tif(typeof(value) === \"object\" || Array.isArray(value)) {\n\t\t\tvalue = 'autostringify-' + JSON.stringify(value);\n\t\t}\n\t\treturn sessionStorage.setItem(key, value);\n\t}\n}\n\n//生成随机数\nexport const getUUID = function(len) {\n\tlen = len || 6;\n\tlen = parseInt(len, 10);\n\tlen = isNaN(len) ? 6 : len;\n\tvar seed = \"0123456789abcdefghijklmnopqrstubwxyzABCEDFGHIJKLMNOPQRSTUVWXYZ\";\n\tvar seedLen = seed.length - 1;\n\tvar uuid = \"\";\n\twhile(len--) {\n\t\tuuid += seed[Math.round(Math.random() * seedLen)];\n\t}\n\treturn uuid;\n};\n//深拷贝\nexport const deepcopy = function(source) {\n\tif(!source) {\n\t\treturn source;\n\t}\n\tlet sourceCopy = source instanceof Array ? [] : {};\n\tfor(let item in source) {\n\t\tsourceCopy[item] = typeof source[item] === 'object' ? deepcopy(source[item]) : source[item];\n\t}\n\treturn sourceCopy;\n};\n//菜单数据组织\nexport const buildMenu = function(array, ckey) {\n\tconsole.log(array,'arrayarray',ckey)\n\tlet menuData = [];\n\tlet indexKeys = Array.isArray(array) ? array.map((e) => {\n\t\treturn e.id\n\t}) : [];\n\tckey = ckey || 'parent_id';\n\tarray.forEach(function(e) {\n\t\t//一级菜单\n\t\tif(!e[ckey] || (e[ckey] === e.id)) {\n\t\t\tdelete e[ckey];\n\t\t\tmenuData.push(deepcopy(e)); //深拷贝\n\t\t} else if(Array.isArray(indexKeys)) {\n\t\t\t/**\n\t\t\t * 检测ckey有效性\n\t\t\t * findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。\n\t\t\t * findIndex() 方法为数组中的每个元素都调用一次函数执行:\n\t\t\t * 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。\n\t\t\t * 如果没有符合条件的元素返回 -1\n\t\t\t * 注意: findIndex() 对于空数组,函数是不会执行的。\n\t\t\t * 注意: findIndex() 并没有改变数组的原始值。\n\t\t\t */\n\t\t\tlet parentIndex = indexKeys.findIndex(function(id) {\n\t\t\t\treturn id == e[ckey];\n\t\t\t});\n\t\t\tif(parentIndex === -1) {\n\t\t\t\tmenuData.push(e);\n\t\t\t}\n\t\t}\n\t});\n\tlet findChildren = function(parentArr) {\n\t\tif(Array.isArray(parentArr) && parentArr.length) {\n\t\t\tparentArr.forEach(function(parentNode) {\n\t\t\t\tarray.forEach(function(node) {\n\t\t\t\t\tif(parentNode.id === node[ckey]) {\n\t\t\t\t\t\tif(parentNode.children) {\n\t\t\t\t\t\t\tparentNode.children.push(node);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tparentNode.children = [node];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(parentNode.children) {\n\t\t\t\t\tfindChildren(parentNode.children);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\tfindChildren(menuData);\n\treturn menuData;\n}\n//日期格式化\nexport const dateFormat = function(source, ignore_minute) {\n\tvar myDate;\n\tvar separate = '-';\n\tvar minute = '';\n\tif(source === void(0)) {\n\t\tsource = new Date();\n\t}\n\tif(source) {\n\t\tif(source.split) {\n\t\t\tsource = source.replace(/\\-/g, '/');\n\t\t} else if(isNaN(parseInt(source))) {\n\t\t\tsource = source.toString().replace(/\\-/g, '/');\n\t\t} else {\n\t\t\tsource = new Date(source);\n\t\t}\n\n\t\tif(new Date(source) && (new Date(source)).getDate) {\n\t\t\tmyDate = new Date(source);\n\t\t\tif(!ignore_minute) {\n\t\t\t\tminute = (myDate.getHours() < 10 ? \" 0\" : \" \") + myDate.getHours() + \":\" + (myDate.getMinutes() < 10 ? \"0\" : \"\") + myDate.getMinutes();\n\t\t\t}\n\t\t\treturn myDate.getFullYear() + separate + (myDate.getMonth() + 1) + separate + (myDate.getDate() < 10 ? '0' : '') + myDate.getDate() + minute;\n\t\t} else {\n\t\t\treturn source.slice(0, 16);\n\t\t}\n\t} else {\n\t\treturn source\n\t}\n};\n//ajax错误处理\nexport const catchError = function(error) {\n\tif(error.response) {\n\t\tswitch(error.response.status) {\n\t\t\tcase 400:\n\t\t\t\tVue.prototype.$message({\n\t\t\t\t\tmessage: error.response.data.message || '请求参数异常',\n\t\t\t\t\ttype: 'error'\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 401:\n\t\t\t\tsessionStorage.removeItem('user');\n\t\t\t\tVue.prototype.$message({\n\t\t\t\t\tmessage: error.response.data.message || '密码错误或账号不存在!',\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\tonClose: function() {\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 403:\n\t\t\t\tVue.prototype.$message({\n\t\t\t\t\tmessage: error.response.data.message || '无访问权限,请联系企业管理员',\n\t\t\t\t\ttype: 'warning'\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tVue.prototype.$message({\n\t\t\t\t\tmessage: error.response.data.message || '服务端异常,请联系技术支持',\n\t\t\t\t\ttype: 'error'\n\t\t\t\t});\n\t\t}\n\t}\n\treturn Promise.reject(error);\n}\n\n\n// WEBPACK FOOTER //\n// ./src/js/util.js","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkJFOTQ3REVERTZEMTFFOEFFNDBBQkQ4NDRFRjFFQkEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkJFOTQ3REZERTZEMTFFOEFFNDBBQkQ4NDRFRjFFQkEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyQkU5NDdEQ0RFNkQxMUU4QUU0MEFCRDg0NEVGMUVCQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyQkU5NDdERERFNkQxMUU4QUU0MEFCRDg0NEVGMUVCQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pl/KfN8AAAFZSURBVHjalNPNK0RRGMfxmXEj432hlKKwwkKxU1J2LMTGSilZyEpR/AezUlY2FnZ2ww7Z2CiUjMLCayy9brDwMuP76HfquF0NT326c55z7nPe7sQnUtmYog5tCNCHUiyrbxjn2MUnjtX+HmyRwiieYRUblO/Q07UvkUASaYxbgTlMavC+BnajGGtqD+La62/BESoDvTzkdVpsxX5GOtS2LXRi25bzZD9i/49DXAQ6lDIlW7GgfeZCL1juFCNql/uHmNDzBrMRs1WhQqt1EfcLuLBZX1ynF3t4C+VsTFG4QBMW1ZnzVjaPpYgCyXCBA7T/8RBv0ZMIJZt1ZatY0VX9FraljFvBu/d88AZl86xiygqU4FWJM4xFDKzGXSh3hUK3hek8M3Xh0Wuf6IBrbQUDWLdq2MRHxGlnsKP/w72uv959Bxuawa6v37tCFwWYQa8++Ro0us4vAQYAxRVFfH7BTpIAAAAASUVORK5CYII=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-result.png\n// module id = MCd6\n// module chunks = 105","\r\n\r\n\r\n\r\n\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"app\" } }, [_c(\"router-view\")], 1)\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-7ba5bd90\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7ba5bd90\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7ba5bd90\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7ba5bd90\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/App.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7ba5bd90\", Component.options)\n } else {\n hotAPI.reload(\"data-v-7ba5bd90\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","const initTab = {\r\n\ttag: 'home', //tabObjs对象中的key\r\n\tlabel: '首页',\r\n\tname: 'home',\r\n\tcontent: '首页',\r\n\tparam: {}, //页面跳转时需要的参数\r\n\tmenu_id: null, //该menu_id是用于部分列表页切换的下拉框数据\r\n}\r\nexport default {\r\n\tstate: {\r\n\t\t//所有的路由对象集合\r\n\t\tallPath: {},\r\n\t\tinitTab: {\r\n\t\t\ttag: 'home', //tabObjs对象中的key\r\n\t\t\tlabel: '首页',\r\n\t\t\tname: 'home',\r\n\t\t\tcontent: '首页',\r\n\t\t\tparam: {}, //页面跳转时需要的参数\r\n\t\t\tmenu_id: null, //该menu_id是用于部分列表页切换的下拉框数据\r\n\t\t},\r\n\t\t//登录后数据\r\n\t\tloginData: undefined,\r\n\t\tcurrentTabPage: {\r\n\t\t\ttype: '', //change,add,del\r\n\t\t\tcurrentTab: initTab,\r\n\t\t},\r\n\t\t//以对象的形式存放tabs\r\n\t\ttabObjs: {\r\n\t\t\thome: initTab\r\n\t\t},\r\n\t\t//全局共享当前或上次浏览的表的数据\r\n\t\tcurrentTable: undefined,\r\n\t\t//当跳转的页路由页面为同一页面,强制刷新\r\n\t\tcommonPage: initTab,\r\n\t\t//全局tabs对象\r\n\t\ttabsDom: undefined,\r\n\t\t//当前页面参数\r\n\t\tcurrentPageParam: undefined,\r\n\t\tbiaotouName: '',\r\n\t\tcabinetName: '',\r\n\t\tzxtabledata: []\r\n\t},\r\n\t//\t--------------------------分割线--------------------------------------------------\r\n\tmutations: {\r\n\t\t//删除顶部tab\r\n\t\tmuDelTab(state, name) {\r\n\t\t\tfor (let idx in state.topTabs) {\r\n\t\t\t\tif (state.topTabs[idx].name == name) {\r\n\t\t\t\t\tstate.currentTab = state.topTabs[idx - 1]\r\n\t\t\t\t\tstate.topTabs.splice(idx, 1)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t//\t--------------------------分割线-------------------------------------------------\r\n\tactions: {\r\n\t\t//添加顶部标签,一般是侧边点击事件\r\n\t\taddTopTab({\r\n\t\t\tstate,\r\n\t\t\tcommit\r\n\t\t}, obj) {\r\n\t\t\t//新增需要更新tabs\r\n\t\t\tstate.tabObjs[obj.tag] = obj\r\n\t\t\tstate.currentTabPage = {\r\n\t\t\t\ttype: 'addTab',\r\n\t\t\t\tcurrentTab: obj,\r\n\t\t\t}\r\n\t\t},\r\n\t\t//切换顶部标签\r\n\t\tchangeTopTab({\r\n\t\t\tstate,\r\n\t\t\tcommit\r\n\t\t}, obj) {\r\n\t\t\t//切换不需要更新tabs,但是需要更新传递的参数\r\n\t\t\tstate.tabObjs[obj.tag].param = obj.param\r\n\t\t\tstate.currentTabPage = {\r\n\t\t\t\ttype: 'changeTab',\r\n\t\t\t\tcurrentTab: obj,\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n\tgetters: {},\r\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/common.js","import Vue from 'vue';\r\nimport Vuex from 'vuex'\r\n\r\nimport common from './common'\r\n\r\nVue.use(Vuex)\r\nexport default new Vuex.Store({\r\n\tmodules: {\r\n\t\tcommon: common,\r\n\t}\r\n})\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","export default [{\r\n\t\t//首页\r\n\t\tpath: '/home',\r\n\t\tname: 'home',\r\n\t\tmeta: {\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/home.vue'], resolve)\r\n\t}, {\r\n\t\t//企业证书\r\n\t\tpath: '/companyCertificate',\r\n\t\tname: 'companyCertificate',\r\n\t\tmeta: {\r\n\t\t\t//键名\r\n\t\t\tkey: '',\r\n\t\t\tdetail: {\r\n\t\t\t\t//需要跳转到的详情页面name地址\r\n\t\t\t\tname: 'companyCertificateDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'companyCertificateEdit'\r\n\t\t\t},\r\n\t\t\tadd :{\r\n\t\t\t\tname: 'companyCertificateAdd'\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t\t//删除操作对象\r\n\t\t\tdelPromise: '',\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/company/index.vue'], resolve)\r\n\t}, {\r\n\t\t//数字证书\r\n\t\tpath: '/digitalCertificate',\r\n\t\tname: 'digitalCertificate',\r\n\t\tmeta: {\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'digitalCertificateDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'digitalCertificateEdit'\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'digitalCertificateAdd'\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/digital/index.vue'], resolve)\r\n\t}, {\r\n\t\t//人员证书\r\n\t\tpath: '/personCertificate',\r\n\t\tname: 'personCertificate',\r\n\t\tmeta: {\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'personCertificateDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'personCertificateEdit',\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'personCertificateAdd',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/person/index.vue'], resolve)\r\n\t}, {\r\n\t\t//文件柜\r\n\t\tpath: '/CertificateFileCabinet',\r\n\t\tname: 'CertificateFileCabinet',\r\n\t\tmeta: {\r\n\t\t\tkey: 'file_folder_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'seeCabinet',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/cabinet/index.vue'], resolve)\r\n\t}, {\r\n\t\t//管理文件柜\r\n\t\tpath: '/MandCabinet',\r\n\t\tname: 'MandCabinet',\r\n\t\tmeta: {\r\n\t\t\tkey: 'file_cabinet_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'CertificateFileCabinet',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/cabinet/mand.vue'], resolve)\r\n\t}, {\r\n\t\t//文件柜详细列表\r\n\t\tpath: '/seeCabinet',\r\n\t\tname: 'seeCabinet',\r\n\t\tmeta: {\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'personCertificateDetail',\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'moveCabinet',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/cabinet/see.vue'], resolve)\r\n\t}, {\r\n\t\t//文件柜下文件夹移动操作\r\n\t\tpath: '/moveCabinet',\r\n\t\tname: 'moveCabinet',\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/cabinet/move.vue'], resolve)\r\n\t},\r\n\t// {\r\n\t// \t//考试管理\r\n\t// \tpath: '/ExaminationManage',\r\n\t// \tname: 'ExaminationManage',\r\n\t// \tmeta: {\r\n\t// \t\tkey: 'project_contract_id',\r\n\t// \t\tdetail: {\r\n\t// \t\t\tname: 'ExaminationDetail',\r\n\t// \t\t},\r\n\t// \t\tedit: {\r\n\t// \t\t\tname: 'ExaminationEdit',\r\n\t// \t\t}\r\n\t// \t},\r\n\t// \tcomponent: (resolve) => require(['@/pages/certificateManger/test/index.vue'], resolve)\r\n\t// },\r\n\t// {\r\n\t// \t//考试管理新增编辑\r\n\t// \tpath: '/ExaminationEdit',\r\n\t// \tname: 'ExaminationEdit',\r\n\t// \tcomponent: (resolve) => require(['@/pages/certificateManger/test/edit.vue'], resolve)\r\n\t// }, \r\n\t// {\r\n\t// \t//考试管理查看详情\r\n\t// \tpath: '/ExaminationDetail',\r\n\t// \tname: 'ExaminationDetail',\r\n\t// \tcomponent: (resolve) => require(['@/pages/certificateManger/test/detail.vue'], resolve)\r\n\t// },\r\n\t{\r\n\t\t//在职员工\r\n\t\tpath: '/IncumbentEmployee',\r\n\t\tname: 'IncumbentEmployee',\r\n\t\tmeta: {\r\n\t\t\tkey: 'emp_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'IncumbentEmployeeDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'IncumbentEmployeeEdit',\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'IncumbentEmployeeAdd',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/StaffPage/IncumbentEmployee.vue'], resolve)\r\n\t}, {\r\n\t\t//离职员工\r\n\t\tpath: '/ResignationEmployee',\r\n\t\tname: 'ResignationEmployee',\r\n\t\tmeta: {\r\n\t\t\tkey: 'emp_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'ResignationEmployeeDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'ResignationEmployeeEdit',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/StaffPage/ResignationEmployee.vue'], resolve)\r\n\t}, {\r\n\t\t//企业通讯录\r\n\t\tpath: '/ComAddressBook',\r\n\t\tname: 'ComAddressBook',\r\n\t\tmeta: {},\r\n\t\tcomponent: (resolve) => require(['@/pages/StaffPage/ComAddressBook.vue'], resolve)\r\n\t}, {\r\n\t\t//投标项目\r\n\t\tpath: '/TenderProject',\r\n\t\tname: 'TenderProject',\r\n\t\tmeta: {\r\n\t\t\tkey: 'project_tender_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'TenderProjectDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'tenderProjectEdit'\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'TenderProjectAdd'\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/TenderProject.vue'], resolve)\r\n\t}, {\r\n\t\t//中标项目\r\n\t\tpath: '/WinningBidProject',\r\n\t\tname: 'WinningBidProject',\r\n\t\tmeta: {\r\n\t\t\tkey: 'project_tender_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'WinningBidProjectDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'winningBidProjectEdit'\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'WinningBidProjectAdd'\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/WinningBidProject.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//在建项目\r\n\t\tpath: '/UnderProject',\r\n\t\tname: 'UnderProject',\r\n\t\tmeta: {\r\n\t\t\tkey: 'projectId',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'UnderProjectDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'underProjectEdit'\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'UnderProjectAdd'\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/UnderProject.vue'], resolve)\r\n\t}, {\r\n\t\t//竣工项目\r\n\t\tpath: '/CompletionProject',\r\n\t\tname: 'CompletionProject',\r\n\t\tmeta: {\r\n\t\t\tkey: 'projectId',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'CompletionProjectDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'completionProjectEdit'\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'CompletionProjectAdd'\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/CompletionProject.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//收款合同\r\n\t\tpath: '/ReceiptContract',\r\n\t\tname: 'ReceiptContract',\r\n\t\tmeta: {\r\n\t\t\tkey: 'project_contract_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'ReceiptContractDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'receiptContractEdit',\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'ReceiptContractAdd',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/ReceiptContract.vue'], resolve)\r\n\t}, {\r\n\t\t//付款合同\r\n\t\tpath: '/PaymentContract',\r\n\t\tname: 'PaymentContract',\r\n\t\tmeta: {\r\n\t\t\tkey: 'project_contract_id',\r\n\t\t\tdetail: {\r\n\t\t\t\tname: 'PaymentContractDetail',\r\n\t\t\t},\r\n\t\t\tedit: {\r\n\t\t\t\tname: 'paymentContractEdit',\r\n\t\t\t},\r\n\t\t\tadd: {\r\n\t\t\t\tname: 'PaymentContractAdd',\r\n\t\t\t},\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/PaymentContract.vue'], resolve)\r\n\t}\r\n]\n\n\n// WEBPACK FOOTER //\n// ./src/router/map/wzm.js","export default [\r\n//在职员工\r\n{\r\n\tpath: '/IncumbentEmployeeDetail',\r\n\tname: 'IncumbentEmployeeDetail',\r\n\tcomponent: (resolve) => require(['@/pages/StaffPage/detail_I.vue'], resolve),\r\n}, \r\n//在职员工添加\r\n{\r\n\tpath: '/IncumbentEmployeeAdd',\r\n\tname: 'IncumbentEmployeeAdd',\r\n\tcomponent: (resolve) => require(['@/pages/StaffPage/add_I.vue'], resolve)\r\n}, \r\n//离职员工\r\n{\r\n\tpath: '/ResignationEmployeeDetail',\r\n\tname: 'ResignationEmployeeDetail',\r\n\tcomponent: (resolve) => require(['@/pages/StaffPage/detail_R.vue'], resolve)\r\n}, \r\n\r\n{\r\n\tpath: '/companyCertificateDetail',\r\n\tname: 'companyCertificateDetail',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/company/detail.vue'], resolve)\r\n}, {\r\n\tpath: '/personCertificateDetail',\r\n\tname: 'personCertificateDetail',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/person/detail.vue'], resolve)\r\n}, {\r\n\tpath: '/digitalCertificateDetail',\r\n\tname: 'digitalCertificateDetail',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/digital/detail.vue'], resolve)\r\n}, \r\n{\r\n\tpath: '/companyCertificateAdd',\r\n\tname: 'companyCertificateAdd',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/company/add.vue'], resolve)\r\n}, {\r\n\tpath: '/personCertificateAdd',\r\n\tname: 'personCertificateAdd',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/person/add.vue'], resolve)\r\n}, {\r\n\tpath: '/digitalCertificateAdd',\r\n\tname: 'digitalCertificateAdd',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/digital/add.vue'], resolve)\r\n}, \r\n//中标编辑\r\n{\r\n\tpath: '/WinningBidProjectDetail',\r\n\tname: 'WinningBidProjectDetail',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/detail_W.vue'], resolve)\r\n}, \r\n//投标编辑\r\n{\r\n\tpath: '/TenderProjectDetail',\r\n\tname: 'TenderProjectDetail',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/detail_T.vue'], resolve)\r\n}, \r\n//中标编辑\r\n{\r\n\tpath: '/WinningBidProjectAdd',\r\n\tname: 'WinningBidProjectAdd',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/add_W.vue'], resolve)\r\n}, \r\n//投标编辑\r\n{\r\n\tpath: '/TenderProjectAdd',\r\n\tname: 'TenderProjectAdd',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/add_T.vue'], resolve)\r\n}, \r\n// 收款合同\r\n{\r\n\tpath: '/ReceiptContractDetail',\r\n\tname: 'ReceiptContractDetail',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/detail_R.vue'], resolve)\r\n}, \r\n// 付款合同\r\n{\r\n\tpath: '/PaymentContractDetail',\r\n\tname: 'PaymentContractDetail',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/detail_P.vue'], resolve)\r\n}, \r\n// 收款合同\r\n{\r\n\tpath: '/ReceiptContractAdd',\r\n\tname: 'ReceiptContractAdd',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/add_R.vue'], resolve)\r\n}, \r\n// 付款合同\r\n{\r\n\tpath: '/PaymentContractAdd',\r\n\tname: 'PaymentContractAdd',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/add_P.vue'], resolve)\r\n}, \r\n//在建编辑\r\n{\r\n\tpath: '/UnderProjectDetail',\r\n\tname: 'UnderProjectDetail',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/detail_U.vue'], resolve)\r\n}, \r\n//竣工编辑\r\n{\r\n\tpath: '/CompletionProjectDetail',\r\n\tname: 'CompletionProjectDetail',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/detail_C.vue'], resolve)\r\n}, \r\n//在建编辑\r\n{\r\n\tpath: '/UnderProjectAdd',\r\n\tname: 'UnderProjectAdd',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/add_U.vue'], resolve)\r\n}, \r\n//竣工编辑\r\n{\r\n\tpath: '/CompletionProjectAdd',\r\n\tname: 'CompletionProjectAdd',\r\n\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/add_C.vue'], resolve)\r\n}, \r\n{\r\n\tpath: '/SystemWareSet',\r\n\tname: 'SystemWareSet',\r\n\tcomponent: (resolve) => require(['@/pages/systemSetup/warn.vue'], resolve)\r\n}, {\r\n\tpath: '/BaseDataSet',\r\n\tname: 'BaseDataSet',\r\n\tcomponent: (resolve) => require(['@/pages/systemSetup/essential.vue'], resolve)\r\n}, {\r\n\tpath: '/SensitiveWordSet',\r\n\tname: 'SensitiveWordSet',\r\n\tcomponent: (resolve) => require(['@/pages/systemSetup/sensitivity.vue'], resolve)\r\n}]\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/map/ls.js","export default [{\r\n\t\t//新增员工信息\r\n\t\tpath: '/IncumbentEmployeeEdit',\r\n\t\tname: 'IncumbentEmployeeEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/StaffPage/edit_I.vue'], resolve)\r\n\t}, {\r\n\t\t//附件\r\n\t\tpath: '/test',\r\n\t\tname: 'test',\r\n\t\t// component: (resolve) => require(['@/pages/projectPage/intelligentMatch/intelligentMatch.vue'], resolve)\r\n\t\t// component: (resolve) => require(['@/pages/test.vue'], resolve)\r\n\t}, {\r\n\t\t//人员编辑\r\n\t\tpath: '/personCertificateEdit',\r\n\t\tname: 'personCertificateEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/person/edit.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//基本资料\r\n\t\tpath: '/baseInfo',\r\n\t\tname: 'baseInfo',\r\n\t\tcomponent: (resolve) => require(['@/pages/baseInfo.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//投标编辑\r\n\t\tpath: '/tenderProjectEdit',\r\n\t\tname: 'tenderProjectEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/edit_T.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//中标编辑\r\n\t\tpath: '/winningBidProjectEdit',\r\n\t\tname: 'winningBidProjectEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/bidManagement/edit_W.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//在建编辑\r\n\t\tpath: '/underProjectEdit',\r\n\t\tname: 'underProjectEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/edit_U.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//竣工编辑\r\n\t\tpath: '/completionProjectEdit',\r\n\t\tname: 'completionProjectEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/projectManagement/edit_C.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 收款合同\r\n\t\tpath: '/receiptContractEdit',\r\n\t\tname: 'receiptContractEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/edit_R.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 付款合同\r\n\t\tpath: '/paymentContractEdit',\r\n\t\tname: 'paymentContractEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/projectPage/contractManagement/edit_P.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//企业证书\r\n\t\tpath: '/companyCertificateEdit',\r\n\t\tname: 'companyCertificateEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/company/edit.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t//数字证书\r\n\t\tpath: '/digitalCertificateEdit',\r\n\t\tname: 'digitalCertificateEdit',\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/digital/edit.vue'], resolve)\r\n\t},{\r\n\t\t//智能匹配\r\n\t\tpath: '/PersonSmartMatch',\r\n\t\tname: 'PersonSmartMatch',\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/smartmatch/intelligentMatch.vue'], resolve)\r\n\t},{\r\n\t\t//人员匹配\r\n\t\tpath: '/PersonMatch',\r\n\t\tname: 'PersonMatch',\r\n\t\tcomponent: (resolve) => require(['@/pages/certificateManger/smartmatch/personMatch.vue'], resolve)\r\n\t},{\r\n\t\t//用户信息\r\n\t\tpath: '/setUsetInfo',\r\n\t\tname: 'setUsetInfo',\r\n\t\tmeta: {\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/setUserInfo.vue'], resolve)\r\n\t},{\r\n\t\t//用户管理\r\n\t\tpath: '/userManagment',\r\n\t\tname: 'userManagment',\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/userManagment.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 添加用户信息\r\n\t\tpath: '/editUserInfo',\r\n\t\tname: 'editUserInfo',\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/addUserInfo.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 角色信息\r\n\t\tpath: '/setRoleInfo',\r\n\t\tname: 'setRoleInfo',\r\n\t\tmeta: {\r\n\t\t\tkeepAlive:true,\r\n\t\t},\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/setRoleInfo.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 查看角色\r\n\t\tpath: '/viewRoleInfo',\r\n\t\tname: 'viewRoleInfo',\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/viewRoleInfo.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 编辑角色\r\n\t\tpath: '/editRoleInfo',\r\n\t\tname: 'editRoleInfo',\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/editRoleInfo.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 新增角色\r\n\t\tpath: '/addRoleInfo',\r\n\t\tname: 'addRoleInfo',\r\n\t\tcomponent: (resolve) => require(['@/pages/rootSet/addRoleInfo.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 编辑角色\r\n\t\tpath: '/ProcessAuditSet',\r\n\t\tname: 'ProcessAuditSet',\r\n\t\tcomponent: (resolve) => require(['@/pages/systemSetup/processAuditSet.vue'], resolve)\r\n\t},\r\n\t{\r\n\t\t// 部门信息\r\n\t\tpath: '/DepartmentInfo',\r\n\t\tname: 'DepartmentInfo',\r\n\t\tcomponent: (resolve) => require(['@/pages/systemSetup/department.vue'], resolve)\r\n\t},\r\n]\n\n\n// WEBPACK FOOTER //\n// ./src/router/map/sxm.js","import wzm from './map/wzm.js'\r\nimport ls from './map/ls.js'\r\nimport sxm from './map/sxm.js'\r\nimport qym from './map/qym.js'\r\nimport hy from './map/hy.js'\r\n\r\n\r\nconst toConcat = (allarr) => {\r\n\tlet arr = []\r\n\tfor(let item of allarr) {\r\n\t\tif(item.length) {\r\n\t\t\tarr = arr.concat(item)\r\n\t\t}\r\n\t}\r\n\treturn arr\r\n}\r\nexport default toConcat([wzm, ls, sxm, qym, hy])\n\n\n// WEBPACK FOOTER //\n// ./src/router/maps.js","export default [{\r\n\t//员工统计\r\n\tpath: '/EmployeeStatistics',\r\n\tname: 'EmployeeStatistics',\r\n\tcomponent: (resolve) => require(['@/pages/sysSets/Employee/index.vue'], resolve),\r\n\tmeta: {\r\n\t\tkeepAlive:true,\r\n\t},\r\n}, {\r\n\t//证书统计\r\n\tpath: '/CertificateStatistics',\r\n\tname: 'CertificateStatistics',\r\n\tmeta: {\r\n\t\tdetail: {\r\n\t\t\tname: 'personCertificateDetail',\r\n\t\t},\r\n\t},\r\n\tmeta: {\r\n\t\tkeepAlive:true,\r\n\t},\r\n\tcomponent: (resolve) => require(['@/pages/sysSets/Certificate/index.vue'], resolve)\r\n},{\r\n\t//预警信息\r\n\tpath:'/EarlyWarning',\r\n\tname:'EarlyWarning',\r\n\tmeta: {\r\n\t\tkeepAlive:true,\r\n\t},\r\n\tcomponent:(resolve)=>require(['@/pages/EarlywarningAndAnnouncement/EarlyWarning/index.vue'],resolve)\r\n},{\r\n\t//招标,公告\r\n\tpath:'/Announcement',\r\n\tname:'Announcement',\r\n\tcomponent:(resolve)=>require(['@/pages/EarlywarningAndAnnouncement/Announcement/index.vue'],resolve)\r\n},{\r\n\t//系统公告详情页面\r\n\tpath:'/SystemAnnouncementDetails',\r\n\tname:'SystemAnnouncementDetails',\r\n\tcomponent:(resolve)=>require(['@/pages/EarlywarningAndAnnouncement/Details/systemDetail.vue'],resolve)\r\n },\r\n {\r\n\t//分公司管理\r\n\tpath:'/BranchComManage',\r\n\tname:'BranchComManage',\r\n\tmeta: {\r\n\t\tkeepAlive:true,\r\n\t},\r\n\tcomponent:(resolve)=>require(['@/pages/branchManagement/index.vue'],resolve)\r\n},{\r\n\t//分公司新增页面\r\n\tpath:'/BranchComManageAdded',\r\n\tname:'BranchComManageAdded',\r\n\tcomponent:(resolve)=>require(['@/pages/branchManagement/BranchComManageEditorsAdded/add.vue'],resolve)\r\n},\r\n{\r\n\t//分公司编辑页面\r\n\tpath:'/BranchComManageEditors',\r\n\tname:'BranchComManageEditors',\r\n\tcomponent:(resolve)=>require(['@/pages/branchManagement/BranchComManageEditorsAdded/edit.vue'],resolve)\r\n},{\r\n\t//公式公告列表页面\r\n\tpath:'/PublicNoticeInfo',\r\n\tname:'PublicNoticeInfo',\r\n\tcomponent:(resolve)=>require(['@/pages/formulaBulletin/index.vue'],resolve)\r\n},{\r\n\t//考试管理\r\n\tpath:'/ExaminationManage',\r\n\tname:'ExaminationManage',\r\n\tmeta: {\r\n\t\tkeepAlive:true,\r\n\t},\r\n\tcomponent:(resolve)=>require(['@/pages/certificateManger/test/other_qym/index.vue'],resolve)\r\n},{\r\n\t//考试管理编辑\r\n\tpath: '/ExaminationEdit',\r\n\tname: 'ExaminationEdit',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/test/other_qym/pages/edit.vue'], resolve)\r\n},\r\n{\r\n\t//考试管理新增\r\n\tpath: '/ExaminationAdd',\r\n\tname: 'ExaminationAdd',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/test/other_qym/pages/add.vue'], resolve)\r\n}\r\n,{\r\n\t//考试管理查看详情\r\n\tpath: '/ExaminationDetail',\r\n\tname: 'ExaminationDetail',\r\n\tcomponent: (resolve) => require(['@/pages/certificateManger/test/other_qym/pages/detail.vue'], resolve)\r\n},{\r\n\t//公司公告\r\n\tpath:'/CompanyInfo',\r\n\tname:'CompanyInfo',\r\n\tmeta: {\r\n\t\tkeepAlive:true,\r\n\t},\r\n\tcomponent:(resolve)=>require(['@/pages/companyInfo/index'],resolve)\r\n},{\r\n\t//公司公告详情页面\r\n\tpath:'/CompanyAnnouncementDetails',\r\n\tname:'CompanyAnnouncementDetails',\r\n\tcomponent:(resolve)=>require(['@/pages/EarlywarningAndAnnouncement/Details/companyDetail.vue'],resolve)\r\n},{\r\n\t//公司公告新增\r\n\tpath:'/CompanyInfoAdd',\r\n\tname:'CompanyInfoAdd',\r\n\tcomponent:(resolve)=>require(['@/pages/companyInfo/editAndAdd/add'],resolve)\r\n},{\r\n\t//公司公告编辑\r\n\tpath:'/CompanyInfoEdit',\r\n\tname:'CompanyInfoEdit',\r\n\tcomponent:(resolve)=>require(['@/pages/companyInfo/editAndAdd/edit'],resolve)\r\n},\r\n{//企业基本信息\r\n\tpath:'/CompanyBasicInfo',\r\n\tname:'CompanyBasicInfo',\r\n\tcomponent:(resolve)=>require(['@/pages/branchManagement/companyBasicInformation/index'],resolve)\r\n}\r\n]\n\n\n// WEBPACK FOOTER //\n// ./src/router/map/qym.js","export default [{\r\n\t \t//证书借还\r\n\t \tpath: '/CertificateBorrowOrRecord',\r\n\t \tname: 'CertificateBorrowOrRecord',\r\n\t \tmeta: {\r\n\t\t\tkey: 'certificate_borrow_record_id',\r\n\t \t\t//查看证书\r\n\t \t\tdetail: {\r\n\t \t\t\tname: 'GetCertificateBorrowInfo',\r\n\t \t\t},\r\n\t\t\tkeepAlive:true,\r\n\t \t},\r\n\t \tcomponent: (resolve) => require(['@/pages/commonFunction/returnCertificate/index.vue'], resolve)\r\n\t },\r\n\t {\r\n\t //查看证书详情\r\n\t path: '/GetCertificateBorrowInfo',\r\n\t name: 'GetCertificateBorrowInfo',\r\n\t component: (resolve) => require(['@/pages/commonFunction/returnCertificate/detail.vue'], resolve)\r\n\t },\r\n\t{\r\n\t//借证\r\n\tpath: '/BorrowCertificate',\r\n\tname: 'BorrowCertificate',\r\n\tcomponent: (resolve) => require(['@/pages/commonFunction/returnCertificate/borrow.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//消息回复\r\n\tpath: '/GetFeedbackList',\r\n\tname: 'GetFeedbackList',\r\n\tcomponent: (resolve) => require(['@/components/sub/listMessage.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//消息回复详情\r\n\tpath: '/GetFeedbackInfo',\r\n\tname: 'GetFeedbackInfo',\r\n\tcomponent: (resolve) => require(['@/pages/feedBack/detail.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//帮助\r\n\tpath: '/GetSystemHelpListNew',\r\n\tname: 'GetSystemHelpListNew',\r\n\tcomponent: (resolve) => require(['@/pages/guideAffairs/useHelp/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//帮助\r\n\tpath: '/SiteNavigation',\r\n\tname: 'SiteNavigation',\r\n\tcomponent: (resolve) => require(['@/pages/guideAffairs/urlNavigation/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//办事指南\r\n\tpath: '/HandlingGuide',\r\n\tname: 'HandlingGuide',\r\n\tcomponent: (resolve) => require(['@/pages/guideAffairs/guide/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 帮助栏目\r\n\tpath: '/HelpCate',\r\n\tname: 'HelpCate',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/help/helpColumn/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 帮助内容\r\n\tpath: '/HelpInfo',\r\n\tname: 'HelpInfo',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/help/helpContent/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 帮助内容添加\r\n\tpath: '/AddHelpExtend_htmlInfo',\r\n\tname: 'AddHelpExtend_htmlInfo',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/help/helpContent/add.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 帮助内容编辑\r\n\tpath: '/GetSystemHelpExtend_htmlDetails',\r\n\tname: 'GetSystemHelpExtend_htmlDetails',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/help/helpContent/edit.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 办事指南分类\r\n\tpath: '/GuidanceType',\r\n\tname: 'GuidanceType',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/guide/classificationGuides/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 办事指南\r\n\tpath: '/GuidanceInfo',\r\n\tname: 'GuidanceInfo',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/guide/guideAffairs/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 办事指南添加\r\n\tpath: '/GetWorkGuideTypeDetailExtend',\r\n\tname: 'GetWorkGuideTypeDetailExtend',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/guide/guideAffairs/add.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//后台管理 办事指南编辑\r\n\tpath: '/GetWorkGuideDetailExtend',\r\n\tname: 'GetWorkGuideDetailExtend',\r\n\tcomponent: (resolve) => require(['@/pages/backStageManagement/guide/guideAffairs/edit.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//常用功能 我的审批\r\n\tpath: '/MyApproval',\r\n\tname: 'MyApproval',\r\n\tcomponent: (resolve) => require(['@/pages/commonFunction/myApproval/index.vue'], resolve)\r\n\t},\r\n\t{\r\n\t//常用功能 我的审批 处理\r\n\tpath: '/GetCertificateRecordAuditDetail',\r\n\tname: 'GetCertificateRecordAuditDetail',\r\n\tcomponent: (resolve) => require(['@/pages/commonFunction/myApproval/handle.vue'], resolve)\r\n\t},\r\n\t]\n\n\n// WEBPACK FOOTER //\n// ./src/router/map/hy.js","import Vue from 'vue';\r\nimport Router from 'vue-router';\r\nVue.use(Router);\r\n//引入store\r\nimport store from '../store/index'\r\n\r\nimport maps from './maps'\r\n\r\nlet baseRoute = [{\r\n\t\tpath: '/login',\r\n\t\tname: 'login',\r\n\t\tcomponent: (resolve) => require(['../pages/login.vue'], resolve)\r\n\t}, {\r\n\t\tpath: '/mian',\r\n\t\tname: 'main',\r\n\t\tcomponent: (resolve) => require(['../pages/main.vue'], resolve),\r\n\t\tchildren: maps\r\n\t},\r\n\t{\r\n\t\tpath: '/401',\r\n\t\tname: '401',\r\n\t\tcomponent: (resolve) => require(['../pages/common/401.vue'], resolve)\r\n\t}, {\r\n\t\tpath: '/404',\r\n\t\tname: '404',\r\n\t\tcomponent: (resolve) => require(['../pages/common/404.vue'], resolve)\r\n\t}, {\r\n\t\tpath: '/',\r\n\t\tredirect: '/login'\r\n\t},\r\n];\r\n\r\nconst router = new Router({\r\n\troutes: baseRoute\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n\twindow.document.title = '证书管理系统2.1'\r\n\tnext();\r\n});\r\n\r\nexport default router;\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","// The Vue build version to load with the `import` command\r\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\r\nimport 'element-ui/lib/theme-chalk/index.css';\r\nimport Vue from 'vue'\r\nimport App from './App'\r\nimport router from './router/index.js'\r\nimport ElementUI from 'element-ui';\r\n//富文本\r\n//import './ueditor/ueditor.config.js'\r\n//import './ueditor/ueditor.all.min.js'\r\n//import './ueditor/lang/zh-cn/zh-cn.js'\r\n//import './ueditor/ueditor.parse.min.js'\r\n\r\nimport './ueditor/ueditor.config.js'\r\nimport './ueditor/ueditor.all.js'\r\nimport './ueditor/lang/zh-cn/zh-cn.js'\r\nimport './ueditor/ueditor.parse.js'\r\n\r\n// import '../static/ueditor/ueditor.config.js'\r\n// import '../static/ueditor/ueditor.all.js'\r\n// import '../static/ueditor/lang/zh-cn/zh-cn.js'\r\n// import '../static/ueditor/ueditor.parse.js'\r\n\r\n\r\nVue.use(ElementUI);\r\n//引入store\r\nimport store from './store/index'\r\n//全局混合\r\nimport mixins from './js/mixins'\r\nVue.mixin(mixins)\r\n//公共组件\r\nrequire(\"./components/globle\");\r\nrequire(\"./js/common.js\");\r\n\r\nimport Print from 'vue-print-nb'\r\nVue.use(Print); //注册\r\n\r\nimport vuePictureViewer from './components/lib/index.js'\r\nVue.use(vuePictureViewer)\r\nVue.config.productionTip = false\r\n/* eslint-disable no-new */\r\n\r\n\r\n// Bus组件传值\r\nVue.prototype.Bus = new Vue();\r\n\r\n\r\nnew Vue({\r\n\tel: '#app',\r\n\tstore,\r\n\trouter,\r\n\tcomponents: {\r\n\t\tApp\r\n\t},\r\n\ttemplate: ''\r\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODJBQzJEMjZERTZEMTFFODlBQ0Y5NUUwOUFCMUExRTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODJBQzJEMjdERTZEMTFFODlBQ0Y5NUUwOUFCMUExRTEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFDMkQyNERFNkQxMUU4OUFDRjk1RTA5QUIxQTFFMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFDMkQyNURFNkQxMUU4OUFDRjk1RTA5QUIxQTFFMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmx9YrgAAADUSURBVHjaYszu+CfAwMCwCojNgJiVAQJ+AfFhII4F4o8MeAALEB8CYhkgLgHiP1BxkEFTgHg/EBsRMkAXiI2B+Bya3EMg3gk15B8QMyLJMUEt2w4y4CcQv8Vi+C4gjgRiHSxy/4GYDYjjYAbUA/EtqMkw8BWIbwPxMRyuB6llZYE6xQOI7dCcSQiAXPERZAAXELsA8XkG0sEPJqhJfAxkAiak2KDIAIahb8AfSgzgBOJ3ZOpnZ4Gmtg1A3AhN88QmIlCG2wcywAGItwLxQjJccAIgwABgfClqgK11dwAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-folder.png\n// module id = NLop\n// module chunks = 105","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABa0lEQVQ4T+2SPSxDURzF/+e+kthrNBiEUSLMImFhFJu1pWmLwdL3xOP1Y5NoX5uw2STEx2CiymI3CIkYbWwSS3uPPPGeohofsbnLzf3fk19Ozv9AXk7c4SDALYGE/VmzmyIUyk64ignbhoYvTqRrS4S6dU2sfwUkJOIZXugqBko2Hl5BWbZTs6wEU3kLZ81gtk11F+KmAOeuiYynDUDeI5ZmhwKPRCPqLuCkEcy2GboPcZvCa9cy5n3NG5A3jDvsFLBMIFo0cVgPi6yxpfWO+yBvCpaRqP/7API+kw67NFhRwGTeRCVYSFofiPDWtYzIe7cNQZ4o4XCEYMS11LjvFIp7hRR6BeCXQbEc+w3NxYKpxp5BWfaALBVMNdQou08d/YOCuP4+o2SOfbrGZddSo7/a2twK26qPvNLEbNHC7o/X77mYcditFU81MQ0llz/qkZ9iABOsKuHwtwtZ314PVlM8FuGGaxqpRs1+Anmw5BMC3jTvAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/envi-word.png\n// module id = ORzA\n// module chunks = 105","/**\n * 配置编译环境和线上环境之间的切换\n * \n * baseUrl: 域名地址\n * imgBaseUrl: 图片所在域名地址\n */\n\n// let attachmentBaseUrl = 'http://192.168.0.229:210'\r\n// let baseUrl = 'http://192.168.0.229:300'\n\r\n// let attachmentBaseUrl = 'http://192.168.6.102:210'\r\n// let baseUrl = 'http://192.168.6.102:210'\r\n\r\n// let attachmentBaseUrl = 'http://192.168.6.102:210'\r\n// let baseUrl = 'http://192.168.6.102:210'\n\r\n\n let baseUrl = '//api.360gcb.com'\r\n let attachmentBaseUrl = '//api.360gcb.com'\r\n\r\n\r\n// let baseUrl = 'http://192.168.6.90:3000'\r\n// let attachmentBaseUrl = 'http://192.168.6.90:3000'\r\n\r\n// let baseUrl = 'http://192.168.6.85:210'\r\n// let attachmentBaseUrl = 'http://192.168.6.85:210'\r\n\r\n//let baseUrl = 'http://192.168.6.90:3000'\r\n//let attachmentBaseUrl = 'http://192.168.6.90:3000'\r\n\n\n// let baseUrl = 'http://192.168.0.229:210'\n// let attachmentBaseUrl = 'http://192.168.0.172:210/'\n//let baseUrl = 'http://192.168.0.228:200/'\n// let baseUrl = 'http://192.168.0.229:7878/'\r\n// let baseUrl = 'http://192.168.0.229:210'\r\n\n\nif(process.env.NODE_ENV == 'development') {\n\n} else if(process.env.NODE_ENV == 'production') {\n\n}\n\nexport {\n\tbaseUrl,\n\tattachmentBaseUrl,\n}\n\n\n// WEBPACK FOOTER //\n// ./src/js/env.js","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// src/components/globle/tabs.vue","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"el-tabs\",\n {\n staticClass: \"main-tab-pane\",\n attrs: { type: \"card\", closable: \"\" },\n on: { \"tab-click\": _vm.changeTab, \"tab-remove\": _vm.removeTab },\n model: {\n value: _vm.currentPage,\n callback: function($$v) {\n _vm.currentPage = $$v\n },\n expression: \"currentPage\"\n }\n },\n _vm._l(_vm.tabs, function(item, index) {\n return _c(\"el-tab-pane\", {\n key: index,\n attrs: { label: item.label, name: item.tag }\n })\n }),\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-305825fc\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-305825fc\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/globle/tabs.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-305825fc\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./tabs.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./tabs.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./tabs.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-305825fc\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tabs.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/globle/tabs.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-305825fc\", Component.options)\n } else {\n hotAPI.reload(\"data-v-305825fc\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/globle/tabs.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/globle/childCom.vue","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 _c(\"span\", { staticClass: \"filter-txt\" }, [_vm._v(\"选择分公司\")]),\n _vm._v(\" \"),\n _c(\n \"el-select\",\n {\n attrs: { size: \"medium\", placeholder: _vm.tip },\n on: { change: _vm.chooseChildCompany },\n model: {\n value: _vm.childChoose,\n callback: function($$v) {\n _vm.childChoose = $$v\n },\n expression: \"childChoose\"\n }\n },\n [\n _c(\"el-option\", { attrs: { label: \"请选择分公司\" } }),\n _vm._v(\" \"),\n _vm._l(_vm.childCompany, function(item, key) {\n return _c(\"el-option\", {\n key: key,\n attrs: { label: item.com_name, value: item.com_id }\n })\n })\n ],\n 2\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-3dbe7a7a\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3dbe7a7a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/globle/childCom.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-3dbe7a7a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./childCom.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./childCom.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./childCom.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3dbe7a7a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./childCom.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/globle/childCom.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-3dbe7a7a\", Component.options)\n } else {\n hotAPI.reload(\"data-v-3dbe7a7a\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/globle/childCom.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/globle/warns.vue","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 _c(\"span\", { staticClass: \"filter-txt\" }, [_vm._v(\"预警信息\")]),\n _vm._v(\" \"),\n _c(\n \"el-select\",\n {\n attrs: { size: \"medium\", placeholder: _vm.tip },\n on: { change: _vm.change },\n model: {\n value: _vm.warn,\n callback: function($$v) {\n _vm.warn = $$v\n },\n expression: \"warn\"\n }\n },\n [\n _c(\"el-option\", { attrs: { label: \"选择预警信息\" } }),\n _vm._v(\" \"),\n _vm._l(_vm.warns, function(v, k) {\n return _c(\"el-option\", {\n key: k,\n attrs: { label: v.value, value: v.warning }\n })\n })\n ],\n 2\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-3dfdfec2\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3dfdfec2\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/globle/warns.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-3dfdfec2\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./warns.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./warns.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./warns.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3dfdfec2\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./warns.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/globle/warns.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-3dfdfec2\", Component.options)\n } else {\n hotAPI.reload(\"data-v-3dfdfec2\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/globle/warns.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\r\n\r\n//list页面公共table\r\nimport listTable from './listTable'\r\nVue.component('listTable', listTable)\r\n//tabs标签\r\nimport tabs from './tabs'\r\nVue.component('tabs', tabs)\r\n//子公司选择框\r\nimport childCom from './childCom'\r\nVue.component('childCom', childCom)\r\n//预警选择框\r\nimport warns from './warns'\r\nVue.component('warns', warns)\r\n//图片浏览组件\r\nimport vuePictureViewer from '../lib/index.js'\r\nVue.use(vuePictureViewer)\n\n\n// WEBPACK FOOTER //\n// ./src/components/globle/index.js","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// src/components/sub/listCz.vue","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 _vm._l(_vm.param.buttons, function(item, key) {\n return (item.authority === undefined\n ? true\n : _vm.authority[item.authority])\n ? _c(\n \"el-button\",\n {\n key: key,\n attrs: { size: _vm.size },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.click(item)\n }\n }\n },\n [_vm._v(_vm._s(item.txt))]\n )\n : _vm._e()\n }),\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-a7bdbf18\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a7bdbf18\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/sub/listCz.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a7bdbf18\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./listCz.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listCz.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listCz.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a7bdbf18\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./listCz.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/sub/listCz.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-a7bdbf18\", Component.options)\n } else {\n hotAPI.reload(\"data-v-a7bdbf18\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/sub/listCz.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/tan/tanEditComAddress.vue","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"修改通讯录\",\n visible: _vm.visible,\n width: \"480px\",\n \"show-close\": \"\",\n \"close-on-click-modal\": \"\",\n \"append-to-body\": \"\",\n \"before-close\": _vm.handleClose\n },\n on: {\n \"update:visible\": function($event) {\n _vm.visible = $event\n }\n }\n },\n [\n _c(\n \"el-form\",\n {\n ref: \"iptDatas\",\n attrs: { model: _vm.iptDatas, \"label-width\": \"80px\" }\n },\n [\n _vm._l(_vm.iptDatas, function(item, key) {\n return _c(\n \"el-form-item\",\n { key: key, attrs: { label: _vm.titles[key] } },\n [\n _c(\"el-input\", {\n staticStyle: { width: \"290px\" },\n attrs: { disabled: !_vm.isDisable[key] },\n model: {\n value: _vm.iptDatas[key],\n callback: function($$v) {\n _vm.$set(_vm.iptDatas, key, $$v)\n },\n expression: \"iptDatas[key]\"\n }\n })\n ],\n 1\n )\n }),\n _vm._v(\" \"),\n _c(\n \"el-form-item\",\n [\n _c(\n \"el-button\",\n {\n staticStyle: { \"margin-left\": \"50px\" },\n on: {\n click: function($event) {\n _vm.visible = false\n }\n }\n },\n [_vm._v(\"取 消\")]\n ),\n _vm._v(\" \"),\n _c(\n \"el-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.alter } },\n [_vm._v(\"确 定\")]\n )\n ],\n 1\n )\n ],\n 2\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-31a757e0\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-31a757e0\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/tan/tanEditComAddress.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-31a757e0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./tanEditComAddress.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./tanEditComAddress.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./tanEditComAddress.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-31a757e0\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tanEditComAddress.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/tan/tanEditComAddress.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-31a757e0\", Component.options)\n } else {\n hotAPI.reload(\"data-v-31a757e0\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/tan/tanEditComAddress.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\r\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/sub/listCaoZuo.vue","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.buttons, function(item, key) {\n return _vm.pan(item)\n ? _c(\n \"el-button\",\n {\n key: key,\n attrs: { size: _vm.size },\n on: {\n click: function($event) {\n return _vm.click(item.val, item)\n }\n }\n },\n [_vm._v(_vm._s(item.txt))]\n )\n : _vm._e()\n }),\n _vm._v(\" \"),\n _vm.tanComAddressShow\n ? _c(\"tanEditComAddress\", {\n attrs: {\n authority: _vm.authority,\n tanData: _vm.tanComAddressData,\n ishow: _vm.tanComAddressShow\n },\n on: {\n edit: _vm.tanEdit,\n \"update:ishow\": function($event) {\n _vm.tanComAddressShow = $event\n }\n }\n })\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-cc331300\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-cc331300\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/sub/listCaoZuo.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-cc331300\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./listCaoZuo.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listCaoZuo.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listCaoZuo.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-cc331300\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./listCaoZuo.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/sub/listCaoZuo.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-cc331300\", Component.options)\n } else {\n hotAPI.reload(\"data-v-cc331300\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/sub/listCaoZuo.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\r\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/sub/listCaoZuoO.vue","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 _vm._l(_vm.param.buttons, function(item, key) {\n return _vm.pan(item)\n ? _c(\n \"el-button\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.ishow[key],\n expression: \"ishow[key]\"\n }\n ],\n key: _vm.setState(item, key),\n staticStyle: { height: \"28px\" },\n attrs: { size: _vm.size },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.click(item)\n }\n }\n },\n [_vm._v(_vm._s(item.txt))]\n )\n : _vm._e()\n }),\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-b6cea702\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b6cea702\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/sub/listCaoZuoO.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b6cea702\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./listCaoZuoO.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listCaoZuoO.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listCaoZuoO.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6cea702\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./listCaoZuoO.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/sub/listCaoZuoO.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-b6cea702\", Component.options)\n } else {\n hotAPI.reload(\"data-v-b6cea702\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/sub/listCaoZuoO.vue\n// module id = null\n// module chunks = ","\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/globle/listTable.vue","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticStyle: { \"min-width\": \"1100\" } }, [\n _c(\n \"div\",\n { staticClass: \"table-content \" },\n [\n _c(\n \"el-table\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.loading,\n expression: \"loading\"\n }\n ],\n ref: \"tableList\",\n staticClass: \"box-card\",\n staticStyle: { width: \"100%\" },\n attrs: {\n \"span-method\": _vm.objectSpanMethod,\n \"show-overflow-tooltip\": _vm.showTootip,\n \"element-loading-text\": \"数据加载中...\",\n \"element-loading-spinner\": \"el-icon-loading\",\n \"element-loading-background\": \"rgba(0, 0, 0, 0.6)\",\n border: _vm.showBorder,\n size: _vm.size,\n data: _vm.tableData,\n stripe: \"\",\n \"max-height\": _vm.height\n },\n on: { \"row-click\": _vm.rowClick, \"selection-change\": _vm.wselect }\n },\n [\n _vm.showSelect\n ? _c(\"el-table-column\", {\n attrs: { type: \"selection\", width: \"50\", label: \"选择\" }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showXuhao\n ? _c(\"el-table-column\", {\n attrs: { type: \"index\", width: \"90\", label: \"序号\" },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(scope) {\n return [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(\n (_vm.currentPage - 1) * _vm.num +\n scope.$index +\n 1\n ) +\n \"\\n\\t\\t\\t\\t\"\n )\n ]\n }\n }\n ],\n null,\n false,\n 178647585\n )\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.tableHead, function(item, key) {\n return _c(\"el-table-column\", {\n key: key,\n attrs: {\n sortable: item.sort,\n prop: item.field,\n label: item.title,\n width: item.width ? item.width : \"auto\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(scope) {\n return [\n item.property == \"button\"\n ? _c(\n \"el-button\",\n {\n attrs: { size: _vm.size },\n on: {\n click: function($event) {\n return _vm.click(scope)\n }\n }\n },\n [_vm._v(_vm._s(item[item.property]))]\n )\n : item.property == \"input\"\n ? _c(\"el-input\", {\n attrs: { size: _vm.size },\n model: {\n value: scope.row[scope.column.property],\n callback: function($$v) {\n _vm.$set(\n scope.row,\n scope.column.property,\n $$v\n )\n },\n expression: \"scope.row[scope.column.property]\"\n }\n })\n : item.property == \"textarea\"\n ? _c(\"el-input\", {\n attrs: { size: _vm.size, type: \"textarea\" },\n model: {\n value: scope.row[scope.column.property],\n callback: function($$v) {\n _vm.$set(\n scope.row,\n scope.column.property,\n $$v\n )\n },\n expression: \"scope.row[scope.column.property]\"\n }\n })\n : item.property == \"date\"\n ? _c(\"el-date-picker\", {\n style: _vm.datePickerStyle,\n attrs: {\n size: _vm.size,\n type: \"date\",\n placeholder: \"选择日期\"\n },\n model: {\n value: scope.row[scope.column.property],\n callback: function($$v) {\n _vm.$set(\n scope.row,\n scope.column.property,\n $$v\n )\n },\n expression: \"scope.row[scope.column.property]\"\n }\n })\n : item.property == \"wgtable\"\n ? _c(\"wg-table\", { attrs: { param: scope.row } })\n : \"templet\" in item\n ? _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(item.templet(scope.row))\n }\n })\n : _c(\"span\", [\n _vm._v(_vm._s(scope.row[scope.column.property]))\n ])\n ]\n }\n }\n ],\n null,\n true\n )\n })\n }),\n _vm._v(\" \"),\n _vm.showCaozuo\n ? _c(\"el-table-column\", {\n attrs: {\n fixed: \"right\",\n label: \"操作\",\n width: _vm.caozuoWidth\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(scope) {\n return [\n _vm.caozuoArr\n ? _c(\"listCz\", {\n attrs: {\n childrenCom: _vm.childrenCom,\n type: _vm.type,\n row: scope.row,\n authority: _vm.authority,\n param: _vm.caozuoArr[scope.$index]\n }\n })\n : _vm.otherCaozuo\n ? _c(\"listCaoZuoO\", {\n attrs: {\n childrenCom: _vm.childrenCom,\n type: _vm.type,\n unlock: _vm.unlock,\n row: scope.row,\n authority: _vm.authority,\n param: _vm.otherCaozuo\n }\n })\n : _c(\"list-cao-zuo\", {\n attrs: {\n childrenCom: _vm.childrenCom,\n type: _vm.type,\n authority: _vm.authority,\n row: scope.row\n },\n on: {\n shuaXin: function($event) {\n return _vm.changepage(_vm.currentPage)\n },\n click: _vm.caozuo\n }\n })\n ]\n }\n }\n ],\n null,\n false,\n 2527085094\n )\n })\n : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.showPage\n ? _c(\n \"div\",\n { staticClass: \"page_list\" },\n [\n _c(\"el-pagination\", {\n attrs: {\n \"current-page\": _vm.currentPage,\n background: \"\",\n layout: \" prev, pager, next, jumper, ->, total, sizes,slot\",\n total: _vm.total\n },\n on: {\n \"update:currentPage\": function($event) {\n _vm.currentPage = $event\n },\n \"update:current-page\": function($event) {\n _vm.currentPage = $event\n },\n \"current-change\": _vm.changepage,\n \"size-change\": _vm.changepagesize\n }\n })\n ],\n 1\n )\n : _vm._e()\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-5a1bc942\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5a1bc942\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/globle/listTable.vue\n// module id = null\n// module chunks = ","var disposed = false\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listTable.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listTable.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5a1bc942\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./listTable.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/globle/listTable.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5a1bc942\", Component.options)\n } else {\n hotAPI.reload(\"data-v-5a1bc942\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/globle/listTable.vue\n// module id = null\n// module chunks = ","// style-loader: Adds some css to the DOM by adding a \r\n *\r\n * \r\n *\r\n * \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 * xxx\r\n *\r\n * \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 * xxx\r\n *\r\n * \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 * \r\n *\r\n * \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 * \r\n *\r\n * \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 * \r\n *\r\n * \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 *
\r\n *\r\n * \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 *
\r\n *\r\n * \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 *
\r\n *\r\n * \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 *
\r\n * \r\n *
\r\n *\r\n * \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 *
\r\n * \r\n *
\r\n *\r\n * \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 *
\r\n *\r\n * \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 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 *
\r\n *\r\n * \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 *
\r\n *\r\n * \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 *
\r\n * \r\n *
\r\n *
\r\n *
\r\n *
\r\n *\r\n * \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 *
\r\n * \r\n *
\r\n *
\r\n *
\r\n *
\r\n *\r\n * \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 *
xxxx
\r\n *\r\n * \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 *
\r\n *\r\n * \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 ? ' ' : '
'\r\n};\r\nvar fillCharReg = new RegExp(domUtils.fillChar, 'g');\n\n// core/Range.js\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 * \r\n * \r\n * xx[xxx]x\r\n *\r\n * \r\n * \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 * \r\n * \r\n * xx[xxx]x\r\n *\r\n * \r\n * \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 * \r\n * \r\n * xx[xxx]x\r\n *\r\n * \r\n * \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 * xxxxxxxxxxxxx[xxx]\r\n *\r\n * \r\n * ```\r\n * @example\r\n * ```html\r\n * \r\n * xxx[xx]x\r\n *\r\n * \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 * xxxxxxx[xxxx]\r\n *\r\n * \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 * [xxxxxxx]xxxx\r\n *\r\n * \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 * xxxxx[xx]xxxx\r\n *\r\n * \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 * xxxxx[xx]xxxx\r\n *\r\n * \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 * xxxxx[xx]xxxx\r\n *\r\n * \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 * xxxxx[xx]xxxx\r\n *\r\n * \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 * xxxxx[xx]xxxx\r\n *\r\n * \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 * xxxx[xxxxx] => xxxx[xxxxx]\r\n * ```\r\n *\r\n * @example\r\n * ```html\r\n * \r\n * x[xx]xxx\r\n *\r\n * \r\n * ```\r\n *\r\n * @example\r\n * ```html\r\n * [xxxxxxxxxxx] => [xxxxxxxxxxx]\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 * xxxx[xxx]xxxxxx\r\n * \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 * \r\n *\r\n * \r\n * xxxxxxxxx[xxx]xxxxxxxx\r\n *\r\n * \r\n *\r\n * \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 * \r\n *\r\n * \r\n * xxxxxxxx[x]xxxxxxxxxxx\r\n *\r\n * \r\n *\r\n * \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 * xxx[xxxxx]xxx\r\n *\r\n * \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 * xxx[xxxxx]xxx\r\n *\r\n * \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 *

xxxx[xxxx]x

==> range.applyInlineStyle(\"strong\") ==>

xxxx[xxxx]x

\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 *

xxxx[xxxx]x

\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 *

xxxx[xxxx]x

\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[xxxxyyyzz]z => range.removeInlineStyle([\"em\"]) => xx[xxxxyyyzz]z\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 //使用|x固定住光标\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 //|xxxx\r\n //xxxx|xxxx\r\n //xxxx|\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 * \r\n *

\r\n * aaaa\r\n * \r\n * \r\n * bbbb\r\n * \r\n * \r\n *

\r\n *\r\n * \r\n * \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 * \r\n *

\r\n * aaaa\r\n * \r\n * \r\n * bbbb\r\n * \r\n * \r\n *

\r\n *\r\n * \r\n * \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\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 * 遍历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 * \r\n *\r\n * \r\n * \r\n * \r\n * \r\n * \r\n *\r\n * \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})();\n\n// core/Selection.js\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下x[xx] 闭合后 x|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})();\n\n// core/Editor.js\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 ? '' : '') +\r\n '' +\r\n '' +\r\n ( options.iframeCssUrl ? '' : '' ) +\r\n (options.initialStyle ? '' : '') +\r\n '' +\r\n '';\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 = '

' + (browser.ie ? '' : '
') + '

';\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内容:

123456

\r\n * var content = editor.getContent(); //返回值:

123456

\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(); //返回格式大致是: ......\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 ? '' : '');\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 '' + (me.options.charset ? '' : '')\r\n + (headHtmlForIE9 || me.document.getElementsByTagName('head')[0].innerHTML) + headHtml.join('\\n') + ''\r\n + '' + me.getContent(null, null, true) + '';\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内容:

1

2

\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)[^>]*>(| )<\\/\\1>/gi, '\\n')\r\n .replace(//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内容:

1

2

\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('

test

');\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 * //假设设置前的编辑器内容是

old text

\r\n * editor.setContent('

new text

', true); //插入的结果是

old text

new text

\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 = '

' + (browser.ie ? ' ' : '
') + '

' + 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 具体命令的使用请参考命令列表\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 具体命令的使用请参考命令列表\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 具体命令的使用请参考命令列表\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 = '

' + (ie ? '' : '
') + '

';\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 = '

' + cont + '

';\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 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内容

132

\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内容

132

\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\n\n// core/Editor.defaultoptions.js\n//维护编辑器一下默认的不在插件中的配置项\nUE.Editor.defaultOptions = function(editor){\n\n var _url = editor.options.UEDITOR_HOME_URL;\n return {\n isShow: true,\n initialContent: '',\n initialStyle:'',\n autoClearinitialContent: false,\n iframeCssUrl: _url + 'themes/iframe.css',\n textarea: 'editorValue',\n focus: false,\n focusInEnd: true,\n autoClearEmptyNode: true,\n fullscreen: false,\n readonly: false,\n zIndex: 999,\n imagePopup: true,\n enterTag: 'p',\n customDomain: false,\n lang: 'zh-cn',\n langPath: _url + 'lang/',\n theme: 'default',\n themePath: _url + 'themes/',\n allHtmlEnabled: false,\n scaleEnabled: false,\n tableNativeEditInFF: false,\n autoSyncData : true,\n fileNameFormat: '{time}{rand:6}'\n }\n};\n\n// core/loadconfig.js\n(function(){\n\n UE.Editor.prototype.loadServerConfig = function(){\n var me = this;\n setTimeout(function(){\n try{\n me.options.imageUrl && me.setOpt('serverUrl', me.options.imageUrl.replace(/^(.*[\\/]).+([\\.].+)$/, '$1controller$2'));\n\n var configUrl = me.getActionUrl('config'),\n isJsonp = utils.isCrossDomainUrl(configUrl);\n\n /* 发出ajax请求 */\n me._serverConfigLoaded = false;\n\n configUrl && UE.ajax.request(configUrl,{\n 'method': 'GET',\n 'dataType': isJsonp ? 'jsonp':'',\n 'onsuccess':function(r){\n try {\n var config = isJsonp ? r:eval(\"(\"+r.responseText+\")\");\n utils.extend(me.options, config);\n me.fireEvent('serverConfigLoaded');\n me._serverConfigLoaded = true;\n } catch (e) {\n showErrorMsg(me.getLang('loadconfigFormatError'));\n }\n },\n 'onerror':function(){\n showErrorMsg(me.getLang('loadconfigHttpError'));\n }\n });\n } catch(e){\n showErrorMsg(me.getLang('loadconfigError'));\n }\n });\n\n function showErrorMsg(msg) {\n console && console.error(msg);\n //me.fireEvent('showMessage', {\n // 'title': msg,\n // 'type': 'error'\n //});\n }\n };\n\n UE.Editor.prototype.isServerConfigLoaded = function(){\n var me = this;\n return me._serverConfigLoaded || false;\n };\n\n UE.Editor.prototype.afterConfigReady = function(handler){\n if (!handler || !utils.isFunction(handler)) return;\n var me = this;\n var readyHandler = function(){\n handler.apply(me, arguments);\n me.removeListener('serverConfigLoaded', readyHandler);\n };\n\n if (me.isServerConfigLoaded()) {\n handler.call(me, 'serverConfigLoaded');\n } else {\n me.addListener('serverConfigLoaded', readyHandler);\n }\n };\n\n})();\n\n\n// core/ajax.js\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\n\n// core/filterword.js\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( //ig, \"\" )\r\n //转换图片\r\n .replace(/]*>[\\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 '';\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( /

]*class=\"?MsoHeading\"?[^>]*>(.*?)<\\/p>/gi, \"

$1

\" )\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(!/]/.test(html)) {\n return UE.htmlparser(html).children[0]\n } else {\n return new uNode({\n type:'element',\n children:[],\n tagName:html\n })\n }\n };\n uNode.createText = function (data,noTrans) {\n return new UE.uNode({\n type:'text',\n 'data':noTrans ? data : utils.unhtml(data || '')\n })\n };\n function nodeToHtml(node, arr, formatter, current) {\n switch (node.type) {\n case 'root':\n for (var i = 0, ci; ci = node.children[i++];) {\n //插入新行\n if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) {\n insertLine(arr, current, true);\n insertIndent(arr, current)\n }\n nodeToHtml(ci, arr, formatter, current)\n }\n break;\n case 'text':\n isText(node, arr);\n break;\n case 'element':\n isElement(node, arr, formatter, current);\n break;\n case 'comment':\n isComment(node, arr, formatter);\n }\n return arr;\n }\n\n function isText(node, arr) {\n if(node.parentNode.tagName == 'pre'){\n //源码模式下输入html标签,不能做转换处理,直接输出\n arr.push(node.data)\n }else{\n arr.push(notTransTagName[node.parentNode.tagName] ? utils.html(node.data) : node.data.replace(/[ ]{2}/g,'  '))\n }\n\n }\n\n function isElement(node, arr, formatter, current) {\n var attrhtml = '';\n if (node.attrs) {\n attrhtml = [];\n var attrs = node.attrs;\n for (var a in attrs) {\n //这里就针对\n //

'

\n //这里边的\\\"做转换,要不用innerHTML直接被截断了,属性src\n //有可能做的不够\n attrhtml.push(a + (attrs[a] !== undefined ? '=\"' + (notTransAttrs[a] ? utils.html(attrs[a]).replace(/[\"]/g, function (a) {\n return '"'\n }) : utils.unhtml(attrs[a])) + '\"' : ''))\n }\n attrhtml = attrhtml.join(' ');\n }\n arr.push('<' + node.tagName +\n (attrhtml ? ' ' + attrhtml : '') +\n (dtd.$empty[node.tagName] ? '\\/' : '' ) + '>'\n );\n //插入新行\n if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') {\n if(node.children && node.children.length){\n current = insertLine(arr, current, true);\n insertIndent(arr, current)\n }\n\n }\n if (node.children && node.children.length) {\n for (var i = 0, ci; ci = node.children[i++];) {\n if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) {\n insertLine(arr, current);\n insertIndent(arr, current)\n }\n nodeToHtml(ci, arr, formatter, current)\n }\n }\n if (!dtd.$empty[node.tagName]) {\n if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') {\n\n if(node.children && node.children.length){\n current = insertLine(arr, current);\n insertIndent(arr, current)\n }\n }\n arr.push('<\\/' + node.tagName + '>');\n }\n\n }\n\n function isComment(node, arr) {\n arr.push('');\n }\n\n function getNodeById(root, id) {\n var node;\n if (root.type == 'element' && root.getAttr('id') == id) {\n return root;\n }\n if (root.children && root.children.length) {\n for (var i = 0, ci; ci = root.children[i++];) {\n if (node = getNodeById(ci, id)) {\n return node;\n }\n }\n }\n }\n\n function getNodesByTagName(node, tagName, arr) {\n if (node.type == 'element' && node.tagName == tagName) {\n arr.push(node);\n }\n if (node.children && node.children.length) {\n for (var i = 0, ci; ci = node.children[i++];) {\n getNodesByTagName(ci, tagName, arr)\n }\n }\n }\n function nodeTraversal(root,fn){\n if(root.children && root.children.length){\n for(var i= 0,ci;ci=root.children[i];){\n nodeTraversal(ci,fn);\n //ci被替换的情况,这里就不再走 fn了\n if(ci.parentNode ){\n if(ci.children && ci.children.length){\n fn(ci)\n }\n if(ci.parentNode) i++\n }\n }\n }else{\n fn(root)\n }\n\n }\n uNode.prototype = {\n\n /**\n * 当前节点对象,转换成html文本\n * @method toHtml\n * @return { String } 返回转换后的html字符串\n * @example\n * ```javascript\n * node.toHtml();\n * ```\n */\n\n /**\n * 当前节点对象,转换成html文本\n * @method toHtml\n * @param { Boolean } formatter 是否格式化返回值\n * @return { String } 返回转换后的html字符串\n * @example\n * ```javascript\n * node.toHtml( true );\n * ```\n */\n toHtml:function (formatter) {\n var arr = [];\n nodeToHtml(this, arr, formatter, 0);\n return arr.join('')\n },\n\n /**\n * 获取节点的html内容\n * @method innerHTML\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\n * @return { String } 返回节点的html内容\n * @example\n * ```javascript\n * var htmlstr = node.innerHTML();\n * ```\n */\n\n /**\n * 设置节点的html内容\n * @method innerHTML\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\n * @param { String } htmlstr 传入要设置的html内容\n * @return { UE.uNode } 返回节点本身\n * @example\n * ```javascript\n * node.innerHTML('text');\n * ```\n */\n innerHTML:function (htmlstr) {\n if (this.type != 'element' || dtd.$empty[this.tagName]) {\n return this;\n }\n if (utils.isString(htmlstr)) {\n if(this.children){\n for (var i = 0, ci; ci = this.children[i++];) {\n ci.parentNode = null;\n }\n }\n this.children = [];\n var tmpRoot = UE.htmlparser(htmlstr);\n for (var i = 0, ci; ci = tmpRoot.children[i++];) {\n this.children.push(ci);\n ci.parentNode = this;\n }\n return this;\n } else {\n var tmpRoot = new UE.uNode({\n type:'root',\n children:this.children\n });\n return tmpRoot.toHtml();\n }\n },\n\n /**\n * 获取节点的纯文本内容\n * @method innerText\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\n * @return { String } 返回节点的存文本内容\n * @example\n * ```javascript\n * var textStr = node.innerText();\n * ```\n */\n\n /**\n * 设置节点的纯文本内容\n * @method innerText\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\n * @param { String } textStr 传入要设置的文本内容\n * @return { UE.uNode } 返回节点本身\n * @example\n * ```javascript\n * node.innerText('text');\n * ```\n */\n innerText:function (textStr,noTrans) {\n if (this.type != 'element' || dtd.$empty[this.tagName]) {\n return this;\n }\n if (textStr) {\n if(this.children){\n for (var i = 0, ci; ci = this.children[i++];) {\n ci.parentNode = null;\n }\n }\n this.children = [];\n this.appendChild(uNode.createText(textStr,noTrans));\n return this;\n } else {\n return this.toHtml().replace(/<[^>]+>/g, '');\n }\n },\n\n /**\n * 获取当前对象的data属性\n * @method getData\n * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性\n * @example\n * ```javascript\n * node.getData();\n * ```\n */\n getData:function () {\n if (this.type == 'element')\n return '';\n return this.data\n },\n\n /**\n * 获取当前节点下的第一个子节点\n * @method firstChild\n * @return { UE.uNode } 返回第一个子节点\n * @example\n * ```javascript\n * node.firstChild(); //返回第一个子节点\n * ```\n */\n firstChild:function () {\n// if (this.type != 'element' || dtd.$empty[this.tagName]) {\n// return this;\n// }\n return this.children ? this.children[0] : null;\n },\n\n /**\n * 获取当前节点下的最后一个子节点\n * @method lastChild\n * @return { UE.uNode } 返回最后一个子节点\n * @example\n * ```javascript\n * node.lastChild(); //返回最后一个子节点\n * ```\n */\n lastChild:function () {\n// if (this.type != 'element' || dtd.$empty[this.tagName] ) {\n// return this;\n// }\n return this.children ? this.children[this.children.length - 1] : null;\n },\n\n /**\n * 获取和当前节点有相同父亲节点的前一个节点\n * @method previousSibling\n * @return { UE.uNode } 返回前一个节点\n * @example\n * ```javascript\n * node.children[2].previousSibling(); //返回子节点node.children[1]\n * ```\n */\n previousSibling : function(){\n var parent = this.parentNode;\n for (var i = 0, ci; ci = parent.children[i]; i++) {\n if (ci === this) {\n return i == 0 ? null : parent.children[i-1];\n }\n }\n\n },\n\n /**\n * 获取和当前节点有相同父亲节点的后一个节点\n * @method nextSibling\n * @return { UE.uNode } 返回后一个节点,找不到返回null\n * @example\n * ```javascript\n * node.children[2].nextSibling(); //如果有,返回子节点node.children[3]\n * ```\n */\n nextSibling : function(){\n var parent = this.parentNode;\n for (var i = 0, ci; ci = parent.children[i++];) {\n if (ci === this) {\n return parent.children[i];\n }\n }\n },\n\n /**\n * 用新的节点替换当前节点\n * @method replaceChild\n * @param { UE.uNode } target 要替换成该节点参数\n * @param { UE.uNode } source 要被替换掉的节点\n * @return { UE.uNode } 返回替换之后的节点对象\n * @example\n * ```javascript\n * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点\n * ```\n */\n replaceChild:function (target, source) {\n if (this.children) {\n if(target.parentNode){\n target.parentNode.removeChild(target);\n }\n for (var i = 0, ci; ci = this.children[i]; i++) {\n if (ci === source) {\n this.children.splice(i, 1, target);\n source.parentNode = null;\n target.parentNode = this;\n return target;\n }\n }\n }\n },\n\n /**\n * 在节点的子节点列表最后位置插入一个节点\n * @method appendChild\n * @param { UE.uNode } node 要插入的节点\n * @return { UE.uNode } 返回刚插入的子节点\n * @example\n * ```javascript\n * node.appendChild( newNode ); //在node内插入子节点newNode\n * ```\n */\n appendChild:function (node) {\n if (this.type == 'root' || (this.type == 'element' && !dtd.$empty[this.tagName])) {\n if (!this.children) {\n this.children = []\n }\n if(node.parentNode){\n node.parentNode.removeChild(node);\n }\n for (var i = 0, ci; ci = this.children[i]; i++) {\n if (ci === node) {\n this.children.splice(i, 1);\n break;\n }\n }\n this.children.push(node);\n node.parentNode = this;\n return node;\n }\n\n\n },\n\n /**\n * 在传入节点的前面插入一个节点\n * @method insertBefore\n * @param { UE.uNode } target 要插入的节点\n * @param { UE.uNode } source 在该参数节点前面插入\n * @return { UE.uNode } 返回刚插入的子节点\n * @example\n * ```javascript\n * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode\n * ```\n */\n insertBefore:function (target, source) {\n if (this.children) {\n if(target.parentNode){\n target.parentNode.removeChild(target);\n }\n for (var i = 0, ci; ci = this.children[i]; i++) {\n if (ci === source) {\n this.children.splice(i, 0, target);\n target.parentNode = this;\n return target;\n }\n }\n\n }\n },\n\n /**\n * 在传入节点的后面插入一个节点\n * @method insertAfter\n * @param { UE.uNode } target 要插入的节点\n * @param { UE.uNode } source 在该参数节点后面插入\n * @return { UE.uNode } 返回刚插入的子节点\n * @example\n * ```javascript\n * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode\n * ```\n */\n insertAfter:function (target, source) {\n if (this.children) {\n if(target.parentNode){\n target.parentNode.removeChild(target);\n }\n for (var i = 0, ci; ci = this.children[i]; i++) {\n if (ci === source) {\n this.children.splice(i + 1, 0, target);\n target.parentNode = this;\n return target;\n }\n\n }\n }\n },\n\n /**\n * 从当前节点的子节点列表中,移除节点\n * @method removeChild\n * @param { UE.uNode } node 要移除的节点引用\n * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置\n * @return { * } 返回刚移除的子节点\n * @example\n * ```javascript\n * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置\n * ```\n */\n removeChild:function (node,keepChildren) {\n if (this.children) {\n for (var i = 0, ci; ci = this.children[i]; i++) {\n if (ci === node) {\n this.children.splice(i, 1);\n ci.parentNode = null;\n if(keepChildren && ci.children && ci.children.length){\n for(var j= 0,cj;cj=ci.children[j];j++){\n this.children.splice(i+j,0,cj);\n cj.parentNode = this;\n\n }\n }\n return ci;\n }\n }\n }\n },\n\n /**\n * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值\n * @method getAttr\n * @param { String } attrName 要获取的属性名称\n * @return { * } 返回attrs对象下的属性值\n * @example\n * ```javascript\n * node.getAttr('title');\n * ```\n */\n getAttr:function (attrName) {\n return this.attrs && this.attrs[attrName.toLowerCase()]\n },\n\n /**\n * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值\n * @method setAttr\n * @param { String } attrName 要设置的属性名称\n * @param { * } attrVal 要设置的属性值,类型视设置的属性而定\n * @return { * } 返回attrs对象下的属性值\n * @example\n * ```javascript\n * node.setAttr('title','标题');\n * ```\n */\n setAttr:function (attrName, attrVal) {\n if (!attrName) {\n delete this.attrs;\n return;\n }\n if(!this.attrs){\n this.attrs = {};\n }\n if (utils.isObject(attrName)) {\n for (var a in attrName) {\n if (!attrName[a]) {\n delete this.attrs[a]\n } else {\n this.attrs[a.toLowerCase()] = attrName[a];\n }\n }\n } else {\n if (!attrVal) {\n delete this.attrs[attrName]\n } else {\n this.attrs[attrName.toLowerCase()] = attrVal;\n }\n\n }\n },\n\n /**\n * 获取当前节点在父节点下的位置索引\n * @method getIndex\n * @return { Number } 返回索引数值,如果没有父节点,返回-1\n * @example\n * ```javascript\n * node.getIndex();\n * ```\n */\n getIndex:function(){\n var parent = this.parentNode;\n for(var i= 0,ci;ci=parent.children[i];i++){\n if(ci === this){\n return i;\n }\n }\n return -1;\n },\n\n /**\n * 在当前节点下,根据id查找节点\n * @method getNodeById\n * @param { String } id 要查找的id\n * @return { UE.uNode } 返回找到的节点\n * @example\n * ```javascript\n * node.getNodeById('textId');\n * ```\n */\n getNodeById:function (id) {\n var node;\n if (this.children && this.children.length) {\n for (var i = 0, ci; ci = this.children[i++];) {\n if (node = getNodeById(ci, id)) {\n return node;\n }\n }\n }\n },\n\n /**\n * 在当前节点下,根据元素名称查找节点列表\n * @method getNodesByTagName\n * @param { String } tagNames 要查找的元素名称\n * @return { Array } 返回找到的节点列表\n * @example\n * ```javascript\n * node.getNodesByTagName('span');\n * ```\n */\n getNodesByTagName:function (tagNames) {\n tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, ' ').split(' ');\n var arr = [], me = this;\n utils.each(tagNames, function (tagName) {\n if (me.children && me.children.length) {\n for (var i = 0, ci; ci = me.children[i++];) {\n getNodesByTagName(ci, tagName, arr)\n }\n }\n });\n return arr;\n },\n\n /**\n * 根据样式名称,获取节点的样式值\n * @method getStyle\n * @param { String } name 要获取的样式名称\n * @return { String } 返回样式值\n * @example\n * ```javascript\n * node.getStyle('font-size');\n * ```\n */\n getStyle:function (name) {\n var cssStyle = this.getAttr('style');\n if (!cssStyle) {\n return ''\n }\n var reg = new RegExp('(^|;)\\\\s*' + name + ':([^;]+)','i');\n var match = cssStyle.match(reg);\n if (match && match[0]) {\n return match[2]\n }\n return '';\n },\n\n /**\n * 给节点设置样式\n * @method setStyle\n * @param { String } name 要设置的的样式名称\n * @param { String } val 要设置的的样值\n * @example\n * ```javascript\n * node.setStyle('font-size', '12px');\n * ```\n */\n setStyle:function (name, val) {\n function exec(name, val) {\n var reg = new RegExp('(^|;)\\\\s*' + name + ':([^;]+;?)', 'gi');\n cssStyle = cssStyle.replace(reg, '$1');\n if (val) {\n cssStyle = name + ':' + utils.unhtml(val) + ';' + cssStyle\n }\n\n }\n\n var cssStyle = this.getAttr('style');\n if (!cssStyle) {\n cssStyle = '';\n }\n if (utils.isObject(name)) {\n for (var a in name) {\n exec(a, name[a])\n }\n } else {\n exec(name, val)\n }\n this.setAttr('style', utils.trim(cssStyle))\n },\n\n /**\n * 传入一个函数,递归遍历当前节点下的所有节点\n * @method traversal\n * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数\n * @example\n * ```javascript\n * traversal(node, function(){\n * console.log(node.type);\n * });\n * ```\n */\n traversal:function(fn){\n if(this.children && this.children.length){\n nodeTraversal(this,fn);\n }\n return this;\n }\n }\n})();\n\n\n// core/htmlparser.js\n/**\n * html字符串转换成uNode节点\n * @file\n * @module UE\n * @since 1.2.6.1\n */\n\n/**\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\n * @unfile\n * @module UE\n */\n\n/**\n * html字符串转换成uNode节点的静态方法\n * @method htmlparser\n * @param { String } htmlstr 要转换的html代码\n * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\\n\\r\\t等空白字符\n * @return { uNode } 给定的html片段转换形成的uNode对象\n * @example\n * ```javascript\n * var root = UE.htmlparser('

htmlparser

', true);\n * ```\n */\n\nvar htmlparser = UE.htmlparser = function (htmlstr,ignoreBlank) {\n //todo 原来的方式 [^\"'<>\\/] 有\\/就不能配对上 ')\r\n }\r\n html.push('')\r\n }\r\n //禁止指定table-width\r\n return '
这样的标签了\n //先去掉了,加上的原因忘了,这里先记录\n var re_tag = /<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s\\/<>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'<>])*)\\/?>))/g,\n re_attr = /([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g;\n\n //ie下取得的html可能会有\\n存在,要去掉,在处理replace(/[\\t\\r\\n]*/g,'');代码高量的\\n不能去除\n var allowEmptyTags = {\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,\n sub:1,img:1,sup:1,font:1,big:1,small:1,iframe:1,a:1,br:1,pre:1\n };\n htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, 'g'), '');\n if(!ignoreBlank){\n htmlstr = htmlstr.replace(new RegExp('[\\\\r\\\\t\\\\n'+(ignoreBlank?'':' ')+']*<\\/?(\\\\w+)\\\\s*(?:[^>]*)>[\\\\r\\\\t\\\\n'+(ignoreBlank?'':' ')+']*','g'), function(a,b){\n //br暂时单独处理\n if(b && allowEmptyTags[b.toLowerCase()]){\n return a.replace(/(^[\\n\\r]+)|([\\n\\r]+$)/g,'');\n }\n return a.replace(new RegExp('^[\\\\r\\\\n'+(ignoreBlank?'':' ')+']+'),'').replace(new RegExp('[\\\\r\\\\n'+(ignoreBlank?'':' ')+']+$'),'');\n });\n }\n\n var notTransAttrs = {\n 'href':1,\n 'src':1\n };\n\n var uNode = UE.uNode,\n needParentNode = {\n 'td':'tr',\n 'tr':['tbody','thead','tfoot'],\n 'tbody':'table',\n 'th':'tr',\n 'thead':'table',\n 'tfoot':'table',\n 'caption':'table',\n 'li':['ul', 'ol'],\n 'dt':'dl',\n 'dd':'dl',\n 'option':'select'\n },\n needChild = {\n 'ol':'li',\n 'ul':'li'\n };\n\n function text(parent, data) {\n\n if(needChild[parent.tagName]){\n var tmpNode = uNode.createElement(needChild[parent.tagName]);\n parent.appendChild(tmpNode);\n tmpNode.appendChild(uNode.createText(data));\n parent = tmpNode;\n }else{\n\n parent.appendChild(uNode.createText(data));\n }\n }\n\n function element(parent, tagName, htmlattr) {\n var needParentTag;\n if (needParentTag = needParentNode[tagName]) {\n var tmpParent = parent,hasParent;\n while(tmpParent.type != 'root'){\n if(utils.isArray(needParentTag) ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 : needParentTag == tmpParent.tagName){\n parent = tmpParent;\n hasParent = true;\n break;\n }\n tmpParent = tmpParent.parentNode;\n }\n if(!hasParent){\n parent = element(parent, utils.isArray(needParentTag) ? needParentTag[0] : needParentTag)\n }\n }\n //按dtd处理嵌套\n// if(parent.type != 'root' && !dtd[parent.tagName][tagName])\n// parent = parent.parentNode;\n var elm = new uNode({\n parentNode:parent,\n type:'element',\n tagName:tagName.toLowerCase(),\n //是自闭合的处理一下\n children:dtd.$empty[tagName] ? null : []\n });\n //如果属性存在,处理属性\n if (htmlattr) {\n var attrs = {}, match;\n while (match = re_attr.exec(htmlattr)) {\n attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] ? (match[2] || match[3] || match[4]) : utils.unhtml(match[2] || match[3] || match[4])\n }\n elm.attrs = attrs;\n }\n //trace:3970\n// //如果parent下不能放elm\n// if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){\n// parent = parent.parentNode;\n// elm.parentNode = parent;\n// }\n parent.children.push(elm);\n //如果是自闭合节点返回父亲节点\n return dtd.$empty[tagName] ? parent : elm\n }\n\n function comment(parent, data) {\n parent.children.push(new uNode({\n type:'comment',\n data:data,\n parentNode:parent\n }));\n }\n\n var match, currentIndex = 0, nextIndex = 0;\n //设置根节点\n var root = new uNode({\n type:'root',\n children:[]\n });\n var currentParent = root;\n\n while (match = re_tag.exec(htmlstr)) {\n currentIndex = match.index;\n try{\n if (currentIndex > nextIndex) {\n //text node\n text(currentParent, htmlstr.slice(nextIndex, currentIndex));\n }\n if (match[3]) {\n\n if(dtd.$cdata[currentParent.tagName]){\n text(currentParent, match[0]);\n }else{\n //start tag\n currentParent = element(currentParent, match[3].toLowerCase(), match[4]);\n }\n\n\n } else if (match[1]) {\n if(currentParent.type != 'root'){\n if(dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]){\n text(currentParent, match[0]);\n }else{\n var tmpParent = currentParent;\n while(currentParent.type == 'element' && currentParent.tagName != match[1].toLowerCase()){\n currentParent = currentParent.parentNode;\n if(currentParent.type == 'root'){\n currentParent = tmpParent;\n throw 'break'\n }\n }\n //end tag\n currentParent = currentParent.parentNode;\n }\n\n }\n\n } else if (match[2]) {\n //comment\n comment(currentParent, match[2])\n }\n }catch(e){}\n\n nextIndex = re_tag.lastIndex;\n\n }\n //如果结束是文本,就有可能丢掉,所以这里手动判断一下\n //例如
  • sdfsdfsdf
  • sdfsdfsdfsdf\n if (nextIndex < htmlstr.length) {\n text(currentParent, htmlstr.slice(nextIndex));\n }\n return root;\n};\n\n\n// core/filternode.js\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}();\n\n// core/plugin.js\n/**\n * Created with JetBrains PhpStorm.\n * User: campaign\n * Date: 10/8/13\n * Time: 6:15 PM\n * To change this template use File | Settings | File Templates.\n */\nUE.plugin = function(){\n var _plugins = {};\n return {\n register : function(pluginName,fn,oldOptionName,afterDisabled){\n if(oldOptionName && utils.isFunction(oldOptionName)){\n afterDisabled = oldOptionName;\n oldOptionName = null\n }\n _plugins[pluginName] = {\n optionName : oldOptionName || pluginName,\n execFn : fn,\n //当插件被禁用时执行\n afterDisabled : afterDisabled\n }\n },\n load : function(editor){\n utils.each(_plugins,function(plugin){\n var _export = plugin.execFn.call(editor);\n if(editor.options[plugin.optionName] !== false){\n if(_export){\n //后边需要再做扩展\n utils.each(_export,function(v,k){\n switch(k.toLowerCase()){\n case 'shortcutkey':\n editor.addshortcutkey(v);\n break;\n case 'bindevents':\n utils.each(v,function(fn,eventName){\n editor.addListener(eventName,fn);\n });\n break;\n case 'bindmultievents':\n utils.each(utils.isArray(v) ? v:[v],function(event){\n var types = utils.trim(event.type).split(/\\s+/);\n utils.each(types,function(eventName){\n editor.addListener(eventName, event.handler);\n });\n });\n break;\n case 'commands':\n utils.each(v,function(execFn,execName){\n editor.commands[execName] = execFn\n });\n break;\n case 'outputrule':\n editor.addOutputRule(v);\n break;\n case 'inputrule':\n editor.addInputRule(v);\n break;\n case 'defaultoptions':\n editor.setOpt(v)\n }\n })\n }\n\n }else if(plugin.afterDisabled){\n plugin.afterDisabled.call(editor)\n }\n\n });\n //向下兼容\n utils.each(UE.plugins,function(plugin){\n plugin.call(editor);\n });\n },\n run : function(pluginName,editor){\n var plugin = _plugins[pluginName];\n if(plugin){\n plugin.exeFn.call(editor)\n }\n }\n }\n}();\n\n// core/keymap.js\nvar keymap = UE.keymap = {\n 'Backspace' : 8,\n 'Tab' : 9,\n 'Enter' : 13,\n\n 'Shift':16,\n 'Control':17,\n 'Alt':18,\n 'CapsLock':20,\n\n 'Esc':27,\n\n 'Spacebar':32,\n\n 'PageUp':33,\n 'PageDown':34,\n 'End':35,\n 'Home':36,\n\n 'Left':37,\n 'Up':38,\n 'Right':39,\n 'Down':40,\n\n 'Insert':45,\n\n 'Del':46,\n\n 'NumLock':144,\n\n 'Cmd':91,\n\n '=':187,\n '-':189,\n\n \"b\":66,\n 'i':73,\n //回退\n 'z':90,\n 'y':89,\n //粘贴\n 'v' : 86,\n 'x' : 88,\n\n 's' : 83,\n\n 'n' : 78\n};\n\n// core/localstorage.js\n//存储媒介封装\nvar LocalStorage = UE.LocalStorage = (function () {\n\n var storage = window.localStorage || getUserData() || null,\n LOCAL_FILE = 'localStorage';\n\n return {\n\n saveLocalData: function (key, data) {\n\n if (storage && data) {\n storage.setItem(key, data);\n return true;\n }\n\n return false;\n\n },\n\n getLocalData: function (key) {\n\n if (storage) {\n return storage.getItem(key);\n }\n\n return null;\n\n },\n\n removeItem: function (key) {\n\n storage && storage.removeItem(key);\n\n }\n\n };\n\n function getUserData() {\n\n var container = document.createElement(\"div\");\n container.style.display = \"none\";\n\n if (!container.addBehavior) {\n return null;\n }\n\n container.addBehavior(\"#default#userdata\");\n\n return {\n\n getItem: function (key) {\n\n var result = null;\n\n try {\n document.body.appendChild(container);\n container.load(LOCAL_FILE);\n result = container.getAttribute(key);\n document.body.removeChild(container);\n } catch (e) {\n }\n\n return result;\n\n },\n\n setItem: function (key, value) {\n\n document.body.appendChild(container);\n container.setAttribute(key, value);\n container.save(LOCAL_FILE);\n document.body.removeChild(container);\n\n },\n\n //// 暂时没有用到\n //clear: function () {\n //\n // var expiresTime = new Date();\n // expiresTime.setFullYear(expiresTime.getFullYear() - 1);\n // document.body.appendChild(container);\n // container.expires = expiresTime.toUTCString();\n // container.save(LOCAL_FILE);\n // document.body.removeChild(container);\n //\n //},\n\n removeItem: function (key) {\n\n document.body.appendChild(container);\n container.removeAttribute(key);\n container.save(LOCAL_FILE);\n document.body.removeChild(container);\n\n }\n\n };\n\n }\n\n})();\n\n(function () {\n\n var ROOTKEY = 'ueditor_preference';\n\n UE.Editor.prototype.setPreferences = function(key,value){\n var obj = {};\n if (utils.isString(key)) {\n obj[ key ] = value;\n } else {\n obj = key;\n }\n var data = LocalStorage.getLocalData(ROOTKEY);\n if (data && (data = utils.str2json(data))) {\n utils.extend(data, obj);\n } else {\n data = obj;\n }\n data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));\n };\n\n UE.Editor.prototype.getPreferences = function(key){\n var data = LocalStorage.getLocalData(ROOTKEY);\n if (data && (data = utils.str2json(data))) {\n return key ? data[key] : data\n }\n return null;\n };\n\n UE.Editor.prototype.removePreferences = function (key) {\n var data = LocalStorage.getLocalData(ROOTKEY);\n if (data && (data = utils.str2json(data))) {\n data[key] = undefined;\n delete data[key]\n }\n data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));\n };\n\n})();\n\n\n// plugins/defaultfilter.js\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 ? ' ' : '
    ')\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\n\n// plugins/inserthtml.js\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 * //执行命令,插入CC\r\n * //插入后的效果 xxxCCxxx\r\n * //

    xx|xxx

    当前选区为闭合状态\r\n * //插入

    CC

    \r\n * //结果

    xx

    CC

    xxx

    \r\n * //

    xxxx

    |

    xxx

    当前选区在两个p标签之间\r\n * //插入 xxxx\r\n * //结果

    xxxx

    xxxx

    xxx

    \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]
    \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 = '

    '+(browser.ie ? '' : '
    ')+'

    ';\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> ==>

    |

    \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 : '
    ';\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\n\n// plugins/autotypeset.js\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\n\n// plugins/autosubmit.js\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});\n\n// plugins/background.js\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 = ' ';\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('


    '));\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});\n\n// plugins/image.js\n/**\n * 图片插入、排版插件\n * @file\n * @since 1.2.6.1\n */\n\n/**\n * 图片对齐方式\n * @command imagefloat\n * @method execCommand\n * @remind 值center为独占一行居中\n * @param { String } cmd 命令字符串\n * @param { String } align 对齐方式,可传left、right、none、center\n * @remaind center表示图片独占一行\n * @example\n * ```javascript\n * editor.execCommand( 'imagefloat', 'center' );\n * ```\n */\n\n/**\n * 如果选区所在位置是图片区域\n * @command imagefloat\n * @method queryCommandValue\n * @param { String } cmd 命令字符串\n * @return { String } 返回图片对齐方式\n * @example\n * ```javascript\n * editor.queryCommandValue( 'imagefloat' );\n * ```\n */\n\nUE.commands['imagefloat'] = {\n execCommand:function (cmd, align) {\n var me = this,\n range = me.selection.getRange();\n if (!range.collapsed) {\n var img = range.getClosedNode();\n if (img && img.tagName == 'IMG') {\n switch (align) {\n case 'left':\n case 'right':\n case 'none':\n var pN = img.parentNode, tmpNode, pre, next;\n while (dtd.$inline[pN.tagName] || pN.tagName == 'A') {\n pN = pN.parentNode;\n }\n tmpNode = pN;\n if (tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode, 'text-align') == 'center') {\n if (!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode, function (node) {\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\n }) == 1) {\n pre = tmpNode.previousSibling;\n next = tmpNode.nextSibling;\n if (pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)) {\n pre.appendChild(tmpNode.firstChild);\n while (next.firstChild) {\n pre.appendChild(next.firstChild);\n }\n domUtils.remove(tmpNode);\n domUtils.remove(next);\n } else {\n domUtils.setStyle(tmpNode, 'text-align', '');\n }\n\n\n }\n\n range.selectNode(img).select();\n }\n domUtils.setStyle(img, 'float', align == 'none' ? '' : align);\n if(align == 'none'){\n domUtils.removeAttributes(img,'align');\n }\n\n break;\n case 'center':\n if (me.queryCommandValue('imagefloat') != 'center') {\n pN = img.parentNode;\n domUtils.setStyle(img, 'float', '');\n domUtils.removeAttributes(img,'align');\n tmpNode = img;\n while (pN && domUtils.getChildCount(pN, function (node) {\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\n }) == 1\n && (dtd.$inline[pN.tagName] || pN.tagName == 'A')) {\n tmpNode = pN;\n pN = pN.parentNode;\n }\n range.setStartBefore(tmpNode).setCursor(false);\n pN = me.document.createElement('div');\n pN.appendChild(tmpNode);\n domUtils.setStyle(tmpNode, 'float', '');\n\n me.execCommand('insertHtml', '

    ' + pN.innerHTML + '

    ');\n\n tmpNode = me.document.getElementById('_img_parent_tmp');\n tmpNode.removeAttribute('id');\n tmpNode = tmpNode.firstChild;\n range.selectNode(tmpNode).select();\n //去掉后边多余的元素\n next = tmpNode.parentNode.nextSibling;\n if (next && domUtils.isEmptyNode(next)) {\n domUtils.remove(next);\n }\n\n }\n\n break;\n }\n\n }\n }\n },\n queryCommandValue:function () {\n var range = this.selection.getRange(),\n startNode, floatStyle;\n if (range.collapsed) {\n return 'none';\n }\n startNode = range.getClosedNode();\n if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') {\n floatStyle = domUtils.getComputedStyle(startNode, 'float') || startNode.getAttribute('align');\n\n if (floatStyle == 'none') {\n floatStyle = domUtils.getComputedStyle(startNode.parentNode, 'text-align') == 'center' ? 'center' : floatStyle;\n }\n return {\n left:1,\n right:1,\n center:1\n }[floatStyle] ? floatStyle : 'none';\n }\n return 'none';\n\n\n },\n queryCommandState:function () {\n var range = this.selection.getRange(),\n startNode;\n\n if (range.collapsed) return -1;\n\n startNode = range.getClosedNode();\n if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') {\n return 0;\n }\n return -1;\n }\n};\n\n\n/**\n * 插入图片\n * @command insertimage\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片\n * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片,\n * 此时数组的每一个元素都是一个Object类型的图片属性集合。\n * @example\n * ```javascript\n * editor.execCommand( 'insertimage', {\n * src:'a/b/c.jpg',\n * width:'100',\n * height:'100'\n * } );\n * ```\n * @example\n * ```javascript\n * editor.execCommand( 'insertimage', [{\n * src:'a/b/c.jpg',\n * width:'100',\n * height:'100'\n * },{\n * src:'a/b/d.jpg',\n * width:'100',\n * height:'100'\n * }] );\n * ```\n */\n\nUE.commands['insertimage'] = {\n execCommand:function (cmd, opt) {\n\n opt = utils.isArray(opt) ? opt : [opt];\n if (!opt.length) {\n return;\n }\n var me = this,\n range = me.selection.getRange(),\n img = range.getClosedNode();\n\n if(me.fireEvent('beforeinsertimage', opt) === true){\n return;\n }\n\n function unhtmlData(imgCi) {\n\n utils.each('width,height,border,hspace,vspace'.split(','), function (item) {\n\n if (imgCi[item]) {\n imgCi[item] = parseInt(imgCi[item], 10) || 0;\n }\n });\n\n utils.each('src,_src'.split(','), function (item) {\n\n if (imgCi[item]) {\n imgCi[item] = utils.unhtmlForUrl(imgCi[item]);\n }\n });\n utils.each('title,alt'.split(','), function (item) {\n\n if (imgCi[item]) {\n imgCi[item] = utils.unhtml(imgCi[item]);\n }\n });\n }\n\n if (img && /img/i.test(img.tagName) && (img.className != \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\")!=-1) && !img.getAttribute(\"word_img\")) {\n var first = opt.shift();\n var floatStyle = first['floatStyle'];\n delete first['floatStyle'];\n//// img.style.border = (first.border||0) +\"px solid #000\";\n//// img.style.margin = (first.margin||0) +\"px\";\n// img.style.cssText += ';margin:' + (first.margin||0) +\"px;\" + 'border:' + (first.border||0) +\"px solid #000\";\n domUtils.setAttributes(img, first);\n me.execCommand('imagefloat', floatStyle);\n if (opt.length > 0) {\n range.setStartAfter(img).setCursor(false, true);\n me.execCommand('insertimage', opt);\n }\n\n } else {\n var html = [], str = '', ci;\n ci = opt[0];\n if (opt.length == 1) {\n unhtmlData(ci);\n\n str = '\"'';\n if (ci['floatStyle'] == 'center') {\n str = '

    ' + str + '

    ';\n }\n html.push(str);\n\n } else {\n for (var i = 0; ci = opt[i++];) {\n unhtmlData(ci);\n str = '

    ';\n html.push(str);\n }\n }\n\n me.execCommand('insertHtml', html.join(''));\n }\n\n me.fireEvent('afterinsertimage', opt)\n }\n};\n\n\n// plugins/justify.js\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\n\n// plugins/font.js\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};\n\n// plugins/link.js\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 如果是

    xx

    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};\n\n// plugins/iframe.js\n///import core\n///import plugins\\inserthtml.js\n///commands 插入框架\n///commandsName InsertFrame\n///commandsTitle 插入Iframe\n///commandsDialog dialogs\\insertframe\n\nUE.plugins['insertframe'] = function() {\n var me =this;\n function deleteIframe(){\n me._iframe && delete me._iframe;\n }\n\n me.addListener(\"selectionchange\",function(){\n deleteIframe();\n });\n\n};\n\n\n\n// plugins/scrawl.js\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\n\n// plugins/removeformat.js\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\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\n\n// plugins/blockquote.js\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\n\n// plugins/convertcase.js\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\n\n// plugins/indent.js\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\n\n// plugins/print.js\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\n\n// plugins/preview.js\n/**\n * 预览\n * @file\n * @since 1.2.6.1\n */\n\n/**\n * 预览\n * @command preview\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @example\n * ```javascript\n * editor.execCommand( 'preview' );\n * ```\n */\nUE.commands['preview'] = {\n execCommand : function(){\n var w = window.open('', '_blank', ''),\n d = w.document;\n d.open();\n d.write('
    '+this.getContent(null,null,true)+'
    ');\n d.close();\n },\n notNeedUndo : 1\n};\n\n\n// plugins/selectall.js\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\n\n// plugins/paragraph.js\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 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\n\n// plugins/directionality.js\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\n\n// plugins/horizontal.js\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','
    ');\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\n\n// plugins/time.js\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\n\n// plugins/rowspacing.js\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\n\n// plugins/lineheight.js\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\n\n// plugins/insertcode.js\n/**\n * 插入代码插件\n * @file\n * @since 1.2.6.1\n */\n\nUE.plugins['insertcode'] = function() {\n var me = this;\n me.ready(function(){\n utils.cssRule('pre','pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}',\n me.document)\n });\n me.setOpt('insertcode',{\n 'as3':'ActionScript3',\n 'bash':'Bash/Shell',\n 'cpp':'C/C++',\n 'css':'Css',\n 'cf':'CodeFunction',\n 'c#':'C#',\n 'delphi':'Delphi',\n 'diff':'Diff',\n 'erlang':'Erlang',\n 'groovy':'Groovy',\n 'html':'Html',\n 'java':'Java',\n 'jfx':'JavaFx',\n 'js':'Javascript',\n 'pl':'Perl',\n 'php':'Php',\n 'plain':'Plain Text',\n 'ps':'PowerShell',\n 'python':'Python',\n 'ruby':'Ruby',\n 'scala':'Scala',\n 'sql':'Sql',\n 'vb':'Vb',\n 'xml':'Xml'\n });\n\n /**\n * 插入代码\n * @command insertcode\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @param { String } lang 插入代码的语言\n * @example\n * ```javascript\n * editor.execCommand( 'insertcode', 'javascript' );\n * ```\n */\n\n /**\n * 如果选区所在位置是插入插入代码区域,返回代码的语言\n * @command insertcode\n * @method queryCommandValue\n * @param { String } cmd 命令字符串\n * @return { String } 返回代码的语言\n * @example\n * ```javascript\n * editor.queryCommandValue( 'insertcode' );\n * ```\n */\n\n me.commands['insertcode'] = {\n execCommand : function(cmd,lang){\n var me = this,\n rng = me.selection.getRange(),\n pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\n if(pre){\n pre.className = 'brush:'+lang+';toolbar:false;';\n }else{\n var code = '';\n if(rng.collapsed){\n code = browser.ie && browser.ie11below ? (browser.version <= 8 ? ' ':''):'
    ';\n }else{\n var frag = rng.extractContents();\n var div = me.document.createElement('div');\n div.appendChild(frag);\n\n utils.each(UE.filterNode(UE.htmlparser(div.innerHTML.replace(/[\\r\\t]/g,'')),me.options.filterTxtRules).children,function(node){\n if(browser.ie && browser.ie11below && browser.version > 8){\n\n if(node.type =='element'){\n if(node.tagName == 'br'){\n code += '\\n'\n }else if(!dtd.$empty[node.tagName]){\n utils.each(node.children,function(cn){\n if(cn.type =='element'){\n if(cn.tagName == 'br'){\n code += '\\n'\n }else if(!dtd.$empty[node.tagName]){\n code += cn.innerText();\n }\n }else{\n code += cn.data\n }\n })\n if(!/\\n$/.test(code)){\n code += '\\n';\n }\n }\n }else{\n code += node.data + '\\n'\n }\n if(!node.nextSibling() && /\\n$/.test(code)){\n code = code.replace(/\\n$/,'');\n }\n }else{\n if(browser.ie && browser.ie11below){\n\n if(node.type =='element'){\n if(node.tagName == 'br'){\n code += '
    '\n }else if(!dtd.$empty[node.tagName]){\n utils.each(node.children,function(cn){\n if(cn.type =='element'){\n if(cn.tagName == 'br'){\n code += '
    '\n }else if(!dtd.$empty[node.tagName]){\n code += cn.innerText();\n }\n }else{\n code += cn.data\n }\n });\n if(!/br>$/.test(code)){\n code += '
    ';\n }\n }\n }else{\n code += node.data + '
    '\n }\n if(!node.nextSibling() && /
    $/.test(code)){\n code = code.replace(/
    $/,'');\n }\n\n }else{\n code += (node.type == 'element' ? (dtd.$empty[node.tagName] ? '' : node.innerText()) : node.data);\n if(!/br\\/?\\s*>$/.test(code)){\n if(!node.nextSibling())\n return;\n code += '
    '\n }\n }\n\n }\n\n });\n }\n me.execCommand('inserthtml','
    '+code+'
    ',true);\n\n pre = me.document.getElementById('coder');\n domUtils.removeAttributes(pre,'id');\n var tmpNode = pre.previousSibling;\n\n if(tmpNode && (tmpNode.nodeType == 3 && tmpNode.nodeValue.length == 1 && browser.ie && browser.version == 6 || domUtils.isEmptyBlock(tmpNode))){\n\n domUtils.remove(tmpNode)\n }\n var rng = me.selection.getRange();\n if(domUtils.isEmptyBlock(pre)){\n rng.setStart(pre,0).setCursor(false,true)\n }else{\n rng.selectNodeContents(pre).select()\n }\n }\n\n\n\n },\n queryCommandValue : function(){\n var path = this.selection.getStartElementPath();\n var lang = '';\n utils.each(path,function(node){\n if(node.nodeName =='PRE'){\n var match = node.className.match(/brush:([^;]+)/);\n lang = match && match[1] ? match[1] : '';\n return false;\n }\n });\n return lang;\n }\n };\n\n me.addInputRule(function(root){\n utils.each(root.getNodesByTagName('pre'),function(pre){\n var brs = pre.getNodesByTagName('br');\n if(brs.length){\n browser.ie && browser.ie11below && browser.version > 8 && utils.each(brs,function(br){\n var txt = UE.uNode.createText('\\n');\n br.parentNode.insertBefore(txt,br);\n br.parentNode.removeChild(br);\n });\n return;\n }\n if(browser.ie && browser.ie11below && browser.version > 8)\n return;\n var code = pre.innerText().split(/\\n/);\n pre.innerHTML('');\n utils.each(code,function(c){\n if(c.length){\n pre.appendChild(UE.uNode.createText(c));\n }\n pre.appendChild(UE.uNode.createElement('br'))\n })\n })\n });\n me.addOutputRule(function(root){\n utils.each(root.getNodesByTagName('pre'),function(pre){\n var code = '';\n utils.each(pre.children,function(n){\n if(n.type == 'text'){\n //在ie下文本内容有可能末尾带有\\n要去掉\n //trace:3396\n code += n.data.replace(/[ ]/g,' ').replace(/\\n$/,'');\n }else{\n if(n.tagName == 'br'){\n code += '\\n'\n }else{\n code += (!dtd.$empty[n.tagName] ? '' : n.innerText());\n }\n\n }\n\n });\n\n pre.innerText(code.replace(/( |\\n)+$/,''))\n })\n });\n //不需要判断highlight的command列表\n me.notNeedCodeQuery ={\n help:1,\n undo:1,\n redo:1,\n source:1,\n print:1,\n searchreplace:1,\n fullscreen:1,\n preview:1,\n insertparagraph:1,\n elementpath:1,\n insertcode:1,\n inserthtml:1,\n selectall:1\n };\n //将queyCommamndState重置\n var orgQuery = me.queryCommandState;\n me.queryCommandState = function(cmd){\n var me = this;\n\n if(!me.notNeedCodeQuery[cmd.toLowerCase()] && me.selection && me.queryCommandValue('insertcode')){\n return -1;\n }\n return UE.Editor.prototype.queryCommandState.apply(this,arguments)\n };\n me.addListener('beforeenterkeydown',function(){\n var rng = me.selection.getRange();\n var pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\n if(pre){\n me.fireEvent('saveScene');\n if(!rng.collapsed){\n rng.deleteContents();\n }\n if(!browser.ie || browser.ie9above){\n var tmpNode = me.document.createElement('br'),pre;\n rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true);\n var next = tmpNode.nextSibling;\n if(!next && (!browser.ie || browser.version > 10)){\n rng.insertNode(tmpNode.cloneNode(false));\n }else{\n rng.setStartAfter(tmpNode);\n }\n pre = tmpNode.previousSibling;\n var tmp;\n while(pre ){\n tmp = pre;\n pre = pre.previousSibling;\n if(!pre || pre.nodeName == 'BR'){\n pre = tmp;\n break;\n }\n }\n if(pre){\n var str = '';\n while(pre && pre.nodeName != 'BR' && new RegExp('^[\\\\s'+domUtils.fillChar+']*$').test(pre.nodeValue)){\n str += pre.nodeValue;\n pre = pre.nextSibling;\n }\n if(pre.nodeName != 'BR'){\n var match = pre.nodeValue.match(new RegExp('^([\\\\s'+domUtils.fillChar+']+)'));\n if(match && match[1]){\n str += match[1]\n }\n\n }\n if(str){\n str = me.document.createTextNode(str);\n rng.insertNode(str).setStartAfter(str);\n }\n }\n rng.collapse(true).select(true);\n }else{\n if(browser.version > 8){\n\n var txt = me.document.createTextNode('\\n');\n var start = rng.startContainer;\n if(rng.startOffset == 0){\n var preNode = start.previousSibling;\n if(preNode){\n rng.insertNode(txt);\n var fillchar = me.document.createTextNode(' ');\n rng.setStartAfter(txt).insertNode(fillchar).setStart(fillchar,0).collapse(true).select(true)\n }\n }else{\n rng.insertNode(txt).setStartAfter(txt);\n var fillchar = me.document.createTextNode(' ');\n start = rng.startContainer.childNodes[rng.startOffset];\n if(start && !/^\\n/.test(start.nodeValue)){\n rng.setStartBefore(txt)\n }\n rng.insertNode(fillchar).setStart(fillchar,0).collapse(true).select(true)\n }\n\n }else{\n var tmpNode = me.document.createElement('br');\n rng.insertNode(tmpNode);\n rng.insertNode(me.document.createTextNode(domUtils.fillChar));\n rng.setStartAfter(tmpNode);\n pre = tmpNode.previousSibling;\n var tmp;\n while(pre ){\n tmp = pre;\n pre = pre.previousSibling;\n if(!pre || pre.nodeName == 'BR'){\n pre = tmp;\n break;\n }\n }\n if(pre){\n var str = '';\n while(pre && pre.nodeName != 'BR' && new RegExp('^[ '+domUtils.fillChar+']*$').test(pre.nodeValue)){\n str += pre.nodeValue;\n pre = pre.nextSibling;\n }\n if(pre.nodeName != 'BR'){\n var match = pre.nodeValue.match(new RegExp('^([ '+domUtils.fillChar+']+)'));\n if(match && match[1]){\n str += match[1]\n }\n\n }\n\n str = me.document.createTextNode(str);\n rng.insertNode(str).setStartAfter(str);\n }\n rng.collapse(true).select();\n }\n\n\n }\n me.fireEvent('saveScene');\n return true;\n }\n\n\n });\n\n me.addListener('tabkeydown',function(cmd,evt){\n var rng = me.selection.getRange();\n var pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\n if(pre){\n me.fireEvent('saveScene');\n if(evt.shiftKey){\n\n }else{\n if(!rng.collapsed){\n var bk = rng.createBookmark();\n var start = bk.start.previousSibling;\n\n while(start){\n if(pre.firstChild === start && !domUtils.isBr(start)){\n pre.insertBefore(me.document.createTextNode(' '),start);\n\n break;\n }\n if(domUtils.isBr(start)){\n pre.insertBefore(me.document.createTextNode(' '),start.nextSibling);\n\n break;\n }\n start = start.previousSibling;\n }\n var end = bk.end;\n start = bk.start.nextSibling;\n if(pre.firstChild === bk.start){\n pre.insertBefore(me.document.createTextNode(' '),start.nextSibling)\n\n }\n while(start && start !== end){\n if(domUtils.isBr(start) && start.nextSibling){\n if(start.nextSibling === end){\n break;\n }\n pre.insertBefore(me.document.createTextNode(' '),start.nextSibling)\n }\n\n start = start.nextSibling;\n }\n rng.moveToBookmark(bk).select();\n }else{\n var tmpNode = me.document.createTextNode(' ');\n rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true).select(true);\n }\n }\n\n\n me.fireEvent('saveScene');\n return true;\n }\n\n\n });\n\n\n me.addListener('beforeinserthtml',function(evtName,html){\n var me = this,\n rng = me.selection.getRange(),\n pre = domUtils.findParentByTagName(rng.startContainer,'pre',true);\n if(pre){\n if(!rng.collapsed){\n rng.deleteContents()\n }\n var htmlstr = '';\n if(browser.ie && browser.version > 8){\n\n utils.each(UE.filterNode(UE.htmlparser(html),me.options.filterTxtRules).children,function(node){\n if(node.type =='element'){\n if(node.tagName == 'br'){\n htmlstr += '\\n'\n }else if(!dtd.$empty[node.tagName]){\n utils.each(node.children,function(cn){\n if(cn.type =='element'){\n if(cn.tagName == 'br'){\n htmlstr += '\\n'\n }else if(!dtd.$empty[node.tagName]){\n htmlstr += cn.innerText();\n }\n }else{\n htmlstr += cn.data\n }\n })\n if(!/\\n$/.test(htmlstr)){\n htmlstr += '\\n';\n }\n }\n }else{\n htmlstr += node.data + '\\n'\n }\n if(!node.nextSibling() && /\\n$/.test(htmlstr)){\n htmlstr = htmlstr.replace(/\\n$/,'');\n }\n });\n var tmpNode = me.document.createTextNode(utils.html(htmlstr.replace(/ /g,' ')));\n rng.insertNode(tmpNode).selectNode(tmpNode).select();\n }else{\n var frag = me.document.createDocumentFragment();\n\n utils.each(UE.filterNode(UE.htmlparser(html),me.options.filterTxtRules).children,function(node){\n if(node.type =='element'){\n if(node.tagName == 'br'){\n frag.appendChild(me.document.createElement('br'))\n }else if(!dtd.$empty[node.tagName]){\n utils.each(node.children,function(cn){\n if(cn.type =='element'){\n if(cn.tagName == 'br'){\n\n frag.appendChild(me.document.createElement('br'))\n }else if(!dtd.$empty[node.tagName]){\n frag.appendChild(me.document.createTextNode(utils.html(cn.innerText().replace(/ /g,' '))));\n\n }\n }else{\n frag.appendChild(me.document.createTextNode(utils.html( cn.data.replace(/ /g,' '))));\n\n }\n })\n if(frag.lastChild.nodeName != 'BR'){\n frag.appendChild(me.document.createElement('br'))\n }\n }\n }else{\n frag.appendChild(me.document.createTextNode(utils.html( node.data.replace(/ /g,' '))));\n }\n if(!node.nextSibling() && frag.lastChild.nodeName == 'BR'){\n frag.removeChild(frag.lastChild)\n }\n\n\n });\n rng.insertNode(frag).select();\n\n }\n\n return true;\n }\n });\n //方向键的处理\n me.addListener('keydown',function(cmd,evt){\n var me = this,keyCode = evt.keyCode || evt.which;\n if(keyCode == 40){\n var rng = me.selection.getRange(),pre,start = rng.startContainer;\n if(rng.collapsed && (pre = domUtils.findParentByTagName(rng.startContainer,'pre',true)) && !pre.nextSibling){\n var last = pre.lastChild\n while(last && last.nodeName == 'BR'){\n last = last.previousSibling;\n }\n if(last === start || rng.startContainer === pre && rng.startOffset == pre.childNodes.length){\n me.execCommand('insertparagraph');\n domUtils.preventDefault(evt)\n }\n\n }\n }\n });\n //trace:3395\n me.addListener('delkeydown',function(type,evt){\n var rng = this.selection.getRange();\n rng.txtToElmBoundary(true);\n var start = rng.startContainer;\n if(domUtils.isTagNode(start,'pre') && rng.collapsed && domUtils.isStartInblock(rng)){\n var p = me.document.createElement('p');\n domUtils.fillNode(me.document,p);\n start.parentNode.insertBefore(p,start);\n domUtils.remove(start);\n rng.setStart(p,0).setCursor(false,true);\n domUtils.preventDefault(evt);\n return true;\n }\n })\n};\n\n\n// plugins/cleardoc.js\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 = \"
    \";\r\n range.setStart(me.body,0).setCursor();\r\n }else{\r\n me.body.innerHTML = \"

    \"+(ie ? \"\" : \"
    \")+\"

    \";\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\n\n// plugins/anchor.js\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\n\n// plugins/wordcount.js\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\n\n// plugins/pagebreak.js\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('
    ');\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};\n\n// plugins/wordimage.js\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});\n\n// plugins/dragdrop.js\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\n\n// plugins/undo.js\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会产生多余的\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(/> <').replace(/\\s*\\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\n\n// plugins/copy.js\nUE.plugin.register('copy', function () {\n\n var me = this;\n\n function initZeroClipboard() {\n\n ZeroClipboard.config({\n debug: false,\n swfPath: me.options.UEDITOR_HOME_URL + 'third-party/zeroclipboard/ZeroClipboard.swf'\n });\n\n var client = me.zeroclipboard = new ZeroClipboard();\n\n // 复制内容\n client.on('copy', function (e) {\n var client = e.client,\n rng = me.selection.getRange(),\n div = document.createElement('div');\n\n div.appendChild(rng.cloneContents());\n client.setText(div.innerText || div.textContent);\n client.setHtml(div.innerHTML);\n rng.select();\n });\n // hover事件传递到target\n client.on('mouseover mouseout', function (e) {\n var target = e.target;\n if (e.type == 'mouseover') {\n domUtils.addClass(target, 'edui-state-hover');\n } else if (e.type == 'mouseout') {\n domUtils.removeClasses(target, 'edui-state-hover');\n }\n });\n // flash加载不成功\n client.on('wrongflash noflash', function () {\n ZeroClipboard.destroy();\n });\n }\n\n return {\n bindEvents: {\n 'ready': function () {\n if (!browser.ie) {\n if (window.ZeroClipboard) {\n initZeroClipboard();\n } else {\n utils.loadFile(document, {\n src: me.options.UEDITOR_HOME_URL + \"third-party/zeroclipboard/ZeroClipboard.js\",\n tag: \"script\",\n type: \"text/javascript\",\n defer: \"defer\"\n }, function () {\n initZeroClipboard();\n });\n }\n }\n }\n },\n commands: {\n 'copy': {\n execCommand: function (cmd) {\n if (!me.document.execCommand('copy')) {\n alert(me.getLang('copymsg'));\n }\n }\n }\n }\n }\n});\n\n\n// plugins/paste.js\n///import core\n///import plugins/inserthtml.js\n///import plugins/undo.js\n///import plugins/serialize.js\n///commands 粘贴\n///commandsName PastePlain\n///commandsTitle 纯文本粘贴模式\n/**\n * @description 粘贴\n * @author zhanyi\n */\nUE.plugins['paste'] = function () {\n function getClipboardData(callback) {\n var doc = this.document;\n if (doc.getElementById('baidu_pastebin')) {\n return;\n }\n var range = this.selection.getRange(),\n bk = range.createBookmark(),\n //创建剪贴的容器div\n pastebin = doc.createElement('div');\n pastebin.id = 'baidu_pastebin';\n // Safari 要求div必须有内容,才能粘贴内容进来\n browser.webkit && pastebin.appendChild(doc.createTextNode(domUtils.fillChar + domUtils.fillChar));\n doc.body.appendChild(pastebin);\n //trace:717 隐藏的span不能得到top\n //bk.start.innerHTML = ' ';\n bk.start.style.display = '';\n pastebin.style.cssText = \"position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:\" +\n //要在现在光标平行的位置加入,否则会出现跳动的问题\n domUtils.getXY(bk.start).y + 'px';\n\n range.selectNodeContents(pastebin).select(true);\n\n setTimeout(function () {\n if (browser.webkit) {\n for (var i = 0, pastebins = doc.querySelectorAll('#baidu_pastebin'), pi; pi = pastebins[i++];) {\n if (domUtils.isEmptyNode(pi)) {\n domUtils.remove(pi);\n } else {\n pastebin = pi;\n break;\n }\n }\n }\n try {\n pastebin.parentNode.removeChild(pastebin);\n } catch (e) {\n }\n range.moveToBookmark(bk).select(true);\n callback(pastebin);\n }, 0);\n }\n\n var me = this;\n\n me.setOpt({\n retainOnlyLabelPasted : false\n });\n\n var txtContent, htmlContent, address;\n\n function getPureHtml(html){\n return html.replace(/<(\\/?)([\\w\\-]+)([^>]*)>/gi, function (a, b, tagName, attrs) {\n tagName = tagName.toLowerCase();\n if ({img: 1}[tagName]) {\n return a;\n }\n attrs = attrs.replace(/([\\w\\-]*?)\\s*=\\s*((\"([^\"]*)\")|('([^']*)')|([^\\s>]+))/gi, function (str, atr, val) {\n if ({\n 'src': 1,\n 'href': 1,\n 'name': 1\n }[atr.toLowerCase()]) {\n return atr + '=' + val + ' '\n }\n return ''\n });\n if ({\n 'span': 1,\n 'div': 1\n }[tagName]) {\n return ''\n } else {\n\n return '<' + b + tagName + ' ' + utils.trim(attrs) + '>'\n }\n\n });\n }\n function filter(div) {\n var html;\n if (div.firstChild) {\n //去掉cut中添加的边界值\n var nodes = domUtils.getElementsByTagName(div, 'span');\n for (var i = 0, ni; ni = nodes[i++];) {\n if (ni.id == '_baidu_cut_start' || ni.id == '_baidu_cut_end') {\n domUtils.remove(ni);\n }\n }\n\n if (browser.webkit) {\n\n var brs = div.querySelectorAll('div br');\n for (var i = 0, bi; bi = brs[i++];) {\n var pN = bi.parentNode;\n if (pN.tagName == 'DIV' && pN.childNodes.length == 1) {\n pN.innerHTML = '


    ';\n domUtils.remove(pN);\n }\n }\n var divs = div.querySelectorAll('#baidu_pastebin');\n for (var i = 0, di; di = divs[i++];) {\n var tmpP = me.document.createElement('p');\n di.parentNode.insertBefore(tmpP, di);\n while (di.firstChild) {\n tmpP.appendChild(di.firstChild);\n }\n domUtils.remove(di);\n }\n\n var metas = div.querySelectorAll('meta');\n for (var i = 0, ci; ci = metas[i++];) {\n domUtils.remove(ci);\n }\n\n var brs = div.querySelectorAll('br');\n for (i = 0; ci = brs[i++];) {\n if (/^apple-/i.test(ci.className)) {\n domUtils.remove(ci);\n }\n }\n }\n if (browser.gecko) {\n var dirtyNodes = div.querySelectorAll('[_moz_dirty]');\n for (i = 0; ci = dirtyNodes[i++];) {\n ci.removeAttribute('_moz_dirty');\n }\n }\n if (!browser.ie) {\n var spans = div.querySelectorAll('span.Apple-style-span');\n for (var i = 0, ci; ci = spans[i++];) {\n domUtils.remove(ci, true);\n }\n }\n\n //ie下使用innerHTML会产生多余的\\r\\n字符,也会产生 这里过滤掉\n html = div.innerHTML;//.replace(/>(?:(\\s| )*?)<');\n\n //过滤word粘贴过来的冗余属性\n html = UE.filterWord(html);\n //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签\n var root = UE.htmlparser(html);\n //如果给了过滤规则就先进行过滤\n if (me.options.filterRules) {\n UE.filterNode(root, me.options.filterRules);\n }\n //执行默认的处理\n me.filterInputRule(root);\n //针对chrome的处理\n if (browser.webkit) {\n var br = root.lastChild();\n if (br && br.type == 'element' && br.tagName == 'br') {\n root.removeChild(br)\n }\n utils.each(me.body.querySelectorAll('div'), function (node) {\n if (domUtils.isEmptyBlock(node)) {\n domUtils.remove(node,true)\n }\n })\n }\n html = {'html': root.toHtml()};\n me.fireEvent('beforepaste', html, root);\n //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴\n if(!html.html){\n return;\n }\n root = UE.htmlparser(html.html,true);\n //如果开启了纯文本模式\n if (me.queryCommandState('pasteplain') === 1) {\n me.execCommand('insertHtml', UE.filterNode(root, me.options.filterTxtRules).toHtml(), true);\n } else {\n //文本模式\n UE.filterNode(root, me.options.filterTxtRules);\n txtContent = root.toHtml();\n //完全模式\n htmlContent = html.html;\n\n address = me.selection.getRange().createAddress(true);\n me.execCommand('insertHtml', me.getOpt('retainOnlyLabelPasted') === true ? getPureHtml(htmlContent) : htmlContent, true);\n }\n me.fireEvent(\"afterpaste\", html);\n }\n }\n\n me.addListener('pasteTransfer', function (cmd, plainType) {\n\n if (address && txtContent && htmlContent && txtContent != htmlContent) {\n var range = me.selection.getRange();\n range.moveToAddress(address, true);\n\n if (!range.collapsed) {\n\n while (!domUtils.isBody(range.startContainer)\n ) {\n var start = range.startContainer;\n if(start.nodeType == 1){\n start = start.childNodes[range.startOffset];\n if(!start){\n range.setStartBefore(range.startContainer);\n continue;\n }\n var pre = start.previousSibling;\n\n if(pre && pre.nodeType == 3 && new RegExp('^[\\n\\r\\t '+domUtils.fillChar+']*$').test(pre.nodeValue)){\n range.setStartBefore(pre)\n }\n }\n if(range.startOffset == 0){\n range.setStartBefore(range.startContainer);\n }else{\n break;\n }\n\n }\n while (!domUtils.isBody(range.endContainer)\n ) {\n var end = range.endContainer;\n if(end.nodeType == 1){\n end = end.childNodes[range.endOffset];\n if(!end){\n range.setEndAfter(range.endContainer);\n continue;\n }\n var next = end.nextSibling;\n if(next && next.nodeType == 3 && new RegExp('^[\\n\\r\\t'+domUtils.fillChar+']*$').test(next.nodeValue)){\n range.setEndAfter(next)\n }\n }\n if(range.endOffset == range.endContainer[range.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length){\n range.setEndAfter(range.endContainer);\n }else{\n break;\n }\n\n }\n\n }\n\n range.deleteContents();\n range.select(true);\n me.__hasEnterExecCommand = true;\n var html = htmlContent;\n if (plainType === 2 ) {\n html = getPureHtml(html);\n } else if (plainType) {\n html = txtContent;\n }\n me.execCommand('inserthtml', html, true);\n me.__hasEnterExecCommand = false;\n var rng = me.selection.getRange();\n while (!domUtils.isBody(rng.startContainer) && !rng.startOffset &&\n rng.startContainer[rng.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\n ) {\n rng.setStartBefore(rng.startContainer);\n }\n var tmpAddress = rng.createAddress(true);\n address.endAddress = tmpAddress.startAddress;\n }\n });\n\n me.addListener('ready', function () {\n domUtils.on(me.body, 'cut', function () {\n var range = me.selection.getRange();\n if (!range.collapsed && me.undoManger) {\n me.undoManger.save();\n }\n });\n\n //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理\n domUtils.on(me.body, browser.ie || browser.opera ? 'keydown' : 'paste', function (e) {\n if ((browser.ie || browser.opera) && ((!e.ctrlKey && !e.metaKey) || e.keyCode != '86')) {\n return;\n }\n getClipboardData.call(me, function (div) {\n filter(div);\n });\n });\n\n });\n\n me.commands['paste'] = {\n execCommand: function (cmd) {\n if (browser.ie) {\n getClipboardData.call(me, function (div) {\n filter(div);\n });\n me.document.execCommand('paste');\n } else {\n alert(me.getLang('pastemsg'));\n }\n }\n }\n};\n\n\n\n// plugins/puretxtpaste.js\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};\n\n// plugins/list.js\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 ? ' ' : '
    ')\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 = '

    ';\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标签防止它占位\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\n\n// plugins/source.js\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() || '

    ' + (browser.ie ? '' : '
    ')+'

    ';\r\n };\r\n } else {\r\n me.iframe.style.cssText = bakCssText;\r\n var cont = sourceEditor.getContent() || '

    ' + (browser.ie ? '' : '
    ')+'

    ';\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 = '

    '+(browser.ie?'':'
    ')+'

    ';\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})();\n\n// plugins/enterkey.js\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, '

    ');\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, '

    ');\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\n\n// plugins/keystrokes.js\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]
    \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 = '

    '+(browser.ie ? '' : '
    ')+'

    ';\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 : '
    '\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};\n\n// plugins/fiximgclick.js\n///import core\n///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小\n///commandsName FixImgClick\n///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小\n//修复chrome下图片不能点击的问题,出现八个角可改变大小\n\nUE.plugins['fiximgclick'] = (function () {\n\n var elementUpdated = false;\n function Scale() {\n this.editor = null;\n this.resizer = null;\n this.cover = null;\n this.doc = document;\n this.prePos = {x: 0, y: 0};\n this.startPos = {x: 0, y: 0};\n }\n\n (function () {\n var rect = [\n //[left, top, width, height]\n [0, 0, -1, -1],\n [0, 0, 0, -1],\n [0, 0, 1, -1],\n [0, 0, -1, 0],\n [0, 0, 1, 0],\n [0, 0, -1, 1],\n [0, 0, 0, 1],\n [0, 0, 1, 1]\n ];\n\n Scale.prototype = {\n init: function (editor) {\n var me = this;\n me.editor = editor;\n me.startPos = this.prePos = {x: 0, y: 0};\n me.dragId = -1;\n\n var hands = [],\n cover = me.cover = document.createElement('div'),\n resizer = me.resizer = document.createElement('div');\n\n cover.id = me.editor.ui.id + '_imagescale_cover';\n cover.style.cssText = 'position:absolute;display:none;z-index:' + (me.editor.options.zIndex) + ';filter:alpha(opacity=0); opacity:0;background:#CCC;';\n domUtils.on(cover, 'mousedown click', function () {\n me.hide();\n });\n\n for (i = 0; i < 8; i++) {\n hands.push('');\n }\n resizer.id = me.editor.ui.id + '_imagescale';\n resizer.className = 'edui-editor-imagescale';\n resizer.innerHTML = hands.join('');\n resizer.style.cssText += ';display:none;border:1px solid #3b77ff;z-index:' + (me.editor.options.zIndex) + ';';\n\n me.editor.ui.getDom().appendChild(cover);\n me.editor.ui.getDom().appendChild(resizer);\n\n me.initStyle();\n me.initEvents();\n },\n initStyle: function () {\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;}' +\n '.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}'\n + '.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}');\n },\n initEvents: function () {\n var me = this;\n\n me.startPos.x = me.startPos.y = 0;\n me.isDraging = false;\n },\n _eventHandler: function (e) {\n var me = this;\n switch (e.type) {\n case 'mousedown':\n var hand = e.target || e.srcElement, hand;\n if (hand.className.indexOf('edui-editor-imagescale-hand') != -1 && me.dragId == -1) {\n me.dragId = hand.className.slice(-1);\n me.startPos.x = me.prePos.x = e.clientX;\n me.startPos.y = me.prePos.y = e.clientY;\n domUtils.on(me.doc,'mousemove', me.proxy(me._eventHandler, me));\n }\n break;\n case 'mousemove':\n if (me.dragId != -1) {\n me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y});\n me.prePos.x = e.clientX;\n me.prePos.y = e.clientY;\n elementUpdated = true;\n me.updateTargetElement();\n\n }\n break;\n case 'mouseup':\n if (me.dragId != -1) {\n me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y});\n me.updateTargetElement();\n if (me.target.parentNode) me.attachTo(me.target);\n me.dragId = -1;\n }\n domUtils.un(me.doc,'mousemove', me.proxy(me._eventHandler, me));\n //修复只是点击挪动点,但没有改变大小,不应该触发contentchange\n if(elementUpdated){\n elementUpdated = false;\n me.editor.fireEvent('contentchange');\n }\n\n break;\n default:\n break;\n }\n },\n updateTargetElement: function () {\n var me = this;\n domUtils.setStyles(me.target, {\n 'width': me.resizer.style.width,\n 'height': me.resizer.style.height\n });\n me.target.width = parseInt(me.resizer.style.width);\n me.target.height = parseInt(me.resizer.style.height);\n me.attachTo(me.target);\n },\n updateContainerStyle: function (dir, offset) {\n var me = this,\n dom = me.resizer, tmp;\n\n if (rect[dir][0] != 0) {\n tmp = parseInt(dom.style.left) + offset.x;\n dom.style.left = me._validScaledProp('left', tmp) + 'px';\n }\n if (rect[dir][1] != 0) {\n tmp = parseInt(dom.style.top) + offset.y;\n dom.style.top = me._validScaledProp('top', tmp) + 'px';\n }\n if (rect[dir][2] != 0) {\n tmp = dom.clientWidth + rect[dir][2] * offset.x;\n dom.style.width = me._validScaledProp('width', tmp) + 'px';\n }\n if (rect[dir][3] != 0) {\n tmp = dom.clientHeight + rect[dir][3] * offset.y;\n dom.style.height = me._validScaledProp('height', tmp) + 'px';\n }\n },\n _validScaledProp: function (prop, value) {\n var ele = this.resizer,\n wrap = document;\n\n value = isNaN(value) ? 0 : value;\n switch (prop) {\n case 'left':\n return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value;\n case 'top':\n return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value;\n case 'width':\n return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value;\n case 'height':\n return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value;\n }\n },\n hideCover: function () {\n this.cover.style.display = 'none';\n },\n showCover: function () {\n var me = this,\n editorPos = domUtils.getXY(me.editor.ui.getDom()),\n iframePos = domUtils.getXY(me.editor.iframe);\n\n domUtils.setStyles(me.cover, {\n 'width': me.editor.iframe.offsetWidth + 'px',\n 'height': me.editor.iframe.offsetHeight + 'px',\n 'top': iframePos.y - editorPos.y + 'px',\n 'left': iframePos.x - editorPos.x + 'px',\n 'position': 'absolute',\n 'display': ''\n })\n },\n show: function (targetObj) {\n var me = this;\n me.resizer.style.display = 'block';\n if(targetObj) me.attachTo(targetObj);\n\n domUtils.on(this.resizer, 'mousedown', me.proxy(me._eventHandler, me));\n domUtils.on(me.doc, 'mouseup', me.proxy(me._eventHandler, me));\n\n me.showCover();\n me.editor.fireEvent('afterscaleshow', me);\n me.editor.fireEvent('saveScene');\n },\n hide: function () {\n var me = this;\n me.hideCover();\n me.resizer.style.display = 'none';\n\n domUtils.un(me.resizer, 'mousedown', me.proxy(me._eventHandler, me));\n domUtils.un(me.doc, 'mouseup', me.proxy(me._eventHandler, me));\n me.editor.fireEvent('afterscalehide', me);\n },\n proxy: function( fn, context ) {\n return function(e) {\n return fn.apply( context || this, arguments);\n };\n },\n attachTo: function (targetObj) {\n var me = this,\n target = me.target = targetObj,\n resizer = this.resizer,\n imgPos = domUtils.getXY(target),\n iframePos = domUtils.getXY(me.editor.iframe),\n editorPos = domUtils.getXY(resizer.parentNode);\n\n domUtils.setStyles(resizer, {\n 'width': target.width + 'px',\n 'height': target.height + 'px',\n 'left': iframePos.x + imgPos.x - me.editor.document.body.scrollLeft - editorPos.x - parseInt(resizer.style.borderLeftWidth) + 'px',\n 'top': iframePos.y + imgPos.y - me.editor.document.body.scrollTop - editorPos.y - parseInt(resizer.style.borderTopWidth) + 'px'\n });\n }\n }\n })();\n\n return function () {\n var me = this,\n imageScale;\n\n me.setOpt('imageScaleEnabled', true);\n\n if ( !browser.ie && me.options.imageScaleEnabled) {\n me.addListener('click', function (type, e) {\n\n var range = me.selection.getRange(),\n img = range.getClosedNode();\n\n if (img && img.tagName == 'IMG' && me.body.contentEditable!=\"false\") {\n\n if (img.className.indexOf(\"edui-faked-music\") != -1 ||\n img.getAttribute(\"anchorname\") ||\n domUtils.hasClass(img, 'loadingclass') ||\n domUtils.hasClass(img, 'loaderrorclass')) { return }\n\n if (!imageScale) {\n imageScale = new Scale();\n imageScale.init(me);\n me.ui.getDom().appendChild(imageScale.resizer);\n\n var _keyDownHandler = function (e) {\n imageScale.hide();\n if(imageScale.target) me.selection.getRange().selectNode(imageScale.target).select();\n }, _mouseDownHandler = function (e) {\n var ele = e.target || e.srcElement;\n if (ele && (ele.className===undefined || ele.className.indexOf('edui-editor-imagescale') == -1)) {\n _keyDownHandler(e);\n }\n }, timer;\n\n me.addListener('afterscaleshow', function (e) {\n me.addListener('beforekeydown', _keyDownHandler);\n me.addListener('beforemousedown', _mouseDownHandler);\n domUtils.on(document, 'keydown', _keyDownHandler);\n domUtils.on(document,'mousedown', _mouseDownHandler);\n me.selection.getNative().removeAllRanges();\n });\n me.addListener('afterscalehide', function (e) {\n me.removeListener('beforekeydown', _keyDownHandler);\n me.removeListener('beforemousedown', _mouseDownHandler);\n domUtils.un(document, 'keydown', _keyDownHandler);\n domUtils.un(document,'mousedown', _mouseDownHandler);\n var target = imageScale.target;\n if (target.parentNode) {\n me.selection.getRange().selectNode(target).select();\n }\n });\n //TODO 有iframe的情况,mousedown不能往下传。。\n domUtils.on(imageScale.resizer, 'mousedown', function (e) {\n me.selection.getNative().removeAllRanges();\n var ele = e.target || e.srcElement;\n if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) {\n timer = setTimeout(function () {\n imageScale.hide();\n if(imageScale.target) me.selection.getRange().selectNode(ele).select();\n }, 200);\n }\n });\n domUtils.on(imageScale.resizer, 'mouseup', function (e) {\n var ele = e.target || e.srcElement;\n if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) {\n clearTimeout(timer);\n }\n });\n }\n imageScale.show(img);\n } else {\n if (imageScale && imageScale.resizer.style.display != 'none') imageScale.hide();\n }\n });\n }\n\n if (browser.webkit) {\n me.addListener('click', function (type, e) {\n if (e.target.tagName == 'IMG' && me.body.contentEditable!=\"false\") {\n var range = new dom.Range(me.document);\n range.selectNode(e.target).select();\n }\n });\n }\n }\n})();\n\n// plugins/autolink.js\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);\n\n// plugins/autoheight.js\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\n\n// plugins/autofloat.js\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\n\n// plugins/video.js\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);\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 = ''\r\n break;\r\n case 'embed':\r\n str = '';\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 = '' +\r\n '';\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 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 : \"
    \");\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})();\n\n// plugins/table.cmds.js\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('');\r\n for (var c = 0; c < colsNum; c++) {\r\n html.push('
  • ' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '
    ') + '
    ' + html.join('') + '
    '\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 ? ' ' : '
    ';\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 : '
    '\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 : '
    ';\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\n\n// plugins/table.action.js\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.innerHTML.replace(/>\\s*<').replace(/\\bth\\b/gi, \"td\") + '
    ')\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 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 //区分用户的行为是拖动还是双击\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 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\n\n// plugins/table.sort.js\n/**\n * Created with JetBrains PhpStorm.\n * User: Jinqn\n * Date: 13-10-12\n * Time: 上午10:20\n * To change this template use File | Settings | File Templates.\n */\n\nUE.UETable.prototype.sortTable = function (sortByCellIndex, compareFn) {\n var table = this.table,\n rows = table.rows,\n trArray = [],\n flag = rows[0].cells[0].tagName === \"TH\",\n lastRowIndex = 0;\n if(this.selectedTds.length){\n var range = this.cellsRange,\n len = range.endRowIndex + 1;\n for (var i = range.beginRowIndex; i < len; i++) {\n trArray[i] = rows[i];\n }\n trArray.splice(0,range.beginRowIndex);\n lastRowIndex = (range.endRowIndex +1) === this.rowsNum ? 0 : range.endRowIndex +1;\n }else{\n for (var i = 0,len = rows.length; i < len; i++) {\n trArray[i] = rows[i];\n }\n }\n\n var Fn = {\n 'reversecurrent': function(td1,td2){\n return 1;\n },\n 'orderbyasc': function(td1,td2){\n var value1 = td1.innerText||td1.textContent,\n value2 = td2.innerText||td2.textContent;\n return value1.localeCompare(value2);\n },\n 'reversebyasc': function(td1,td2){\n var value1 = td1.innerHTML,\n value2 = td2.innerHTML;\n return value2.localeCompare(value1);\n },\n 'orderbynum': function(td1,td2){\n var value1 = td1[browser.ie ? 'innerText':'textContent'].match(/\\d+/),\n value2 = td2[browser.ie ? 'innerText':'textContent'].match(/\\d+/);\n if(value1) value1 = +value1[0];\n if(value2) value2 = +value2[0];\n return (value1||0) - (value2||0);\n },\n 'reversebynum': function(td1,td2){\n var value1 = td1[browser.ie ? 'innerText':'textContent'].match(/\\d+/),\n value2 = td2[browser.ie ? 'innerText':'textContent'].match(/\\d+/);\n if(value1) value1 = +value1[0];\n if(value2) value2 = +value2[0];\n return (value2||0) - (value1||0);\n }\n };\n\n //对表格设置排序的标记data-sort-type\n table.setAttribute('data-sort-type', compareFn && typeof compareFn === \"string\" && Fn[compareFn] ? compareFn:'');\n\n //th不参与排序\n flag && trArray.splice(0, 1);\n trArray = utils.sort(trArray,function (tr1, tr2) {\n var result;\n if (compareFn && typeof compareFn === \"function\") {\n result = compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\n } else if (compareFn && typeof compareFn === \"number\") {\n result = 1;\n } else if (compareFn && typeof compareFn === \"string\" && Fn[compareFn]) {\n result = Fn[compareFn].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\n } else {\n result = Fn['orderbyasc'].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\n }\n return result;\n });\n var fragment = table.ownerDocument.createDocumentFragment();\n for (var j = 0, len = trArray.length; j < len; j++) {\n fragment.appendChild(trArray[j]);\n }\n var tbody = table.getElementsByTagName(\"tbody\")[0];\n if(!lastRowIndex){\n tbody.appendChild(fragment);\n }else{\n tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1])\n }\n};\n\nUE.plugins['tablesort'] = function () {\n var me = this,\n UT = UE.UETable,\n getUETable = function (tdOrTable) {\n return UT.getUETable(tdOrTable);\n },\n getTableItemsByRange = function (editor) {\n return UT.getTableItemsByRange(editor);\n };\n\n\n me.ready(function () {\n //添加表格可排序的样式\n utils.cssRule('tablesort',\n 'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;' +\n ' background-image:url(' + me.options.themePath + me.options.theme + '/images/sortable.png);}',\n me.document);\n\n //做单元格合并操作时,清除可排序标识\n me.addListener(\"afterexeccommand\", function (type, cmd) {\n if( cmd == 'mergeright' || cmd == 'mergedown' || cmd == 'mergecells') {\n this.execCommand('disablesort');\n }\n });\n });\n\n\n\n //表格排序\n UE.commands['sorttable'] = {\n queryCommandState: function () {\n var me = this,\n tableItems = getTableItemsByRange(me);\n if (!tableItems.cell) return -1;\n var table = tableItems.table,\n cells = table.getElementsByTagName(\"td\");\n for (var i = 0, cell; cell = cells[i++];) {\n if (cell.rowSpan != 1 || cell.colSpan != 1) return -1;\n }\n return 0;\n },\n execCommand: function (cmd, fn) {\n var me = this,\n range = me.selection.getRange(),\n bk = range.createBookmark(true),\n tableItems = getTableItemsByRange(me),\n cell = tableItems.cell,\n ut = getUETable(tableItems.table),\n cellInfo = ut.getCellInfo(cell);\n ut.sortTable(cellInfo.cellIndex, fn);\n range.moveToBookmark(bk);\n try{\n range.select();\n }catch(e){}\n }\n };\n\n //设置表格可排序,清除表格可排序\n UE.commands[\"enablesort\"] = UE.commands[\"disablesort\"] = {\n queryCommandState: function (cmd) {\n var table = getTableItemsByRange(this).table;\n if(table && cmd=='enablesort') {\n var cells = domUtils.getElementsByTagName(table, 'th td');\n for(var i = 0; i1 || cells[i].getAttribute('rowspan')>1) return -1;\n }\n }\n\n return !table ? -1: cmd=='enablesort' ^ table.getAttribute('data-sort')!='sortEnabled' ? -1:0;\n },\n execCommand: function (cmd) {\n var table = getTableItemsByRange(this).table;\n table.setAttribute(\"data-sort\", cmd == \"enablesort\" ? \"sortEnabled\" : \"sortDisabled\");\n cmd == \"enablesort\" ? domUtils.addClass(table,\"sortEnabled\"):domUtils.removeClasses(table,\"sortEnabled\");\n }\n };\n};\n\n\n// plugins/contextmenu.js\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\n\n// plugins/shortcutmenu.js\n///import core\n///commands 弹出菜单\n// commandsName popupmenu\n///commandsTitle 弹出菜单\n/**\n * 弹出菜单\n * @function\n * @name baidu.editor.plugins.popupmenu\n * @author xuheng\n */\n\nUE.plugins['shortcutmenu'] = function () {\n var me = this,\n menu,\n items = me.options.shortcutMenu || [];\n\n if (!items.length) {\n return;\n }\n\n me.addListener ('contextmenu mouseup' , function (type , e) {\n var me = this,\n customEvt = {\n type : type ,\n target : e.target || e.srcElement ,\n screenX : e.screenX ,\n screenY : e.screenY ,\n clientX : e.clientX ,\n clientY : e.clientY\n };\n\n setTimeout (function () {\n var rng = me.selection.getRange ();\n if (rng.collapsed === false || type == \"contextmenu\") {\n\n if (!menu) {\n menu = new baidu.editor.ui.ShortCutMenu ({\n editor : me ,\n items : items ,\n theme : me.options.theme ,\n className : 'edui-shortcutmenu'\n });\n\n menu.render ();\n me.fireEvent (\"afterrendershortcutmenu\" , menu);\n }\n\n menu.show (customEvt , !!UE.plugins['contextmenu']);\n }\n });\n\n if (type == 'contextmenu') {\n domUtils.preventDefault (e);\n if (browser.ie9below) {\n var ieRange;\n try {\n ieRange = me.selection.getNative().createRange();\n } catch (e) {\n return;\n }\n if (ieRange.item) {\n var range = new dom.Range (me.document);\n range.selectNode (ieRange.item (0)).select (true , true);\n\n }\n }\n }\n });\n\n me.addListener ('keydown' , function (type) {\n if (type == \"keydown\") {\n menu && !menu.isHidden && menu.hide ();\n }\n\n });\n\n};\n\n\n\n\n// plugins/basestyle.js\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\n\n// plugins/elementpath.js\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\n\n// plugins/formatmatch.js\n/**\n * 格式刷,只格式inline的\n * @file\n * @since 1.2.6.1\n */\n\n/**\n * 格式刷\n * @command formatmatch\n * @method execCommand\n * @remind 该操作不能复制段落格式\n * @param { String } cmd 命令字符串\n * @example\n * ```javascript\n * //editor是编辑器实例\n * //获取格式刷\n * editor.execCommand( 'formatmatch' );\n * ```\n */\nUE.plugins['formatmatch'] = function(){\n\n var me = this,\n list = [],img,\n flag = 0;\n\n me.addListener('reset',function(){\n list = [];\n flag = 0;\n });\n\n function addList(type,evt){\n \n if(browser.webkit){\n var target = evt.target.tagName == 'IMG' ? evt.target : null;\n }\n\n function addFormat(range){\n\n if(text){\n range.selectNode(text);\n }\n return range.applyInlineStyle(list[list.length-1].tagName,null,list);\n\n }\n\n me.undoManger && me.undoManger.save();\n\n var range = me.selection.getRange(),\n imgT = target || range.getClosedNode();\n if(img && imgT && imgT.tagName == 'IMG'){\n //trace:964\n\n imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat ||'none') + ';display:' + (img.style.display||'inline');\n\n img = null;\n }else{\n if(!img){\n var collapsed = range.collapsed;\n if(collapsed){\n var text = me.document.createTextNode('match');\n range.insertNode(text).select();\n\n\n }\n me.__hasEnterExecCommand = true;\n //不能把block上的属性干掉\n //trace:1553\n var removeFormatAttributes = me.options.removeFormatAttributes;\n me.options.removeFormatAttributes = '';\n me.execCommand('removeformat');\n me.options.removeFormatAttributes = removeFormatAttributes;\n me.__hasEnterExecCommand = false;\n //trace:969\n range = me.selection.getRange();\n if(list.length){\n addFormat(range);\n }\n if(text){\n range.setStartBefore(text).collapse(true);\n\n }\n range.select();\n text && domUtils.remove(text);\n }\n\n }\n\n\n\n\n me.undoManger && me.undoManger.save();\n me.removeListener('mouseup',addList);\n flag = 0;\n }\n\n me.commands['formatmatch'] = {\n execCommand : function( cmdName ) {\n \n if(flag){\n flag = 0;\n list = [];\n me.removeListener('mouseup',addList);\n return;\n }\n\n\n \n var range = me.selection.getRange();\n img = range.getClosedNode();\n if(!img || img.tagName != 'IMG'){\n range.collapse(true).shrinkBoundary();\n var start = range.startContainer;\n list = domUtils.findParents(start,true,function(node){\n return !domUtils.isBlockElm(node) && node.nodeType == 1;\n });\n //a不能加入格式刷, 并且克隆节点\n for(var i=0,ci;ci=list[i];i++){\n if(ci.tagName == 'A'){\n list.splice(i,1);\n break;\n }\n }\n\n }\n\n me.addListener('mouseup',addList);\n flag = 1;\n\n\n },\n queryCommandState : function() {\n return flag;\n },\n notNeedUndo : 1\n };\n};\n\n\n\n// plugins/searchreplace.js\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});\n\n// plugins/customstyle.js\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};\n\n// plugins/catchremoteimage.js\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};\n\n// plugins/snapscreen.js\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\n\n// plugins/insertparagraph.js\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\n\n// plugins/webapp.js\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 百度应用主页: http://app.baidu.com/\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 ? '

    ' : '') + '' +\r\n// (addParagraph ? '

    ' : '')\r\n// :\r\n// '';\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 ''\r\n :\r\n ''\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 百度应用主页: http://app.baidu.com/\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});\n\n// plugins/template.js\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\n\n// plugins/music.js\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 ''\r\n :\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-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});\n\n// plugins/autoupload.js\n/**\n * @description\n * 1.拖放文件到编辑区域,自动上传并插入到选区\n * 2.插入粘贴板的图片,自动上传并插入到选区\n * @author Jinqn\n * @date 2013-10-14\n */\nUE.plugin.register('autoupload', function (){\n\n function sendAndInsertFile(file, editor) {\n var me = editor;\n //模拟数据\n var fieldName, urlPrefix, maxSize, allowFiles, actionUrl,\n loadingHtml, errorHandler, successHandler,\n filetype = /image\\/\\w+/i.test(file.type) ? 'image':'file',\n loadingId = 'loading_' + (+new Date()).toString(36);\n\n fieldName = me.getOpt(filetype + 'FieldName');\n urlPrefix = me.getOpt(filetype + 'UrlPrefix');\n maxSize = me.getOpt(filetype + 'MaxSize');\n allowFiles = me.getOpt(filetype + 'AllowFiles');\n actionUrl = me.getActionUrl(me.getOpt(filetype + 'ActionName'));\n errorHandler = function(title) {\n var loader = me.document.getElementById(loadingId);\n loader && domUtils.remove(loader);\n me.fireEvent('showmessage', {\n 'id': loadingId,\n 'content': title,\n 'type': 'error',\n 'timeout': 4000\n });\n };\n\n if (filetype == 'image') {\n loadingHtml = '';\n successHandler = function(data) {\n var link = urlPrefix + data.url,\n loader = me.document.getElementById(loadingId);\n if (loader) {\n loader.setAttribute('src', link);\n loader.setAttribute('_src', link);\n loader.setAttribute('title', data.title || '');\n loader.setAttribute('alt', data.original || '');\n loader.removeAttribute('id');\n domUtils.removeClasses(loader, 'loadingclass');\n }\n };\n } else {\n loadingHtml = '

    ' +\n '' +\n '

    ';\n successHandler = function(data) {\n var link = urlPrefix + data.url,\n loader = me.document.getElementById(loadingId);\n\n var rng = me.selection.getRange(),\n bk = rng.createBookmark();\n rng.selectNode(loader).select();\n me.execCommand('insertfile', {'url': link});\n rng.moveToBookmark(bk).select();\n };\n }\n\n /* 插入loading的占位符 */\n me.execCommand('inserthtml', loadingHtml);\n\n /* 判断后端配置是否没有加载成功 */\n if (!me.getOpt(filetype + 'ActionName')) {\n errorHandler(me.getLang('autoupload.errorLoadConfig'));\n return;\n }\n /* 判断文件大小是否超出限制 */\n if(file.size > maxSize) {\n errorHandler(me.getLang('autoupload.exceedSizeError'));\n return;\n }\n /* 判断文件格式是否超出允许 */\n var fileext = file.name ? file.name.substr(file.name.lastIndexOf('.')):'';\n if ((fileext && filetype != 'image') || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {\n errorHandler(me.getLang('autoupload.exceedTypeError'));\n return;\n }\n\n /* 创建Ajax并提交 */\n var xhr = new XMLHttpRequest(),\n fd = new FormData(),\n params = utils.serializeParam(me.queryCommandValue('serverparam')) || '',\n url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params);\n\n fd.append(fieldName, file, file.name || ('blob.' + file.type.substr('image/'.length)));\n fd.append('type', 'ajax');\n xhr.open(\"post\", url, true);\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n xhr.addEventListener('load', function (e) {\n try{\n var json = (new Function(\"return \" + utils.trim(e.target.response)))();\n if (json.state == 'SUCCESS' && json.url) {\n successHandler(json);\n } else {\n errorHandler(json.state);\n }\n }catch(er){\n errorHandler(me.getLang('autoupload.loadError'));\n }\n });\n xhr.send(fd);\n }\n\n function getPasteImage(e){\n return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items:null;\n }\n function getDropImage(e){\n return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files:null;\n }\n\n return {\n outputRule: function(root){\n utils.each(root.getNodesByTagName('img'),function(n){\n if (/\\b(loaderrorclass)|(bloaderrorclass)\\b/.test(n.getAttr('class'))) {\n n.parentNode.removeChild(n);\n }\n });\n utils.each(root.getNodesByTagName('p'),function(n){\n if (/\\bloadpara\\b/.test(n.getAttr('class'))) {\n n.parentNode.removeChild(n);\n }\n });\n },\n bindEvents:{\n //插入粘贴板的图片,拖放插入图片\n 'ready':function(e){\n var me = this;\n if(window.FormData && window.FileReader) {\n domUtils.on(me.body, 'paste drop', function(e){\n var hasImg = false,\n items;\n //获取粘贴板文件列表或者拖放文件列表\n items = e.type == 'paste' ? getPasteImage(e):getDropImage(e);\n if(items){\n var len = items.length,\n file;\n while (len--){\n file = items[len];\n if(file.getAsFile) file = file.getAsFile();\n if(file && file.size > 0) {\n sendAndInsertFile(file, me);\n hasImg = true;\n }\n }\n hasImg && e.preventDefault();\n }\n\n });\n //取消拖放图片时出现的文字光标位置提示\n domUtils.on(me.body, 'dragover', function (e) {\n if(e.dataTransfer.types[0] == 'Files') {\n e.preventDefault();\n }\n });\n\n //设置loading的样式\n utils.cssRule('loading',\n '.loadingclass{display:inline-block;cursor:default;background: url(\\''\n + this.options.themePath\n + this.options.theme +'/images/loading.gif\\') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\\n' +\n '.loaderrorclass{display:inline-block;cursor:default;background: url(\\''\n + this.options.themePath\n + this.options.theme +'/images/loaderror.png\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +\n '}',\n this.document);\n }\n }\n }\n }\n});\n\n// plugins/autosave.js\nUE.plugin.register('autosave', function (){\n\n var me = this,\n //无限循环保护\n lastSaveTime = new Date(),\n //最小保存间隔时间\n MIN_TIME = 20,\n //auto save key\n saveKey = null;\n\n function save ( editor ) {\n\n var saveData;\n\n if ( new Date() - lastSaveTime < MIN_TIME ) {\n return;\n }\n\n if ( !editor.hasContents() ) {\n //这里不能调用命令来删除, 会造成事件死循环\n saveKey && me.removePreferences( saveKey );\n return;\n }\n\n lastSaveTime = new Date();\n\n editor._saveFlag = null;\n\n saveData = me.body.innerHTML;\n\n if ( editor.fireEvent( \"beforeautosave\", {\n content: saveData\n } ) === false ) {\n return;\n }\n\n me.setPreferences( saveKey, saveData );\n\n editor.fireEvent( \"afterautosave\", {\n content: saveData\n } );\n\n }\n\n return {\n defaultOptions: {\n //默认间隔时间\n saveInterval: 500\n },\n bindEvents:{\n 'ready':function(){\n\n var _suffix = \"-drafts-data\",\n key = null;\n\n if ( me.key ) {\n key = me.key + _suffix;\n } else {\n key = ( me.container.parentNode.id || 'ue-common' ) + _suffix;\n }\n\n //页面地址+编辑器ID 保持唯一\n saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\\/]/g, '_' ) + key;\n\n },\n\n 'contentchange': function () {\n\n if ( !saveKey ) {\n return;\n }\n\n if ( me._saveFlag ) {\n window.clearTimeout( me._saveFlag );\n }\n\n if ( me.options.saveInterval > 0 ) {\n\n me._saveFlag = window.setTimeout( function () {\n\n save( me );\n\n }, me.options.saveInterval );\n\n } else {\n\n save(me);\n\n }\n\n\n }\n },\n commands:{\n 'clearlocaldata':{\n execCommand:function (cmd, name) {\n if ( saveKey && me.getPreferences( saveKey ) ) {\n me.removePreferences( saveKey )\n }\n },\n notNeedUndo: true,\n ignoreContentChange:true\n },\n\n 'getlocaldata':{\n execCommand:function (cmd, name) {\n return saveKey ? me.getPreferences( saveKey ) || '' : '';\n },\n notNeedUndo: true,\n ignoreContentChange:true\n },\n\n 'drafts':{\n execCommand:function (cmd, name) {\n if ( saveKey ) {\n me.body.innerHTML = me.getPreferences( saveKey ) || '

    '+domUtils.fillHtml+'

    ';\n me.focus(true);\n }\n },\n queryCommandState: function () {\n return saveKey ? ( me.getPreferences( saveKey ) === null ? -1 : 0 ) : -1;\n },\n notNeedUndo: true,\n ignoreContentChange:true\n }\n }\n }\n\n});\n\n// plugins/charts.js\nUE.plugin.register('charts', function (){\n\n var me = this;\n\n return {\n bindEvents: {\n 'chartserror': function () {\n }\n },\n commands:{\n 'charts': {\n execCommand: function ( cmd, data ) {\n\n var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true),\n flagText = [],\n config = {};\n\n if ( !tableNode ) {\n return false;\n }\n\n if ( !validData( tableNode ) ) {\n me.fireEvent( \"chartserror\" );\n return false;\n }\n\n config.title = data.title || '';\n config.subTitle = data.subTitle || '';\n config.xTitle = data.xTitle || '';\n config.yTitle = data.yTitle || '';\n config.suffix = data.suffix || '';\n config.tip = data.tip || '';\n //数据对齐方式\n config.dataFormat = data.tableDataFormat || '';\n //图表类型\n config.chartType = data.chartType || 0;\n\n for ( var key in config ) {\n\n if ( !config.hasOwnProperty( key ) ) {\n continue;\n }\n\n flagText.push( key+\":\"+config[ key ] );\n\n }\n\n tableNode.setAttribute( \"data-chart\", flagText.join( \";\" ) );\n domUtils.addClass( tableNode, \"edui-charts-table\" );\n\n\n\n },\n queryCommandState: function ( cmd, name ) {\n\n var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true);\n return tableNode && validData( tableNode ) ? 0 : -1;\n\n }\n }\n },\n inputRule:function(root){\n utils.each(root.getNodesByTagName('table'),function( tableNode ){\n\n if ( tableNode.getAttr(\"data-chart\") !== undefined ) {\n tableNode.setAttr(\"style\");\n }\n\n })\n\n },\n outputRule:function(root){\n utils.each(root.getNodesByTagName('table'),function( tableNode ){\n\n if ( tableNode.getAttr(\"data-chart\") !== undefined ) {\n tableNode.setAttr(\"style\", \"display: none;\");\n }\n\n })\n\n }\n }\n\n function validData ( table ) {\n\n var firstRows = null,\n cellCount = 0;\n\n //行数不够\n if ( table.rows.length < 2 ) {\n return false;\n }\n\n //列数不够\n if ( table.rows[0].cells.length < 2 ) {\n return false;\n }\n\n //第一行所有cell必须是th\n firstRows = table.rows[ 0 ].cells;\n cellCount = firstRows.length;\n\n for ( var i = 0, cell; cell = firstRows[ i ]; i++ ) {\n\n if ( cell.tagName.toLowerCase() !== 'th' ) {\n return false;\n }\n\n }\n\n for ( var i = 1, row; row = table.rows[ i ]; i++ ) {\n\n //每行单元格数不匹配, 返回false\n if ( row.cells.length != cellCount ) {\n return false;\n }\n\n //第一列不是th也返回false\n if ( row.cells[0].tagName.toLowerCase() !== 'th' ) {\n return false;\n }\n\n for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {\n\n var value = utils.trim( ( cell.innerText || cell.textContent || '' ) );\n\n value = value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\\s+|\\s+$/g, '' );\n\n //必须是数字\n if ( !/^\\d*\\.?\\d+$/.test( value ) ) {\n return false;\n }\n\n }\n\n }\n\n return true;\n\n }\n\n});\n\n// plugins/section.js\n/**\n * 目录大纲支持插件\n * @file\n * @since 1.3.0\n */\nUE.plugin.register('section', function (){\n /* 目录节点对象 */\n function Section(option){\n this.tag = '';\n this.level = -1,\n this.dom = null;\n this.nextSection = null;\n this.previousSection = null;\n this.parentSection = null;\n this.startAddress = [];\n this.endAddress = [];\n this.children = [];\n }\n function getSection(option) {\n var section = new Section();\n return utils.extend(section, option);\n }\n function getNodeFromAddress(startAddress, root) {\n var current = root;\n for(var i = 0;i < startAddress.length; i++) {\n if(!current.childNodes) return null;\n current = current.childNodes[startAddress[i]];\n }\n return current;\n }\n\n var me = this;\n\n return {\n bindMultiEvents:{\n type: 'aftersetcontent afterscencerestore',\n handler: function(){\n me.fireEvent('updateSections');\n }\n },\n bindEvents:{\n /* 初始化、拖拽、粘贴、执行setcontent之后 */\n 'ready': function (){\n me.fireEvent('updateSections');\n domUtils.on(me.body, 'drop paste', function(){\n me.fireEvent('updateSections');\n });\n },\n /* 执行paragraph命令之后 */\n 'afterexeccommand': function (type, cmd) {\n if(cmd == 'paragraph') {\n me.fireEvent('updateSections');\n }\n },\n /* 部分键盘操作,触发updateSections事件 */\n 'keyup': function (type, e) {\n var me = this,\n range = me.selection.getRange();\n if(range.collapsed != true) {\n me.fireEvent('updateSections');\n } else {\n var keyCode = e.keyCode || e.which;\n if(keyCode == 13 || keyCode == 8 || keyCode == 46) {\n me.fireEvent('updateSections');\n }\n }\n }\n },\n commands:{\n 'getsections': {\n execCommand: function (cmd, levels) {\n var levelFn = levels || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n for (var i = 0; i < levelFn.length; i++) {\n if (typeof levelFn[i] == 'string') {\n levelFn[i] = function(fn){\n return function(node){\n return node.tagName == fn.toUpperCase()\n };\n }(levelFn[i]);\n } else if (typeof levelFn[i] != 'function') {\n levelFn[i] = function (node) {\n return null;\n }\n }\n }\n function getSectionLevel(node) {\n for (var i = 0; i < levelFn.length; i++) {\n if (levelFn[i](node)) return i;\n }\n return -1;\n }\n\n var me = this,\n Directory = getSection({'level':-1, 'title':'root'}),\n previous = Directory;\n\n function traversal(node, Directory) {\n var level,\n tmpSection = null,\n parent,\n child,\n children = node.childNodes;\n for (var i = 0, len = children.length; i < len; i++) {\n child = children[i];\n level = getSectionLevel(child);\n if (level >= 0) {\n var address = me.selection.getRange().selectNode(child).createAddress(true).startAddress,\n current = getSection({\n 'tag': child.tagName,\n 'title': child.innerText || child.textContent || '',\n 'level': level,\n 'dom': child,\n 'startAddress': utils.clone(address, []),\n 'endAddress': utils.clone(address, []),\n 'children': []\n });\n previous.nextSection = current;\n current.previousSection = previous;\n parent = previous;\n while(level <= parent.level){\n parent = parent.parentSection;\n }\n current.parentSection = parent;\n parent.children.push(current);\n tmpSection = previous = current;\n } else {\n child.nodeType === 1 && traversal(child, Directory);\n tmpSection && tmpSection.endAddress[tmpSection.endAddress.length - 1] ++;\n }\n }\n }\n traversal(me.body, Directory);\n return Directory;\n },\n notNeedUndo: true\n },\n 'movesection': {\n execCommand: function (cmd, sourceSection, targetSection, isAfter) {\n\n var me = this,\n targetAddress,\n target;\n\n if(!sourceSection || !targetSection || targetSection.level == -1) return;\n\n targetAddress = isAfter ? targetSection.endAddress:targetSection.startAddress;\n target = getNodeFromAddress(targetAddress, me.body);\n\n /* 判断目标地址是否被源章节包含 */\n if(!targetAddress || !target || isContainsAddress(sourceSection.startAddress, sourceSection.endAddress, targetAddress)) return;\n\n var startNode = getNodeFromAddress(sourceSection.startAddress, me.body),\n endNode = getNodeFromAddress(sourceSection.endAddress, me.body),\n current,\n nextNode;\n\n if(isAfter) {\n current = endNode;\n while ( current && !(domUtils.getPosition( startNode, current ) & domUtils.POSITION_FOLLOWING) ) {\n nextNode = current.previousSibling;\n domUtils.insertAfter(target, current);\n if(current == startNode) break;\n current = nextNode;\n }\n } else {\n current = startNode;\n while ( current && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) {\n nextNode = current.nextSibling;\n target.parentNode.insertBefore(current, target);\n if(current == endNode) break;\n current = nextNode;\n }\n }\n\n me.fireEvent('updateSections');\n\n /* 获取地址的包含关系 */\n function isContainsAddress(startAddress, endAddress, addressTarget){\n var isAfterStartAddress = false,\n isBeforeEndAddress = false;\n for(var i = 0; i< startAddress.length; i++){\n if(i >= addressTarget.length) break;\n if(addressTarget[i] > startAddress[i]) {\n isAfterStartAddress = true;\n break;\n } else if(addressTarget[i] < startAddress[i]) {\n break;\n }\n }\n for(var i = 0; i< endAddress.length; i++){\n if(i >= addressTarget.length) break;\n if(addressTarget[i] < startAddress[i]) {\n isBeforeEndAddress = true;\n break;\n } else if(addressTarget[i] > startAddress[i]) {\n break;\n }\n }\n return isAfterStartAddress && isBeforeEndAddress;\n }\n }\n },\n 'deletesection': {\n execCommand: function (cmd, section, keepChildren) {\n var me = this;\n\n if(!section) return;\n\n function getNodeFromAddress(startAddress) {\n var current = me.body;\n for(var i = 0;i < startAddress.length; i++) {\n if(!current.childNodes) return null;\n current = current.childNodes[startAddress[i]];\n }\n return current;\n }\n\n var startNode = getNodeFromAddress(section.startAddress),\n endNode = getNodeFromAddress(section.endAddress),\n current = startNode,\n nextNode;\n\n if(!keepChildren) {\n while ( current && domUtils.inDoc(endNode, me.document) && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) {\n nextNode = current.nextSibling;\n domUtils.remove(current);\n current = nextNode;\n }\n } else {\n domUtils.remove(current);\n }\n\n me.fireEvent('updateSections');\n }\n },\n 'selectsection': {\n execCommand: function (cmd, section) {\n if(!section && !section.dom) return false;\n var me = this,\n range = me.selection.getRange(),\n address = {\n 'startAddress':utils.clone(section.startAddress, []),\n 'endAddress':utils.clone(section.endAddress, [])\n };\n address.endAddress[address.endAddress.length - 1]++;\n range.moveToAddress(address).select().scrollToView();\n return true;\n },\n notNeedUndo: true\n },\n 'scrolltosection': {\n execCommand: function (cmd, section) {\n if(!section && !section.dom) return false;\n var me = this,\n range = me.selection.getRange(),\n address = {\n 'startAddress':section.startAddress,\n 'endAddress':section.endAddress\n };\n address.endAddress[address.endAddress.length - 1]++;\n range.moveToAddress(address).scrollToView();\n return true;\n },\n notNeedUndo: true\n }\n }\n }\n});\n\n// plugins/simpleupload.js\n/**\n * @description\n * 简单上传:点击按钮,直接选择文件上传\n * @author Jinqn\n * @date 2014-03-31\n */\nUE.plugin.register('simpleupload', function (){\n var me = this,\n isLoaded = false,\n containerBtn;\n\n function initUploadBtn(){\n var w = containerBtn.offsetWidth || 20,\n h = containerBtn.offsetHeight || 20,\n btnIframe = document.createElement('iframe'),\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;';\n\n domUtils.on(btnIframe, 'load', function(){\n\n var timestrap = (+new Date()).toString(36),\n wrapper,\n btnIframeDoc,\n btnIframeBody;\n\n btnIframeDoc = (btnIframe.contentDocument || btnIframe.contentWindow.document);\n btnIframeBody = btnIframeDoc.body;\n wrapper = btnIframeDoc.createElement('div');\n\n wrapper.innerHTML = '
    ' +\n '' +\n '
    ' +\n '';\n\n wrapper.className = 'edui-' + me.options.theme;\n wrapper.id = me.ui.id + '_iframeupload';\n btnIframeBody.style.cssText = btnStyle;\n btnIframeBody.style.width = w + 'px';\n btnIframeBody.style.height = h + 'px';\n btnIframeBody.appendChild(wrapper);\n\n if (btnIframeBody.parentNode) {\n btnIframeBody.parentNode.style.width = w + 'px';\n btnIframeBody.parentNode.style.height = w + 'px';\n }\n\n var form = btnIframeDoc.getElementById('edui_form_' + timestrap);\n var input = btnIframeDoc.getElementById('edui_input_' + timestrap);\n var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);\n\n domUtils.on(input, 'change', function(){\n if(!input.value) return;\n var loadingId = 'loading_' + (+new Date()).toString(36);\n var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '';\n\n var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName'));\n var allowFiles = me.getOpt('imageAllowFiles');\n\n me.focus();\n me.execCommand('inserthtml', '');\n\n function callback(){\n try{\n var link, json, loader,\n body = (iframe.contentDocument || iframe.contentWindow.document).body,\n result = body.innerText || body.textContent || '';\n json = (new Function(\"return \" + result))();\n link = me.options.imageUrlPrefix + json.url;\n if(json.state == 'SUCCESS' && json.url) {\n loader = me.document.getElementById(loadingId);\n loader.setAttribute('src', link);\n loader.setAttribute('_src', link);\n loader.setAttribute('title', json.title || '');\n loader.setAttribute('alt', json.original || '');\n loader.removeAttribute('id');\n domUtils.removeClasses(loader, 'loadingclass');\n } else {\n showErrorLoader && showErrorLoader(json.state);\n }\n }catch(er){\n showErrorLoader && showErrorLoader(me.getLang('simpleupload.loadError'));\n }\n form.reset();\n domUtils.un(iframe, 'load', callback);\n }\n function showErrorLoader(title){\n if(loadingId) {\n var loader = me.document.getElementById(loadingId);\n loader && domUtils.remove(loader);\n me.fireEvent('showmessage', {\n 'id': loadingId,\n 'content': title,\n 'type': 'error',\n 'timeout': 4000\n });\n }\n }\n\n /* 判断后端配置是否没有加载成功 */\n if (!me.getOpt('imageActionName')) {\n errorHandler(me.getLang('autoupload.errorLoadConfig'));\n return;\n }\n // 判断文件格式是否错误\n var filename = input.value,\n fileext = filename ? filename.substr(filename.lastIndexOf('.')):'';\n if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {\n showErrorLoader(me.getLang('simpleupload.exceedTypeError'));\n return;\n }\n\n domUtils.on(iframe, 'load', callback);\n form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?':'&') + params);\n form.submit();\n });\n\n var stateTimer;\n me.addListener('selectionchange', function () {\n clearTimeout(stateTimer);\n stateTimer = setTimeout(function() {\n var state = me.queryCommandState('simpleupload');\n if (state == -1) {\n input.disabled = 'disabled';\n } else {\n input.disabled = false;\n }\n }, 400);\n });\n isLoaded = true;\n });\n\n btnIframe.style.cssText = btnStyle;\n containerBtn.appendChild(btnIframe);\n }\n\n return {\n bindEvents:{\n 'ready': function() {\n //设置loading的样式\n utils.cssRule('loading',\n '.loadingclass{display:inline-block;cursor:default;background: url(\\''\n + this.options.themePath\n + this.options.theme +'/images/loading.gif\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\\n' +\n '.loaderrorclass{display:inline-block;cursor:default;background: url(\\''\n + this.options.themePath\n + this.options.theme +'/images/loaderror.png\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +\n '}',\n this.document);\n },\n /* 初始化简单上传按钮 */\n 'simpleuploadbtnready': function(type, container) {\n containerBtn = container;\n me.afterConfigReady(initUploadBtn);\n }\n },\n outputRule: function(root){\n utils.each(root.getNodesByTagName('img'),function(n){\n if (/\\b(loaderrorclass)|(bloaderrorclass)\\b/.test(n.getAttr('class'))) {\n n.parentNode.removeChild(n);\n }\n });\n },\n commands: {\n 'simpleupload': {\n queryCommandState: function () {\n return isLoaded ? 0:-1;\n }\n }\n }\n }\n});\n\n// plugins/serverparam.js\n/**\n * 服务器提交的额外参数列表设置插件\n * @file\n * @since 1.2.6.1\n */\nUE.plugin.register('serverparam', function (){\n\n var me = this,\n serverParam = {};\n\n return {\n commands:{\n /**\n * 修改服务器提交的额外参数列表,清除所有项\n * @command serverparam\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @example\n * ```javascript\n * editor.execCommand('serverparam');\n * editor.queryCommandValue('serverparam'); //返回空\n * ```\n */\n /**\n * 修改服务器提交的额外参数列表,删除指定项\n * @command serverparam\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @param { String } key 要清除的属性\n * @example\n * ```javascript\n * editor.execCommand('serverparam', 'name'); //删除属性name\n * ```\n */\n /**\n * 修改服务器提交的额外参数列表,使用键值添加项\n * @command serverparam\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @param { String } key 要添加的属性\n * @param { String } value 要添加属性的值\n * @example\n * ```javascript\n * editor.execCommand('serverparam', 'name', 'hello');\n * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'}\n * ```\n */\n /**\n * 修改服务器提交的额外参数列表,传入键值对对象添加多项\n * @command serverparam\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @param { Object } key 传入的键值对对象\n * @example\n * ```javascript\n * editor.execCommand('serverparam', {'name': 'hello'});\n * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'}\n * ```\n */\n /**\n * 修改服务器提交的额外参数列表,使用自定义函数添加多项\n * @command serverparam\n * @method execCommand\n * @param { String } cmd 命令字符串\n * @param { Function } key 自定义获取参数的函数\n * @example\n * ```javascript\n * editor.execCommand('serverparam', function(editor){\n * return {'key': 'value'};\n * });\n * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'}\n * ```\n */\n\n /**\n * 获取服务器提交的额外参数列表\n * @command serverparam\n * @method queryCommandValue\n * @param { String } cmd 命令字符串\n * @example\n * ```javascript\n * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'}\n * ```\n */\n 'serverparam':{\n execCommand:function (cmd, key, value) {\n if (key === undefined || key === null) { //不传参数,清空列表\n serverParam = {};\n } else if (utils.isString(key)) { //传入键值\n if(value === undefined || value === null) {\n delete serverParam[key];\n } else {\n serverParam[key] = value;\n }\n } else if (utils.isObject(key)) { //传入对象,覆盖列表项\n utils.extend(serverParam, key, true);\n } else if (utils.isFunction(key)){ //传入函数,添加列表项\n utils.extend(serverParam, key(), true);\n }\n },\n queryCommandValue: function(){\n return serverParam || {};\n }\n }\n }\n }\n});\n\n\n// plugins/insertfile.js\n/**\n * 插入附件\n */\nUE.plugin.register('insertfile', function (){\n\n var me = this;\n\n function getFileIcon(url){\n var ext = url.substr(url.lastIndexOf('.') + 1).toLowerCase(),\n maps = {\n \"rar\":\"icon_rar.gif\",\n \"zip\":\"icon_rar.gif\",\n \"tar\":\"icon_rar.gif\",\n \"gz\":\"icon_rar.gif\",\n \"bz2\":\"icon_rar.gif\",\n \"doc\":\"icon_doc.gif\",\n \"docx\":\"icon_doc.gif\",\n \"pdf\":\"icon_pdf.gif\",\n \"mp3\":\"icon_mp3.gif\",\n \"xls\":\"icon_xls.gif\",\n \"chm\":\"icon_chm.gif\",\n \"ppt\":\"icon_ppt.gif\",\n \"pptx\":\"icon_ppt.gif\",\n \"avi\":\"icon_mv.gif\",\n \"rmvb\":\"icon_mv.gif\",\n \"wmv\":\"icon_mv.gif\",\n \"flv\":\"icon_mv.gif\",\n \"swf\":\"icon_mv.gif\",\n \"rm\":\"icon_mv.gif\",\n \"exe\":\"icon_exe.gif\",\n \"psd\":\"icon_psd.gif\",\n \"txt\":\"icon_txt.gif\",\n \"jpg\":\"icon_jpg.gif\",\n \"png\":\"icon_jpg.gif\",\n \"jpeg\":\"icon_jpg.gif\",\n \"gif\":\"icon_jpg.gif\",\n \"ico\":\"icon_jpg.gif\",\n \"bmp\":\"icon_jpg.gif\"\n };\n return maps[ext] ? maps[ext]:maps['txt'];\n }\n\n return {\n commands:{\n 'insertfile': {\n execCommand: function (command, filelist){\n filelist = utils.isArray(filelist) ? filelist : [filelist];\n\n var i, item, icon, title,\n html = '',\n URL = me.getOpt('UEDITOR_HOME_URL'),\n iconDir = URL + (URL.substr(URL.length - 1) == '/' ? '':'/') + 'dialogs/attachment/fileTypeImages/';\n for (i = 0; i < filelist.length; i++) {\n item = filelist[i];\n icon = iconDir + getFileIcon(item.url);\n title = item.title || item.url.substr(item.url.lastIndexOf('/') + 1);\n html += '

    ' +\n '' +\n '' + title + '' +\n '

    ';\n }\n me.execCommand('insertHtml', html);\n }\n }\n }\n }\n});\n\n\n\n\n// plugins/xssFilter.js\n/**\n * @file xssFilter.js\n * @desc xss过滤器\n * @author robbenmu\n */\n\nUE.plugins.xssFilter = function() {\n\n\tvar config = UEDITOR_CONFIG;\n\tvar whitList = config.whitList;\n\n\tfunction filter(node) {\n\n\t\tvar tagName = node.tagName;\n\t\tvar attrs = node.attrs;\n\n\t\tif (!whitList.hasOwnProperty(tagName)) {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t\treturn false;\n\t\t}\n\n\t\tUE.utils.each(attrs, function (val, key) {\n\n\t\t\tif (whitList[tagName].indexOf(key) === -1) {\n\t\t\t\tnode.setAttr(key);\n\t\t\t}\n\t\t});\n\t}\n\n\t// 添加inserthtml\\paste等操作用的过滤规则\n\tif (whitList && config.xssFilterRules) {\n\t\tthis.options.filterRules = function () {\n\n\t\t\tvar result = {};\n\n\t\t\tUE.utils.each(whitList, function(val, key) {\n\t\t\t\tresult[key] = function (node) {\n\t\t\t\t\treturn filter(node);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn result;\n\t\t}();\n\t}\n\n\tvar tagList = [];\n\n\tUE.utils.each(whitList, function (val, key) {\n\t\ttagList.push(key);\n\t});\n\n\t// 添加input过滤规则\n\t//\n\tif (whitList && config.inputXssFilter) {\n\t\tthis.addInputRule(function (root) {\n\n\t\t\troot.traversal(function(node) {\n\t\t\t\tif (node.type !== 'element') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfilter(node);\n\t\t\t});\n\t\t});\n\t}\n\t// 添加output过滤规则\n\t//\n\tif (whitList && config.outputXssFilter) {\n\t\tthis.addOutputRule(function (root) {\n\n\t\t\troot.traversal(function(node) {\n\t\t\t\tif (node.type !== 'element') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfilter(node);\n\t\t\t});\n\t\t});\n\t}\n\n};\n\n\n// ui/ui.js\nvar baidu = baidu || {};\r\nbaidu.editor = baidu.editor || {};\r\nUE.ui = baidu.editor.ui = {};\n\n// ui/uiutils.js\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';\r\n }\r\n };\r\n utils.inherits(Separator, UIBase);\r\n\r\n})();\r\n\n\n// ui/mask.js\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 '
    ';\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\n\n// ui/popup.js\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 '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n this.getContentHtmlTpl() +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\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\n\n// ui/colorpicker.js\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 = '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    '+ noColorText +'
    ' +\r\n '
    ' +\r\n '' +\r\n ''+\r\n '';\r\n for (var i=0; i':'')+'';\r\n }\r\n html += i<70 ? '':'';\r\n }\r\n html += '
    '+editor.getLang(\"themeColor\")+'
    '+editor.getLang(\"standardColor\")+'
    =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 '>
    ';\r\n return html;\r\n }\r\n})();\r\n\n\n// ui/tablepicker.js\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 '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\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\n\n// ui/stateful.js\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\n\n// ui/button.js\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 '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n (this.showIcon ? '
    ' : '') +\r\n (this.showText ? '
    ' + this.label + '
    ' : '') +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\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\n\n// ui/splitbutton.js\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('
    ')\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 '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\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\n\n// ui/colorbutton.js\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('
    ')\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\n\n// ui/tablebutton.js\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\n\n// ui/autotypesetpicker.js\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 '
    ' +\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 '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
    ' + lang.mergeLine + '' + lang.delLine + '
    ' + lang.removeFormat + '' + lang.indent + '
    ' + lang.alignment + '' +\r\n '' + me.getLang(\"justifyleft\") +\r\n '' + me.getLang(\"justifycenter\") +\r\n '' + me.getLang(\"justifyright\") +\r\n '
    ' + lang.imageFloat + '' +\r\n '' + me.getLang(\"default\") +\r\n '' + me.getLang(\"justifyleft\") +\r\n '' + me.getLang(\"justifycenter\") +\r\n '' + me.getLang(\"justifyright\") +\r\n '
    ' + lang.removeFontsize + '' + lang.removeFontFamily + '
    ' + lang.removeHtml + '
    ' + lang.pasteFilter + '
    ' + lang.symbol + '' +\r\n '' + lang.bdc2sb +\r\n '' + lang.tobdc + '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\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\n\n// ui/autotypesetbutton.js\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\n\n// ui/cellalignpicker.js\n///import core\n///import uicore\n(function () {\n var utils = baidu.editor.utils,\n Popup = baidu.editor.ui.Popup,\n Stateful = baidu.editor.ui.Stateful,\n UIBase = baidu.editor.ui.UIBase;\n\n /**\n * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始\n * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom'\n * @update 2013/4/2 hancong03@baidu.com\n */\n var CellAlignPicker = baidu.editor.ui.CellAlignPicker = function (options) {\n this.initOptions(options);\n this.initSelected();\n this.initCellAlignPicker();\n };\n CellAlignPicker.prototype = {\n //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引\n initSelected: function(){\n\n var status = {\n\n valign: {\n top: 0,\n middle: 1,\n bottom: 2\n },\n align: {\n left: 0,\n center: 1,\n right: 2\n },\n count: 3\n\n },\n result = -1;\n\n if( this.selected ) {\n this.selectedIndex = status.valign[ this.selected.valign ] * status.count + status.align[ this.selected.align ];\n }\n\n },\n initCellAlignPicker:function () {\n this.initUIBase();\n this.Stateful_init();\n },\n getHtmlTpl:function () {\n\n var alignType = [ 'left', 'center', 'right' ],\n COUNT = 9,\n tempClassName = null,\n tempIndex = -1,\n tmpl = [];\n\n\n for( var i= 0; i');\n\n tmpl.push( '
    ' );\n\n tempIndex === 2 && tmpl.push('');\n\n }\n\n return '
    ' +\n '
    ' +\n '' +\n tmpl.join('') +\n '
    ' +\n '
    ' +\n '
    ';\n },\n getStateDom: function (){\n return this.target;\n },\n _onClick: function (evt){\n var target= evt.target || evt.srcElement;\n if(/icon/.test(target.className)){\n this.items[target.parentNode.getAttribute(\"index\")].onclick();\n Popup.postHide(evt);\n }\n },\n _UIBase_render:UIBase.prototype.render\n };\n utils.inherits(CellAlignPicker, UIBase);\n utils.extend(CellAlignPicker.prototype, Stateful,true);\n})();\n\n\n\n\n\n// ui/pastepicker.js\n///import core\n///import uicore\n(function () {\n var utils = baidu.editor.utils,\n Stateful = baidu.editor.ui.Stateful,\n uiUtils = baidu.editor.ui.uiUtils,\n UIBase = baidu.editor.ui.UIBase;\n\n var PastePicker = baidu.editor.ui.PastePicker = function (options) {\n this.initOptions(options);\n this.initPastePicker();\n };\n PastePicker.prototype = {\n initPastePicker:function () {\n this.initUIBase();\n this.Stateful_init();\n },\n getHtmlTpl:function () {\n return '
    ' +\n '
    ' +\n '
    ' + this.editor.getLang(\"pasteOpt\") + '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ''\n },\n getStateDom:function () {\n return this.target;\n },\n format:function (param) {\n this.editor.ui._isTransfer = true;\n this.editor.fireEvent('pasteTransfer', param);\n },\n _onClick:function (cur) {\n var node = domUtils.getNextDomNode(cur),\n screenHt = uiUtils.getViewportRect().height,\n subPop = uiUtils.getClientRect(node);\n\n if ((subPop.top + subPop.height) > screenHt)\n node.style.top = (-subPop.height - cur.offsetHeight) + \"px\";\n else\n node.style.top = \"\";\n\n if (/hidden/ig.test(domUtils.getComputedStyle(node, \"visibility\"))) {\n node.style.visibility = \"visible\";\n domUtils.addClass(cur, \"edui-state-opened\");\n } else {\n node.style.visibility = \"hidden\";\n domUtils.removeClasses(cur, \"edui-state-opened\")\n }\n },\n _UIBase_render:UIBase.prototype.render\n };\n utils.inherits(PastePicker, UIBase);\n utils.extend(PastePicker.prototype, Stateful, true);\n})();\n\n\n\n\n\n\n// ui/toolbar.js\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' +\r\n buff.join('') +\r\n ''\r\n },\r\n postRender: function (){\r\n var box = this.getDom();\r\n for (var i=0; i
    ';\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 ('
    ' + buff.join('') + '
    ');\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 '
    ' +\r\n '
    ' +\r\n this.renderLabelHtml() +\r\n '
    ' +\r\n '
    ';\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 '
    ' +\r\n '
    ' +\r\n '
    ' + (this.label || '') + '
    ';\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\n\n// ui/combox.js\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 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 = '';\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' + buff.join('') + '' +\r\n '';\r\n }\r\n\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '' + (this.title || '') + '' +\r\n '
    ' +\r\n this.closeButton.renderHtml() +\r\n '
    ' +\r\n '
    '+ ( this.autoReset ? '' : this.getContentHtml()) +'
    ' +\r\n footHtml +\r\n '
    ';\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';\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\n\n// ui/shortcutmenu.js\n(function () {\n var UI = baidu.editor.ui,\n UIBase = UI.UIBase,\n uiUtils = UI.uiUtils,\n utils = baidu.editor.utils,\n domUtils = baidu.editor.dom.domUtils;\n\n var allMenus = [],//存储所有快捷菜单\n timeID,\n isSubMenuShow = false;//是否有子pop显示\n\n var ShortCutMenu = UI.ShortCutMenu = function (options) {\n this.initOptions (options);\n this.initShortCutMenu ();\n };\n\n ShortCutMenu.postHide = hideAllMenu;\n\n ShortCutMenu.prototype = {\n isHidden : true ,\n SPACE : 5 ,\n initShortCutMenu : function () {\n this.items = this.items || [];\n this.initUIBase ();\n this.initItems ();\n this.initEvent ();\n allMenus.push (this);\n } ,\n initEvent : function () {\n var me = this,\n doc = me.editor.document;\n\n domUtils.on (doc , \"mousemove\" , function (e) {\n if (me.isHidden === false) {\n //有pop显示就不隐藏快捷菜单\n if (me.getSubMenuMark () || me.eventType == \"contextmenu\") return;\n\n\n var flag = true,\n el = me.getDom (),\n wt = el.offsetWidth,\n ht = el.offsetHeight,\n distanceX = wt / 2 + me.SPACE,//距离中心X标准\n distanceY = ht / 2,//距离中心Y标准\n x = Math.abs (e.screenX - me.left),//离中心距离横坐标\n y = Math.abs (e.screenY - me.top);//离中心距离纵坐标\n\n clearTimeout (timeID);\n timeID = setTimeout (function () {\n if (y > 0 && y < distanceY) {\n me.setOpacity (el , \"1\");\n } else if (y > distanceY && y < distanceY + 70) {\n me.setOpacity (el , \"0.5\");\n flag = false;\n } else if (y > distanceY + 70 && y < distanceY + 140) {\n me.hide ();\n }\n\n if (flag && x > 0 && x < distanceX) {\n me.setOpacity (el , \"1\")\n } else if (x > distanceX && x < distanceX + 70) {\n me.setOpacity (el , \"0.5\")\n } else if (x > distanceX + 70 && x < distanceX + 140) {\n me.hide ();\n }\n });\n }\n });\n\n //ie\\ff下 mouseout不准\n if (browser.chrome) {\n domUtils.on (doc , \"mouseout\" , function (e) {\n var relatedTgt = e.relatedTarget || e.toElement;\n\n if (relatedTgt == null || relatedTgt.tagName == \"HTML\") {\n me.hide ();\n }\n });\n }\n\n me.editor.addListener (\"afterhidepop\" , function () {\n if (!me.isHidden) {\n isSubMenuShow = true;\n }\n });\n\n } ,\n initItems : function () {\n if (utils.isArray (this.items)) {\n for (var i = 0, len = this.items.length ; i < len ; i++) {\n var item = this.items[i].toLowerCase ();\n\n if (UI[item]) {\n this.items[i] = new UI[item] (this.editor);\n this.items[i].className += \" edui-shortcutsubmenu \";\n }\n }\n }\n } ,\n setOpacity : function (el , value) {\n if (browser.ie && browser.version < 9) {\n el.style.filter = \"alpha(opacity = \" + parseFloat (value) * 100 + \");\"\n } else {\n el.style.opacity = value;\n }\n } ,\n getSubMenuMark : function () {\n isSubMenuShow = false;\n var layerEle = uiUtils.getFixedLayer ();\n var list = domUtils.getElementsByTagName (layerEle , \"div\" , function (node) {\n return domUtils.hasClass (node , \"edui-shortcutsubmenu edui-popup\")\n });\n\n for (var i = 0, node ; node = list[i++] ;) {\n if (node.style.display != \"none\") {\n isSubMenuShow = true;\n }\n }\n return isSubMenuShow;\n } ,\n show : function (e , hasContextmenu) {\n var me = this,\n offset = {},\n el = this.getDom (),\n fixedlayer = uiUtils.getFixedLayer ();\n\n function setPos (offset) {\n if (offset.left < 0) {\n offset.left = 0;\n }\n if (offset.top < 0) {\n offset.top = 0;\n }\n el.style.cssText = \"position:absolute;left:\" + offset.left + \"px;top:\" + offset.top + \"px;\";\n }\n\n function setPosByCxtMenu (menu) {\n if (!menu.tagName) {\n menu = menu.getDom ();\n }\n offset.left = parseInt (menu.style.left);\n offset.top = parseInt (menu.style.top);\n offset.top -= el.offsetHeight + 15;\n setPos (offset);\n }\n\n\n me.eventType = e.type;\n el.style.cssText = \"display:block;left:-9999px\";\n\n if (e.type == \"contextmenu\" && hasContextmenu) {\n var menu = domUtils.getElementsByTagName (fixedlayer , \"div\" , \"edui-contextmenu\")[0];\n if (menu) {\n setPosByCxtMenu (menu)\n } else {\n me.editor.addListener (\"aftershowcontextmenu\" , function (type , menu) {\n setPosByCxtMenu (menu);\n });\n }\n } else {\n offset = uiUtils.getViewportOffsetByEvent (e);\n offset.top -= el.offsetHeight + me.SPACE;\n offset.left += me.SPACE + 20;\n setPos (offset);\n me.setOpacity (el , 0.2);\n }\n\n\n me.isHidden = false;\n me.left = e.screenX + el.offsetWidth / 2 - me.SPACE;\n me.top = e.screenY - (el.offsetHeight / 2) - me.SPACE;\n\n if (me.editor) {\n el.style.zIndex = me.editor.container.style.zIndex * 1 + 10;\n fixedlayer.style.zIndex = el.style.zIndex - 1;\n }\n } ,\n hide : function () {\n if (this.getDom ()) {\n this.getDom ().style.display = \"none\";\n }\n this.isHidden = true;\n } ,\n postRender : function () {\n if (utils.isArray (this.items)) {\n for (var i = 0, item ; item = this.items[i++] ;) {\n item.postRender ();\n }\n }\n } ,\n getHtmlTpl : function () {\n var buff;\n if (utils.isArray (this.items)) {\n buff = [];\n for (var i = 0 ; i < this.items.length ; i++) {\n buff[i] = this.items[i].renderHtml ();\n }\n buff = buff.join (\"\");\n } else {\n buff = this.items;\n }\n\n return '
    ' +\n buff +\n '
    ';\n }\n };\n\n utils.inherits (ShortCutMenu , UIBase);\n\n function hideAllMenu (e) {\n var tgt = e.target || e.srcElement,\n cur = domUtils.findParent (tgt , function (node) {\n return domUtils.hasClass (node , \"edui-shortcutmenu\") || domUtils.hasClass (node , \"edui-popup\");\n } , true);\n\n if (!cur) {\n for (var i = 0, menu ; menu = allMenus[i++] ;) {\n menu.hide ()\n }\n }\n }\n\n domUtils.on (document , 'mousedown' , function (e) {\n hideAllMenu (e);\n });\n\n domUtils.on (window , 'scroll' , function (e) {\n hideAllMenu (e);\n });\n\n}) ();\n\n\n// ui/breakline.js\n(function (){\n var utils = baidu.editor.utils,\n UIBase = baidu.editor.ui.UIBase,\n Breakline = baidu.editor.ui.Breakline = function (options){\n this.initOptions(options);\n this.initSeparator();\n };\n Breakline.prototype = {\n uiName: 'Breakline',\n initSeparator: function (){\n this.initUIBase();\n },\n getHtmlTpl: function (){\n return '
    ';\n }\n };\n utils.inherits(Breakline, UIBase);\n\n})();\n\n\n// ui/message.js\n///import core\n///import uicore\n(function () {\n var utils = baidu.editor.utils,\n domUtils = baidu.editor.dom.domUtils,\n UIBase = baidu.editor.ui.UIBase,\n Message = baidu.editor.ui.Message = function (options){\n this.initOptions(options);\n this.initMessage();\n };\n\n Message.prototype = {\n initMessage: function (){\n this.initUIBase();\n },\n getHtmlTpl: function (){\n return '
    ' +\n '
    ×
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n },\n reset: function(opt){\n var me = this;\n if (!opt.keepshow) {\n clearTimeout(this.timer);\n me.timer = setTimeout(function(){\n me.hide();\n }, opt.timeout || 4000);\n }\n\n opt.content !== undefined && me.setContent(opt.content);\n opt.type !== undefined && me.setType(opt.type);\n\n me.show();\n },\n postRender: function(){\n var me = this,\n closer = this.getDom('closer');\n closer && domUtils.on(closer, 'click', function(){\n me.hide();\n });\n },\n setContent: function(content){\n this.getDom('content').innerHTML = content;\n },\n setType: function(type){\n type = type || 'info';\n var body = this.getDom('body');\n body.className = body.className.replace(/edui-message-type-[\\w-]+/, 'edui-message-type-' + type);\n },\n getContent: function(){\n return this.getDom('content').innerHTML;\n },\n getType: function(){\n var arr = this.getDom('body').match(/edui-message-type-([\\w-]+)/);\n return arr ? arr[1]:'';\n },\n show: function (){\n this.getDom().style.display = 'block';\n },\n hide: function (){\n var dom = this.getDom();\n if (dom) {\n dom.style.display = 'none';\n dom.parentNode && dom.parentNode.removeChild(dom);\n }\n }\n };\n\n utils.inherits(Message, UIBase);\n\n})();\n\n\n// adapter/editorui.js\n//ui跟编辑器的适配層\n//那个按钮弹出是dialog,是下拉筐等都是在这个js中配置\n//自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化\n(function () {\n var utils = baidu.editor.utils;\n var editorui = baidu.editor.ui;\n var _Dialog = editorui.Dialog;\n editorui.buttons = {};\n\n editorui.Dialog = function (options) {\n var dialog = new _Dialog(options);\n dialog.addListener('hide', function () {\n\n if (dialog.editor) {\n var editor = dialog.editor;\n try {\n if (browser.gecko) {\n var y = editor.window.scrollY,\n x = editor.window.scrollX;\n editor.body.focus();\n editor.window.scrollTo(x, y);\n } else {\n editor.focus();\n }\n\n\n } catch (ex) {\n }\n }\n });\n return dialog;\n };\n\n var iframeUrlMap = {\n 'anchor':'~/dialogs/anchor/anchor.html',\n 'insertimage':'~/dialogs/image/image.html',\n 'link':'~/dialogs/link/link.html',\n 'spechars':'~/dialogs/spechars/spechars.html',\n 'searchreplace':'~/dialogs/searchreplace/searchreplace.html',\n 'map':'~/dialogs/map/map.html',\n 'gmap':'~/dialogs/gmap/gmap.html',\n 'insertvideo':'~/dialogs/video/video.html',\n 'help':'~/dialogs/help/help.html',\n 'preview':'~/dialogs/preview/preview.html',\n 'emotion':'~/dialogs/emotion/emotion.html',\n 'wordimage':'~/dialogs/wordimage/wordimage.html',\n 'attachment':'~/dialogs/attachment/attachment.html',\n 'insertframe':'~/dialogs/insertframe/insertframe.html',\n 'edittip':'~/dialogs/table/edittip.html',\n 'edittable':'~/dialogs/table/edittable.html',\n 'edittd':'~/dialogs/table/edittd.html',\n 'webapp':'~/dialogs/webapp/webapp.html',\n 'snapscreen':'~/dialogs/snapscreen/snapscreen.html',\n 'scrawl':'~/dialogs/scrawl/scrawl.html',\n 'music':'~/dialogs/music/music.html',\n 'template':'~/dialogs/template/template.html',\n 'background':'~/dialogs/background/background.html',\n 'charts': '~/dialogs/charts/charts.html'\n };\n //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起\n var btnCmds = ['undo', 'redo', 'formatmatch',\n 'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase',\n 'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent',\n 'blockquote', 'pasteplain', 'pagebreak',\n 'selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink',\n 'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow',\n 'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts'];\n\n for (var i = 0, ci; ci = btnCmds[i++];) {\n ci = ci.toLowerCase();\n editorui[ci] = function (cmd) {\n return function (editor) {\n var ui = new editorui.Button({\n className:'edui-for-' + cmd,\n title:editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '',\n onclick:function () {\n editor.execCommand(cmd);\n },\n theme:editor.options.theme,\n showText:false\n });\n editorui.buttons[cmd] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n var state = editor.queryCommandState(cmd);\n if (state == -1) {\n ui.setDisabled(true);\n ui.setChecked(false);\n } else {\n if (!uiReady) {\n ui.setDisabled(false);\n ui.setChecked(state);\n }\n }\n });\n return ui;\n };\n }(ci);\n }\n\n //清除文档\n editorui.cleardoc = function (editor) {\n var ui = new editorui.Button({\n className:'edui-for-cleardoc',\n title:editor.options.labelMap.cleardoc || editor.getLang(\"labelMap.cleardoc\") || '',\n theme:editor.options.theme,\n onclick:function () {\n if (confirm(editor.getLang(\"confirmClear\"))) {\n editor.execCommand('cleardoc');\n }\n }\n });\n editorui.buttons[\"cleardoc\"] = ui;\n editor.addListener('selectionchange', function () {\n ui.setDisabled(editor.queryCommandState('cleardoc') == -1);\n });\n return ui;\n };\n\n //排版,图片排版,文字方向\n var typeset = {\n 'justify':['left', 'right', 'center', 'justify'],\n 'imagefloat':['none', 'left', 'center', 'right'],\n 'directionality':['ltr', 'rtl']\n };\n\n for (var p in typeset) {\n\n (function (cmd, val) {\n for (var i = 0, ci; ci = val[i++];) {\n (function (cmd2) {\n editorui[cmd.replace('float', '') + cmd2] = function (editor) {\n var ui = new editorui.Button({\n className:'edui-for-' + cmd.replace('float', '') + cmd2,\n title:editor.options.labelMap[cmd.replace('float', '') + cmd2] || editor.getLang(\"labelMap.\" + cmd.replace('float', '') + cmd2) || '',\n theme:editor.options.theme,\n onclick:function () {\n editor.execCommand(cmd, cmd2);\n }\n });\n editorui.buttons[cmd] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n ui.setDisabled(editor.queryCommandState(cmd) == -1);\n ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady);\n });\n return ui;\n };\n })(ci)\n }\n })(p, typeset[p])\n }\n\n //字体颜色和背景颜色\n for (var i = 0, ci; ci = ['backcolor', 'forecolor'][i++];) {\n editorui[ci] = function (cmd) {\n return function (editor) {\n var ui = new editorui.ColorButton({\n className:'edui-for-' + cmd,\n color:'default',\n title:editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '',\n editor:editor,\n onpickcolor:function (t, color) {\n editor.execCommand(cmd, color);\n },\n onpicknocolor:function () {\n editor.execCommand(cmd, 'default');\n this.setColor('transparent');\n this.color = 'default';\n },\n onbuttonclick:function () {\n editor.execCommand(cmd, this.color);\n }\n });\n editorui.buttons[cmd] = ui;\n editor.addListener('selectionchange', function () {\n ui.setDisabled(editor.queryCommandState(cmd) == -1);\n });\n return ui;\n };\n }(ci);\n }\n\n\n var dialogBtns = {\n noOk:['searchreplace', 'help', 'spechars', 'webapp','preview'],\n ok:['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage',\n 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts']\n };\n\n for (var p in dialogBtns) {\n (function (type, vals) {\n for (var i = 0, ci; ci = vals[i++];) {\n //todo opera下存在问题\n if (browser.opera && ci === \"searchreplace\") {\n continue;\n }\n (function (cmd) {\n editorui[cmd] = function (editor, iframeUrl, title) {\n iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd];\n title = editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '';\n\n var dialog;\n //没有iframeUrl不创建dialog\n if (iframeUrl) {\n dialog = new editorui.Dialog(utils.extend({\n iframeUrl:editor.ui.mapUrl(iframeUrl),\n editor:editor,\n className:'edui-for-' + cmd,\n title:title,\n holdScroll: cmd === 'insertimage',\n fullscreen: /charts|preview/.test(cmd),\n closeDialog:editor.getLang(\"closeDialog\")\n }, type == 'ok' ? {\n buttons:[\n {\n className:'edui-okbutton',\n label:editor.getLang(\"ok\"),\n editor:editor,\n onclick:function () {\n dialog.close(true);\n }\n },\n {\n className:'edui-cancelbutton',\n label:editor.getLang(\"cancel\"),\n editor:editor,\n onclick:function () {\n dialog.close(false);\n }\n }\n ]\n } : {}));\n\n editor.ui._dialogs[cmd + \"Dialog\"] = dialog;\n }\n\n var ui = new editorui.Button({\n className:'edui-for-' + cmd,\n title:title,\n onclick:function () {\n if (dialog) {\n switch (cmd) {\n case \"wordimage\":\n var images = editor.execCommand(\"wordimage\");\n if (images && images.length) {\n dialog.render();\n dialog.open();\n }\n break;\n case \"scrawl\":\n if (editor.queryCommandState(\"scrawl\") != -1) {\n dialog.render();\n dialog.open();\n }\n\n break;\n default:\n dialog.render();\n dialog.open();\n }\n }\n },\n theme:editor.options.theme,\n disabled:(cmd == 'scrawl' && editor.queryCommandState(\"scrawl\") == -1) || ( cmd == 'charts' )\n });\n editorui.buttons[cmd] = ui;\n editor.addListener('selectionchange', function () {\n //只存在于右键菜单而无工具栏按钮的ui不需要检测状态\n var unNeedCheckState = {'edittable':1};\n if (cmd in unNeedCheckState)return;\n\n var state = editor.queryCommandState(cmd);\n if (ui.getDom()) {\n ui.setDisabled(state == -1);\n ui.setChecked(state);\n }\n\n });\n\n return ui;\n };\n })(ci.toLowerCase())\n }\n })(p, dialogBtns[p]);\n }\n\n editorui.snapscreen = function (editor, iframeUrl, title) {\n title = editor.options.labelMap['snapscreen'] || editor.getLang(\"labelMap.snapscreen\") || '';\n var ui = new editorui.Button({\n className:'edui-for-snapscreen',\n title:title,\n onclick:function () {\n editor.execCommand(\"snapscreen\");\n },\n theme:editor.options.theme\n\n });\n editorui.buttons['snapscreen'] = ui;\n iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[\"snapscreen\"] || iframeUrlMap[\"snapscreen\"];\n if (iframeUrl) {\n var dialog = new editorui.Dialog({\n iframeUrl:editor.ui.mapUrl(iframeUrl),\n editor:editor,\n className:'edui-for-snapscreen',\n title:title,\n buttons:[\n {\n className:'edui-okbutton',\n label:editor.getLang(\"ok\"),\n editor:editor,\n onclick:function () {\n dialog.close(true);\n }\n },\n {\n className:'edui-cancelbutton',\n label:editor.getLang(\"cancel\"),\n editor:editor,\n onclick:function () {\n dialog.close(false);\n }\n }\n ]\n\n });\n dialog.render();\n editor.ui._dialogs[\"snapscreenDialog\"] = dialog;\n }\n editor.addListener('selectionchange', function () {\n ui.setDisabled(editor.queryCommandState('snapscreen') == -1);\n });\n return ui;\n };\n\n editorui.insertcode = function (editor, list, title) {\n list = editor.options['insertcode'] || [];\n title = editor.options.labelMap['insertcode'] || editor.getLang(\"labelMap.insertcode\") || '';\n // if (!list.length) return;\n var items = [];\n utils.each(list,function(key,val){\n items.push({\n label:key,\n value:val,\n theme:editor.options.theme,\n renderLabelHtml:function () {\n return '
    ' + (this.label || '') + '
    ';\n }\n });\n });\n\n var ui = new editorui.Combox({\n editor:editor,\n items:items,\n onselect:function (t, index) {\n editor.execCommand('insertcode', this.items[index].value);\n },\n onbuttonclick:function () {\n this.showPopup();\n },\n title:title,\n initValue:title,\n className:'edui-for-insertcode',\n indexByValue:function (value) {\n if (value) {\n for (var i = 0, ci; ci = this.items[i]; i++) {\n if (ci.value.indexOf(value) != -1)\n return i;\n }\n }\n\n return -1;\n }\n });\n editorui.buttons['insertcode'] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n if (!uiReady) {\n var state = editor.queryCommandState('insertcode');\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue('insertcode');\n if(!value){\n ui.setValue(title);\n return;\n }\n //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号\n value && (value = value.replace(/['\"]/g, '').split(',')[0]);\n ui.setValue(value);\n\n }\n }\n\n });\n return ui;\n };\n editorui.fontfamily = function (editor, list, title) {\n\n list = editor.options['fontfamily'] || [];\n title = editor.options.labelMap['fontfamily'] || editor.getLang(\"labelMap.fontfamily\") || '';\n if (!list.length) return;\n for (var i = 0, ci, items = []; ci = list[i]; i++) {\n var langLabel = editor.getLang('fontfamily')[ci.name] || \"\";\n (function (key, val) {\n items.push({\n label:key,\n value:val,\n theme:editor.options.theme,\n renderLabelHtml:function () {\n return '
    ' + (this.label || '') + '
    ';\n }\n });\n })(ci.label || langLabel, ci.val)\n }\n var ui = new editorui.Combox({\n editor:editor,\n items:items,\n onselect:function (t, index) {\n editor.execCommand('FontFamily', this.items[index].value);\n },\n onbuttonclick:function () {\n this.showPopup();\n },\n title:title,\n initValue:title,\n className:'edui-for-fontfamily',\n indexByValue:function (value) {\n if (value) {\n for (var i = 0, ci; ci = this.items[i]; i++) {\n if (ci.value.indexOf(value) != -1)\n return i;\n }\n }\n\n return -1;\n }\n });\n editorui.buttons['fontfamily'] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n if (!uiReady) {\n var state = editor.queryCommandState('FontFamily');\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue('FontFamily');\n //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号\n value && (value = value.replace(/['\"]/g, '').split(',')[0]);\n ui.setValue(value);\n\n }\n }\n\n });\n return ui;\n };\n\n editorui.fontsize = function (editor, list, title) {\n title = editor.options.labelMap['fontsize'] || editor.getLang(\"labelMap.fontsize\") || '';\n list = list || editor.options['fontsize'] || [];\n if (!list.length) return;\n var items = [];\n for (var i = 0; i < list.length; i++) {\n var size = list[i] + 'px';\n items.push({\n label:size,\n value:size,\n theme:editor.options.theme,\n renderLabelHtml:function () {\n return '
    ' + (this.label || '') + '
    ';\n }\n });\n }\n var ui = new editorui.Combox({\n editor:editor,\n items:items,\n title:title,\n initValue:title,\n onselect:function (t, index) {\n editor.execCommand('FontSize', this.items[index].value);\n },\n onbuttonclick:function () {\n this.showPopup();\n },\n className:'edui-for-fontsize'\n });\n editorui.buttons['fontsize'] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n if (!uiReady) {\n var state = editor.queryCommandState('FontSize');\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n ui.setValue(editor.queryCommandValue('FontSize'));\n }\n }\n\n });\n return ui;\n };\n\n editorui.paragraph = function (editor, list, title) {\n title = editor.options.labelMap['paragraph'] || editor.getLang(\"labelMap.paragraph\") || '';\n list = editor.options['paragraph'] || [];\n if (utils.isEmptyObject(list)) return;\n var items = [];\n for (var i in list) {\n items.push({\n value:i,\n label:list[i] || editor.getLang(\"paragraph\")[i],\n theme:editor.options.theme,\n renderLabelHtml:function () {\n return '
    ' + (this.label || '') + '
    ';\n }\n })\n }\n var ui = new editorui.Combox({\n editor:editor,\n items:items,\n title:title,\n initValue:title,\n className:'edui-for-paragraph',\n onselect:function (t, index) {\n editor.execCommand('Paragraph', this.items[index].value);\n },\n onbuttonclick:function () {\n this.showPopup();\n }\n });\n editorui.buttons['paragraph'] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n if (!uiReady) {\n var state = editor.queryCommandState('Paragraph');\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue('Paragraph');\n var index = ui.indexByValue(value);\n if (index != -1) {\n ui.setValue(value);\n } else {\n ui.setValue(ui.initValue);\n }\n }\n }\n\n });\n return ui;\n };\n\n\n //自定义标题\n editorui.customstyle = function (editor) {\n var list = editor.options['customstyle'] || [],\n title = editor.options.labelMap['customstyle'] || editor.getLang(\"labelMap.customstyle\") || '';\n if (!list.length)return;\n var langCs = editor.getLang('customstyle');\n for (var i = 0, items = [], t; t = list[i++];) {\n (function (t) {\n var ck = {};\n ck.label = t.label ? t.label : langCs[t.name];\n ck.style = t.style;\n ck.className = t.className;\n ck.tag = t.tag;\n items.push({\n label:ck.label,\n value:ck,\n theme:editor.options.theme,\n renderLabelHtml:function () {\n return '
    ' + '<' + ck.tag + ' ' + (ck.className ? ' class=\"' + ck.className + '\"' : \"\")\n + (ck.style ? ' style=\"' + ck.style + '\"' : \"\") + '>' + ck.label + \"<\\/\" + ck.tag + \">\"\n + '
    ';\n }\n });\n })(t);\n }\n\n var ui = new editorui.Combox({\n editor:editor,\n items:items,\n title:title,\n initValue:title,\n className:'edui-for-customstyle',\n onselect:function (t, index) {\n editor.execCommand('customstyle', this.items[index].value);\n },\n onbuttonclick:function () {\n this.showPopup();\n },\n indexByValue:function (value) {\n for (var i = 0, ti; ti = this.items[i++];) {\n if (ti.label == value) {\n return i - 1\n }\n }\n return -1;\n }\n });\n editorui.buttons['customstyle'] = ui;\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n if (!uiReady) {\n var state = editor.queryCommandState('customstyle');\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue('customstyle');\n var index = ui.indexByValue(value);\n if (index != -1) {\n ui.setValue(value);\n } else {\n ui.setValue(ui.initValue);\n }\n }\n }\n\n });\n return ui;\n };\n editorui.inserttable = function (editor, iframeUrl, title) {\n title = editor.options.labelMap['inserttable'] || editor.getLang(\"labelMap.inserttable\") || '';\n var ui = new editorui.TableButton({\n editor:editor,\n title:title,\n className:'edui-for-inserttable',\n onpicktable:function (t, numCols, numRows) {\n editor.execCommand('InsertTable', {numRows:numRows, numCols:numCols, border:1});\n },\n onbuttonclick:function () {\n this.showPopup();\n }\n });\n editorui.buttons['inserttable'] = ui;\n editor.addListener('selectionchange', function () {\n ui.setDisabled(editor.queryCommandState('inserttable') == -1);\n });\n return ui;\n };\n\n editorui.lineheight = function (editor) {\n var val = editor.options.lineheight || [];\n if (!val.length)return;\n for (var i = 0, ci, items = []; ci = val[i++];) {\n items.push({\n //todo:写死了\n label:ci,\n value:ci,\n theme:editor.options.theme,\n onclick:function () {\n editor.execCommand(\"lineheight\", this.value);\n }\n })\n }\n var ui = new editorui.MenuButton({\n editor:editor,\n className:'edui-for-lineheight',\n title:editor.options.labelMap['lineheight'] || editor.getLang(\"labelMap.lineheight\") || '',\n items:items,\n onbuttonclick:function () {\n var value = editor.queryCommandValue('LineHeight') || this.value;\n editor.execCommand(\"LineHeight\", value);\n }\n });\n editorui.buttons['lineheight'] = ui;\n editor.addListener('selectionchange', function () {\n var state = editor.queryCommandState('LineHeight');\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue('LineHeight');\n value && ui.setValue((value + '').replace(/cm/, ''));\n ui.setChecked(state)\n }\n });\n return ui;\n };\n\n var rowspacings = ['top', 'bottom'];\n for (var r = 0, ri; ri = rowspacings[r++];) {\n (function (cmd) {\n editorui['rowspacing' + cmd] = function (editor) {\n var val = editor.options['rowspacing' + cmd] || [];\n if (!val.length) return null;\n for (var i = 0, ci, items = []; ci = val[i++];) {\n items.push({\n label:ci,\n value:ci,\n theme:editor.options.theme,\n onclick:function () {\n editor.execCommand(\"rowspacing\", this.value, cmd);\n }\n })\n }\n var ui = new editorui.MenuButton({\n editor:editor,\n className:'edui-for-rowspacing' + cmd,\n title:editor.options.labelMap['rowspacing' + cmd] || editor.getLang(\"labelMap.rowspacing\" + cmd) || '',\n items:items,\n onbuttonclick:function () {\n var value = editor.queryCommandValue('rowspacing', cmd) || this.value;\n editor.execCommand(\"rowspacing\", value, cmd);\n }\n });\n editorui.buttons[cmd] = ui;\n editor.addListener('selectionchange', function () {\n var state = editor.queryCommandState('rowspacing', cmd);\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue('rowspacing', cmd);\n value && ui.setValue((value + '').replace(/%/, ''));\n ui.setChecked(state)\n }\n });\n return ui;\n }\n })(ri)\n }\n //有序,无序列表\n var lists = ['insertorderedlist', 'insertunorderedlist'];\n for (var l = 0, cl; cl = lists[l++];) {\n (function (cmd) {\n editorui[cmd] = function (editor) {\n var vals = editor.options[cmd],\n _onMenuClick = function () {\n editor.execCommand(cmd, this.value);\n }, items = [];\n for (var i in vals) {\n items.push({\n label:vals[i] || editor.getLang()[cmd][i] || \"\",\n value:i,\n theme:editor.options.theme,\n onclick:_onMenuClick\n })\n }\n var ui = new editorui.MenuButton({\n editor:editor,\n className:'edui-for-' + cmd,\n title:editor.getLang(\"labelMap.\" + cmd) || '',\n 'items':items,\n onbuttonclick:function () {\n var value = editor.queryCommandValue(cmd) || this.value;\n editor.execCommand(cmd, value);\n }\n });\n editorui.buttons[cmd] = ui;\n editor.addListener('selectionchange', function () {\n var state = editor.queryCommandState(cmd);\n if (state == -1) {\n ui.setDisabled(true);\n } else {\n ui.setDisabled(false);\n var value = editor.queryCommandValue(cmd);\n ui.setValue(value);\n ui.setChecked(state)\n }\n });\n return ui;\n };\n })(cl)\n }\n\n editorui.fullscreen = function (editor, title) {\n title = editor.options.labelMap['fullscreen'] || editor.getLang(\"labelMap.fullscreen\") || '';\n var ui = new editorui.Button({\n className:'edui-for-fullscreen',\n title:title,\n theme:editor.options.theme,\n onclick:function () {\n if (editor.ui) {\n editor.ui.setFullScreen(!editor.ui.isFullScreen());\n }\n this.setChecked(editor.ui.isFullScreen());\n }\n });\n editorui.buttons['fullscreen'] = ui;\n editor.addListener('selectionchange', function () {\n var state = editor.queryCommandState('fullscreen');\n ui.setDisabled(state == -1);\n ui.setChecked(editor.ui.isFullScreen());\n });\n return ui;\n };\n\n // 表情\n editorui[\"emotion\"] = function (editor, iframeUrl) {\n var cmd = \"emotion\";\n var ui = new editorui.MultiMenuPop({\n title:editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd + \"\") || '',\n editor:editor,\n className:'edui-for-' + cmd,\n iframeUrl:editor.ui.mapUrl(iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd])\n });\n editorui.buttons[cmd] = ui;\n\n editor.addListener('selectionchange', function () {\n ui.setDisabled(editor.queryCommandState(cmd) == -1)\n });\n return ui;\n };\n\n editorui.autotypeset = function (editor) {\n var ui = new editorui.AutoTypeSetButton({\n editor:editor,\n title:editor.options.labelMap['autotypeset'] || editor.getLang(\"labelMap.autotypeset\") || '',\n className:'edui-for-autotypeset',\n onbuttonclick:function () {\n editor.execCommand('autotypeset')\n }\n });\n editorui.buttons['autotypeset'] = ui;\n editor.addListener('selectionchange', function () {\n ui.setDisabled(editor.queryCommandState('autotypeset') == -1);\n });\n return ui;\n };\n\n /* 简单上传插件 */\n editorui[\"simpleupload\"] = function (editor) {\n var name = 'simpleupload',\n ui = new editorui.Button({\n className:'edui-for-' + name,\n title:editor.options.labelMap[name] || editor.getLang(\"labelMap.\" + name) || '',\n onclick:function () {},\n theme:editor.options.theme,\n showText:false\n });\n editorui.buttons[name] = ui;\n editor.addListener('ready', function() {\n var b = ui.getDom('body'),\n iconSpan = b.children[0];\n editor.fireEvent('simpleuploadbtnready', iconSpan);\n });\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\n var state = editor.queryCommandState(name);\n if (state == -1) {\n ui.setDisabled(true);\n ui.setChecked(false);\n } else {\n if (!uiReady) {\n ui.setDisabled(false);\n ui.setChecked(state);\n }\n }\n });\n return ui;\n };\n\n})();\n\n\n// adapter/editor.js\n///import core\n///commands 全屏\n///commandsName FullScreen\n///commandsTitle 全屏\n(function () {\n var utils = baidu.editor.utils,\n uiUtils = baidu.editor.ui.uiUtils,\n UIBase = baidu.editor.ui.UIBase,\n domUtils = baidu.editor.dom.domUtils;\n var nodeStack = [];\n\n function EditorUI(options) {\n this.initOptions(options);\n this.initEditorUI();\n }\n\n EditorUI.prototype = {\n uiName:'editor',\n initEditorUI:function () {\n this.editor.ui = this;\n this._dialogs = {};\n this.initUIBase();\n this._initToolbars();\n var editor = this.editor,\n me = this;\n\n editor.addListener('ready', function () {\n //提供getDialog方法\n editor.getDialog = function (name) {\n return editor.ui._dialogs[name + \"Dialog\"];\n };\n domUtils.on(editor.window, 'scroll', function (evt) {\n baidu.editor.ui.Popup.postHide(evt);\n });\n //提供编辑器实时宽高(全屏时宽高不变化)\n editor.ui._actualFrameWidth = editor.options.initialFrameWidth;\n\n UE.browser.ie && UE.browser.version === 6 && editor.container.ownerDocument.execCommand(\"BackgroundImageCache\", false, true);\n\n //display bottom-bar label based on config\n if (editor.options.elementPathEnabled) {\n editor.ui.getDom('elementpath').innerHTML = '
    ' + editor.getLang(\"elementPathTip\") + ':
    ';\n }\n if (editor.options.wordCount) {\n function countFn() {\n setCount(editor,me);\n domUtils.un(editor.document, \"click\", arguments.callee);\n }\n domUtils.on(editor.document, \"click\", countFn);\n editor.ui.getDom('wordcount').innerHTML = editor.getLang(\"wordCountTip\");\n }\n editor.ui._scale();\n if (editor.options.scaleEnabled) {\n if (editor.autoHeightEnabled) {\n editor.disableAutoHeight();\n }\n me.enableScale();\n } else {\n me.disableScale();\n }\n if (!editor.options.elementPathEnabled && !editor.options.wordCount && !editor.options.scaleEnabled) {\n editor.ui.getDom('elementpath').style.display = \"none\";\n editor.ui.getDom('wordcount').style.display = \"none\";\n editor.ui.getDom('scale').style.display = \"none\";\n }\n\n if (!editor.selection.isFocus())return;\n editor.fireEvent('selectionchange', false, true);\n\n\n });\n\n editor.addListener('mousedown', function (t, evt) {\n var el = evt.target || evt.srcElement;\n baidu.editor.ui.Popup.postHide(evt, el);\n baidu.editor.ui.ShortCutMenu.postHide(evt);\n\n });\n editor.addListener(\"delcells\", function () {\n if (UE.ui['edittip']) {\n new UE.ui['edittip'](editor);\n }\n editor.getDialog('edittip').open();\n });\n\n var pastePop, isPaste = false, timer;\n editor.addListener(\"afterpaste\", function () {\n if(editor.queryCommandState('pasteplain'))\n return;\n if(baidu.editor.ui.PastePicker){\n pastePop = new baidu.editor.ui.Popup({\n content:new baidu.editor.ui.PastePicker({editor:editor}),\n editor:editor,\n className:'edui-wordpastepop'\n });\n pastePop.render();\n }\n isPaste = true;\n });\n\n editor.addListener(\"afterinserthtml\", function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n if (pastePop && (isPaste || editor.ui._isTransfer)) {\n if(pastePop.isHidden()){\n var span = domUtils.createElement(editor.document, 'span', {\n 'style':\"line-height:0px;\",\n 'innerHTML':'\\ufeff'\n }),\n range = editor.selection.getRange();\n range.insertNode(span);\n var tmp= getDomNode(span, 'firstChild', 'previousSibling');\n tmp && pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp);\n domUtils.remove(span);\n }else{\n pastePop.show();\n }\n delete editor.ui._isTransfer;\n isPaste = false;\n }\n }, 200)\n });\n editor.addListener('contextmenu', function (t, evt) {\n baidu.editor.ui.Popup.postHide(evt);\n });\n editor.addListener('keydown', function (t, evt) {\n if (pastePop) pastePop.dispose(evt);\n var keyCode = evt.keyCode || evt.which;\n if(evt.altKey&&keyCode==90){\n UE.ui.buttons['fullscreen'].onclick();\n }\n });\n editor.addListener('wordcount', function (type) {\n setCount(this,me);\n });\n function setCount(editor,ui) {\n editor.setOpt({\n wordCount:true,\n maximumWords:10000,\n wordCountMsg:editor.options.wordCountMsg || editor.getLang(\"wordCountMsg\"),\n wordOverFlowMsg:editor.options.wordOverFlowMsg || editor.getLang(\"wordOverFlowMsg\")\n });\n var opt = editor.options,\n max = opt.maximumWords,\n msg = opt.wordCountMsg ,\n errMsg = opt.wordOverFlowMsg,\n countDom = ui.getDom('wordcount');\n if (!opt.wordCount) {\n return;\n }\n var count = editor.getContentLength(true);\n if (count > max) {\n countDom.innerHTML = errMsg;\n editor.fireEvent(\"wordcountoverflow\");\n } else {\n countDom.innerHTML = msg.replace(\"{#leave}\", max - count).replace(\"{#count}\", count);\n }\n }\n\n editor.addListener('selectionchange', function () {\n if (editor.options.elementPathEnabled) {\n me[(editor.queryCommandState('elementpath') == -1 ? 'dis' : 'en') + 'ableElementPath']()\n }\n if (editor.options.scaleEnabled) {\n me[(editor.queryCommandState('scale') == -1 ? 'dis' : 'en') + 'ableScale']();\n\n }\n });\n var popup = new baidu.editor.ui.Popup({\n editor:editor,\n content:'',\n className:'edui-bubble',\n _onEditButtonClick:function () {\n this.hide();\n editor.ui._dialogs.linkDialog.open();\n },\n _onImgEditButtonClick:function (name) {\n this.hide();\n editor.ui._dialogs[name] && editor.ui._dialogs[name].open();\n\n },\n _onImgSetFloat:function (value) {\n this.hide();\n editor.execCommand(\"imagefloat\", value);\n\n },\n _setIframeAlign:function (value) {\n var frame = popup.anchorEl;\n var newFrame = frame.cloneNode(true);\n switch (value) {\n case -2:\n newFrame.setAttribute(\"align\", \"\");\n break;\n case -1:\n newFrame.setAttribute(\"align\", \"left\");\n break;\n case 1:\n newFrame.setAttribute(\"align\", \"right\");\n break;\n }\n frame.parentNode.insertBefore(newFrame, frame);\n domUtils.remove(frame);\n popup.anchorEl = newFrame;\n popup.showAnchor(popup.anchorEl);\n },\n _updateIframe:function () {\n var frame = editor._iframe = popup.anchorEl;\n if(domUtils.hasClass(frame, 'ueditor_baidumap')) {\n editor.selection.getRange().selectNode(frame).select();\n editor.ui._dialogs.mapDialog.open();\n popup.hide();\n } else {\n editor.ui._dialogs.insertframeDialog.open();\n popup.hide();\n }\n },\n _onRemoveButtonClick:function (cmdName) {\n editor.execCommand(cmdName);\n this.hide();\n },\n queryAutoHide:function (el) {\n if (el && el.ownerDocument == editor.document) {\n if (el.tagName.toLowerCase() == 'img' || domUtils.findParentByTagName(el, 'a', true)) {\n return el !== popup.anchorEl;\n }\n }\n return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el);\n }\n });\n popup.render();\n if (editor.options.imagePopup) {\n editor.addListener('mouseover', function (t, evt) {\n evt = evt || window.event;\n var el = evt.target || evt.srcElement;\n if (editor.ui._dialogs.insertframeDialog && /iframe/ig.test(el.tagName)) {\n var html = popup.formatHtml(\n '' + editor.getLang(\"property\") + ': ' + editor.getLang(\"default\") + '  ' + editor.getLang(\"justifyleft\") + '  ' + editor.getLang(\"justifyright\") + '  ' +\n ' ' + editor.getLang(\"modify\") + '');\n if (html) {\n popup.getDom('content').innerHTML = html;\n popup.anchorEl = el;\n popup.showAnchor(popup.anchorEl);\n } else {\n popup.hide();\n }\n }\n });\n editor.addListener('selectionchange', function (t, causeByUi) {\n if (!causeByUi) return;\n var html = '', str = \"\",\n img = editor.selection.getRange().getClosedNode(),\n dialogs = editor.ui._dialogs;\n if (img && img.tagName == 'IMG') {\n var dialogName = 'insertimageDialog';\n if (img.className.indexOf(\"edui-faked-video\") != -1 || img.className.indexOf(\"edui-upload-video\") != -1) {\n dialogName = \"insertvideoDialog\"\n }\n if (img.className.indexOf(\"edui-faked-webapp\") != -1) {\n dialogName = \"webappDialog\"\n }\n if (img.src.indexOf(\"http://api.map.baidu.com\") != -1) {\n dialogName = \"mapDialog\"\n }\n if (img.className.indexOf(\"edui-faked-music\") != -1) {\n dialogName = \"musicDialog\"\n }\n if (img.src.indexOf(\"http://maps.google.com/maps/api/staticmap\") != -1) {\n dialogName = \"gmapDialog\"\n }\n if (img.getAttribute(\"anchorname\")) {\n dialogName = \"anchorDialog\";\n html = popup.formatHtml(\n '' + editor.getLang(\"property\") + ': ' + editor.getLang(\"modify\") + '  ' +\n '' + editor.getLang(\"delete\") + '');\n }\n if (img.getAttribute(\"word_img\")) {\n //todo 放到dialog去做查询\n editor.word_img = [img.getAttribute(\"word_img\")];\n dialogName = \"wordimageDialog\"\n }\n if(domUtils.hasClass(img, 'loadingclass') || domUtils.hasClass(img, 'loaderrorclass')) {\n dialogName = \"\";\n }\n if (!dialogs[dialogName]) {\n return;\n }\n str = '' + editor.getLang(\"property\") + ': '+\n '' + editor.getLang(\"default\") + '  ' +\n '' + editor.getLang(\"justifyleft\") + '  ' +\n '' + editor.getLang(\"justifyright\") + '  ' +\n '' + editor.getLang(\"justifycenter\") + '  '+\n '' + editor.getLang(\"modify\") + '';\n\n !html && (html = popup.formatHtml(str))\n\n }\n if (editor.ui._dialogs.linkDialog) {\n var link = editor.queryCommandValue('link');\n var url;\n if (link && (url = (link.getAttribute('_href') || link.getAttribute('href', 2)))) {\n var txt = url;\n if (url.length > 30) {\n txt = url.substring(0, 20) + \"...\";\n }\n if (html) {\n html += '
    '\n }\n html += popup.formatHtml(\n '' + editor.getLang(\"anthorMsg\") + ': ' + txt + '' +\n ' ' + editor.getLang(\"modify\") + '' +\n ' ' + editor.getLang(\"clear\") + '');\n popup.showAnchor(link);\n }\n }\n\n if (html) {\n popup.getDom('content').innerHTML = html;\n popup.anchorEl = img || link;\n popup.showAnchor(popup.anchorEl);\n } else {\n popup.hide();\n }\n });\n }\n\n },\n _initToolbars:function () {\n var editor = this.editor;\n var toolbars = this.toolbars || [];\n var toolbarUis = [];\n for (var i = 0; i < toolbars.length; i++) {\n var toolbar = toolbars[i];\n var toolbarUi = new baidu.editor.ui.Toolbar({theme:editor.options.theme});\n for (var j = 0; j < toolbar.length; j++) {\n var toolbarItem = toolbar[j];\n var toolbarItemUi = null;\n if (typeof toolbarItem == 'string') {\n toolbarItem = toolbarItem.toLowerCase();\n if (toolbarItem == '|') {\n toolbarItem = 'Separator';\n }\n if(toolbarItem == '||'){\n toolbarItem = 'Breakline';\n }\n if (baidu.editor.ui[toolbarItem]) {\n toolbarItemUi = new baidu.editor.ui[toolbarItem](editor);\n }\n\n //fullscreen这里单独处理一下,放到首行去\n if (toolbarItem == 'fullscreen') {\n if (toolbarUis && toolbarUis[0]) {\n toolbarUis[0].items.splice(0, 0, toolbarItemUi);\n } else {\n toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi);\n }\n\n continue;\n\n\n }\n } else {\n toolbarItemUi = toolbarItem;\n }\n if (toolbarItemUi && toolbarItemUi.id) {\n\n toolbarUi.add(toolbarItemUi);\n }\n }\n toolbarUis[i] = toolbarUi;\n }\n\n //接受外部定制的UI\n\n utils.each(UE._customizeUI,function(obj,key){\n var itemUI,index;\n if(obj.id && obj.id != editor.key){\n return false;\n }\n itemUI = obj.execFn.call(editor,editor,key);\n if(itemUI){\n index = obj.index;\n if(index === undefined){\n index = toolbarUi.items.length;\n }\n toolbarUi.add(itemUI,index)\n }\n });\n\n this.toolbars = toolbarUis;\n },\n getHtmlTpl:function () {\n return '
    ' +\n '
    ' +\n (this.toolbars.length ?\n '
    ' +\n this.renderToolbarBoxHtml() +\n '
    ' : '') +\n '
    ' +\n '
    ' + this.editor.getLang(\"clickToUpload\") + '
    ' +\n '
    x
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n //modify wdcount by matao\n '
    ' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ';\n },\n showWordImageDialog:function () {\n this._dialogs['wordimageDialog'].open();\n },\n renderToolbarBoxHtml:function () {\n var buff = [];\n for (var i = 0; i < this.toolbars.length; i++) {\n buff.push(this.toolbars[i].renderHtml());\n }\n return buff.join('');\n },\n setFullScreen:function (fullscreen) {\n\n var editor = this.editor,\n container = editor.container.parentNode.parentNode;\n if (this._fullscreen != fullscreen) {\n this._fullscreen = fullscreen;\n this.editor.fireEvent('beforefullscreenchange', fullscreen);\n if (baidu.editor.browser.gecko) {\n var bk = editor.selection.getRange().createBookmark();\n }\n if (fullscreen) {\n while (container.tagName != \"BODY\") {\n var position = baidu.editor.dom.domUtils.getComputedStyle(container, \"position\");\n nodeStack.push(position);\n container.style.position = \"static\";\n container = container.parentNode;\n }\n this._bakHtmlOverflow = document.documentElement.style.overflow;\n this._bakBodyOverflow = document.body.style.overflow;\n this._bakAutoHeight = this.editor.autoHeightEnabled;\n this._bakScrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);\n\n this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth;\n if (this._bakAutoHeight) {\n //当全屏时不能执行自动长高\n editor.autoHeightEnabled = false;\n this.editor.disableAutoHeight();\n }\n\n document.documentElement.style.overflow = 'hidden';\n //修复,滚动条不收起的问题\n\n window.scrollTo(0,window.scrollY);\n this._bakCssText = this.getDom().style.cssText;\n this._bakCssText1 = this.getDom('iframeholder').style.cssText;\n editor.iframe.parentNode.style.width = '';\n this._updateFullScreen();\n } else {\n while (container.tagName != \"BODY\") {\n container.style.position = nodeStack.shift();\n container = container.parentNode;\n }\n this.getDom().style.cssText = this._bakCssText;\n this.getDom('iframeholder').style.cssText = this._bakCssText1;\n if (this._bakAutoHeight) {\n editor.autoHeightEnabled = true;\n this.editor.enableAutoHeight();\n }\n\n document.documentElement.style.overflow = this._bakHtmlOverflow;\n document.body.style.overflow = this._bakBodyOverflow;\n editor.iframe.parentNode.style.width = this._bakEditorContaninerWidth + 'px';\n window.scrollTo(0, this._bakScrollTop);\n }\n if (browser.gecko && editor.body.contentEditable === 'true') {\n var input = document.createElement('input');\n document.body.appendChild(input);\n editor.body.contentEditable = false;\n setTimeout(function () {\n input.focus();\n setTimeout(function () {\n editor.body.contentEditable = true;\n editor.fireEvent('fullscreenchanged', fullscreen);\n editor.selection.getRange().moveToBookmark(bk).select(true);\n baidu.editor.dom.domUtils.remove(input);\n fullscreen && window.scroll(0, 0);\n }, 0)\n }, 0)\n }\n\n if(editor.body.contentEditable === 'true'){\n this.editor.fireEvent('fullscreenchanged', fullscreen);\n this.triggerLayout();\n }\n\n }\n },\n _updateFullScreen:function () {\n if (this._fullscreen) {\n var vpRect = uiUtils.getViewportRect();\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);\n uiUtils.setViewportOffset(this.getDom(), { left:0, top:this.editor.options.topOffset || 0 });\n this.editor.setHeight(vpRect.height - this.getDom('toolbarbox').offsetHeight - this.getDom('bottombar').offsetHeight - (this.editor.options.topOffset || 0),true);\n //不手动调一下,会导致全屏失效\n if(browser.gecko){\n try{\n window.onresize();\n }catch(e){\n\n }\n\n }\n }\n },\n _updateElementPath:function () {\n var bottom = this.getDom('elementpath'), list;\n if (this.elementPathEnabled && (list = this.editor.queryCommandValue('elementpath'))) {\n\n var buff = [];\n for (var i = 0, ci; ci = list[i]; i++) {\n buff[i] = this.formatHtml('' + ci + '');\n }\n bottom.innerHTML = '
    ' + this.editor.getLang(\"elementPathTip\") + ': ' + buff.join(' > ') + '
    ';\n\n } else {\n bottom.style.display = 'none'\n }\n },\n disableElementPath:function () {\n var bottom = this.getDom('elementpath');\n bottom.innerHTML = '';\n bottom.style.display = 'none';\n this.elementPathEnabled = false;\n\n },\n enableElementPath:function () {\n var bottom = this.getDom('elementpath');\n bottom.style.display = '';\n this.elementPathEnabled = true;\n this._updateElementPath();\n },\n _scale:function () {\n var doc = document,\n editor = this.editor,\n editorHolder = editor.container,\n editorDocument = editor.document,\n toolbarBox = this.getDom(\"toolbarbox\"),\n bottombar = this.getDom(\"bottombar\"),\n scale = this.getDom(\"scale\"),\n scalelayer = this.getDom(\"scalelayer\");\n\n var isMouseMove = false,\n position = null,\n minEditorHeight = 0,\n minEditorWidth = editor.options.minFrameWidth,\n pageX = 0,\n pageY = 0,\n scaleWidth = 0,\n scaleHeight = 0;\n\n function down() {\n position = domUtils.getXY(editorHolder);\n\n if (!minEditorHeight) {\n minEditorHeight = editor.options.minFrameHeight + toolbarBox.offsetHeight + bottombar.offsetHeight;\n }\n\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:\"\n + editorHolder.offsetHeight + \"px;z-index:\" + (editor.options.zIndex + 1);\n\n domUtils.on(doc, \"mousemove\", move);\n domUtils.on(editorDocument, \"mouseup\", up);\n domUtils.on(doc, \"mouseup\", up);\n }\n\n var me = this;\n //by xuheng 全屏时关掉缩放\n this.editor.addListener('fullscreenchanged', function (e, fullScreen) {\n if (fullScreen) {\n me.disableScale();\n\n } else {\n if (me.editor.options.scaleEnabled) {\n me.enableScale();\n var tmpNode = me.editor.document.createElement('span');\n me.editor.body.appendChild(tmpNode);\n me.editor.body.style.height = Math.max(domUtils.getXY(tmpNode).y, me.editor.iframe.offsetHeight - 20) + 'px';\n domUtils.remove(tmpNode)\n }\n }\n });\n function move(event) {\n clearSelection();\n var e = event || window.event;\n pageX = e.pageX || (doc.documentElement.scrollLeft + e.clientX);\n pageY = e.pageY || (doc.documentElement.scrollTop + e.clientY);\n scaleWidth = pageX - position.x;\n scaleHeight = pageY - position.y;\n\n if (scaleWidth >= minEditorWidth) {\n isMouseMove = true;\n scalelayer.style.width = scaleWidth + 'px';\n }\n if (scaleHeight >= minEditorHeight) {\n isMouseMove = true;\n scalelayer.style.height = scaleHeight + \"px\";\n }\n }\n\n function up() {\n if (isMouseMove) {\n isMouseMove = false;\n editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2;\n editorHolder.style.width = editor.ui._actualFrameWidth + 'px';\n\n editor.setHeight(scalelayer.offsetHeight - bottombar.offsetHeight - toolbarBox.offsetHeight - 2,true);\n }\n if (scalelayer) {\n scalelayer.style.display = \"none\";\n }\n clearSelection();\n domUtils.un(doc, \"mousemove\", move);\n domUtils.un(editorDocument, \"mouseup\", up);\n domUtils.un(doc, \"mouseup\", up);\n }\n\n function clearSelection() {\n if (browser.ie)\n doc.selection.clear();\n else\n window.getSelection().removeAllRanges();\n }\n\n this.enableScale = function () {\n //trace:2868\n if (editor.queryCommandState(\"source\") == 1) return;\n scale.style.display = \"\";\n this.scaleEnabled = true;\n domUtils.on(scale, \"mousedown\", down);\n };\n this.disableScale = function () {\n scale.style.display = \"none\";\n this.scaleEnabled = false;\n domUtils.un(scale, \"mousedown\", down);\n };\n },\n isFullScreen:function () {\n return this._fullscreen;\n },\n postRender:function () {\n UIBase.prototype.postRender.call(this);\n for (var i = 0; i < this.toolbars.length; i++) {\n this.toolbars[i].postRender();\n }\n var me = this;\n var timerId,\n domUtils = baidu.editor.dom.domUtils,\n updateFullScreenTime = function () {\n clearTimeout(timerId);\n timerId = setTimeout(function () {\n me._updateFullScreen();\n });\n };\n domUtils.on(window, 'resize', updateFullScreenTime);\n\n me.addListener('destroy', function () {\n domUtils.un(window, 'resize', updateFullScreenTime);\n clearTimeout(timerId);\n })\n },\n showToolbarMsg:function (msg, flag) {\n this.getDom('toolbarmsg_label').innerHTML = msg;\n this.getDom('toolbarmsg').style.display = '';\n //\n if (!flag) {\n var w = this.getDom('upload_dialog');\n w.style.display = 'none';\n }\n },\n hideToolbarMsg:function () {\n this.getDom('toolbarmsg').style.display = 'none';\n },\n mapUrl:function (url) {\n return url ? url.replace('~/', this.editor.options.UEDITOR_HOME_URL || '') : ''\n },\n triggerLayout:function () {\n var dom = this.getDom();\n if (dom.style.zoom == '1') {\n dom.style.zoom = '100%';\n } else {\n dom.style.zoom = '1';\n }\n }\n };\n utils.inherits(EditorUI, baidu.editor.ui.UIBase);\n\n\n var instances = {};\n\n\n UE.ui.Editor = function (options) {\n var editor = new UE.Editor(options);\n editor.options.editor = editor;\n utils.loadFile(document, {\n href:editor.options.themePath + editor.options.theme + \"/css/ueditor.css\",\n tag:\"link\",\n type:\"text/css\",\n rel:\"stylesheet\"\n });\n\n var oldRender = editor.render;\n editor.render = function (holder) {\n if (holder.constructor === String) {\n editor.key = holder;\n instances[holder] = editor;\n }\n utils.domReady(function () {\n editor.langIsReady ? renderUI() : editor.addListener(\"langReady\", renderUI);\n function renderUI() {\n editor.setOpt({\n labelMap:editor.options.labelMap || editor.getLang('labelMap')\n });\n new EditorUI(editor.options);\n if (holder) {\n if (holder.constructor === String) {\n holder = document.getElementById(holder);\n }\n holder && holder.getAttribute('name') && ( editor.options.textarea = holder.getAttribute('name'));\n if (holder && /script|textarea/ig.test(holder.tagName)) {\n var newDiv = document.createElement('div');\n holder.parentNode.insertBefore(newDiv, holder);\n var cont = holder.value || holder.innerHTML;\n editor.options.initialContent = /^[\\t\\r\\n ]*$/.test(cont) ? editor.options.initialContent :\n cont.replace(/>[\\n\\r\\t]+([ ]{4})+/g, '>')\n .replace(/[\\n\\r\\t]+([ ]{4})+[\\n\\r\\t]+<');\n holder.className && (newDiv.className = holder.className);\n holder.style.cssText && (newDiv.style.cssText = holder.style.cssText);\n if (/textarea/i.test(holder.tagName)) {\n editor.textarea = holder;\n editor.textarea.style.display = 'none';\n\n\n } else {\n holder.parentNode.removeChild(holder);\n\n\n }\n if(holder.id){\n newDiv.id = holder.id;\n domUtils.removeAttributes(holder,'id');\n }\n holder = newDiv;\n holder.innerHTML = '';\n }\n\n }\n domUtils.addClass(holder, \"edui-\" + editor.options.theme);\n editor.ui.render(holder);\n var opt = editor.options;\n //给实例添加一个编辑器的容器引用\n editor.container = editor.ui.getDom();\n var parents = domUtils.findParents(holder,true);\n var displays = [];\n for(var i = 0 ,ci;ci=parents[i];i++){\n displays[i] = ci.style.display;\n ci.style.display = 'block'\n }\n if (opt.initialFrameWidth) {\n opt.minFrameWidth = opt.initialFrameWidth;\n } else {\n opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth;\n var styleWidth = holder.style.width;\n if(/%$/.test(styleWidth)) {\n opt.initialFrameWidth = styleWidth;\n }\n }\n if (opt.initialFrameHeight) {\n opt.minFrameHeight = opt.initialFrameHeight;\n } else {\n opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight;\n }\n for(var i = 0 ,ci;ci=parents[i];i++){\n ci.style.display = displays[i]\n }\n //编辑器最外容器设置了高度,会导致,编辑器不占位\n //todo 先去掉,没有找到原因\n if(holder.style.height){\n holder.style.height = ''\n }\n editor.container.style.width = opt.initialFrameWidth + (/%$/.test(opt.initialFrameWidth) ? '' : 'px');\n editor.container.style.zIndex = opt.zIndex;\n oldRender.call(editor, editor.ui.getDom('iframeholder'));\n editor.fireEvent(\"afteruiready\");\n }\n })\n };\n return editor;\n };\n\n\n /**\n * @file\n * @name UE\n * @short UE\n * @desc UEditor的顶部命名空间\n */\n /**\n * @name getEditor\n * @since 1.2.4+\n * @grammar UE.getEditor(id,[opt]) => Editor实例\n * @desc 提供一个全局的方法得到编辑器实例\n *\n * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回\n * * ''opt'' 编辑器的可选参数\n * @example\n * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例\n * this.setContent('hello')\n * }});\n * UE.getEditor('containerId'); //返回刚创建的实例\n *\n */\n UE.getEditor = function (id, opt) {\n var editor = instances[id];\n if (!editor) {\n editor = instances[id] = new UE.ui.Editor(opt);\n editor.render(id);\n }\n return editor;\n };\n\n\n UE.delEditor = function (id) {\n var editor;\n if (editor = instances[id]) {\n editor.key && editor.destroy();\n delete instances[id]\n }\n };\n\n UE.registerUI = function(uiName,fn,index,editorId){\n utils.each(uiName.split(/\\s+/), function (name) {\n UE._customizeUI[name] = {\n id : editorId,\n execFn:fn,\n index:index\n };\n })\n\n }\n\n})();\n\n// adapter/message.js\nUE.registerUI('message', function(editor) {\n\n var editorui = baidu.editor.ui;\n var Message = editorui.Message;\n var holder;\n var _messageItems = [];\n var me = editor;\n\n me.addListener('ready', function(){\n holder = document.getElementById(me.ui.id + '_message_holder');\n updateHolderPos();\n setTimeout(function(){\n updateHolderPos();\n }, 500);\n });\n\n me.addListener('showmessage', function(type, opt){\n opt = utils.isString(opt) ? {\n 'content': opt\n } : opt;\n var message = new Message({\n 'timeout': opt.timeout,\n 'type': opt.type,\n 'content': opt.content,\n 'keepshow': opt.keepshow,\n 'editor': me\n }),\n mid = opt.id || ('msg_' + (+new Date()).toString(36));\n message.render(holder);\n _messageItems[mid] = message;\n message.reset(opt);\n updateHolderPos();\n return mid;\n });\n\n me.addListener('updatemessage',function(type, id, opt){\n opt = utils.isString(opt) ? {\n 'content': opt\n } : opt;\n var message = _messageItems[id];\n message.render(holder);\n message && message.reset(opt);\n });\n\n me.addListener('hidemessage',function(type, id){\n var message = _messageItems[id];\n message && message.hide();\n });\n\n function updateHolderPos(){\n var toolbarbox = me.ui.getDom('toolbarbox');\n if (toolbarbox) {\n holder.style.top = toolbarbox.offsetHeight + 3 + 'px';\n }\n holder.style.zIndex = Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1;\n }\n\n});\n\n\n// adapter/autosave.js\nUE.registerUI('autosave', function(editor) {\n var timer = null,uid = null;\n editor.on('afterautosave',function(){\n clearTimeout(timer);\n\n timer = setTimeout(function(){\n if(uid){\n editor.trigger('hidemessage',uid);\n }\n uid = editor.trigger('showmessage',{\n content : editor.getLang('autosave.success'),\n timeout : 2000\n });\n\n },2000)\n })\n\n});\n\n\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ueditor/ueditor.all.js","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"listCz.vue\",\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"sourceMap\":true}!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-a7bdbf18\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/sub/listCz.vue\n// module id = pbz3\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Mjc0MkI4Q0ZERTZEMTFFODhBMjdEOTBEREE3RTlFM0IiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Mjc0MkI4RDBERTZEMTFFODhBMjdEOTBEREE3RTlFM0IiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNzQyQjhDRERFNkQxMUU4OEEyN0Q5MEREQTdFOUUzQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNzQyQjhDRURFNkQxMUU4OEEyN0Q5MEREQTdFOUUzQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtK+SYwAAAHESURBVHjadNNPSFRRFMdxR1JxVUIhKIGbpG22CDeFiIPSRjEQlFykRH8El9ayXOhCEFRUUCSIYhB1oWAU1iCCMCloSWKEaLumJKeIVBzL74Hfg+NjvPCBN/POPfeee+6LPOz+l3XK6MJ1HOEAvZgNB2WfMrkKHVjBsv4bzBR4xj0XIqnnGsyjzS2042LP4hB/gx1E8U2r9aMdr90Eq3MbHzGKz9hCniXIwSRu4imuoAHdod2WYQkXcQMbmLESBvDeHdC0m3QHpZhSTIt7V4u4JbiL6tBqBVhARLVbTAwPXMxusAOrdxy33epv8QMV+n1OE9a1Yxtj1mZL0Kc+P9fpFmtCmVsthVY8VoJK1OFC0IWkDjNo7WGGlu+rJBt52EPaEjRiQqXY+Kq+x0IJrH3P9PwGCaxa4AvcwogLjuoaJ9SB7+pSp96nVcI7S/BSP/ywS1KkSSmdfn0oJhfXrN77+IVh/NEqvbrKT0KT7F2JyrUbm2MJfqMJi1aTrmxcqw67yXO4jA/YRL7tMviYrIw1fNK9H0JzKEE5zuv0L6krP/3XuOaeX+EeHqmtV1Xmnt5/yfQ5+2E3skedsIP+79p8YhwLMACjHWy5qj2azAAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-set.png\n// module id = sDcN\n// module chunks = 105","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEM0NzkzNzlERTZEMTFFOEJENTFDNEEzNkRCODdGMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEM0NzkzN0FERTZEMTFFOEJENTFDNEEzNkRCODdGMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4QzQ3OTM3N0RFNkQxMUU4QkQ1MUM0QTM2REI4N0YyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4QzQ3OTM3OERFNkQxMUU4QkQ1MUM0QTM2REI4N0YyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiItRcYAAAIJSURBVHjapJTPK2VhGMfv4d6GwjXiRsmChJCUEFNWs5n/gVhjFjZK2V8bGxaspCglVhaKkGmMsjAZPyOyuIVhhmvm+n2v76PvW0+nc50bT316z3mf8z7n+fla7cGo5xVJAX2gEvi49wQ2QQ8ID3Zbjge9ntelEHwFl+Av99JAE5gCi/EOuhn+wLUMnKi9W0YTV5JcDJs85aq9PJWSNxs2CQyrvbBN96ZUWCrXYfXs6pSb4T9c5xx0p+8xfAw+gwAIsiM6wRlYf49hkXmuzSAbjCdwxrV4WmIkIbHU5ElR2kGpzYAx2MjpW2JRLVuRD8AQJnHHnoo20AW2HQ5GORDJoMghUtF/AX7Qajfs53SVx4luljmu0Zvmrujoi21gyXLK8UWCPZ1Ie754XMAxFU8zQAOIgA2GWAI+gnyQDup5Ke3S0wruSzSFeK/Dei6Gt9ifRr5z/cTnXZtXP7im8g75ZbtHVsGdl0Z7wQyVUqA1UMyPRFoYgemeaZDDKDy8Rs3I14JhUzwx8FP9+T9by9RgAYT4vK8cSGIBl81BpELS+GAOZjkU6lH1c0DpclWLRWlMp1IiiRnDIYe+9KlOOFK6Q+Wxlx7/s90vlknFJNhTgyFVvqbXIiu8eEQyVboi9Fj094xQ8u4Tw/1ssQAVEsUE+Mb3EVDFdvLwZ6PgN7gBY6BaeXwFBp4FGAARa3zM49vg4QAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-mc.png\n// module id = t7sT\n// module chunks = 105","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAACAklEQVQ4T92Uz2sTQRTH39tN1QgSCRjwZoRAPSiSZN/kUOnJk0UE6c2zHrwIouCh/QdEKFQRFLUoKh6rUoJ4UVTY2VkCQs45iRAv/iBEY2a+siWBtMZNi56c0/DmO5+ZN3zny/SPB0/iGWNmnHOXAewkomWl1PO0PRuAcRwfcc7liSgHQAE4nsyJ6JHneXucc2eZ+QOANc/zIiL6CKAjIsl8fWwAhmFYJ6LdRPSTmd8DeCkidWa2idgYs99ae46IjjGzn9QA7FVKHf0jsFAonCoWi98nPcVwXWv9SkRm/2MgADbGnA+C4HrS5l+1nMCiKLpHRG9F5Pa2gMaYnHPuRSaTmSuXy58GsLtE9G4I2xYwEcdxfKjf79/KZrMnu93uDSKqK6XujzogtWWt9VPn3JlarfZ1uCkxu7X2GYCFzbDBDd+IyMxY20RRdA3Aqoi83ooPG43GgV6vd1UpNT8WaIw5bK1dHBWkgcMwTL7kkyAIVscCk2IYhsvMHIvIShpMa70IQJRSc6O639LGGDPlnFsjohUReTgOqrVeAHDa9/3ZarX6JRU4CIEpa+0dIvqcz+cvlUqlH0m92Wzu6HQ6SwAO5nK5+enp6W+bD0zNwyiKLgA4AWBpPZqYbwJ4LCJXmNmNu/3EgG21Wrva7fZFZt7n+/6DSqUSp73tROBW7DOq+QXbdiAk+NFx6AAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/security.png\n// module id = udE8\n// module chunks = 105","module.exports = \"data:application/x-font-ttf;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/lib/icon/iconfont.ttf?t=1526025951747\n// module id = vf8o\n// module chunks = 105","\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/lib/vue-picture-viewer.vue","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 directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.dispalyViewer,\n expression: \"dispalyViewer\"\n }\n ],\n style: _vm.maskContainer,\n on: {\n mouseover: function($event) {\n return _vm.eleShow()\n },\n mouseleave: function($event) {\n return _vm.eleHide()\n }\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showEle == true,\n expression: \"showEle==true\"\n }\n ],\n staticClass: \"imgName\"\n },\n [\n _c(\"span\", { staticClass: \"center\" }, [\n _vm._v(_vm._s(_vm.bigImgName))\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"closeBtn\", on: { click: _vm.closeViewer } },\n [_c(\"i\", { staticClass: \"iconfont icon-guanbi\" })]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showEle == true,\n expression: \"showEle==true\"\n }\n ],\n staticClass: \"leftArrowCon\",\n on: { click: _vm.handlePrev }\n },\n [_c(\"span\", { staticClass: \"leftArrow\" }, [_vm._v(\"《\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n ref: \"imgContainer\",\n staticClass: \"imgContainer\",\n style: _vm.imgContainer\n },\n [\n _c(\"img\", {\n ref: \"bigImg\",\n style: _vm.bigImg,\n attrs: { src: _vm.bigImgUrl, alt: \"\", width: \"96%\", height: \"96%\" }\n }),\n _vm._v(\" \"),\n _c(\n \"transition\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showEle == true,\n expression: \"showEle==true\"\n }\n ],\n attrs: { name: \"fade\" }\n },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showTips,\n expression: \"showTips\"\n }\n ],\n staticClass: \"tips\"\n },\n [_vm._v(_vm._s(_vm.tipsText))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showEle == true,\n expression: \"showEle==true\"\n }\n ],\n staticClass: \"rightArrowCon\",\n on: { click: _vm.handleNext }\n },\n [_c(\"span\", { staticClass: \"rightArrow\" }, [_vm._v(\"》\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showEle == true,\n expression: \"showEle==true\"\n }\n ],\n staticClass: \"fixedHandle\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"handleContainer cancelselect\",\n attrs: { onselectstart: \"return false\" }\n },\n [\n _c(\"ul\", [\n _c(\"li\", { on: { click: _vm.enlarge } }, [\n _c(\"i\", { staticClass: \"iconfont icon-fangda\" })\n ]),\n _vm._v(\" \"),\n _c(\"li\", { on: { click: _vm.reduce } }, [\n _c(\"i\", { staticClass: \"iconfont icon-unie039\" })\n ]),\n _vm._v(\" \"),\n _c(\"li\", { on: { click: _vm.rotate } }, [\n _c(\"i\", { staticClass: \"iconfont icon-xuanzhuan\" })\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.displayThumbnailContainer\n ? _c(\"div\", { staticClass: \"thumbnailContainer\" }, [\n _c(\n \"ul\",\n _vm._l(this.imgData, function(item, index) {\n return _c(\n \"li\",\n {\n key: index,\n on: {\n click: function($event) {\n return _vm.switchImgUrl(index)\n }\n }\n },\n [_c(\"img\", { attrs: { src: item.url, alt: \"\" } })]\n )\n }),\n 0\n )\n ])\n : _vm._e()\n ]\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-0e2dcdc2\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0e2dcdc2\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/lib/vue-picture-viewer.vue\n// module id = null\n// module chunks = ","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0e2dcdc2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./vue-picture-viewer.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./vue-picture-viewer.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./vue-picture-viewer.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0e2dcdc2\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./vue-picture-viewer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0e2dcdc2\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/lib/vue-picture-viewer.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-0e2dcdc2\", Component.options)\n } else {\n hotAPI.reload(\"data-v-0e2dcdc2\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/lib/vue-picture-viewer.vue\n// module id = null\n// module chunks = ","import vuePictureViewer from './vue-picture-viewer'\n\nconst pictureviewer = {\n install (Vue, options) {\n Vue.component(vuePictureViewer.name, vuePictureViewer)\n }\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(pictureviewer)\n}\n\nexport default pictureviewer\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/lib/index.js","module.exports = \"data:image/png;base64,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UmVhZHlxyWU8AAADJmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTEwMjIwMDJERTZEMTFFODlBRTU5REFFQ0U3NDQ4QkQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTEwMjIwMDNERTZEMTFFODlBRTU5REFFQ0U3NDQ4QkQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MTAyMjAwMERFNkQxMUU4OUFFNTlEQUVDRTc0NDhCRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5MTAyMjAwMURFNkQxMUU4OUFFNTlEQUVDRTc0NDhCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpAFz1UAAAJESURBVHjapJRLaFNBFIZz08ZXxaoNunCjZiEqCHblQhEEsxFsF1bFiohUxCgulKSKuC1WaEEUWlFsoUXsxoK4EcEHdCGuIoKCdWnRtFZRi2hrEr8J/8B0uLkpOPDl3Jm58+c87pzgzNVSrMpYDvvgAOyCtVr/CmPwAB7d7Aymww7Hq4iek8B9CRvRH/AdVsN+GIQvZ7vLlxYivBKewnVIwF3Yq/VGWRPJbrihM12I52GDKxQ4qTAHXsNGeAanYDwWPUwkt6BFEW0iNZ99j59I9B7sCRHdCWlvrYBQK7YXVij381KRgR3wEtqrePcCHofVBfELKmaKlPRY4UVmT++0RIT9q0bBD0IZziPeFFeFAxiCyQjh37LlsE28LmJ6ND1hhI9p0l+jUFawGPFOr+zxuAplxqvYfw68/oT5A1uMcAP8hL/aN99tAaY8mrQ/pZRV1snnJBx29D+an/qQ8JbCmgjHkiFry5znkhWe1Y0KlMeHeq7zcluQ6GJFF1ghUuAWdJ39dJ5rodnzoihKwh6e1byy74qSkqS8/2CEh+0nUqM21sO6iHdOyw4b4VFNTnq58kdiAR/GRdk7RngGLuvgaMShxqgLQhpuy7EB0jNhr2eXmk7auT3+MM3mqK26J5rFdMA3RT6vbZpqvoFV6nCm2U/XCH2JHMlovhVv3/oNZQK2wTs4ogvQDZtDBFNwRRclI7vdivoeu+MaZJ35nP64rObuFrkPcojOuAL1VULMqZW2wSFFst65WXn13xEE34cJ/BNgAM/ppewHs1MJAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon-add.png\n// module id = xpjE\n// module chunks = 105","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABpUlEQVQ4T+3SP4hTQRAG8JkJ4YGgIlae7cGJTcLj7UwKCwuLq06uEhvtT62s1FoOLBU7C7Wz0+bEQsFCyP4RclioYKticaAcFglkP8lBwHgvJjks3XJ35jfDxzJNOSmloznnDSK6SkRLAL4R0VtmfiUiD6qq+lHXynWXMUYFsEVE73LONzqdTndU1+12OyKyCeB0o9FYq6rK/9m/D+z1eicHg8E2gOtm9qhuoPf+MhHdKYqibLfbn3+v2QeGEJ4A+GRmt6bFMbr33t9m5mVVvTAVTCkdyjl/B3DCzHZmgMeZ+WtRFMdardbPce3EhimlM8Ph8L6Ztf6Gjd+899sisuGce1MLxhjPA7imqufmBF+KyF3n3LNa0Hu/zsxXFgGJ6J6ZPZ0AY4xrOeeSmU8BUCJ6PM+GRHSJmQOADyISnHNbexl673dE5GHOeXdOaKJMRA4DuKiqS2Nwt9lsrpRl+eUg4Ojv9vv992Z2ZC4wxrgyGuSc+1g3cGEwhLBJRFDVm//BvQQOkuEqAJjZi3+S4ayvtPCGC4MhhOdEtDqrccb7a1U9+wsTVx0kEdB29gAAAABJRU5ErkJggg==\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/lock.png\n// module id = ybzx\n// module chunks = 105"],"sourceRoot":""}