ueditor.all.min.js 700 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484
  1. /*!
  2. * UEditor
  3. * version: ueditor
  4. * build: Wed Aug 10 2016 11:06:16 GMT+0800 (CST)
  5. */
  6. !(function() {
  7. function getListener(a, b, c) {
  8. var d;
  9. return (
  10. (b = b.toLowerCase()),
  11. (d = a.__allListeners || (c && (a.__allListeners = {}))) &&
  12. (d[b] || (c && (d[b] = [])))
  13. );
  14. }
  15. function getDomNode(a, b, c, d, e, f) {
  16. var g,
  17. h = d && a[b];
  18. for (!h && (h = a[c]); !h && (g = (g || a).parentNode); ) {
  19. if ("BODY" == g.tagName || (f && !f(g))) return null;
  20. h = g[c];
  21. }
  22. return h && e && !e(h) ? getDomNode(h, b, c, !1, e) : h;
  23. }
  24. UEDITOR_CONFIG = window.UEDITOR_CONFIG || {};
  25. var baidu = window.baidu || {};
  26. (window.baidu = baidu),
  27. (window.UE = baidu.editor = window.UE || {}),
  28. (UE.plugins = {}),
  29. (UE.commands = {}),
  30. (UE.instants = {}),
  31. (UE.I18N = {}),
  32. (UE._customizeUI = {}),
  33. (UE.version = "1.4.3");
  34. var dom = (UE.dom = {}),
  35. browser = (UE.browser = (function() {
  36. var a = navigator.userAgent.toLowerCase(),
  37. b = window.opera,
  38. c = {
  39. ie: /(msie\s|trident.*rv:)([\w.]+)/.test(a),
  40. opera: !!b && b.version,
  41. webkit: a.indexOf(" applewebkit/") > -1,
  42. mac: a.indexOf("macintosh") > -1,
  43. quirks: "BackCompat" == document.compatMode,
  44. };
  45. c.gecko = "Gecko" == navigator.product && !c.webkit && !c.opera && !c.ie;
  46. var d = 0;
  47. if (c.ie) {
  48. var e = a.match(/(?:msie\s([\w.]+))/),
  49. f = a.match(/(?:trident.*rv:([\w.]+))/);
  50. (d =
  51. e && f && e[1] && f[1]
  52. ? Math.max(1 * e[1], 1 * f[1])
  53. : e && e[1]
  54. ? 1 * e[1]
  55. : f && f[1]
  56. ? 1 * f[1]
  57. : 0),
  58. (c.ie11Compat = 11 == document.documentMode),
  59. (c.ie9Compat = 9 == document.documentMode),
  60. (c.ie8 = !!document.documentMode),
  61. (c.ie8Compat = 8 == document.documentMode),
  62. (c.ie7Compat =
  63. (7 == d && !document.documentMode) || 7 == document.documentMode),
  64. (c.ie6Compat = d < 7 || c.quirks),
  65. (c.ie9above = d > 8),
  66. (c.ie9below = d < 9),
  67. (c.ie11above = d > 10),
  68. (c.ie11below = d < 11);
  69. }
  70. if (c.gecko) {
  71. var g = a.match(/rv:([\d\.]+)/);
  72. g &&
  73. ((g = g[1].split(".")),
  74. (d = 1e4 * g[0] + 100 * (g[1] || 0) + 1 * (g[2] || 0)));
  75. }
  76. return (
  77. /chrome\/(\d+\.\d)/i.test(a) && (c.chrome = +RegExp.$1),
  78. /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a) &&
  79. !/chrome/i.test(a) &&
  80. (c.safari = +(RegExp.$1 || RegExp.$2)),
  81. c.opera && (d = parseFloat(b.version())),
  82. c.webkit && (d = parseFloat(a.match(/ applewebkit\/(\d+)/)[1])),
  83. (c.version = d),
  84. (c.isCompatible =
  85. !c.mobile &&
  86. ((c.ie && d >= 6) ||
  87. (c.gecko && d >= 10801) ||
  88. (c.opera && d >= 9.5) ||
  89. (c.air && d >= 1) ||
  90. (c.webkit && d >= 522) ||
  91. !1)),
  92. c
  93. );
  94. })()),
  95. ie = browser.ie,
  96. webkit = browser.webkit,
  97. gecko = browser.gecko,
  98. opera = browser.opera,
  99. utils = (UE.utils = {
  100. each: function(a, b, c) {
  101. if (null != a)
  102. if (a.length === +a.length) {
  103. for (var d = 0, e = a.length; d < e; d++)
  104. if (b.call(c, a[d], d, a) === !1) return !1;
  105. } else
  106. for (var f in a)
  107. if (a.hasOwnProperty(f) && b.call(c, a[f], f, a) === !1)
  108. return !1;
  109. },
  110. makeInstance: function(a) {
  111. var b = new Function();
  112. return (b.prototype = a), (a = new b()), (b.prototype = null), a;
  113. },
  114. extend: function(a, b, c) {
  115. if (b) for (var d in b) (c && a.hasOwnProperty(d)) || (a[d] = b[d]);
  116. return a;
  117. },
  118. extend2: function(a) {
  119. for (var b = arguments, c = 1; c < b.length; c++) {
  120. var d = b[c];
  121. for (var e in d) a.hasOwnProperty(e) || (a[e] = d[e]);
  122. }
  123. return a;
  124. },
  125. inherits: function(a, b) {
  126. var c = a.prototype,
  127. d = utils.makeInstance(b.prototype);
  128. return utils.extend(d, c, !0), (a.prototype = d), (d.constructor = a);
  129. },
  130. bind: function(a, b) {
  131. return function() {
  132. return a.apply(b, arguments);
  133. };
  134. },
  135. defer: function(a, b, c) {
  136. var d;
  137. return function() {
  138. c && clearTimeout(d), (d = setTimeout(a, b));
  139. };
  140. },
  141. indexOf: function(a, b, c) {
  142. var d = -1;
  143. return (
  144. (c = this.isNumber(c) ? c : 0),
  145. this.each(a, function(a, e) {
  146. if (e >= c && a === b) return (d = e), !1;
  147. }),
  148. d
  149. );
  150. },
  151. removeItem: function(a, b) {
  152. for (var c = 0, d = a.length; c < d; c++)
  153. a[c] === b && (a.splice(c, 1), c--);
  154. },
  155. trim: function(a) {
  156. return a.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, "");
  157. },
  158. listToMap: function(a) {
  159. if (!a) return {};
  160. a = utils.isArray(a) ? a : a.split(",");
  161. for (var b, c = 0, d = {}; (b = a[c++]); )
  162. d[b.toUpperCase()] = d[b] = 1;
  163. return d;
  164. },
  165. unhtml: function(a, b) {
  166. return a
  167. ? a.replace(
  168. b || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,
  169. function(a, b) {
  170. return b
  171. ? a
  172. : {
  173. "<": "&lt;",
  174. "&": "&amp;",
  175. '"': "&quot;",
  176. ">": "&gt;",
  177. "'": "&#39;",
  178. }[a];
  179. }
  180. )
  181. : "";
  182. },
  183. unhtmlForUrl: function(a, b) {
  184. return a
  185. ? a.replace(b || /[<">']/g, function(a) {
  186. return {
  187. "<": "&lt;",
  188. "&": "&amp;",
  189. '"': "&quot;",
  190. ">": "&gt;",
  191. "'": "&#39;",
  192. }[a];
  193. })
  194. : "";
  195. },
  196. html: function(a) {
  197. return a
  198. ? a.replace(/&((g|l|quo)t|amp|#39|nbsp);/g, function(a) {
  199. return {
  200. "&lt;": "<",
  201. "&amp;": "&",
  202. "&quot;": '"',
  203. "&gt;": ">",
  204. "&#39;": "'",
  205. "&nbsp;": " ",
  206. }[a];
  207. })
  208. : "";
  209. },
  210. cssStyleToDomStyle: (function() {
  211. var a = document.createElement("div").style,
  212. b = {
  213. float:
  214. void 0 != a.cssFloat
  215. ? "cssFloat"
  216. : void 0 != a.styleFloat
  217. ? "styleFloat"
  218. : "float",
  219. };
  220. return function(a) {
  221. return (
  222. b[a] ||
  223. (b[a] = a.toLowerCase().replace(/-./g, function(a) {
  224. return a.charAt(1).toUpperCase();
  225. }))
  226. );
  227. };
  228. })(),
  229. loadFile: (function() {
  230. function a(a, c) {
  231. try {
  232. for (var d, e = 0; (d = b[e++]); )
  233. if (d.doc === a && d.url == (c.src || c.href)) return d;
  234. } catch (f) {
  235. return null;
  236. }
  237. }
  238. var b = [];
  239. return function(c, d, e) {
  240. var f = a(c, d);
  241. if (f) return void (f.ready ? e && e() : f.funs.push(e));
  242. if ((b.push({ doc: c, url: d.src || d.href, funs: [e] }), !c.body)) {
  243. var g = [];
  244. for (var h in d) "tag" != h && g.push(h + '="' + d[h] + '"');
  245. return void c.write(
  246. "<" + d.tag + " " + g.join(" ") + " ></" + d.tag + ">"
  247. );
  248. }
  249. if (!d.id || !c.getElementById(d.id)) {
  250. var i = c.createElement(d.tag);
  251. delete d.tag;
  252. for (var h in d) i.setAttribute(h, d[h]);
  253. (i.onload = i.onreadystatechange = function() {
  254. if (!this.readyState || /loaded|complete/.test(this.readyState)) {
  255. if (((f = a(c, d)), f.funs.length > 0)) {
  256. f.ready = 1;
  257. for (var b; (b = f.funs.pop()); ) b();
  258. }
  259. i.onload = i.onreadystatechange = null;
  260. }
  261. }),
  262. (i.onerror = function() {
  263. throw Error(
  264. "The load " +
  265. (d.href || d.src) +
  266. " fails,check the url settings of file ueditor.config.js "
  267. );
  268. }),
  269. c.getElementsByTagName("head")[0].appendChild(i);
  270. }
  271. };
  272. })(),
  273. isEmptyObject: function(a) {
  274. if (null == a) return !0;
  275. if (this.isArray(a) || this.isString(a)) return 0 === a.length;
  276. for (var b in a) if (a.hasOwnProperty(b)) return !1;
  277. return !0;
  278. },
  279. fixColor: function(a, b) {
  280. if (/color/i.test(a) && /rgba?/.test(b)) {
  281. var c = b.split(",");
  282. if (c.length > 3) return "";
  283. b = "#";
  284. for (var d, e = 0; (d = c[e++]); )
  285. (d = parseInt(d.replace(/[^\d]/gi, ""), 10).toString(16)),
  286. (b += 1 == d.length ? "0" + d : d);
  287. b = b.toUpperCase();
  288. }
  289. return b;
  290. },
  291. optCss: function(a) {
  292. function b(a, b) {
  293. if (!a) return "";
  294. var c = a.top,
  295. d = a.bottom,
  296. e = a.left,
  297. f = a.right,
  298. g = "";
  299. if (c && e && d && f)
  300. g +=
  301. ";" +
  302. b +
  303. ":" +
  304. (c == d && d == e && e == f
  305. ? c
  306. : c == d && e == f
  307. ? c + " " + e
  308. : e == f
  309. ? c + " " + e + " " + d
  310. : c + " " + f + " " + d + " " + e) +
  311. ";";
  312. else for (var h in a) g += ";" + b + "-" + h + ":" + a[h] + ";";
  313. return g;
  314. }
  315. var c, d;
  316. return (
  317. (a = a.replace(
  318. /(padding|margin|border)\-([^:]+):([^;]+);?/gi,
  319. function(a, b, e, f) {
  320. if (1 == f.split(" ").length)
  321. switch (b) {
  322. case "padding":
  323. return !c && (c = {}), (c[e] = f), "";
  324. case "margin":
  325. return !d && (d = {}), (d[e] = f), "";
  326. case "border":
  327. return "initial" == f ? "" : a;
  328. }
  329. return a;
  330. }
  331. )),
  332. (a += b(c, "padding") + b(d, "margin")),
  333. a
  334. .replace(/^[ \n\r\t;]*|[ \n\r\t]*$/, "")
  335. .replace(/;([ \n\r\t]+)|\1;/g, ";")
  336. .replace(/(&((l|g)t|quot|#39))?;{2,}/g, function(a, b) {
  337. return b ? b + ";;" : ";";
  338. })
  339. );
  340. },
  341. clone: function(a, b) {
  342. var c;
  343. b = b || {};
  344. for (var d in a)
  345. a.hasOwnProperty(d) &&
  346. ((c = a[d]),
  347. "object" == typeof c
  348. ? ((b[d] = utils.isArray(c) ? [] : {}), utils.clone(a[d], b[d]))
  349. : (b[d] = c));
  350. return b;
  351. },
  352. transUnitToPx: function(a) {
  353. if (!/(pt|cm)/.test(a)) return a;
  354. var b;
  355. switch (
  356. (a.replace(/([\d.]+)(\w+)/, function(c, d, e) {
  357. (a = d), (b = e);
  358. }),
  359. b)
  360. ) {
  361. case "cm":
  362. a = 25 * parseFloat(a);
  363. break;
  364. case "pt":
  365. a = Math.round((96 * parseFloat(a)) / 72);
  366. }
  367. return a + (a ? "px" : "");
  368. },
  369. domReady: (function() {
  370. function a(a) {
  371. a.isReady = !0;
  372. for (var c; (c = b.pop()); c());
  373. }
  374. var b = [];
  375. return function(c, d) {
  376. d = d || window;
  377. var e = d.document;
  378. c && b.push(c),
  379. "complete" === e.readyState
  380. ? a(e)
  381. : (e.isReady && a(e),
  382. browser.ie && 11 != browser.version
  383. ? (!(function() {
  384. if (!e.isReady) {
  385. try {
  386. e.documentElement.doScroll("left");
  387. } catch (b) {
  388. return void setTimeout(arguments.callee, 0);
  389. }
  390. a(e);
  391. }
  392. })(),
  393. d.attachEvent("onload", function() {
  394. a(e);
  395. }))
  396. : (e.addEventListener(
  397. "DOMContentLoaded",
  398. function() {
  399. e.removeEventListener(
  400. "DOMContentLoaded",
  401. arguments.callee,
  402. !1
  403. ),
  404. a(e);
  405. },
  406. !1
  407. ),
  408. d.addEventListener(
  409. "load",
  410. function() {
  411. a(e);
  412. },
  413. !1
  414. )));
  415. };
  416. })(),
  417. cssRule:
  418. browser.ie && 11 != browser.version
  419. ? function(a, b, c) {
  420. var d, e;
  421. if (void 0 === b || (b && b.nodeType && 9 == b.nodeType)) {
  422. if (
  423. ((c = b && b.nodeType && 9 == b.nodeType ? b : c || document),
  424. (d = c.indexList || (c.indexList = {})),
  425. (e = d[a]),
  426. void 0 !== e)
  427. )
  428. return c.styleSheets[e].cssText;
  429. } else {
  430. if (
  431. ((c = c || document),
  432. (d = c.indexList || (c.indexList = {})),
  433. (e = d[a]),
  434. "" === b)
  435. )
  436. return (
  437. void 0 !== e &&
  438. ((c.styleSheets[e].cssText = ""), delete d[a], !0)
  439. );
  440. void 0 !== e
  441. ? (sheetStyle = c.styleSheets[e])
  442. : ((sheetStyle = c.createStyleSheet(
  443. "",
  444. (e = c.styleSheets.length)
  445. )),
  446. (d[a] = e)),
  447. (sheetStyle.cssText = b);
  448. }
  449. }
  450. : function(a, b, c) {
  451. var d;
  452. return void 0 === b || (b && b.nodeType && 9 == b.nodeType)
  453. ? ((c = b && b.nodeType && 9 == b.nodeType ? b : c || document),
  454. (d = c.getElementById(a)),
  455. d ? d.innerHTML : void 0)
  456. : ((c = c || document),
  457. (d = c.getElementById(a)),
  458. "" === b
  459. ? !!d && (d.parentNode.removeChild(d), !0)
  460. : void (d
  461. ? (d.innerHTML = b)
  462. : ((d = c.createElement("style")),
  463. (d.id = a),
  464. (d.innerHTML = b),
  465. c.getElementsByTagName("head")[0].appendChild(d))));
  466. },
  467. sort: function(a, b) {
  468. b =
  469. b ||
  470. function(a, b) {
  471. return a.localeCompare(b);
  472. };
  473. for (var c = 0, d = a.length; c < d; c++)
  474. for (var e = c, f = a.length; e < f; e++)
  475. if (b(a[c], a[e]) > 0) {
  476. var g = a[c];
  477. (a[c] = a[e]), (a[e] = g);
  478. }
  479. return a;
  480. },
  481. serializeParam: function(a) {
  482. var b = [];
  483. for (var c in a)
  484. if ("method" != c && "timeout" != c && "async" != c)
  485. if (
  486. "function" != (typeof a[c]).toLowerCase() &&
  487. "object" != (typeof a[c]).toLowerCase()
  488. )
  489. b.push(encodeURIComponent(c) + "=" + encodeURIComponent(a[c]));
  490. else if (utils.isArray(a[c]))
  491. for (var d = 0; d < a[c].length; d++)
  492. b.push(
  493. encodeURIComponent(c) + "[]=" + encodeURIComponent(a[c][d])
  494. );
  495. return b.join("&");
  496. },
  497. formatUrl: function(a) {
  498. var b = a.replace(/&&/g, "&");
  499. return (
  500. (b = b.replace(/\?&/g, "?")),
  501. (b = b.replace(/&$/g, "")),
  502. (b = b.replace(/&#/g, "#")),
  503. (b = b.replace(/&+/g, "&"))
  504. );
  505. },
  506. isCrossDomainUrl: function(a) {
  507. var b = document.createElement("a");
  508. return (
  509. (b.href = a),
  510. browser.ie && (b.href = b.href),
  511. !(
  512. b.protocol == location.protocol &&
  513. b.hostname == location.hostname &&
  514. (b.port == location.port ||
  515. ("80" == b.port && "" == location.port) ||
  516. ("" == b.port && "80" == location.port))
  517. )
  518. );
  519. },
  520. clearEmptyAttrs: function(a) {
  521. for (var b in a) "" === a[b] && delete a[b];
  522. return a;
  523. },
  524. str2json: function(a) {
  525. return utils.isString(a)
  526. ? window.JSON
  527. ? JSON.parse(a)
  528. : new Function("return " + utils.trim(a || ""))()
  529. : null;
  530. },
  531. json2str: (function() {
  532. function a(a) {
  533. return (
  534. /["\\\x00-\x1f]/.test(a) &&
  535. (a = a.replace(/["\\\x00-\x1f]/g, function(a) {
  536. var b = e[a];
  537. return b
  538. ? b
  539. : ((b = a.charCodeAt()),
  540. "\\u00" +
  541. Math.floor(b / 16).toString(16) +
  542. (b % 16).toString(16));
  543. })),
  544. '"' + a + '"'
  545. );
  546. }
  547. function b(a) {
  548. var b,
  549. c,
  550. d,
  551. e = ["["],
  552. f = a.length;
  553. for (c = 0; c < f; c++)
  554. switch (((d = a[c]), typeof d)) {
  555. case "undefined":
  556. case "function":
  557. case "unknown":
  558. break;
  559. default:
  560. b && e.push(","), e.push(utils.json2str(d)), (b = 1);
  561. }
  562. return e.push("]"), e.join("");
  563. }
  564. function c(a) {
  565. return a < 10 ? "0" + a : a;
  566. }
  567. function d(a) {
  568. return (
  569. '"' +
  570. a.getFullYear() +
  571. "-" +
  572. c(a.getMonth() + 1) +
  573. "-" +
  574. c(a.getDate()) +
  575. "T" +
  576. c(a.getHours()) +
  577. ":" +
  578. c(a.getMinutes()) +
  579. ":" +
  580. c(a.getSeconds()) +
  581. '"'
  582. );
  583. }
  584. if (window.JSON) return JSON.stringify;
  585. var e = {
  586. "\b": "\\b",
  587. "\t": "\\t",
  588. "\n": "\\n",
  589. "\f": "\\f",
  590. "\r": "\\r",
  591. '"': '\\"',
  592. "\\": "\\\\",
  593. };
  594. return function(c) {
  595. switch (typeof c) {
  596. case "undefined":
  597. return "undefined";
  598. case "number":
  599. return isFinite(c) ? String(c) : "null";
  600. case "string":
  601. return a(c);
  602. case "boolean":
  603. return String(c);
  604. default:
  605. if (null === c) return "null";
  606. if (utils.isArray(c)) return b(c);
  607. if (utils.isDate(c)) return d(c);
  608. var e,
  609. f,
  610. g = ["{"],
  611. h = utils.json2str;
  612. for (var i in c)
  613. if (Object.prototype.hasOwnProperty.call(c, i))
  614. switch (((f = c[i]), typeof f)) {
  615. case "undefined":
  616. case "unknown":
  617. case "function":
  618. break;
  619. default:
  620. e && g.push(","), (e = 1), g.push(h(i) + ":" + h(f));
  621. }
  622. return g.push("}"), g.join("");
  623. }
  624. };
  625. })(),
  626. });
  627. utils.each(
  628. ["String", "Function", "Array", "Number", "RegExp", "Object", "Date"],
  629. function(a) {
  630. UE.utils["is" + a] = function(b) {
  631. return Object.prototype.toString.apply(b) == "[object " + a + "]";
  632. };
  633. }
  634. );
  635. var EventBase = (UE.EventBase = function() {});
  636. EventBase.prototype = {
  637. addListener: function(a, b) {
  638. a = utils.trim(a).split(/\s+/);
  639. for (var c, d = 0; (c = a[d++]); ) getListener(this, c, !0).push(b);
  640. },
  641. on: function(a, b) {
  642. return this.addListener(a, b);
  643. },
  644. off: function(a, b) {
  645. return this.removeListener(a, b);
  646. },
  647. trigger: function() {
  648. return this.fireEvent.apply(this, arguments);
  649. },
  650. removeListener: function(a, b) {
  651. a = utils.trim(a).split(/\s+/);
  652. for (var c, d = 0; (c = a[d++]); )
  653. utils.removeItem(getListener(this, c) || [], b);
  654. },
  655. fireEvent: function() {
  656. var a = arguments[0];
  657. a = utils.trim(a).split(" ");
  658. for (var b, c = 0; (b = a[c++]); ) {
  659. var d,
  660. e,
  661. f,
  662. g = getListener(this, b);
  663. if (g)
  664. for (f = g.length; f--; )
  665. if (g[f]) {
  666. if (((e = g[f].apply(this, arguments)), e === !0)) return e;
  667. void 0 !== e && (d = e);
  668. }
  669. (e = this["on" + b.toLowerCase()]) && (d = e.apply(this, arguments));
  670. }
  671. return d;
  672. },
  673. };
  674. var dtd = (dom.dtd = (function() {
  675. function a(a) {
  676. for (var b in a) a[b.toUpperCase()] = a[b];
  677. return a;
  678. }
  679. var b = utils.extend2,
  680. c = a({ isindex: 1, fieldset: 1 }),
  681. d = a({ input: 1, button: 1, select: 1, textarea: 1, label: 1 }),
  682. e = b(a({ a: 1 }), d),
  683. f = b({ iframe: 1 }, e),
  684. g = a({
  685. hr: 1,
  686. ul: 1,
  687. menu: 1,
  688. div: 1,
  689. blockquote: 1,
  690. noscript: 1,
  691. table: 1,
  692. center: 1,
  693. address: 1,
  694. dir: 1,
  695. pre: 1,
  696. h5: 1,
  697. dl: 1,
  698. h4: 1,
  699. noframes: 1,
  700. h6: 1,
  701. ol: 1,
  702. h1: 1,
  703. h3: 1,
  704. h2: 1,
  705. }),
  706. h = a({ ins: 1, del: 1, script: 1, style: 1 }),
  707. i = b(
  708. a({
  709. b: 1,
  710. acronym: 1,
  711. bdo: 1,
  712. var: 1,
  713. "#": 1,
  714. abbr: 1,
  715. code: 1,
  716. br: 1,
  717. i: 1,
  718. cite: 1,
  719. kbd: 1,
  720. u: 1,
  721. strike: 1,
  722. s: 1,
  723. tt: 1,
  724. strong: 1,
  725. q: 1,
  726. samp: 1,
  727. em: 1,
  728. dfn: 1,
  729. span: 1,
  730. }),
  731. h
  732. ),
  733. j = b(
  734. a({
  735. sub: 1,
  736. img: 1,
  737. embed: 1,
  738. object: 1,
  739. sup: 1,
  740. basefont: 1,
  741. map: 1,
  742. applet: 1,
  743. font: 1,
  744. big: 1,
  745. small: 1,
  746. }),
  747. i
  748. ),
  749. k = b(a({ p: 1 }), j),
  750. l = b(a({ iframe: 1 }), j, d),
  751. m = a({
  752. img: 1,
  753. embed: 1,
  754. noscript: 1,
  755. br: 1,
  756. kbd: 1,
  757. center: 1,
  758. button: 1,
  759. basefont: 1,
  760. h5: 1,
  761. h4: 1,
  762. samp: 1,
  763. h6: 1,
  764. ol: 1,
  765. h1: 1,
  766. h3: 1,
  767. h2: 1,
  768. form: 1,
  769. font: 1,
  770. "#": 1,
  771. select: 1,
  772. menu: 1,
  773. ins: 1,
  774. abbr: 1,
  775. label: 1,
  776. code: 1,
  777. table: 1,
  778. script: 1,
  779. cite: 1,
  780. input: 1,
  781. iframe: 1,
  782. strong: 1,
  783. textarea: 1,
  784. noframes: 1,
  785. big: 1,
  786. small: 1,
  787. span: 1,
  788. hr: 1,
  789. sub: 1,
  790. bdo: 1,
  791. var: 1,
  792. div: 1,
  793. object: 1,
  794. sup: 1,
  795. strike: 1,
  796. dir: 1,
  797. map: 1,
  798. dl: 1,
  799. applet: 1,
  800. del: 1,
  801. isindex: 1,
  802. fieldset: 1,
  803. ul: 1,
  804. b: 1,
  805. acronym: 1,
  806. a: 1,
  807. blockquote: 1,
  808. i: 1,
  809. u: 1,
  810. s: 1,
  811. tt: 1,
  812. address: 1,
  813. q: 1,
  814. pre: 1,
  815. p: 1,
  816. em: 1,
  817. dfn: 1,
  818. }),
  819. n = b(a({ a: 0 }), l),
  820. o = a({ tr: 1 }),
  821. p = a({ "#": 1 }),
  822. q = b(a({ param: 1 }), m),
  823. r = b(a({ form: 1 }), c, f, g, k),
  824. s = a({ li: 1, ol: 1, ul: 1 }),
  825. t = a({ style: 1, script: 1 }),
  826. u = a({ base: 1, link: 1, meta: 1, title: 1 }),
  827. v = b(u, t),
  828. w = a({ head: 1, body: 1 }),
  829. x = a({ html: 1 }),
  830. y = a({
  831. address: 1,
  832. blockquote: 1,
  833. center: 1,
  834. dir: 1,
  835. div: 1,
  836. dl: 1,
  837. fieldset: 1,
  838. form: 1,
  839. h1: 1,
  840. h2: 1,
  841. h3: 1,
  842. h4: 1,
  843. h5: 1,
  844. h6: 1,
  845. hr: 1,
  846. isindex: 1,
  847. menu: 1,
  848. noframes: 1,
  849. ol: 1,
  850. p: 1,
  851. pre: 1,
  852. table: 1,
  853. ul: 1,
  854. }),
  855. z = a({
  856. area: 1,
  857. base: 1,
  858. basefont: 1,
  859. br: 1,
  860. col: 1,
  861. command: 1,
  862. dialog: 1,
  863. embed: 1,
  864. hr: 1,
  865. img: 1,
  866. input: 1,
  867. isindex: 1,
  868. keygen: 1,
  869. link: 1,
  870. meta: 1,
  871. param: 1,
  872. source: 1,
  873. track: 1,
  874. wbr: 1,
  875. });
  876. return a({
  877. $nonBodyContent: b(x, w, u),
  878. $block: y,
  879. $inline: n,
  880. $inlineWithA: b(a({ a: 1 }), n),
  881. $body: b(a({ script: 1, style: 1 }), y),
  882. $cdata: a({ script: 1, style: 1 }),
  883. $empty: z,
  884. $nonChild: a({ iframe: 1, textarea: 1 }),
  885. $listItem: a({ dd: 1, dt: 1, li: 1 }),
  886. $list: a({ ul: 1, ol: 1, dl: 1 }),
  887. $isNotEmpty: a({
  888. table: 1,
  889. ul: 1,
  890. ol: 1,
  891. dl: 1,
  892. iframe: 1,
  893. area: 1,
  894. base: 1,
  895. col: 1,
  896. hr: 1,
  897. img: 1,
  898. embed: 1,
  899. input: 1,
  900. link: 1,
  901. meta: 1,
  902. param: 1,
  903. h1: 1,
  904. h2: 1,
  905. h3: 1,
  906. h4: 1,
  907. h5: 1,
  908. h6: 1,
  909. }),
  910. $removeEmpty: a({
  911. a: 1,
  912. abbr: 1,
  913. acronym: 1,
  914. address: 1,
  915. b: 1,
  916. bdo: 1,
  917. big: 1,
  918. cite: 1,
  919. code: 1,
  920. del: 1,
  921. dfn: 1,
  922. em: 1,
  923. font: 1,
  924. i: 1,
  925. ins: 1,
  926. label: 1,
  927. kbd: 1,
  928. q: 1,
  929. s: 1,
  930. samp: 1,
  931. small: 1,
  932. span: 1,
  933. strike: 1,
  934. strong: 1,
  935. sub: 1,
  936. sup: 1,
  937. tt: 1,
  938. u: 1,
  939. var: 1,
  940. }),
  941. $removeEmptyBlock: a({ p: 1, div: 1 }),
  942. $tableContent: a({
  943. caption: 1,
  944. col: 1,
  945. colgroup: 1,
  946. tbody: 1,
  947. td: 1,
  948. tfoot: 1,
  949. th: 1,
  950. thead: 1,
  951. tr: 1,
  952. table: 1,
  953. }),
  954. $notTransContent: a({ pre: 1, script: 1, style: 1, textarea: 1 }),
  955. html: w,
  956. head: v,
  957. style: p,
  958. script: p,
  959. body: r,
  960. base: {},
  961. link: {},
  962. meta: {},
  963. title: p,
  964. col: {},
  965. tr: a({ td: 1, th: 1 }),
  966. img: {},
  967. embed: {},
  968. colgroup: a({ thead: 1, col: 1, tbody: 1, tr: 1, tfoot: 1 }),
  969. noscript: r,
  970. td: r,
  971. br: {},
  972. th: r,
  973. center: r,
  974. kbd: n,
  975. button: b(k, g),
  976. basefont: {},
  977. h5: n,
  978. h4: n,
  979. samp: n,
  980. h6: n,
  981. ol: s,
  982. h1: n,
  983. h3: n,
  984. option: p,
  985. h2: n,
  986. form: b(c, f, g, k),
  987. select: a({ optgroup: 1, option: 1 }),
  988. font: n,
  989. ins: n,
  990. menu: s,
  991. abbr: n,
  992. label: n,
  993. table: a({
  994. thead: 1,
  995. col: 1,
  996. tbody: 1,
  997. tr: 1,
  998. colgroup: 1,
  999. caption: 1,
  1000. tfoot: 1,
  1001. }),
  1002. code: n,
  1003. tfoot: o,
  1004. cite: n,
  1005. li: r,
  1006. input: {},
  1007. iframe: r,
  1008. strong: n,
  1009. textarea: p,
  1010. noframes: r,
  1011. big: n,
  1012. small: n,
  1013. span: a({
  1014. "#": 1,
  1015. br: 1,
  1016. b: 1,
  1017. strong: 1,
  1018. u: 1,
  1019. i: 1,
  1020. em: 1,
  1021. sub: 1,
  1022. sup: 1,
  1023. strike: 1,
  1024. span: 1,
  1025. }),
  1026. hr: n,
  1027. dt: n,
  1028. sub: n,
  1029. optgroup: a({ option: 1 }),
  1030. param: {},
  1031. bdo: n,
  1032. var: n,
  1033. div: r,
  1034. object: q,
  1035. sup: n,
  1036. dd: r,
  1037. strike: n,
  1038. area: {},
  1039. dir: s,
  1040. map: b(a({ area: 1, form: 1, p: 1 }), c, h, g),
  1041. applet: q,
  1042. dl: a({ dt: 1, dd: 1 }),
  1043. del: n,
  1044. isindex: {},
  1045. fieldset: b(a({ legend: 1 }), m),
  1046. thead: o,
  1047. ul: s,
  1048. acronym: n,
  1049. b: n,
  1050. a: b(a({ a: 1 }), l),
  1051. blockquote: b(a({ td: 1, tr: 1, tbody: 1, li: 1 }), r),
  1052. caption: n,
  1053. i: n,
  1054. u: n,
  1055. tbody: o,
  1056. s: n,
  1057. address: b(f, k),
  1058. tt: n,
  1059. legend: n,
  1060. q: n,
  1061. pre: b(i, e),
  1062. p: b(a({ a: 1 }), n),
  1063. em: n,
  1064. dfn: n,
  1065. });
  1066. })()),
  1067. attrFix =
  1068. ie && browser.version < 9
  1069. ? {
  1070. tabindex: "tabIndex",
  1071. readonly: "readOnly",
  1072. for: "htmlFor",
  1073. class: "className",
  1074. maxlength: "maxLength",
  1075. cellspacing: "cellSpacing",
  1076. cellpadding: "cellPadding",
  1077. rowspan: "rowSpan",
  1078. colspan: "colSpan",
  1079. usemap: "useMap",
  1080. frameborder: "frameBorder",
  1081. }
  1082. : { tabindex: "tabIndex", readonly: "readOnly" },
  1083. styleBlock = utils.listToMap([
  1084. "-webkit-box",
  1085. "-moz-box",
  1086. "block",
  1087. "list-item",
  1088. "table",
  1089. "table-row-group",
  1090. "table-header-group",
  1091. "table-footer-group",
  1092. "table-row",
  1093. "table-column-group",
  1094. "table-column",
  1095. "table-cell",
  1096. "table-caption",
  1097. ]),
  1098. domUtils = (dom.domUtils = {
  1099. NODE_ELEMENT: 1,
  1100. NODE_DOCUMENT: 9,
  1101. NODE_TEXT: 3,
  1102. NODE_COMMENT: 8,
  1103. NODE_DOCUMENT_FRAGMENT: 11,
  1104. POSITION_IDENTICAL: 0,
  1105. POSITION_DISCONNECTED: 1,
  1106. POSITION_FOLLOWING: 2,
  1107. POSITION_PRECEDING: 4,
  1108. POSITION_IS_CONTAINED: 8,
  1109. POSITION_CONTAINS: 16,
  1110. fillChar: ie && "6" == browser.version ? "\ufeff" : "​",
  1111. keys: {
  1112. 8: 1,
  1113. 46: 1,
  1114. 16: 1,
  1115. 17: 1,
  1116. 18: 1,
  1117. 37: 1,
  1118. 38: 1,
  1119. 39: 1,
  1120. 40: 1,
  1121. 13: 1,
  1122. },
  1123. getPosition: function(a, b) {
  1124. if (a === b) return 0;
  1125. var c,
  1126. d = [a],
  1127. e = [b];
  1128. for (c = a; (c = c.parentNode); ) {
  1129. if (c === b) return 10;
  1130. d.push(c);
  1131. }
  1132. for (c = b; (c = c.parentNode); ) {
  1133. if (c === a) return 20;
  1134. e.push(c);
  1135. }
  1136. if ((d.reverse(), e.reverse(), d[0] !== e[0])) return 1;
  1137. for (var f = -1; f++, d[f] === e[f]; );
  1138. for (a = d[f], b = e[f]; (a = a.nextSibling); ) if (a === b) return 4;
  1139. return 2;
  1140. },
  1141. getNodeIndex: function(a, b) {
  1142. for (var c = a, d = 0; (c = c.previousSibling); )
  1143. b && 3 == c.nodeType
  1144. ? c.nodeType != c.nextSibling.nodeType && d++
  1145. : d++;
  1146. return d;
  1147. },
  1148. inDoc: function(a, b) {
  1149. return 10 == domUtils.getPosition(a, b);
  1150. },
  1151. findParent: function(a, b, c) {
  1152. if (a && !domUtils.isBody(a))
  1153. for (a = c ? a : a.parentNode; a; ) {
  1154. if (!b || b(a) || domUtils.isBody(a))
  1155. return b && !b(a) && domUtils.isBody(a) ? null : a;
  1156. a = a.parentNode;
  1157. }
  1158. return null;
  1159. },
  1160. findParentByTagName: function(a, b, c, d) {
  1161. return (
  1162. (b = utils.listToMap(utils.isArray(b) ? b : [b])),
  1163. domUtils.findParent(
  1164. a,
  1165. function(a) {
  1166. return b[a.tagName] && !(d && d(a));
  1167. },
  1168. c
  1169. )
  1170. );
  1171. },
  1172. findParents: function(a, b, c, d) {
  1173. for (
  1174. var e = b && ((c && c(a)) || !c) ? [a] : [];
  1175. (a = domUtils.findParent(a, c));
  1176. )
  1177. e.push(a);
  1178. return d ? e : e.reverse();
  1179. },
  1180. insertAfter: function(a, b) {
  1181. return a.nextSibling
  1182. ? a.parentNode.insertBefore(b, a.nextSibling)
  1183. : a.parentNode.appendChild(b);
  1184. },
  1185. remove: function(a, b) {
  1186. var c,
  1187. d = a.parentNode;
  1188. if (d) {
  1189. if (b && a.hasChildNodes())
  1190. for (; (c = a.firstChild); ) d.insertBefore(c, a);
  1191. d.removeChild(a);
  1192. }
  1193. return a;
  1194. },
  1195. getNextDomNode: function(a, b, c, d) {
  1196. return getDomNode(a, "firstChild", "nextSibling", b, c, d);
  1197. },
  1198. getPreDomNode: function(a, b, c, d) {
  1199. return getDomNode(a, "lastChild", "previousSibling", b, c, d);
  1200. },
  1201. isBookmarkNode: function(a) {
  1202. return 1 == a.nodeType && a.id && /^_baidu_bookmark_/i.test(a.id);
  1203. },
  1204. getWindow: function(a) {
  1205. var b = a.ownerDocument || a;
  1206. return b.defaultView || b.parentWindow;
  1207. },
  1208. getCommonAncestor: function(a, b) {
  1209. if (a === b) return a;
  1210. for (var c = [a], d = [b], e = a, f = -1; (e = e.parentNode); ) {
  1211. if (e === b) return e;
  1212. c.push(e);
  1213. }
  1214. for (e = b; (e = e.parentNode); ) {
  1215. if (e === a) return e;
  1216. d.push(e);
  1217. }
  1218. for (c.reverse(), d.reverse(); f++, c[f] === d[f]; );
  1219. return 0 == f ? null : c[f - 1];
  1220. },
  1221. clearEmptySibling: function(a, b, c) {
  1222. function d(a, b) {
  1223. for (
  1224. var c;
  1225. a &&
  1226. !domUtils.isBookmarkNode(a) &&
  1227. (domUtils.isEmptyInlineElement(a) ||
  1228. !new RegExp("[^\t\n\r" + domUtils.fillChar + "]").test(
  1229. a.nodeValue
  1230. ));
  1231. )
  1232. (c = a[b]), domUtils.remove(a), (a = c);
  1233. }
  1234. !b && d(a.nextSibling, "nextSibling"),
  1235. !c && d(a.previousSibling, "previousSibling");
  1236. },
  1237. split: function(a, b) {
  1238. var c = a.ownerDocument;
  1239. if (browser.ie && b == a.nodeValue.length) {
  1240. var d = c.createTextNode("");
  1241. return domUtils.insertAfter(a, d);
  1242. }
  1243. var e = a.splitText(b);
  1244. if (browser.ie8) {
  1245. var f = c.createTextNode("");
  1246. domUtils.insertAfter(e, f), domUtils.remove(f);
  1247. }
  1248. return e;
  1249. },
  1250. isWhitespace: function(a) {
  1251. return !new RegExp("[^ \t\n\r" + domUtils.fillChar + "]").test(
  1252. a.nodeValue
  1253. );
  1254. },
  1255. getXY: function(a) {
  1256. for (var b = 0, c = 0; a.offsetParent; )
  1257. (c += a.offsetTop), (b += a.offsetLeft), (a = a.offsetParent);
  1258. return { x: b, y: c };
  1259. },
  1260. on: function(a, b, c) {
  1261. var d = utils.isArray(b) ? b : utils.trim(b).split(/\s+/),
  1262. e = d.length;
  1263. if (e)
  1264. for (; e--; )
  1265. if (((b = d[e]), a.addEventListener)) a.addEventListener(b, c, !1);
  1266. else {
  1267. c._d || (c._d = { els: [] });
  1268. var f = b + c.toString(),
  1269. g = utils.indexOf(c._d.els, a);
  1270. (c._d[f] && g != -1) ||
  1271. (g == -1 && c._d.els.push(a),
  1272. c._d[f] ||
  1273. (c._d[f] = function(a) {
  1274. return c.call(a.srcElement, a || window.event);
  1275. }),
  1276. a.attachEvent("on" + b, c._d[f]));
  1277. }
  1278. a = null;
  1279. },
  1280. un: function(a, b, c) {
  1281. var d = utils.isArray(b) ? b : utils.trim(b).split(/\s+/),
  1282. e = d.length;
  1283. if (e)
  1284. for (; e--; )
  1285. if (((b = d[e]), a.removeEventListener))
  1286. a.removeEventListener(b, c, !1);
  1287. else {
  1288. var f = b + c.toString();
  1289. try {
  1290. a.detachEvent("on" + b, c._d ? c._d[f] : c);
  1291. } catch (g) {}
  1292. if (c._d && c._d[f]) {
  1293. var h = utils.indexOf(c._d.els, a);
  1294. h != -1 && c._d.els.splice(h, 1),
  1295. 0 == c._d.els.length && delete c._d[f];
  1296. }
  1297. }
  1298. },
  1299. isSameElement: function(a, b) {
  1300. if (a.tagName != b.tagName) return !1;
  1301. var c = a.attributes,
  1302. d = b.attributes;
  1303. if (!ie && c.length != d.length) return !1;
  1304. for (var e, f, g = 0, h = 0, i = 0; (e = c[i++]); ) {
  1305. if ("style" == e.nodeName) {
  1306. if ((e.specified && g++, domUtils.isSameStyle(a, b))) continue;
  1307. return !1;
  1308. }
  1309. if (ie) {
  1310. if (!e.specified) continue;
  1311. g++, (f = d.getNamedItem(e.nodeName));
  1312. } else f = b.attributes[e.nodeName];
  1313. if (!f.specified || e.nodeValue != f.nodeValue) return !1;
  1314. }
  1315. if (ie) {
  1316. for (i = 0; (f = d[i++]); ) f.specified && h++;
  1317. if (g != h) return !1;
  1318. }
  1319. return !0;
  1320. },
  1321. isSameStyle: function(a, b) {
  1322. var c = a.style.cssText
  1323. .replace(/( ?; ?)/g, ";")
  1324. .replace(/( ?: ?)/g, ":"),
  1325. d = b.style.cssText.replace(/( ?; ?)/g, ";").replace(/( ?: ?)/g, ":");
  1326. if (browser.opera) {
  1327. if (((c = a.style), (d = b.style), c.length != d.length)) return !1;
  1328. for (var e in c)
  1329. if (!/^(\d+|csstext)$/i.test(e) && c[e] != d[e]) return !1;
  1330. return !0;
  1331. }
  1332. if (!c || !d) return c == d;
  1333. if (((c = c.split(";")), (d = d.split(";")), c.length != d.length))
  1334. return !1;
  1335. for (var f, g = 0; (f = c[g++]); )
  1336. if (utils.indexOf(d, f) == -1) return !1;
  1337. return !0;
  1338. },
  1339. isBlockElm: function(a) {
  1340. return (
  1341. 1 == a.nodeType &&
  1342. (dtd.$block[a.tagName] ||
  1343. styleBlock[domUtils.getComputedStyle(a, "display")]) &&
  1344. !dtd.$nonChild[a.tagName]
  1345. );
  1346. },
  1347. isBody: function(a) {
  1348. return a && 1 == a.nodeType && "body" == a.tagName.toLowerCase();
  1349. },
  1350. breakParent: function(a, b) {
  1351. var c,
  1352. d,
  1353. e,
  1354. f = a,
  1355. g = a;
  1356. do {
  1357. for (
  1358. f = f.parentNode,
  1359. d
  1360. ? ((c = f.cloneNode(!1)),
  1361. c.appendChild(d),
  1362. (d = c),
  1363. (c = f.cloneNode(!1)),
  1364. c.appendChild(e),
  1365. (e = c))
  1366. : ((d = f.cloneNode(!1)), (e = d.cloneNode(!1)));
  1367. (c = g.previousSibling);
  1368. )
  1369. d.insertBefore(c, d.firstChild);
  1370. for (; (c = g.nextSibling); ) e.appendChild(c);
  1371. g = f;
  1372. } while (b !== f);
  1373. return (
  1374. (c = b.parentNode),
  1375. c.insertBefore(d, b),
  1376. c.insertBefore(e, b),
  1377. c.insertBefore(a, e),
  1378. domUtils.remove(b),
  1379. a
  1380. );
  1381. },
  1382. isEmptyInlineElement: function(a) {
  1383. if (1 != a.nodeType || !dtd.$removeEmpty[a.tagName]) return 0;
  1384. for (a = a.firstChild; a; ) {
  1385. if (domUtils.isBookmarkNode(a)) return 0;
  1386. if (
  1387. (1 == a.nodeType && !domUtils.isEmptyInlineElement(a)) ||
  1388. (3 == a.nodeType && !domUtils.isWhitespace(a))
  1389. )
  1390. return 0;
  1391. a = a.nextSibling;
  1392. }
  1393. return 1;
  1394. },
  1395. trimWhiteTextNode: function(a) {
  1396. function b(b) {
  1397. for (
  1398. var c;
  1399. (c = a[b]) && 3 == c.nodeType && domUtils.isWhitespace(c);
  1400. )
  1401. a.removeChild(c);
  1402. }
  1403. b("firstChild"), b("lastChild");
  1404. },
  1405. mergeChild: function(a, b, c) {
  1406. for (
  1407. var d,
  1408. e = domUtils.getElementsByTagName(a, a.tagName.toLowerCase()),
  1409. f = 0;
  1410. (d = e[f++]);
  1411. )
  1412. if (d.parentNode && !domUtils.isBookmarkNode(d))
  1413. if ("span" != d.tagName.toLowerCase())
  1414. domUtils.isSameElement(a, d) && domUtils.remove(d, !0);
  1415. else {
  1416. if (
  1417. a === d.parentNode &&
  1418. (domUtils.trimWhiteTextNode(a), 1 == a.childNodes.length)
  1419. ) {
  1420. (a.style.cssText = d.style.cssText + ";" + a.style.cssText),
  1421. domUtils.remove(d, !0);
  1422. continue;
  1423. }
  1424. if (
  1425. ((d.style.cssText = a.style.cssText + ";" + d.style.cssText), c)
  1426. ) {
  1427. var g = c.style;
  1428. if (g) {
  1429. g = g.split(";");
  1430. for (var h, i = 0; (h = g[i++]); )
  1431. d.style[
  1432. utils.cssStyleToDomStyle(h.split(":")[0])
  1433. ] = h.split(":")[1];
  1434. }
  1435. }
  1436. domUtils.isSameStyle(d, a) && domUtils.remove(d, !0);
  1437. }
  1438. },
  1439. getElementsByTagName: function(a, b, c) {
  1440. if (c && utils.isString(c)) {
  1441. var d = c;
  1442. c = function(a) {
  1443. return domUtils.hasClass(a, d);
  1444. };
  1445. }
  1446. b = utils
  1447. .trim(b)
  1448. .replace(/[ ]{2,}/g, " ")
  1449. .split(" ");
  1450. for (var e, f = [], g = 0; (e = b[g++]); )
  1451. for (var h, i = a.getElementsByTagName(e), j = 0; (h = i[j++]); )
  1452. (c && !c(h)) || f.push(h);
  1453. return f;
  1454. },
  1455. mergeToParent: function(a) {
  1456. for (var b = a.parentNode; b && dtd.$removeEmpty[b.tagName]; ) {
  1457. if (b.tagName == a.tagName || "A" == b.tagName) {
  1458. if (
  1459. (domUtils.trimWhiteTextNode(b),
  1460. ("SPAN" == b.tagName && !domUtils.isSameStyle(b, a)) ||
  1461. ("A" == b.tagName && "SPAN" == a.tagName))
  1462. ) {
  1463. if (b.childNodes.length > 1 || b !== a.parentNode) {
  1464. (a.style.cssText = b.style.cssText + ";" + a.style.cssText),
  1465. (b = b.parentNode);
  1466. continue;
  1467. }
  1468. (b.style.cssText += ";" + a.style.cssText),
  1469. "A" == b.tagName && (b.style.textDecoration = "underline");
  1470. }
  1471. if ("A" != b.tagName) {
  1472. b === a.parentNode && domUtils.remove(a, !0);
  1473. break;
  1474. }
  1475. }
  1476. b = b.parentNode;
  1477. }
  1478. },
  1479. mergeSibling: function(a, b, c) {
  1480. function d(a, b, c) {
  1481. var d;
  1482. if (
  1483. (d = c[a]) &&
  1484. !domUtils.isBookmarkNode(d) &&
  1485. 1 == d.nodeType &&
  1486. domUtils.isSameElement(c, d)
  1487. ) {
  1488. for (; d.firstChild; )
  1489. "firstChild" == b
  1490. ? c.insertBefore(d.lastChild, c.firstChild)
  1491. : c.appendChild(d.firstChild);
  1492. domUtils.remove(d);
  1493. }
  1494. }
  1495. !b && d("previousSibling", "firstChild", a),
  1496. !c && d("nextSibling", "lastChild", a);
  1497. },
  1498. unSelectable:
  1499. (ie && browser.ie9below) || browser.opera
  1500. ? function(a) {
  1501. (a.onselectstart = function() {
  1502. return !1;
  1503. }),
  1504. (a.onclick = a.onkeyup = a.onkeydown = function() {
  1505. return !1;
  1506. }),
  1507. (a.unselectable = "on"),
  1508. a.setAttribute("unselectable", "on");
  1509. for (var b, c = 0; (b = a.all[c++]); )
  1510. switch (b.tagName.toLowerCase()) {
  1511. case "iframe":
  1512. case "textarea":
  1513. case "input":
  1514. case "select":
  1515. break;
  1516. default:
  1517. (b.unselectable = "on"),
  1518. a.setAttribute("unselectable", "on");
  1519. }
  1520. }
  1521. : function(a) {
  1522. a.style.MozUserSelect = a.style.webkitUserSelect = a.style.msUserSelect = a.style.KhtmlUserSelect =
  1523. "none";
  1524. },
  1525. removeAttributes: function(a, b) {
  1526. b = utils.isArray(b)
  1527. ? b
  1528. : utils
  1529. .trim(b)
  1530. .replace(/[ ]{2,}/g, " ")
  1531. .split(" ");
  1532. for (var c, d = 0; (c = b[d++]); ) {
  1533. switch ((c = attrFix[c] || c)) {
  1534. case "className":
  1535. a[c] = "";
  1536. break;
  1537. case "style":
  1538. a.style.cssText = "";
  1539. var e = a.getAttributeNode("style");
  1540. !browser.ie && e && a.removeAttributeNode(e);
  1541. }
  1542. a.removeAttribute(c);
  1543. }
  1544. },
  1545. createElement: function(a, b, c) {
  1546. return domUtils.setAttributes(a.createElement(b), c);
  1547. },
  1548. setAttributes: function(a, b) {
  1549. for (var c in b)
  1550. if (b.hasOwnProperty(c)) {
  1551. var d = b[c];
  1552. switch (c) {
  1553. case "class":
  1554. a.className = d;
  1555. break;
  1556. case "style":
  1557. a.style.cssText = a.style.cssText + ";" + d;
  1558. break;
  1559. case "innerHTML":
  1560. a[c] = d;
  1561. break;
  1562. case "value":
  1563. a.value = d;
  1564. break;
  1565. default:
  1566. a.setAttribute(attrFix[c] || c, d);
  1567. }
  1568. }
  1569. return a;
  1570. },
  1571. getComputedStyle: function(a, b) {
  1572. var c = "width height top left";
  1573. if (c.indexOf(b) > -1)
  1574. return (
  1575. a[
  1576. "offset" +
  1577. b.replace(/^\w/, function(a) {
  1578. return a.toUpperCase();
  1579. })
  1580. ] + "px"
  1581. );
  1582. if (
  1583. (3 == a.nodeType && (a = a.parentNode),
  1584. browser.ie &&
  1585. browser.version < 9 &&
  1586. "font-size" == b &&
  1587. !a.style.fontSize &&
  1588. !dtd.$empty[a.tagName] &&
  1589. !dtd.$nonChild[a.tagName])
  1590. ) {
  1591. var d = a.ownerDocument.createElement("span");
  1592. (d.style.cssText = "padding:0;border:0;font-family:simsun;"),
  1593. (d.innerHTML = "."),
  1594. a.appendChild(d);
  1595. var e = d.offsetHeight;
  1596. return a.removeChild(d), (d = null), e + "px";
  1597. }
  1598. try {
  1599. var f =
  1600. domUtils.getStyle(a, b) ||
  1601. (window.getComputedStyle
  1602. ? domUtils
  1603. .getWindow(a)
  1604. .getComputedStyle(a, "")
  1605. .getPropertyValue(b)
  1606. : (a.currentStyle || a.style)[utils.cssStyleToDomStyle(b)]);
  1607. } catch (g) {
  1608. return "";
  1609. }
  1610. return utils.transUnitToPx(utils.fixColor(b, f));
  1611. },
  1612. removeClasses: function(a, b) {
  1613. b = utils.isArray(b)
  1614. ? b
  1615. : utils
  1616. .trim(b)
  1617. .replace(/[ ]{2,}/g, " ")
  1618. .split(" ");
  1619. for (var c, d = 0, e = a.className; (c = b[d++]); )
  1620. e = e.replace(new RegExp("\\b" + c + "\\b"), "");
  1621. (e = utils.trim(e).replace(/[ ]{2,}/g, " ")),
  1622. e ? (a.className = e) : domUtils.removeAttributes(a, ["class"]);
  1623. },
  1624. addClass: function(a, b) {
  1625. if (a) {
  1626. b = utils
  1627. .trim(b)
  1628. .replace(/[ ]{2,}/g, " ")
  1629. .split(" ");
  1630. for (var c, d = 0, e = a.className; (c = b[d++]); )
  1631. new RegExp("\\b" + c + "\\b").test(e) || (e += " " + c);
  1632. a.className = utils.trim(e);
  1633. }
  1634. },
  1635. hasClass: function(a, b) {
  1636. if (utils.isRegExp(b)) return b.test(a.className);
  1637. b = utils
  1638. .trim(b)
  1639. .replace(/[ ]{2,}/g, " ")
  1640. .split(" ");
  1641. for (var c, d = 0, e = a.className; (c = b[d++]); )
  1642. if (!new RegExp("\\b" + c + "\\b", "i").test(e)) return !1;
  1643. return d - 1 == b.length;
  1644. },
  1645. preventDefault: function(a) {
  1646. a.preventDefault ? a.preventDefault() : (a.returnValue = !1);
  1647. },
  1648. removeStyle: function(a, b) {
  1649. browser.ie
  1650. ? ("color" == b && (b = "(^|;)" + b),
  1651. (a.style.cssText = a.style.cssText.replace(
  1652. new RegExp(b + "[^:]*:[^;]+;?", "ig"),
  1653. ""
  1654. )))
  1655. : a.style.removeProperty
  1656. ? a.style.removeProperty(b)
  1657. : a.style.removeAttribute(utils.cssStyleToDomStyle(b)),
  1658. a.style.cssText || domUtils.removeAttributes(a, ["style"]);
  1659. },
  1660. getStyle: function(a, b) {
  1661. var c = a.style[utils.cssStyleToDomStyle(b)];
  1662. return utils.fixColor(b, c);
  1663. },
  1664. setStyle: function(a, b, c) {
  1665. (a.style[utils.cssStyleToDomStyle(b)] = c),
  1666. utils.trim(a.style.cssText) || this.removeAttributes(a, "style");
  1667. },
  1668. setStyles: function(a, b) {
  1669. for (var c in b) b.hasOwnProperty(c) && domUtils.setStyle(a, c, b[c]);
  1670. },
  1671. removeDirtyAttr: function(a) {
  1672. for (var b, c = 0, d = a.getElementsByTagName("*"); (b = d[c++]); )
  1673. b.removeAttribute("_moz_dirty");
  1674. a.removeAttribute("_moz_dirty");
  1675. },
  1676. getChildCount: function(a, b) {
  1677. var c = 0,
  1678. d = a.firstChild;
  1679. for (
  1680. b =
  1681. b ||
  1682. function() {
  1683. return 1;
  1684. };
  1685. d;
  1686. )
  1687. b(d) && c++, (d = d.nextSibling);
  1688. return c;
  1689. },
  1690. isEmptyNode: function(a) {
  1691. return (
  1692. !a.firstChild ||
  1693. 0 ==
  1694. domUtils.getChildCount(a, function(a) {
  1695. return (
  1696. !domUtils.isBr(a) &&
  1697. !domUtils.isBookmarkNode(a) &&
  1698. !domUtils.isWhitespace(a)
  1699. );
  1700. })
  1701. );
  1702. },
  1703. clearSelectedArr: function(a) {
  1704. for (var b; (b = a.pop()); ) domUtils.removeAttributes(b, ["class"]);
  1705. },
  1706. scrollToView: function(a, b, c) {
  1707. var d = function() {
  1708. var a = b.document,
  1709. c = "CSS1Compat" == a.compatMode;
  1710. return {
  1711. width:
  1712. (c ? a.documentElement.clientWidth : a.body.clientWidth) || 0,
  1713. height:
  1714. (c ? a.documentElement.clientHeight : a.body.clientHeight) || 0,
  1715. };
  1716. },
  1717. e = function(a) {
  1718. if ("pageXOffset" in a)
  1719. return { x: a.pageXOffset || 0, y: a.pageYOffset || 0 };
  1720. var b = a.document;
  1721. return {
  1722. x: b.documentElement.scrollLeft || b.body.scrollLeft || 0,
  1723. y: b.documentElement.scrollTop || b.body.scrollTop || 0,
  1724. };
  1725. },
  1726. f = d().height,
  1727. g = f * -1 + c;
  1728. g += a.offsetHeight || 0;
  1729. var h = domUtils.getXY(a);
  1730. g += h.y;
  1731. var i = e(b).y;
  1732. (g > i || g < i - f) && b.scrollTo(0, g + (g < 0 ? -20 : 20));
  1733. },
  1734. isBr: function(a) {
  1735. return 1 == a.nodeType && "BR" == a.tagName;
  1736. },
  1737. isFillChar: function(a, b) {
  1738. if (3 != a.nodeType) return !1;
  1739. var c = a.nodeValue;
  1740. return b
  1741. ? new RegExp("^" + domUtils.fillChar).test(c)
  1742. : !c.replace(new RegExp(domUtils.fillChar, "g"), "").length;
  1743. },
  1744. isStartInblock: function(a) {
  1745. var b,
  1746. c = a.cloneRange(),
  1747. d = 0,
  1748. e = c.startContainer;
  1749. if (1 == e.nodeType && e.childNodes[c.startOffset]) {
  1750. e = e.childNodes[c.startOffset];
  1751. for (var f = e.previousSibling; f && domUtils.isFillChar(f); )
  1752. (e = f), (f = f.previousSibling);
  1753. }
  1754. for (
  1755. this.isFillChar(e, !0) &&
  1756. 1 == c.startOffset &&
  1757. (c.setStartBefore(e), (e = c.startContainer));
  1758. e && domUtils.isFillChar(e);
  1759. )
  1760. (b = e), (e = e.previousSibling);
  1761. for (
  1762. b && (c.setStartBefore(b), (e = c.startContainer)),
  1763. 1 == e.nodeType &&
  1764. domUtils.isEmptyNode(e) &&
  1765. 1 == c.startOffset &&
  1766. c.setStart(e, 0).collapse(!0);
  1767. !c.startOffset;
  1768. ) {
  1769. if (
  1770. ((e = c.startContainer),
  1771. domUtils.isBlockElm(e) || domUtils.isBody(e))
  1772. ) {
  1773. d = 1;
  1774. break;
  1775. }
  1776. var g,
  1777. f = c.startContainer.previousSibling;
  1778. if (f) {
  1779. for (; f && domUtils.isFillChar(f); )
  1780. (g = f), (f = f.previousSibling);
  1781. g ? c.setStartBefore(g) : c.setStartBefore(c.startContainer);
  1782. } else c.setStartBefore(c.startContainer);
  1783. }
  1784. return d && !domUtils.isBody(c.startContainer) ? 1 : 0;
  1785. },
  1786. isEmptyBlock: function(a, b) {
  1787. if (1 != a.nodeType) return 0;
  1788. if (
  1789. ((b = b || new RegExp("[  \t\r\n" + domUtils.fillChar + "]", "g")),
  1790. a[browser.ie ? "innerText" : "textContent"].replace(b, "").length > 0)
  1791. )
  1792. return 0;
  1793. for (var c in dtd.$isNotEmpty)
  1794. if (a.getElementsByTagName(c).length) return 0;
  1795. return 1;
  1796. },
  1797. setViewportOffset: function(a, b) {
  1798. var c = 0 | parseInt(a.style.left),
  1799. d = 0 | parseInt(a.style.top),
  1800. e = a.getBoundingClientRect(),
  1801. f = b.left - e.left,
  1802. g = b.top - e.top;
  1803. f && (a.style.left = c + f + "px"), g && (a.style.top = d + g + "px");
  1804. },
  1805. fillNode: function(a, b) {
  1806. var c = browser.ie
  1807. ? a.createTextNode(domUtils.fillChar)
  1808. : a.createElement("br");
  1809. (b.innerHTML = ""), b.appendChild(c);
  1810. },
  1811. moveChild: function(a, b, c) {
  1812. for (; a.firstChild; )
  1813. c && b.firstChild
  1814. ? b.insertBefore(a.lastChild, b.firstChild)
  1815. : b.appendChild(a.firstChild);
  1816. },
  1817. hasNoAttributes: function(a) {
  1818. return browser.ie
  1819. ? /^<\w+\s*?>/.test(a.outerHTML)
  1820. : 0 == a.attributes.length;
  1821. },
  1822. isCustomeNode: function(a) {
  1823. return 1 == a.nodeType && a.getAttribute("_ue_custom_node_");
  1824. },
  1825. isTagNode: function(a, b) {
  1826. return (
  1827. 1 == a.nodeType && new RegExp("\\b" + a.tagName + "\\b", "i").test(b)
  1828. );
  1829. },
  1830. filterNodeList: function(a, b, c) {
  1831. var d = [];
  1832. if (!utils.isFunction(b)) {
  1833. var e = b;
  1834. b = function(a) {
  1835. return (
  1836. utils.indexOf(
  1837. utils.isArray(e) ? e : e.split(" "),
  1838. a.tagName.toLowerCase()
  1839. ) != -1
  1840. );
  1841. };
  1842. }
  1843. return (
  1844. utils.each(a, function(a) {
  1845. b(a) && d.push(a);
  1846. }),
  1847. 0 == d.length ? null : 1 != d.length && c ? d : d[0]
  1848. );
  1849. },
  1850. isInNodeEndBoundary: function(a, b) {
  1851. var c = a.startContainer;
  1852. if (3 == c.nodeType && a.startOffset != c.nodeValue.length) return 0;
  1853. if (1 == c.nodeType && a.startOffset != c.childNodes.length) return 0;
  1854. for (; c !== b; ) {
  1855. if (c.nextSibling) return 0;
  1856. c = c.parentNode;
  1857. }
  1858. return 1;
  1859. },
  1860. isBoundaryNode: function(a, b) {
  1861. for (var c; !domUtils.isBody(a); )
  1862. if (((c = a), (a = a.parentNode), c !== a[b])) return !1;
  1863. return !0;
  1864. },
  1865. fillHtml: browser.ie11below ? "&nbsp;" : "<br/>",
  1866. }),
  1867. fillCharReg = new RegExp(domUtils.fillChar, "g");
  1868. !(function() {
  1869. function a(a) {
  1870. a.collapsed =
  1871. a.startContainer &&
  1872. a.endContainer &&
  1873. a.startContainer === a.endContainer &&
  1874. a.startOffset == a.endOffset;
  1875. }
  1876. function b(a) {
  1877. return (
  1878. !a.collapsed &&
  1879. 1 == a.startContainer.nodeType &&
  1880. a.startContainer === a.endContainer &&
  1881. a.endOffset - a.startOffset == 1
  1882. );
  1883. }
  1884. function c(b, c, d, e) {
  1885. return (
  1886. 1 == c.nodeType &&
  1887. (dtd.$empty[c.tagName] || dtd.$nonChild[c.tagName]) &&
  1888. ((d = domUtils.getNodeIndex(c) + (b ? 0 : 1)), (c = c.parentNode)),
  1889. b
  1890. ? ((e.startContainer = c),
  1891. (e.startOffset = d),
  1892. e.endContainer || e.collapse(!0))
  1893. : ((e.endContainer = c),
  1894. (e.endOffset = d),
  1895. e.startContainer || e.collapse(!1)),
  1896. a(e),
  1897. e
  1898. );
  1899. }
  1900. function d(a, b) {
  1901. var c,
  1902. d,
  1903. e = a.startContainer,
  1904. f = a.endContainer,
  1905. g = a.startOffset,
  1906. h = a.endOffset,
  1907. i = a.document,
  1908. j = i.createDocumentFragment();
  1909. if (
  1910. (1 == e.nodeType &&
  1911. (e = e.childNodes[g] || (c = e.appendChild(i.createTextNode("")))),
  1912. 1 == f.nodeType &&
  1913. (f = f.childNodes[h] || (d = f.appendChild(i.createTextNode("")))),
  1914. e === f && 3 == e.nodeType)
  1915. )
  1916. return (
  1917. j.appendChild(i.createTextNode(e.substringData(g, h - g))),
  1918. b && (e.deleteData(g, h - g), a.collapse(!0)),
  1919. j
  1920. );
  1921. for (
  1922. var k,
  1923. l,
  1924. m = j,
  1925. n = domUtils.findParents(e, !0),
  1926. o = domUtils.findParents(f, !0),
  1927. p = 0;
  1928. n[p] == o[p];
  1929. )
  1930. p++;
  1931. for (var q, r = p; (q = n[r]); r++) {
  1932. for (
  1933. k = q.nextSibling,
  1934. q == e
  1935. ? c ||
  1936. (3 == a.startContainer.nodeType
  1937. ? (m.appendChild(i.createTextNode(e.nodeValue.slice(g))),
  1938. b && e.deleteData(g, e.nodeValue.length - g))
  1939. : m.appendChild(b ? e : e.cloneNode(!0)))
  1940. : ((l = q.cloneNode(!1)), m.appendChild(l));
  1941. k && k !== f && k !== o[r];
  1942. )
  1943. (q = k.nextSibling), m.appendChild(b ? k : k.cloneNode(!0)), (k = q);
  1944. m = l;
  1945. }
  1946. (m = j),
  1947. n[p] || (m.appendChild(n[p - 1].cloneNode(!1)), (m = m.firstChild));
  1948. for (var s, r = p; (s = o[r]); r++) {
  1949. if (
  1950. ((k = s.previousSibling),
  1951. s == f
  1952. ? d ||
  1953. 3 != a.endContainer.nodeType ||
  1954. (m.appendChild(i.createTextNode(f.substringData(0, h))),
  1955. b && f.deleteData(0, h))
  1956. : ((l = s.cloneNode(!1)), m.appendChild(l)),
  1957. r != p || !n[p])
  1958. )
  1959. for (; k && k !== e; )
  1960. (s = k.previousSibling),
  1961. m.insertBefore(b ? k : k.cloneNode(!0), m.firstChild),
  1962. (k = s);
  1963. m = l;
  1964. }
  1965. return (
  1966. b &&
  1967. a
  1968. .setStartBefore(o[p] ? (n[p] ? o[p] : n[p - 1]) : o[p - 1])
  1969. .collapse(!0),
  1970. c && domUtils.remove(c),
  1971. d && domUtils.remove(d),
  1972. j
  1973. );
  1974. }
  1975. function e(a, b) {
  1976. try {
  1977. if (g && domUtils.inDoc(g, a))
  1978. if (g.nodeValue.replace(fillCharReg, "").length)
  1979. g.nodeValue = g.nodeValue.replace(fillCharReg, "");
  1980. else {
  1981. var c = g.parentNode;
  1982. for (
  1983. domUtils.remove(g);
  1984. c &&
  1985. domUtils.isEmptyInlineElement(c) &&
  1986. (browser.safari
  1987. ? !(domUtils.getPosition(c, b) & domUtils.POSITION_CONTAINS)
  1988. : !c.contains(b));
  1989. )
  1990. (g = c.parentNode), domUtils.remove(c), (c = g);
  1991. }
  1992. } catch (d) {}
  1993. }
  1994. function f(a, b) {
  1995. var c;
  1996. for (a = a[b]; a && domUtils.isFillChar(a); )
  1997. (c = a[b]), domUtils.remove(a), (a = c);
  1998. }
  1999. var g,
  2000. h = 0,
  2001. i = domUtils.fillChar,
  2002. j = (dom.Range = function(a) {
  2003. var b = this;
  2004. (b.startContainer = b.startOffset = b.endContainer = b.endOffset = null),
  2005. (b.document = a),
  2006. (b.collapsed = !0);
  2007. });
  2008. j.prototype = {
  2009. cloneContents: function() {
  2010. return this.collapsed ? null : d(this, 0);
  2011. },
  2012. deleteContents: function() {
  2013. var a;
  2014. return (
  2015. this.collapsed || d(this, 1),
  2016. browser.webkit &&
  2017. ((a = this.startContainer),
  2018. 3 != a.nodeType ||
  2019. a.nodeValue.length ||
  2020. (this.setStartBefore(a).collapse(!0), domUtils.remove(a))),
  2021. this
  2022. );
  2023. },
  2024. extractContents: function() {
  2025. return this.collapsed ? null : d(this, 2);
  2026. },
  2027. setStart: function(a, b) {
  2028. return c(!0, a, b, this);
  2029. },
  2030. setEnd: function(a, b) {
  2031. return c(!1, a, b, this);
  2032. },
  2033. setStartAfter: function(a) {
  2034. return this.setStart(a.parentNode, domUtils.getNodeIndex(a) + 1);
  2035. },
  2036. setStartBefore: function(a) {
  2037. return this.setStart(a.parentNode, domUtils.getNodeIndex(a));
  2038. },
  2039. setEndAfter: function(a) {
  2040. return this.setEnd(a.parentNode, domUtils.getNodeIndex(a) + 1);
  2041. },
  2042. setEndBefore: function(a) {
  2043. return this.setEnd(a.parentNode, domUtils.getNodeIndex(a));
  2044. },
  2045. setStartAtFirst: function(a) {
  2046. return this.setStart(a, 0);
  2047. },
  2048. setStartAtLast: function(a) {
  2049. return this.setStart(
  2050. a,
  2051. 3 == a.nodeType ? a.nodeValue.length : a.childNodes.length
  2052. );
  2053. },
  2054. setEndAtFirst: function(a) {
  2055. return this.setEnd(a, 0);
  2056. },
  2057. setEndAtLast: function(a) {
  2058. return this.setEnd(
  2059. a,
  2060. 3 == a.nodeType ? a.nodeValue.length : a.childNodes.length
  2061. );
  2062. },
  2063. selectNode: function(a) {
  2064. return this.setStartBefore(a).setEndAfter(a);
  2065. },
  2066. selectNodeContents: function(a) {
  2067. return this.setStart(a, 0).setEndAtLast(a);
  2068. },
  2069. cloneRange: function() {
  2070. var a = this;
  2071. return new j(a.document)
  2072. .setStart(a.startContainer, a.startOffset)
  2073. .setEnd(a.endContainer, a.endOffset);
  2074. },
  2075. collapse: function(a) {
  2076. var b = this;
  2077. return (
  2078. a
  2079. ? ((b.endContainer = b.startContainer),
  2080. (b.endOffset = b.startOffset))
  2081. : ((b.startContainer = b.endContainer),
  2082. (b.startOffset = b.endOffset)),
  2083. (b.collapsed = !0),
  2084. b
  2085. );
  2086. },
  2087. shrinkBoundary: function(a) {
  2088. function b(a) {
  2089. return (
  2090. 1 == a.nodeType &&
  2091. !domUtils.isBookmarkNode(a) &&
  2092. !dtd.$empty[a.tagName] &&
  2093. !dtd.$nonChild[a.tagName]
  2094. );
  2095. }
  2096. for (
  2097. var c, d = this, e = d.collapsed;
  2098. 1 == d.startContainer.nodeType &&
  2099. (c = d.startContainer.childNodes[d.startOffset]) &&
  2100. b(c);
  2101. )
  2102. d.setStart(c, 0);
  2103. if (e) return d.collapse(!0);
  2104. if (!a)
  2105. for (
  2106. ;
  2107. 1 == d.endContainer.nodeType &&
  2108. d.endOffset > 0 &&
  2109. (c = d.endContainer.childNodes[d.endOffset - 1]) &&
  2110. b(c);
  2111. )
  2112. d.setEnd(c, c.childNodes.length);
  2113. return d;
  2114. },
  2115. getCommonAncestor: function(a, c) {
  2116. var d = this,
  2117. e = d.startContainer,
  2118. f = d.endContainer;
  2119. return e === f
  2120. ? a && b(this) && ((e = e.childNodes[d.startOffset]), 1 == e.nodeType)
  2121. ? e
  2122. : c && 3 == e.nodeType
  2123. ? e.parentNode
  2124. : e
  2125. : domUtils.getCommonAncestor(e, f);
  2126. },
  2127. trimBoundary: function(a) {
  2128. this.txtToElmBoundary();
  2129. var b = this.startContainer,
  2130. c = this.startOffset,
  2131. d = this.collapsed,
  2132. e = this.endContainer;
  2133. if (3 == b.nodeType) {
  2134. if (0 == c) this.setStartBefore(b);
  2135. else if (c >= b.nodeValue.length) this.setStartAfter(b);
  2136. else {
  2137. var f = domUtils.split(b, c);
  2138. b === e
  2139. ? this.setEnd(f, this.endOffset - c)
  2140. : b.parentNode === e && (this.endOffset += 1),
  2141. this.setStartBefore(f);
  2142. }
  2143. if (d) return this.collapse(!0);
  2144. }
  2145. return (
  2146. a ||
  2147. ((c = this.endOffset),
  2148. (e = this.endContainer),
  2149. 3 == e.nodeType &&
  2150. (0 == c
  2151. ? this.setEndBefore(e)
  2152. : (c < e.nodeValue.length && domUtils.split(e, c),
  2153. this.setEndAfter(e)))),
  2154. this
  2155. );
  2156. },
  2157. txtToElmBoundary: function(a) {
  2158. function b(a, b) {
  2159. var c = a[b + "Container"],
  2160. d = a[b + "Offset"];
  2161. 3 == c.nodeType &&
  2162. (d
  2163. ? d >= c.nodeValue.length &&
  2164. a[
  2165. "set" +
  2166. b.replace(/(\w)/, function(a) {
  2167. return a.toUpperCase();
  2168. }) +
  2169. "After"
  2170. ](c)
  2171. : a[
  2172. "set" +
  2173. b.replace(/(\w)/, function(a) {
  2174. return a.toUpperCase();
  2175. }) +
  2176. "Before"
  2177. ](c));
  2178. }
  2179. return (
  2180. (!a && this.collapsed) || (b(this, "start"), b(this, "end")), this
  2181. );
  2182. },
  2183. insertNode: function(a) {
  2184. var b = a,
  2185. c = 1;
  2186. 11 == a.nodeType && ((b = a.firstChild), (c = a.childNodes.length)),
  2187. this.trimBoundary(!0);
  2188. var d = this.startContainer,
  2189. e = this.startOffset,
  2190. f = d.childNodes[e];
  2191. return (
  2192. f ? d.insertBefore(a, f) : d.appendChild(a),
  2193. b.parentNode === this.endContainer &&
  2194. (this.endOffset = this.endOffset + c),
  2195. this.setStartBefore(b)
  2196. );
  2197. },
  2198. setCursor: function(a, b) {
  2199. return this.collapse(!a).select(b);
  2200. },
  2201. createBookmark: function(a, b) {
  2202. var c,
  2203. d = this.document.createElement("span");
  2204. return (
  2205. (d.style.cssText = "display:none;line-height:0px;"),
  2206. d.appendChild(this.document.createTextNode("‍")),
  2207. (d.id = "_baidu_bookmark_start_" + (b ? "" : h++)),
  2208. this.collapsed ||
  2209. ((c = d.cloneNode(!0)),
  2210. (c.id = "_baidu_bookmark_end_" + (b ? "" : h++))),
  2211. this.insertNode(d),
  2212. c &&
  2213. this.collapse()
  2214. .insertNode(c)
  2215. .setEndBefore(c),
  2216. this.setStartAfter(d),
  2217. { start: a ? d.id : d, end: c ? (a ? c.id : c) : null, id: a }
  2218. );
  2219. },
  2220. moveToBookmark: function(a) {
  2221. var b = a.id ? this.document.getElementById(a.start) : a.start,
  2222. c = a.end && a.id ? this.document.getElementById(a.end) : a.end;
  2223. return (
  2224. this.setStartBefore(b),
  2225. domUtils.remove(b),
  2226. c ? (this.setEndBefore(c), domUtils.remove(c)) : this.collapse(!0),
  2227. this
  2228. );
  2229. },
  2230. enlarge: function(a, b) {
  2231. var c,
  2232. d,
  2233. e = domUtils.isBody,
  2234. f = this.document.createTextNode("");
  2235. if (a) {
  2236. for (
  2237. d = this.startContainer,
  2238. 1 == d.nodeType
  2239. ? d.childNodes[this.startOffset]
  2240. ? (c = d = d.childNodes[this.startOffset])
  2241. : (d.appendChild(f), (c = d = f))
  2242. : (c = d);
  2243. ;
  2244. ) {
  2245. if (domUtils.isBlockElm(d)) {
  2246. for (d = c; (c = d.previousSibling) && !domUtils.isBlockElm(c); )
  2247. d = c;
  2248. this.setStartBefore(d);
  2249. break;
  2250. }
  2251. (c = d), (d = d.parentNode);
  2252. }
  2253. for (
  2254. d = this.endContainer,
  2255. 1 == d.nodeType
  2256. ? ((c = d.childNodes[this.endOffset])
  2257. ? d.insertBefore(f, c)
  2258. : d.appendChild(f),
  2259. (c = d = f))
  2260. : (c = d);
  2261. ;
  2262. ) {
  2263. if (domUtils.isBlockElm(d)) {
  2264. for (d = c; (c = d.nextSibling) && !domUtils.isBlockElm(c); )
  2265. d = c;
  2266. this.setEndAfter(d);
  2267. break;
  2268. }
  2269. (c = d), (d = d.parentNode);
  2270. }
  2271. f.parentNode === this.endContainer && this.endOffset--,
  2272. domUtils.remove(f);
  2273. }
  2274. if (!this.collapsed) {
  2275. for (
  2276. ;
  2277. !(
  2278. 0 != this.startOffset ||
  2279. (b && b(this.startContainer)) ||
  2280. e(this.startContainer)
  2281. );
  2282. )
  2283. this.setStartBefore(this.startContainer);
  2284. for (
  2285. ;
  2286. !(
  2287. this.endOffset !=
  2288. (1 == this.endContainer.nodeType
  2289. ? this.endContainer.childNodes.length
  2290. : this.endContainer.nodeValue.length) ||
  2291. (b && b(this.endContainer)) ||
  2292. e(this.endContainer)
  2293. );
  2294. )
  2295. this.setEndAfter(this.endContainer);
  2296. }
  2297. return this;
  2298. },
  2299. enlargeToBlockElm: function(a) {
  2300. for (; !domUtils.isBlockElm(this.startContainer); )
  2301. this.setStartBefore(this.startContainer);
  2302. if (!a)
  2303. for (; !domUtils.isBlockElm(this.endContainer); )
  2304. this.setEndAfter(this.endContainer);
  2305. return this;
  2306. },
  2307. adjustmentBoundary: function() {
  2308. if (!this.collapsed) {
  2309. for (
  2310. ;
  2311. !domUtils.isBody(this.startContainer) &&
  2312. this.startOffset ==
  2313. this.startContainer[
  2314. 3 == this.startContainer.nodeType ? "nodeValue" : "childNodes"
  2315. ].length &&
  2316. this.startContainer[
  2317. 3 == this.startContainer.nodeType ? "nodeValue" : "childNodes"
  2318. ].length;
  2319. )
  2320. this.setStartAfter(this.startContainer);
  2321. for (
  2322. ;
  2323. !domUtils.isBody(this.endContainer) &&
  2324. !this.endOffset &&
  2325. this.endContainer[
  2326. 3 == this.endContainer.nodeType ? "nodeValue" : "childNodes"
  2327. ].length;
  2328. )
  2329. this.setEndBefore(this.endContainer);
  2330. }
  2331. return this;
  2332. },
  2333. applyInlineStyle: function(a, b, c) {
  2334. if (this.collapsed) return this;
  2335. this.trimBoundary()
  2336. .enlarge(!1, function(a) {
  2337. return 1 == a.nodeType && domUtils.isBlockElm(a);
  2338. })
  2339. .adjustmentBoundary();
  2340. for (
  2341. var d,
  2342. e,
  2343. f = this.createBookmark(),
  2344. g = f.end,
  2345. h = function(a) {
  2346. return 1 == a.nodeType
  2347. ? "br" != a.tagName.toLowerCase()
  2348. : !domUtils.isWhitespace(a);
  2349. },
  2350. i = domUtils.getNextDomNode(f.start, !1, h),
  2351. j = this.cloneRange();
  2352. i && domUtils.getPosition(i, g) & domUtils.POSITION_PRECEDING;
  2353. )
  2354. if (3 == i.nodeType || dtd[a][i.tagName]) {
  2355. for (
  2356. j.setStartBefore(i), d = i;
  2357. d && (3 == d.nodeType || dtd[a][d.tagName]) && d !== g;
  2358. )
  2359. (e = d),
  2360. (d = domUtils.getNextDomNode(d, 1 == d.nodeType, null, function(
  2361. b
  2362. ) {
  2363. return dtd[a][b.tagName];
  2364. }));
  2365. var k,
  2366. l = j.setEndAfter(e).extractContents();
  2367. if (c && c.length > 0) {
  2368. var m, n;
  2369. n = m = c[0].cloneNode(!1);
  2370. for (var o, p = 1; (o = c[p++]); )
  2371. m.appendChild(o.cloneNode(!1)), (m = m.firstChild);
  2372. k = m;
  2373. } else k = j.document.createElement(a);
  2374. b && domUtils.setAttributes(k, b),
  2375. k.appendChild(l),
  2376. j.insertNode(c ? n : k);
  2377. var q;
  2378. if (
  2379. ("span" == a &&
  2380. b.style &&
  2381. /text\-decoration/.test(b.style) &&
  2382. (q = domUtils.findParentByTagName(k, "a", !0))
  2383. ? (domUtils.setAttributes(q, b),
  2384. domUtils.remove(k, !0),
  2385. (k = q))
  2386. : (domUtils.mergeSibling(k), domUtils.clearEmptySibling(k)),
  2387. domUtils.mergeChild(k, b),
  2388. (i = domUtils.getNextDomNode(k, !1, h)),
  2389. domUtils.mergeToParent(k),
  2390. d === g)
  2391. )
  2392. break;
  2393. } else i = domUtils.getNextDomNode(i, !0, h);
  2394. return this.moveToBookmark(f);
  2395. },
  2396. removeInlineStyle: function(a) {
  2397. if (this.collapsed) return this;
  2398. (a = utils.isArray(a) ? a : [a]),
  2399. this.shrinkBoundary().adjustmentBoundary();
  2400. for (var b = this.startContainer, c = this.endContainer; ; ) {
  2401. if (1 == b.nodeType) {
  2402. if (utils.indexOf(a, b.tagName.toLowerCase()) > -1) break;
  2403. if ("body" == b.tagName.toLowerCase()) {
  2404. b = null;
  2405. break;
  2406. }
  2407. }
  2408. b = b.parentNode;
  2409. }
  2410. for (;;) {
  2411. if (1 == c.nodeType) {
  2412. if (utils.indexOf(a, c.tagName.toLowerCase()) > -1) break;
  2413. if ("body" == c.tagName.toLowerCase()) {
  2414. c = null;
  2415. break;
  2416. }
  2417. }
  2418. c = c.parentNode;
  2419. }
  2420. var d,
  2421. e,
  2422. f = this.createBookmark();
  2423. b &&
  2424. ((e = this.cloneRange()
  2425. .setEndBefore(f.start)
  2426. .setStartBefore(b)),
  2427. (d = e.extractContents()),
  2428. e.insertNode(d),
  2429. domUtils.clearEmptySibling(b, !0),
  2430. b.parentNode.insertBefore(f.start, b)),
  2431. c &&
  2432. ((e = this.cloneRange()
  2433. .setStartAfter(f.end)
  2434. .setEndAfter(c)),
  2435. (d = e.extractContents()),
  2436. e.insertNode(d),
  2437. domUtils.clearEmptySibling(c, !1, !0),
  2438. c.parentNode.insertBefore(f.end, c.nextSibling));
  2439. for (
  2440. var g,
  2441. h = domUtils.getNextDomNode(f.start, !1, function(a) {
  2442. return 1 == a.nodeType;
  2443. });
  2444. h && h !== f.end;
  2445. )
  2446. (g = domUtils.getNextDomNode(h, !0, function(a) {
  2447. return 1 == a.nodeType;
  2448. })),
  2449. utils.indexOf(a, h.tagName.toLowerCase()) > -1 &&
  2450. domUtils.remove(h, !0),
  2451. (h = g);
  2452. return this.moveToBookmark(f);
  2453. },
  2454. getClosedNode: function() {
  2455. var a;
  2456. if (!this.collapsed) {
  2457. var c = this.cloneRange()
  2458. .adjustmentBoundary()
  2459. .shrinkBoundary();
  2460. if (b(c)) {
  2461. var d = c.startContainer.childNodes[c.startOffset];
  2462. d &&
  2463. 1 == d.nodeType &&
  2464. (dtd.$empty[d.tagName] || dtd.$nonChild[d.tagName]) &&
  2465. (a = d);
  2466. }
  2467. }
  2468. return a;
  2469. },
  2470. select: browser.ie
  2471. ? function(a, b) {
  2472. var c;
  2473. this.collapsed || this.shrinkBoundary();
  2474. var d = this.getClosedNode();
  2475. if (d && !b) {
  2476. try {
  2477. (c = this.document.body.createControlRange()),
  2478. c.addElement(d),
  2479. c.select();
  2480. } catch (h) {}
  2481. return this;
  2482. }
  2483. var j,
  2484. k = this.createBookmark(),
  2485. l = k.start;
  2486. if (
  2487. ((c = this.document.body.createTextRange()),
  2488. c.moveToElementText(l),
  2489. c.moveStart("character", 1),
  2490. this.collapsed)
  2491. ) {
  2492. if (!a && 3 != this.startContainer.nodeType) {
  2493. var m = this.document.createTextNode(i),
  2494. n = this.document.createElement("span");
  2495. n.appendChild(this.document.createTextNode(i)),
  2496. l.parentNode.insertBefore(n, l),
  2497. l.parentNode.insertBefore(m, l),
  2498. e(this.document, m),
  2499. (g = m),
  2500. f(n, "previousSibling"),
  2501. f(l, "nextSibling"),
  2502. c.moveStart("character", -1),
  2503. c.collapse(!0);
  2504. }
  2505. } else {
  2506. var o = this.document.body.createTextRange();
  2507. (j = k.end), o.moveToElementText(j), c.setEndPoint("EndToEnd", o);
  2508. }
  2509. this.moveToBookmark(k), n && domUtils.remove(n);
  2510. try {
  2511. c.select();
  2512. } catch (h) {}
  2513. return this;
  2514. }
  2515. : function(a) {
  2516. function b(a) {
  2517. function b(b, c, d) {
  2518. 3 == b.nodeType &&
  2519. b.nodeValue.length < c &&
  2520. (a[d + "Offset"] = b.nodeValue.length);
  2521. }
  2522. b(a.startContainer, a.startOffset, "start"),
  2523. b(a.endContainer, a.endOffset, "end");
  2524. }
  2525. var c,
  2526. d = domUtils.getWindow(this.document),
  2527. h = d.getSelection();
  2528. if ((browser.gecko ? this.document.body.focus() : d.focus(), h)) {
  2529. if ((h.removeAllRanges(), this.collapsed && !a)) {
  2530. var j = this.startContainer,
  2531. k = j;
  2532. 1 == j.nodeType && (k = j.childNodes[this.startOffset]),
  2533. (3 == j.nodeType && this.startOffset) ||
  2534. (k
  2535. ? k.previousSibling && 3 == k.previousSibling.nodeType
  2536. : j.lastChild && 3 == j.lastChild.nodeType) ||
  2537. ((c = this.document.createTextNode(i)),
  2538. this.insertNode(c),
  2539. e(this.document, c),
  2540. f(c, "previousSibling"),
  2541. f(c, "nextSibling"),
  2542. (g = c),
  2543. this.setStart(c, browser.webkit ? 1 : 0).collapse(!0));
  2544. }
  2545. var l = this.document.createRange();
  2546. if (
  2547. this.collapsed &&
  2548. browser.opera &&
  2549. 1 == this.startContainer.nodeType
  2550. ) {
  2551. var k = this.startContainer.childNodes[this.startOffset];
  2552. if (k) {
  2553. for (
  2554. ;
  2555. k &&
  2556. domUtils.isBlockElm(k) &&
  2557. 1 == k.nodeType &&
  2558. k.childNodes[0];
  2559. )
  2560. k = k.childNodes[0];
  2561. k && this.setStartBefore(k).collapse(!0);
  2562. } else
  2563. (k = this.startContainer.lastChild),
  2564. k &&
  2565. domUtils.isBr(k) &&
  2566. this.setStartBefore(k).collapse(!0);
  2567. }
  2568. b(this),
  2569. l.setStart(this.startContainer, this.startOffset),
  2570. l.setEnd(this.endContainer, this.endOffset),
  2571. h.addRange(l);
  2572. }
  2573. return this;
  2574. },
  2575. scrollToView: function(a, b) {
  2576. a = a ? window : domUtils.getWindow(this.document);
  2577. var c = this,
  2578. d = c.document.createElement("span");
  2579. return (
  2580. (d.innerHTML = "&nbsp;"),
  2581. c.cloneRange().insertNode(d),
  2582. domUtils.scrollToView(d, a, b),
  2583. domUtils.remove(d),
  2584. c
  2585. );
  2586. },
  2587. inFillChar: function() {
  2588. var a = this.startContainer;
  2589. return !(
  2590. !this.collapsed ||
  2591. 3 != a.nodeType ||
  2592. a.nodeValue.replace(new RegExp("^" + domUtils.fillChar), "").length +
  2593. 1 !=
  2594. a.nodeValue.length
  2595. );
  2596. },
  2597. createAddress: function(a, b) {
  2598. function c(a) {
  2599. for (
  2600. var c,
  2601. d = a ? e.startContainer : e.endContainer,
  2602. f = domUtils.findParents(d, !0, function(a) {
  2603. return !domUtils.isBody(a);
  2604. }),
  2605. g = [],
  2606. h = 0;
  2607. (c = f[h++]);
  2608. )
  2609. g.push(domUtils.getNodeIndex(c, b));
  2610. var i = 0;
  2611. if (b)
  2612. if (3 == d.nodeType) {
  2613. for (var j = d.previousSibling; j && 3 == j.nodeType; )
  2614. (i += j.nodeValue.replace(fillCharReg, "").length),
  2615. (j = j.previousSibling);
  2616. i += a ? e.startOffset : e.endOffset;
  2617. } else if ((d = d.childNodes[a ? e.startOffset : e.endOffset]))
  2618. i = domUtils.getNodeIndex(d, b);
  2619. else {
  2620. d = a ? e.startContainer : e.endContainer;
  2621. for (var k = d.firstChild; k; )
  2622. if (domUtils.isFillChar(k)) k = k.nextSibling;
  2623. else if ((i++, 3 == k.nodeType))
  2624. for (; k && 3 == k.nodeType; ) k = k.nextSibling;
  2625. else k = k.nextSibling;
  2626. }
  2627. else
  2628. i = a ? (domUtils.isFillChar(d) ? 0 : e.startOffset) : e.endOffset;
  2629. return i < 0 && (i = 0), g.push(i), g;
  2630. }
  2631. var d = {},
  2632. e = this;
  2633. return (
  2634. (d.startAddress = c(!0)),
  2635. a || (d.endAddress = e.collapsed ? [].concat(d.startAddress) : c()),
  2636. d
  2637. );
  2638. },
  2639. moveToAddress: function(a, b) {
  2640. function c(a, b) {
  2641. for (
  2642. var c, e, f, g = d.document.body, h = 0, i = a.length;
  2643. h < i;
  2644. h++
  2645. )
  2646. if (((f = a[h]), (c = g), (g = g.childNodes[f]), !g)) {
  2647. e = f;
  2648. break;
  2649. }
  2650. b
  2651. ? g
  2652. ? d.setStartBefore(g)
  2653. : d.setStart(c, e)
  2654. : g
  2655. ? d.setEndBefore(g)
  2656. : d.setEnd(c, e);
  2657. }
  2658. var d = this;
  2659. return c(a.startAddress, !0), !b && a.endAddress && c(a.endAddress), d;
  2660. },
  2661. equals: function(a) {
  2662. for (var b in this)
  2663. if (this.hasOwnProperty(b) && this[b] !== a[b]) return !1;
  2664. return !0;
  2665. },
  2666. traversal: function(a, b) {
  2667. if (this.collapsed) return this;
  2668. for (
  2669. var c = this.createBookmark(),
  2670. d = c.end,
  2671. e = domUtils.getNextDomNode(c.start, !1, b);
  2672. e &&
  2673. e !== d &&
  2674. domUtils.getPosition(e, d) & domUtils.POSITION_PRECEDING;
  2675. ) {
  2676. var f = domUtils.getNextDomNode(e, !1, b);
  2677. a(e), (e = f);
  2678. }
  2679. return this.moveToBookmark(c);
  2680. },
  2681. };
  2682. })(),
  2683. (function() {
  2684. function a(a, b) {
  2685. var c = domUtils.getNodeIndex;
  2686. (a = a.duplicate()), a.collapse(b);
  2687. var d = a.parentElement();
  2688. if (!d.hasChildNodes()) return { container: d, offset: 0 };
  2689. for (
  2690. var e,
  2691. f,
  2692. g = d.children,
  2693. h = a.duplicate(),
  2694. i = 0,
  2695. j = g.length - 1,
  2696. k = -1;
  2697. i <= j;
  2698. ) {
  2699. (k = Math.floor((i + j) / 2)), (e = g[k]), h.moveToElementText(e);
  2700. var l = h.compareEndPoints("StartToStart", a);
  2701. if (l > 0) j = k - 1;
  2702. else {
  2703. if (!(l < 0)) return { container: d, offset: c(e) };
  2704. i = k + 1;
  2705. }
  2706. }
  2707. if (k == -1) {
  2708. if (
  2709. (h.moveToElementText(d),
  2710. h.setEndPoint("StartToStart", a),
  2711. (f = h.text.replace(/(\r\n|\r)/g, "\n").length),
  2712. (g = d.childNodes),
  2713. !f)
  2714. )
  2715. return (
  2716. (e = g[g.length - 1]),
  2717. { container: e, offset: e.nodeValue.length }
  2718. );
  2719. for (var m = g.length; f > 0; ) f -= g[--m].nodeValue.length;
  2720. return { container: g[m], offset: -f };
  2721. }
  2722. if (
  2723. (h.collapse(l > 0),
  2724. h.setEndPoint(l > 0 ? "StartToStart" : "EndToStart", a),
  2725. (f = h.text.replace(/(\r\n|\r)/g, "\n").length),
  2726. !f)
  2727. )
  2728. return dtd.$empty[e.tagName] || dtd.$nonChild[e.tagName]
  2729. ? { container: d, offset: c(e) + (l > 0 ? 0 : 1) }
  2730. : { container: e, offset: l > 0 ? 0 : e.childNodes.length };
  2731. for (; f > 0; )
  2732. try {
  2733. var n = e;
  2734. (e = e[l > 0 ? "previousSibling" : "nextSibling"]),
  2735. (f -= e.nodeValue.length);
  2736. } catch (o) {
  2737. return { container: d, offset: c(n) };
  2738. }
  2739. return { container: e, offset: l > 0 ? -f : e.nodeValue.length + f };
  2740. }
  2741. function b(b, c) {
  2742. if (b.item) c.selectNode(b.item(0));
  2743. else {
  2744. var d = a(b, !0);
  2745. c.setStart(d.container, d.offset),
  2746. 0 != b.compareEndPoints("StartToEnd", b) &&
  2747. ((d = a(b, !1)), c.setEnd(d.container, d.offset));
  2748. }
  2749. return c;
  2750. }
  2751. function c(a) {
  2752. var b;
  2753. try {
  2754. b = a.getNative().createRange();
  2755. } catch (c) {
  2756. return null;
  2757. }
  2758. var d = b.item ? b.item(0) : b.parentElement();
  2759. return (d.ownerDocument || d) === a.document ? b : null;
  2760. }
  2761. var d = (dom.Selection = function(a) {
  2762. var b,
  2763. d = this;
  2764. (d.document = a),
  2765. browser.ie9below &&
  2766. ((b = domUtils.getWindow(a).frameElement),
  2767. domUtils.on(b, "beforedeactivate", function() {
  2768. d._bakIERange = d.getIERange();
  2769. }),
  2770. domUtils.on(b, "activate", function() {
  2771. try {
  2772. !c(d) && d._bakIERange && d._bakIERange.select();
  2773. } catch (a) {}
  2774. d._bakIERange = null;
  2775. })),
  2776. (b = a = null);
  2777. });
  2778. d.prototype = {
  2779. rangeInBody: function(a, b) {
  2780. var c =
  2781. browser.ie9below || b
  2782. ? a.item
  2783. ? a.item()
  2784. : a.parentElement()
  2785. : a.startContainer;
  2786. return c === this.document.body || domUtils.inDoc(c, this.document);
  2787. },
  2788. getNative: function() {
  2789. var a = this.document;
  2790. try {
  2791. return a
  2792. ? browser.ie9below
  2793. ? a.selection
  2794. : domUtils.getWindow(a).getSelection()
  2795. : null;
  2796. } catch (b) {
  2797. return null;
  2798. }
  2799. },
  2800. getIERange: function() {
  2801. var a = c(this);
  2802. return !a && this._bakIERange ? this._bakIERange : a;
  2803. },
  2804. cache: function() {
  2805. this.clear(),
  2806. (this._cachedRange = this.getRange()),
  2807. (this._cachedStartElement = this.getStart()),
  2808. (this._cachedStartElementPath = this.getStartElementPath());
  2809. },
  2810. getStartElementPath: function() {
  2811. if (this._cachedStartElementPath) return this._cachedStartElementPath;
  2812. var a = this.getStart();
  2813. return a ? domUtils.findParents(a, !0, null, !0) : [];
  2814. },
  2815. clear: function() {
  2816. this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null;
  2817. },
  2818. isFocus: function() {
  2819. try {
  2820. if (browser.ie9below) {
  2821. var a = c(this);
  2822. return !(!a || !this.rangeInBody(a));
  2823. }
  2824. return !!this.getNative().rangeCount;
  2825. } catch (b) {
  2826. return !1;
  2827. }
  2828. },
  2829. getRange: function() {
  2830. function a(a) {
  2831. for (
  2832. var b = c.document.body.firstChild, d = a.collapsed;
  2833. b && b.firstChild;
  2834. )
  2835. a.setStart(b, 0), (b = b.firstChild);
  2836. a.startContainer || a.setStart(c.document.body, 0),
  2837. d && a.collapse(!0);
  2838. }
  2839. var c = this;
  2840. if (null != c._cachedRange) return this._cachedRange;
  2841. var d = new baidu.editor.dom.Range(c.document);
  2842. if (browser.ie9below) {
  2843. var e = c.getIERange();
  2844. if (e)
  2845. try {
  2846. b(e, d);
  2847. } catch (f) {
  2848. a(d);
  2849. }
  2850. else a(d);
  2851. } else {
  2852. var g = c.getNative();
  2853. if (g && g.rangeCount) {
  2854. var h = g.getRangeAt(0),
  2855. i = g.getRangeAt(g.rangeCount - 1);
  2856. d
  2857. .setStart(h.startContainer, h.startOffset)
  2858. .setEnd(i.endContainer, i.endOffset),
  2859. d.collapsed &&
  2860. domUtils.isBody(d.startContainer) &&
  2861. !d.startOffset &&
  2862. a(d);
  2863. } else {
  2864. if (
  2865. this._bakRange &&
  2866. domUtils.inDoc(this._bakRange.startContainer, this.document)
  2867. )
  2868. return this._bakRange;
  2869. a(d);
  2870. }
  2871. }
  2872. return (this._bakRange = d);
  2873. },
  2874. getStart: function() {
  2875. if (this._cachedStartElement) return this._cachedStartElement;
  2876. var a,
  2877. b,
  2878. c,
  2879. d,
  2880. e = browser.ie9below ? this.getIERange() : this.getRange();
  2881. if (browser.ie9below) {
  2882. if (!e) return this.document.body.firstChild;
  2883. if (e.item) return e.item(0);
  2884. for (
  2885. a = e.duplicate(),
  2886. a.text.length > 0 && a.moveStart("character", 1),
  2887. a.collapse(1),
  2888. b = a.parentElement(),
  2889. d = c = e.parentElement();
  2890. (c = c.parentNode);
  2891. )
  2892. if (c == b) {
  2893. b = d;
  2894. break;
  2895. }
  2896. } else if (
  2897. (e.shrinkBoundary(),
  2898. (b = e.startContainer),
  2899. 1 == b.nodeType &&
  2900. b.hasChildNodes() &&
  2901. (b =
  2902. b.childNodes[Math.min(b.childNodes.length - 1, e.startOffset)]),
  2903. 3 == b.nodeType)
  2904. )
  2905. return b.parentNode;
  2906. return b;
  2907. },
  2908. getText: function() {
  2909. var a, b;
  2910. return this.isFocus() && (a = this.getNative())
  2911. ? ((b = browser.ie9below ? a.createRange() : a.getRangeAt(0)),
  2912. browser.ie9below ? b.text : b.toString())
  2913. : "";
  2914. },
  2915. clearRange: function() {
  2916. this.getNative()[browser.ie9below ? "empty" : "removeAllRanges"]();
  2917. },
  2918. };
  2919. })(),
  2920. (function() {
  2921. function a(a, b) {
  2922. var c;
  2923. if (b.textarea)
  2924. if (utils.isString(b.textarea)) {
  2925. for (
  2926. var d, e = 0, f = domUtils.getElementsByTagName(a, "textarea");
  2927. (d = f[e++]);
  2928. )
  2929. if (d.id == "ueditor_textarea_" + b.options.textarea) {
  2930. c = d;
  2931. break;
  2932. }
  2933. } else c = b.textarea;
  2934. c ||
  2935. (a.appendChild(
  2936. (c = domUtils.createElement(document, "textarea", {
  2937. name: b.options.textarea,
  2938. id: "ueditor_textarea_" + b.options.textarea,
  2939. style: "display:none",
  2940. }))
  2941. ),
  2942. (b.textarea = c)),
  2943. !c.getAttribute("name") && c.setAttribute("name", b.options.textarea),
  2944. (c.value = b.hasContents()
  2945. ? b.options.allHtmlEnabled
  2946. ? b.getAllHtml()
  2947. : b.getContent(null, null, !0)
  2948. : "");
  2949. }
  2950. function b(a) {
  2951. for (var b in a) return b;
  2952. }
  2953. function c(a) {
  2954. (a.langIsReady = !0), a.fireEvent("langReady");
  2955. }
  2956. var d,
  2957. e = 0,
  2958. f = (UE.Editor = function(a) {
  2959. var d = this;
  2960. (d.uid = e++),
  2961. EventBase.call(d),
  2962. (d.commands = {}),
  2963. (d.options = utils.extend(
  2964. utils.clone(a || {}),
  2965. UEDITOR_CONFIG,
  2966. !0
  2967. )),
  2968. (d.shortcutkeys = {}),
  2969. (d.inputRules = []),
  2970. (d.outputRules = []),
  2971. d.setOpt(f.defaultOptions(d)),
  2972. d.loadServerConfig(),
  2973. utils.isEmptyObject(UE.I18N)
  2974. ? utils.loadFile(
  2975. document,
  2976. {
  2977. src:
  2978. d.options.langPath +
  2979. d.options.lang +
  2980. "/" +
  2981. d.options.lang +
  2982. ".js",
  2983. tag: "script",
  2984. type: "text/javascript",
  2985. defer: "defer",
  2986. },
  2987. function() {
  2988. UE.plugin.load(d), c(d);
  2989. }
  2990. )
  2991. : ((d.options.lang = b(UE.I18N)), UE.plugin.load(d), c(d)),
  2992. (UE.instants["ueditorInstant" + d.uid] = d);
  2993. });
  2994. (f.prototype = {
  2995. registerCommand: function(a, b) {
  2996. this.commands[a] = b;
  2997. },
  2998. ready: function(a) {
  2999. var b = this;
  3000. a && (b.isReady ? a.apply(b) : b.addListener("ready", a));
  3001. },
  3002. setOpt: function(a, b) {
  3003. var c = {};
  3004. utils.isString(a) ? (c[a] = b) : (c = a),
  3005. utils.extend(this.options, c, !0);
  3006. },
  3007. getOpt: function(a) {
  3008. return this.options[a];
  3009. },
  3010. destroy: function() {
  3011. var a = this;
  3012. a.fireEvent("destroy");
  3013. var b = a.container.parentNode,
  3014. c = a.textarea;
  3015. c
  3016. ? (c.style.display = "")
  3017. : ((c = document.createElement("textarea")),
  3018. b.parentNode.insertBefore(c, b)),
  3019. (c.style.width = a.iframe.offsetWidth + "px"),
  3020. (c.style.height = a.iframe.offsetHeight + "px"),
  3021. (c.value = a.getContent()),
  3022. (c.id = a.key),
  3023. (b.innerHTML = ""),
  3024. domUtils.remove(b);
  3025. var d = a.key;
  3026. for (var e in a) a.hasOwnProperty(e) && delete this[e];
  3027. UE.delEditor(d);
  3028. },
  3029. render: function(a) {
  3030. var b = this,
  3031. c = b.options,
  3032. d = function(b) {
  3033. return parseInt(domUtils.getComputedStyle(a, b));
  3034. };
  3035. if ((utils.isString(a) && (a = document.getElementById(a)), a)) {
  3036. c.initialFrameWidth
  3037. ? (c.minFrameWidth = c.initialFrameWidth)
  3038. : (c.minFrameWidth = c.initialFrameWidth = a.offsetWidth),
  3039. c.initialFrameHeight
  3040. ? (c.minFrameHeight = c.initialFrameHeight)
  3041. : (c.initialFrameHeight = c.minFrameHeight = a.offsetHeight),
  3042. (a.style.width = /%$/.test(c.initialFrameWidth)
  3043. ? "100%"
  3044. : c.initialFrameWidth -
  3045. d("padding-left") -
  3046. d("padding-right") +
  3047. "px"),
  3048. (a.style.height = /%$/.test(c.initialFrameHeight)
  3049. ? "100%"
  3050. : c.initialFrameHeight -
  3051. d("padding-top") -
  3052. d("padding-bottom") +
  3053. "px"),
  3054. (a.style.zIndex = c.zIndex);
  3055. var e =
  3056. (ie && browser.version < 9 ? "" : "<!DOCTYPE html>") +
  3057. "<html xmlns='http://www.w3.org/1999/xhtml' class='view' ><head><style type='text/css'>.view{padding:0;word-wrap:break-word;cursor:text;height:90%;}\nbody{margin:8px;font-family:sans-serif;font-size:16px;}p{margin:5px 0;}</style>" +
  3058. (c.iframeCssUrl
  3059. ? "<link rel='stylesheet' type='text/css' href='" +
  3060. utils.unhtml(c.iframeCssUrl) +
  3061. "'/>"
  3062. : "") +
  3063. (c.initialStyle ? "<style>" + c.initialStyle + "</style>" : "") +
  3064. "</head><body class='view' ></body><script type='text/javascript' " +
  3065. (ie ? "defer='defer'" : "") +
  3066. " id='_initialScript'>setTimeout(function(){editor = window.parent.UE.instants['ueditorInstant" +
  3067. b.uid +
  3068. "'];editor._setup(document);},0);var _tmpScript = document.getElementById('_initialScript');_tmpScript.parentNode.removeChild(_tmpScript);</script></html>";
  3069. a.appendChild(
  3070. domUtils.createElement(document, "iframe", {
  3071. id: "ueditor_" + b.uid,
  3072. width: "100%",
  3073. height: "100%",
  3074. frameborder: "0",
  3075. src:
  3076. "javascript:void(function(){document.open();" +
  3077. (c.customDomain && document.domain != location.hostname
  3078. ? 'document.domain="' + document.domain + '";'
  3079. : "") +
  3080. 'document.write("' +
  3081. e +
  3082. '");document.close();}())',
  3083. })
  3084. ),
  3085. (a.style.overflow = "hidden"),
  3086. setTimeout(function() {
  3087. /%$/.test(c.initialFrameWidth) &&
  3088. (c.minFrameWidth = c.initialFrameWidth = a.offsetWidth),
  3089. /%$/.test(c.initialFrameHeight) &&
  3090. ((c.minFrameHeight = c.initialFrameHeight = a.offsetHeight),
  3091. (a.style.height = c.initialFrameHeight + "px"));
  3092. });
  3093. }
  3094. },
  3095. _setup: function(b) {
  3096. var c = this,
  3097. d = c.options;
  3098. ie
  3099. ? ((b.body.disabled = !0),
  3100. (b.body.contentEditable = !0),
  3101. (b.body.disabled = !1))
  3102. : (b.body.contentEditable = !0),
  3103. (b.body.spellcheck = !1),
  3104. (c.document = b),
  3105. (c.window = b.defaultView || b.parentWindow),
  3106. (c.iframe = c.window.frameElement),
  3107. (c.body = b.body),
  3108. (c.selection = new dom.Selection(b));
  3109. var e;
  3110. browser.gecko &&
  3111. (e = this.selection.getNative()) &&
  3112. e.removeAllRanges(),
  3113. this._initEvents();
  3114. for (
  3115. var f = this.iframe.parentNode;
  3116. !domUtils.isBody(f);
  3117. f = f.parentNode
  3118. )
  3119. if ("FORM" == f.tagName) {
  3120. (c.form = f),
  3121. c.options.autoSyncData
  3122. ? domUtils.on(c.window, "blur", function() {
  3123. a(f, c);
  3124. })
  3125. : domUtils.on(f, "submit", function() {
  3126. a(this, c);
  3127. });
  3128. break;
  3129. }
  3130. if (d.initialContent)
  3131. if (d.autoClearinitialContent) {
  3132. var g = c.execCommand;
  3133. (c.execCommand = function() {
  3134. return (
  3135. c.fireEvent("firstBeforeExecCommand"), g.apply(c, arguments)
  3136. );
  3137. }),
  3138. this._setDefaultContent(d.initialContent);
  3139. } else this.setContent(d.initialContent, !1, !0);
  3140. domUtils.isEmptyNode(c.body) &&
  3141. (c.body.innerHTML = "<p>" + (browser.ie ? "" : "<br/>") + "</p>"),
  3142. d.focus &&
  3143. setTimeout(function() {
  3144. c.focus(c.options.focusInEnd),
  3145. !c.options.autoClearinitialContent && c._selectionChange();
  3146. }, 0),
  3147. c.container || (c.container = this.iframe.parentNode),
  3148. d.fullscreen && c.ui && c.ui.setFullScreen(!0);
  3149. try {
  3150. c.document.execCommand("2D-position", !1, !1);
  3151. } catch (h) {}
  3152. try {
  3153. c.document.execCommand("enableInlineTableEditing", !1, !1);
  3154. } catch (h) {}
  3155. try {
  3156. c.document.execCommand("enableObjectResizing", !1, !1);
  3157. } catch (h) {}
  3158. c._bindshortcutKeys(),
  3159. (c.isReady = 1),
  3160. c.fireEvent("ready"),
  3161. d.onready && d.onready.call(c),
  3162. browser.ie9below ||
  3163. domUtils.on(c.window, ["blur", "focus"], function(a) {
  3164. if ("blur" == a.type) {
  3165. c._bakRange = c.selection.getRange();
  3166. try {
  3167. (c._bakNativeRange = c.selection.getNative().getRangeAt(0)),
  3168. c.selection.getNative().removeAllRanges();
  3169. } catch (a) {
  3170. c._bakNativeRange = null;
  3171. }
  3172. } else
  3173. try {
  3174. c._bakRange && c._bakRange.select();
  3175. } catch (a) {}
  3176. }),
  3177. browser.gecko &&
  3178. browser.version <= 10902 &&
  3179. ((c.body.contentEditable = !1),
  3180. setTimeout(function() {
  3181. c.body.contentEditable = !0;
  3182. }, 100),
  3183. setInterval(function() {
  3184. c.body.style.height = c.iframe.offsetHeight - 20 + "px";
  3185. }, 100)),
  3186. !d.isShow && c.setHide(),
  3187. d.readonly && c.setDisabled();
  3188. },
  3189. sync: function(b) {
  3190. var c = this,
  3191. d = b
  3192. ? document.getElementById(b)
  3193. : domUtils.findParent(
  3194. c.iframe.parentNode,
  3195. function(a) {
  3196. return "FORM" == a.tagName;
  3197. },
  3198. !0
  3199. );
  3200. d && a(d, c);
  3201. },
  3202. setHeight: function(a, b) {
  3203. a !== parseInt(this.iframe.parentNode.style.height) &&
  3204. (this.iframe.parentNode.style.height = a + "px"),
  3205. !b &&
  3206. (this.options.minFrameHeight = this.options.initialFrameHeight = a),
  3207. (this.body.style.height = a + "px"),
  3208. !b && this.trigger("setHeight");
  3209. },
  3210. addshortcutkey: function(a, b) {
  3211. var c = {};
  3212. b ? (c[a] = b) : (c = a), utils.extend(this.shortcutkeys, c);
  3213. },
  3214. _bindshortcutKeys: function() {
  3215. var a = this,
  3216. b = this.shortcutkeys;
  3217. a.addListener("keydown", function(c, d) {
  3218. var e = d.keyCode || d.which;
  3219. for (var f in b)
  3220. for (var g, h = b[f].split(","), i = 0; (g = h[i++]); ) {
  3221. g = g.split(":");
  3222. var j = g[0],
  3223. k = g[1];
  3224. (/^(ctrl)(\+shift)?\+(\d+)$/.test(j.toLowerCase()) ||
  3225. /^(\d+)$/.test(j)) &&
  3226. ((("ctrl" == RegExp.$1 ? d.ctrlKey || d.metaKey : 0) &&
  3227. ("" != RegExp.$2 ? d[RegExp.$2.slice(1) + "Key"] : 1) &&
  3228. e == RegExp.$3) ||
  3229. e == RegExp.$1) &&
  3230. (a.queryCommandState(f, k) != -1 && a.execCommand(f, k),
  3231. domUtils.preventDefault(d));
  3232. }
  3233. });
  3234. },
  3235. getContent: function(a, b, c, d, e) {
  3236. var f = this;
  3237. if (
  3238. (a && utils.isFunction(a) && ((b = a), (a = "")),
  3239. b ? !b() : !this.hasContents())
  3240. )
  3241. return "";
  3242. f.fireEvent("beforegetcontent");
  3243. var g = UE.htmlparser(f.body.innerHTML, d);
  3244. return (
  3245. f.filterOutputRule(g),
  3246. f.fireEvent("aftergetcontent", a, g),
  3247. g.toHtml(e)
  3248. );
  3249. },
  3250. getAllHtml: function() {
  3251. var a = this,
  3252. b = [];
  3253. if (
  3254. (a.fireEvent("getAllHtml", b), browser.ie && browser.version > 8)
  3255. ) {
  3256. var c = "";
  3257. utils.each(a.document.styleSheets, function(a) {
  3258. c += a.href
  3259. ? '<link rel="stylesheet" type="text/css" href="' +
  3260. a.href +
  3261. '" />'
  3262. : "<style>" + a.cssText + "</style>";
  3263. }),
  3264. utils.each(a.document.getElementsByTagName("script"), function(
  3265. a
  3266. ) {
  3267. c += a.outerHTML;
  3268. });
  3269. }
  3270. return (
  3271. "<html><head>" +
  3272. (a.options.charset
  3273. ? '<meta http-equiv="Content-Type" content="text/html; charset=' +
  3274. a.options.charset +
  3275. '"/>'
  3276. : "") +
  3277. (c || a.document.getElementsByTagName("head")[0].innerHTML) +
  3278. b.join("\n") +
  3279. "</head><body " +
  3280. (ie && browser.version < 9 ? 'class="view"' : "") +
  3281. ">" +
  3282. a.getContent(null, null, !0) +
  3283. "</body></html>"
  3284. );
  3285. },
  3286. getPlainTxt: function() {
  3287. var a = new RegExp(domUtils.fillChar, "g"),
  3288. b = this.body.innerHTML.replace(/[\n\r]/g, "");
  3289. return (
  3290. (b = b
  3291. .replace(/<(p|div)[^>]*>(<br\/?>|&nbsp;)<\/\1>/gi, "\n")
  3292. .replace(/<br\/?>/gi, "\n")
  3293. .replace(/<[^>\/]+>/g, "")
  3294. .replace(/(\n)?<\/([^>]+)>/g, function(a, b, c) {
  3295. return dtd.$block[c] ? "\n" : b ? b : "";
  3296. })),
  3297. b
  3298. .replace(a, "")
  3299. .replace(/\u00a0/g, " ")
  3300. .replace(/&nbsp;/g, " ")
  3301. );
  3302. },
  3303. getContentTxt: function() {
  3304. var a = new RegExp(domUtils.fillChar, "g");
  3305. return this.body[browser.ie ? "innerText" : "textContent"]
  3306. .replace(a, "")
  3307. .replace(/\u00a0/g, " ");
  3308. },
  3309. setContent: function(b, c, d) {
  3310. function e(a) {
  3311. return "DIV" == a.tagName && a.getAttribute("cdata_tag");
  3312. }
  3313. var f = this;
  3314. f.fireEvent("beforesetcontent", b);
  3315. var g = UE.htmlparser(b);
  3316. if (
  3317. (f.filterInputRule(g),
  3318. (b = g.toHtml()),
  3319. (f.body.innerHTML = (c ? f.body.innerHTML : "") + b),
  3320. "p" == f.options.enterTag)
  3321. ) {
  3322. var h,
  3323. i = this.body.firstChild;
  3324. if (
  3325. !i ||
  3326. (1 == i.nodeType &&
  3327. (dtd.$cdata[i.tagName] || e(i) || domUtils.isCustomeNode(i)) &&
  3328. i === this.body.lastChild)
  3329. )
  3330. this.body.innerHTML =
  3331. "<p>" +
  3332. (browser.ie ? "&nbsp;" : "<br/>") +
  3333. "</p>" +
  3334. this.body.innerHTML;
  3335. else
  3336. for (var j = f.document.createElement("p"); i; ) {
  3337. for (
  3338. ;
  3339. i &&
  3340. (3 == i.nodeType ||
  3341. (1 == i.nodeType &&
  3342. dtd.p[i.tagName] &&
  3343. !dtd.$cdata[i.tagName]));
  3344. )
  3345. (h = i.nextSibling), j.appendChild(i), (i = h);
  3346. if (j.firstChild) {
  3347. if (!i) {
  3348. f.body.appendChild(j);
  3349. break;
  3350. }
  3351. i.parentNode.insertBefore(j, i),
  3352. (j = f.document.createElement("p"));
  3353. }
  3354. i = i.nextSibling;
  3355. }
  3356. }
  3357. f.fireEvent("aftersetcontent"),
  3358. f.fireEvent("contentchange"),
  3359. !d && f._selectionChange(),
  3360. (f._bakRange = f._bakIERange = f._bakNativeRange = null);
  3361. var k;
  3362. browser.gecko &&
  3363. (k = this.selection.getNative()) &&
  3364. k.removeAllRanges(),
  3365. f.options.autoSyncData && f.form && a(f.form, f);
  3366. },
  3367. focus: function(a) {
  3368. try {
  3369. var b = this,
  3370. c = b.selection.getRange();
  3371. if (a) {
  3372. var d = b.body.lastChild;
  3373. d &&
  3374. 1 == d.nodeType &&
  3375. !dtd.$empty[d.tagName] &&
  3376. (domUtils.isEmptyBlock(d)
  3377. ? c.setStartAtFirst(d)
  3378. : c.setStartAtLast(d),
  3379. c.collapse(!0)),
  3380. c.setCursor(!0);
  3381. } else {
  3382. if (
  3383. !c.collapsed &&
  3384. domUtils.isBody(c.startContainer) &&
  3385. 0 == c.startOffset
  3386. ) {
  3387. var d = b.body.firstChild;
  3388. d &&
  3389. 1 == d.nodeType &&
  3390. !dtd.$empty[d.tagName] &&
  3391. c.setStartAtFirst(d).collapse(!0);
  3392. }
  3393. c.select(!0);
  3394. }
  3395. this.fireEvent("focus selectionchange");
  3396. } catch (e) {}
  3397. },
  3398. isFocus: function() {
  3399. return this.selection.isFocus();
  3400. },
  3401. blur: function() {
  3402. var a = this.selection.getNative();
  3403. if (a.empty && browser.ie) {
  3404. var b = document.body.createTextRange();
  3405. b.moveToElementText(document.body),
  3406. b.collapse(!0),
  3407. b.select(),
  3408. a.empty();
  3409. } else a.removeAllRanges();
  3410. },
  3411. _initEvents: function() {
  3412. var a = this,
  3413. b = a.document,
  3414. c = a.window;
  3415. (a._proxyDomEvent = utils.bind(a._proxyDomEvent, a)),
  3416. domUtils.on(
  3417. b,
  3418. [
  3419. "click",
  3420. "contextmenu",
  3421. "mousedown",
  3422. "keydown",
  3423. "keyup",
  3424. "keypress",
  3425. "mouseup",
  3426. "mouseover",
  3427. "mouseout",
  3428. "selectstart",
  3429. ],
  3430. a._proxyDomEvent
  3431. ),
  3432. domUtils.on(c, ["focus", "blur"], a._proxyDomEvent),
  3433. domUtils.on(a.body, "drop", function(b) {
  3434. browser.gecko && b.stopPropagation && b.stopPropagation(),
  3435. a.fireEvent("contentchange");
  3436. }),
  3437. domUtils.on(b, ["mouseup", "keydown"], function(b) {
  3438. ("keydown" == b.type &&
  3439. (b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)) ||
  3440. (2 != b.button && a._selectionChange(250, b));
  3441. });
  3442. },
  3443. _proxyDomEvent: function(a) {
  3444. return (
  3445. this.fireEvent(
  3446. "before" + a.type.replace(/^on/, "").toLowerCase()
  3447. ) !== !1 &&
  3448. this.fireEvent(a.type.replace(/^on/, ""), a) !== !1 &&
  3449. this.fireEvent("after" + a.type.replace(/^on/, "").toLowerCase())
  3450. );
  3451. },
  3452. _selectionChange: function(a, b) {
  3453. var c,
  3454. e,
  3455. f = this,
  3456. g = !1;
  3457. if (browser.ie && browser.version < 9 && b && "mouseup" == b.type) {
  3458. var h = this.selection.getRange();
  3459. h.collapsed || ((g = !0), (c = b.clientX), (e = b.clientY));
  3460. }
  3461. clearTimeout(d),
  3462. (d = setTimeout(function() {
  3463. if (f.selection && f.selection.getNative()) {
  3464. var a;
  3465. if (g && "None" == f.selection.getNative().type) {
  3466. a = f.document.body.createTextRange();
  3467. try {
  3468. a.moveToPoint(c, e);
  3469. } catch (d) {
  3470. a = null;
  3471. }
  3472. }
  3473. var h;
  3474. a &&
  3475. ((h = f.selection.getIERange),
  3476. (f.selection.getIERange = function() {
  3477. return a;
  3478. })),
  3479. f.selection.cache(),
  3480. h && (f.selection.getIERange = h),
  3481. f.selection._cachedRange &&
  3482. f.selection._cachedStartElement &&
  3483. (f.fireEvent("beforeselectionchange"),
  3484. f.fireEvent("selectionchange", !!b),
  3485. f.fireEvent("afterselectionchange"),
  3486. f.selection.clear());
  3487. }
  3488. }, a || 50));
  3489. },
  3490. _callCmdFn: function(a, b) {
  3491. var c,
  3492. d,
  3493. e = b[0].toLowerCase();
  3494. return (
  3495. (c = this.commands[e] || UE.commands[e]),
  3496. (d = c && c[a]),
  3497. (c && d) || "queryCommandState" != a
  3498. ? d
  3499. ? d.apply(this, b)
  3500. : void 0
  3501. : 0
  3502. );
  3503. },
  3504. execCommand: function(a) {
  3505. a = a.toLowerCase();
  3506. var b,
  3507. c = this,
  3508. d = c.commands[a] || UE.commands[a];
  3509. return d && d.execCommand
  3510. ? (d.notNeedUndo || c.__hasEnterExecCommand
  3511. ? ((b = this._callCmdFn("execCommand", arguments)),
  3512. !c.__hasEnterExecCommand &&
  3513. !d.ignoreContentChange &&
  3514. !c._ignoreContentChange &&
  3515. c.fireEvent("contentchange"))
  3516. : ((c.__hasEnterExecCommand = !0),
  3517. c.queryCommandState.apply(c, arguments) != -1 &&
  3518. (c.fireEvent("saveScene"),
  3519. c.fireEvent.apply(
  3520. c,
  3521. ["beforeexeccommand", a].concat(arguments)
  3522. ),
  3523. (b = this._callCmdFn("execCommand", arguments)),
  3524. c.fireEvent.apply(
  3525. c,
  3526. ["afterexeccommand", a].concat(arguments)
  3527. ),
  3528. c.fireEvent("saveScene")),
  3529. (c.__hasEnterExecCommand = !1)),
  3530. !c.__hasEnterExecCommand &&
  3531. !d.ignoreContentChange &&
  3532. !c._ignoreContentChange &&
  3533. c._selectionChange(),
  3534. b)
  3535. : null;
  3536. },
  3537. queryCommandState: function(a) {
  3538. return this._callCmdFn("queryCommandState", arguments);
  3539. },
  3540. queryCommandValue: function(a) {
  3541. return this._callCmdFn("queryCommandValue", arguments);
  3542. },
  3543. hasContents: function(a) {
  3544. if (a)
  3545. for (var b, c = 0; (b = a[c++]); )
  3546. if (this.document.getElementsByTagName(b).length > 0) return !0;
  3547. if (!domUtils.isEmptyBlock(this.body)) return !0;
  3548. for (a = ["div"], c = 0; (b = a[c++]); )
  3549. for (
  3550. var d, e = domUtils.getElementsByTagName(this.document, b), f = 0;
  3551. (d = e[f++]);
  3552. )
  3553. if (domUtils.isCustomeNode(d)) return !0;
  3554. return !1;
  3555. },
  3556. reset: function() {
  3557. this.fireEvent("reset");
  3558. },
  3559. setEnabled: function() {
  3560. var a,
  3561. b = this;
  3562. if ("false" == b.body.contentEditable) {
  3563. (b.body.contentEditable = !0), (a = b.selection.getRange());
  3564. try {
  3565. a.moveToBookmark(b.lastBk), delete b.lastBk;
  3566. } catch (c) {
  3567. a.setStartAtFirst(b.body).collapse(!0);
  3568. }
  3569. a.select(!0),
  3570. b.bkqueryCommandState &&
  3571. ((b.queryCommandState = b.bkqueryCommandState),
  3572. delete b.bkqueryCommandState),
  3573. b.bkqueryCommandValue &&
  3574. ((b.queryCommandValue = b.bkqueryCommandValue),
  3575. delete b.bkqueryCommandValue),
  3576. b.fireEvent("selectionchange");
  3577. }
  3578. },
  3579. enable: function() {
  3580. return this.setEnabled();
  3581. },
  3582. setDisabled: function(a) {
  3583. var b = this;
  3584. (a = a ? (utils.isArray(a) ? a : [a]) : []),
  3585. "true" == b.body.contentEditable &&
  3586. (b.lastBk ||
  3587. (b.lastBk = b.selection.getRange().createBookmark(!0)),
  3588. (b.body.contentEditable = !1),
  3589. (b.bkqueryCommandState = b.queryCommandState),
  3590. (b.bkqueryCommandValue = b.queryCommandValue),
  3591. (b.queryCommandState = function(c) {
  3592. return utils.indexOf(a, c) != -1
  3593. ? b.bkqueryCommandState.apply(b, arguments)
  3594. : -1;
  3595. }),
  3596. (b.queryCommandValue = function(c) {
  3597. return utils.indexOf(a, c) != -1
  3598. ? b.bkqueryCommandValue.apply(b, arguments)
  3599. : null;
  3600. }),
  3601. b.fireEvent("selectionchange"));
  3602. },
  3603. disable: function(a) {
  3604. return this.setDisabled(a);
  3605. },
  3606. _setDefaultContent: (function() {
  3607. function a() {
  3608. var b = this;
  3609. b.document.getElementById("initContent") &&
  3610. ((b.body.innerHTML = "<p>" + (ie ? "" : "<br/>") + "</p>"),
  3611. b.removeListener("firstBeforeExecCommand focus", a),
  3612. setTimeout(function() {
  3613. b.focus(), b._selectionChange();
  3614. }, 0));
  3615. }
  3616. return function(b) {
  3617. var c = this;
  3618. (c.body.innerHTML = '<p id="initContent">' + b + "</p>"),
  3619. c.addListener("firstBeforeExecCommand focus", a);
  3620. };
  3621. })(),
  3622. setShow: function() {
  3623. var a = this,
  3624. b = a.selection.getRange();
  3625. if ("none" == a.container.style.display) {
  3626. try {
  3627. b.moveToBookmark(a.lastBk), delete a.lastBk;
  3628. } catch (c) {
  3629. b.setStartAtFirst(a.body).collapse(!0);
  3630. }
  3631. setTimeout(function() {
  3632. b.select(!0);
  3633. }, 100),
  3634. (a.container.style.display = "");
  3635. }
  3636. },
  3637. show: function() {
  3638. return this.setShow();
  3639. },
  3640. setHide: function() {
  3641. var a = this;
  3642. a.lastBk || (a.lastBk = a.selection.getRange().createBookmark(!0)),
  3643. (a.container.style.display = "none");
  3644. },
  3645. hide: function() {
  3646. return this.setHide();
  3647. },
  3648. getLang: function(a) {
  3649. var b = UE.I18N[this.options.lang];
  3650. if (!b) throw Error("not import language file");
  3651. a = (a || "").split(".");
  3652. for (var c, d = 0; (c = a[d++]) && ((b = b[c]), b); );
  3653. return b;
  3654. },
  3655. getContentLength: function(a, b) {
  3656. var c = this.getContent(!1, !1, !0).length;
  3657. if (a) {
  3658. (b = (b || []).concat(["hr", "img", "iframe"])),
  3659. (c = this.getContentTxt().replace(/[\t\r\n]+/g, "").length);
  3660. for (var d, e = 0; (d = b[e++]); )
  3661. c += this.document.getElementsByTagName(d).length;
  3662. }
  3663. return c;
  3664. },
  3665. addInputRule: function(a) {
  3666. this.inputRules.push(a);
  3667. },
  3668. filterInputRule: function(a) {
  3669. for (var b, c = 0; (b = this.inputRules[c++]); ) b.call(this, a);
  3670. },
  3671. addOutputRule: function(a) {
  3672. this.outputRules.push(a);
  3673. },
  3674. filterOutputRule: function(a) {
  3675. for (var b, c = 0; (b = this.outputRules[c++]); ) b.call(this, a);
  3676. },
  3677. getActionUrl: function(a) {
  3678. var b = this.getOpt(a) || a,
  3679. c = this.getOpt("imageUrl"),
  3680. d = this.getOpt("serverUrl");
  3681. return (
  3682. !d &&
  3683. c &&
  3684. (d = c.replace(/^(.*[\/]).+([\.].+)$/, "$1controller$2")),
  3685. d
  3686. ? ((d =
  3687. d +
  3688. (d.indexOf("?") == -1 ? "?" : "&") +
  3689. "action=" +
  3690. (b || "")),
  3691. utils.formatUrl(d))
  3692. : ""
  3693. );
  3694. },
  3695. }),
  3696. utils.inherits(f, EventBase);
  3697. })(),
  3698. (UE.Editor.defaultOptions = function(a) {
  3699. var b = a.options.UEDITOR_HOME_URL;
  3700. return {
  3701. isShow: !0,
  3702. initialContent: "",
  3703. initialStyle: "",
  3704. autoClearinitialContent: !1,
  3705. iframeCssUrl: b + "themes/iframe.css",
  3706. textarea: "editorValue",
  3707. focus: !1,
  3708. focusInEnd: !0,
  3709. autoClearEmptyNode: !0,
  3710. fullscreen: !1,
  3711. readonly: !1,
  3712. zIndex: 999,
  3713. imagePopup: !0,
  3714. enterTag: "p",
  3715. customDomain: !1,
  3716. lang: "zh-cn",
  3717. langPath: b + "lang/",
  3718. theme: "default",
  3719. themePath: b + "themes/",
  3720. allHtmlEnabled: !1,
  3721. scaleEnabled: !1,
  3722. tableNativeEditInFF: !1,
  3723. autoSyncData: !0,
  3724. fileNameFormat: "{time}{rand:6}",
  3725. };
  3726. }),
  3727. (function() {
  3728. (UE.Editor.prototype.loadServerConfig = function() {
  3729. function showErrorMsg(a) {
  3730. console && console.error(a);
  3731. }
  3732. var me = this;
  3733. setTimeout(function() {
  3734. try {
  3735. me.options.imageUrl &&
  3736. me.setOpt(
  3737. "serverUrl",
  3738. me.options.imageUrl.replace(
  3739. /^(.*[\/]).+([\.].+)$/,
  3740. "$1controller$2"
  3741. )
  3742. );
  3743. var configUrl = me.getActionUrl("config"),
  3744. isJsonp = utils.isCrossDomainUrl(configUrl);
  3745. (me._serverConfigLoaded = !1),
  3746. configUrl &&
  3747. UE.ajax.request(configUrl, {
  3748. method: "GET",
  3749. dataType: isJsonp ? "jsonp" : "",
  3750. onsuccess: function(r) {
  3751. try {
  3752. var config = isJsonp
  3753. ? r
  3754. : eval("(" + r.responseText + ")");
  3755. utils.extend(me.options, config),
  3756. me.fireEvent("serverConfigLoaded"),
  3757. (me._serverConfigLoaded = !0);
  3758. } catch (e) {
  3759. showErrorMsg(me.getLang("loadconfigFormatError"));
  3760. }
  3761. },
  3762. onerror: function() {
  3763. showErrorMsg(me.getLang("loadconfigHttpError"));
  3764. },
  3765. });
  3766. } catch (e) {
  3767. showErrorMsg(me.getLang("loadconfigError"));
  3768. }
  3769. });
  3770. }),
  3771. (UE.Editor.prototype.isServerConfigLoaded = function() {
  3772. var a = this;
  3773. return a._serverConfigLoaded || !1;
  3774. }),
  3775. (UE.Editor.prototype.afterConfigReady = function(a) {
  3776. if (a && utils.isFunction(a)) {
  3777. var b = this,
  3778. c = function() {
  3779. a.apply(b, arguments),
  3780. b.removeListener("serverConfigLoaded", c);
  3781. };
  3782. b.isServerConfigLoaded()
  3783. ? a.call(b, "serverConfigLoaded")
  3784. : b.addListener("serverConfigLoaded", c);
  3785. }
  3786. });
  3787. })(),
  3788. (UE.ajax = (function() {
  3789. function a(a) {
  3790. var b = [];
  3791. for (var c in a)
  3792. if (
  3793. "method" != c &&
  3794. "timeout" != c &&
  3795. "async" != c &&
  3796. "dataType" != c &&
  3797. "callback" != c &&
  3798. void 0 != a[c] &&
  3799. null != a[c]
  3800. )
  3801. if (
  3802. "function" != (typeof a[c]).toLowerCase() &&
  3803. "object" != (typeof a[c]).toLowerCase()
  3804. )
  3805. b.push(encodeURIComponent(c) + "=" + encodeURIComponent(a[c]));
  3806. else if (utils.isArray(a[c]))
  3807. for (var d = 0; d < a[c].length; d++)
  3808. b.push(
  3809. encodeURIComponent(c) + "[]=" + encodeURIComponent(a[c][d])
  3810. );
  3811. return b.join("&");
  3812. }
  3813. function b(b, c) {
  3814. var d = f(),
  3815. e = !1,
  3816. g = {
  3817. method: "POST",
  3818. timeout: 5e3,
  3819. async: !0,
  3820. data: {},
  3821. onsuccess: function() {},
  3822. onerror: function() {},
  3823. };
  3824. if (("object" == typeof b && ((c = b), (b = c.url)), d && b)) {
  3825. var h = c ? utils.extend(g, c) : g,
  3826. i = a(h);
  3827. utils.isEmptyObject(h.data) || (i += (i ? "&" : "") + a(h.data));
  3828. var j = setTimeout(function() {
  3829. 4 != d.readyState && ((e = !0), d.abort(), clearTimeout(j));
  3830. }, h.timeout),
  3831. k = h.method.toUpperCase(),
  3832. l =
  3833. b +
  3834. (b.indexOf("?") == -1 ? "?" : "&") +
  3835. ("POST" == k ? "" : i + "&noCache=" + +new Date());
  3836. d.open(k, l, h.async),
  3837. (d.onreadystatechange = function() {
  3838. 4 == d.readyState &&
  3839. (e || 200 != d.status ? h.onerror(d) : h.onsuccess(d));
  3840. }),
  3841. "POST" == k
  3842. ? (d.setRequestHeader(
  3843. "Content-Type",
  3844. "application/x-www-form-urlencoded"
  3845. ),
  3846. d.send(i))
  3847. : d.send(null);
  3848. }
  3849. }
  3850. function c(b, c) {
  3851. function d(a, b, c) {
  3852. a.setAttribute("type", "text/javascript"),
  3853. a.setAttribute("defer", "defer"),
  3854. c && a.setAttribute("charset", c),
  3855. a.setAttribute("src", b),
  3856. document.getElementsByTagName("head")[0].appendChild(a);
  3857. }
  3858. function e(a) {
  3859. return function() {
  3860. try {
  3861. if (a) k.onerror && k.onerror();
  3862. else
  3863. try {
  3864. clearTimeout(g), i.apply(window, arguments);
  3865. } catch (b) {}
  3866. } catch (c) {
  3867. k.onerror && k.onerror.call(window, c);
  3868. } finally {
  3869. k.oncomplete && k.oncomplete.apply(window, arguments),
  3870. j.parentNode && j.parentNode.removeChild(j),
  3871. (window[f] = null);
  3872. try {
  3873. delete window[f];
  3874. } catch (b) {}
  3875. }
  3876. };
  3877. }
  3878. var f,
  3879. g,
  3880. h,
  3881. i = c.onsuccess || function() {},
  3882. j = document.createElement("SCRIPT"),
  3883. k = c || {},
  3884. l = k.charset,
  3885. m = k.jsonp || "callback",
  3886. n = k.timeOut || 0,
  3887. o = new RegExp("(\\?|&)" + m + "=([^&]*)");
  3888. utils.isFunction(i)
  3889. ? ((f =
  3890. "bd__editor__" +
  3891. Math.floor(2147483648 * Math.random()).toString(36)),
  3892. (window[f] = e(0)))
  3893. : utils.isString(i)
  3894. ? (f = i)
  3895. : (h = o.exec(b)) && (f = h[2]),
  3896. (b = b.replace(o, "$1" + m + "=" + f)),
  3897. b.search(o) < 0 &&
  3898. (b += (b.indexOf("?") < 0 ? "?" : "&") + m + "=" + f);
  3899. var p = a(c);
  3900. utils.isEmptyObject(c.data) || (p += (p ? "&" : "") + a(c.data)),
  3901. p && (b = b.replace(/\?/, "?" + p + "&")),
  3902. (j.onerror = e(1)),
  3903. n && (g = setTimeout(e(1), n)),
  3904. d(j, b, l);
  3905. }
  3906. var d = "XMLHttpRequest()";
  3907. try {
  3908. new ActiveXObject("Msxml2.XMLHTTP"),
  3909. (d = "ActiveXObject('Msxml2.XMLHTTP')");
  3910. } catch (e) {
  3911. try {
  3912. new ActiveXObject("Microsoft.XMLHTTP"),
  3913. (d = "ActiveXObject('Microsoft.XMLHTTP')");
  3914. } catch (e) {}
  3915. }
  3916. var f = new Function("return new " + d);
  3917. return {
  3918. request: function(a, d) {
  3919. d && "jsonp" == d.dataType ? c(a, d) : b(a, d);
  3920. },
  3921. getJSONP: function(a, b, d) {
  3922. var e = { data: b, oncomplete: d };
  3923. c(a, e);
  3924. },
  3925. };
  3926. })());
  3927. var filterWord = (UE.filterWord = (function() {
  3928. function a(a) {
  3929. return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/gi.test(
  3930. a
  3931. );
  3932. }
  3933. function b(a) {
  3934. return (a = a.replace(/[\d.]+\w+/g, function(a) {
  3935. return utils.transUnitToPx(a);
  3936. }));
  3937. }
  3938. function c(a) {
  3939. return a
  3940. .replace(/[\t\r\n]+/g, " ")
  3941. .replace(/<!--[\s\S]*?-->/gi, "")
  3942. .replace(/<v:shape [^>]*>[\s\S]*?.<\/v:shape>/gi, function(a) {
  3943. if (browser.opera) return "";
  3944. try {
  3945. if (/Bitmap/i.test(a)) return "";
  3946. var c = a.match(/width:([ \d.]*p[tx])/i)[1],
  3947. d = a.match(/height:([ \d.]*p[tx])/i)[1],
  3948. e = a.match(/src=\s*"([^"]*)"/i)[1];
  3949. return (
  3950. '<img width="' +
  3951. b(c) +
  3952. '" height="' +
  3953. b(d) +
  3954. '" src="' +
  3955. e +
  3956. '" />'
  3957. );
  3958. } catch (f) {
  3959. return "";
  3960. }
  3961. })
  3962. .replace(/<\/?div[^>]*>/g, "")
  3963. .replace(/v:\w+=(["']?)[^'"]+\1/g, "")
  3964. .replace(
  3965. /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi,
  3966. ""
  3967. )
  3968. .replace(
  3969. /<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,
  3970. "<p><strong>$1</strong></p>"
  3971. )
  3972. .replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, function(
  3973. a,
  3974. b,
  3975. c,
  3976. d
  3977. ) {
  3978. return "class" == b && "MsoListParagraph" == d ? a : "";
  3979. })
  3980. .replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi, function(a, b, c) {
  3981. return c.replace(/[\t\r\n ]+/g, " ");
  3982. })
  3983. .replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function(
  3984. a,
  3985. c,
  3986. d,
  3987. e
  3988. ) {
  3989. for (
  3990. var f,
  3991. g = [],
  3992. h = e
  3993. .replace(/^\s+|\s+$/, "")
  3994. .replace(/&#39;/g, "'")
  3995. .replace(/&quot;/gi, "'")
  3996. .replace(/[\d.]+(cm|pt)/g, function(a) {
  3997. return utils.transUnitToPx(a);
  3998. })
  3999. .split(/;\s*/g),
  4000. i = 0;
  4001. (f = h[i]);
  4002. i++
  4003. ) {
  4004. var j,
  4005. k,
  4006. l = f.split(":");
  4007. if (2 == l.length) {
  4008. if (
  4009. ((j = l[0].toLowerCase()),
  4010. (k = l[1].toLowerCase()),
  4011. (/^(background)\w*/.test(j) &&
  4012. 0 == k.replace(/(initial|\s)/g, "").length) ||
  4013. (/^(margin)\w*/.test(j) && /^0\w+$/.test(k)))
  4014. )
  4015. continue;
  4016. switch (j) {
  4017. case "mso-padding-alt":
  4018. case "mso-padding-top-alt":
  4019. case "mso-padding-right-alt":
  4020. case "mso-padding-bottom-alt":
  4021. case "mso-padding-left-alt":
  4022. case "mso-margin-alt":
  4023. case "mso-margin-top-alt":
  4024. case "mso-margin-right-alt":
  4025. case "mso-margin-bottom-alt":
  4026. case "mso-margin-left-alt":
  4027. case "mso-height":
  4028. case "mso-width":
  4029. case "mso-vertical-align-alt":
  4030. /<table/.test(c) ||
  4031. (g[i] = j.replace(/^mso-|-alt$/g, "") + ":" + b(k));
  4032. continue;
  4033. case "horiz-align":
  4034. g[i] = "text-align:" + k;
  4035. continue;
  4036. case "vert-align":
  4037. g[i] = "vertical-align:" + k;
  4038. continue;
  4039. case "font-color":
  4040. case "mso-foreground":
  4041. g[i] = "color:" + k;
  4042. continue;
  4043. case "mso-background":
  4044. case "mso-highlight":
  4045. g[i] = "background:" + k;
  4046. continue;
  4047. case "mso-default-height":
  4048. g[i] = "min-height:" + b(k);
  4049. continue;
  4050. case "mso-default-width":
  4051. g[i] = "min-width:" + b(k);
  4052. continue;
  4053. case "mso-padding-between-alt":
  4054. g[i] = "border-collapse:separate;border-spacing:" + b(k);
  4055. continue;
  4056. case "text-line-through":
  4057. ("single" != k && "double" != k) ||
  4058. (g[i] = "text-decoration:line-through");
  4059. continue;
  4060. case "mso-zero-height":
  4061. "yes" == k && (g[i] = "display:none");
  4062. continue;
  4063. case "margin":
  4064. if (!/[1-9]/.test(k)) continue;
  4065. }
  4066. if (
  4067. /^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?:decor|trans)|top-bar|version|vnd|word-break)/.test(
  4068. j
  4069. ) ||
  4070. (/text\-indent|padding|margin/.test(j) && /\-[\d.]+/.test(k))
  4071. )
  4072. continue;
  4073. g[i] = j + ":" + l[1];
  4074. }
  4075. }
  4076. return (
  4077. c +
  4078. (g.length
  4079. ? ' style="' + g.join(";").replace(/;{2,}/g, ";") + '"'
  4080. : "")
  4081. );
  4082. });
  4083. }
  4084. return function(b) {
  4085. return a(b) ? c(b) : b;
  4086. };
  4087. })());
  4088. !(function() {
  4089. function a(a, b, c) {
  4090. return a.push(n), b + (c ? 1 : -1);
  4091. }
  4092. function b(a, b) {
  4093. for (var c = 0; c < b; c++) a.push(m);
  4094. }
  4095. function c(g, h, i, j) {
  4096. switch (g.type) {
  4097. case "root":
  4098. for (var k, l = 0; (k = g.children[l++]); )
  4099. i &&
  4100. "element" == k.type &&
  4101. !dtd.$inlineWithA[k.tagName] &&
  4102. l > 1 &&
  4103. (a(h, j, !0), b(h, j)),
  4104. c(k, h, i, j);
  4105. break;
  4106. case "text":
  4107. d(g, h);
  4108. break;
  4109. case "element":
  4110. e(g, h, i, j);
  4111. break;
  4112. case "comment":
  4113. f(g, h, i);
  4114. }
  4115. return h;
  4116. }
  4117. function d(a, b) {
  4118. "pre" == a.parentNode.tagName
  4119. ? b.push(a.data)
  4120. : b.push(
  4121. l[a.parentNode.tagName]
  4122. ? utils.html(a.data)
  4123. : a.data.replace(/[ ]{2}/g, " &nbsp;")
  4124. );
  4125. }
  4126. function e(d, e, f, g) {
  4127. var h = "";
  4128. if (d.attrs) {
  4129. h = [];
  4130. var i = d.attrs;
  4131. for (var j in i)
  4132. h.push(
  4133. j +
  4134. (void 0 !== i[j]
  4135. ? '="' +
  4136. (k[j]
  4137. ? utils.html(i[j]).replace(/["]/g, function(a) {
  4138. return "&quot;";
  4139. })
  4140. : utils.unhtml(i[j])) +
  4141. '"'
  4142. : "")
  4143. );
  4144. h = h.join(" ");
  4145. }
  4146. if (
  4147. (e.push(
  4148. "<" +
  4149. d.tagName +
  4150. (h ? " " + h : "") +
  4151. (dtd.$empty[d.tagName] ? "/" : "") +
  4152. ">"
  4153. ),
  4154. f &&
  4155. !dtd.$inlineWithA[d.tagName] &&
  4156. "pre" != d.tagName &&
  4157. d.children &&
  4158. d.children.length &&
  4159. ((g = a(e, g, !0)), b(e, g)),
  4160. d.children && d.children.length)
  4161. )
  4162. for (var l, m = 0; (l = d.children[m++]); )
  4163. f &&
  4164. "element" == l.type &&
  4165. !dtd.$inlineWithA[l.tagName] &&
  4166. m > 1 &&
  4167. (a(e, g), b(e, g)),
  4168. c(l, e, f, g);
  4169. dtd.$empty[d.tagName] ||
  4170. (f &&
  4171. !dtd.$inlineWithA[d.tagName] &&
  4172. "pre" != d.tagName &&
  4173. d.children &&
  4174. d.children.length &&
  4175. ((g = a(e, g)), b(e, g)),
  4176. e.push("</" + d.tagName + ">"));
  4177. }
  4178. function f(a, b) {
  4179. b.push("<!--" + a.data + "-->");
  4180. }
  4181. function g(a, b) {
  4182. var c;
  4183. if ("element" == a.type && a.getAttr("id") == b) return a;
  4184. if (a.children && a.children.length)
  4185. for (var d, e = 0; (d = a.children[e++]); ) if ((c = g(d, b))) return c;
  4186. }
  4187. function h(a, b, c) {
  4188. if (
  4189. ("element" == a.type && a.tagName == b && c.push(a),
  4190. a.children && a.children.length)
  4191. )
  4192. for (var d, e = 0; (d = a.children[e++]); ) h(d, b, c);
  4193. }
  4194. function i(a, b) {
  4195. if (a.children && a.children.length)
  4196. for (var c, d = 0; (c = a.children[d]); )
  4197. i(c, b),
  4198. c.parentNode &&
  4199. (c.children && c.children.length && b(c), c.parentNode && d++);
  4200. else b(a);
  4201. }
  4202. var j = (UE.uNode = function(a) {
  4203. (this.type = a.type),
  4204. (this.data = a.data),
  4205. (this.tagName = a.tagName),
  4206. (this.parentNode = a.parentNode),
  4207. (this.attrs = a.attrs || {}),
  4208. (this.children = a.children);
  4209. }),
  4210. k = { href: 1, src: 1, _src: 1, _href: 1, cdata_data: 1 },
  4211. l = { style: 1, script: 1 },
  4212. m = " ",
  4213. n = "\n";
  4214. (j.createElement = function(a) {
  4215. return /[<>]/.test(a)
  4216. ? UE.htmlparser(a).children[0]
  4217. : new j({ type: "element", children: [], tagName: a });
  4218. }),
  4219. (j.createText = function(a, b) {
  4220. return new UE.uNode({
  4221. type: "text",
  4222. data: b ? a : utils.unhtml(a || ""),
  4223. });
  4224. }),
  4225. (j.prototype = {
  4226. toHtml: function(a) {
  4227. var b = [];
  4228. return c(this, b, a, 0), b.join("");
  4229. },
  4230. innerHTML: function(a) {
  4231. if ("element" != this.type || dtd.$empty[this.tagName]) return this;
  4232. if (utils.isString(a)) {
  4233. if (this.children)
  4234. for (var b, c = 0; (b = this.children[c++]); )
  4235. b.parentNode = null;
  4236. this.children = [];
  4237. for (var b, d = UE.htmlparser(a), c = 0; (b = d.children[c++]); )
  4238. this.children.push(b), (b.parentNode = this);
  4239. return this;
  4240. }
  4241. var d = new UE.uNode({ type: "root", children: this.children });
  4242. return d.toHtml();
  4243. },
  4244. innerText: function(a, b) {
  4245. if ("element" != this.type || dtd.$empty[this.tagName]) return this;
  4246. if (a) {
  4247. if (this.children)
  4248. for (var c, d = 0; (c = this.children[d++]); )
  4249. c.parentNode = null;
  4250. return (
  4251. (this.children = []), this.appendChild(j.createText(a, b)), this
  4252. );
  4253. }
  4254. return this.toHtml().replace(/<[^>]+>/g, "");
  4255. },
  4256. getData: function() {
  4257. return "element" == this.type ? "" : this.data;
  4258. },
  4259. firstChild: function() {
  4260. return this.children ? this.children[0] : null;
  4261. },
  4262. lastChild: function() {
  4263. return this.children ? this.children[this.children.length - 1] : null;
  4264. },
  4265. previousSibling: function() {
  4266. for (var a, b = this.parentNode, c = 0; (a = b.children[c]); c++)
  4267. if (a === this) return 0 == c ? null : b.children[c - 1];
  4268. },
  4269. nextSibling: function() {
  4270. for (var a, b = this.parentNode, c = 0; (a = b.children[c++]); )
  4271. if (a === this) return b.children[c];
  4272. },
  4273. replaceChild: function(a, b) {
  4274. if (this.children) {
  4275. a.parentNode && a.parentNode.removeChild(a);
  4276. for (var c, d = 0; (c = this.children[d]); d++)
  4277. if (c === b)
  4278. return (
  4279. this.children.splice(d, 1, a),
  4280. (b.parentNode = null),
  4281. (a.parentNode = this),
  4282. a
  4283. );
  4284. }
  4285. },
  4286. appendChild: function(a) {
  4287. if (
  4288. "root" == this.type ||
  4289. ("element" == this.type && !dtd.$empty[this.tagName])
  4290. ) {
  4291. this.children || (this.children = []),
  4292. a.parentNode && a.parentNode.removeChild(a);
  4293. for (var b, c = 0; (b = this.children[c]); c++)
  4294. if (b === a) {
  4295. this.children.splice(c, 1);
  4296. break;
  4297. }
  4298. return this.children.push(a), (a.parentNode = this), a;
  4299. }
  4300. },
  4301. insertBefore: function(a, b) {
  4302. if (this.children) {
  4303. a.parentNode && a.parentNode.removeChild(a);
  4304. for (var c, d = 0; (c = this.children[d]); d++)
  4305. if (c === b)
  4306. return this.children.splice(d, 0, a), (a.parentNode = this), a;
  4307. }
  4308. },
  4309. insertAfter: function(a, b) {
  4310. if (this.children) {
  4311. a.parentNode && a.parentNode.removeChild(a);
  4312. for (var c, d = 0; (c = this.children[d]); d++)
  4313. if (c === b)
  4314. return (
  4315. this.children.splice(d + 1, 0, a), (a.parentNode = this), a
  4316. );
  4317. }
  4318. },
  4319. removeChild: function(a, b) {
  4320. if (this.children)
  4321. for (var c, d = 0; (c = this.children[d]); d++)
  4322. if (c === a) {
  4323. if (
  4324. (this.children.splice(d, 1),
  4325. (c.parentNode = null),
  4326. b && c.children && c.children.length)
  4327. )
  4328. for (var e, f = 0; (e = c.children[f]); f++)
  4329. this.children.splice(d + f, 0, e), (e.parentNode = this);
  4330. return c;
  4331. }
  4332. },
  4333. getAttr: function(a) {
  4334. return this.attrs && this.attrs[a.toLowerCase()];
  4335. },
  4336. setAttr: function(a, b) {
  4337. if (!a) return void delete this.attrs;
  4338. if ((this.attrs || (this.attrs = {}), utils.isObject(a)))
  4339. for (var c in a)
  4340. a[c]
  4341. ? (this.attrs[c.toLowerCase()] = a[c])
  4342. : delete this.attrs[c];
  4343. else b ? (this.attrs[a.toLowerCase()] = b) : delete this.attrs[a];
  4344. },
  4345. getIndex: function() {
  4346. for (var a, b = this.parentNode, c = 0; (a = b.children[c]); c++)
  4347. if (a === this) return c;
  4348. return -1;
  4349. },
  4350. getNodeById: function(a) {
  4351. var b;
  4352. if (this.children && this.children.length)
  4353. for (var c, d = 0; (c = this.children[d++]); )
  4354. if ((b = g(c, a))) return b;
  4355. },
  4356. getNodesByTagName: function(a) {
  4357. a = utils
  4358. .trim(a)
  4359. .replace(/[ ]{2,}/g, " ")
  4360. .split(" ");
  4361. var b = [],
  4362. c = this;
  4363. return (
  4364. utils.each(a, function(a) {
  4365. if (c.children && c.children.length)
  4366. for (var d, e = 0; (d = c.children[e++]); ) h(d, a, b);
  4367. }),
  4368. b
  4369. );
  4370. },
  4371. getStyle: function(a) {
  4372. var b = this.getAttr("style");
  4373. if (!b) return "";
  4374. var c = new RegExp("(^|;)\\s*" + a + ":([^;]+)", "i"),
  4375. d = b.match(c);
  4376. return d && d[0] ? d[2] : "";
  4377. },
  4378. setStyle: function(a, b) {
  4379. function c(a, b) {
  4380. var c = new RegExp("(^|;)\\s*" + a + ":([^;]+;?)", "gi");
  4381. (d = d.replace(c, "$1")),
  4382. b && (d = a + ":" + utils.unhtml(b) + ";" + d);
  4383. }
  4384. var d = this.getAttr("style");
  4385. if ((d || (d = ""), utils.isObject(a))) for (var e in a) c(e, a[e]);
  4386. else c(a, b);
  4387. this.setAttr("style", utils.trim(d));
  4388. },
  4389. traversal: function(a) {
  4390. return this.children && this.children.length && i(this, a), this;
  4391. },
  4392. });
  4393. })();
  4394. var htmlparser = (UE.htmlparser = function(a, b) {
  4395. function c(a, b) {
  4396. if (m[a.tagName]) {
  4397. var c = k.createElement(m[a.tagName]);
  4398. a.appendChild(c), c.appendChild(k.createText(b)), (a = c);
  4399. } else a.appendChild(k.createText(b));
  4400. }
  4401. function d(a, b, c) {
  4402. var e;
  4403. if ((e = l[b])) {
  4404. for (var f, h = a; "root" != h.type; ) {
  4405. if (
  4406. utils.isArray(e)
  4407. ? utils.indexOf(e, h.tagName) != -1
  4408. : e == h.tagName
  4409. ) {
  4410. (a = h), (f = !0);
  4411. break;
  4412. }
  4413. h = h.parentNode;
  4414. }
  4415. f || (a = d(a, utils.isArray(e) ? e[0] : e));
  4416. }
  4417. var i = new k({
  4418. parentNode: a,
  4419. type: "element",
  4420. tagName: b.toLowerCase(),
  4421. children: dtd.$empty[b] ? null : [],
  4422. });
  4423. if (c) {
  4424. for (var m, n = {}; (m = g.exec(c)); )
  4425. n[m[1].toLowerCase()] = j[m[1].toLowerCase()]
  4426. ? m[2] || m[3] || m[4]
  4427. : utils.unhtml(m[2] || m[3] || m[4]);
  4428. i.attrs = n;
  4429. }
  4430. return a.children.push(i), dtd.$empty[b] ? a : i;
  4431. }
  4432. function e(a, b) {
  4433. a.children.push(new k({ type: "comment", data: b, parentNode: a }));
  4434. }
  4435. var f = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,
  4436. g = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
  4437. h = {
  4438. b: 1,
  4439. code: 1,
  4440. i: 1,
  4441. u: 1,
  4442. strike: 1,
  4443. s: 1,
  4444. tt: 1,
  4445. strong: 1,
  4446. q: 1,
  4447. samp: 1,
  4448. em: 1,
  4449. span: 1,
  4450. sub: 1,
  4451. img: 1,
  4452. sup: 1,
  4453. font: 1,
  4454. big: 1,
  4455. small: 1,
  4456. iframe: 1,
  4457. a: 1,
  4458. br: 1,
  4459. pre: 1,
  4460. };
  4461. (a = a.replace(new RegExp(domUtils.fillChar, "g"), "")),
  4462. b ||
  4463. (a = a.replace(
  4464. new RegExp(
  4465. "[\\r\\t\\n" +
  4466. (b ? "" : " ") +
  4467. "]*</?(\\w+)\\s*(?:[^>]*)>[\\r\\t\\n" +
  4468. (b ? "" : " ") +
  4469. "]*",
  4470. "g"
  4471. ),
  4472. function(a, c) {
  4473. return c && h[c.toLowerCase()]
  4474. ? a.replace(/(^[\n\r]+)|([\n\r]+$)/g, "")
  4475. : a
  4476. .replace(new RegExp("^[\\r\\n" + (b ? "" : " ") + "]+"), "")
  4477. .replace(
  4478. new RegExp("[\\r\\n" + (b ? "" : " ") + "]+$"),
  4479. ""
  4480. );
  4481. }
  4482. ));
  4483. for (
  4484. var i,
  4485. j = { href: 1, src: 1 },
  4486. k = UE.uNode,
  4487. l = {
  4488. td: "tr",
  4489. tr: ["tbody", "thead", "tfoot"],
  4490. tbody: "table",
  4491. th: "tr",
  4492. thead: "table",
  4493. tfoot: "table",
  4494. caption: "table",
  4495. li: ["ul", "ol"],
  4496. dt: "dl",
  4497. dd: "dl",
  4498. option: "select",
  4499. },
  4500. m = { ol: "li", ul: "li" },
  4501. n = 0,
  4502. o = 0,
  4503. p = new k({ type: "root", children: [] }),
  4504. q = p;
  4505. (i = f.exec(a));
  4506. ) {
  4507. n = i.index;
  4508. try {
  4509. if ((n > o && c(q, a.slice(o, n)), i[3]))
  4510. dtd.$cdata[q.tagName]
  4511. ? c(q, i[0])
  4512. : (q = d(q, i[3].toLowerCase(), i[4]));
  4513. else if (i[1]) {
  4514. if ("root" != q.type)
  4515. if (dtd.$cdata[q.tagName] && !dtd.$cdata[i[1]]) c(q, i[0]);
  4516. else {
  4517. for (
  4518. var r = q;
  4519. "element" == q.type && q.tagName != i[1].toLowerCase();
  4520. )
  4521. if (((q = q.parentNode), "root" == q.type))
  4522. throw ((q = r), "break");
  4523. q = q.parentNode;
  4524. }
  4525. } else i[2] && e(q, i[2]);
  4526. } catch (s) {}
  4527. o = f.lastIndex;
  4528. }
  4529. return o < a.length && c(q, a.slice(o)), p;
  4530. }),
  4531. filterNode = (UE.filterNode = (function() {
  4532. function a(b, c) {
  4533. switch (b.type) {
  4534. case "text":
  4535. break;
  4536. case "element":
  4537. var d;
  4538. if ((d = c[b.tagName]))
  4539. if ("-" === d) b.parentNode.removeChild(b);
  4540. else if (utils.isFunction(d)) {
  4541. var e = b.parentNode,
  4542. f = b.getIndex();
  4543. if ((d(b), b.parentNode)) {
  4544. if (b.children)
  4545. for (var g, h = 0; (g = b.children[h]); )
  4546. a(g, c), g.parentNode && h++;
  4547. } else
  4548. for (var g, h = f; (g = e.children[h]); )
  4549. a(g, c), g.parentNode && h++;
  4550. } else {
  4551. var i = d.$;
  4552. if (i && b.attrs) {
  4553. var j,
  4554. k = {};
  4555. for (var l in i) {
  4556. if (
  4557. ((j = b.getAttr(l)), "style" == l && utils.isArray(i[l]))
  4558. ) {
  4559. var m = [];
  4560. utils.each(i[l], function(a) {
  4561. var c;
  4562. (c = b.getStyle(a)) && m.push(a + ":" + c);
  4563. }),
  4564. (j = m.join(";"));
  4565. }
  4566. j && (k[l] = j);
  4567. }
  4568. b.attrs = k;
  4569. }
  4570. if (b.children)
  4571. for (var g, h = 0; (g = b.children[h]); )
  4572. a(g, c), g.parentNode && h++;
  4573. }
  4574. else if (dtd.$cdata[b.tagName]) b.parentNode.removeChild(b);
  4575. else {
  4576. var e = b.parentNode,
  4577. f = b.getIndex();
  4578. b.parentNode.removeChild(b, !0);
  4579. for (var g, h = f; (g = e.children[h]); )
  4580. a(g, c), g.parentNode && h++;
  4581. }
  4582. break;
  4583. case "comment":
  4584. b.parentNode.removeChild(b);
  4585. }
  4586. }
  4587. return function(b, c) {
  4588. if (utils.isEmptyObject(c)) return b;
  4589. var d;
  4590. (d = c["-"]) &&
  4591. utils.each(d.split(" "), function(a) {
  4592. c[a] = "-";
  4593. });
  4594. for (var e, f = 0; (e = b.children[f]); ) a(e, c), e.parentNode && f++;
  4595. return b;
  4596. };
  4597. })());
  4598. UE.plugin = (function() {
  4599. var a = {};
  4600. return {
  4601. register: function(b, c, d, e) {
  4602. d && utils.isFunction(d) && ((e = d), (d = null)),
  4603. (a[b] = { optionName: d || b, execFn: c, afterDisabled: e });
  4604. },
  4605. load: function(b) {
  4606. utils.each(a, function(a) {
  4607. var c = a.execFn.call(b);
  4608. b.options[a.optionName] !== !1
  4609. ? c &&
  4610. utils.each(c, function(a, c) {
  4611. switch (c.toLowerCase()) {
  4612. case "shortcutkey":
  4613. b.addshortcutkey(a);
  4614. break;
  4615. case "bindevents":
  4616. utils.each(a, function(a, c) {
  4617. b.addListener(c, a);
  4618. });
  4619. break;
  4620. case "bindmultievents":
  4621. utils.each(utils.isArray(a) ? a : [a], function(a) {
  4622. var c = utils.trim(a.type).split(/\s+/);
  4623. utils.each(c, function(c) {
  4624. b.addListener(c, a.handler);
  4625. });
  4626. });
  4627. break;
  4628. case "commands":
  4629. utils.each(a, function(a, c) {
  4630. b.commands[c] = a;
  4631. });
  4632. break;
  4633. case "outputrule":
  4634. b.addOutputRule(a);
  4635. break;
  4636. case "inputrule":
  4637. b.addInputRule(a);
  4638. break;
  4639. case "defaultoptions":
  4640. b.setOpt(a);
  4641. }
  4642. })
  4643. : a.afterDisabled && a.afterDisabled.call(b);
  4644. }),
  4645. utils.each(UE.plugins, function(a) {
  4646. a.call(b);
  4647. });
  4648. },
  4649. run: function(b, c) {
  4650. var d = a[b];
  4651. d && d.exeFn.call(c);
  4652. },
  4653. };
  4654. })();
  4655. var keymap = (UE.keymap = {
  4656. Backspace: 8,
  4657. Tab: 9,
  4658. Enter: 13,
  4659. Shift: 16,
  4660. Control: 17,
  4661. Alt: 18,
  4662. CapsLock: 20,
  4663. Esc: 27,
  4664. Spacebar: 32,
  4665. PageUp: 33,
  4666. PageDown: 34,
  4667. End: 35,
  4668. Home: 36,
  4669. Left: 37,
  4670. Up: 38,
  4671. Right: 39,
  4672. Down: 40,
  4673. Insert: 45,
  4674. Del: 46,
  4675. NumLock: 144,
  4676. Cmd: 91,
  4677. "=": 187,
  4678. "-": 189,
  4679. b: 66,
  4680. i: 73,
  4681. z: 90,
  4682. y: 89,
  4683. v: 86,
  4684. x: 88,
  4685. s: 83,
  4686. n: 78,
  4687. }),
  4688. LocalStorage = (UE.LocalStorage = (function() {
  4689. function a() {
  4690. var a = document.createElement("div");
  4691. return (
  4692. (a.style.display = "none"),
  4693. a.addBehavior
  4694. ? (a.addBehavior("#default#userdata"),
  4695. {
  4696. getItem: function(b) {
  4697. var d = null;
  4698. try {
  4699. document.body.appendChild(a),
  4700. a.load(c),
  4701. (d = a.getAttribute(b)),
  4702. document.body.removeChild(a);
  4703. } catch (e) {}
  4704. return d;
  4705. },
  4706. setItem: function(b, d) {
  4707. document.body.appendChild(a),
  4708. a.setAttribute(b, d),
  4709. a.save(c),
  4710. document.body.removeChild(a);
  4711. },
  4712. removeItem: function(b) {
  4713. document.body.appendChild(a),
  4714. a.removeAttribute(b),
  4715. a.save(c),
  4716. document.body.removeChild(a);
  4717. },
  4718. })
  4719. : null
  4720. );
  4721. }
  4722. var b = window.localStorage || a() || null,
  4723. c = "localStorage";
  4724. return {
  4725. saveLocalData: function(a, c) {
  4726. return !(!b || !c) && (b.setItem(a, c), !0);
  4727. },
  4728. getLocalData: function(a) {
  4729. return b ? b.getItem(a) : null;
  4730. },
  4731. removeItem: function(a) {
  4732. b && b.removeItem(a);
  4733. },
  4734. };
  4735. })());
  4736. !(function() {
  4737. var a = "ueditor_preference";
  4738. (UE.Editor.prototype.setPreferences = function(b, c) {
  4739. var d = {};
  4740. utils.isString(b) ? (d[b] = c) : (d = b);
  4741. var e = LocalStorage.getLocalData(a);
  4742. e && (e = utils.str2json(e)) ? utils.extend(e, d) : (e = d),
  4743. e && LocalStorage.saveLocalData(a, utils.json2str(e));
  4744. }),
  4745. (UE.Editor.prototype.getPreferences = function(b) {
  4746. var c = LocalStorage.getLocalData(a);
  4747. return c && (c = utils.str2json(c)) ? (b ? c[b] : c) : null;
  4748. }),
  4749. (UE.Editor.prototype.removePreferences = function(b) {
  4750. var c = LocalStorage.getLocalData(a);
  4751. c && (c = utils.str2json(c)) && ((c[b] = void 0), delete c[b]),
  4752. c && LocalStorage.saveLocalData(a, utils.json2str(c));
  4753. });
  4754. })(),
  4755. (UE.plugins.defaultfilter = function() {
  4756. var a = this;
  4757. a.setOpt({ allowDivTransToP: !0, disabledTableInTable: !0 }),
  4758. a.addInputRule(function(b) {
  4759. function c(a) {
  4760. for (; a && "element" == a.type; ) {
  4761. if ("td" == a.tagName) return !0;
  4762. a = a.parentNode;
  4763. }
  4764. return !1;
  4765. }
  4766. var d,
  4767. e = this.options.allowDivTransToP;
  4768. b.traversal(function(b) {
  4769. if ("element" == b.type) {
  4770. if (
  4771. !dtd.$cdata[b.tagName] &&
  4772. a.options.autoClearEmptyNode &&
  4773. dtd.$inline[b.tagName] &&
  4774. !dtd.$empty[b.tagName] &&
  4775. (!b.attrs || utils.isEmptyObject(b.attrs))
  4776. )
  4777. return void (b.firstChild()
  4778. ? "span" != b.tagName ||
  4779. (b.attrs && !utils.isEmptyObject(b.attrs)) ||
  4780. b.parentNode.removeChild(b, !0)
  4781. : b.parentNode.removeChild(b));
  4782. switch (b.tagName) {
  4783. case "style":
  4784. case "script":
  4785. b.setAttr({
  4786. cdata_tag: b.tagName,
  4787. cdata_data: b.innerHTML() || "",
  4788. _ue_custom_node_: "true",
  4789. }),
  4790. (b.tagName = "div"),
  4791. b.innerHTML("");
  4792. break;
  4793. case "a":
  4794. (d = b.getAttr("href")) && b.setAttr("_href", d);
  4795. break;
  4796. case "img":
  4797. if ((d = b.getAttr("src")) && /^data:/.test(d)) {
  4798. b.parentNode.removeChild(b);
  4799. break;
  4800. }
  4801. b.setAttr("_src", b.getAttr("src"));
  4802. break;
  4803. case "span":
  4804. browser.webkit &&
  4805. (d = b.getStyle("white-space")) &&
  4806. /nowrap|normal/.test(d) &&
  4807. (b.setStyle("white-space", ""),
  4808. a.options.autoClearEmptyNode &&
  4809. utils.isEmptyObject(b.attrs) &&
  4810. b.parentNode.removeChild(b, !0)),
  4811. (d = b.getAttr("id")),
  4812. d &&
  4813. /^_baidu_bookmark_/i.test(d) &&
  4814. b.parentNode.removeChild(b);
  4815. break;
  4816. case "p":
  4817. (d = b.getAttr("align")) &&
  4818. (b.setAttr("align"), b.setStyle("text-align", d)),
  4819. utils.each(b.children, function(a) {
  4820. if ("element" == a.type && "p" == a.tagName) {
  4821. var c = a.nextSibling();
  4822. b.parentNode.insertAfter(a, b);
  4823. for (var d = a; c; ) {
  4824. var e = c.nextSibling();
  4825. b.parentNode.insertAfter(c, d), (d = c), (c = e);
  4826. }
  4827. return !1;
  4828. }
  4829. }),
  4830. b.firstChild() ||
  4831. b.innerHTML(browser.ie ? "&nbsp;" : "<br/>");
  4832. break;
  4833. case "div":
  4834. if (b.getAttr("cdata_tag")) break;
  4835. if (
  4836. ((d = b.getAttr("class")), d && /^line number\d+/.test(d))
  4837. )
  4838. break;
  4839. if (!e) break;
  4840. for (
  4841. var f, g = UE.uNode.createElement("p");
  4842. (f = b.firstChild());
  4843. )
  4844. "text" != f.type && UE.dom.dtd.$block[f.tagName]
  4845. ? g.firstChild()
  4846. ? (b.parentNode.insertBefore(g, b),
  4847. (g = UE.uNode.createElement("p")))
  4848. : b.parentNode.insertBefore(f, b)
  4849. : g.appendChild(f);
  4850. g.firstChild() && b.parentNode.insertBefore(g, b),
  4851. b.parentNode.removeChild(b);
  4852. break;
  4853. case "dl":
  4854. b.tagName = "ul";
  4855. break;
  4856. case "dt":
  4857. case "dd":
  4858. b.tagName = "li";
  4859. break;
  4860. case "li":
  4861. var h = b.getAttr("class");
  4862. (h && /list\-/.test(h)) || b.setAttr();
  4863. var i = b.getNodesByTagName("ol ul");
  4864. UE.utils.each(i, function(a) {
  4865. b.parentNode.insertAfter(a, b);
  4866. });
  4867. break;
  4868. case "td":
  4869. case "th":
  4870. case "caption":
  4871. (b.children && b.children.length) ||
  4872. b.appendChild(
  4873. browser.ie11below
  4874. ? UE.uNode.createText(" ")
  4875. : UE.uNode.createElement("br")
  4876. );
  4877. break;
  4878. case "table":
  4879. a.options.disabledTableInTable &&
  4880. c(b) &&
  4881. (b.parentNode.insertBefore(
  4882. UE.uNode.createText(b.innerText()),
  4883. b
  4884. ),
  4885. b.parentNode.removeChild(b));
  4886. }
  4887. }
  4888. });
  4889. }),
  4890. a.addOutputRule(function(b) {
  4891. var c;
  4892. b.traversal(function(b) {
  4893. if ("element" == b.type) {
  4894. if (
  4895. a.options.autoClearEmptyNode &&
  4896. dtd.$inline[b.tagName] &&
  4897. !dtd.$empty[b.tagName] &&
  4898. (!b.attrs || utils.isEmptyObject(b.attrs))
  4899. )
  4900. return void (b.firstChild()
  4901. ? "span" != b.tagName ||
  4902. (b.attrs && !utils.isEmptyObject(b.attrs)) ||
  4903. b.parentNode.removeChild(b, !0)
  4904. : b.parentNode.removeChild(b));
  4905. switch (b.tagName) {
  4906. case "div":
  4907. (c = b.getAttr("cdata_tag")) &&
  4908. ((b.tagName = c),
  4909. b.appendChild(UE.uNode.createText(b.getAttr("cdata_data"))),
  4910. b.setAttr({
  4911. cdata_tag: "",
  4912. cdata_data: "",
  4913. _ue_custom_node_: "",
  4914. }));
  4915. break;
  4916. case "a":
  4917. (c = b.getAttr("_href")) &&
  4918. b.setAttr({ href: utils.html(c), _href: "" });
  4919. break;
  4920. case "span":
  4921. (c = b.getAttr("id")),
  4922. c &&
  4923. /^_baidu_bookmark_/i.test(c) &&
  4924. b.parentNode.removeChild(b);
  4925. break;
  4926. case "img":
  4927. (c = b.getAttr("_src")) &&
  4928. b.setAttr({ src: b.getAttr("_src"), _src: "" });
  4929. }
  4930. }
  4931. });
  4932. });
  4933. }),
  4934. (UE.commands.inserthtml = {
  4935. execCommand: function(a, b, c) {
  4936. var d,
  4937. e,
  4938. f = this;
  4939. if (b && f.fireEvent("beforeinserthtml", b) !== !0) {
  4940. if (
  4941. ((d = f.selection.getRange()),
  4942. (e = d.document.createElement("div")),
  4943. (e.style.display = "inline"),
  4944. !c)
  4945. ) {
  4946. var g = UE.htmlparser(b);
  4947. f.options.filterRules && UE.filterNode(g, f.options.filterRules),
  4948. f.filterInputRule(g),
  4949. (b = g.toHtml());
  4950. }
  4951. if (((e.innerHTML = utils.trim(b)), !d.collapsed)) {
  4952. var h = d.startContainer;
  4953. if (
  4954. (domUtils.isFillChar(h) && d.setStartBefore(h),
  4955. (h = d.endContainer),
  4956. domUtils.isFillChar(h) && d.setEndAfter(h),
  4957. d.txtToElmBoundary(),
  4958. d.endContainer &&
  4959. 1 == d.endContainer.nodeType &&
  4960. ((h = d.endContainer.childNodes[d.endOffset]),
  4961. h && domUtils.isBr(h) && d.setEndAfter(h)),
  4962. 0 == d.startOffset &&
  4963. ((h = d.startContainer),
  4964. domUtils.isBoundaryNode(h, "firstChild") &&
  4965. ((h = d.endContainer),
  4966. d.endOffset ==
  4967. (3 == h.nodeType
  4968. ? h.nodeValue.length
  4969. : h.childNodes.length) &&
  4970. domUtils.isBoundaryNode(h, "lastChild") &&
  4971. ((f.body.innerHTML =
  4972. "<p>" + (browser.ie ? "" : "<br/>") + "</p>"),
  4973. d.setStart(f.body.firstChild, 0).collapse(!0)))),
  4974. !d.collapsed && d.deleteContents(),
  4975. 1 == d.startContainer.nodeType)
  4976. ) {
  4977. var i,
  4978. j = d.startContainer.childNodes[d.startOffset];
  4979. if (
  4980. j &&
  4981. domUtils.isBlockElm(j) &&
  4982. (i = j.previousSibling) &&
  4983. domUtils.isBlockElm(i)
  4984. ) {
  4985. for (
  4986. d.setEnd(i, i.childNodes.length).collapse();
  4987. j.firstChild;
  4988. )
  4989. i.appendChild(j.firstChild);
  4990. domUtils.remove(j);
  4991. }
  4992. }
  4993. }
  4994. var j,
  4995. k,
  4996. i,
  4997. l,
  4998. m,
  4999. n = 0;
  5000. d.inFillChar() &&
  5001. ((j = d.startContainer),
  5002. domUtils.isFillChar(j)
  5003. ? (d.setStartBefore(j).collapse(!0), domUtils.remove(j))
  5004. : domUtils.isFillChar(j, !0) &&
  5005. ((j.nodeValue = j.nodeValue.replace(fillCharReg, "")),
  5006. d.startOffset--,
  5007. d.collapsed && d.collapse(!0)));
  5008. var o = domUtils.findParentByTagName(d.startContainer, "li", !0);
  5009. if (o) {
  5010. for (var p, q; (j = e.firstChild); ) {
  5011. for (
  5012. ;
  5013. j &&
  5014. (3 == j.nodeType ||
  5015. !domUtils.isBlockElm(j) ||
  5016. "HR" == j.tagName);
  5017. )
  5018. (p = j.nextSibling),
  5019. d.insertNode(j).collapse(),
  5020. (q = j),
  5021. (j = p);
  5022. if (j)
  5023. if (/^(ol|ul)$/i.test(j.tagName)) {
  5024. for (; j.firstChild; )
  5025. (q = j.firstChild),
  5026. domUtils.insertAfter(o, j.firstChild),
  5027. (o = o.nextSibling);
  5028. domUtils.remove(j);
  5029. } else {
  5030. var r;
  5031. (p = j.nextSibling),
  5032. (r = f.document.createElement("li")),
  5033. domUtils.insertAfter(o, r),
  5034. r.appendChild(j),
  5035. (q = j),
  5036. (j = p),
  5037. (o = r);
  5038. }
  5039. }
  5040. (o = domUtils.findParentByTagName(d.startContainer, "li", !0)),
  5041. domUtils.isEmptyBlock(o) && domUtils.remove(o),
  5042. q &&
  5043. d
  5044. .setStartAfter(q)
  5045. .collapse(!0)
  5046. .select(!0);
  5047. } else {
  5048. for (; (j = e.firstChild); ) {
  5049. if (n) {
  5050. for (
  5051. var s = f.document.createElement("p");
  5052. j && (3 == j.nodeType || !dtd.$block[j.tagName]);
  5053. )
  5054. (m = j.nextSibling), s.appendChild(j), (j = m);
  5055. s.firstChild && (j = s);
  5056. }
  5057. if (
  5058. (d.insertNode(j),
  5059. (m = j.nextSibling),
  5060. !n &&
  5061. j.nodeType == domUtils.NODE_ELEMENT &&
  5062. domUtils.isBlockElm(j) &&
  5063. ((k = domUtils.findParent(j, function(a) {
  5064. return domUtils.isBlockElm(a);
  5065. })),
  5066. k &&
  5067. "body" != k.tagName.toLowerCase() &&
  5068. (!dtd[k.tagName][j.nodeName] || j.parentNode !== k)))
  5069. ) {
  5070. if (dtd[k.tagName][j.nodeName])
  5071. for (l = j.parentNode; l !== k; ) (i = l), (l = l.parentNode);
  5072. else i = k;
  5073. domUtils.breakParent(j, i || l);
  5074. var i = j.previousSibling;
  5075. domUtils.trimWhiteTextNode(i),
  5076. i.childNodes.length || domUtils.remove(i),
  5077. !browser.ie &&
  5078. (p = j.nextSibling) &&
  5079. domUtils.isBlockElm(p) &&
  5080. p.lastChild &&
  5081. !domUtils.isBr(p.lastChild) &&
  5082. p.appendChild(f.document.createElement("br")),
  5083. (n = 1);
  5084. }
  5085. var p = j.nextSibling;
  5086. if (!e.firstChild && p && domUtils.isBlockElm(p)) {
  5087. d.setStart(p, 0).collapse(!0);
  5088. break;
  5089. }
  5090. d.setEndAfter(j).collapse();
  5091. }
  5092. if (
  5093. ((j = d.startContainer),
  5094. m && domUtils.isBr(m) && domUtils.remove(m),
  5095. domUtils.isBlockElm(j) && domUtils.isEmptyNode(j))
  5096. )
  5097. if ((m = j.nextSibling))
  5098. domUtils.remove(j),
  5099. 1 == m.nodeType &&
  5100. dtd.$block[m.tagName] &&
  5101. d
  5102. .setStart(m, 0)
  5103. .collapse(!0)
  5104. .shrinkBoundary();
  5105. else
  5106. try {
  5107. j.innerHTML = browser.ie ? domUtils.fillChar : "<br/>";
  5108. } catch (t) {
  5109. d.setStartBefore(j), domUtils.remove(j);
  5110. }
  5111. try {
  5112. d.select(!0);
  5113. } catch (t) {}
  5114. }
  5115. setTimeout(function() {
  5116. (d = f.selection.getRange()), f.fireEvent("afterinserthtml", b);
  5117. }, 200);
  5118. }
  5119. },
  5120. }),
  5121. (UE.plugins.autotypeset = function() {
  5122. function a(a, b) {
  5123. return a && 3 != a.nodeType
  5124. ? domUtils.isBr(a)
  5125. ? 1
  5126. : a && a.parentNode && l[a.tagName.toLowerCase()]
  5127. ? (g && g.contains(a)) || a.getAttribute("pagebreak")
  5128. ? 0
  5129. : b
  5130. ? !domUtils.isEmptyBlock(a)
  5131. : domUtils.isEmptyBlock(
  5132. a,
  5133. new RegExp("[\\s" + domUtils.fillChar + "]", "g")
  5134. )
  5135. : void 0
  5136. : 0;
  5137. }
  5138. function b(a) {
  5139. a.style.cssText ||
  5140. (domUtils.removeAttributes(a, ["style"]),
  5141. "span" == a.tagName.toLowerCase() &&
  5142. domUtils.hasNoAttributes(a) &&
  5143. domUtils.remove(a, !0));
  5144. }
  5145. function c(c, f) {
  5146. var h,
  5147. l = this;
  5148. if (f) {
  5149. if (!i.pasteFilter) return;
  5150. (h = l.document.createElement("div")), (h.innerHTML = f.html);
  5151. } else h = l.document.body;
  5152. for (
  5153. var m, n = domUtils.getElementsByTagName(h, "*"), o = 0;
  5154. (m = n[o++]);
  5155. )
  5156. if (l.fireEvent("excludeNodeinautotype", m) !== !0) {
  5157. if (
  5158. (i.clearFontSize &&
  5159. m.style.fontSize &&
  5160. (domUtils.removeStyle(m, "font-size"), b(m)),
  5161. i.clearFontFamily &&
  5162. m.style.fontFamily &&
  5163. (domUtils.removeStyle(m, "font-family"), b(m)),
  5164. a(m))
  5165. ) {
  5166. if (i.mergeEmptyline)
  5167. for (
  5168. var p, q = m.nextSibling, r = domUtils.isBr(m);
  5169. a(q) &&
  5170. ((p = q),
  5171. (q = p.nextSibling),
  5172. !r || (q && (!q || domUtils.isBr(q))));
  5173. )
  5174. domUtils.remove(p);
  5175. if (
  5176. i.removeEmptyline &&
  5177. domUtils.inDoc(m, h) &&
  5178. !k[m.parentNode.tagName.toLowerCase()]
  5179. ) {
  5180. if (
  5181. domUtils.isBr(m) &&
  5182. ((q = m.nextSibling), q && !domUtils.isBr(q))
  5183. )
  5184. continue;
  5185. domUtils.remove(m);
  5186. continue;
  5187. }
  5188. }
  5189. if (
  5190. (a(m, !0) &&
  5191. "SPAN" != m.tagName &&
  5192. (i.indent && (m.style.textIndent = i.indentValue),
  5193. i.textAlign && (m.style.textAlign = i.textAlign)),
  5194. i.removeClass && m.className && !j[m.className.toLowerCase()])
  5195. ) {
  5196. if (g && g.contains(m)) continue;
  5197. domUtils.removeAttributes(m, ["class"]);
  5198. }
  5199. if (
  5200. i.imageBlockLine &&
  5201. "img" == m.tagName.toLowerCase() &&
  5202. !m.getAttribute("emotion")
  5203. )
  5204. if (f) {
  5205. var s = m;
  5206. switch (i.imageBlockLine) {
  5207. case "left":
  5208. case "right":
  5209. case "none":
  5210. for (
  5211. var p, t, q, u = s.parentNode;
  5212. dtd.$inline[u.tagName] || "A" == u.tagName;
  5213. )
  5214. u = u.parentNode;
  5215. if (
  5216. ((p = u),
  5217. "P" == p.tagName &&
  5218. "center" == domUtils.getStyle(p, "text-align") &&
  5219. !domUtils.isBody(p) &&
  5220. 1 ==
  5221. domUtils.getChildCount(p, function(a) {
  5222. return (
  5223. !domUtils.isBr(a) && !domUtils.isWhitespace(a)
  5224. );
  5225. }))
  5226. )
  5227. if (
  5228. ((t = p.previousSibling),
  5229. (q = p.nextSibling),
  5230. t &&
  5231. q &&
  5232. 1 == t.nodeType &&
  5233. 1 == q.nodeType &&
  5234. t.tagName == q.tagName &&
  5235. domUtils.isBlockElm(t))
  5236. ) {
  5237. for (t.appendChild(p.firstChild); q.firstChild; )
  5238. t.appendChild(q.firstChild);
  5239. domUtils.remove(p), domUtils.remove(q);
  5240. } else domUtils.setStyle(p, "text-align", "");
  5241. domUtils.setStyle(s, "float", i.imageBlockLine);
  5242. break;
  5243. case "center":
  5244. if ("center" != l.queryCommandValue("imagefloat")) {
  5245. for (
  5246. u = s.parentNode,
  5247. domUtils.setStyle(s, "float", "none"),
  5248. p = s;
  5249. u &&
  5250. 1 ==
  5251. domUtils.getChildCount(u, function(a) {
  5252. return (
  5253. !domUtils.isBr(a) && !domUtils.isWhitespace(a)
  5254. );
  5255. }) &&
  5256. (dtd.$inline[u.tagName] || "A" == u.tagName);
  5257. )
  5258. (p = u), (u = u.parentNode);
  5259. var v = l.document.createElement("p");
  5260. domUtils.setAttributes(v, { style: "text-align:center" }),
  5261. p.parentNode.insertBefore(v, p),
  5262. v.appendChild(p),
  5263. domUtils.setStyle(p, "float", "");
  5264. }
  5265. }
  5266. } else {
  5267. var w = l.selection.getRange();
  5268. w.selectNode(m).select(),
  5269. l.execCommand("imagefloat", i.imageBlockLine);
  5270. }
  5271. i.removeEmptyNode &&
  5272. i.removeTagNames[m.tagName.toLowerCase()] &&
  5273. domUtils.hasNoAttributes(m) &&
  5274. domUtils.isEmptyBlock(m) &&
  5275. domUtils.remove(m);
  5276. }
  5277. if (i.tobdc) {
  5278. var x = UE.htmlparser(h.innerHTML);
  5279. x.traversal(function(a) {
  5280. "text" == a.type && (a.data = e(a.data));
  5281. }),
  5282. (h.innerHTML = x.toHtml());
  5283. }
  5284. if (i.bdc2sb) {
  5285. var x = UE.htmlparser(h.innerHTML);
  5286. x.traversal(function(a) {
  5287. "text" == a.type && (a.data = d(a.data));
  5288. }),
  5289. (h.innerHTML = x.toHtml());
  5290. }
  5291. f && (f.html = h.innerHTML);
  5292. }
  5293. function d(a) {
  5294. for (var b = "", c = 0; c < a.length; c++) {
  5295. var d = a.charCodeAt(c);
  5296. b +=
  5297. d >= 65281 && d <= 65373
  5298. ? String.fromCharCode(a.charCodeAt(c) - 65248)
  5299. : 12288 == d
  5300. ? String.fromCharCode(a.charCodeAt(c) - 12288 + 32)
  5301. : a.charAt(c);
  5302. }
  5303. return b;
  5304. }
  5305. function e(a) {
  5306. a = utils.html(a);
  5307. for (var b = "", c = 0; c < a.length; c++)
  5308. b +=
  5309. 32 == a.charCodeAt(c)
  5310. ? String.fromCharCode(12288)
  5311. : a.charCodeAt(c) < 127
  5312. ? String.fromCharCode(a.charCodeAt(c) + 65248)
  5313. : a.charAt(c);
  5314. return b;
  5315. }
  5316. function f() {
  5317. var a = h.getPreferences("autotypeset");
  5318. utils.extend(h.options.autotypeset, a);
  5319. }
  5320. this.setOpt({
  5321. autotypeset: {
  5322. mergeEmptyline: !0,
  5323. removeClass: !0,
  5324. removeEmptyline: !1,
  5325. textAlign: "left",
  5326. imageBlockLine: "center",
  5327. pasteFilter: !1,
  5328. clearFontSize: !1,
  5329. clearFontFamily: !1,
  5330. removeEmptyNode: !1,
  5331. removeTagNames: utils.extend({ div: 1 }, dtd.$removeEmpty),
  5332. indent: !1,
  5333. indentValue: "2em",
  5334. bdc2sb: !1,
  5335. tobdc: !1,
  5336. },
  5337. });
  5338. var g,
  5339. h = this,
  5340. i = h.options.autotypeset,
  5341. j = { selectTdClass: 1, pagebreak: 1, anchorclass: 1 },
  5342. k = { li: 1 },
  5343. l = {
  5344. div: 1,
  5345. p: 1,
  5346. blockquote: 1,
  5347. center: 1,
  5348. h1: 1,
  5349. h2: 1,
  5350. h3: 1,
  5351. h4: 1,
  5352. h5: 1,
  5353. h6: 1,
  5354. span: 1,
  5355. };
  5356. i &&
  5357. (f(),
  5358. i.pasteFilter && h.addListener("beforepaste", c),
  5359. (h.commands.autotypeset = {
  5360. execCommand: function() {
  5361. h.removeListener("beforepaste", c),
  5362. i.pasteFilter && h.addListener("beforepaste", c),
  5363. c.call(h);
  5364. },
  5365. }));
  5366. }),
  5367. UE.plugin.register("autosubmit", function() {
  5368. return {
  5369. shortcutkey: { autosubmit: "ctrl+13" },
  5370. commands: {
  5371. autosubmit: {
  5372. execCommand: function() {
  5373. var a = this,
  5374. b = domUtils.findParentByTagName(a.iframe, "form", !1);
  5375. if (b) {
  5376. if (a.fireEvent("beforesubmit") === !1) return;
  5377. a.sync(), b.submit();
  5378. }
  5379. },
  5380. },
  5381. },
  5382. };
  5383. }),
  5384. UE.plugin.register("background", function() {
  5385. function a(a) {
  5386. var b = {},
  5387. c = a.split(";");
  5388. return (
  5389. utils.each(c, function(a) {
  5390. var c = a.indexOf(":"),
  5391. d = utils.trim(a.substr(0, c)).toLowerCase();
  5392. d && (b[d] = utils.trim(a.substr(c + 1) || ""));
  5393. }),
  5394. b
  5395. );
  5396. }
  5397. function b(a) {
  5398. if (a) {
  5399. var b = [];
  5400. for (var c in a) a.hasOwnProperty(c) && b.push(c + ":" + a[c] + "; ");
  5401. utils.cssRule(
  5402. e,
  5403. b.length ? "body{" + b.join("") + "}" : "",
  5404. d.document
  5405. );
  5406. } else utils.cssRule(e, "", d.document);
  5407. }
  5408. var c,
  5409. d = this,
  5410. e = "editor_background",
  5411. f = new RegExp("body[\\s]*\\{(.+)\\}", "i"),
  5412. g = d.hasContents;
  5413. return (
  5414. (d.hasContents = function() {
  5415. return !!d.queryCommandValue("background") || g.apply(d, arguments);
  5416. }),
  5417. {
  5418. bindEvents: {
  5419. getAllHtml: function(a, b) {
  5420. var c = this.body,
  5421. e = domUtils.getComputedStyle(c, "background-image"),
  5422. f = "";
  5423. f =
  5424. e.indexOf(d.options.imagePath) > 0
  5425. ? e
  5426. .substring(e.indexOf(d.options.imagePath), e.length - 1)
  5427. .replace(/"|\(|\)/gi, "")
  5428. : "none" != e
  5429. ? e.replace(/url\("?|"?\)/gi, "")
  5430. : "";
  5431. var g = '<style type="text/css">body{',
  5432. h = {
  5433. "background-color":
  5434. domUtils.getComputedStyle(c, "background-color") ||
  5435. "#ffffff",
  5436. "background-image": f ? "url(" + f + ")" : "",
  5437. "background-repeat":
  5438. domUtils.getComputedStyle(c, "background-repeat") || "",
  5439. "background-position": browser.ie
  5440. ? domUtils.getComputedStyle(c, "background-position-x") +
  5441. " " +
  5442. domUtils.getComputedStyle(c, "background-position-y")
  5443. : domUtils.getComputedStyle(c, "background-position"),
  5444. height: domUtils.getComputedStyle(c, "height"),
  5445. };
  5446. for (var i in h)
  5447. h.hasOwnProperty(i) && (g += i + ":" + h[i] + "; ");
  5448. (g += "}</style> "), b.push(g);
  5449. },
  5450. aftersetcontent: function() {
  5451. 0 == c && b();
  5452. },
  5453. },
  5454. inputRule: function(d) {
  5455. (c = !1),
  5456. utils.each(d.getNodesByTagName("p"), function(d) {
  5457. var e = d.getAttr("data-background");
  5458. e && ((c = !0), b(a(e)), d.parentNode.removeChild(d));
  5459. });
  5460. },
  5461. outputRule: function(a) {
  5462. var b = this,
  5463. c = (utils.cssRule(e, b.document) || "")
  5464. .replace(/[\n\r]+/g, "")
  5465. .match(f);
  5466. c &&
  5467. a.appendChild(
  5468. UE.uNode.createElement(
  5469. '<p style="display:none;" data-background="' +
  5470. utils.trim(c[1].replace(/"/g, "").replace(/[\s]+/g, " ")) +
  5471. '"><br/></p>'
  5472. )
  5473. );
  5474. },
  5475. commands: {
  5476. background: {
  5477. execCommand: function(a, c) {
  5478. b(c);
  5479. },
  5480. queryCommandValue: function() {
  5481. var b = this,
  5482. c = (utils.cssRule(e, b.document) || "")
  5483. .replace(/[\n\r]+/g, "")
  5484. .match(f);
  5485. return c ? a(c[1]) : null;
  5486. },
  5487. notNeedUndo: !0,
  5488. },
  5489. },
  5490. }
  5491. );
  5492. }),
  5493. (UE.commands.imagefloat = {
  5494. execCommand: function(a, b) {
  5495. var c = this,
  5496. d = c.selection.getRange();
  5497. if (!d.collapsed) {
  5498. var e = d.getClosedNode();
  5499. if (e && "IMG" == e.tagName)
  5500. switch (b) {
  5501. case "left":
  5502. case "right":
  5503. case "none":
  5504. for (
  5505. var f, g, h, i = e.parentNode;
  5506. dtd.$inline[i.tagName] || "A" == i.tagName;
  5507. )
  5508. i = i.parentNode;
  5509. if (
  5510. ((f = i),
  5511. "P" == f.tagName &&
  5512. "center" == domUtils.getStyle(f, "text-align"))
  5513. ) {
  5514. if (
  5515. !domUtils.isBody(f) &&
  5516. 1 ==
  5517. domUtils.getChildCount(f, function(a) {
  5518. return !domUtils.isBr(a) && !domUtils.isWhitespace(a);
  5519. })
  5520. )
  5521. if (
  5522. ((g = f.previousSibling),
  5523. (h = f.nextSibling),
  5524. g &&
  5525. h &&
  5526. 1 == g.nodeType &&
  5527. 1 == h.nodeType &&
  5528. g.tagName == h.tagName &&
  5529. domUtils.isBlockElm(g))
  5530. ) {
  5531. for (g.appendChild(f.firstChild); h.firstChild; )
  5532. g.appendChild(h.firstChild);
  5533. domUtils.remove(f), domUtils.remove(h);
  5534. } else domUtils.setStyle(f, "text-align", "");
  5535. d.selectNode(e).select();
  5536. }
  5537. domUtils.setStyle(e, "float", "none" == b ? "" : b),
  5538. "none" == b && domUtils.removeAttributes(e, "align");
  5539. break;
  5540. case "center":
  5541. if ("center" != c.queryCommandValue("imagefloat")) {
  5542. for (
  5543. i = e.parentNode,
  5544. domUtils.setStyle(e, "float", ""),
  5545. domUtils.removeAttributes(e, "align"),
  5546. f = e;
  5547. i &&
  5548. 1 ==
  5549. domUtils.getChildCount(i, function(a) {
  5550. return !domUtils.isBr(a) && !domUtils.isWhitespace(a);
  5551. }) &&
  5552. (dtd.$inline[i.tagName] || "A" == i.tagName);
  5553. )
  5554. (f = i), (i = i.parentNode);
  5555. d.setStartBefore(f).setCursor(!1),
  5556. (i = c.document.createElement("div")),
  5557. i.appendChild(f),
  5558. domUtils.setStyle(f, "float", ""),
  5559. c.execCommand(
  5560. "insertHtml",
  5561. '<p id="_img_parent_tmp" style="text-align:center">' +
  5562. i.innerHTML +
  5563. "</p>"
  5564. ),
  5565. (f = c.document.getElementById("_img_parent_tmp")),
  5566. f.removeAttribute("id"),
  5567. (f = f.firstChild),
  5568. d.selectNode(f).select(),
  5569. (h = f.parentNode.nextSibling),
  5570. h && domUtils.isEmptyNode(h) && domUtils.remove(h);
  5571. }
  5572. }
  5573. }
  5574. },
  5575. queryCommandValue: function() {
  5576. var a,
  5577. b,
  5578. c = this.selection.getRange();
  5579. return c.collapsed
  5580. ? "none"
  5581. : ((a = c.getClosedNode()),
  5582. a && 1 == a.nodeType && "IMG" == a.tagName
  5583. ? ((b =
  5584. domUtils.getComputedStyle(a, "float") ||
  5585. a.getAttribute("align")),
  5586. "none" == b &&
  5587. (b =
  5588. "center" ==
  5589. domUtils.getComputedStyle(a.parentNode, "text-align")
  5590. ? "center"
  5591. : b),
  5592. { left: 1, right: 1, center: 1 }[b] ? b : "none")
  5593. : "none");
  5594. },
  5595. queryCommandState: function() {
  5596. var a,
  5597. b = this.selection.getRange();
  5598. return b.collapsed
  5599. ? -1
  5600. : ((a = b.getClosedNode()),
  5601. a && 1 == a.nodeType && "IMG" == a.tagName ? 0 : -1);
  5602. },
  5603. }),
  5604. (UE.commands.insertimage = {
  5605. execCommand: function(a, b) {
  5606. function c(a) {
  5607. utils.each("width,height,border,hspace,vspace".split(","), function(
  5608. b
  5609. ) {
  5610. a[b] && (a[b] = parseInt(a[b], 10) || 0);
  5611. }),
  5612. utils.each("src,_src".split(","), function(b) {
  5613. a[b] && (a[b] = utils.unhtmlForUrl(a[b]));
  5614. }),
  5615. utils.each("title,alt".split(","), function(b) {
  5616. a[b] && (a[b] = utils.unhtml(a[b]));
  5617. });
  5618. }
  5619. if (((b = utils.isArray(b) ? b : [b]), b.length)) {
  5620. var d = this,
  5621. e = d.selection.getRange(),
  5622. f = e.getClosedNode();
  5623. if (d.fireEvent("beforeinsertimage", b) !== !0) {
  5624. if (
  5625. !f ||
  5626. !/img/i.test(f.tagName) ||
  5627. ("edui-faked-video" == f.className &&
  5628. f.className.indexOf("edui-upload-video") == -1) ||
  5629. f.getAttribute("word_img")
  5630. ) {
  5631. var g,
  5632. h = [],
  5633. i = "";
  5634. if (((g = b[0]), 1 == b.length))
  5635. c(g),
  5636. (i =
  5637. '<img src="' +
  5638. g.src +
  5639. '" ' +
  5640. (g._src ? ' _src="' + g._src + '" ' : "") +
  5641. (g.width ? 'width="' + g.width + '" ' : "") +
  5642. (g.height ? ' height="' + g.height + '" ' : "") +
  5643. ("left" == g.floatStyle || "right" == g.floatStyle
  5644. ? ' style="float:' + g.floatStyle + ';"'
  5645. : "") +
  5646. (g.title && "" != g.title
  5647. ? ' title="' + g.title + '"'
  5648. : "") +
  5649. (g.border && "0" != g.border
  5650. ? ' border="' + g.border + '"'
  5651. : "") +
  5652. (g.alt && "" != g.alt ? ' alt="' + g.alt + '"' : "") +
  5653. (g.hspace && "0" != g.hspace
  5654. ? ' hspace = "' + g.hspace + '"'
  5655. : "") +
  5656. (g.vspace && "0" != g.vspace
  5657. ? ' vspace = "' + g.vspace + '"'
  5658. : "") +
  5659. "/>"),
  5660. "center" == g.floatStyle &&
  5661. (i = '<p style="text-align: center">' + i + "</p>"),
  5662. h.push(i);
  5663. else
  5664. for (var j = 0; (g = b[j++]); )
  5665. c(g),
  5666. (i =
  5667. "<p " +
  5668. ("center" == g.floatStyle
  5669. ? 'style="text-align: center" '
  5670. : "") +
  5671. '><img src="' +
  5672. g.src +
  5673. '" ' +
  5674. (g.width ? 'width="' + g.width + '" ' : "") +
  5675. (g._src ? ' _src="' + g._src + '" ' : "") +
  5676. (g.height ? ' height="' + g.height + '" ' : "") +
  5677. ' style="' +
  5678. (g.floatStyle && "center" != g.floatStyle
  5679. ? "float:" + g.floatStyle + ";"
  5680. : "") +
  5681. (g.border || "") +
  5682. '" ' +
  5683. (g.title ? ' title="' + g.title + '"' : "") +
  5684. " /></p>"),
  5685. h.push(i);
  5686. d.execCommand("insertHtml", h.join(""));
  5687. } else {
  5688. var k = b.shift(),
  5689. l = k.floatStyle;
  5690. delete k.floatStyle,
  5691. domUtils.setAttributes(f, k),
  5692. d.execCommand("imagefloat", l),
  5693. b.length > 0 &&
  5694. (e.setStartAfter(f).setCursor(!1, !0),
  5695. d.execCommand("insertimage", b));
  5696. }
  5697. d.fireEvent("afterinsertimage", b);
  5698. }
  5699. }
  5700. },
  5701. }),
  5702. (UE.plugins.justify = function() {
  5703. var a = domUtils.isBlockElm,
  5704. b = { left: 1, right: 1, center: 1, justify: 1 },
  5705. c = function(b, c) {
  5706. var d = b.createBookmark(),
  5707. e = function(a) {
  5708. return 1 == a.nodeType
  5709. ? "br" != a.tagName.toLowerCase() && !domUtils.isBookmarkNode(a)
  5710. : !domUtils.isWhitespace(a);
  5711. };
  5712. b.enlarge(!0);
  5713. for (
  5714. var f,
  5715. g = b.createBookmark(),
  5716. h = domUtils.getNextDomNode(g.start, !1, e),
  5717. i = b.cloneRange();
  5718. h &&
  5719. !(domUtils.getPosition(h, g.end) & domUtils.POSITION_FOLLOWING);
  5720. )
  5721. if (3 != h.nodeType && a(h)) h = domUtils.getNextDomNode(h, !0, e);
  5722. else {
  5723. for (i.setStartBefore(h); h && h !== g.end && !a(h); )
  5724. (f = h),
  5725. (h = domUtils.getNextDomNode(h, !1, null, function(b) {
  5726. return !a(b);
  5727. }));
  5728. i.setEndAfter(f);
  5729. var j = i.getCommonAncestor();
  5730. if (!domUtils.isBody(j) && a(j))
  5731. domUtils.setStyles(
  5732. j,
  5733. utils.isString(c) ? { "text-align": c } : c
  5734. ),
  5735. (h = j);
  5736. else {
  5737. var k = b.document.createElement("p");
  5738. domUtils.setStyles(
  5739. k,
  5740. utils.isString(c) ? { "text-align": c } : c
  5741. );
  5742. var l = i.extractContents();
  5743. k.appendChild(l), i.insertNode(k), (h = k);
  5744. }
  5745. h = domUtils.getNextDomNode(h, !1, e);
  5746. }
  5747. return b.moveToBookmark(g).moveToBookmark(d);
  5748. };
  5749. UE.commands.justify = {
  5750. execCommand: function(a, b) {
  5751. var d,
  5752. e = this.selection.getRange();
  5753. return (
  5754. e.collapsed &&
  5755. ((d = this.document.createTextNode("p")), e.insertNode(d)),
  5756. c(e, b),
  5757. d && (e.setStartBefore(d).collapse(!0), domUtils.remove(d)),
  5758. e.select(),
  5759. !0
  5760. );
  5761. },
  5762. queryCommandValue: function() {
  5763. var a = this.selection.getStart(),
  5764. c = domUtils.getComputedStyle(a, "text-align");
  5765. return b[c] ? c : "left";
  5766. },
  5767. queryCommandState: function() {
  5768. var a = this.selection.getStart(),
  5769. b =
  5770. a && domUtils.findParentByTagName(a, ["td", "th", "caption"], !0);
  5771. return b ? -1 : 0;
  5772. },
  5773. };
  5774. }),
  5775. (UE.plugins.font = function() {
  5776. function a(a) {
  5777. for (
  5778. var b;
  5779. (b = a.parentNode) &&
  5780. "SPAN" == b.tagName &&
  5781. 1 ==
  5782. domUtils.getChildCount(b, function(a) {
  5783. return !domUtils.isBookmarkNode(a) && !domUtils.isBr(a);
  5784. });
  5785. )
  5786. (b.style.cssText += a.style.cssText), domUtils.remove(a, !0), (a = b);
  5787. }
  5788. function b(a, b, c) {
  5789. if (
  5790. g[b] &&
  5791. (a.adjustmentBoundary(),
  5792. !a.collapsed && 1 == a.startContainer.nodeType)
  5793. ) {
  5794. var d = a.startContainer.childNodes[a.startOffset];
  5795. if (d && domUtils.isTagNode(d, "span")) {
  5796. var e = a.createBookmark();
  5797. utils.each(domUtils.getElementsByTagName(d, "span"), function(a) {
  5798. a.parentNode &&
  5799. !domUtils.isBookmarkNode(a) &&
  5800. (("backcolor" == b &&
  5801. domUtils
  5802. .getComputedStyle(a, "background-color")
  5803. .toLowerCase() === c) ||
  5804. (domUtils.removeStyle(a, g[b]),
  5805. 0 == a.style.cssText.replace(/^\s+$/, "").length &&
  5806. domUtils.remove(a, !0)));
  5807. }),
  5808. a.moveToBookmark(e);
  5809. }
  5810. }
  5811. }
  5812. function c(c, d, e) {
  5813. var f,
  5814. g = c.collapsed,
  5815. h = c.createBookmark();
  5816. if (g)
  5817. for (f = h.start.parentNode; dtd.$inline[f.tagName]; )
  5818. f = f.parentNode;
  5819. else f = domUtils.getCommonAncestor(h.start, h.end);
  5820. utils.each(domUtils.getElementsByTagName(f, "span"), function(b) {
  5821. if (b.parentNode && !domUtils.isBookmarkNode(b)) {
  5822. if (/\s*border\s*:\s*none;?\s*/i.test(b.style.cssText))
  5823. return void (/^\s*border\s*:\s*none;?\s*$/.test(b.style.cssText)
  5824. ? domUtils.remove(b, !0)
  5825. : domUtils.removeStyle(b, "border"));
  5826. if (
  5827. (/border/i.test(b.style.cssText) &&
  5828. "SPAN" == b.parentNode.tagName &&
  5829. /border/i.test(b.parentNode.style.cssText) &&
  5830. (b.style.cssText = b.style.cssText.replace(
  5831. /border[^:]*:[^;]+;?/gi,
  5832. ""
  5833. )),
  5834. "fontborder" != d || "none" != e)
  5835. )
  5836. for (
  5837. var c = b.nextSibling;
  5838. c && 1 == c.nodeType && "SPAN" == c.tagName;
  5839. )
  5840. if (domUtils.isBookmarkNode(c) && "fontborder" == d)
  5841. b.appendChild(c), (c = b.nextSibling);
  5842. else {
  5843. if (
  5844. (c.style.cssText == b.style.cssText &&
  5845. (domUtils.moveChild(c, b), domUtils.remove(c)),
  5846. b.nextSibling === c)
  5847. )
  5848. break;
  5849. c = b.nextSibling;
  5850. }
  5851. if ((a(b), browser.ie && browser.version > 8)) {
  5852. var f = domUtils.findParent(b, function(a) {
  5853. return (
  5854. "SPAN" == a.tagName &&
  5855. /background-color/.test(a.style.cssText)
  5856. );
  5857. });
  5858. f &&
  5859. !/background-color/.test(b.style.cssText) &&
  5860. (b.style.backgroundColor = f.style.backgroundColor);
  5861. }
  5862. }
  5863. }),
  5864. c.moveToBookmark(h),
  5865. b(c, d, e);
  5866. }
  5867. var d = this,
  5868. e = {
  5869. forecolor: "color",
  5870. backcolor: "background-color",
  5871. fontsize: "font-size",
  5872. fontfamily: "font-family",
  5873. underline: "text-decoration",
  5874. strikethrough: "text-decoration",
  5875. fontborder: "border",
  5876. },
  5877. f = { underline: 1, strikethrough: 1, fontborder: 1 },
  5878. g = {
  5879. forecolor: "color",
  5880. backcolor: "background-color",
  5881. fontsize: "font-size",
  5882. fontfamily: "font-family",
  5883. };
  5884. d.setOpt({
  5885. fontfamily: [
  5886. { name: "songti", val: "宋体,SimSun" },
  5887. { name: "yahei", val: "微软雅黑,Microsoft YaHei" },
  5888. { name: "kaiti", val: "楷体,楷体_GB2312, SimKai" },
  5889. { name: "heiti", val: "黑体, SimHei" },
  5890. { name: "lishu", val: "隶书, SimLi" },
  5891. { name: "andaleMono", val: "andale mono" },
  5892. { name: "arial", val: "arial, helvetica,sans-serif" },
  5893. { name: "arialBlack", val: "arial black,avant garde" },
  5894. { name: "comicSansMs", val: "comic sans ms" },
  5895. { name: "impact", val: "impact,chicago" },
  5896. { name: "timesNewRoman", val: "times new roman" },
  5897. ],
  5898. fontsize: [10, 11, 12, 14, 16, 18, 20, 24, 36],
  5899. }),
  5900. d.addInputRule(function(a) {
  5901. utils.each(a.getNodesByTagName("u s del font strike"), function(a) {
  5902. if ("font" == a.tagName) {
  5903. var b = [];
  5904. for (var c in a.attrs)
  5905. switch (c) {
  5906. case "size":
  5907. b.push(
  5908. "font-size:" +
  5909. ({
  5910. 1: "10",
  5911. 2: "12",
  5912. 3: "16",
  5913. 4: "18",
  5914. 5: "24",
  5915. 6: "32",
  5916. 7: "48",
  5917. }[a.attrs[c]] || a.attrs[c]) +
  5918. "px"
  5919. );
  5920. break;
  5921. case "color":
  5922. b.push("color:" + a.attrs[c]);
  5923. break;
  5924. case "face":
  5925. b.push("font-family:" + a.attrs[c]);
  5926. break;
  5927. case "style":
  5928. b.push(a.attrs[c]);
  5929. }
  5930. a.attrs = { style: b.join(";") };
  5931. } else {
  5932. var d = "u" == a.tagName ? "underline" : "line-through";
  5933. a.attrs = {
  5934. style:
  5935. (a.getAttr("style") || "") + "text-decoration:" + d + ";",
  5936. };
  5937. }
  5938. a.tagName = "span";
  5939. });
  5940. });
  5941. for (var h in e)
  5942. !(function(a, b) {
  5943. UE.commands[a] = {
  5944. execCommand: function(d, e) {
  5945. e =
  5946. e ||
  5947. (this.queryCommandState(d)
  5948. ? "none"
  5949. : "underline" == d
  5950. ? "underline"
  5951. : "fontborder" == d
  5952. ? "1px solid #000"
  5953. : "line-through");
  5954. var g,
  5955. h = this,
  5956. i = this.selection.getRange();
  5957. if ("default" == e)
  5958. i.collapsed &&
  5959. ((g = h.document.createTextNode("font")),
  5960. i.insertNode(g).select()),
  5961. h.execCommand("removeFormat", "span,a", b),
  5962. g && (i.setStartBefore(g).collapse(!0), domUtils.remove(g)),
  5963. c(i, d, e),
  5964. i.select();
  5965. else if (i.collapsed) {
  5966. var j = domUtils.findParentByTagName(
  5967. i.startContainer,
  5968. "span",
  5969. !0
  5970. );
  5971. if (
  5972. ((g = h.document.createTextNode("font")),
  5973. !j ||
  5974. j.children.length ||
  5975. j[browser.ie ? "innerText" : "textContent"].replace(
  5976. fillCharReg,
  5977. ""
  5978. ).length)
  5979. ) {
  5980. if (
  5981. (i.insertNode(g),
  5982. i.selectNode(g).select(),
  5983. (j = i.document.createElement("span")),
  5984. f[a])
  5985. ) {
  5986. if (domUtils.findParentByTagName(g, "a", !0))
  5987. return (
  5988. i.setStartBefore(g).setCursor(), void domUtils.remove(g)
  5989. );
  5990. h.execCommand("removeFormat", "span,a", b);
  5991. }
  5992. if (
  5993. ((j.style.cssText = b + ":" + e),
  5994. g.parentNode.insertBefore(j, g),
  5995. !browser.ie || (browser.ie && 9 == browser.version))
  5996. )
  5997. for (var k = j.parentNode; !domUtils.isBlockElm(k); )
  5998. "SPAN" == k.tagName &&
  5999. (j.style.cssText =
  6000. k.style.cssText + ";" + j.style.cssText),
  6001. (k = k.parentNode);
  6002. opera
  6003. ? setTimeout(function() {
  6004. i.setStart(j, 0).collapse(!0), c(i, d, e), i.select();
  6005. })
  6006. : (i.setStart(j, 0).collapse(!0), c(i, d, e), i.select());
  6007. } else
  6008. i.insertNode(g),
  6009. f[a] &&
  6010. (i.selectNode(g).select(),
  6011. h.execCommand("removeFormat", "span,a", b, null),
  6012. (j = domUtils.findParentByTagName(g, "span", !0)),
  6013. i.setStartBefore(g)),
  6014. j && (j.style.cssText += ";" + b + ":" + e),
  6015. i.collapse(!0).select();
  6016. domUtils.remove(g);
  6017. } else
  6018. f[a] &&
  6019. h.queryCommandValue(a) &&
  6020. h.execCommand("removeFormat", "span,a", b),
  6021. (i = h.selection.getRange()),
  6022. i.applyInlineStyle("span", { style: b + ":" + e }),
  6023. c(i, d, e),
  6024. i.select();
  6025. return !0;
  6026. },
  6027. queryCommandValue: function(a) {
  6028. var c = this.selection.getStart();
  6029. if ("underline" == a || "strikethrough" == a) {
  6030. for (
  6031. var d, e = c;
  6032. e && !domUtils.isBlockElm(e) && !domUtils.isBody(e);
  6033. ) {
  6034. if (
  6035. 1 == e.nodeType &&
  6036. ((d = domUtils.getComputedStyle(e, b)), "none" != d)
  6037. )
  6038. return d;
  6039. e = e.parentNode;
  6040. }
  6041. return "none";
  6042. }
  6043. if ("fontborder" == a) {
  6044. for (var f, g = c; g && dtd.$inline[g.tagName]; ) {
  6045. if (
  6046. (f = domUtils.getComputedStyle(g, "border")) &&
  6047. /1px/.test(f) &&
  6048. /solid/.test(f)
  6049. )
  6050. return f;
  6051. g = g.parentNode;
  6052. }
  6053. return "";
  6054. }
  6055. if ("FontSize" == a) {
  6056. var h = domUtils.getComputedStyle(c, b),
  6057. g = /^([\d\.]+)(\w+)$/.exec(h);
  6058. return g ? Math.floor(g[1]) + g[2] : h;
  6059. }
  6060. return domUtils.getComputedStyle(c, b);
  6061. },
  6062. queryCommandState: function(a) {
  6063. if (!f[a]) return 0;
  6064. var b = this.queryCommandValue(a);
  6065. return "fontborder" == a
  6066. ? /1px/.test(b) && /solid/.test(b)
  6067. : "underline" == a
  6068. ? /underline/.test(b)
  6069. : /line\-through/.test(b);
  6070. },
  6071. };
  6072. })(h, e[h]);
  6073. }),
  6074. (UE.plugins.link = function() {
  6075. function a(a) {
  6076. var b = a.startContainer,
  6077. c = a.endContainer;
  6078. (b = domUtils.findParentByTagName(b, "a", !0)) && a.setStartBefore(b),
  6079. (c = domUtils.findParentByTagName(c, "a", !0)) && a.setEndAfter(c);
  6080. }
  6081. function b(b, c, d) {
  6082. var e = b.cloneRange(),
  6083. f = d.queryCommandValue("link");
  6084. a((b = b.adjustmentBoundary()));
  6085. var g = b.startContainer;
  6086. if (
  6087. (1 == g.nodeType &&
  6088. f &&
  6089. ((g = g.childNodes[b.startOffset]),
  6090. g &&
  6091. 1 == g.nodeType &&
  6092. "A" == g.tagName &&
  6093. /^(?:https?|ftp|file)\s*:\s*\/\//.test(
  6094. g[browser.ie ? "innerText" : "textContent"]
  6095. ) &&
  6096. (g[browser.ie ? "innerText" : "textContent"] = utils.html(
  6097. c.textValue || c.href
  6098. ))),
  6099. (e.collapsed && !f) ||
  6100. (b.removeInlineStyle("a"), (e = b.cloneRange())),
  6101. e.collapsed)
  6102. ) {
  6103. var h = b.document.createElement("a"),
  6104. i = "";
  6105. c.textValue
  6106. ? ((i = utils.html(c.textValue)), delete c.textValue)
  6107. : (i = utils.html(c.href)),
  6108. domUtils.setAttributes(h, c),
  6109. (g = domUtils.findParentByTagName(e.startContainer, "a", !0)),
  6110. g &&
  6111. domUtils.isInNodeEndBoundary(e, g) &&
  6112. b.setStartAfter(g).collapse(!0),
  6113. (h[browser.ie ? "innerText" : "textContent"] = i),
  6114. b.insertNode(h).selectNode(h);
  6115. } else b.applyInlineStyle("a", c);
  6116. }
  6117. (UE.commands.unlink = {
  6118. execCommand: function() {
  6119. var b,
  6120. c = this.selection.getRange();
  6121. (c.collapsed &&
  6122. !domUtils.findParentByTagName(c.startContainer, "a", !0)) ||
  6123. ((b = c.createBookmark()),
  6124. a(c),
  6125. c
  6126. .removeInlineStyle("a")
  6127. .moveToBookmark(b)
  6128. .select());
  6129. },
  6130. queryCommandState: function() {
  6131. return !this.highlight && this.queryCommandValue("link") ? 0 : -1;
  6132. },
  6133. }),
  6134. (UE.commands.link = {
  6135. execCommand: function(a, c) {
  6136. var d;
  6137. c._href && (c._href = utils.unhtml(c._href, /[<">]/g)),
  6138. c.href && (c.href = utils.unhtml(c.href, /[<">]/g)),
  6139. c.textValue &&
  6140. (c.textValue = utils.unhtml(c.textValue, /[<">]/g)),
  6141. b((d = this.selection.getRange()), c, this),
  6142. d.collapse().select(!0);
  6143. },
  6144. queryCommandValue: function() {
  6145. var a,
  6146. b = this.selection.getRange();
  6147. if (!b.collapsed) {
  6148. b.shrinkBoundary();
  6149. var c =
  6150. 3 != b.startContainer.nodeType &&
  6151. b.startContainer.childNodes[b.startOffset]
  6152. ? b.startContainer.childNodes[b.startOffset]
  6153. : b.startContainer,
  6154. d =
  6155. 3 == b.endContainer.nodeType || 0 == b.endOffset
  6156. ? b.endContainer
  6157. : b.endContainer.childNodes[b.endOffset - 1],
  6158. e = b.getCommonAncestor();
  6159. if (
  6160. ((a = domUtils.findParentByTagName(e, "a", !0)),
  6161. !a && 1 == e.nodeType)
  6162. )
  6163. for (
  6164. var f, g, h, i = e.getElementsByTagName("a"), j = 0;
  6165. (h = i[j++]);
  6166. )
  6167. if (
  6168. ((f = domUtils.getPosition(h, c)),
  6169. (g = domUtils.getPosition(h, d)),
  6170. (f & domUtils.POSITION_FOLLOWING ||
  6171. f & domUtils.POSITION_CONTAINS) &&
  6172. (g & domUtils.POSITION_PRECEDING ||
  6173. g & domUtils.POSITION_CONTAINS))
  6174. ) {
  6175. a = h;
  6176. break;
  6177. }
  6178. return a;
  6179. }
  6180. if (
  6181. ((a = b.startContainer),
  6182. (a = 1 == a.nodeType ? a : a.parentNode),
  6183. a &&
  6184. (a = domUtils.findParentByTagName(a, "a", !0)) &&
  6185. !domUtils.isInNodeEndBoundary(b, a))
  6186. )
  6187. return a;
  6188. },
  6189. queryCommandState: function() {
  6190. var a = this.selection.getRange().getClosedNode(),
  6191. b =
  6192. a &&
  6193. ("edui-faked-video" == a.className ||
  6194. a.className.indexOf("edui-upload-video") != -1);
  6195. return b ? -1 : 0;
  6196. },
  6197. });
  6198. }),
  6199. (UE.plugins.insertframe = function() {
  6200. function a() {
  6201. b._iframe && delete b._iframe;
  6202. }
  6203. var b = this;
  6204. b.addListener("selectionchange", function() {
  6205. a();
  6206. });
  6207. }),
  6208. (UE.commands.scrawl = {
  6209. queryCommandState: function() {
  6210. return browser.ie && browser.version <= 8 ? -1 : 0;
  6211. },
  6212. }),
  6213. (UE.plugins.removeformat = function() {
  6214. var a = this;
  6215. a.setOpt({
  6216. removeFormatTags:
  6217. "b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var",
  6218. removeFormatAttributes:
  6219. "class,style,lang,width,height,align,hspace,valign",
  6220. }),
  6221. (a.commands.removeformat = {
  6222. execCommand: function(a, b, c, d, e) {
  6223. function f(a) {
  6224. if (3 == a.nodeType || "span" != a.tagName.toLowerCase())
  6225. return 0;
  6226. if (browser.ie) {
  6227. var b = a.attributes;
  6228. if (b.length) {
  6229. for (var c = 0, d = b.length; c < d; c++)
  6230. if (b[c].specified) return 0;
  6231. return 1;
  6232. }
  6233. }
  6234. return !a.attributes.length;
  6235. }
  6236. function g(a) {
  6237. var b = a.createBookmark();
  6238. if ((a.collapsed && a.enlarge(!0), !e)) {
  6239. var d = domUtils.findParentByTagName(a.startContainer, "a", !0);
  6240. d && a.setStartBefore(d),
  6241. (d = domUtils.findParentByTagName(a.endContainer, "a", !0)),
  6242. d && a.setEndAfter(d);
  6243. }
  6244. for (
  6245. h = a.createBookmark(), p = h.start;
  6246. (i = p.parentNode) && !domUtils.isBlockElm(i);
  6247. )
  6248. domUtils.breakParent(p, i), domUtils.clearEmptySibling(p);
  6249. if (h.end) {
  6250. for (p = h.end; (i = p.parentNode) && !domUtils.isBlockElm(i); )
  6251. domUtils.breakParent(p, i), domUtils.clearEmptySibling(p);
  6252. for (
  6253. var g, l = domUtils.getNextDomNode(h.start, !1, m);
  6254. l && l != h.end;
  6255. )
  6256. (g = domUtils.getNextDomNode(l, !0, m)),
  6257. dtd.$empty[l.tagName.toLowerCase()] ||
  6258. domUtils.isBookmarkNode(l) ||
  6259. (j.test(l.tagName)
  6260. ? c
  6261. ? (domUtils.removeStyle(l, c),
  6262. f(l) &&
  6263. "text-decoration" != c &&
  6264. domUtils.remove(l, !0))
  6265. : domUtils.remove(l, !0)
  6266. : dtd.$tableContent[l.tagName] ||
  6267. dtd.$list[l.tagName] ||
  6268. (domUtils.removeAttributes(l, k),
  6269. f(l) && domUtils.remove(l, !0))),
  6270. (l = g);
  6271. }
  6272. var n = h.start.parentNode;
  6273. !domUtils.isBlockElm(n) ||
  6274. dtd.$tableContent[n.tagName] ||
  6275. dtd.$list[n.tagName] ||
  6276. domUtils.removeAttributes(n, k),
  6277. (n = h.end.parentNode),
  6278. h.end &&
  6279. domUtils.isBlockElm(n) &&
  6280. !dtd.$tableContent[n.tagName] &&
  6281. !dtd.$list[n.tagName] &&
  6282. domUtils.removeAttributes(n, k),
  6283. a.moveToBookmark(h).moveToBookmark(b);
  6284. for (
  6285. var o, p = a.startContainer, q = a.collapsed;
  6286. 1 == p.nodeType &&
  6287. domUtils.isEmptyNode(p) &&
  6288. dtd.$removeEmpty[p.tagName];
  6289. )
  6290. (o = p.parentNode),
  6291. a.setStartBefore(p),
  6292. a.startContainer === a.endContainer && a.endOffset--,
  6293. domUtils.remove(p),
  6294. (p = o);
  6295. if (!q)
  6296. for (
  6297. p = a.endContainer;
  6298. 1 == p.nodeType &&
  6299. domUtils.isEmptyNode(p) &&
  6300. dtd.$removeEmpty[p.tagName];
  6301. )
  6302. (o = p.parentNode),
  6303. a.setEndBefore(p),
  6304. domUtils.remove(p),
  6305. (p = o);
  6306. }
  6307. var h,
  6308. i,
  6309. j = new RegExp(
  6310. "^(?:" +
  6311. (b || this.options.removeFormatTags).replace(/,/g, "|") +
  6312. ")$",
  6313. "i"
  6314. ),
  6315. k = c
  6316. ? []
  6317. : (d || this.options.removeFormatAttributes).split(","),
  6318. l = new dom.Range(this.document),
  6319. m = function(a) {
  6320. return 1 == a.nodeType;
  6321. };
  6322. (l = this.selection.getRange()), g(l), l.select();
  6323. },
  6324. });
  6325. }),
  6326. (UE.plugins.blockquote = function() {
  6327. function a(a) {
  6328. return domUtils.filterNodeList(
  6329. a.selection.getStartElementPath(),
  6330. "blockquote"
  6331. );
  6332. }
  6333. var b = this;
  6334. b.commands.blockquote = {
  6335. execCommand: function(b, c) {
  6336. var d = this.selection.getRange(),
  6337. e = a(this),
  6338. f = dtd.blockquote,
  6339. g = d.createBookmark();
  6340. if (e) {
  6341. var h = d.startContainer,
  6342. i = domUtils.isBlockElm(h)
  6343. ? h
  6344. : domUtils.findParent(h, function(a) {
  6345. return domUtils.isBlockElm(a);
  6346. }),
  6347. j = d.endContainer,
  6348. k = domUtils.isBlockElm(j)
  6349. ? j
  6350. : domUtils.findParent(j, function(a) {
  6351. return domUtils.isBlockElm(a);
  6352. });
  6353. (i = domUtils.findParentByTagName(i, "li", !0) || i),
  6354. (k = domUtils.findParentByTagName(k, "li", !0) || k),
  6355. "LI" == i.tagName ||
  6356. "TD" == i.tagName ||
  6357. i === e ||
  6358. domUtils.isBody(i)
  6359. ? domUtils.remove(e, !0)
  6360. : domUtils.breakParent(i, e),
  6361. i !== k &&
  6362. ((e = domUtils.findParentByTagName(k, "blockquote")),
  6363. e &&
  6364. ("LI" == k.tagName || "TD" == k.tagName || domUtils.isBody(k)
  6365. ? e.parentNode && domUtils.remove(e, !0)
  6366. : domUtils.breakParent(k, e)));
  6367. for (
  6368. var l,
  6369. m = domUtils.getElementsByTagName(this.document, "blockquote"),
  6370. n = 0;
  6371. (l = m[n++]);
  6372. )
  6373. l.childNodes.length
  6374. ? domUtils.getPosition(l, i) & domUtils.POSITION_FOLLOWING &&
  6375. domUtils.getPosition(l, k) & domUtils.POSITION_PRECEDING &&
  6376. domUtils.remove(l, !0)
  6377. : domUtils.remove(l);
  6378. } else {
  6379. for (
  6380. var o = d.cloneRange(),
  6381. p =
  6382. 1 == o.startContainer.nodeType
  6383. ? o.startContainer
  6384. : o.startContainer.parentNode,
  6385. q = p,
  6386. r = 1;
  6387. ;
  6388. ) {
  6389. if (domUtils.isBody(p)) {
  6390. q !== p
  6391. ? d.collapsed
  6392. ? (o.selectNode(q), (r = 0))
  6393. : o.setStartBefore(q)
  6394. : o.setStart(p, 0);
  6395. break;
  6396. }
  6397. if (!f[p.tagName]) {
  6398. d.collapsed ? o.selectNode(q) : o.setStartBefore(q);
  6399. break;
  6400. }
  6401. (q = p), (p = p.parentNode);
  6402. }
  6403. if (r)
  6404. for (
  6405. q = p = p =
  6406. 1 == o.endContainer.nodeType
  6407. ? o.endContainer
  6408. : o.endContainer.parentNode;
  6409. ;
  6410. ) {
  6411. if (domUtils.isBody(p)) {
  6412. q !== p ? o.setEndAfter(q) : o.setEnd(p, p.childNodes.length);
  6413. break;
  6414. }
  6415. if (!f[p.tagName]) {
  6416. o.setEndAfter(q);
  6417. break;
  6418. }
  6419. (q = p), (p = p.parentNode);
  6420. }
  6421. (p = d.document.createElement("blockquote")),
  6422. domUtils.setAttributes(p, c),
  6423. p.appendChild(o.extractContents()),
  6424. o.insertNode(p);
  6425. for (
  6426. var s, t = domUtils.getElementsByTagName(p, "blockquote"), n = 0;
  6427. (s = t[n++]);
  6428. )
  6429. s.parentNode && domUtils.remove(s, !0);
  6430. }
  6431. d.moveToBookmark(g).select();
  6432. },
  6433. queryCommandState: function() {
  6434. return a(this) ? 1 : 0;
  6435. },
  6436. };
  6437. }),
  6438. (UE.commands.touppercase = UE.commands.tolowercase = {
  6439. execCommand: function(a) {
  6440. var b = this,
  6441. c = b.selection.getRange();
  6442. if (c.collapsed) return c;
  6443. for (
  6444. var d = c.createBookmark(),
  6445. e = d.end,
  6446. f = function(a) {
  6447. return !domUtils.isBr(a) && !domUtils.isWhitespace(a);
  6448. },
  6449. g = domUtils.getNextDomNode(d.start, !1, f);
  6450. g &&
  6451. domUtils.getPosition(g, e) & domUtils.POSITION_PRECEDING &&
  6452. (3 == g.nodeType &&
  6453. (g.nodeValue = g.nodeValue[
  6454. "touppercase" == a ? "toUpperCase" : "toLowerCase"
  6455. ]()),
  6456. (g = domUtils.getNextDomNode(g, !0, f)),
  6457. g !== e);
  6458. );
  6459. c.moveToBookmark(d).select();
  6460. },
  6461. }),
  6462. (UE.commands.indent = {
  6463. execCommand: function() {
  6464. var a = this,
  6465. b = a.queryCommandState("indent")
  6466. ? "0em"
  6467. : a.options.indentValue || "2em";
  6468. a.execCommand("Paragraph", "p", { style: "text-indent:" + b });
  6469. },
  6470. queryCommandState: function() {
  6471. var a = domUtils.filterNodeList(
  6472. this.selection.getStartElementPath(),
  6473. "p h1 h2 h3 h4 h5 h6"
  6474. );
  6475. return a && a.style.textIndent && parseInt(a.style.textIndent) ? 1 : 0;
  6476. },
  6477. }),
  6478. (UE.commands.print = {
  6479. execCommand: function() {
  6480. this.window.print();
  6481. },
  6482. notNeedUndo: 1,
  6483. }),
  6484. (UE.commands.preview = {
  6485. execCommand: function() {
  6486. var a = window.open("", "_blank", ""),
  6487. b = a.document;
  6488. b.open(),
  6489. b.write(
  6490. '<!DOCTYPE html><html><head><meta charset="utf-8"/><script src="' +
  6491. this.options.UEDITOR_HOME_URL +
  6492. "ueditor.parse.js\"></script><script>setTimeout(function(){uParse('div',{rootPath: '" +
  6493. this.options.UEDITOR_HOME_URL +
  6494. "'})},300)</script></head><body><div>" +
  6495. this.getContent(null, null, !0) +
  6496. "</div></body></html>"
  6497. ),
  6498. b.close();
  6499. },
  6500. notNeedUndo: 1,
  6501. }),
  6502. (UE.plugins.selectall = function() {
  6503. var a = this;
  6504. (a.commands.selectall = {
  6505. execCommand: function() {
  6506. var a = this,
  6507. b = a.body,
  6508. c = a.selection.getRange();
  6509. c.selectNodeContents(b),
  6510. domUtils.isEmptyBlock(b) &&
  6511. (browser.opera &&
  6512. b.firstChild &&
  6513. 1 == b.firstChild.nodeType &&
  6514. c.setStartAtFirst(b.firstChild),
  6515. c.collapse(!0)),
  6516. c.select(!0);
  6517. },
  6518. notNeedUndo: 1,
  6519. }),
  6520. a.addshortcutkey({ selectAll: "ctrl+65" });
  6521. }),
  6522. (UE.plugins.paragraph = function() {
  6523. var a = this,
  6524. b = domUtils.isBlockElm,
  6525. c = ["TD", "LI", "PRE"],
  6526. d = function(a, d, e, f) {
  6527. var g,
  6528. h = a.createBookmark(),
  6529. i = function(a) {
  6530. return 1 == a.nodeType
  6531. ? "br" != a.tagName.toLowerCase() && !domUtils.isBookmarkNode(a)
  6532. : !domUtils.isWhitespace(a);
  6533. };
  6534. a.enlarge(!0);
  6535. for (
  6536. var j,
  6537. k = a.createBookmark(),
  6538. l = domUtils.getNextDomNode(k.start, !1, i),
  6539. m = a.cloneRange();
  6540. l &&
  6541. !(domUtils.getPosition(l, k.end) & domUtils.POSITION_FOLLOWING);
  6542. )
  6543. if (3 != l.nodeType && b(l)) l = domUtils.getNextDomNode(l, !0, i);
  6544. else {
  6545. for (m.setStartBefore(l); l && l !== k.end && !b(l); )
  6546. (j = l),
  6547. (l = domUtils.getNextDomNode(l, !1, null, function(a) {
  6548. return !b(a);
  6549. }));
  6550. m.setEndAfter(j),
  6551. (g = a.document.createElement(d)),
  6552. e &&
  6553. (domUtils.setAttributes(g, e),
  6554. f &&
  6555. "customstyle" == f &&
  6556. e.style &&
  6557. (g.style.cssText = e.style)),
  6558. g.appendChild(m.extractContents()),
  6559. domUtils.isEmptyNode(g) && domUtils.fillChar(a.document, g),
  6560. m.insertNode(g);
  6561. var n = g.parentNode;
  6562. b(n) &&
  6563. !domUtils.isBody(g.parentNode) &&
  6564. utils.indexOf(c, n.tagName) == -1 &&
  6565. ((f && "customstyle" == f) ||
  6566. (n.getAttribute("dir") &&
  6567. g.setAttribute("dir", n.getAttribute("dir")),
  6568. n.style.cssText &&
  6569. (g.style.cssText = n.style.cssText + ";" + g.style.cssText),
  6570. n.style.textAlign &&
  6571. !g.style.textAlign &&
  6572. (g.style.textAlign = n.style.textAlign),
  6573. n.style.textIndent &&
  6574. !g.style.textIndent &&
  6575. (g.style.textIndent = n.style.textIndent),
  6576. n.style.padding &&
  6577. !g.style.padding &&
  6578. (g.style.padding = n.style.padding)),
  6579. e && /h\d/i.test(n.tagName) && !/h\d/i.test(g.tagName)
  6580. ? (domUtils.setAttributes(n, e),
  6581. f &&
  6582. "customstyle" == f &&
  6583. e.style &&
  6584. (n.style.cssText = e.style),
  6585. domUtils.remove(g, !0),
  6586. (g = n))
  6587. : domUtils.remove(g.parentNode, !0)),
  6588. (l = utils.indexOf(c, n.tagName) != -1 ? n : g),
  6589. (l = domUtils.getNextDomNode(l, !1, i));
  6590. }
  6591. return a.moveToBookmark(k).moveToBookmark(h);
  6592. };
  6593. a.setOpt("paragraph", {
  6594. p: "",
  6595. h1: "",
  6596. h2: "",
  6597. h3: "",
  6598. h4: "",
  6599. h5: "",
  6600. h6: "",
  6601. }),
  6602. (a.commands.paragraph = {
  6603. execCommand: function(a, b, c, e) {
  6604. var f = this.selection.getRange();
  6605. if (f.collapsed) {
  6606. var g = this.document.createTextNode("p");
  6607. if ((f.insertNode(g), browser.ie)) {
  6608. var h = g.previousSibling;
  6609. h && domUtils.isWhitespace(h) && domUtils.remove(h),
  6610. (h = g.nextSibling),
  6611. h && domUtils.isWhitespace(h) && domUtils.remove(h);
  6612. }
  6613. }
  6614. if (
  6615. ((f = d(f, b, c, e)),
  6616. g &&
  6617. (f.setStartBefore(g).collapse(!0),
  6618. (pN = g.parentNode),
  6619. domUtils.remove(g),
  6620. domUtils.isBlockElm(pN) &&
  6621. domUtils.isEmptyNode(pN) &&
  6622. domUtils.fillNode(this.document, pN)),
  6623. browser.gecko && f.collapsed && 1 == f.startContainer.nodeType)
  6624. ) {
  6625. var i = f.startContainer.childNodes[f.startOffset];
  6626. i &&
  6627. 1 == i.nodeType &&
  6628. i.tagName.toLowerCase() == b &&
  6629. f.setStart(i, 0).collapse(!0);
  6630. }
  6631. return f.select(), !0;
  6632. },
  6633. queryCommandValue: function() {
  6634. var a = domUtils.filterNodeList(
  6635. this.selection.getStartElementPath(),
  6636. "p h1 h2 h3 h4 h5 h6"
  6637. );
  6638. return a ? a.tagName.toLowerCase() : "";
  6639. },
  6640. });
  6641. }),
  6642. (function() {
  6643. var a = domUtils.isBlockElm,
  6644. b = function(a) {
  6645. return domUtils.filterNodeList(
  6646. a.selection.getStartElementPath(),
  6647. function(a) {
  6648. return a && 1 == a.nodeType && a.getAttribute("dir");
  6649. }
  6650. );
  6651. },
  6652. c = function(c, d, e) {
  6653. var f,
  6654. g = function(a) {
  6655. return 1 == a.nodeType
  6656. ? !domUtils.isBookmarkNode(a)
  6657. : !domUtils.isWhitespace(a);
  6658. },
  6659. h = b(d);
  6660. if (h && c.collapsed) return h.setAttribute("dir", e), c;
  6661. (f = c.createBookmark()), c.enlarge(!0);
  6662. for (
  6663. var i,
  6664. j = c.createBookmark(),
  6665. k = domUtils.getNextDomNode(j.start, !1, g),
  6666. l = c.cloneRange();
  6667. k &&
  6668. !(domUtils.getPosition(k, j.end) & domUtils.POSITION_FOLLOWING);
  6669. )
  6670. if (3 != k.nodeType && a(k)) k = domUtils.getNextDomNode(k, !0, g);
  6671. else {
  6672. for (l.setStartBefore(k); k && k !== j.end && !a(k); )
  6673. (i = k),
  6674. (k = domUtils.getNextDomNode(k, !1, null, function(b) {
  6675. return !a(b);
  6676. }));
  6677. l.setEndAfter(i);
  6678. var m = l.getCommonAncestor();
  6679. if (!domUtils.isBody(m) && a(m))
  6680. m.setAttribute("dir", e), (k = m);
  6681. else {
  6682. var n = c.document.createElement("p");
  6683. n.setAttribute("dir", e);
  6684. var o = l.extractContents();
  6685. n.appendChild(o), l.insertNode(n), (k = n);
  6686. }
  6687. k = domUtils.getNextDomNode(k, !1, g);
  6688. }
  6689. return c.moveToBookmark(j).moveToBookmark(f);
  6690. };
  6691. UE.commands.directionality = {
  6692. execCommand: function(a, b) {
  6693. var d = this.selection.getRange();
  6694. if (d.collapsed) {
  6695. var e = this.document.createTextNode("d");
  6696. d.insertNode(e);
  6697. }
  6698. return (
  6699. c(d, this, b),
  6700. e && (d.setStartBefore(e).collapse(!0), domUtils.remove(e)),
  6701. d.select(),
  6702. !0
  6703. );
  6704. },
  6705. queryCommandValue: function() {
  6706. var a = b(this);
  6707. return a ? a.getAttribute("dir") : "ltr";
  6708. },
  6709. };
  6710. })(),
  6711. (UE.plugins.horizontal = function() {
  6712. var a = this;
  6713. (a.commands.horizontal = {
  6714. execCommand: function(a) {
  6715. var b = this;
  6716. if (b.queryCommandState(a) !== -1) {
  6717. b.execCommand("insertHtml", "<hr>");
  6718. var c = b.selection.getRange(),
  6719. d = c.startContainer;
  6720. if (1 == d.nodeType && !d.childNodes[c.startOffset]) {
  6721. var e;
  6722. (e = d.childNodes[c.startOffset - 1]) &&
  6723. 1 == e.nodeType &&
  6724. "HR" == e.tagName &&
  6725. ("p" == b.options.enterTag
  6726. ? ((e = b.document.createElement("p")),
  6727. c.insertNode(e),
  6728. c.setStart(e, 0).setCursor())
  6729. : ((e = b.document.createElement("br")),
  6730. c.insertNode(e),
  6731. c.setStartBefore(e).setCursor()));
  6732. }
  6733. return !0;
  6734. }
  6735. },
  6736. queryCommandState: function() {
  6737. return domUtils.filterNodeList(
  6738. this.selection.getStartElementPath(),
  6739. "table"
  6740. )
  6741. ? -1
  6742. : 0;
  6743. },
  6744. }),
  6745. a.addListener("delkeydown", function(a, b) {
  6746. var c = this.selection.getRange();
  6747. if ((c.txtToElmBoundary(!0), domUtils.isStartInblock(c))) {
  6748. var d = c.startContainer,
  6749. e = d.previousSibling;
  6750. if (e && domUtils.isTagNode(e, "hr"))
  6751. return (
  6752. domUtils.remove(e), c.select(), domUtils.preventDefault(b), !0
  6753. );
  6754. }
  6755. });
  6756. }),
  6757. (UE.commands.time = UE.commands.date = {
  6758. execCommand: function(a, b) {
  6759. function c(a, b) {
  6760. var c = ("0" + a.getHours()).slice(-2),
  6761. d = ("0" + a.getMinutes()).slice(-2),
  6762. e = ("0" + a.getSeconds()).slice(-2);
  6763. return (
  6764. (b = b || "hh:ii:ss"),
  6765. b
  6766. .replace(/hh/gi, c)
  6767. .replace(/ii/gi, d)
  6768. .replace(/ss/gi, e)
  6769. );
  6770. }
  6771. function d(a, b) {
  6772. var c = ("000" + a.getFullYear()).slice(-4),
  6773. d = c.slice(-2),
  6774. e = ("0" + (a.getMonth() + 1)).slice(-2),
  6775. f = ("0" + a.getDate()).slice(-2);
  6776. return (
  6777. (b = b || "yyyy-mm-dd"),
  6778. b
  6779. .replace(/yyyy/gi, c)
  6780. .replace(/yy/gi, d)
  6781. .replace(/mm/gi, e)
  6782. .replace(/dd/gi, f)
  6783. );
  6784. }
  6785. var e = new Date();
  6786. this.execCommand("insertHtml", "time" == a ? c(e, b) : d(e, b));
  6787. },
  6788. }),
  6789. (UE.plugins.rowspacing = function() {
  6790. var a = this;
  6791. a.setOpt({
  6792. rowspacingtop: ["5", "10", "15", "20", "25"],
  6793. rowspacingbottom: ["5", "10", "15", "20", "25"],
  6794. }),
  6795. (a.commands.rowspacing = {
  6796. execCommand: function(a, b, c) {
  6797. return (
  6798. this.execCommand("paragraph", "p", {
  6799. style: "margin-" + c + ":" + b + "px",
  6800. }),
  6801. !0
  6802. );
  6803. },
  6804. queryCommandValue: function(a, b) {
  6805. var c,
  6806. d = domUtils.filterNodeList(
  6807. this.selection.getStartElementPath(),
  6808. function(a) {
  6809. return domUtils.isBlockElm(a);
  6810. }
  6811. );
  6812. return d
  6813. ? ((c = domUtils
  6814. .getComputedStyle(d, "margin-" + b)
  6815. .replace(/[^\d]/g, "")),
  6816. c ? c : 0)
  6817. : 0;
  6818. },
  6819. });
  6820. }),
  6821. (UE.plugins.lineheight = function() {
  6822. var a = this;
  6823. a.setOpt({ lineheight: ["1", "1.5", "1.75", "2", "3", "4", "5"] }),
  6824. (a.commands.lineheight = {
  6825. execCommand: function(a, b) {
  6826. return (
  6827. this.execCommand("paragraph", "p", {
  6828. style: "line-height:" + ("1" == b ? "normal" : b + "em"),
  6829. }),
  6830. !0
  6831. );
  6832. },
  6833. queryCommandValue: function() {
  6834. var a = domUtils.filterNodeList(
  6835. this.selection.getStartElementPath(),
  6836. function(a) {
  6837. return domUtils.isBlockElm(a);
  6838. }
  6839. );
  6840. if (a) {
  6841. var b = domUtils.getComputedStyle(a, "line-height");
  6842. return "normal" == b ? 1 : b.replace(/[^\d.]*/gi, "");
  6843. }
  6844. },
  6845. });
  6846. }),
  6847. (UE.plugins.insertcode = function() {
  6848. var a = this;
  6849. a.ready(function() {
  6850. utils.cssRule(
  6851. "pre",
  6852. "pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}",
  6853. a.document
  6854. );
  6855. }),
  6856. a.setOpt("insertcode", {
  6857. as3: "ActionScript3",
  6858. bash: "Bash/Shell",
  6859. cpp: "C/C++",
  6860. css: "Css",
  6861. cf: "CodeFunction",
  6862. "c#": "C#",
  6863. delphi: "Delphi",
  6864. diff: "Diff",
  6865. erlang: "Erlang",
  6866. groovy: "Groovy",
  6867. html: "Html",
  6868. java: "Java",
  6869. jfx: "JavaFx",
  6870. js: "Javascript",
  6871. pl: "Perl",
  6872. php: "Php",
  6873. plain: "Plain Text",
  6874. ps: "PowerShell",
  6875. python: "Python",
  6876. ruby: "Ruby",
  6877. scala: "Scala",
  6878. sql: "Sql",
  6879. vb: "Vb",
  6880. xml: "Xml",
  6881. }),
  6882. (a.commands.insertcode = {
  6883. execCommand: function(a, b) {
  6884. var c = this,
  6885. d = c.selection.getRange(),
  6886. e = domUtils.findParentByTagName(d.startContainer, "pre", !0);
  6887. if (e) e.className = "brush:" + b + ";toolbar:false;";
  6888. else {
  6889. var f = "";
  6890. if (d.collapsed)
  6891. f =
  6892. browser.ie && browser.ie11below
  6893. ? browser.version <= 8
  6894. ? "&nbsp;"
  6895. : ""
  6896. : "<br/>";
  6897. else {
  6898. var g = d.extractContents(),
  6899. h = c.document.createElement("div");
  6900. h.appendChild(g),
  6901. utils.each(
  6902. UE.filterNode(
  6903. UE.htmlparser(h.innerHTML.replace(/[\r\t]/g, "")),
  6904. c.options.filterTxtRules
  6905. ).children,
  6906. function(a) {
  6907. if (
  6908. browser.ie &&
  6909. browser.ie11below &&
  6910. browser.version > 8
  6911. )
  6912. "element" == a.type
  6913. ? "br" == a.tagName
  6914. ? (f += "\n")
  6915. : dtd.$empty[a.tagName] ||
  6916. (utils.each(a.children, function(b) {
  6917. "element" == b.type
  6918. ? "br" == b.tagName
  6919. ? (f += "\n")
  6920. : dtd.$empty[a.tagName] ||
  6921. (f += b.innerText())
  6922. : (f += b.data);
  6923. }),
  6924. /\n$/.test(f) || (f += "\n"))
  6925. : (f += a.data + "\n"),
  6926. !a.nextSibling() &&
  6927. /\n$/.test(f) &&
  6928. (f = f.replace(/\n$/, ""));
  6929. else if (browser.ie && browser.ie11below)
  6930. "element" == a.type
  6931. ? "br" == a.tagName
  6932. ? (f += "<br>")
  6933. : dtd.$empty[a.tagName] ||
  6934. (utils.each(a.children, function(b) {
  6935. "element" == b.type
  6936. ? "br" == b.tagName
  6937. ? (f += "<br>")
  6938. : dtd.$empty[a.tagName] ||
  6939. (f += b.innerText())
  6940. : (f += b.data);
  6941. }),
  6942. /br>$/.test(f) || (f += "<br>"))
  6943. : (f += a.data + "<br>"),
  6944. !a.nextSibling() &&
  6945. /<br>$/.test(f) &&
  6946. (f = f.replace(/<br>$/, ""));
  6947. else if (
  6948. ((f +=
  6949. "element" == a.type
  6950. ? dtd.$empty[a.tagName]
  6951. ? ""
  6952. : a.innerText()
  6953. : a.data),
  6954. !/br\/?\s*>$/.test(f))
  6955. ) {
  6956. if (!a.nextSibling()) return;
  6957. f += "<br>";
  6958. }
  6959. }
  6960. );
  6961. }
  6962. c.execCommand(
  6963. "inserthtml",
  6964. '<pre id="coder"class="brush:' +
  6965. b +
  6966. ';toolbar:false">' +
  6967. f +
  6968. "</pre>",
  6969. !0
  6970. ),
  6971. (e = c.document.getElementById("coder")),
  6972. domUtils.removeAttributes(e, "id");
  6973. var i = e.previousSibling;
  6974. i &&
  6975. ((3 == i.nodeType &&
  6976. 1 == i.nodeValue.length &&
  6977. browser.ie &&
  6978. 6 == browser.version) ||
  6979. domUtils.isEmptyBlock(i)) &&
  6980. domUtils.remove(i);
  6981. var d = c.selection.getRange();
  6982. domUtils.isEmptyBlock(e)
  6983. ? d.setStart(e, 0).setCursor(!1, !0)
  6984. : d.selectNodeContents(e).select();
  6985. }
  6986. },
  6987. queryCommandValue: function() {
  6988. var a = this.selection.getStartElementPath(),
  6989. b = "";
  6990. return (
  6991. utils.each(a, function(a) {
  6992. if ("PRE" == a.nodeName) {
  6993. var c = a.className.match(/brush:([^;]+)/);
  6994. return (b = c && c[1] ? c[1] : ""), !1;
  6995. }
  6996. }),
  6997. b
  6998. );
  6999. },
  7000. }),
  7001. a.addInputRule(function(a) {
  7002. utils.each(a.getNodesByTagName("pre"), function(a) {
  7003. var b = a.getNodesByTagName("br");
  7004. if (b.length)
  7005. return void (
  7006. browser.ie &&
  7007. browser.ie11below &&
  7008. browser.version > 8 &&
  7009. utils.each(b, function(a) {
  7010. var b = UE.uNode.createText("\n");
  7011. a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a);
  7012. })
  7013. );
  7014. if (!(browser.ie && browser.ie11below && browser.version > 8)) {
  7015. var c = a.innerText().split(/\n/);
  7016. a.innerHTML(""),
  7017. utils.each(c, function(b) {
  7018. b.length && a.appendChild(UE.uNode.createText(b)),
  7019. a.appendChild(UE.uNode.createElement("br"));
  7020. });
  7021. }
  7022. });
  7023. }),
  7024. a.addOutputRule(function(a) {
  7025. utils.each(a.getNodesByTagName("pre"), function(a) {
  7026. var b = "";
  7027. utils.each(a.children, function(a) {
  7028. b +=
  7029. "text" == a.type
  7030. ? a.data.replace(/[ ]/g, "&nbsp;").replace(/\n$/, "")
  7031. : "br" == a.tagName
  7032. ? "\n"
  7033. : dtd.$empty[a.tagName]
  7034. ? a.innerText()
  7035. : "";
  7036. }),
  7037. a.innerText(b.replace(/(&nbsp;|\n)+$/, ""));
  7038. });
  7039. }),
  7040. (a.notNeedCodeQuery = {
  7041. help: 1,
  7042. undo: 1,
  7043. redo: 1,
  7044. source: 1,
  7045. print: 1,
  7046. searchreplace: 1,
  7047. fullscreen: 1,
  7048. preview: 1,
  7049. insertparagraph: 1,
  7050. elementpath: 1,
  7051. insertcode: 1,
  7052. inserthtml: 1,
  7053. selectall: 1,
  7054. });
  7055. a.queryCommandState;
  7056. (a.queryCommandState = function(a) {
  7057. var b = this;
  7058. return !b.notNeedCodeQuery[a.toLowerCase()] &&
  7059. b.selection &&
  7060. b.queryCommandValue("insertcode")
  7061. ? -1
  7062. : UE.Editor.prototype.queryCommandState.apply(this, arguments);
  7063. }),
  7064. a.addListener("beforeenterkeydown", function() {
  7065. var b = a.selection.getRange(),
  7066. c = domUtils.findParentByTagName(b.startContainer, "pre", !0);
  7067. if (c) {
  7068. if (
  7069. (a.fireEvent("saveScene"),
  7070. b.collapsed || b.deleteContents(),
  7071. !browser.ie || browser.ie9above)
  7072. ) {
  7073. var c,
  7074. d = a.document.createElement("br");
  7075. b.insertNode(d)
  7076. .setStartAfter(d)
  7077. .collapse(!0);
  7078. var e = d.nextSibling;
  7079. e || (browser.ie && !(browser.version > 10))
  7080. ? b.setStartAfter(d)
  7081. : b.insertNode(d.cloneNode(!1)),
  7082. (c = d.previousSibling);
  7083. for (var f; c; )
  7084. if (
  7085. ((f = c), (c = c.previousSibling), !c || "BR" == c.nodeName)
  7086. ) {
  7087. c = f;
  7088. break;
  7089. }
  7090. if (c) {
  7091. for (
  7092. var g = "";
  7093. c &&
  7094. "BR" != c.nodeName &&
  7095. new RegExp("^[\\s" + domUtils.fillChar + "]*$").test(
  7096. c.nodeValue
  7097. );
  7098. )
  7099. (g += c.nodeValue), (c = c.nextSibling);
  7100. if ("BR" != c.nodeName) {
  7101. var h = c.nodeValue.match(
  7102. new RegExp("^([\\s" + domUtils.fillChar + "]+)")
  7103. );
  7104. h && h[1] && (g += h[1]);
  7105. }
  7106. g &&
  7107. ((g = a.document.createTextNode(g)),
  7108. b.insertNode(g).setStartAfter(g));
  7109. }
  7110. b.collapse(!0).select(!0);
  7111. } else if (browser.version > 8) {
  7112. var i = a.document.createTextNode("\n"),
  7113. j = b.startContainer;
  7114. if (0 == b.startOffset) {
  7115. var k = j.previousSibling;
  7116. if (k) {
  7117. b.insertNode(i);
  7118. var l = a.document.createTextNode(" ");
  7119. b.setStartAfter(i)
  7120. .insertNode(l)
  7121. .setStart(l, 0)
  7122. .collapse(!0)
  7123. .select(!0);
  7124. }
  7125. } else {
  7126. b.insertNode(i).setStartAfter(i);
  7127. var l = a.document.createTextNode(" ");
  7128. (j = b.startContainer.childNodes[b.startOffset]),
  7129. j && !/^\n/.test(j.nodeValue) && b.setStartBefore(i),
  7130. b
  7131. .insertNode(l)
  7132. .setStart(l, 0)
  7133. .collapse(!0)
  7134. .select(!0);
  7135. }
  7136. } else {
  7137. var d = a.document.createElement("br");
  7138. b.insertNode(d),
  7139. b.insertNode(a.document.createTextNode(domUtils.fillChar)),
  7140. b.setStartAfter(d),
  7141. (c = d.previousSibling);
  7142. for (var f; c; )
  7143. if (
  7144. ((f = c), (c = c.previousSibling), !c || "BR" == c.nodeName)
  7145. ) {
  7146. c = f;
  7147. break;
  7148. }
  7149. if (c) {
  7150. for (
  7151. var g = "";
  7152. c &&
  7153. "BR" != c.nodeName &&
  7154. new RegExp("^[ " + domUtils.fillChar + "]*$").test(
  7155. c.nodeValue
  7156. );
  7157. )
  7158. (g += c.nodeValue), (c = c.nextSibling);
  7159. if ("BR" != c.nodeName) {
  7160. var h = c.nodeValue.match(
  7161. new RegExp("^([ " + domUtils.fillChar + "]+)")
  7162. );
  7163. h && h[1] && (g += h[1]);
  7164. }
  7165. (g = a.document.createTextNode(g)),
  7166. b.insertNode(g).setStartAfter(g);
  7167. }
  7168. b.collapse(!0).select();
  7169. }
  7170. return a.fireEvent("saveScene"), !0;
  7171. }
  7172. }),
  7173. a.addListener("tabkeydown", function(b, c) {
  7174. var d = a.selection.getRange(),
  7175. e = domUtils.findParentByTagName(d.startContainer, "pre", !0);
  7176. if (e) {
  7177. if ((a.fireEvent("saveScene"), c.shiftKey));
  7178. else if (d.collapsed) {
  7179. var f = a.document.createTextNode(" ");
  7180. d.insertNode(f)
  7181. .setStartAfter(f)
  7182. .collapse(!0)
  7183. .select(!0);
  7184. } else {
  7185. for (
  7186. var g = d.createBookmark(), h = g.start.previousSibling;
  7187. h;
  7188. ) {
  7189. if (e.firstChild === h && !domUtils.isBr(h)) {
  7190. e.insertBefore(a.document.createTextNode(" "), h);
  7191. break;
  7192. }
  7193. if (domUtils.isBr(h)) {
  7194. e.insertBefore(
  7195. a.document.createTextNode(" "),
  7196. h.nextSibling
  7197. );
  7198. break;
  7199. }
  7200. h = h.previousSibling;
  7201. }
  7202. var i = g.end;
  7203. for (
  7204. h = g.start.nextSibling,
  7205. e.firstChild === g.start &&
  7206. e.insertBefore(
  7207. a.document.createTextNode(" "),
  7208. h.nextSibling
  7209. );
  7210. h && h !== i;
  7211. ) {
  7212. if (domUtils.isBr(h) && h.nextSibling) {
  7213. if (h.nextSibling === i) break;
  7214. e.insertBefore(
  7215. a.document.createTextNode(" "),
  7216. h.nextSibling
  7217. );
  7218. }
  7219. h = h.nextSibling;
  7220. }
  7221. d.moveToBookmark(g).select();
  7222. }
  7223. return a.fireEvent("saveScene"), !0;
  7224. }
  7225. }),
  7226. a.addListener("beforeinserthtml", function(a, b) {
  7227. var c = this,
  7228. d = c.selection.getRange(),
  7229. e = domUtils.findParentByTagName(d.startContainer, "pre", !0);
  7230. if (e) {
  7231. d.collapsed || d.deleteContents();
  7232. var f = "";
  7233. if (browser.ie && browser.version > 8) {
  7234. utils.each(
  7235. UE.filterNode(UE.htmlparser(b), c.options.filterTxtRules)
  7236. .children,
  7237. function(a) {
  7238. "element" == a.type
  7239. ? "br" == a.tagName
  7240. ? (f += "\n")
  7241. : dtd.$empty[a.tagName] ||
  7242. (utils.each(a.children, function(b) {
  7243. "element" == b.type
  7244. ? "br" == b.tagName
  7245. ? (f += "\n")
  7246. : dtd.$empty[a.tagName] || (f += b.innerText())
  7247. : (f += b.data);
  7248. }),
  7249. /\n$/.test(f) || (f += "\n"))
  7250. : (f += a.data + "\n"),
  7251. !a.nextSibling() &&
  7252. /\n$/.test(f) &&
  7253. (f = f.replace(/\n$/, ""));
  7254. }
  7255. );
  7256. var g = c.document.createTextNode(
  7257. utils.html(f.replace(/&nbsp;/g, " "))
  7258. );
  7259. d.insertNode(g)
  7260. .selectNode(g)
  7261. .select();
  7262. } else {
  7263. var h = c.document.createDocumentFragment();
  7264. utils.each(
  7265. UE.filterNode(UE.htmlparser(b), c.options.filterTxtRules)
  7266. .children,
  7267. function(a) {
  7268. "element" == a.type
  7269. ? "br" == a.tagName
  7270. ? h.appendChild(c.document.createElement("br"))
  7271. : dtd.$empty[a.tagName] ||
  7272. (utils.each(a.children, function(b) {
  7273. "element" == b.type
  7274. ? "br" == b.tagName
  7275. ? h.appendChild(c.document.createElement("br"))
  7276. : dtd.$empty[a.tagName] ||
  7277. h.appendChild(
  7278. c.document.createTextNode(
  7279. utils.html(
  7280. b.innerText().replace(/&nbsp;/g, " ")
  7281. )
  7282. )
  7283. )
  7284. : h.appendChild(
  7285. c.document.createTextNode(
  7286. utils.html(b.data.replace(/&nbsp;/g, " "))
  7287. )
  7288. );
  7289. }),
  7290. "BR" != h.lastChild.nodeName &&
  7291. h.appendChild(c.document.createElement("br")))
  7292. : h.appendChild(
  7293. c.document.createTextNode(
  7294. utils.html(a.data.replace(/&nbsp;/g, " "))
  7295. )
  7296. ),
  7297. a.nextSibling() ||
  7298. "BR" != h.lastChild.nodeName ||
  7299. h.removeChild(h.lastChild);
  7300. }
  7301. ),
  7302. d.insertNode(h).select();
  7303. }
  7304. return !0;
  7305. }
  7306. }),
  7307. a.addListener("keydown", function(a, b) {
  7308. var c = this,
  7309. d = b.keyCode || b.which;
  7310. if (40 == d) {
  7311. var e,
  7312. f = c.selection.getRange(),
  7313. g = f.startContainer;
  7314. if (
  7315. f.collapsed &&
  7316. (e = domUtils.findParentByTagName(f.startContainer, "pre", !0)) &&
  7317. !e.nextSibling
  7318. ) {
  7319. for (var h = e.lastChild; h && "BR" == h.nodeName; )
  7320. h = h.previousSibling;
  7321. (h === g ||
  7322. (f.startContainer === e &&
  7323. f.startOffset == e.childNodes.length)) &&
  7324. (c.execCommand("insertparagraph"), domUtils.preventDefault(b));
  7325. }
  7326. }
  7327. }),
  7328. a.addListener("delkeydown", function(b, c) {
  7329. var d = this.selection.getRange();
  7330. d.txtToElmBoundary(!0);
  7331. var e = d.startContainer;
  7332. if (
  7333. domUtils.isTagNode(e, "pre") &&
  7334. d.collapsed &&
  7335. domUtils.isStartInblock(d)
  7336. ) {
  7337. var f = a.document.createElement("p");
  7338. return (
  7339. domUtils.fillNode(a.document, f),
  7340. e.parentNode.insertBefore(f, e),
  7341. domUtils.remove(e),
  7342. d.setStart(f, 0).setCursor(!1, !0),
  7343. domUtils.preventDefault(c),
  7344. !0
  7345. );
  7346. }
  7347. });
  7348. }),
  7349. (UE.commands.cleardoc = {
  7350. execCommand: function(a) {
  7351. var b = this,
  7352. c = b.options.enterTag,
  7353. d = b.selection.getRange();
  7354. "br" == c
  7355. ? ((b.body.innerHTML = "<br/>"), d.setStart(b.body, 0).setCursor())
  7356. : ((b.body.innerHTML = "<p>" + (ie ? "" : "<br/>") + "</p>"),
  7357. d.setStart(b.body.firstChild, 0).setCursor(!1, !0)),
  7358. setTimeout(function() {
  7359. b.fireEvent("clearDoc");
  7360. }, 0);
  7361. },
  7362. }),
  7363. UE.plugin.register("anchor", function() {
  7364. return {
  7365. bindEvents: {
  7366. ready: function() {
  7367. utils.cssRule(
  7368. "anchor",
  7369. ".anchorclass{background: url('" +
  7370. this.options.themePath +
  7371. this.options.theme +
  7372. "/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}",
  7373. this.document
  7374. );
  7375. },
  7376. },
  7377. outputRule: function(a) {
  7378. utils.each(a.getNodesByTagName("img"), function(a) {
  7379. var b;
  7380. (b = a.getAttr("anchorname")) &&
  7381. ((a.tagName = "a"),
  7382. a.setAttr({ anchorname: "", name: b, class: "" }));
  7383. });
  7384. },
  7385. inputRule: function(a) {
  7386. utils.each(a.getNodesByTagName("a"), function(a) {
  7387. var b;
  7388. (b = a.getAttr("name")) &&
  7389. !a.getAttr("href") &&
  7390. ((a.tagName = "img"),
  7391. a.setAttr({
  7392. anchorname: a.getAttr("name"),
  7393. class: "anchorclass",
  7394. }),
  7395. a.setAttr("name"));
  7396. });
  7397. },
  7398. commands: {
  7399. anchor: {
  7400. execCommand: function(a, b) {
  7401. var c = this.selection.getRange(),
  7402. d = c.getClosedNode();
  7403. if (d && d.getAttribute("anchorname"))
  7404. b
  7405. ? d.setAttribute("anchorname", b)
  7406. : (c.setStartBefore(d).setCursor(), domUtils.remove(d));
  7407. else if (b) {
  7408. var e = this.document.createElement("img");
  7409. c.collapse(!0),
  7410. domUtils.setAttributes(e, {
  7411. anchorname: b,
  7412. class: "anchorclass",
  7413. }),
  7414. c
  7415. .insertNode(e)
  7416. .setStartAfter(e)
  7417. .setCursor(!1, !0);
  7418. }
  7419. },
  7420. },
  7421. },
  7422. };
  7423. }),
  7424. (UE.plugins.wordcount = function() {
  7425. var a = this;
  7426. a.setOpt("wordCount", !0),
  7427. a.addListener("contentchange", function() {
  7428. a.fireEvent("wordcount");
  7429. });
  7430. var b;
  7431. a.addListener("ready", function() {
  7432. var a = this;
  7433. domUtils.on(a.body, "keyup", function(c) {
  7434. var d = c.keyCode || c.which,
  7435. e = { 16: 1, 18: 1, 20: 1, 37: 1, 38: 1, 39: 1, 40: 1 };
  7436. d in e ||
  7437. (clearTimeout(b),
  7438. (b = setTimeout(function() {
  7439. a.fireEvent("wordcount");
  7440. }, 200)));
  7441. });
  7442. });
  7443. }),
  7444. (UE.plugins.pagebreak = function() {
  7445. function a(a) {
  7446. if (domUtils.isEmptyBlock(a)) {
  7447. for (
  7448. var b, d = a.firstChild;
  7449. d && 1 == d.nodeType && domUtils.isEmptyBlock(d);
  7450. )
  7451. (b = d), (d = d.firstChild);
  7452. !b && (b = a), domUtils.fillNode(c.document, b);
  7453. }
  7454. }
  7455. function b(a) {
  7456. return (
  7457. a &&
  7458. 1 == a.nodeType &&
  7459. "HR" == a.tagName &&
  7460. "pagebreak" == a.className
  7461. );
  7462. }
  7463. var c = this,
  7464. d = ["td"];
  7465. c.setOpt("pageBreakTag", "_ueditor_page_break_tag_"),
  7466. c.ready(function() {
  7467. utils.cssRule(
  7468. "pagebreak",
  7469. ".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}",
  7470. c.document
  7471. );
  7472. }),
  7473. c.addInputRule(function(a) {
  7474. a.traversal(function(a) {
  7475. if ("text" == a.type && a.data == c.options.pageBreakTag) {
  7476. var b = UE.uNode.createElement(
  7477. '<hr class="pagebreak" noshade="noshade" size="5" style="-webkit-user-select: none;">'
  7478. );
  7479. a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a);
  7480. }
  7481. });
  7482. }),
  7483. c.addOutputRule(function(a) {
  7484. utils.each(a.getNodesByTagName("hr"), function(a) {
  7485. if ("pagebreak" == a.getAttr("class")) {
  7486. var b = UE.uNode.createText(c.options.pageBreakTag);
  7487. a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a);
  7488. }
  7489. });
  7490. }),
  7491. (c.commands.pagebreak = {
  7492. execCommand: function() {
  7493. var e = c.selection.getRange(),
  7494. f = c.document.createElement("hr");
  7495. domUtils.setAttributes(f, {
  7496. class: "pagebreak",
  7497. noshade: "noshade",
  7498. size: "5",
  7499. }),
  7500. domUtils.unSelectable(f);
  7501. var g,
  7502. h = domUtils.findParentByTagName(e.startContainer, d, !0),
  7503. i = [];
  7504. if (h)
  7505. switch (h.tagName) {
  7506. case "TD":
  7507. if (((g = h.parentNode), g.previousSibling))
  7508. g.parentNode.insertBefore(f, g),
  7509. (i = domUtils.findParents(f));
  7510. else {
  7511. var j = domUtils.findParentByTagName(g, "table");
  7512. j.parentNode.insertBefore(f, j),
  7513. (i = domUtils.findParents(f, !0));
  7514. }
  7515. (g = i[1]),
  7516. f !== g && domUtils.breakParent(f, g),
  7517. c.fireEvent("afteradjusttable", c.document);
  7518. }
  7519. else {
  7520. if (!e.collapsed) {
  7521. e.deleteContents();
  7522. for (
  7523. var k = e.startContainer;
  7524. !domUtils.isBody(k) &&
  7525. domUtils.isBlockElm(k) &&
  7526. domUtils.isEmptyNode(k);
  7527. )
  7528. e.setStartBefore(k).collapse(!0),
  7529. domUtils.remove(k),
  7530. (k = e.startContainer);
  7531. }
  7532. e.insertNode(f);
  7533. for (var l, g = f.parentNode; !domUtils.isBody(g); )
  7534. domUtils.breakParent(f, g),
  7535. (l = f.nextSibling),
  7536. l && domUtils.isEmptyBlock(l) && domUtils.remove(l),
  7537. (g = f.parentNode);
  7538. l = f.nextSibling;
  7539. var m = f.previousSibling;
  7540. if ((b(m) ? domUtils.remove(m) : m && a(m), l))
  7541. b(l) ? domUtils.remove(l) : a(l), e.setEndAfter(f).collapse(!1);
  7542. else {
  7543. var n = c.document.createElement("p");
  7544. f.parentNode.appendChild(n),
  7545. domUtils.fillNode(c.document, n),
  7546. e.setStart(n, 0).collapse(!0);
  7547. }
  7548. e.select(!0);
  7549. }
  7550. },
  7551. });
  7552. }),
  7553. UE.plugin.register("wordimage", function() {
  7554. var a = this,
  7555. b = [];
  7556. return {
  7557. commands: {
  7558. wordimage: {
  7559. execCommand: function() {
  7560. for (
  7561. var b,
  7562. c = domUtils.getElementsByTagName(a.body, "img"),
  7563. d = [],
  7564. e = 0;
  7565. (b = c[e++]);
  7566. ) {
  7567. var f = b.getAttribute("word_img");
  7568. f && d.push(f);
  7569. }
  7570. return d;
  7571. },
  7572. queryCommandState: function() {
  7573. b = domUtils.getElementsByTagName(a.body, "img");
  7574. for (var c, d = 0; (c = b[d++]); )
  7575. if (c.getAttribute("word_img")) return 1;
  7576. return -1;
  7577. },
  7578. notNeedUndo: !0,
  7579. },
  7580. },
  7581. inputRule: function(b) {
  7582. utils.each(b.getNodesByTagName("img"), function(b) {
  7583. var c = b.attrs,
  7584. d = parseInt(c.width) < 128 || parseInt(c.height) < 43,
  7585. e = a.options,
  7586. f = e.UEDITOR_HOME_URL + "themes/default/images/spacer.gif";
  7587. c.src &&
  7588. /^(?:(file:\/+))/.test(c.src) &&
  7589. b.setAttr({
  7590. width: c.width,
  7591. height: c.height,
  7592. alt: c.alt,
  7593. word_img: c.src,
  7594. src: f,
  7595. style:
  7596. "background:url(" +
  7597. (d
  7598. ? e.themePath + e.theme + "/images/word.gif"
  7599. : e.langPath + e.lang + "/images/localimage.png") +
  7600. ") no-repeat center center;border:1px solid #ddd",
  7601. });
  7602. });
  7603. },
  7604. };
  7605. }),
  7606. (UE.plugins.dragdrop = function() {
  7607. var a = this;
  7608. a.ready(function() {
  7609. domUtils.on(this.body, "dragend", function() {
  7610. var b = a.selection.getRange(),
  7611. c = b.getClosedNode() || a.selection.getStart();
  7612. if (c && "IMG" == c.tagName) {
  7613. for (
  7614. var d, e = c.previousSibling;
  7615. (d = c.nextSibling) &&
  7616. 1 == d.nodeType &&
  7617. "SPAN" == d.tagName &&
  7618. !d.firstChild;
  7619. )
  7620. domUtils.remove(d);
  7621. ((!e || 1 != e.nodeType || domUtils.isEmptyBlock(e)) && e) ||
  7622. (d && (!d || domUtils.isEmptyBlock(d))) ||
  7623. (e && "P" == e.tagName && !domUtils.isEmptyBlock(e)
  7624. ? (e.appendChild(c),
  7625. domUtils.moveChild(d, e),
  7626. domUtils.remove(d))
  7627. : d &&
  7628. "P" == d.tagName &&
  7629. !domUtils.isEmptyBlock(d) &&
  7630. d.insertBefore(c, d.firstChild),
  7631. e &&
  7632. "P" == e.tagName &&
  7633. domUtils.isEmptyBlock(e) &&
  7634. domUtils.remove(e),
  7635. d &&
  7636. "P" == d.tagName &&
  7637. domUtils.isEmptyBlock(d) &&
  7638. domUtils.remove(d),
  7639. b.selectNode(c).select(),
  7640. a.fireEvent("saveScene"));
  7641. }
  7642. });
  7643. }),
  7644. a.addListener("keyup", function(b, c) {
  7645. var d = c.keyCode || c.which;
  7646. if (13 == d) {
  7647. var e,
  7648. f = a.selection.getRange();
  7649. (e = domUtils.findParentByTagName(f.startContainer, "p", !0)) &&
  7650. "center" == domUtils.getComputedStyle(e, "text-align") &&
  7651. domUtils.removeStyle(e, "text-align");
  7652. }
  7653. });
  7654. }),
  7655. (UE.plugins.undo = function() {
  7656. function a(a, b) {
  7657. if (a.length != b.length) return 0;
  7658. for (var c = 0, d = a.length; c < d; c++) if (a[c] != b[c]) return 0;
  7659. return 1;
  7660. }
  7661. function b(b, c) {
  7662. return b.collapsed != c.collapsed
  7663. ? 0
  7664. : a(b.startAddress, c.startAddress) && a(b.endAddress, c.endAddress)
  7665. ? 1
  7666. : 0;
  7667. }
  7668. function c() {
  7669. (this.list = []),
  7670. (this.index = 0),
  7671. (this.hasUndo = !1),
  7672. (this.hasRedo = !1),
  7673. (this.undo = function() {
  7674. if (this.hasUndo) {
  7675. if (!this.list[this.index - 1] && 1 == this.list.length)
  7676. return void this.reset();
  7677. for (
  7678. ;
  7679. this.list[this.index].content ==
  7680. this.list[this.index - 1].content;
  7681. )
  7682. if ((this.index--, 0 == this.index)) return this.restore(0);
  7683. this.restore(--this.index);
  7684. }
  7685. }),
  7686. (this.redo = function() {
  7687. if (this.hasRedo) {
  7688. for (
  7689. ;
  7690. this.list[this.index].content ==
  7691. this.list[this.index + 1].content;
  7692. )
  7693. if ((this.index++, this.index == this.list.length - 1))
  7694. return this.restore(this.index);
  7695. this.restore(++this.index);
  7696. }
  7697. }),
  7698. (this.restore = function() {
  7699. var a = this.editor,
  7700. b = this.list[this.index],
  7701. c = UE.htmlparser(b.content.replace(h, ""));
  7702. (a.options.autoClearEmptyNode = !1),
  7703. a.filterInputRule(c),
  7704. (a.options.autoClearEmptyNode = j),
  7705. (a.document.body.innerHTML = c.toHtml()),
  7706. a.fireEvent("afterscencerestore"),
  7707. browser.ie &&
  7708. utils.each(
  7709. domUtils.getElementsByTagName(a.document, "td th caption p"),
  7710. function(b) {
  7711. domUtils.isEmptyNode(b) && domUtils.fillNode(a.document, b);
  7712. }
  7713. );
  7714. try {
  7715. var d = new dom.Range(a.document).moveToAddress(b.address);
  7716. d.select(i[d.startContainer.nodeName.toLowerCase()]);
  7717. } catch (e) {}
  7718. this.update(), this.clearKey(), a.fireEvent("reset", !0);
  7719. }),
  7720. (this.getScene = function() {
  7721. var a = this.editor,
  7722. b = a.selection.getRange(),
  7723. c = b.createAddress(!1, !0);
  7724. a.fireEvent("beforegetscene");
  7725. var d = UE.htmlparser(a.body.innerHTML);
  7726. (a.options.autoClearEmptyNode = !1),
  7727. a.filterOutputRule(d),
  7728. (a.options.autoClearEmptyNode = j);
  7729. var e = d.toHtml();
  7730. return a.fireEvent("aftergetscene"), { address: c, content: e };
  7731. }),
  7732. (this.save = function(a, c) {
  7733. clearTimeout(d);
  7734. var g = this.getScene(c),
  7735. h = this.list[this.index];
  7736. h && h.content != g.content && e.trigger("contentchange"),
  7737. (h &&
  7738. h.content == g.content &&
  7739. (a ? 1 : b(h.address, g.address))) ||
  7740. ((this.list = this.list.slice(0, this.index + 1)),
  7741. this.list.push(g),
  7742. this.list.length > f && this.list.shift(),
  7743. (this.index = this.list.length - 1),
  7744. this.clearKey(),
  7745. this.update());
  7746. }),
  7747. (this.update = function() {
  7748. (this.hasRedo = !!this.list[this.index + 1]),
  7749. (this.hasUndo = !!this.list[this.index - 1]);
  7750. }),
  7751. (this.reset = function() {
  7752. (this.list = []),
  7753. (this.index = 0),
  7754. (this.hasUndo = !1),
  7755. (this.hasRedo = !1),
  7756. this.clearKey();
  7757. }),
  7758. (this.clearKey = function() {
  7759. (m = 0), (k = null);
  7760. });
  7761. }
  7762. var d,
  7763. e = this,
  7764. f = e.options.maxUndoCount || 20,
  7765. g = e.options.maxInputCount || 20,
  7766. h = new RegExp(domUtils.fillChar + "|</hr>", "gi"),
  7767. i = { ol: 1, ul: 1, table: 1, tbody: 1, tr: 1, body: 1 },
  7768. j = e.options.autoClearEmptyNode;
  7769. (e.undoManger = new c()),
  7770. (e.undoManger.editor = e),
  7771. e.addListener("saveScene", function() {
  7772. var a = Array.prototype.splice.call(arguments, 1);
  7773. this.undoManger.save.apply(this.undoManger, a);
  7774. }),
  7775. e.addListener("reset", function(a, b) {
  7776. b || this.undoManger.reset();
  7777. }),
  7778. (e.commands.redo = e.commands.undo = {
  7779. execCommand: function(a) {
  7780. this.undoManger[a]();
  7781. },
  7782. queryCommandState: function(a) {
  7783. return this.undoManger[
  7784. "has" + ("undo" == a.toLowerCase() ? "Undo" : "Redo")
  7785. ]
  7786. ? 0
  7787. : -1;
  7788. },
  7789. notNeedUndo: 1,
  7790. });
  7791. var k,
  7792. l = { 16: 1, 17: 1, 18: 1, 37: 1, 38: 1, 39: 1, 40: 1 },
  7793. m = 0,
  7794. n = !1;
  7795. e.addListener("ready", function() {
  7796. domUtils.on(this.body, "compositionstart", function() {
  7797. n = !0;
  7798. }),
  7799. domUtils.on(this.body, "compositionend", function() {
  7800. n = !1;
  7801. });
  7802. }),
  7803. e.addshortcutkey({ Undo: "ctrl+90", Redo: "ctrl+89" });
  7804. var o = !0;
  7805. e.addListener("keydown", function(a, b) {
  7806. function c(a) {
  7807. a.undoManger.save(!1, !0), a.fireEvent("selectionchange");
  7808. }
  7809. var e = this,
  7810. f = b.keyCode || b.which;
  7811. if (!(l[f] || b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)) {
  7812. if (n) return;
  7813. if (!e.selection.getRange().collapsed)
  7814. return e.undoManger.save(!1, !0), void (o = !1);
  7815. 0 == e.undoManger.list.length && e.undoManger.save(!0),
  7816. clearTimeout(d),
  7817. (d = setTimeout(function() {
  7818. if (n)
  7819. var a = setInterval(function() {
  7820. n || (c(e), clearInterval(a));
  7821. }, 300);
  7822. else c(e);
  7823. }, 200)),
  7824. (k = f),
  7825. m++,
  7826. m >= g && c(e);
  7827. }
  7828. }),
  7829. e.addListener("keyup", function(a, b) {
  7830. var c = b.keyCode || b.which;
  7831. if (!(l[c] || b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)) {
  7832. if (n) return;
  7833. o || (this.undoManger.save(!1, !0), (o = !0));
  7834. }
  7835. }),
  7836. (e.stopCmdUndo = function() {
  7837. e.__hasEnterExecCommand = !0;
  7838. }),
  7839. (e.startCmdUndo = function() {
  7840. e.__hasEnterExecCommand = !1;
  7841. });
  7842. }),
  7843. UE.plugin.register("copy", function() {
  7844. function a() {
  7845. ZeroClipboard.config({
  7846. debug: !1,
  7847. swfPath:
  7848. b.options.UEDITOR_HOME_URL +
  7849. "third-party/zeroclipboard/ZeroClipboard.swf",
  7850. });
  7851. var a = (b.zeroclipboard = new ZeroClipboard());
  7852. a.on("copy", function(a) {
  7853. var c = a.client,
  7854. d = b.selection.getRange(),
  7855. e = document.createElement("div");
  7856. e.appendChild(d.cloneContents()),
  7857. c.setText(e.innerText || e.textContent),
  7858. c.setHtml(e.innerHTML),
  7859. d.select();
  7860. }),
  7861. a.on("mouseover mouseout", function(a) {
  7862. var b = a.target;
  7863. "mouseover" == a.type
  7864. ? domUtils.addClass(b, "edui-state-hover")
  7865. : "mouseout" == a.type &&
  7866. domUtils.removeClasses(b, "edui-state-hover");
  7867. }),
  7868. a.on("wrongflash noflash", function() {
  7869. ZeroClipboard.destroy();
  7870. });
  7871. }
  7872. var b = this;
  7873. return {
  7874. bindEvents: {
  7875. ready: function() {
  7876. browser.ie ||
  7877. (window.ZeroClipboard
  7878. ? a()
  7879. : utils.loadFile(
  7880. document,
  7881. {
  7882. src:
  7883. b.options.UEDITOR_HOME_URL +
  7884. "third-party/zeroclipboard/ZeroClipboard.js",
  7885. tag: "script",
  7886. type: "text/javascript",
  7887. defer: "defer",
  7888. },
  7889. function() {
  7890. a();
  7891. }
  7892. ));
  7893. },
  7894. },
  7895. commands: {
  7896. copy: {
  7897. execCommand: function(a) {
  7898. b.document.execCommand("copy") || alert(b.getLang("copymsg"));
  7899. },
  7900. },
  7901. },
  7902. };
  7903. }),
  7904. (UE.plugins.paste = function() {
  7905. function a(a) {
  7906. var b = this.document;
  7907. if (!b.getElementById("baidu_pastebin")) {
  7908. var c = this.selection.getRange(),
  7909. d = c.createBookmark(),
  7910. e = b.createElement("div");
  7911. (e.id = "baidu_pastebin"),
  7912. browser.webkit &&
  7913. e.appendChild(
  7914. b.createTextNode(domUtils.fillChar + domUtils.fillChar)
  7915. ),
  7916. b.body.appendChild(e),
  7917. (d.start.style.display = ""),
  7918. (e.style.cssText =
  7919. "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" +
  7920. domUtils.getXY(d.start).y +
  7921. "px"),
  7922. c.selectNodeContents(e).select(!0),
  7923. setTimeout(function() {
  7924. if (browser.webkit)
  7925. for (
  7926. var f, g = 0, h = b.querySelectorAll("#baidu_pastebin");
  7927. (f = h[g++]);
  7928. ) {
  7929. if (!domUtils.isEmptyNode(f)) {
  7930. e = f;
  7931. break;
  7932. }
  7933. domUtils.remove(f);
  7934. }
  7935. try {
  7936. e.parentNode.removeChild(e);
  7937. } catch (i) {}
  7938. c.moveToBookmark(d).select(!0), a(e);
  7939. }, 0);
  7940. }
  7941. }
  7942. function b(a) {
  7943. return a.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, function(a, b, c, d) {
  7944. return (
  7945. (c = c.toLowerCase()),
  7946. { img: 1 }[c]
  7947. ? a
  7948. : ((d = d.replace(
  7949. /([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi,
  7950. function(a, b, c) {
  7951. return { src: 1, href: 1, name: 1 }[b.toLowerCase()]
  7952. ? b + "=" + c + " "
  7953. : "";
  7954. }
  7955. )),
  7956. { span: 1, div: 1 }[c]
  7957. ? ""
  7958. : "<" + b + c + " " + utils.trim(d) + ">")
  7959. );
  7960. });
  7961. }
  7962. function c(a) {
  7963. var c;
  7964. if (a.firstChild) {
  7965. for (
  7966. var h, i = domUtils.getElementsByTagName(a, "span"), j = 0;
  7967. (h = i[j++]);
  7968. )
  7969. ("_baidu_cut_start" != h.id && "_baidu_cut_end" != h.id) ||
  7970. domUtils.remove(h);
  7971. if (browser.webkit) {
  7972. for (
  7973. var k, l = a.querySelectorAll("div br"), j = 0;
  7974. (k = l[j++]);
  7975. ) {
  7976. var m = k.parentNode;
  7977. "DIV" == m.tagName &&
  7978. 1 == m.childNodes.length &&
  7979. ((m.innerHTML = "<p><br/></p>"), domUtils.remove(m));
  7980. }
  7981. for (
  7982. var n, o = a.querySelectorAll("#baidu_pastebin"), j = 0;
  7983. (n = o[j++]);
  7984. ) {
  7985. var p = d.document.createElement("p");
  7986. for (n.parentNode.insertBefore(p, n); n.firstChild; )
  7987. p.appendChild(n.firstChild);
  7988. domUtils.remove(n);
  7989. }
  7990. for (var q, r = a.querySelectorAll("meta"), j = 0; (q = r[j++]); )
  7991. domUtils.remove(q);
  7992. var l = a.querySelectorAll("br");
  7993. for (j = 0; (q = l[j++]); )
  7994. /^apple-/i.test(q.className) && domUtils.remove(q);
  7995. }
  7996. if (browser.gecko) {
  7997. var s = a.querySelectorAll("[_moz_dirty]");
  7998. for (j = 0; (q = s[j++]); ) q.removeAttribute("_moz_dirty");
  7999. }
  8000. if (!browser.ie)
  8001. for (
  8002. var q, t = a.querySelectorAll("span.Apple-style-span"), j = 0;
  8003. (q = t[j++]);
  8004. )
  8005. domUtils.remove(q, !0);
  8006. (c = a.innerHTML), (c = UE.filterWord(c));
  8007. var u = UE.htmlparser(c);
  8008. if (
  8009. (d.options.filterRules && UE.filterNode(u, d.options.filterRules),
  8010. d.filterInputRule(u),
  8011. browser.webkit)
  8012. ) {
  8013. var v = u.lastChild();
  8014. v && "element" == v.type && "br" == v.tagName && u.removeChild(v),
  8015. utils.each(d.body.querySelectorAll("div"), function(a) {
  8016. domUtils.isEmptyBlock(a) && domUtils.remove(a, !0);
  8017. });
  8018. }
  8019. if (
  8020. ((c = { html: u.toHtml() }),
  8021. d.fireEvent("beforepaste", c, u),
  8022. !c.html)
  8023. )
  8024. return;
  8025. (u = UE.htmlparser(c.html, !0)),
  8026. 1 === d.queryCommandState("pasteplain")
  8027. ? d.execCommand(
  8028. "insertHtml",
  8029. UE.filterNode(u, d.options.filterTxtRules).toHtml(),
  8030. !0
  8031. )
  8032. : (UE.filterNode(u, d.options.filterTxtRules),
  8033. (e = u.toHtml()),
  8034. (f = c.html),
  8035. (g = d.selection.getRange().createAddress(!0)),
  8036. d.execCommand(
  8037. "insertHtml",
  8038. d.getOpt("retainOnlyLabelPasted") === !0 ? b(f) : f,
  8039. !0
  8040. )),
  8041. d.fireEvent("afterpaste", c);
  8042. }
  8043. }
  8044. var d = this;
  8045. d.setOpt({ retainOnlyLabelPasted: !1 });
  8046. var e, f, g;
  8047. d.addListener("pasteTransfer", function(a, c) {
  8048. if (g && e && f && e != f) {
  8049. var h = d.selection.getRange();
  8050. if ((h.moveToAddress(g, !0), !h.collapsed)) {
  8051. for (; !domUtils.isBody(h.startContainer); ) {
  8052. var i = h.startContainer;
  8053. if (1 == i.nodeType) {
  8054. if (((i = i.childNodes[h.startOffset]), !i)) {
  8055. h.setStartBefore(h.startContainer);
  8056. continue;
  8057. }
  8058. var j = i.previousSibling;
  8059. j &&
  8060. 3 == j.nodeType &&
  8061. new RegExp("^[\n\r\t " + domUtils.fillChar + "]*$").test(
  8062. j.nodeValue
  8063. ) &&
  8064. h.setStartBefore(j);
  8065. }
  8066. if (0 != h.startOffset) break;
  8067. h.setStartBefore(h.startContainer);
  8068. }
  8069. for (; !domUtils.isBody(h.endContainer); ) {
  8070. var k = h.endContainer;
  8071. if (1 == k.nodeType) {
  8072. if (((k = k.childNodes[h.endOffset]), !k)) {
  8073. h.setEndAfter(h.endContainer);
  8074. continue;
  8075. }
  8076. var l = k.nextSibling;
  8077. l &&
  8078. 3 == l.nodeType &&
  8079. new RegExp("^[\n\r\t" + domUtils.fillChar + "]*$").test(
  8080. l.nodeValue
  8081. ) &&
  8082. h.setEndAfter(l);
  8083. }
  8084. if (
  8085. h.endOffset !=
  8086. h.endContainer[
  8087. 3 == h.endContainer.nodeType ? "nodeValue" : "childNodes"
  8088. ].length
  8089. )
  8090. break;
  8091. h.setEndAfter(h.endContainer);
  8092. }
  8093. }
  8094. h.deleteContents(), h.select(!0), (d.__hasEnterExecCommand = !0);
  8095. var m = f;
  8096. 2 === c ? (m = b(m)) : c && (m = e),
  8097. d.execCommand("inserthtml", m, !0),
  8098. (d.__hasEnterExecCommand = !1);
  8099. for (
  8100. var n = d.selection.getRange();
  8101. !domUtils.isBody(n.startContainer) &&
  8102. !n.startOffset &&
  8103. n.startContainer[
  8104. 3 == n.startContainer.nodeType ? "nodeValue" : "childNodes"
  8105. ].length;
  8106. )
  8107. n.setStartBefore(n.startContainer);
  8108. var o = n.createAddress(!0);
  8109. g.endAddress = o.startAddress;
  8110. }
  8111. }),
  8112. d.addListener("ready", function() {
  8113. domUtils.on(d.body, "cut", function() {
  8114. var a = d.selection.getRange();
  8115. !a.collapsed && d.undoManger && d.undoManger.save();
  8116. }),
  8117. domUtils.on(
  8118. d.body,
  8119. browser.ie || browser.opera ? "keydown" : "paste",
  8120. function(b) {
  8121. ((!browser.ie && !browser.opera) ||
  8122. ((b.ctrlKey || b.metaKey) && "86" == b.keyCode)) &&
  8123. a.call(d, function(a) {
  8124. c(a);
  8125. });
  8126. }
  8127. );
  8128. }),
  8129. (d.commands.paste = {
  8130. execCommand: function(b) {
  8131. browser.ie
  8132. ? (a.call(d, function(a) {
  8133. c(a);
  8134. }),
  8135. d.document.execCommand("paste"))
  8136. : alert(d.getLang("pastemsg"));
  8137. },
  8138. });
  8139. }),
  8140. (UE.plugins.pasteplain = function() {
  8141. var a = this;
  8142. a.setOpt({
  8143. pasteplain: !1,
  8144. filterTxtRules: (function() {
  8145. function a(a) {
  8146. (a.tagName = "p"), a.setStyle();
  8147. }
  8148. function b(a) {
  8149. a.parentNode.removeChild(a, !0);
  8150. }
  8151. return {
  8152. "-": "script style object iframe embed input select",
  8153. p: { $: {} },
  8154. br: { $: {} },
  8155. div: function(a) {
  8156. for (
  8157. var b, c = UE.uNode.createElement("p");
  8158. (b = a.firstChild());
  8159. )
  8160. "text" != b.type && UE.dom.dtd.$block[b.tagName]
  8161. ? c.firstChild()
  8162. ? (a.parentNode.insertBefore(c, a),
  8163. (c = UE.uNode.createElement("p")))
  8164. : a.parentNode.insertBefore(b, a)
  8165. : c.appendChild(b);
  8166. c.firstChild() && a.parentNode.insertBefore(c, a),
  8167. a.parentNode.removeChild(a);
  8168. },
  8169. ol: b,
  8170. ul: b,
  8171. dl: b,
  8172. dt: b,
  8173. dd: b,
  8174. li: b,
  8175. caption: a,
  8176. th: a,
  8177. tr: a,
  8178. h1: a,
  8179. h2: a,
  8180. h3: a,
  8181. h4: a,
  8182. h5: a,
  8183. h6: a,
  8184. td: function(a) {
  8185. var b = !!a.innerText();
  8186. b &&
  8187. a.parentNode.insertAfter(
  8188. UE.uNode.createText(" &nbsp; &nbsp;"),
  8189. a
  8190. ),
  8191. a.parentNode.removeChild(a, a.innerText());
  8192. },
  8193. };
  8194. })(),
  8195. });
  8196. var b = a.options.pasteplain;
  8197. a.commands.pasteplain = {
  8198. queryCommandState: function() {
  8199. return b ? 1 : 0;
  8200. },
  8201. execCommand: function() {
  8202. b = 0 | !b;
  8203. },
  8204. notNeedUndo: 1,
  8205. };
  8206. }),
  8207. (UE.plugins.list = function() {
  8208. function a(a) {
  8209. var b = [];
  8210. for (var c in a) b.push(c);
  8211. return b;
  8212. }
  8213. function b(a) {
  8214. var b = a.className;
  8215. return domUtils.hasClass(a, /custom_/)
  8216. ? b.match(/custom_(\w+)/)[1]
  8217. : domUtils.getStyle(a, "list-style-type");
  8218. }
  8219. function c(a, c) {
  8220. utils.each(domUtils.getElementsByTagName(a, "ol ul"), function(f) {
  8221. if (domUtils.inDoc(f, a)) {
  8222. var g = f.parentNode;
  8223. if (g.tagName == f.tagName) {
  8224. var h = b(f) || ("OL" == f.tagName ? "decimal" : "disc"),
  8225. i = b(g) || ("OL" == g.tagName ? "decimal" : "disc");
  8226. if (h == i) {
  8227. var l = utils.indexOf(k[f.tagName], h);
  8228. (l = l + 1 == k[f.tagName].length ? 0 : l + 1),
  8229. e(f, k[f.tagName][l]);
  8230. }
  8231. }
  8232. var m = 0,
  8233. n = 2;
  8234. domUtils.hasClass(f, /custom_/)
  8235. ? (/[ou]l/i.test(g.tagName) && domUtils.hasClass(g, /custom_/)) ||
  8236. (n = 1)
  8237. : /[ou]l/i.test(g.tagName) &&
  8238. domUtils.hasClass(g, /custom_/) &&
  8239. (n = 3);
  8240. var o = domUtils.getStyle(f, "list-style-type");
  8241. o && (f.style.cssText = "list-style-type:" + o),
  8242. (f.className =
  8243. utils.trim(f.className.replace(/list-paddingleft-\w+/, "")) +
  8244. " list-paddingleft-" +
  8245. n),
  8246. utils.each(domUtils.getElementsByTagName(f, "li"), function(a) {
  8247. if ((a.style.cssText && (a.style.cssText = ""), !a.firstChild))
  8248. return void domUtils.remove(a);
  8249. if (a.parentNode === f) {
  8250. if ((m++, domUtils.hasClass(f, /custom_/))) {
  8251. var c = 1,
  8252. d = b(f);
  8253. if ("OL" == f.tagName) {
  8254. if (d)
  8255. switch (d) {
  8256. case "cn":
  8257. case "cn1":
  8258. case "cn2":
  8259. m > 10 && (m % 10 == 0 || (m > 10 && m < 20))
  8260. ? (c = 2)
  8261. : m > 20 && (c = 3);
  8262. break;
  8263. case "num2":
  8264. m > 9 && (c = 2);
  8265. }
  8266. a.className =
  8267. "list-" + j[d] + m + " list-" + d + "-paddingleft-" + c;
  8268. } else
  8269. a.className =
  8270. "list-" + j[d] + " list-" + d + "-paddingleft";
  8271. } else
  8272. a.className = a.className.replace(/list-[\w\-]+/gi, "");
  8273. var e = a.getAttribute("class");
  8274. null === e ||
  8275. e.replace(/\s/g, "") ||
  8276. domUtils.removeAttributes(a, "class");
  8277. }
  8278. }),
  8279. !c &&
  8280. d(
  8281. f,
  8282. f.tagName.toLowerCase(),
  8283. b(f) || domUtils.getStyle(f, "list-style-type"),
  8284. !0
  8285. );
  8286. }
  8287. });
  8288. }
  8289. function d(a, d, e, f) {
  8290. var g = a.nextSibling;
  8291. g &&
  8292. 1 == g.nodeType &&
  8293. g.tagName.toLowerCase() == d &&
  8294. (b(g) ||
  8295. domUtils.getStyle(g, "list-style-type") ||
  8296. ("ol" == d ? "decimal" : "disc")) == e &&
  8297. (domUtils.moveChild(g, a),
  8298. 0 == g.childNodes.length && domUtils.remove(g)),
  8299. g && domUtils.isFillChar(g) && domUtils.remove(g);
  8300. var h = a.previousSibling;
  8301. h &&
  8302. 1 == h.nodeType &&
  8303. h.tagName.toLowerCase() == d &&
  8304. (b(h) ||
  8305. domUtils.getStyle(h, "list-style-type") ||
  8306. ("ol" == d ? "decimal" : "disc")) == e &&
  8307. domUtils.moveChild(a, h),
  8308. h && domUtils.isFillChar(h) && domUtils.remove(h),
  8309. !f && domUtils.isEmptyBlock(a) && domUtils.remove(a),
  8310. b(a) && c(a.ownerDocument, !0);
  8311. }
  8312. function e(a, b) {
  8313. j[b] && (a.className = "custom_" + b);
  8314. try {
  8315. domUtils.setStyle(a, "list-style-type", b);
  8316. } catch (c) {}
  8317. }
  8318. function f(a) {
  8319. var b = a.previousSibling;
  8320. b && domUtils.isEmptyBlock(b) && domUtils.remove(b),
  8321. (b = a.nextSibling),
  8322. b && domUtils.isEmptyBlock(b) && domUtils.remove(b);
  8323. }
  8324. function g(a) {
  8325. for (; a && !domUtils.isBody(a); ) {
  8326. if ("TABLE" == a.nodeName) return null;
  8327. if ("LI" == a.nodeName) return a;
  8328. a = a.parentNode;
  8329. }
  8330. }
  8331. var h = this,
  8332. i = { TD: 1, PRE: 1, BLOCKQUOTE: 1 },
  8333. j = {
  8334. cn: "cn-1-",
  8335. cn1: "cn-2-",
  8336. cn2: "cn-3-",
  8337. num: "num-1-",
  8338. num1: "num-2-",
  8339. num2: "num-3-",
  8340. dash: "dash",
  8341. dot: "dot",
  8342. };
  8343. h.setOpt({
  8344. autoTransWordToList: !1,
  8345. insertorderedlist: {
  8346. num: "",
  8347. num1: "",
  8348. num2: "",
  8349. cn: "",
  8350. cn1: "",
  8351. cn2: "",
  8352. decimal: "",
  8353. "lower-alpha": "",
  8354. "lower-roman": "",
  8355. "upper-alpha": "",
  8356. "upper-roman": "",
  8357. },
  8358. insertunorderedlist: {
  8359. circle: "",
  8360. disc: "",
  8361. square: "",
  8362. dash: "",
  8363. dot: "",
  8364. },
  8365. listDefaultPaddingLeft: "30",
  8366. listiconpath: "http://bs.baidu.com/listicon/",
  8367. maxListLevel: -1,
  8368. disablePInList: !1,
  8369. });
  8370. var k = {
  8371. OL: a(h.options.insertorderedlist),
  8372. UL: a(h.options.insertunorderedlist),
  8373. },
  8374. l = h.options.listiconpath;
  8375. for (var m in j)
  8376. h.options.insertorderedlist.hasOwnProperty(m) ||
  8377. h.options.insertunorderedlist.hasOwnProperty(m) ||
  8378. delete j[m];
  8379. h.ready(function() {
  8380. var a = [];
  8381. for (var b in j) {
  8382. if ("dash" == b || "dot" == b)
  8383. a.push(
  8384. "li.list-" + j[b] + "{background-image:url(" + l + j[b] + ".gif)}"
  8385. ),
  8386. a.push(
  8387. "ul.custom_" +
  8388. b +
  8389. "{list-style:none;}ul.custom_" +
  8390. b +
  8391. " li{background-position:0 3px;background-repeat:no-repeat}"
  8392. );
  8393. else {
  8394. for (var c = 0; c < 99; c++)
  8395. a.push(
  8396. "li.list-" +
  8397. j[b] +
  8398. c +
  8399. "{background-image:url(" +
  8400. l +
  8401. "list-" +
  8402. j[b] +
  8403. c +
  8404. ".gif)}"
  8405. );
  8406. a.push(
  8407. "ol.custom_" +
  8408. b +
  8409. "{list-style:none;}ol.custom_" +
  8410. b +
  8411. " li{background-position:0 3px;background-repeat:no-repeat}"
  8412. );
  8413. }
  8414. switch (b) {
  8415. case "cn":
  8416. a.push("li.list-" + b + "-paddingleft-1{padding-left:25px}"),
  8417. a.push("li.list-" + b + "-paddingleft-2{padding-left:40px}"),
  8418. a.push("li.list-" + b + "-paddingleft-3{padding-left:55px}");
  8419. break;
  8420. case "cn1":
  8421. a.push("li.list-" + b + "-paddingleft-1{padding-left:30px}"),
  8422. a.push("li.list-" + b + "-paddingleft-2{padding-left:40px}"),
  8423. a.push("li.list-" + b + "-paddingleft-3{padding-left:55px}");
  8424. break;
  8425. case "cn2":
  8426. a.push("li.list-" + b + "-paddingleft-1{padding-left:40px}"),
  8427. a.push("li.list-" + b + "-paddingleft-2{padding-left:55px}"),
  8428. a.push("li.list-" + b + "-paddingleft-3{padding-left:68px}");
  8429. break;
  8430. case "num":
  8431. case "num1":
  8432. a.push("li.list-" + b + "-paddingleft-1{padding-left:25px}");
  8433. break;
  8434. case "num2":
  8435. a.push("li.list-" + b + "-paddingleft-1{padding-left:35px}"),
  8436. a.push("li.list-" + b + "-paddingleft-2{padding-left:40px}");
  8437. break;
  8438. case "dash":
  8439. a.push("li.list-" + b + "-paddingleft{padding-left:35px}");
  8440. break;
  8441. case "dot":
  8442. a.push("li.list-" + b + "-paddingleft{padding-left:20px}");
  8443. }
  8444. }
  8445. a.push(".list-paddingleft-1{padding-left:0}"),
  8446. a.push(
  8447. ".list-paddingleft-2{padding-left:" +
  8448. h.options.listDefaultPaddingLeft +
  8449. "px}"
  8450. ),
  8451. a.push(
  8452. ".list-paddingleft-3{padding-left:" +
  8453. 2 * h.options.listDefaultPaddingLeft +
  8454. "px}"
  8455. ),
  8456. utils.cssRule(
  8457. "list",
  8458. "ol,ul{margin:0;pading:0;" +
  8459. (browser.ie ? "" : "width:95%") +
  8460. "}li{clear:both;}" +
  8461. a.join("\n"),
  8462. h.document
  8463. );
  8464. }),
  8465. h.ready(function() {
  8466. domUtils.on(h.body, "cut", function() {
  8467. setTimeout(function() {
  8468. var a,
  8469. b = h.selection.getRange();
  8470. if (
  8471. !b.collapsed &&
  8472. (a = domUtils.findParentByTagName(
  8473. b.startContainer,
  8474. "li",
  8475. !0
  8476. )) &&
  8477. !a.nextSibling &&
  8478. domUtils.isEmptyBlock(a)
  8479. ) {
  8480. var c,
  8481. d = a.parentNode;
  8482. if ((c = d.previousSibling))
  8483. domUtils.remove(d),
  8484. b.setStartAtLast(c).collapse(!0),
  8485. b.select(!0);
  8486. else if ((c = d.nextSibling))
  8487. domUtils.remove(d),
  8488. b.setStartAtFirst(c).collapse(!0),
  8489. b.select(!0);
  8490. else {
  8491. var e = h.document.createElement("p");
  8492. domUtils.fillNode(h.document, e),
  8493. d.parentNode.insertBefore(e, d),
  8494. domUtils.remove(d),
  8495. b.setStart(e, 0).collapse(!0),
  8496. b.select(!0);
  8497. }
  8498. }
  8499. });
  8500. });
  8501. }),
  8502. h.addListener("beforepaste", function(a, c) {
  8503. var d,
  8504. e = this,
  8505. f = e.selection.getRange(),
  8506. g = UE.htmlparser(c.html, !0);
  8507. if ((d = domUtils.findParentByTagName(f.startContainer, "li", !0))) {
  8508. var h = d.parentNode,
  8509. i = "OL" == h.tagName ? "ul" : "ol";
  8510. utils.each(g.getNodesByTagName(i), function(c) {
  8511. if (((c.tagName = h.tagName), c.setAttr(), c.parentNode === g))
  8512. a = b(h) || ("OL" == h.tagName ? "decimal" : "disc");
  8513. else {
  8514. var d = c.parentNode.getAttr("class");
  8515. (a =
  8516. d && /custom_/.test(d)
  8517. ? d.match(/custom_(\w+)/)[1]
  8518. : c.parentNode.getStyle("list-style-type")),
  8519. a || (a = "OL" == h.tagName ? "decimal" : "disc");
  8520. }
  8521. var e = utils.indexOf(k[h.tagName], a);
  8522. c.parentNode !== g &&
  8523. (e = e + 1 == k[h.tagName].length ? 0 : e + 1);
  8524. var f = k[h.tagName][e];
  8525. j[f]
  8526. ? c.setAttr("class", "custom_" + f)
  8527. : c.setStyle("list-style-type", f);
  8528. });
  8529. }
  8530. c.html = g.toHtml();
  8531. }),
  8532. h.getOpt("disablePInList") === !0 &&
  8533. h.addOutputRule(function(a) {
  8534. utils.each(a.getNodesByTagName("li"), function(a) {
  8535. var b = [],
  8536. c = 0;
  8537. utils.each(a.children, function(d) {
  8538. if ("p" == d.tagName) {
  8539. for (var e; (e = d.children.pop()); )
  8540. b.splice(c, 0, e), (e.parentNode = a), (lastNode = e);
  8541. if (
  8542. ((e = b[b.length - 1]),
  8543. !e || "element" != e.type || "br" != e.tagName)
  8544. ) {
  8545. var f = UE.uNode.createElement("br");
  8546. (f.parentNode = a), b.push(f);
  8547. }
  8548. c = b.length;
  8549. }
  8550. }),
  8551. b.length && (a.children = b);
  8552. });
  8553. }),
  8554. h.addInputRule(function(a) {
  8555. function b(a, b) {
  8556. var e = b.firstChild();
  8557. if (
  8558. e &&
  8559. "element" == e.type &&
  8560. "span" == e.tagName &&
  8561. /Wingdings|Symbol/.test(e.getStyle("font-family"))
  8562. ) {
  8563. for (var f in d) if (d[f] == e.data) return f;
  8564. return "disc";
  8565. }
  8566. for (var f in c) if (c[f].test(a)) return f;
  8567. }
  8568. if (
  8569. (utils.each(a.getNodesByTagName("li"), function(a) {
  8570. for (
  8571. var b, c = UE.uNode.createElement("p"), d = 0;
  8572. (b = a.children[d]);
  8573. )
  8574. "text" == b.type || dtd.p[b.tagName]
  8575. ? c.appendChild(b)
  8576. : c.firstChild()
  8577. ? (a.insertBefore(c, b),
  8578. (c = UE.uNode.createElement("p")),
  8579. (d += 2))
  8580. : d++;
  8581. ((c.firstChild() && !c.parentNode) || !a.firstChild()) &&
  8582. a.appendChild(c),
  8583. c.firstChild() || c.innerHTML(browser.ie ? "&nbsp;" : "<br/>");
  8584. var e = a.firstChild(),
  8585. f = e.lastChild();
  8586. f && "text" == f.type && /^\s*$/.test(f.data) && e.removeChild(f);
  8587. }),
  8588. h.options.autoTransWordToList)
  8589. ) {
  8590. var c = {
  8591. num1: /^\d+\)/,
  8592. decimal: /^\d+\./,
  8593. "lower-alpha": /^[a-z]+\)/,
  8594. "upper-alpha": /^[A-Z]+\./,
  8595. cn: /^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/,
  8596. cn2: /^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/,
  8597. },
  8598. d = { square: "n" };
  8599. utils.each(a.getNodesByTagName("p"), function(a) {
  8600. function d(a, b, d) {
  8601. if ("ol" == a.tagName)
  8602. if (browser.ie) {
  8603. var e = b.firstChild();
  8604. "element" == e.type &&
  8605. "span" == e.tagName &&
  8606. c[d].test(e.innerText()) &&
  8607. b.removeChild(e);
  8608. } else b.innerHTML(b.innerHTML().replace(c[d], ""));
  8609. else b.removeChild(b.firstChild());
  8610. var f = UE.uNode.createElement("li");
  8611. f.appendChild(b), a.appendChild(f);
  8612. }
  8613. if ("MsoListParagraph" == a.getAttr("class")) {
  8614. a.setStyle("margin", ""),
  8615. a.setStyle("margin-left", ""),
  8616. a.setAttr("class", "");
  8617. var e,
  8618. f = a,
  8619. g = a;
  8620. if ("li" != a.parentNode.tagName && (e = b(a.innerText(), a))) {
  8621. var i = UE.uNode.createElement(
  8622. h.options.insertorderedlist.hasOwnProperty(e) ? "ol" : "ul"
  8623. );
  8624. for (
  8625. j[e]
  8626. ? i.setAttr("class", "custom_" + e)
  8627. : i.setStyle("list-style-type", e);
  8628. a && "li" != a.parentNode.tagName && b(a.innerText(), a);
  8629. )
  8630. (f = a.nextSibling()),
  8631. f || a.parentNode.insertBefore(i, a),
  8632. d(i, a, e),
  8633. (a = f);
  8634. !i.parentNode &&
  8635. a &&
  8636. a.parentNode &&
  8637. a.parentNode.insertBefore(i, a);
  8638. }
  8639. var k = g.firstChild();
  8640. k &&
  8641. "element" == k.type &&
  8642. "span" == k.tagName &&
  8643. /^\s*(&nbsp;)+\s*$/.test(k.innerText()) &&
  8644. k.parentNode.removeChild(k);
  8645. }
  8646. });
  8647. }
  8648. }),
  8649. h.addListener("contentchange", function() {
  8650. c(h.document);
  8651. }),
  8652. h.addListener("keydown", function(a, b) {
  8653. function c() {
  8654. b.preventDefault ? b.preventDefault() : (b.returnValue = !1),
  8655. h.fireEvent("contentchange"),
  8656. h.undoManger && h.undoManger.save();
  8657. }
  8658. function d(a, b) {
  8659. for (; a && !domUtils.isBody(a); ) {
  8660. if (b(a)) return null;
  8661. if (1 == a.nodeType && /[ou]l/i.test(a.tagName)) return a;
  8662. a = a.parentNode;
  8663. }
  8664. return null;
  8665. }
  8666. var e = b.keyCode || b.which;
  8667. if (13 == e && !b.shiftKey) {
  8668. var g = h.selection.getRange(),
  8669. i = domUtils.findParent(
  8670. g.startContainer,
  8671. function(a) {
  8672. return domUtils.isBlockElm(a);
  8673. },
  8674. !0
  8675. ),
  8676. j = domUtils.findParentByTagName(g.startContainer, "li", !0);
  8677. if (i && "PRE" != i.tagName && !j) {
  8678. var k = i.innerHTML.replace(
  8679. new RegExp(domUtils.fillChar, "g"),
  8680. ""
  8681. );
  8682. /^\s*1\s*\.[^\d]/.test(k) &&
  8683. ((i.innerHTML = k.replace(/^\s*1\s*\./, "")),
  8684. g
  8685. .setStartAtLast(i)
  8686. .collapse(!0)
  8687. .select(),
  8688. (h.__hasEnterExecCommand = !0),
  8689. h.execCommand("insertorderedlist"),
  8690. (h.__hasEnterExecCommand = !1));
  8691. }
  8692. var l = h.selection.getRange(),
  8693. m = d(l.startContainer, function(a) {
  8694. return "TABLE" == a.tagName;
  8695. }),
  8696. n = l.collapsed
  8697. ? m
  8698. : d(l.endContainer, function(a) {
  8699. return "TABLE" == a.tagName;
  8700. });
  8701. if (m && n && m === n) {
  8702. if (!l.collapsed) {
  8703. if (
  8704. ((m = domUtils.findParentByTagName(
  8705. l.startContainer,
  8706. "li",
  8707. !0
  8708. )),
  8709. (n = domUtils.findParentByTagName(l.endContainer, "li", !0)),
  8710. !m || !n || m !== n)
  8711. ) {
  8712. var o = l.cloneRange(),
  8713. p = o.collapse(!1).createBookmark();
  8714. l.deleteContents(), o.moveToBookmark(p);
  8715. var j = domUtils.findParentByTagName(
  8716. o.startContainer,
  8717. "li",
  8718. !0
  8719. );
  8720. return f(j), o.select(), void c();
  8721. }
  8722. if (
  8723. (l.deleteContents(),
  8724. (j = domUtils.findParentByTagName(
  8725. l.startContainer,
  8726. "li",
  8727. !0
  8728. )),
  8729. j && domUtils.isEmptyBlock(j))
  8730. )
  8731. return (
  8732. (v = j.previousSibling),
  8733. (next = j.nextSibling),
  8734. (s = h.document.createElement("p")),
  8735. domUtils.fillNode(h.document, s),
  8736. (q = j.parentNode),
  8737. v && next
  8738. ? (l
  8739. .setStart(next, 0)
  8740. .collapse(!0)
  8741. .select(!0),
  8742. domUtils.remove(j))
  8743. : ((v || next) && v
  8744. ? j.parentNode.parentNode.insertBefore(
  8745. s,
  8746. q.nextSibling
  8747. )
  8748. : q.parentNode.insertBefore(s, q),
  8749. domUtils.remove(j),
  8750. q.firstChild || domUtils.remove(q),
  8751. l.setStart(s, 0).setCursor()),
  8752. void c()
  8753. );
  8754. }
  8755. if (
  8756. (j = domUtils.findParentByTagName(l.startContainer, "li", !0))
  8757. ) {
  8758. if (domUtils.isEmptyBlock(j)) {
  8759. p = l.createBookmark();
  8760. var q = j.parentNode;
  8761. if (
  8762. (j !== q.lastChild
  8763. ? (domUtils.breakParent(j, q), f(j))
  8764. : (q.parentNode.insertBefore(j, q.nextSibling),
  8765. domUtils.isEmptyNode(q) && domUtils.remove(q)),
  8766. !dtd.$list[j.parentNode.tagName])
  8767. )
  8768. if (domUtils.isBlockElm(j.firstChild))
  8769. domUtils.remove(j, !0);
  8770. else {
  8771. for (
  8772. s = h.document.createElement("p"),
  8773. j.parentNode.insertBefore(s, j);
  8774. j.firstChild;
  8775. )
  8776. s.appendChild(j.firstChild);
  8777. domUtils.remove(j);
  8778. }
  8779. l.moveToBookmark(p).select();
  8780. } else {
  8781. var r = j.firstChild;
  8782. if (!r || !domUtils.isBlockElm(r)) {
  8783. var s = h.document.createElement("p");
  8784. for (
  8785. !j.firstChild && domUtils.fillNode(h.document, s);
  8786. j.firstChild;
  8787. )
  8788. s.appendChild(j.firstChild);
  8789. j.appendChild(s), (r = s);
  8790. }
  8791. var t = h.document.createElement("span");
  8792. l.insertNode(t), domUtils.breakParent(t, j);
  8793. var u = t.nextSibling;
  8794. (r = u.firstChild),
  8795. r ||
  8796. ((s = h.document.createElement("p")),
  8797. domUtils.fillNode(h.document, s),
  8798. u.appendChild(s),
  8799. (r = s)),
  8800. domUtils.isEmptyNode(r) &&
  8801. ((r.innerHTML = ""), domUtils.fillNode(h.document, r)),
  8802. l
  8803. .setStart(r, 0)
  8804. .collapse(!0)
  8805. .shrinkBoundary()
  8806. .select(),
  8807. domUtils.remove(t);
  8808. var v = u.previousSibling;
  8809. v &&
  8810. domUtils.isEmptyBlock(v) &&
  8811. ((v.innerHTML = "<p></p>"),
  8812. domUtils.fillNode(h.document, v.firstChild));
  8813. }
  8814. c();
  8815. }
  8816. }
  8817. }
  8818. if (
  8819. 8 == e &&
  8820. ((l = h.selection.getRange()),
  8821. l.collapsed &&
  8822. domUtils.isStartInblock(l) &&
  8823. ((o = l.cloneRange().trimBoundary()),
  8824. (j = domUtils.findParentByTagName(l.startContainer, "li", !0)),
  8825. j && domUtils.isStartInblock(o)))
  8826. ) {
  8827. if (
  8828. ((m = domUtils.findParentByTagName(l.startContainer, "p", !0)),
  8829. m && m !== j.firstChild)
  8830. ) {
  8831. var q = domUtils.findParentByTagName(m, ["ol", "ul"]);
  8832. return (
  8833. domUtils.breakParent(m, q),
  8834. f(m),
  8835. h.fireEvent("contentchange"),
  8836. l.setStart(m, 0).setCursor(!1, !0),
  8837. h.fireEvent("saveScene"),
  8838. void domUtils.preventDefault(b)
  8839. );
  8840. }
  8841. if (j && (v = j.previousSibling)) {
  8842. if (46 == e && j.childNodes.length) return;
  8843. if (
  8844. (dtd.$list[v.tagName] && (v = v.lastChild),
  8845. h.undoManger && h.undoManger.save(),
  8846. (r = j.firstChild),
  8847. domUtils.isBlockElm(r))
  8848. )
  8849. if (domUtils.isEmptyNode(r))
  8850. for (
  8851. v.appendChild(r), l.setStart(r, 0).setCursor(!1, !0);
  8852. j.firstChild;
  8853. )
  8854. v.appendChild(j.firstChild);
  8855. else
  8856. (t = h.document.createElement("span")),
  8857. l.insertNode(t),
  8858. domUtils.isEmptyBlock(v) && (v.innerHTML = ""),
  8859. domUtils.moveChild(j, v),
  8860. l
  8861. .setStartBefore(t)
  8862. .collapse(!0)
  8863. .select(!0),
  8864. domUtils.remove(t);
  8865. else if (domUtils.isEmptyNode(j)) {
  8866. var s = h.document.createElement("p");
  8867. v.appendChild(s), l.setStart(s, 0).setCursor();
  8868. } else
  8869. for (
  8870. l
  8871. .setEnd(v, v.childNodes.length)
  8872. .collapse()
  8873. .select(!0);
  8874. j.firstChild;
  8875. )
  8876. v.appendChild(j.firstChild);
  8877. return (
  8878. domUtils.remove(j),
  8879. h.fireEvent("contentchange"),
  8880. h.fireEvent("saveScene"),
  8881. void domUtils.preventDefault(b)
  8882. );
  8883. }
  8884. if (j && !j.previousSibling) {
  8885. var q = j.parentNode,
  8886. p = l.createBookmark();
  8887. if (domUtils.isTagNode(q.parentNode, "ol ul"))
  8888. q.parentNode.insertBefore(j, q),
  8889. domUtils.isEmptyNode(q) && domUtils.remove(q);
  8890. else {
  8891. for (; j.firstChild; )
  8892. q.parentNode.insertBefore(j.firstChild, q);
  8893. domUtils.remove(j),
  8894. domUtils.isEmptyNode(q) && domUtils.remove(q);
  8895. }
  8896. return (
  8897. l.moveToBookmark(p).setCursor(!1, !0),
  8898. h.fireEvent("contentchange"),
  8899. h.fireEvent("saveScene"),
  8900. void domUtils.preventDefault(b)
  8901. );
  8902. }
  8903. }
  8904. }),
  8905. h.addListener("keyup", function(a, c) {
  8906. var e = c.keyCode || c.which;
  8907. if (8 == e) {
  8908. var f,
  8909. g = h.selection.getRange();
  8910. (f = domUtils.findParentByTagName(
  8911. g.startContainer,
  8912. ["ol", "ul"],
  8913. !0
  8914. )) &&
  8915. d(
  8916. f,
  8917. f.tagName.toLowerCase(),
  8918. b(f) || domUtils.getComputedStyle(f, "list-style-type"),
  8919. !0
  8920. );
  8921. }
  8922. }),
  8923. h.addListener("tabkeydown", function() {
  8924. function a(a) {
  8925. if (h.options.maxListLevel != -1) {
  8926. for (var b = a.parentNode, c = 0; /[ou]l/i.test(b.tagName); )
  8927. c++, (b = b.parentNode);
  8928. if (c >= h.options.maxListLevel) return !0;
  8929. }
  8930. }
  8931. var c = h.selection.getRange(),
  8932. f = domUtils.findParentByTagName(c.startContainer, "li", !0);
  8933. if (f) {
  8934. var g;
  8935. if (!c.collapsed) {
  8936. h.fireEvent("saveScene"), (g = c.createBookmark());
  8937. for (var i, j, l = 0, m = domUtils.findParents(f); (j = m[l++]); )
  8938. if (domUtils.isTagNode(j, "ol ul")) {
  8939. i = j;
  8940. break;
  8941. }
  8942. var n = f;
  8943. if (g.end)
  8944. for (
  8945. ;
  8946. n &&
  8947. !(
  8948. domUtils.getPosition(n, g.end) & domUtils.POSITION_FOLLOWING
  8949. );
  8950. )
  8951. if (a(n))
  8952. n = domUtils.getNextDomNode(n, !1, null, function(a) {
  8953. return a !== i;
  8954. });
  8955. else {
  8956. var o = n.parentNode,
  8957. p = h.document.createElement(o.tagName),
  8958. q = utils.indexOf(
  8959. k[p.tagName],
  8960. b(o) || domUtils.getComputedStyle(o, "list-style-type")
  8961. ),
  8962. r = q + 1 == k[p.tagName].length ? 0 : q + 1,
  8963. s = k[p.tagName][r];
  8964. for (
  8965. e(p, s), o.insertBefore(p, n);
  8966. n &&
  8967. !(
  8968. domUtils.getPosition(n, g.end) &
  8969. domUtils.POSITION_FOLLOWING
  8970. );
  8971. ) {
  8972. if (
  8973. ((f = n.nextSibling),
  8974. p.appendChild(n),
  8975. !f || domUtils.isTagNode(f, "ol ul"))
  8976. ) {
  8977. if (f)
  8978. for (; (f = f.firstChild) && "LI" != f.tagName; );
  8979. else
  8980. f = domUtils.getNextDomNode(n, !1, null, function(a) {
  8981. return a !== i;
  8982. });
  8983. break;
  8984. }
  8985. n = f;
  8986. }
  8987. d(p, p.tagName.toLowerCase(), s), (n = f);
  8988. }
  8989. return (
  8990. h.fireEvent("contentchange"), c.moveToBookmark(g).select(), !0
  8991. );
  8992. }
  8993. if (a(f)) return !0;
  8994. var o = f.parentNode,
  8995. p = h.document.createElement(o.tagName),
  8996. q = utils.indexOf(
  8997. k[p.tagName],
  8998. b(o) || domUtils.getComputedStyle(o, "list-style-type")
  8999. );
  9000. q = q + 1 == k[p.tagName].length ? 0 : q + 1;
  9001. var s = k[p.tagName][q];
  9002. if ((e(p, s), domUtils.isStartInblock(c)))
  9003. return (
  9004. h.fireEvent("saveScene"),
  9005. (g = c.createBookmark()),
  9006. o.insertBefore(p, f),
  9007. p.appendChild(f),
  9008. d(p, p.tagName.toLowerCase(), s),
  9009. h.fireEvent("contentchange"),
  9010. c.moveToBookmark(g).select(!0),
  9011. !0
  9012. );
  9013. }
  9014. }),
  9015. (h.commands.insertorderedlist = h.commands.insertunorderedlist = {
  9016. execCommand: function(a, c) {
  9017. c ||
  9018. (c = "insertorderedlist" == a.toLowerCase() ? "decimal" : "disc");
  9019. var f = this,
  9020. h = this.selection.getRange(),
  9021. j = function(a) {
  9022. return 1 == a.nodeType
  9023. ? "br" != a.tagName.toLowerCase()
  9024. : !domUtils.isWhitespace(a);
  9025. },
  9026. k = "insertorderedlist" == a.toLowerCase() ? "ol" : "ul",
  9027. l = f.document.createDocumentFragment();
  9028. h.adjustmentBoundary().shrinkBoundary();
  9029. var m,
  9030. n,
  9031. o,
  9032. p,
  9033. q = h.createBookmark(!0),
  9034. r = g(f.document.getElementById(q.start)),
  9035. s = 0,
  9036. t = g(f.document.getElementById(q.end)),
  9037. u = 0;
  9038. if (r || t) {
  9039. if (
  9040. (r && (m = r.parentNode),
  9041. q.end || (t = r),
  9042. t && (n = t.parentNode),
  9043. m === n)
  9044. ) {
  9045. for (; r !== t; ) {
  9046. if (
  9047. ((p = r),
  9048. (r = r.nextSibling),
  9049. !domUtils.isBlockElm(p.firstChild))
  9050. ) {
  9051. for (var v = f.document.createElement("p"); p.firstChild; )
  9052. v.appendChild(p.firstChild);
  9053. p.appendChild(v);
  9054. }
  9055. l.appendChild(p);
  9056. }
  9057. if (
  9058. ((p = f.document.createElement("span")),
  9059. m.insertBefore(p, t),
  9060. !domUtils.isBlockElm(t.firstChild))
  9061. ) {
  9062. for (v = f.document.createElement("p"); t.firstChild; )
  9063. v.appendChild(t.firstChild);
  9064. t.appendChild(v);
  9065. }
  9066. l.appendChild(t),
  9067. domUtils.breakParent(p, m),
  9068. domUtils.isEmptyNode(p.previousSibling) &&
  9069. domUtils.remove(p.previousSibling),
  9070. domUtils.isEmptyNode(p.nextSibling) &&
  9071. domUtils.remove(p.nextSibling);
  9072. var w =
  9073. b(m) ||
  9074. domUtils.getComputedStyle(m, "list-style-type") ||
  9075. ("insertorderedlist" == a.toLowerCase() ? "decimal" : "disc");
  9076. if (m.tagName.toLowerCase() == k && w == c) {
  9077. for (
  9078. var x, y = 0, z = f.document.createDocumentFragment();
  9079. (x = l.firstChild);
  9080. )
  9081. if (domUtils.isTagNode(x, "ol ul")) z.appendChild(x);
  9082. else
  9083. for (; x.firstChild; )
  9084. z.appendChild(x.firstChild), domUtils.remove(x);
  9085. p.parentNode.insertBefore(z, p);
  9086. } else
  9087. (o = f.document.createElement(k)),
  9088. e(o, c),
  9089. o.appendChild(l),
  9090. p.parentNode.insertBefore(o, p);
  9091. return (
  9092. domUtils.remove(p),
  9093. o && d(o, k, c),
  9094. void h.moveToBookmark(q).select()
  9095. );
  9096. }
  9097. if (r) {
  9098. for (; r; ) {
  9099. if (((p = r.nextSibling), domUtils.isTagNode(r, "ol ul")))
  9100. l.appendChild(r);
  9101. else {
  9102. for (
  9103. var A = f.document.createDocumentFragment(), B = 0;
  9104. r.firstChild;
  9105. )
  9106. domUtils.isBlockElm(r.firstChild) && (B = 1),
  9107. A.appendChild(r.firstChild);
  9108. if (B) l.appendChild(A);
  9109. else {
  9110. var C = f.document.createElement("p");
  9111. C.appendChild(A), l.appendChild(C);
  9112. }
  9113. domUtils.remove(r);
  9114. }
  9115. r = p;
  9116. }
  9117. m.parentNode.insertBefore(l, m.nextSibling),
  9118. domUtils.isEmptyNode(m)
  9119. ? (h.setStartBefore(m), domUtils.remove(m))
  9120. : h.setStartAfter(m),
  9121. (s = 1);
  9122. }
  9123. if (t && domUtils.inDoc(n, f.document)) {
  9124. for (r = n.firstChild; r && r !== t; ) {
  9125. if (((p = r.nextSibling), domUtils.isTagNode(r, "ol ul")))
  9126. l.appendChild(r);
  9127. else {
  9128. for (
  9129. A = f.document.createDocumentFragment(), B = 0;
  9130. r.firstChild;
  9131. )
  9132. domUtils.isBlockElm(r.firstChild) && (B = 1),
  9133. A.appendChild(r.firstChild);
  9134. B
  9135. ? l.appendChild(A)
  9136. : ((C = f.document.createElement("p")),
  9137. C.appendChild(A),
  9138. l.appendChild(C)),
  9139. domUtils.remove(r);
  9140. }
  9141. r = p;
  9142. }
  9143. var D = domUtils.createElement(f.document, "div", {
  9144. tmpDiv: 1,
  9145. });
  9146. domUtils.moveChild(t, D),
  9147. l.appendChild(D),
  9148. domUtils.remove(t),
  9149. n.parentNode.insertBefore(l, n),
  9150. h.setEndBefore(n),
  9151. domUtils.isEmptyNode(n) && domUtils.remove(n),
  9152. (u = 1);
  9153. }
  9154. }
  9155. s || h.setStartBefore(f.document.getElementById(q.start)),
  9156. q.end && !u && h.setEndAfter(f.document.getElementById(q.end)),
  9157. h.enlarge(!0, function(a) {
  9158. return i[a.tagName];
  9159. }),
  9160. (l = f.document.createDocumentFragment());
  9161. for (
  9162. var E,
  9163. F = h.createBookmark(),
  9164. G = domUtils.getNextDomNode(F.start, !1, j),
  9165. H = h.cloneRange(),
  9166. I = domUtils.isBlockElm;
  9167. G &&
  9168. G !== F.end &&
  9169. domUtils.getPosition(G, F.end) & domUtils.POSITION_PRECEDING;
  9170. )
  9171. if (3 == G.nodeType || dtd.li[G.tagName]) {
  9172. if (1 == G.nodeType && dtd.$list[G.tagName]) {
  9173. for (; G.firstChild; ) l.appendChild(G.firstChild);
  9174. (E = domUtils.getNextDomNode(G, !1, j)),
  9175. domUtils.remove(G),
  9176. (G = E);
  9177. continue;
  9178. }
  9179. for (
  9180. E = G, H.setStartBefore(G);
  9181. G && G !== F.end && (!I(G) || domUtils.isBookmarkNode(G));
  9182. )
  9183. (E = G),
  9184. (G = domUtils.getNextDomNode(G, !1, null, function(a) {
  9185. return !i[a.tagName];
  9186. }));
  9187. G &&
  9188. I(G) &&
  9189. ((p = domUtils.getNextDomNode(E, !1, j)),
  9190. p &&
  9191. domUtils.isBookmarkNode(p) &&
  9192. ((G = domUtils.getNextDomNode(p, !1, j)), (E = p))),
  9193. H.setEndAfter(E),
  9194. (G = domUtils.getNextDomNode(E, !1, j));
  9195. var J = h.document.createElement("li");
  9196. if (
  9197. (J.appendChild(H.extractContents()), domUtils.isEmptyNode(J))
  9198. ) {
  9199. for (var E = h.document.createElement("p"); J.firstChild; )
  9200. E.appendChild(J.firstChild);
  9201. J.appendChild(E);
  9202. }
  9203. l.appendChild(J);
  9204. } else G = domUtils.getNextDomNode(G, !0, j);
  9205. h.moveToBookmark(F).collapse(!0),
  9206. (o = f.document.createElement(k)),
  9207. e(o, c),
  9208. o.appendChild(l),
  9209. h.insertNode(o),
  9210. d(o, k, c);
  9211. for (
  9212. var x, y = 0, K = domUtils.getElementsByTagName(o, "div");
  9213. (x = K[y++]);
  9214. )
  9215. x.getAttribute("tmpDiv") && domUtils.remove(x, !0);
  9216. h.moveToBookmark(q).select();
  9217. },
  9218. queryCommandState: function(a) {
  9219. for (
  9220. var b,
  9221. c = "insertorderedlist" == a.toLowerCase() ? "ol" : "ul",
  9222. d = this.selection.getStartElementPath(),
  9223. e = 0;
  9224. (b = d[e++]);
  9225. ) {
  9226. if ("TABLE" == b.nodeName) return 0;
  9227. if (c == b.nodeName.toLowerCase()) return 1;
  9228. }
  9229. return 0;
  9230. },
  9231. queryCommandValue: function(a) {
  9232. for (
  9233. var c,
  9234. d,
  9235. e = "insertorderedlist" == a.toLowerCase() ? "ol" : "ul",
  9236. f = this.selection.getStartElementPath(),
  9237. g = 0;
  9238. (d = f[g++]);
  9239. ) {
  9240. if ("TABLE" == d.nodeName) {
  9241. c = null;
  9242. break;
  9243. }
  9244. if (e == d.nodeName.toLowerCase()) {
  9245. c = d;
  9246. break;
  9247. }
  9248. }
  9249. return c
  9250. ? b(c) || domUtils.getComputedStyle(c, "list-style-type")
  9251. : null;
  9252. },
  9253. });
  9254. }),
  9255. (function() {
  9256. var a = {
  9257. textarea: function(a, b) {
  9258. var c = b.ownerDocument.createElement("textarea");
  9259. return (
  9260. (c.style.cssText =
  9261. "position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;"),
  9262. browser.ie &&
  9263. browser.version < 8 &&
  9264. ((c.style.width = b.offsetWidth + "px"),
  9265. (c.style.height = b.offsetHeight + "px"),
  9266. (b.onresize = function() {
  9267. (c.style.width = b.offsetWidth + "px"),
  9268. (c.style.height = b.offsetHeight + "px");
  9269. })),
  9270. b.appendChild(c),
  9271. {
  9272. setContent: function(a) {
  9273. c.value = a;
  9274. },
  9275. getContent: function() {
  9276. return c.value;
  9277. },
  9278. select: function() {
  9279. var a;
  9280. browser.ie
  9281. ? ((a = c.createTextRange()), a.collapse(!0), a.select())
  9282. : (c.setSelectionRange(0, 0), c.focus());
  9283. },
  9284. dispose: function() {
  9285. b.removeChild(c), (b.onresize = null), (c = null), (b = null);
  9286. },
  9287. }
  9288. );
  9289. },
  9290. codemirror: function(a, b) {
  9291. var c = window.CodeMirror(b, {
  9292. mode: "text/html",
  9293. tabMode: "indent",
  9294. lineNumbers: !0,
  9295. lineWrapping: !0,
  9296. }),
  9297. d = c.getWrapperElement();
  9298. return (
  9299. (d.style.cssText =
  9300. 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;'),
  9301. (c.getScrollerElement().style.cssText =
  9302. "position:absolute;left:0;top:0;width:100%;height:100%;"),
  9303. c.refresh(),
  9304. {
  9305. getCodeMirror: function() {
  9306. return c;
  9307. },
  9308. setContent: function(a) {
  9309. c.setValue(a);
  9310. },
  9311. getContent: function() {
  9312. return c.getValue();
  9313. },
  9314. select: function() {
  9315. c.focus();
  9316. },
  9317. dispose: function() {
  9318. b.removeChild(d), (d = null), (c = null);
  9319. },
  9320. }
  9321. );
  9322. },
  9323. };
  9324. UE.plugins.source = function() {
  9325. function b(b) {
  9326. return a[
  9327. "codemirror" == f.sourceEditor && window.CodeMirror
  9328. ? "codemirror"
  9329. : "textarea"
  9330. ](e, b);
  9331. }
  9332. var c,
  9333. d,
  9334. e = this,
  9335. f = this.options,
  9336. g = !1;
  9337. (f.sourceEditor = browser.ie
  9338. ? "textarea"
  9339. : f.sourceEditor || "codemirror"),
  9340. e.setOpt({ sourceEditorFirst: !1 });
  9341. var h, i, j;
  9342. e.commands.source = {
  9343. execCommand: function() {
  9344. if ((g = !g)) {
  9345. (j = e.selection.getRange().createAddress(!1, !0)),
  9346. e.undoManger && e.undoManger.save(!0),
  9347. browser.gecko && (e.body.contentEditable = !1),
  9348. (h = e.iframe.style.cssText),
  9349. (e.iframe.style.cssText +=
  9350. "position:absolute;left:-32768px;top:-32768px;"),
  9351. e.fireEvent("beforegetcontent");
  9352. var a = UE.htmlparser(e.body.innerHTML);
  9353. e.filterOutputRule(a),
  9354. a.traversal(function(a) {
  9355. if ("element" == a.type)
  9356. switch (a.tagName) {
  9357. case "td":
  9358. case "th":
  9359. case "caption":
  9360. a.children &&
  9361. 1 == a.children.length &&
  9362. "br" == a.firstChild().tagName &&
  9363. a.removeChild(a.firstChild());
  9364. break;
  9365. case "pre":
  9366. a.innerText(a.innerText().replace(/&nbsp;/g, " "));
  9367. }
  9368. }),
  9369. e.fireEvent("aftergetcontent");
  9370. var f = a.toHtml(!0);
  9371. (c = b(e.iframe.parentNode)),
  9372. c.setContent(f),
  9373. (d = e.setContent),
  9374. (e.setContent = function(a) {
  9375. var b = UE.htmlparser(a);
  9376. e.filterInputRule(b), (a = b.toHtml()), c.setContent(a);
  9377. }),
  9378. setTimeout(function() {
  9379. c.select(),
  9380. e.addListener("fullscreenchanged", function() {
  9381. try {
  9382. c.getCodeMirror().refresh();
  9383. } catch (a) {}
  9384. });
  9385. }),
  9386. (i = e.getContent),
  9387. (e.getContent = function() {
  9388. return (
  9389. c.getContent() ||
  9390. "<p>" + (browser.ie ? "" : "<br/>") + "</p>"
  9391. );
  9392. });
  9393. } else {
  9394. e.iframe.style.cssText = h;
  9395. var k =
  9396. c.getContent() || "<p>" + (browser.ie ? "" : "<br/>") + "</p>";
  9397. (k = k.replace(
  9398. new RegExp("[\\r\\t\\n ]*</?(\\w+)\\s*(?:[^>]*)>", "g"),
  9399. function(a, b) {
  9400. return b && !dtd.$inlineWithA[b.toLowerCase()]
  9401. ? a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g, "")
  9402. : a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g, "");
  9403. }
  9404. )),
  9405. (e.setContent = d),
  9406. e.setContent(k),
  9407. c.dispose(),
  9408. (c = null),
  9409. (e.getContent = i);
  9410. var l = e.body.firstChild;
  9411. if (
  9412. (l ||
  9413. ((e.body.innerHTML =
  9414. "<p>" + (browser.ie ? "" : "<br/>") + "</p>"),
  9415. (l = e.body.firstChild)),
  9416. e.undoManger && e.undoManger.save(!0),
  9417. browser.gecko)
  9418. ) {
  9419. var m = document.createElement("input");
  9420. (m.style.cssText = "position:absolute;left:0;top:-32768px"),
  9421. document.body.appendChild(m),
  9422. (e.body.contentEditable = !1),
  9423. setTimeout(function() {
  9424. domUtils.setViewportOffset(m, { left: -32768, top: 0 }),
  9425. m.focus(),
  9426. setTimeout(function() {
  9427. (e.body.contentEditable = !0),
  9428. e.selection
  9429. .getRange()
  9430. .moveToAddress(j)
  9431. .select(!0),
  9432. domUtils.remove(m);
  9433. });
  9434. });
  9435. } else
  9436. try {
  9437. e.selection
  9438. .getRange()
  9439. .moveToAddress(j)
  9440. .select(!0);
  9441. } catch (n) {}
  9442. }
  9443. this.fireEvent("sourcemodechanged", g);
  9444. },
  9445. queryCommandState: function() {
  9446. return 0 | g;
  9447. },
  9448. notNeedUndo: 1,
  9449. };
  9450. var k = e.queryCommandState;
  9451. (e.queryCommandState = function(a) {
  9452. return (
  9453. (a = a.toLowerCase()),
  9454. g
  9455. ? a in { source: 1, fullscreen: 1 }
  9456. ? 1
  9457. : -1
  9458. : k.apply(this, arguments)
  9459. );
  9460. }),
  9461. "codemirror" == f.sourceEditor &&
  9462. e.addListener("ready", function() {
  9463. utils.loadFile(
  9464. document,
  9465. {
  9466. src:
  9467. f.codeMirrorJsUrl ||
  9468. f.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.js",
  9469. tag: "script",
  9470. type: "text/javascript",
  9471. defer: "defer",
  9472. },
  9473. function() {
  9474. f.sourceEditorFirst &&
  9475. setTimeout(function() {
  9476. e.execCommand("source");
  9477. }, 0);
  9478. }
  9479. ),
  9480. utils.loadFile(document, {
  9481. tag: "link",
  9482. rel: "stylesheet",
  9483. type: "text/css",
  9484. href:
  9485. f.codeMirrorCssUrl ||
  9486. f.UEDITOR_HOME_URL +
  9487. "third-party/codemirror/codemirror.css",
  9488. });
  9489. });
  9490. };
  9491. })(),
  9492. (UE.plugins.enterkey = function() {
  9493. var a,
  9494. b = this,
  9495. c = b.options.enterTag;
  9496. b.addListener("keyup", function(c, d) {
  9497. var e = d.keyCode || d.which;
  9498. if (13 == e) {
  9499. var f,
  9500. g = b.selection.getRange(),
  9501. h = g.startContainer;
  9502. if (browser.ie) b.fireEvent("saveScene", !0, !0);
  9503. else {
  9504. if (/h\d/i.test(a)) {
  9505. if (browser.gecko) {
  9506. var i = domUtils.findParentByTagName(
  9507. h,
  9508. [
  9509. "h1",
  9510. "h2",
  9511. "h3",
  9512. "h4",
  9513. "h5",
  9514. "h6",
  9515. "blockquote",
  9516. "caption",
  9517. "table",
  9518. ],
  9519. !0
  9520. );
  9521. i ||
  9522. (b.document.execCommand("formatBlock", !1, "<p>"), (f = 1));
  9523. } else if (1 == h.nodeType) {
  9524. var j,
  9525. k = b.document.createTextNode("");
  9526. if (
  9527. (g.insertNode(k),
  9528. (j = domUtils.findParentByTagName(k, "div", !0)))
  9529. ) {
  9530. for (var l = b.document.createElement("p"); j.firstChild; )
  9531. l.appendChild(j.firstChild);
  9532. j.parentNode.insertBefore(l, j),
  9533. domUtils.remove(j),
  9534. g.setStartBefore(k).setCursor(),
  9535. (f = 1);
  9536. }
  9537. domUtils.remove(k);
  9538. }
  9539. b.undoManger && f && b.undoManger.save();
  9540. }
  9541. browser.opera && g.select();
  9542. }
  9543. }
  9544. }),
  9545. b.addListener("keydown", function(d, e) {
  9546. var f = e.keyCode || e.which;
  9547. if (13 == f) {
  9548. if (b.fireEvent("beforeenterkeydown"))
  9549. return void domUtils.preventDefault(e);
  9550. b.fireEvent("saveScene", !0, !0), (a = "");
  9551. var g = b.selection.getRange();
  9552. if (!g.collapsed) {
  9553. var h = g.startContainer,
  9554. i = g.endContainer,
  9555. j = domUtils.findParentByTagName(h, "td", !0),
  9556. k = domUtils.findParentByTagName(i, "td", !0);
  9557. if ((j && k && j !== k) || (!j && k) || (j && !k))
  9558. return void (e.preventDefault
  9559. ? e.preventDefault()
  9560. : (e.returnValue = !1));
  9561. }
  9562. if ("p" == c)
  9563. browser.ie ||
  9564. ((h = domUtils.findParentByTagName(
  9565. g.startContainer,
  9566. [
  9567. "ol",
  9568. "ul",
  9569. "p",
  9570. "h1",
  9571. "h2",
  9572. "h3",
  9573. "h4",
  9574. "h5",
  9575. "h6",
  9576. "blockquote",
  9577. "caption",
  9578. ],
  9579. !0
  9580. )),
  9581. h || browser.opera
  9582. ? ((a = h.tagName),
  9583. "p" == h.tagName.toLowerCase() &&
  9584. browser.gecko &&
  9585. domUtils.removeDirtyAttr(h))
  9586. : (b.document.execCommand("formatBlock", !1, "<p>"),
  9587. browser.gecko &&
  9588. ((g = b.selection.getRange()),
  9589. (h = domUtils.findParentByTagName(
  9590. g.startContainer,
  9591. "p",
  9592. !0
  9593. )),
  9594. h && domUtils.removeDirtyAttr(h))));
  9595. else if (
  9596. (e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
  9597. g.collapsed)
  9598. ) {
  9599. (m = g.document.createElement("br")), g.insertNode(m);
  9600. var l = m.parentNode;
  9601. l.lastChild === m
  9602. ? (m.parentNode.insertBefore(m.cloneNode(!0), m),
  9603. g.setStartBefore(m))
  9604. : g.setStartAfter(m),
  9605. g.setCursor();
  9606. } else if (
  9607. (g.deleteContents(),
  9608. (h = g.startContainer),
  9609. 1 == h.nodeType && (h = h.childNodes[g.startOffset]))
  9610. ) {
  9611. for (; 1 == h.nodeType; ) {
  9612. if (dtd.$empty[h.tagName])
  9613. return (
  9614. g.setStartBefore(h).setCursor(),
  9615. b.undoManger && b.undoManger.save(),
  9616. !1
  9617. );
  9618. if (!h.firstChild) {
  9619. var m = g.document.createElement("br");
  9620. return (
  9621. h.appendChild(m),
  9622. g.setStart(h, 0).setCursor(),
  9623. b.undoManger && b.undoManger.save(),
  9624. !1
  9625. );
  9626. }
  9627. h = h.firstChild;
  9628. }
  9629. h === g.startContainer.childNodes[g.startOffset]
  9630. ? ((m = g.document.createElement("br")),
  9631. g.insertNode(m).setCursor())
  9632. : g.setStart(h, 0).setCursor();
  9633. } else
  9634. (m = g.document.createElement("br")),
  9635. g
  9636. .insertNode(m)
  9637. .setStartAfter(m)
  9638. .setCursor();
  9639. }
  9640. });
  9641. }),
  9642. (UE.plugins.keystrokes = function() {
  9643. var a = this,
  9644. b = !0;
  9645. a.addListener("keydown", function(c, d) {
  9646. var e = d.keyCode || d.which,
  9647. f = a.selection.getRange();
  9648. if (
  9649. !f.collapsed &&
  9650. !(d.ctrlKey || d.shiftKey || d.altKey || d.metaKey) &&
  9651. ((e >= 65 && e <= 90) ||
  9652. (e >= 48 && e <= 57) ||
  9653. (e >= 96 && e <= 111) ||
  9654. { 13: 1, 8: 1, 46: 1 }[e])
  9655. ) {
  9656. var g = f.startContainer;
  9657. if (
  9658. (domUtils.isFillChar(g) && f.setStartBefore(g),
  9659. (g = f.endContainer),
  9660. domUtils.isFillChar(g) && f.setEndAfter(g),
  9661. f.txtToElmBoundary(),
  9662. f.endContainer &&
  9663. 1 == f.endContainer.nodeType &&
  9664. ((g = f.endContainer.childNodes[f.endOffset]),
  9665. g && domUtils.isBr(g) && f.setEndAfter(g)),
  9666. 0 == f.startOffset &&
  9667. ((g = f.startContainer),
  9668. domUtils.isBoundaryNode(g, "firstChild") &&
  9669. ((g = f.endContainer),
  9670. f.endOffset ==
  9671. (3 == g.nodeType
  9672. ? g.nodeValue.length
  9673. : g.childNodes.length) &&
  9674. domUtils.isBoundaryNode(g, "lastChild"))))
  9675. )
  9676. return (
  9677. a.fireEvent("saveScene"),
  9678. (a.body.innerHTML = "<p>" + (browser.ie ? "" : "<br/>") + "</p>"),
  9679. f.setStart(a.body.firstChild, 0).setCursor(!1, !0),
  9680. void a._selectionChange()
  9681. );
  9682. }
  9683. if (e == keymap.Backspace) {
  9684. if (
  9685. ((f = a.selection.getRange()),
  9686. (b = f.collapsed),
  9687. a.fireEvent("delkeydown", d))
  9688. )
  9689. return;
  9690. var h, i;
  9691. if (
  9692. (f.collapsed &&
  9693. f.inFillChar() &&
  9694. ((h = f.startContainer),
  9695. domUtils.isFillChar(h)
  9696. ? (f
  9697. .setStartBefore(h)
  9698. .shrinkBoundary(!0)
  9699. .collapse(!0),
  9700. domUtils.remove(h))
  9701. : ((h.nodeValue = h.nodeValue.replace(
  9702. new RegExp("^" + domUtils.fillChar),
  9703. ""
  9704. )),
  9705. f.startOffset--,
  9706. f.collapse(!0).select(!0))),
  9707. (h = f.getClosedNode()))
  9708. )
  9709. return (
  9710. a.fireEvent("saveScene"),
  9711. f.setStartBefore(h),
  9712. domUtils.remove(h),
  9713. f.setCursor(),
  9714. a.fireEvent("saveScene"),
  9715. void domUtils.preventDefault(d)
  9716. );
  9717. if (
  9718. !browser.ie &&
  9719. ((h = domUtils.findParentByTagName(f.startContainer, "table", !0)),
  9720. (i = domUtils.findParentByTagName(f.endContainer, "table", !0)),
  9721. (h && !i) || (!h && i) || h !== i)
  9722. )
  9723. return void d.preventDefault();
  9724. }
  9725. if (e == keymap.Tab) {
  9726. var j = { ol: 1, ul: 1, table: 1 };
  9727. if (a.fireEvent("tabkeydown", d))
  9728. return void domUtils.preventDefault(d);
  9729. var k = a.selection.getRange();
  9730. a.fireEvent("saveScene");
  9731. for (
  9732. var l = 0,
  9733. m = "",
  9734. n = a.options.tabSize || 4,
  9735. o = a.options.tabNode || "&nbsp;";
  9736. l < n;
  9737. l++
  9738. )
  9739. m += o;
  9740. var p = a.document.createElement("span");
  9741. if (((p.innerHTML = m + domUtils.fillChar), k.collapsed))
  9742. k.insertNode(p.cloneNode(!0).firstChild).setCursor(!0);
  9743. else {
  9744. var q = function(a) {
  9745. return domUtils.isBlockElm(a) && !j[a.tagName.toLowerCase()];
  9746. };
  9747. if (
  9748. ((h = domUtils.findParent(k.startContainer, q, !0)),
  9749. (i = domUtils.findParent(k.endContainer, q, !0)),
  9750. h && i && h === i)
  9751. )
  9752. k.deleteContents(),
  9753. k.insertNode(p.cloneNode(!0).firstChild).setCursor(!0);
  9754. else {
  9755. var r = k.createBookmark();
  9756. k.enlarge(!0);
  9757. for (
  9758. var s = k.createBookmark(),
  9759. t = domUtils.getNextDomNode(s.start, !1, q);
  9760. t &&
  9761. !(domUtils.getPosition(t, s.end) & domUtils.POSITION_FOLLOWING);
  9762. )
  9763. t.insertBefore(p.cloneNode(!0).firstChild, t.firstChild),
  9764. (t = domUtils.getNextDomNode(t, !1, q));
  9765. k.moveToBookmark(s)
  9766. .moveToBookmark(r)
  9767. .select();
  9768. }
  9769. }
  9770. domUtils.preventDefault(d);
  9771. }
  9772. if (
  9773. browser.gecko &&
  9774. 46 == e &&
  9775. ((k = a.selection.getRange()),
  9776. k.collapsed && ((h = k.startContainer), domUtils.isEmptyBlock(h)))
  9777. ) {
  9778. for (
  9779. var u = h.parentNode;
  9780. 1 == domUtils.getChildCount(u) && !domUtils.isBody(u);
  9781. )
  9782. (h = u), (u = u.parentNode);
  9783. return void (h === u.lastChild && d.preventDefault());
  9784. }
  9785. }),
  9786. a.addListener("keyup", function(a, c) {
  9787. var d,
  9788. e = c.keyCode || c.which,
  9789. f = this;
  9790. if (e == keymap.Backspace) {
  9791. if (f.fireEvent("delkeyup")) return;
  9792. if (((d = f.selection.getRange()), d.collapsed)) {
  9793. var g,
  9794. h = ["h1", "h2", "h3", "h4", "h5", "h6"];
  9795. if (
  9796. (g = domUtils.findParentByTagName(d.startContainer, h, !0)) &&
  9797. domUtils.isEmptyBlock(g)
  9798. ) {
  9799. var i = g.previousSibling;
  9800. if (i && "TABLE" != i.nodeName)
  9801. return (
  9802. domUtils.remove(g),
  9803. void d.setStartAtLast(i).setCursor(!1, !0)
  9804. );
  9805. var j = g.nextSibling;
  9806. if (j && "TABLE" != j.nodeName)
  9807. return (
  9808. domUtils.remove(g),
  9809. void d.setStartAtFirst(j).setCursor(!1, !0)
  9810. );
  9811. }
  9812. if (domUtils.isBody(d.startContainer)) {
  9813. var g = domUtils.createElement(f.document, "p", {
  9814. innerHTML: browser.ie ? domUtils.fillChar : "<br/>",
  9815. });
  9816. d.insertNode(g)
  9817. .setStart(g, 0)
  9818. .setCursor(!1, !0);
  9819. }
  9820. }
  9821. if (
  9822. !b &&
  9823. (3 == d.startContainer.nodeType ||
  9824. (1 == d.startContainer.nodeType &&
  9825. domUtils.isEmptyBlock(d.startContainer)))
  9826. )
  9827. if (browser.ie) {
  9828. var k = d.document.createElement("span");
  9829. d
  9830. .insertNode(k)
  9831. .setStartBefore(k)
  9832. .collapse(!0),
  9833. d.select(),
  9834. domUtils.remove(k);
  9835. } else d.select();
  9836. }
  9837. });
  9838. }),
  9839. (UE.plugins.fiximgclick = (function() {
  9840. function a() {
  9841. (this.editor = null),
  9842. (this.resizer = null),
  9843. (this.cover = null),
  9844. (this.doc = document),
  9845. (this.prePos = { x: 0, y: 0 }),
  9846. (this.startPos = { x: 0, y: 0 });
  9847. }
  9848. var b = !1;
  9849. return (
  9850. (function() {
  9851. var c = [
  9852. [0, 0, -1, -1],
  9853. [0, 0, 0, -1],
  9854. [0, 0, 1, -1],
  9855. [0, 0, -1, 0],
  9856. [0, 0, 1, 0],
  9857. [0, 0, -1, 1],
  9858. [0, 0, 0, 1],
  9859. [0, 0, 1, 1],
  9860. ];
  9861. a.prototype = {
  9862. init: function(a) {
  9863. var b = this;
  9864. (b.editor = a),
  9865. (b.startPos = this.prePos = { x: 0, y: 0 }),
  9866. (b.dragId = -1);
  9867. var c = [],
  9868. d = (b.cover = document.createElement("div")),
  9869. e = (b.resizer = document.createElement("div"));
  9870. for (
  9871. d.id = b.editor.ui.id + "_imagescale_cover",
  9872. d.style.cssText =
  9873. "position:absolute;display:none;z-index:" +
  9874. b.editor.options.zIndex +
  9875. ";filter:alpha(opacity=0); opacity:0;background:#CCC;",
  9876. domUtils.on(d, "mousedown click", function() {
  9877. b.hide();
  9878. }),
  9879. i = 0;
  9880. i < 8;
  9881. i++
  9882. )
  9883. c.push(
  9884. '<span class="edui-editor-imagescale-hand' + i + '"></span>'
  9885. );
  9886. (e.id = b.editor.ui.id + "_imagescale"),
  9887. (e.className = "edui-editor-imagescale"),
  9888. (e.innerHTML = c.join("")),
  9889. (e.style.cssText +=
  9890. ";display:none;border:1px solid #3b77ff;z-index:" +
  9891. b.editor.options.zIndex +
  9892. ";"),
  9893. b.editor.ui.getDom().appendChild(d),
  9894. b.editor.ui.getDom().appendChild(e),
  9895. b.initStyle(),
  9896. b.initEvents();
  9897. },
  9898. initStyle: function() {
  9899. utils.cssRule(
  9900. "imagescale",
  9901. ".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;}.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}"
  9902. );
  9903. },
  9904. initEvents: function() {
  9905. var a = this;
  9906. (a.startPos.x = a.startPos.y = 0), (a.isDraging = !1);
  9907. },
  9908. _eventHandler: function(a) {
  9909. var c = this;
  9910. switch (a.type) {
  9911. case "mousedown":
  9912. var d,
  9913. d = a.target || a.srcElement;
  9914. d.className.indexOf("edui-editor-imagescale-hand") != -1 &&
  9915. c.dragId == -1 &&
  9916. ((c.dragId = d.className.slice(-1)),
  9917. (c.startPos.x = c.prePos.x = a.clientX),
  9918. (c.startPos.y = c.prePos.y = a.clientY),
  9919. domUtils.on(
  9920. c.doc,
  9921. "mousemove",
  9922. c.proxy(c._eventHandler, c)
  9923. ));
  9924. break;
  9925. case "mousemove":
  9926. c.dragId != -1 &&
  9927. (c.updateContainerStyle(c.dragId, {
  9928. x: a.clientX - c.prePos.x,
  9929. y: a.clientY - c.prePos.y,
  9930. }),
  9931. (c.prePos.x = a.clientX),
  9932. (c.prePos.y = a.clientY),
  9933. (b = !0),
  9934. c.updateTargetElement());
  9935. break;
  9936. case "mouseup":
  9937. c.dragId != -1 &&
  9938. (c.updateContainerStyle(c.dragId, {
  9939. x: a.clientX - c.prePos.x,
  9940. y: a.clientY - c.prePos.y,
  9941. }),
  9942. c.updateTargetElement(),
  9943. c.target.parentNode && c.attachTo(c.target),
  9944. (c.dragId = -1)),
  9945. domUtils.un(
  9946. c.doc,
  9947. "mousemove",
  9948. c.proxy(c._eventHandler, c)
  9949. ),
  9950. b && ((b = !1), c.editor.fireEvent("contentchange"));
  9951. }
  9952. },
  9953. updateTargetElement: function() {
  9954. var a = this;
  9955. domUtils.setStyles(a.target, {
  9956. width: a.resizer.style.width,
  9957. height: a.resizer.style.height,
  9958. }),
  9959. (a.target.width = parseInt(a.resizer.style.width)),
  9960. (a.target.height = parseInt(a.resizer.style.height)),
  9961. a.attachTo(a.target);
  9962. },
  9963. updateContainerStyle: function(a, b) {
  9964. var d,
  9965. e = this,
  9966. f = e.resizer;
  9967. 0 != c[a][0] &&
  9968. ((d = parseInt(f.style.left) + b.x),
  9969. (f.style.left = e._validScaledProp("left", d) + "px")),
  9970. 0 != c[a][1] &&
  9971. ((d = parseInt(f.style.top) + b.y),
  9972. (f.style.top = e._validScaledProp("top", d) + "px")),
  9973. 0 != c[a][2] &&
  9974. ((d = f.clientWidth + c[a][2] * b.x),
  9975. (f.style.width = e._validScaledProp("width", d) + "px")),
  9976. 0 != c[a][3] &&
  9977. ((d = f.clientHeight + c[a][3] * b.y),
  9978. (f.style.height = e._validScaledProp("height", d) + "px"));
  9979. },
  9980. _validScaledProp: function(a, b) {
  9981. var c = this.resizer,
  9982. d = document;
  9983. switch (((b = isNaN(b) ? 0 : b), a)) {
  9984. case "left":
  9985. return b < 0
  9986. ? 0
  9987. : b + c.clientWidth > d.clientWidth
  9988. ? d.clientWidth - c.clientWidth
  9989. : b;
  9990. case "top":
  9991. return b < 0
  9992. ? 0
  9993. : b + c.clientHeight > d.clientHeight
  9994. ? d.clientHeight - c.clientHeight
  9995. : b;
  9996. case "width":
  9997. return b <= 0
  9998. ? 1
  9999. : b + c.offsetLeft > d.clientWidth
  10000. ? d.clientWidth - c.offsetLeft
  10001. : b;
  10002. case "height":
  10003. return b <= 0
  10004. ? 1
  10005. : b + c.offsetTop > d.clientHeight
  10006. ? d.clientHeight - c.offsetTop
  10007. : b;
  10008. }
  10009. },
  10010. hideCover: function() {
  10011. this.cover.style.display = "none";
  10012. },
  10013. showCover: function() {
  10014. var a = this,
  10015. b = domUtils.getXY(a.editor.ui.getDom()),
  10016. c = domUtils.getXY(a.editor.iframe);
  10017. domUtils.setStyles(a.cover, {
  10018. width: a.editor.iframe.offsetWidth + "px",
  10019. height: a.editor.iframe.offsetHeight + "px",
  10020. top: c.y - b.y + "px",
  10021. left: c.x - b.x + "px",
  10022. position: "absolute",
  10023. display: "",
  10024. });
  10025. },
  10026. show: function(a) {
  10027. var b = this;
  10028. (b.resizer.style.display = "block"),
  10029. a && b.attachTo(a),
  10030. domUtils.on(
  10031. this.resizer,
  10032. "mousedown",
  10033. b.proxy(b._eventHandler, b)
  10034. ),
  10035. domUtils.on(b.doc, "mouseup", b.proxy(b._eventHandler, b)),
  10036. b.showCover(),
  10037. b.editor.fireEvent("afterscaleshow", b),
  10038. b.editor.fireEvent("saveScene");
  10039. },
  10040. hide: function() {
  10041. var a = this;
  10042. a.hideCover(),
  10043. (a.resizer.style.display = "none"),
  10044. domUtils.un(
  10045. a.resizer,
  10046. "mousedown",
  10047. a.proxy(a._eventHandler, a)
  10048. ),
  10049. domUtils.un(a.doc, "mouseup", a.proxy(a._eventHandler, a)),
  10050. a.editor.fireEvent("afterscalehide", a);
  10051. },
  10052. proxy: function(a, b) {
  10053. return function(c) {
  10054. return a.apply(b || this, arguments);
  10055. };
  10056. },
  10057. attachTo: function(a) {
  10058. console.log('attachTo')
  10059. var b = this,
  10060. c = (b.target = a),
  10061. d = this.resizer,
  10062. e = domUtils.getXY(c),
  10063. f = domUtils.getXY(b.editor.iframe),
  10064. g = domUtils.getXY(d.parentNode);
  10065. domUtils.setStyles(d, {
  10066. width: c.width + "px",
  10067. height: c.height + "px",
  10068. left:
  10069. f.x +
  10070. e.x -
  10071. b.editor.document.body.scrollLeft -
  10072. g.x -
  10073. parseInt(d.style.borderLeftWidth) +
  10074. "px",
  10075. top:
  10076. f.y +
  10077. e.y -
  10078. b.editor.document.body.scrollTop -
  10079. g.y -
  10080. parseInt(d.style.borderTopWidth) +
  10081. "px",
  10082. });
  10083. },
  10084. };
  10085. })(),
  10086. function() {
  10087. var b,
  10088. c = this;
  10089. c.setOpt("imageScaleEnabled", !0),
  10090. !browser.ie &&
  10091. c.options.imageScaleEnabled &&
  10092. c.addListener("click", function(d, e) {
  10093. var f = c.selection.getRange(),
  10094. g = f.getClosedNode();
  10095. if (
  10096. g &&
  10097. "IMG" == g.tagName &&
  10098. "false" != c.body.contentEditable
  10099. ) {
  10100. if (
  10101. g.className.indexOf("edui-faked-music") != -1 ||
  10102. g.getAttribute("anchorname") ||
  10103. domUtils.hasClass(g, "loadingclass") ||
  10104. domUtils.hasClass(g, "loaderrorclass")
  10105. )
  10106. return;
  10107. if (!b) {
  10108. (b = new a()),
  10109. b.init(c),
  10110. c.ui.getDom().appendChild(b.resizer);
  10111. var h,
  10112. i = function(a) {
  10113. b.hide(),
  10114. b.target &&
  10115. c.selection
  10116. .getRange()
  10117. .selectNode(b.target)
  10118. .select();
  10119. },
  10120. j = function(a) {
  10121. var b = a.target || a.srcElement;
  10122. !b ||
  10123. (void 0 !== b.className &&
  10124. b.className.indexOf("edui-editor-imagescale") !=
  10125. -1) ||
  10126. i(a);
  10127. };
  10128. c.addListener("afterscaleshow", function(a) {
  10129. c.addListener("beforekeydown", i),
  10130. c.addListener("beforemousedown", j),
  10131. domUtils.on(document, "keydown", i),
  10132. domUtils.on(document, "mousedown", j),
  10133. c.selection.getNative().removeAllRanges();
  10134. }),
  10135. c.addListener("afterscalehide", function(a) {
  10136. c.removeListener("beforekeydown", i),
  10137. c.removeListener("beforemousedown", j),
  10138. domUtils.un(document, "keydown", i),
  10139. domUtils.un(document, "mousedown", j);
  10140. var d = b.target;
  10141. d.parentNode &&
  10142. c.selection
  10143. .getRange()
  10144. .selectNode(d)
  10145. .select();
  10146. }),
  10147. domUtils.on(b.resizer, "mousedown", function(a) {
  10148. c.selection.getNative().removeAllRanges();
  10149. var d = a.target || a.srcElement;
  10150. d &&
  10151. d.className.indexOf("edui-editor-imagescale-hand") ==
  10152. -1 &&
  10153. (h = setTimeout(function() {
  10154. b.hide(),
  10155. b.target &&
  10156. c.selection
  10157. .getRange()
  10158. .selectNode(d)
  10159. .select();
  10160. }, 200));
  10161. }),
  10162. domUtils.on(b.resizer, "mouseup", function(a) {
  10163. var b = a.target || a.srcElement;
  10164. b &&
  10165. b.className.indexOf("edui-editor-imagescale-hand") ==
  10166. -1 &&
  10167. clearTimeout(h);
  10168. });
  10169. }
  10170. b.show(g);
  10171. } else b && "none" != b.resizer.style.display && b.hide();
  10172. }),
  10173. browser.webkit &&
  10174. c.addListener("click", function(a, b) {
  10175. if (
  10176. "IMG" == b.target.tagName &&
  10177. "false" != c.body.contentEditable
  10178. ) {
  10179. var d = new dom.Range(c.document);
  10180. d.selectNode(b.target).select();
  10181. }
  10182. });
  10183. }
  10184. );
  10185. })()),
  10186. UE.plugin.register(
  10187. "autolink",
  10188. function() {
  10189. var a = 0;
  10190. return browser.ie
  10191. ? {}
  10192. : {
  10193. bindEvents: {
  10194. reset: function() {
  10195. a = 0;
  10196. },
  10197. keydown: function(a, b) {
  10198. var c = this,
  10199. d = b.keyCode || b.which;
  10200. if (32 == d || 13 == d) {
  10201. for (
  10202. var e,
  10203. f,
  10204. g = c.selection.getNative(),
  10205. h = g.getRangeAt(0).cloneRange(),
  10206. i = h.startContainer;
  10207. 1 == i.nodeType &&
  10208. h.startOffset > 0 &&
  10209. (i = h.startContainer.childNodes[h.startOffset - 1]);
  10210. )
  10211. h.setStart(
  10212. i,
  10213. 1 == i.nodeType
  10214. ? i.childNodes.length
  10215. : i.nodeValue.length
  10216. ),
  10217. h.collapse(!0),
  10218. (i = h.startContainer);
  10219. do {
  10220. if (0 == h.startOffset) {
  10221. for (
  10222. i = h.startContainer.previousSibling;
  10223. i && 1 == i.nodeType;
  10224. )
  10225. i = i.lastChild;
  10226. if (!i || domUtils.isFillChar(i)) break;
  10227. e = i.nodeValue.length;
  10228. } else (i = h.startContainer), (e = h.startOffset);
  10229. h.setStart(i, e - 1), (f = h.toString().charCodeAt(0));
  10230. } while (160 != f && 32 != f);
  10231. if (
  10232. h
  10233. .toString()
  10234. .replace(new RegExp(domUtils.fillChar, "g"), "")
  10235. .match(
  10236. /(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i
  10237. )
  10238. ) {
  10239. for (
  10240. ;
  10241. h.toString().length &&
  10242. !/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(
  10243. h.toString()
  10244. );
  10245. )
  10246. try {
  10247. h.setStart(h.startContainer, h.startOffset + 1);
  10248. } catch (j) {
  10249. for (
  10250. var i = h.startContainer;
  10251. !(next = i.nextSibling);
  10252. ) {
  10253. if (domUtils.isBody(i)) return;
  10254. i = i.parentNode;
  10255. }
  10256. h.setStart(next, 0);
  10257. }
  10258. if (
  10259. domUtils.findParentByTagName(h.startContainer, "a", !0)
  10260. )
  10261. return;
  10262. var k,
  10263. l = c.document.createElement("a"),
  10264. m = c.document.createTextNode(" ");
  10265. c.undoManger && c.undoManger.save(),
  10266. l.appendChild(h.extractContents()),
  10267. (l.href = l.innerHTML = l.innerHTML.replace(
  10268. /<[^>]+>/g,
  10269. ""
  10270. )),
  10271. (k = l
  10272. .getAttribute("href")
  10273. .replace(new RegExp(domUtils.fillChar, "g"), "")),
  10274. (k = /^(?:https?:\/\/)/gi.test(k) ? k : "http://" + k),
  10275. l.setAttribute("_src", utils.html(k)),
  10276. (l.href = utils.html(k)),
  10277. h.insertNode(l),
  10278. l.parentNode.insertBefore(m, l.nextSibling),
  10279. h.setStart(m, 0),
  10280. h.collapse(!0),
  10281. g.removeAllRanges(),
  10282. g.addRange(h),
  10283. c.undoManger && c.undoManger.save();
  10284. }
  10285. }
  10286. },
  10287. },
  10288. };
  10289. },
  10290. function() {
  10291. function a(a) {
  10292. if (3 == a.nodeType) return null;
  10293. if ("A" == a.nodeName) return a;
  10294. for (var b = a.lastChild; b; ) {
  10295. if ("A" == b.nodeName) return b;
  10296. if (3 == b.nodeType) {
  10297. if (domUtils.isWhitespace(b)) {
  10298. b = b.previousSibling;
  10299. continue;
  10300. }
  10301. return null;
  10302. }
  10303. b = b.lastChild;
  10304. }
  10305. }
  10306. var b = { 37: 1, 38: 1, 39: 1, 40: 1, 13: 1, 32: 1 };
  10307. browser.ie &&
  10308. this.addListener("keyup", function(c, d) {
  10309. var e = this,
  10310. f = d.keyCode;
  10311. if (b[f]) {
  10312. var g = e.selection.getRange(),
  10313. h = g.startContainer;
  10314. if (13 == f) {
  10315. for (; h && !domUtils.isBody(h) && !domUtils.isBlockElm(h); )
  10316. h = h.parentNode;
  10317. if (h && !domUtils.isBody(h) && "P" == h.nodeName) {
  10318. var i = h.previousSibling;
  10319. if (i && 1 == i.nodeType) {
  10320. var i = a(i);
  10321. i && !i.getAttribute("_href") && domUtils.remove(i, !0);
  10322. }
  10323. }
  10324. } else if (32 == f)
  10325. 3 == h.nodeType &&
  10326. /^\s$/.test(h.nodeValue) &&
  10327. ((h = h.previousSibling),
  10328. h &&
  10329. "A" == h.nodeName &&
  10330. !h.getAttribute("_href") &&
  10331. domUtils.remove(h, !0));
  10332. else if (
  10333. ((h = domUtils.findParentByTagName(h, "a", !0)),
  10334. h && !h.getAttribute("_href"))
  10335. ) {
  10336. var j = g.createBookmark();
  10337. domUtils.remove(h, !0), g.moveToBookmark(j).select(!0);
  10338. }
  10339. }
  10340. });
  10341. }
  10342. ),
  10343. (UE.plugins.autoheight = function() {
  10344. function a() {
  10345. var a = this;
  10346. clearTimeout(e),
  10347. f ||
  10348. ((!a.queryCommandState ||
  10349. (a.queryCommandState && 1 != a.queryCommandState("source"))) &&
  10350. (e = setTimeout(function() {
  10351. for (var b = a.body.lastChild; b && 1 != b.nodeType; )
  10352. b = b.previousSibling;
  10353. b &&
  10354. 1 == b.nodeType &&
  10355. ((b.style.clear = "both"),
  10356. (d = Math.max(
  10357. domUtils.getXY(b).y + b.offsetHeight + 25,
  10358. Math.max(h.minFrameHeight, h.initialFrameHeight)
  10359. )),
  10360. d != g &&
  10361. (d !== parseInt(a.iframe.parentNode.style.height) &&
  10362. (a.iframe.parentNode.style.height = d + "px"),
  10363. (a.body.style.height = d + "px"),
  10364. (g = d)),
  10365. domUtils.removeStyle(b, "clear"));
  10366. }, 50)));
  10367. }
  10368. var b = this;
  10369. if (
  10370. ((b.autoHeightEnabled = b.options.autoHeightEnabled !== !1),
  10371. b.autoHeightEnabled)
  10372. ) {
  10373. var c,
  10374. d,
  10375. e,
  10376. f,
  10377. g = 0,
  10378. h = b.options;
  10379. b.addListener("fullscreenchanged", function(a, b) {
  10380. f = b;
  10381. }),
  10382. b.addListener("destroy", function() {
  10383. b.removeListener("contentchange afterinserthtml keyup mouseup", a);
  10384. }),
  10385. (b.enableAutoHeight = function() {
  10386. var b = this;
  10387. if (b.autoHeightEnabled) {
  10388. var d = b.document;
  10389. (b.autoHeightEnabled = !0),
  10390. (c = d.body.style.overflowY),
  10391. (d.body.style.overflowY = "hidden"),
  10392. b.addListener("contentchange afterinserthtml keyup mouseup", a),
  10393. setTimeout(
  10394. function() {
  10395. a.call(b);
  10396. },
  10397. browser.gecko ? 100 : 0
  10398. ),
  10399. b.fireEvent("autoheightchanged", b.autoHeightEnabled);
  10400. }
  10401. }),
  10402. (b.disableAutoHeight = function() {
  10403. (b.body.style.overflowY = c || ""),
  10404. b.removeListener("contentchange", a),
  10405. b.removeListener("keyup", a),
  10406. b.removeListener("mouseup", a),
  10407. (b.autoHeightEnabled = !1),
  10408. b.fireEvent("autoheightchanged", b.autoHeightEnabled);
  10409. }),
  10410. b.on("setHeight", function() {
  10411. b.disableAutoHeight();
  10412. }),
  10413. b.addListener("ready", function() {
  10414. b.enableAutoHeight();
  10415. var c;
  10416. domUtils.on(
  10417. browser.ie ? b.body : b.document,
  10418. browser.webkit ? "dragover" : "drop",
  10419. function() {
  10420. clearTimeout(c),
  10421. (c = setTimeout(function() {
  10422. a.call(b);
  10423. }, 100));
  10424. }
  10425. );
  10426. var d;
  10427. window.onscroll = function() {
  10428. null === d
  10429. ? (d = this.scrollY)
  10430. : 0 == this.scrollY &&
  10431. 0 != d &&
  10432. (b.window.scrollTo(0, 0), (d = null));
  10433. };
  10434. });
  10435. }
  10436. }),
  10437. (UE.plugins.autofloat = function() {
  10438. function a() {
  10439. return UE.ui ? 1 : (alert(g.autofloatMsg), 0);
  10440. }
  10441. function b() {
  10442. var a = document.body.style;
  10443. (a.backgroundImage = 'url("about:blank")'),
  10444. (a.backgroundAttachment = "fixed");
  10445. }
  10446. function c() {
  10447. var a = domUtils.getXY(k),
  10448. b = domUtils.getComputedStyle(k, "position"),
  10449. c = domUtils.getComputedStyle(k, "left");
  10450. (k.style.width = k.offsetWidth + "px"),
  10451. (k.style.zIndex = 1 * f.options.zIndex + 1),
  10452. k.parentNode.insertBefore(q, k),
  10453. o || (p && browser.ie)
  10454. ? ("absolute" != k.style.position &&
  10455. (k.style.position = "absolute"),
  10456. (k.style.top =
  10457. (document.body.scrollTop ||
  10458. document.documentElement.scrollTop) -
  10459. l +
  10460. i +
  10461. "px"))
  10462. : (browser.ie7Compat &&
  10463. r &&
  10464. ((r = !1),
  10465. (k.style.left =
  10466. domUtils.getXY(k).x -
  10467. document.documentElement.getBoundingClientRect().left +
  10468. 2 +
  10469. "px")),
  10470. "fixed" != k.style.position &&
  10471. ((k.style.position = "fixed"),
  10472. (k.style.top = i + "px"),
  10473. ("absolute" == b || "relative" == b) &&
  10474. parseFloat(c) &&
  10475. (k.style.left = a.x + "px")));
  10476. }
  10477. function d() {
  10478. (r = !0),
  10479. q.parentNode && q.parentNode.removeChild(q),
  10480. (k.style.cssText = j);
  10481. }
  10482. function e() {
  10483. var a = m(f.container),
  10484. b = f.options.toolbarTopOffset || 0;
  10485. a.top < 0 && a.bottom - k.offsetHeight > b ? c() : d();
  10486. }
  10487. var f = this,
  10488. g = f.getLang();
  10489. f.setOpt({ topOffset: 0 });
  10490. var h = f.options.autoFloatEnabled !== !1,
  10491. i = f.options.topOffset;
  10492. if (h) {
  10493. var j,
  10494. k,
  10495. l,
  10496. m,
  10497. n = UE.ui.uiUtils,
  10498. o = browser.ie && browser.version <= 6,
  10499. p = browser.quirks,
  10500. q = document.createElement("div"),
  10501. r = !0,
  10502. s = utils.defer(
  10503. function() {
  10504. e();
  10505. },
  10506. browser.ie ? 200 : 100,
  10507. !0
  10508. );
  10509. f.addListener("destroy", function() {
  10510. domUtils.un(window, ["scroll", "resize"], e),
  10511. f.removeListener("keydown", s);
  10512. }),
  10513. f.addListener("ready", function() {
  10514. if (a(f)) {
  10515. if (!f.ui) return;
  10516. (m = n.getClientRect),
  10517. (k = f.ui.getDom("toolbarbox")),
  10518. (l = m(k).top),
  10519. (j = k.style.cssText),
  10520. (q.style.height = k.offsetHeight + "px"),
  10521. o && b(),
  10522. domUtils.on(window, ["scroll", "resize"], e),
  10523. f.addListener("keydown", s),
  10524. f.addListener("beforefullscreenchange", function(a, b) {
  10525. b && d();
  10526. }),
  10527. f.addListener("fullscreenchanged", function(a, b) {
  10528. b || e();
  10529. }),
  10530. f.addListener("sourcemodechanged", function(a, b) {
  10531. setTimeout(function() {
  10532. e();
  10533. }, 0);
  10534. }),
  10535. f.addListener("clearDoc", function() {
  10536. setTimeout(function() {
  10537. e();
  10538. }, 0);
  10539. });
  10540. }
  10541. });
  10542. }
  10543. }),
  10544. (UE.plugins.video = function() {
  10545. function a(a, b, d, e, f, g, h) {
  10546. (a = utils.unhtmlForUrl(a)),
  10547. (f = utils.unhtml(f)),
  10548. (g = utils.unhtml(g)),
  10549. (b = parseInt(b, 10) || 0),
  10550. (d = parseInt(d, 10) || 0);
  10551. var i;
  10552. switch (h) {
  10553. case "image":
  10554. i =
  10555. "<img " +
  10556. (e ? 'id="' + e + '"' : "") +
  10557. ' width="' +
  10558. b +
  10559. '" height="' +
  10560. d +
  10561. '" _url="' +
  10562. a +
  10563. '" class="' +
  10564. g.replace(/\bvideo-js\b/, "") +
  10565. '" src="' +
  10566. c.options.UEDITOR_HOME_URL +
  10567. 'themes/default/images/spacer.gif" style="background:url(' +
  10568. c.options.UEDITOR_HOME_URL +
  10569. "themes/default/images/videologo.gif) no-repeat center center; border:1px solid gray;" +
  10570. (f ? "float:" + f + ";" : "") +
  10571. '" />';
  10572. break;
  10573. case "embed":
  10574. i =
  10575. '<embed type="application/x-shockwave-flash" class="' +
  10576. g +
  10577. '" pluginspage="http://www.macromedia.com/go/getflashplayer" src="' +
  10578. utils.html(a) +
  10579. '" width="' +
  10580. b +
  10581. '" height="' +
  10582. d +
  10583. '"' +
  10584. (f ? ' style="float:' + f + '"' : "") +
  10585. ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >';
  10586. break;
  10587. case "video":
  10588. var j = a.substr(a.lastIndexOf(".") + 1);
  10589. "ogv" == j && (j = "ogg"),
  10590. (i =
  10591. "<video" +
  10592. (e ? ' id="' + e + '"' : "") +
  10593. ' class="' +
  10594. g +
  10595. ' video-js" ' +
  10596. (f ? ' style="float:' + f + '"' : "") +
  10597. ' controls preload="none" width="' +
  10598. b +
  10599. '" height="' +
  10600. d +
  10601. '" src="' +
  10602. a +
  10603. '" data-setup="{}"><source src="' +
  10604. a +
  10605. '" type="video/' +
  10606. j +
  10607. '" /></video>');
  10608. }
  10609. return i;
  10610. }
  10611. function b(b, c) {
  10612. utils.each(b.getNodesByTagName(c ? "img" : "embed video"), function(b) {
  10613. var d = b.getAttr("class");
  10614. if (d && d.indexOf("edui-faked-video") != -1) {
  10615. var e = a(
  10616. c ? b.getAttr("_url") : b.getAttr("src"),
  10617. b.getAttr("width"),
  10618. b.getAttr("height"),
  10619. null,
  10620. b.getStyle("float") || "",
  10621. d,
  10622. c ? "embed" : "image"
  10623. );
  10624. b.parentNode.replaceChild(UE.uNode.createElement(e), b);
  10625. }
  10626. if (d && d.indexOf("edui-upload-video") != -1) {
  10627. var e = a(
  10628. c ? b.getAttr("_url") : b.getAttr("src"),
  10629. b.getAttr("width"),
  10630. b.getAttr("height"),
  10631. null,
  10632. b.getStyle("float") || "",
  10633. d,
  10634. c ? "video" : "image"
  10635. );
  10636. b.parentNode.replaceChild(UE.uNode.createElement(e), b);
  10637. }
  10638. });
  10639. }
  10640. var c = this;
  10641. c.addOutputRule(function(a) {
  10642. b(a, !0);
  10643. }),
  10644. c.addInputRule(function(a) {
  10645. b(a);
  10646. }),
  10647. (c.commands.insertvideo = {
  10648. execCommand: function(b, d, e) {
  10649. d = utils.isArray(d) ? d : [d];
  10650. for (
  10651. var f, g, h = [], i = "tmpVedio", j = 0, k = d.length;
  10652. j < k;
  10653. j++
  10654. )
  10655. (g = d[j]),
  10656. (f =
  10657. "upload" == e
  10658. ? "edui-upload-video video-js vjs-default-skin"
  10659. : "edui-faked-video"),
  10660. h.push(
  10661. a(
  10662. g.url,
  10663. g.width || 420,
  10664. g.height || 280,
  10665. i + j,
  10666. null,
  10667. f,
  10668. "image"
  10669. )
  10670. );
  10671. c.execCommand("inserthtml", h.join(""), !0);
  10672. for (
  10673. var l = this.selection.getRange(), j = 0, k = d.length;
  10674. j < k;
  10675. j++
  10676. ) {
  10677. var m = this.document.getElementById("tmpVedio" + j);
  10678. domUtils.removeAttributes(m, "id"),
  10679. l.selectNode(m).select(),
  10680. c.execCommand("imagefloat", d[j].align);
  10681. }
  10682. },
  10683. queryCommandState: function() {
  10684. var a = c.selection.getRange().getClosedNode(),
  10685. b =
  10686. a &&
  10687. ("edui-faked-video" == a.className ||
  10688. a.className.indexOf("edui-upload-video") != -1);
  10689. return b ? 1 : 0;
  10690. },
  10691. });
  10692. }),
  10693. (function() {
  10694. function a(a) {}
  10695. var b = (UE.UETable = function(a) {
  10696. (this.table = a),
  10697. (this.indexTable = []),
  10698. (this.selectedTds = []),
  10699. (this.cellsRange = {}),
  10700. this.update(a);
  10701. });
  10702. (b.removeSelectedClass = function(a) {
  10703. utils.each(a, function(a) {
  10704. domUtils.removeClasses(a, "selectTdClass");
  10705. });
  10706. }),
  10707. (b.addSelectedClass = function(a) {
  10708. utils.each(a, function(a) {
  10709. domUtils.addClass(a, "selectTdClass");
  10710. });
  10711. }),
  10712. (b.isEmptyBlock = function(a) {
  10713. var b = new RegExp(domUtils.fillChar, "g");
  10714. if (
  10715. a[browser.ie ? "innerText" : "textContent"]
  10716. .replace(/^\s*$/, "")
  10717. .replace(b, "").length > 0
  10718. )
  10719. return 0;
  10720. for (var c in dtd.$isNotEmpty)
  10721. if (
  10722. dtd.$isNotEmpty.hasOwnProperty(c) &&
  10723. a.getElementsByTagName(c).length
  10724. )
  10725. return 0;
  10726. return 1;
  10727. }),
  10728. (b.getWidth = function(a) {
  10729. return a ? parseInt(domUtils.getComputedStyle(a, "width"), 10) : 0;
  10730. }),
  10731. (b.getTableCellAlignState = function(a) {
  10732. !utils.isArray(a) && (a = [a]);
  10733. var b = {},
  10734. c = ["align", "valign"],
  10735. d = null,
  10736. e = !0;
  10737. return (
  10738. utils.each(a, function(a) {
  10739. return (
  10740. utils.each(c, function(c) {
  10741. if (((d = a.getAttribute(c)), !b[c] && d)) b[c] = d;
  10742. else if (!b[c] || d !== b[c]) return (e = !1), !1;
  10743. }),
  10744. e
  10745. );
  10746. }),
  10747. e ? b : null
  10748. );
  10749. }),
  10750. (b.getTableItemsByRange = function(a) {
  10751. var b = a.selection.getStart();
  10752. b &&
  10753. b.id &&
  10754. 0 === b.id.indexOf("_baidu_bookmark_start_") &&
  10755. b.nextSibling &&
  10756. (b = b.nextSibling);
  10757. var c = b && domUtils.findParentByTagName(b, ["td", "th"], !0),
  10758. d = c && c.parentNode,
  10759. e = b && domUtils.findParentByTagName(b, "caption", !0),
  10760. f = e ? e.parentNode : d && d.parentNode.parentNode;
  10761. return { cell: c, tr: d, table: f, caption: e };
  10762. }),
  10763. (b.getUETableBySelected = function(a) {
  10764. var c = b.getTableItemsByRange(a).table;
  10765. return c && c.ueTable && c.ueTable.selectedTds.length
  10766. ? c.ueTable
  10767. : null;
  10768. }),
  10769. (b.getDefaultValue = function(a, b) {
  10770. var c,
  10771. d,
  10772. e,
  10773. f,
  10774. g = { thin: "0px", medium: "1px", thick: "2px" };
  10775. if (b)
  10776. return (
  10777. (h = b.getElementsByTagName("td")[0]),
  10778. (f = domUtils.getComputedStyle(b, "border-left-width")),
  10779. (c = parseInt(g[f] || f, 10)),
  10780. (f = domUtils.getComputedStyle(h, "padding-left")),
  10781. (d = parseInt(g[f] || f, 10)),
  10782. (f = domUtils.getComputedStyle(h, "border-left-width")),
  10783. (e = parseInt(g[f] || f, 10)),
  10784. { tableBorder: c, tdPadding: d, tdBorder: e }
  10785. );
  10786. (b = a.document.createElement("table")),
  10787. (b.insertRow(0).insertCell(0).innerHTML = "xxx"),
  10788. a.body.appendChild(b);
  10789. var h = b.getElementsByTagName("td")[0];
  10790. return (
  10791. (f = domUtils.getComputedStyle(b, "border-left-width")),
  10792. (c = parseInt(g[f] || f, 10)),
  10793. (f = domUtils.getComputedStyle(h, "padding-left")),
  10794. (d = parseInt(g[f] || f, 10)),
  10795. (f = domUtils.getComputedStyle(h, "border-left-width")),
  10796. (e = parseInt(g[f] || f, 10)),
  10797. domUtils.remove(b),
  10798. { tableBorder: c, tdPadding: d, tdBorder: e }
  10799. );
  10800. }),
  10801. (b.getUETable = function(a) {
  10802. var c = a.tagName.toLowerCase();
  10803. return (
  10804. (a =
  10805. "td" == c || "th" == c || "caption" == c
  10806. ? domUtils.findParentByTagName(a, "table", !0)
  10807. : a),
  10808. a.ueTable || (a.ueTable = new b(a)),
  10809. a.ueTable
  10810. );
  10811. }),
  10812. (b.cloneCell = function(a, b, c) {
  10813. if (!a || utils.isString(a))
  10814. return this.table.ownerDocument.createElement(a || "td");
  10815. var d = domUtils.hasClass(a, "selectTdClass");
  10816. d && domUtils.removeClasses(a, "selectTdClass");
  10817. var e = a.cloneNode(!0);
  10818. return (
  10819. b && (e.rowSpan = e.colSpan = 1),
  10820. !c && domUtils.removeAttributes(e, "width height"),
  10821. !c && domUtils.removeAttributes(e, "style"),
  10822. (e.style.borderLeftStyle = ""),
  10823. (e.style.borderTopStyle = ""),
  10824. (e.style.borderLeftColor = a.style.borderRightColor),
  10825. (e.style.borderLeftWidth = a.style.borderRightWidth),
  10826. (e.style.borderTopColor = a.style.borderBottomColor),
  10827. (e.style.borderTopWidth = a.style.borderBottomWidth),
  10828. d && domUtils.addClass(a, "selectTdClass"),
  10829. e
  10830. );
  10831. }),
  10832. (b.prototype = {
  10833. getMaxRows: function() {
  10834. for (var a, b = this.table.rows, c = 1, d = 0; (a = b[d]); d++) {
  10835. for (var e, f = 1, g = 0; (e = a.cells[g++]); )
  10836. f = Math.max(e.rowSpan || 1, f);
  10837. c = Math.max(f + d, c);
  10838. }
  10839. return c;
  10840. },
  10841. getMaxCols: function() {
  10842. for (
  10843. var a, b = this.table.rows, c = 0, d = {}, e = 0;
  10844. (a = b[e]);
  10845. e++
  10846. ) {
  10847. for (var f, g = 0, h = 0; (f = a.cells[h++]); )
  10848. if (((g += f.colSpan || 1), f.rowSpan && f.rowSpan > 1))
  10849. for (var i = 1; i < f.rowSpan; i++)
  10850. d["row_" + (e + i)]
  10851. ? d["row_" + (e + i)]++
  10852. : (d["row_" + (e + i)] = f.colSpan || 1);
  10853. (g += d["row_" + e] || 0), (c = Math.max(g, c));
  10854. }
  10855. return c;
  10856. },
  10857. getCellColIndex: function(a) {},
  10858. getHSideCell: function(b, c) {
  10859. try {
  10860. var d,
  10861. e,
  10862. f = this.getCellInfo(b),
  10863. g = this.selectedTds.length,
  10864. h = this.cellsRange;
  10865. return (!c && (g ? !h.beginColIndex : !f.colIndex)) ||
  10866. (c &&
  10867. (g
  10868. ? h.endColIndex == this.colsNum - 1
  10869. : f.colIndex == this.colsNum - 1))
  10870. ? null
  10871. : ((d = g ? h.beginRowIndex : f.rowIndex),
  10872. (e = c
  10873. ? g
  10874. ? h.endColIndex + 1
  10875. : f.colIndex + 1
  10876. : g
  10877. ? h.beginColIndex - 1
  10878. : f.colIndex < 1
  10879. ? 0
  10880. : f.colIndex - 1),
  10881. this.getCell(
  10882. this.indexTable[d][e].rowIndex,
  10883. this.indexTable[d][e].cellIndex
  10884. ));
  10885. } catch (i) {
  10886. a(i);
  10887. }
  10888. },
  10889. getTabNextCell: function(a, b) {
  10890. var c,
  10891. d = this.getCellInfo(a),
  10892. e = b || d.rowIndex,
  10893. f = d.colIndex + 1 + (d.colSpan - 1);
  10894. try {
  10895. c = this.getCell(
  10896. this.indexTable[e][f].rowIndex,
  10897. this.indexTable[e][f].cellIndex
  10898. );
  10899. } catch (g) {
  10900. try {
  10901. (e = 1 * e + 1),
  10902. (f = 0),
  10903. (c = this.getCell(
  10904. this.indexTable[e][f].rowIndex,
  10905. this.indexTable[e][f].cellIndex
  10906. ));
  10907. } catch (g) {}
  10908. }
  10909. return c;
  10910. },
  10911. getVSideCell: function(b, c, d) {
  10912. try {
  10913. var e,
  10914. f,
  10915. g = this.getCellInfo(b),
  10916. h = this.selectedTds.length && !d,
  10917. i = this.cellsRange;
  10918. return (!c && 0 == g.rowIndex) ||
  10919. (c &&
  10920. (h
  10921. ? i.endRowIndex == this.rowsNum - 1
  10922. : g.rowIndex + g.rowSpan > this.rowsNum - 1))
  10923. ? null
  10924. : ((e = c
  10925. ? h
  10926. ? i.endRowIndex + 1
  10927. : g.rowIndex + g.rowSpan
  10928. : h
  10929. ? i.beginRowIndex - 1
  10930. : g.rowIndex - 1),
  10931. (f = h ? i.beginColIndex : g.colIndex),
  10932. this.getCell(
  10933. this.indexTable[e][f].rowIndex,
  10934. this.indexTable[e][f].cellIndex
  10935. ));
  10936. } catch (j) {
  10937. a(j);
  10938. }
  10939. },
  10940. getSameEndPosCells: function(b, c) {
  10941. try {
  10942. for (
  10943. var d = "x" === c.toLowerCase(),
  10944. e =
  10945. domUtils.getXY(b)[d ? "x" : "y"] +
  10946. b["offset" + (d ? "Width" : "Height")],
  10947. f = this.table.rows,
  10948. g = null,
  10949. h = [],
  10950. i = 0;
  10951. i < this.rowsNum;
  10952. i++
  10953. ) {
  10954. g = f[i].cells;
  10955. for (var j, k = 0; (j = g[k++]); ) {
  10956. var l =
  10957. domUtils.getXY(j)[d ? "x" : "y"] +
  10958. j["offset" + (d ? "Width" : "Height")];
  10959. if (l > e && d) break;
  10960. if (
  10961. (b == j || e == l) &&
  10962. (1 == j[d ? "colSpan" : "rowSpan"] && h.push(j), d)
  10963. )
  10964. break;
  10965. }
  10966. }
  10967. return h;
  10968. } catch (m) {
  10969. a(m);
  10970. }
  10971. },
  10972. setCellContent: function(a, b) {
  10973. a.innerHTML = b || (browser.ie ? domUtils.fillChar : "<br />");
  10974. },
  10975. cloneCell: b.cloneCell,
  10976. getSameStartPosXCells: function(b) {
  10977. try {
  10978. for (
  10979. var c,
  10980. d = domUtils.getXY(b).x + b.offsetWidth,
  10981. e = this.table.rows,
  10982. f = [],
  10983. g = 0;
  10984. g < this.rowsNum;
  10985. g++
  10986. ) {
  10987. c = e[g].cells;
  10988. for (var h, i = 0; (h = c[i++]); ) {
  10989. var j = domUtils.getXY(h).x;
  10990. if (j > d) break;
  10991. if (j == d && 1 == h.colSpan) {
  10992. f.push(h);
  10993. break;
  10994. }
  10995. }
  10996. }
  10997. return f;
  10998. } catch (k) {
  10999. a(k);
  11000. }
  11001. },
  11002. update: function(a) {
  11003. (this.table = a || this.table),
  11004. (this.selectedTds = []),
  11005. (this.cellsRange = {}),
  11006. (this.indexTable = []);
  11007. for (
  11008. var b = this.table.rows,
  11009. c = this.getMaxRows(),
  11010. d = c - b.length,
  11011. e = this.getMaxCols();
  11012. d--;
  11013. )
  11014. this.table.insertRow(b.length);
  11015. (this.rowsNum = c), (this.colsNum = e);
  11016. for (var f = 0, g = b.length; f < g; f++)
  11017. this.indexTable[f] = new Array(e);
  11018. for (var h, i = 0; (h = b[i]); i++)
  11019. for (var j, k = 0, l = h.cells; (j = l[k]); k++) {
  11020. j.rowSpan > c && (j.rowSpan = c);
  11021. for (
  11022. var m = k, n = j.rowSpan || 1, o = j.colSpan || 1;
  11023. this.indexTable[i][m];
  11024. )
  11025. m++;
  11026. for (var p = 0; p < n; p++)
  11027. for (var q = 0; q < o; q++)
  11028. this.indexTable[i + p][m + q] = {
  11029. rowIndex: i,
  11030. cellIndex: k,
  11031. colIndex: m,
  11032. rowSpan: n,
  11033. colSpan: o,
  11034. };
  11035. }
  11036. for (p = 0; p < c; p++)
  11037. for (q = 0; q < e; q++)
  11038. void 0 === this.indexTable[p][q] &&
  11039. ((h = b[p]),
  11040. (j = h.cells[h.cells.length - 1]),
  11041. (j = j
  11042. ? j.cloneNode(!0)
  11043. : this.table.ownerDocument.createElement("td")),
  11044. this.setCellContent(j),
  11045. 1 !== j.colSpan && (j.colSpan = 1),
  11046. 1 !== j.rowSpan && (j.rowSpan = 1),
  11047. h.appendChild(j),
  11048. (this.indexTable[p][q] = {
  11049. rowIndex: p,
  11050. cellIndex: j.cellIndex,
  11051. colIndex: q,
  11052. rowSpan: 1,
  11053. colSpan: 1,
  11054. }));
  11055. var r = domUtils.getElementsByTagName(this.table, "td"),
  11056. s = [];
  11057. if (
  11058. (utils.each(r, function(a) {
  11059. domUtils.hasClass(a, "selectTdClass") && s.push(a);
  11060. }),
  11061. s.length)
  11062. ) {
  11063. var t = s[0],
  11064. u = s[s.length - 1],
  11065. v = this.getCellInfo(t),
  11066. w = this.getCellInfo(u);
  11067. (this.selectedTds = s),
  11068. (this.cellsRange = {
  11069. beginRowIndex: v.rowIndex,
  11070. beginColIndex: v.colIndex,
  11071. endRowIndex: w.rowIndex + w.rowSpan - 1,
  11072. endColIndex: w.colIndex + w.colSpan - 1,
  11073. });
  11074. }
  11075. if (!domUtils.hasClass(this.table.rows[0], "firstRow")) {
  11076. domUtils.addClass(this.table.rows[0], "firstRow");
  11077. for (var f = 1; f < this.table.rows.length; f++)
  11078. domUtils.removeClasses(this.table.rows[f], "firstRow");
  11079. }
  11080. },
  11081. getCellInfo: function(a) {
  11082. if (a)
  11083. for (
  11084. var b = a.cellIndex,
  11085. c = a.parentNode.rowIndex,
  11086. d = this.indexTable[c],
  11087. e = this.colsNum,
  11088. f = b;
  11089. f < e;
  11090. f++
  11091. ) {
  11092. var g = d[f];
  11093. if (g.rowIndex === c && g.cellIndex === b) return g;
  11094. }
  11095. },
  11096. getCell: function(a, b) {
  11097. return (a < this.rowsNum && this.table.rows[a].cells[b]) || null;
  11098. },
  11099. deleteCell: function(a, b) {
  11100. b = "number" == typeof b ? b : a.parentNode.rowIndex;
  11101. var c = this.table.rows[b];
  11102. c.deleteCell(a.cellIndex);
  11103. },
  11104. getCellsRange: function(a, b) {
  11105. function c(a, b, e, f) {
  11106. var g,
  11107. h,
  11108. i,
  11109. j = a,
  11110. k = b,
  11111. l = e,
  11112. m = f;
  11113. if (a > 0)
  11114. for (h = b; h < f; h++)
  11115. (g = d.indexTable[a][h]),
  11116. (i = g.rowIndex),
  11117. i < a && (j = Math.min(i, j));
  11118. if (f < d.colsNum)
  11119. for (i = a; i < e; i++)
  11120. (g = d.indexTable[i][f]),
  11121. (h = g.colIndex + g.colSpan - 1),
  11122. h > f && (m = Math.max(h, m));
  11123. if (e < d.rowsNum)
  11124. for (h = b; h < f; h++)
  11125. (g = d.indexTable[e][h]),
  11126. (i = g.rowIndex + g.rowSpan - 1),
  11127. i > e && (l = Math.max(i, l));
  11128. if (b > 0)
  11129. for (i = a; i < e; i++)
  11130. (g = d.indexTable[i][b]),
  11131. (h = g.colIndex),
  11132. h < b && (k = Math.min(g.colIndex, k));
  11133. return j != a || k != b || l != e || m != f
  11134. ? c(j, k, l, m)
  11135. : {
  11136. beginRowIndex: a,
  11137. beginColIndex: b,
  11138. endRowIndex: e,
  11139. endColIndex: f,
  11140. };
  11141. }
  11142. try {
  11143. var d = this,
  11144. e = d.getCellInfo(a);
  11145. if (a === b)
  11146. return {
  11147. beginRowIndex: e.rowIndex,
  11148. beginColIndex: e.colIndex,
  11149. endRowIndex: e.rowIndex + e.rowSpan - 1,
  11150. endColIndex: e.colIndex + e.colSpan - 1,
  11151. };
  11152. var f = d.getCellInfo(b),
  11153. g = Math.min(e.rowIndex, f.rowIndex),
  11154. h = Math.min(e.colIndex, f.colIndex),
  11155. i = Math.max(
  11156. e.rowIndex + e.rowSpan - 1,
  11157. f.rowIndex + f.rowSpan - 1
  11158. ),
  11159. j = Math.max(
  11160. e.colIndex + e.colSpan - 1,
  11161. f.colIndex + f.colSpan - 1
  11162. );
  11163. return c(g, h, i, j);
  11164. } catch (k) {}
  11165. },
  11166. getCells: function(a) {
  11167. this.clearSelected();
  11168. for (
  11169. var b,
  11170. c,
  11171. d,
  11172. e = a.beginRowIndex,
  11173. f = a.beginColIndex,
  11174. g = a.endRowIndex,
  11175. h = a.endColIndex,
  11176. i = {},
  11177. j = [],
  11178. k = e;
  11179. k <= g;
  11180. k++
  11181. )
  11182. for (var l = f; l <= h; l++) {
  11183. (b = this.indexTable[k][l]), (c = b.rowIndex), (d = b.colIndex);
  11184. var m = c + "|" + d;
  11185. if (!i[m]) {
  11186. if (
  11187. ((i[m] = 1),
  11188. c < k ||
  11189. d < l ||
  11190. c + b.rowSpan - 1 > g ||
  11191. d + b.colSpan - 1 > h)
  11192. )
  11193. return null;
  11194. j.push(this.getCell(c, b.cellIndex));
  11195. }
  11196. }
  11197. return j;
  11198. },
  11199. clearSelected: function() {
  11200. b.removeSelectedClass(this.selectedTds),
  11201. (this.selectedTds = []),
  11202. (this.cellsRange = {});
  11203. },
  11204. setSelected: function(a) {
  11205. var c = this.getCells(a);
  11206. b.addSelectedClass(c),
  11207. (this.selectedTds = c),
  11208. (this.cellsRange = a);
  11209. },
  11210. isFullRow: function() {
  11211. var a = this.cellsRange;
  11212. return a.endColIndex - a.beginColIndex + 1 == this.colsNum;
  11213. },
  11214. isFullCol: function() {
  11215. var a = this.cellsRange,
  11216. b = this.table,
  11217. c = b.getElementsByTagName("th"),
  11218. d = a.endRowIndex - a.beginRowIndex + 1;
  11219. return c.length
  11220. ? d == this.rowsNum || d == this.rowsNum - 1
  11221. : d == this.rowsNum;
  11222. },
  11223. getNextCell: function(b, c, d) {
  11224. try {
  11225. var e,
  11226. f,
  11227. g = this.getCellInfo(b),
  11228. h = this.selectedTds.length && !d,
  11229. i = this.cellsRange;
  11230. return (!c && 0 == g.rowIndex) ||
  11231. (c &&
  11232. (h
  11233. ? i.endRowIndex == this.rowsNum - 1
  11234. : g.rowIndex + g.rowSpan > this.rowsNum - 1))
  11235. ? null
  11236. : ((e = c
  11237. ? h
  11238. ? i.endRowIndex + 1
  11239. : g.rowIndex + g.rowSpan
  11240. : h
  11241. ? i.beginRowIndex - 1
  11242. : g.rowIndex - 1),
  11243. (f = h ? i.beginColIndex : g.colIndex),
  11244. this.getCell(
  11245. this.indexTable[e][f].rowIndex,
  11246. this.indexTable[e][f].cellIndex
  11247. ));
  11248. } catch (j) {
  11249. a(j);
  11250. }
  11251. },
  11252. getPreviewCell: function(b, c) {
  11253. try {
  11254. var d,
  11255. e,
  11256. f = this.getCellInfo(b),
  11257. g = this.selectedTds.length,
  11258. h = this.cellsRange;
  11259. return (!c && (g ? !h.beginColIndex : !f.colIndex)) ||
  11260. (c &&
  11261. (g
  11262. ? h.endColIndex == this.colsNum - 1
  11263. : f.rowIndex > this.colsNum - 1))
  11264. ? null
  11265. : ((d = c
  11266. ? g
  11267. ? h.beginRowIndex
  11268. : f.rowIndex < 1
  11269. ? 0
  11270. : f.rowIndex - 1
  11271. : g
  11272. ? h.beginRowIndex
  11273. : f.rowIndex),
  11274. (e = c
  11275. ? g
  11276. ? h.endColIndex + 1
  11277. : f.colIndex
  11278. : g
  11279. ? h.beginColIndex - 1
  11280. : f.colIndex < 1
  11281. ? 0
  11282. : f.colIndex - 1),
  11283. this.getCell(
  11284. this.indexTable[d][e].rowIndex,
  11285. this.indexTable[d][e].cellIndex
  11286. ));
  11287. } catch (i) {
  11288. a(i);
  11289. }
  11290. },
  11291. moveContent: function(a, c) {
  11292. if (!b.isEmptyBlock(c)) {
  11293. if (b.isEmptyBlock(a)) return void (a.innerHTML = c.innerHTML);
  11294. var d = a.lastChild;
  11295. for (
  11296. (3 != d.nodeType && dtd.$block[d.tagName]) ||
  11297. a.appendChild(a.ownerDocument.createElement("br"));
  11298. (d = c.firstChild);
  11299. )
  11300. a.appendChild(d);
  11301. }
  11302. },
  11303. mergeRight: function(a) {
  11304. var b = this.getCellInfo(a),
  11305. c = b.colIndex + b.colSpan,
  11306. d = this.indexTable[b.rowIndex][c],
  11307. e = this.getCell(d.rowIndex, d.cellIndex);
  11308. (a.colSpan = b.colSpan + d.colSpan),
  11309. a.removeAttribute("width"),
  11310. this.moveContent(a, e),
  11311. this.deleteCell(e, d.rowIndex),
  11312. this.update();
  11313. },
  11314. mergeDown: function(a) {
  11315. var b = this.getCellInfo(a),
  11316. c = b.rowIndex + b.rowSpan,
  11317. d = this.indexTable[c][b.colIndex],
  11318. e = this.getCell(d.rowIndex, d.cellIndex);
  11319. (a.rowSpan = b.rowSpan + d.rowSpan),
  11320. a.removeAttribute("height"),
  11321. this.moveContent(a, e),
  11322. this.deleteCell(e, d.rowIndex),
  11323. this.update();
  11324. },
  11325. mergeRange: function() {
  11326. var a = this.cellsRange,
  11327. b = this.getCell(
  11328. a.beginRowIndex,
  11329. this.indexTable[a.beginRowIndex][a.beginColIndex].cellIndex
  11330. );
  11331. if ("TH" == b.tagName && a.endRowIndex !== a.beginRowIndex) {
  11332. var c = this.indexTable,
  11333. d = this.getCellInfo(b);
  11334. (b = this.getCell(1, c[1][d.colIndex].cellIndex)),
  11335. (a = this.getCellsRange(
  11336. b,
  11337. this.getCell(
  11338. c[this.rowsNum - 1][d.colIndex].rowIndex,
  11339. c[this.rowsNum - 1][d.colIndex].cellIndex
  11340. )
  11341. ));
  11342. }
  11343. for (var e, f = this.getCells(a), g = 0; (e = f[g++]); )
  11344. e !== b && (this.moveContent(b, e), this.deleteCell(e));
  11345. if (
  11346. ((b.rowSpan = a.endRowIndex - a.beginRowIndex + 1),
  11347. b.rowSpan > 1 && b.removeAttribute("height"),
  11348. (b.colSpan = a.endColIndex - a.beginColIndex + 1),
  11349. b.colSpan > 1 && b.removeAttribute("width"),
  11350. b.rowSpan == this.rowsNum && 1 != b.colSpan && (b.colSpan = 1),
  11351. b.colSpan == this.colsNum && 1 != b.rowSpan)
  11352. ) {
  11353. var h = b.parentNode.rowIndex;
  11354. if (this.table.deleteRow)
  11355. for (var g = h + 1, i = h + 1, j = b.rowSpan; g < j; g++)
  11356. this.table.deleteRow(i);
  11357. else
  11358. for (var g = 0, j = b.rowSpan - 1; g < j; g++) {
  11359. var k = this.table.rows[h + 1];
  11360. k.parentNode.removeChild(k);
  11361. }
  11362. b.rowSpan = 1;
  11363. }
  11364. this.update();
  11365. },
  11366. insertRow: function(a, b) {
  11367. function c(a, b, c) {
  11368. if (0 == a) {
  11369. var d = c.nextSibling || c.previousSibling,
  11370. e = d.cells[a];
  11371. "TH" == e.tagName &&
  11372. ((e = b.ownerDocument.createElement("th")),
  11373. e.appendChild(b.firstChild),
  11374. c.insertBefore(e, b),
  11375. domUtils.remove(b));
  11376. } else if ("TH" == b.tagName) {
  11377. var f = b.ownerDocument.createElement("td");
  11378. f.appendChild(b.firstChild),
  11379. c.insertBefore(f, b),
  11380. domUtils.remove(b);
  11381. }
  11382. }
  11383. var d,
  11384. e = this.colsNum,
  11385. f = this.table,
  11386. g = f.insertRow(a),
  11387. h = "string" == typeof b && "TH" == b.toUpperCase();
  11388. if (0 == a || a == this.rowsNum)
  11389. for (var i = 0; i < e; i++)
  11390. (d = this.cloneCell(b, !0)),
  11391. this.setCellContent(d),
  11392. d.getAttribute("vAlign") &&
  11393. d.setAttribute("vAlign", d.getAttribute("vAlign")),
  11394. g.appendChild(d),
  11395. h || c(i, d, g);
  11396. else {
  11397. var j = this.indexTable[a];
  11398. for (i = 0; i < e; i++) {
  11399. var k = j[i];
  11400. k.rowIndex < a
  11401. ? ((d = this.getCell(k.rowIndex, k.cellIndex)),
  11402. (d.rowSpan = k.rowSpan + 1))
  11403. : ((d = this.cloneCell(b, !0)),
  11404. this.setCellContent(d),
  11405. g.appendChild(d)),
  11406. h || c(i, d, g);
  11407. }
  11408. }
  11409. return this.update(), g;
  11410. },
  11411. deleteRow: function(a) {
  11412. for (
  11413. var b = this.table.rows[a],
  11414. c = this.indexTable[a],
  11415. d = this.colsNum,
  11416. e = 0,
  11417. f = 0;
  11418. f < d;
  11419. ) {
  11420. var g = c[f],
  11421. h = this.getCell(g.rowIndex, g.cellIndex);
  11422. if (h.rowSpan > 1 && g.rowIndex == a) {
  11423. var i = h.cloneNode(!0);
  11424. (i.rowSpan = h.rowSpan - 1),
  11425. (i.innerHTML = ""),
  11426. (h.rowSpan = 1);
  11427. var j,
  11428. k = a + 1,
  11429. l = this.table.rows[k],
  11430. m = this.getPreviewMergedCellsNum(k, f) - e;
  11431. m < f
  11432. ? ((j = f - m - 1), domUtils.insertAfter(l.cells[j], i))
  11433. : l.cells.length && l.insertBefore(i, l.cells[0]),
  11434. (e += 1);
  11435. }
  11436. f += h.colSpan || 1;
  11437. }
  11438. var n = [],
  11439. o = {};
  11440. for (f = 0; f < d; f++) {
  11441. var p = c[f].rowIndex,
  11442. q = c[f].cellIndex,
  11443. r = p + "_" + q;
  11444. o[r] || ((o[r] = 1), (h = this.getCell(p, q)), n.push(h));
  11445. }
  11446. var s = [];
  11447. utils.each(n, function(a) {
  11448. 1 == a.rowSpan ? a.parentNode.removeChild(a) : s.push(a);
  11449. }),
  11450. utils.each(s, function(a) {
  11451. a.rowSpan--;
  11452. }),
  11453. b.parentNode.removeChild(b),
  11454. this.update();
  11455. },
  11456. insertCol: function(a, b, c) {
  11457. function d(a, b, c) {
  11458. if (0 == a) {
  11459. var d = b.nextSibling || b.previousSibling;
  11460. "TH" == d.tagName &&
  11461. ((d = b.ownerDocument.createElement("th")),
  11462. d.appendChild(b.firstChild),
  11463. c.insertBefore(d, b),
  11464. domUtils.remove(b));
  11465. } else if ("TH" == b.tagName) {
  11466. var e = b.ownerDocument.createElement("td");
  11467. e.appendChild(b.firstChild),
  11468. c.insertBefore(e, b),
  11469. domUtils.remove(b);
  11470. }
  11471. }
  11472. var e,
  11473. f,
  11474. g,
  11475. h = this.rowsNum,
  11476. i = 0,
  11477. j = parseInt(
  11478. (this.table.offsetWidth -
  11479. 20 * (this.colsNum + 1) -
  11480. (this.colsNum + 1)) /
  11481. (this.colsNum + 1),
  11482. 10
  11483. ),
  11484. k = "string" == typeof b && "TH" == b.toUpperCase();
  11485. if (0 == a || a == this.colsNum)
  11486. for (; i < h; i++)
  11487. (e = this.table.rows[i]),
  11488. (g = e.cells[0 == a ? a : e.cells.length]),
  11489. (f = this.cloneCell(b, !0)),
  11490. this.setCellContent(f),
  11491. f.setAttribute("vAlign", f.getAttribute("vAlign")),
  11492. g && f.setAttribute("width", g.getAttribute("width")),
  11493. a
  11494. ? domUtils.insertAfter(e.cells[e.cells.length - 1], f)
  11495. : e.insertBefore(f, e.cells[0]),
  11496. k || d(i, f, e);
  11497. else
  11498. for (; i < h; i++) {
  11499. var l = this.indexTable[i][a];
  11500. l.colIndex < a
  11501. ? ((f = this.getCell(l.rowIndex, l.cellIndex)),
  11502. (f.colSpan = l.colSpan + 1))
  11503. : ((e = this.table.rows[i]),
  11504. (g = e.cells[l.cellIndex]),
  11505. (f = this.cloneCell(b, !0)),
  11506. this.setCellContent(f),
  11507. f.setAttribute("vAlign", f.getAttribute("vAlign")),
  11508. g && f.setAttribute("width", g.getAttribute("width")),
  11509. g ? e.insertBefore(f, g) : e.appendChild(f)),
  11510. k || d(i, f, e);
  11511. }
  11512. this.update(),
  11513. this.updateWidth(j, c || { tdPadding: 10, tdBorder: 1 });
  11514. },
  11515. updateWidth: function(a, c) {
  11516. var d = this.table,
  11517. e = b.getWidth(d) - 2 * c.tdPadding - c.tdBorder + a;
  11518. if (e < d.ownerDocument.body.offsetWidth)
  11519. return void d.setAttribute("width", e);
  11520. var f = domUtils.getElementsByTagName(this.table, "td th");
  11521. utils.each(f, function(b) {
  11522. b.setAttribute("width", a);
  11523. });
  11524. },
  11525. deleteCol: function(a) {
  11526. for (
  11527. var b = this.indexTable,
  11528. c = this.table.rows,
  11529. d = this.table.getAttribute("width"),
  11530. e = 0,
  11531. f = this.rowsNum,
  11532. g = {},
  11533. h = 0;
  11534. h < f;
  11535. ) {
  11536. var i = b[h],
  11537. j = i[a],
  11538. k = j.rowIndex + "_" + j.colIndex;
  11539. if (!g[k]) {
  11540. g[k] = 1;
  11541. var l = this.getCell(j.rowIndex, j.cellIndex);
  11542. e ||
  11543. (e = l && parseInt(l.offsetWidth / l.colSpan, 10).toFixed(0)),
  11544. l.colSpan > 1 ? l.colSpan-- : c[h].deleteCell(j.cellIndex),
  11545. (h += j.rowSpan || 1);
  11546. }
  11547. }
  11548. this.table.setAttribute("width", d - e), this.update();
  11549. },
  11550. splitToCells: function(a) {
  11551. var b = this,
  11552. c = this.splitToRows(a);
  11553. utils.each(c, function(a) {
  11554. b.splitToCols(a);
  11555. });
  11556. },
  11557. splitToRows: function(a) {
  11558. var b = this.getCellInfo(a),
  11559. c = b.rowIndex,
  11560. d = b.colIndex,
  11561. e = [];
  11562. (a.rowSpan = 1), e.push(a);
  11563. for (var f = c, g = c + b.rowSpan; f < g; f++)
  11564. if (f != c) {
  11565. var h = this.table.rows[f],
  11566. i = h.insertCell(d - this.getPreviewMergedCellsNum(f, d));
  11567. (i.colSpan = b.colSpan),
  11568. this.setCellContent(i),
  11569. i.setAttribute("vAlign", a.getAttribute("vAlign")),
  11570. i.setAttribute("align", a.getAttribute("align")),
  11571. a.style.cssText && (i.style.cssText = a.style.cssText),
  11572. e.push(i);
  11573. }
  11574. return this.update(), e;
  11575. },
  11576. getPreviewMergedCellsNum: function(a, b) {
  11577. for (var c = this.indexTable[a], d = 0, e = 0; e < b; ) {
  11578. var f = c[e].colSpan,
  11579. g = c[e].rowIndex;
  11580. (d += f - (g == a ? 1 : 0)), (e += f);
  11581. }
  11582. return d;
  11583. },
  11584. splitToCols: function(a) {
  11585. var b = (a.offsetWidth / a.colSpan - 22).toFixed(0),
  11586. c = this.getCellInfo(a),
  11587. d = c.rowIndex,
  11588. e = c.colIndex,
  11589. f = [];
  11590. (a.colSpan = 1), a.setAttribute("width", b), f.push(a);
  11591. for (var g = e, h = e + c.colSpan; g < h; g++)
  11592. if (g != e) {
  11593. var i = this.table.rows[d],
  11594. j = i.insertCell(this.indexTable[d][g].cellIndex + 1);
  11595. if (
  11596. ((j.rowSpan = c.rowSpan),
  11597. this.setCellContent(j),
  11598. j.setAttribute("vAlign", a.getAttribute("vAlign")),
  11599. j.setAttribute("align", a.getAttribute("align")),
  11600. j.setAttribute("width", b),
  11601. a.style.cssText && (j.style.cssText = a.style.cssText),
  11602. "TH" == a.tagName)
  11603. ) {
  11604. var k = a.ownerDocument.createElement("th");
  11605. k.appendChild(j.firstChild),
  11606. k.setAttribute("vAlign", a.getAttribute("vAlign")),
  11607. (k.rowSpan = j.rowSpan),
  11608. i.insertBefore(k, j),
  11609. domUtils.remove(j);
  11610. }
  11611. f.push(j);
  11612. }
  11613. return this.update(), f;
  11614. },
  11615. isLastCell: function(a, b, c) {
  11616. (b = b || this.rowsNum), (c = c || this.colsNum);
  11617. var d = this.getCellInfo(a);
  11618. return d.rowIndex + d.rowSpan == b && d.colIndex + d.colSpan == c;
  11619. },
  11620. getLastCell: function(a) {
  11621. a = a || this.table.getElementsByTagName("td");
  11622. var b,
  11623. c = (this.getCellInfo(a[0]), this),
  11624. d = a[0],
  11625. e = d.parentNode,
  11626. f = 0,
  11627. g = 0;
  11628. return (
  11629. utils.each(a, function(a) {
  11630. a.parentNode == e && (g += a.colSpan || 1),
  11631. (f += a.rowSpan * a.colSpan || 1);
  11632. }),
  11633. (b = f / g),
  11634. utils.each(a, function(a) {
  11635. if (c.isLastCell(a, b, g)) return (d = a), !1;
  11636. }),
  11637. d
  11638. );
  11639. },
  11640. selectRow: function(a) {
  11641. var b = this.indexTable[a],
  11642. c = this.getCell(b[0].rowIndex, b[0].cellIndex),
  11643. d = this.getCell(
  11644. b[this.colsNum - 1].rowIndex,
  11645. b[this.colsNum - 1].cellIndex
  11646. ),
  11647. e = this.getCellsRange(c, d);
  11648. this.setSelected(e);
  11649. },
  11650. selectTable: function() {
  11651. var a = this.table.getElementsByTagName("td"),
  11652. b = this.getCellsRange(a[0], a[a.length - 1]);
  11653. this.setSelected(b);
  11654. },
  11655. setBackground: function(a, b) {
  11656. if ("string" == typeof b)
  11657. utils.each(a, function(a) {
  11658. a.style.backgroundColor = b;
  11659. });
  11660. else if ("object" == typeof b) {
  11661. b = utils.extend({ repeat: !0, colorList: ["#ddd", "#fff"] }, b);
  11662. for (
  11663. var c,
  11664. d = this.getCellInfo(a[0]).rowIndex,
  11665. e = 0,
  11666. f = b.colorList,
  11667. g = function(a, b, c) {
  11668. return a[b] ? a[b] : c ? a[b % a.length] : "";
  11669. },
  11670. h = 0;
  11671. (c = a[h++]);
  11672. ) {
  11673. var i = this.getCellInfo(c);
  11674. c.style.backgroundColor = g(
  11675. f,
  11676. d + e == i.rowIndex ? e : ++e,
  11677. b.repeat
  11678. );
  11679. }
  11680. }
  11681. },
  11682. removeBackground: function(a) {
  11683. utils.each(a, function(a) {
  11684. a.style.backgroundColor = "";
  11685. });
  11686. },
  11687. });
  11688. })(),
  11689. (function() {
  11690. function a(a, c) {
  11691. var d = domUtils.getElementsByTagName(a, "td th");
  11692. utils.each(d, function(a) {
  11693. a.removeAttribute("width");
  11694. }),
  11695. a.setAttribute("width", b(c, !0, g(c, a)));
  11696. var e = [];
  11697. setTimeout(function() {
  11698. utils.each(d, function(a) {
  11699. 1 == a.colSpan && e.push(a.offsetWidth);
  11700. }),
  11701. utils.each(d, function(a, b) {
  11702. 1 == a.colSpan && a.setAttribute("width", e[b] + "");
  11703. });
  11704. }, 0);
  11705. }
  11706. function b(a, b, c) {
  11707. var d = a.body;
  11708. return (
  11709. d.offsetWidth -
  11710. (b
  11711. ? 2 * parseInt(domUtils.getComputedStyle(d, "margin-left"), 10)
  11712. : 0) -
  11713. 2 * c.tableBorder -
  11714. (a.options.offsetWidth || 0)
  11715. );
  11716. }
  11717. function c(a) {
  11718. var b = e(a).cell;
  11719. if (b) {
  11720. var c = h(b);
  11721. return c.selectedTds.length ? c.selectedTds : [b];
  11722. }
  11723. return [];
  11724. }
  11725. var d = UE.UETable,
  11726. e = function(a) {
  11727. return d.getTableItemsByRange(a);
  11728. },
  11729. f = function(a) {
  11730. return d.getUETableBySelected(a);
  11731. },
  11732. g = function(a, b) {
  11733. return d.getDefaultValue(a, b);
  11734. },
  11735. h = function(a) {
  11736. return d.getUETable(a);
  11737. };
  11738. (UE.commands.inserttable = {
  11739. queryCommandState: function() {
  11740. return e(this).table ? -1 : 0;
  11741. },
  11742. execCommand: function(a, b) {
  11743. function c(a, b) {
  11744. for (var c = [], d = a.numRows, e = a.numCols, f = 0; f < d; f++) {
  11745. c.push("<tr" + (0 == f ? ' class="firstRow"' : "") + ">");
  11746. for (var g = 0; g < e; g++)
  11747. c.push(
  11748. '<td width="' +
  11749. b +
  11750. '" vAlign="' +
  11751. a.tdvalign +
  11752. '" >' +
  11753. (browser.ie && browser.version < 11
  11754. ? domUtils.fillChar
  11755. : "<br/>") +
  11756. "</td>"
  11757. );
  11758. c.push("</tr>");
  11759. }
  11760. return "<table><tbody>" + c.join("") + "</tbody></table>";
  11761. }
  11762. b ||
  11763. (b = utils.extend(
  11764. {},
  11765. {
  11766. numCols: this.options.defaultCols,
  11767. numRows: this.options.defaultRows,
  11768. tdvalign: this.options.tdvalign,
  11769. }
  11770. ));
  11771. var d = this,
  11772. e = this.selection.getRange(),
  11773. f = e.startContainer,
  11774. h =
  11775. domUtils.findParent(
  11776. f,
  11777. function(a) {
  11778. return domUtils.isBlockElm(a);
  11779. },
  11780. !0
  11781. ) || d.body,
  11782. i = g(d),
  11783. j = h.offsetWidth,
  11784. k = Math.floor(j / b.numCols - 2 * i.tdPadding - i.tdBorder);
  11785. !b.tdvalign && (b.tdvalign = d.options.tdvalign),
  11786. d.execCommand("inserthtml", c(b, k));
  11787. },
  11788. }),
  11789. (UE.commands.insertparagraphbeforetable = {
  11790. queryCommandState: function() {
  11791. return e(this).cell ? 0 : -1;
  11792. },
  11793. execCommand: function() {
  11794. var a = e(this).table;
  11795. if (a) {
  11796. var b = this.document.createElement("p");
  11797. (b.innerHTML = browser.ie ? "&nbsp;" : "<br />"),
  11798. a.parentNode.insertBefore(b, a),
  11799. this.selection
  11800. .getRange()
  11801. .setStart(b, 0)
  11802. .setCursor();
  11803. }
  11804. },
  11805. }),
  11806. (UE.commands.deletetable = {
  11807. queryCommandState: function() {
  11808. var a = this.selection.getRange();
  11809. return domUtils.findParentByTagName(a.startContainer, "table", !0)
  11810. ? 0
  11811. : -1;
  11812. },
  11813. execCommand: function(a, b) {
  11814. var c = this.selection.getRange();
  11815. if (
  11816. (b =
  11817. b ||
  11818. domUtils.findParentByTagName(c.startContainer, "table", !0))
  11819. ) {
  11820. var d = b.nextSibling;
  11821. d ||
  11822. ((d = domUtils.createElement(this.document, "p", {
  11823. innerHTML: browser.ie ? domUtils.fillChar : "<br/>",
  11824. })),
  11825. b.parentNode.insertBefore(d, b)),
  11826. domUtils.remove(b),
  11827. (c = this.selection.getRange()),
  11828. 3 == d.nodeType ? c.setStartBefore(d) : c.setStart(d, 0),
  11829. c.setCursor(!1, !0),
  11830. this.fireEvent("tablehasdeleted");
  11831. }
  11832. },
  11833. }),
  11834. (UE.commands.cellalign = {
  11835. queryCommandState: function() {
  11836. return c(this).length ? 0 : -1;
  11837. },
  11838. execCommand: function(a, b) {
  11839. var d = c(this);
  11840. if (d.length)
  11841. for (var e, f = 0; (e = d[f++]); ) e.setAttribute("align", b);
  11842. },
  11843. }),
  11844. (UE.commands.cellvalign = {
  11845. queryCommandState: function() {
  11846. return c(this).length ? 0 : -1;
  11847. },
  11848. execCommand: function(a, b) {
  11849. var d = c(this);
  11850. if (d.length)
  11851. for (var e, f = 0; (e = d[f++]); ) e.setAttribute("vAlign", b);
  11852. },
  11853. }),
  11854. (UE.commands.insertcaption = {
  11855. queryCommandState: function() {
  11856. var a = e(this).table;
  11857. return a && 0 == a.getElementsByTagName("caption").length ? 1 : -1;
  11858. },
  11859. execCommand: function() {
  11860. var a = e(this).table;
  11861. if (a) {
  11862. var b = this.document.createElement("caption");
  11863. (b.innerHTML = browser.ie ? domUtils.fillChar : "<br/>"),
  11864. a.insertBefore(b, a.firstChild);
  11865. var c = this.selection.getRange();
  11866. c.setStart(b, 0).setCursor();
  11867. }
  11868. },
  11869. }),
  11870. (UE.commands.deletecaption = {
  11871. queryCommandState: function() {
  11872. var a = this.selection.getRange(),
  11873. b = domUtils.findParentByTagName(a.startContainer, "table");
  11874. return b
  11875. ? 0 == b.getElementsByTagName("caption").length
  11876. ? -1
  11877. : 1
  11878. : -1;
  11879. },
  11880. execCommand: function() {
  11881. var a = this.selection.getRange(),
  11882. b = domUtils.findParentByTagName(a.startContainer, "table");
  11883. if (b) {
  11884. domUtils.remove(b.getElementsByTagName("caption")[0]);
  11885. var c = this.selection.getRange();
  11886. c.setStart(b.rows[0].cells[0], 0).setCursor();
  11887. }
  11888. },
  11889. }),
  11890. (UE.commands.inserttitle = {
  11891. queryCommandState: function() {
  11892. var a = e(this).table;
  11893. if (a) {
  11894. var b = a.rows[0];
  11895. return "th" != b.cells[b.cells.length - 1].tagName.toLowerCase()
  11896. ? 0
  11897. : -1;
  11898. }
  11899. return -1;
  11900. },
  11901. execCommand: function() {
  11902. var a = e(this).table;
  11903. a && h(a).insertRow(0, "th");
  11904. var b = a.getElementsByTagName("th")[0];
  11905. this.selection
  11906. .getRange()
  11907. .setStart(b, 0)
  11908. .setCursor(!1, !0);
  11909. },
  11910. }),
  11911. (UE.commands.deletetitle = {
  11912. queryCommandState: function() {
  11913. var a = e(this).table;
  11914. if (a) {
  11915. var b = a.rows[0];
  11916. return "th" == b.cells[b.cells.length - 1].tagName.toLowerCase()
  11917. ? 0
  11918. : -1;
  11919. }
  11920. return -1;
  11921. },
  11922. execCommand: function() {
  11923. var a = e(this).table;
  11924. a && domUtils.remove(a.rows[0]);
  11925. var b = a.getElementsByTagName("td")[0];
  11926. this.selection
  11927. .getRange()
  11928. .setStart(b, 0)
  11929. .setCursor(!1, !0);
  11930. },
  11931. }),
  11932. (UE.commands.inserttitlecol = {
  11933. queryCommandState: function() {
  11934. var a = e(this).table;
  11935. if (a) {
  11936. var b = a.rows[a.rows.length - 1];
  11937. return b.getElementsByTagName("th").length ? -1 : 0;
  11938. }
  11939. return -1;
  11940. },
  11941. execCommand: function(b) {
  11942. var c = e(this).table;
  11943. c && h(c).insertCol(0, "th"), a(c, this);
  11944. var d = c.getElementsByTagName("th")[0];
  11945. this.selection
  11946. .getRange()
  11947. .setStart(d, 0)
  11948. .setCursor(!1, !0);
  11949. },
  11950. }),
  11951. (UE.commands.deletetitlecol = {
  11952. queryCommandState: function() {
  11953. var a = e(this).table;
  11954. if (a) {
  11955. var b = a.rows[a.rows.length - 1];
  11956. return b.getElementsByTagName("th").length ? 0 : -1;
  11957. }
  11958. return -1;
  11959. },
  11960. execCommand: function() {
  11961. var b = e(this).table;
  11962. if (b)
  11963. for (var c = 0; c < b.rows.length; c++)
  11964. domUtils.remove(b.rows[c].children[0]);
  11965. a(b, this);
  11966. var d = b.getElementsByTagName("td")[0];
  11967. this.selection
  11968. .getRange()
  11969. .setStart(d, 0)
  11970. .setCursor(!1, !0);
  11971. },
  11972. }),
  11973. (UE.commands.mergeright = {
  11974. queryCommandState: function(a) {
  11975. var b = e(this),
  11976. c = b.table,
  11977. d = b.cell;
  11978. if (!c || !d) return -1;
  11979. var f = h(c);
  11980. if (f.selectedTds.length) return -1;
  11981. var g = f.getCellInfo(d),
  11982. i = g.colIndex + g.colSpan;
  11983. if (i >= f.colsNum) return -1;
  11984. var j = f.indexTable[g.rowIndex][i],
  11985. k = c.rows[j.rowIndex].cells[j.cellIndex];
  11986. return k &&
  11987. d.tagName == k.tagName &&
  11988. j.rowIndex == g.rowIndex &&
  11989. j.rowSpan == g.rowSpan
  11990. ? 0
  11991. : -1;
  11992. },
  11993. execCommand: function(a) {
  11994. var b = this.selection.getRange(),
  11995. c = b.createBookmark(!0),
  11996. d = e(this).cell,
  11997. f = h(d);
  11998. f.mergeRight(d), b.moveToBookmark(c).select();
  11999. },
  12000. }),
  12001. (UE.commands.mergedown = {
  12002. queryCommandState: function(a) {
  12003. var b = e(this),
  12004. c = b.table,
  12005. d = b.cell;
  12006. if (!c || !d) return -1;
  12007. var f = h(c);
  12008. if (f.selectedTds.length) return -1;
  12009. var g = f.getCellInfo(d),
  12010. i = g.rowIndex + g.rowSpan;
  12011. if (i >= f.rowsNum) return -1;
  12012. var j = f.indexTable[i][g.colIndex],
  12013. k = c.rows[j.rowIndex].cells[j.cellIndex];
  12014. return k &&
  12015. d.tagName == k.tagName &&
  12016. j.colIndex == g.colIndex &&
  12017. j.colSpan == g.colSpan
  12018. ? 0
  12019. : -1;
  12020. },
  12021. execCommand: function() {
  12022. var a = this.selection.getRange(),
  12023. b = a.createBookmark(!0),
  12024. c = e(this).cell,
  12025. d = h(c);
  12026. d.mergeDown(c), a.moveToBookmark(b).select();
  12027. },
  12028. }),
  12029. (UE.commands.mergecells = {
  12030. queryCommandState: function() {
  12031. return f(this) ? 0 : -1;
  12032. },
  12033. execCommand: function() {
  12034. var a = f(this);
  12035. if (a && a.selectedTds.length) {
  12036. var b = a.selectedTds[0];
  12037. a.mergeRange();
  12038. var c = this.selection.getRange();
  12039. domUtils.isEmptyBlock(b)
  12040. ? c.setStart(b, 0).collapse(!0)
  12041. : c.selectNodeContents(b),
  12042. c.select();
  12043. }
  12044. },
  12045. }),
  12046. (UE.commands.insertrow = {
  12047. queryCommandState: function() {
  12048. var a = e(this),
  12049. b = a.cell;
  12050. return b &&
  12051. ("TD" == b.tagName ||
  12052. ("TH" == b.tagName && a.tr !== a.table.rows[0])) &&
  12053. h(a.table).rowsNum < this.options.maxRowNum
  12054. ? 0
  12055. : -1;
  12056. },
  12057. execCommand: function() {
  12058. var a = this.selection.getRange(),
  12059. b = a.createBookmark(!0),
  12060. c = e(this),
  12061. d = c.cell,
  12062. f = c.table,
  12063. g = h(f),
  12064. i = g.getCellInfo(d);
  12065. if (g.selectedTds.length)
  12066. for (
  12067. var j = g.cellsRange,
  12068. k = 0,
  12069. l = j.endRowIndex - j.beginRowIndex + 1;
  12070. k < l;
  12071. k++
  12072. )
  12073. g.insertRow(j.beginRowIndex, d);
  12074. else g.insertRow(i.rowIndex, d);
  12075. a.moveToBookmark(b).select(),
  12076. "enabled" === f.getAttribute("interlaced") &&
  12077. this.fireEvent("interlacetable", f);
  12078. },
  12079. }),
  12080. (UE.commands.insertrownext = {
  12081. queryCommandState: function() {
  12082. var a = e(this),
  12083. b = a.cell;
  12084. return b &&
  12085. "TD" == b.tagName &&
  12086. h(a.table).rowsNum < this.options.maxRowNum
  12087. ? 0
  12088. : -1;
  12089. },
  12090. execCommand: function() {
  12091. var a = this.selection.getRange(),
  12092. b = a.createBookmark(!0),
  12093. c = e(this),
  12094. d = c.cell,
  12095. f = c.table,
  12096. g = h(f),
  12097. i = g.getCellInfo(d);
  12098. if (g.selectedTds.length)
  12099. for (
  12100. var j = g.cellsRange,
  12101. k = 0,
  12102. l = j.endRowIndex - j.beginRowIndex + 1;
  12103. k < l;
  12104. k++
  12105. )
  12106. g.insertRow(j.endRowIndex + 1, d);
  12107. else g.insertRow(i.rowIndex + i.rowSpan, d);
  12108. a.moveToBookmark(b).select(),
  12109. "enabled" === f.getAttribute("interlaced") &&
  12110. this.fireEvent("interlacetable", f);
  12111. },
  12112. }),
  12113. (UE.commands.deleterow = {
  12114. queryCommandState: function() {
  12115. var a = e(this);
  12116. return a.cell ? 0 : -1;
  12117. },
  12118. execCommand: function() {
  12119. var a = e(this).cell,
  12120. b = h(a),
  12121. c = b.cellsRange,
  12122. d = b.getCellInfo(a),
  12123. f = b.getVSideCell(a),
  12124. g = b.getVSideCell(a, !0),
  12125. i = this.selection.getRange();
  12126. if (utils.isEmptyObject(c)) b.deleteRow(d.rowIndex);
  12127. else
  12128. for (var j = c.beginRowIndex; j < c.endRowIndex + 1; j++)
  12129. b.deleteRow(c.beginRowIndex);
  12130. var k = b.table;
  12131. if (k.getElementsByTagName("td").length)
  12132. if (
  12133. 1 == d.rowSpan ||
  12134. d.rowSpan == c.endRowIndex - c.beginRowIndex + 1
  12135. )
  12136. (g || f) && i.selectNodeContents(g || f).setCursor(!1, !0);
  12137. else {
  12138. var l = b.getCell(
  12139. d.rowIndex,
  12140. b.indexTable[d.rowIndex][d.colIndex].cellIndex
  12141. );
  12142. l && i.selectNodeContents(l).setCursor(!1, !0);
  12143. }
  12144. else {
  12145. var m = k.nextSibling;
  12146. domUtils.remove(k), m && i.setStart(m, 0).setCursor(!1, !0);
  12147. }
  12148. "enabled" === k.getAttribute("interlaced") &&
  12149. this.fireEvent("interlacetable", k);
  12150. },
  12151. }),
  12152. (UE.commands.insertcol = {
  12153. queryCommandState: function(a) {
  12154. var b = e(this),
  12155. c = b.cell;
  12156. return c &&
  12157. ("TD" == c.tagName ||
  12158. ("TH" == c.tagName && c !== b.tr.cells[0])) &&
  12159. h(b.table).colsNum < this.options.maxColNum
  12160. ? 0
  12161. : -1;
  12162. },
  12163. execCommand: function(a) {
  12164. var b = this.selection.getRange(),
  12165. c = b.createBookmark(!0);
  12166. if (this.queryCommandState(a) != -1) {
  12167. var d = e(this).cell,
  12168. f = h(d),
  12169. g = f.getCellInfo(d);
  12170. if (f.selectedTds.length)
  12171. for (
  12172. var i = f.cellsRange,
  12173. j = 0,
  12174. k = i.endColIndex - i.beginColIndex + 1;
  12175. j < k;
  12176. j++
  12177. )
  12178. f.insertCol(i.beginColIndex, d);
  12179. else f.insertCol(g.colIndex, d);
  12180. b.moveToBookmark(c).select(!0);
  12181. }
  12182. },
  12183. }),
  12184. (UE.commands.insertcolnext = {
  12185. queryCommandState: function() {
  12186. var a = e(this),
  12187. b = a.cell;
  12188. return b && h(a.table).colsNum < this.options.maxColNum ? 0 : -1;
  12189. },
  12190. execCommand: function() {
  12191. var a = this.selection.getRange(),
  12192. b = a.createBookmark(!0),
  12193. c = e(this).cell,
  12194. d = h(c),
  12195. f = d.getCellInfo(c);
  12196. if (d.selectedTds.length)
  12197. for (
  12198. var g = d.cellsRange,
  12199. i = 0,
  12200. j = g.endColIndex - g.beginColIndex + 1;
  12201. i < j;
  12202. i++
  12203. )
  12204. d.insertCol(g.endColIndex + 1, c);
  12205. else d.insertCol(f.colIndex + f.colSpan, c);
  12206. a.moveToBookmark(b).select();
  12207. },
  12208. }),
  12209. (UE.commands.deletecol = {
  12210. queryCommandState: function() {
  12211. var a = e(this);
  12212. return a.cell ? 0 : -1;
  12213. },
  12214. execCommand: function() {
  12215. var a = e(this).cell,
  12216. b = h(a),
  12217. c = b.cellsRange,
  12218. d = b.getCellInfo(a),
  12219. f = b.getHSideCell(a),
  12220. g = b.getHSideCell(a, !0);
  12221. if (utils.isEmptyObject(c)) b.deleteCol(d.colIndex);
  12222. else
  12223. for (var i = c.beginColIndex; i < c.endColIndex + 1; i++)
  12224. b.deleteCol(c.beginColIndex);
  12225. var j = b.table,
  12226. k = this.selection.getRange();
  12227. if (j.getElementsByTagName("td").length)
  12228. domUtils.inDoc(a, this.document)
  12229. ? k.setStart(a, 0).setCursor(!1, !0)
  12230. : g && domUtils.inDoc(g, this.document)
  12231. ? k.selectNodeContents(g).setCursor(!1, !0)
  12232. : f &&
  12233. domUtils.inDoc(f, this.document) &&
  12234. k.selectNodeContents(f).setCursor(!0, !0);
  12235. else {
  12236. var l = j.nextSibling;
  12237. domUtils.remove(j), l && k.setStart(l, 0).setCursor(!1, !0);
  12238. }
  12239. },
  12240. }),
  12241. (UE.commands.splittocells = {
  12242. queryCommandState: function() {
  12243. var a = e(this),
  12244. b = a.cell;
  12245. if (!b) return -1;
  12246. var c = h(a.table);
  12247. return c.selectedTds.length > 0
  12248. ? -1
  12249. : b && (b.colSpan > 1 || b.rowSpan > 1)
  12250. ? 0
  12251. : -1;
  12252. },
  12253. execCommand: function() {
  12254. var a = this.selection.getRange(),
  12255. b = a.createBookmark(!0),
  12256. c = e(this).cell,
  12257. d = h(c);
  12258. d.splitToCells(c), a.moveToBookmark(b).select();
  12259. },
  12260. }),
  12261. (UE.commands.splittorows = {
  12262. queryCommandState: function() {
  12263. var a = e(this),
  12264. b = a.cell;
  12265. if (!b) return -1;
  12266. var c = h(a.table);
  12267. return c.selectedTds.length > 0 ? -1 : b && b.rowSpan > 1 ? 0 : -1;
  12268. },
  12269. execCommand: function() {
  12270. var a = this.selection.getRange(),
  12271. b = a.createBookmark(!0),
  12272. c = e(this).cell,
  12273. d = h(c);
  12274. d.splitToRows(c), a.moveToBookmark(b).select();
  12275. },
  12276. }),
  12277. (UE.commands.splittocols = {
  12278. queryCommandState: function() {
  12279. var a = e(this),
  12280. b = a.cell;
  12281. if (!b) return -1;
  12282. var c = h(a.table);
  12283. return c.selectedTds.length > 0 ? -1 : b && b.colSpan > 1 ? 0 : -1;
  12284. },
  12285. execCommand: function() {
  12286. var a = this.selection.getRange(),
  12287. b = a.createBookmark(!0),
  12288. c = e(this).cell,
  12289. d = h(c);
  12290. d.splitToCols(c), a.moveToBookmark(b).select();
  12291. },
  12292. }),
  12293. (UE.commands.adaptbytext = UE.commands.adaptbywindow = {
  12294. queryCommandState: function() {
  12295. return e(this).table ? 0 : -1;
  12296. },
  12297. execCommand: function(b) {
  12298. var c = e(this),
  12299. d = c.table;
  12300. if (d)
  12301. if ("adaptbywindow" == b) a(d, this);
  12302. else {
  12303. var f = domUtils.getElementsByTagName(d, "td th");
  12304. utils.each(f, function(a) {
  12305. a.removeAttribute("width");
  12306. }),
  12307. d.removeAttribute("width");
  12308. }
  12309. },
  12310. }),
  12311. (UE.commands.averagedistributecol = {
  12312. queryCommandState: function() {
  12313. var a = f(this);
  12314. return a && (a.isFullRow() || a.isFullCol()) ? 0 : -1;
  12315. },
  12316. execCommand: function(a) {
  12317. function b() {
  12318. var a,
  12319. b = e.table,
  12320. c = 0,
  12321. f = 0,
  12322. h = g(d, b);
  12323. if (e.isFullRow()) (c = b.offsetWidth), (f = e.colsNum);
  12324. else
  12325. for (
  12326. var i,
  12327. j = e.cellsRange.beginColIndex,
  12328. k = e.cellsRange.endColIndex,
  12329. l = j;
  12330. l <= k;
  12331. )
  12332. (i = e.selectedTds[l]),
  12333. (c += i.offsetWidth),
  12334. (l += i.colSpan),
  12335. (f += 1);
  12336. return (a = Math.ceil(c / f) - 2 * h.tdBorder - 2 * h.tdPadding);
  12337. }
  12338. function c(a) {
  12339. utils.each(domUtils.getElementsByTagName(e.table, "th"), function(
  12340. a
  12341. ) {
  12342. a.setAttribute("width", "");
  12343. });
  12344. var b = e.isFullRow()
  12345. ? domUtils.getElementsByTagName(e.table, "td")
  12346. : e.selectedTds;
  12347. utils.each(b, function(b) {
  12348. 1 == b.colSpan && b.setAttribute("width", a);
  12349. });
  12350. }
  12351. var d = this,
  12352. e = f(d);
  12353. e && e.selectedTds.length && c(b());
  12354. },
  12355. }),
  12356. (UE.commands.averagedistributerow = {
  12357. queryCommandState: function() {
  12358. var a = f(this);
  12359. return a
  12360. ? a.selectedTds && /th/gi.test(a.selectedTds[0].tagName)
  12361. ? -1
  12362. : a.isFullRow() || a.isFullCol()
  12363. ? 0
  12364. : -1
  12365. : -1;
  12366. },
  12367. execCommand: function(a) {
  12368. function b() {
  12369. var a,
  12370. b,
  12371. c = 0,
  12372. f = e.table,
  12373. h = g(d, f),
  12374. i = parseInt(
  12375. domUtils.getComputedStyle(
  12376. f.getElementsByTagName("td")[0],
  12377. "padding-top"
  12378. )
  12379. );
  12380. if (e.isFullCol()) {
  12381. var j,
  12382. k,
  12383. l = domUtils.getElementsByTagName(f, "caption"),
  12384. m = domUtils.getElementsByTagName(f, "th");
  12385. l.length > 0 && (j = l[0].offsetHeight),
  12386. m.length > 0 && (k = m[0].offsetHeight),
  12387. (c = f.offsetHeight - (j || 0) - (k || 0)),
  12388. (b = 0 == m.length ? e.rowsNum : e.rowsNum - 1);
  12389. } else {
  12390. for (
  12391. var n = e.cellsRange.beginRowIndex,
  12392. o = e.cellsRange.endRowIndex,
  12393. p = 0,
  12394. q = domUtils.getElementsByTagName(f, "tr"),
  12395. r = n;
  12396. r <= o;
  12397. r++
  12398. )
  12399. (c += q[r].offsetHeight), (p += 1);
  12400. b = p;
  12401. }
  12402. return (a =
  12403. browser.ie && browser.version < 9
  12404. ? Math.ceil(c / b)
  12405. : Math.ceil(c / b) - 2 * h.tdBorder - 2 * i);
  12406. }
  12407. function c(a) {
  12408. var b = e.isFullCol()
  12409. ? domUtils.getElementsByTagName(e.table, "td")
  12410. : e.selectedTds;
  12411. utils.each(b, function(b) {
  12412. 1 == b.rowSpan && b.setAttribute("height", a);
  12413. });
  12414. }
  12415. var d = this,
  12416. e = f(d);
  12417. e && e.selectedTds.length && c(b());
  12418. },
  12419. }),
  12420. (UE.commands.cellalignment = {
  12421. queryCommandState: function() {
  12422. return e(this).table ? 0 : -1;
  12423. },
  12424. execCommand: function(a, b) {
  12425. var c = this,
  12426. d = f(c);
  12427. if (d)
  12428. utils.each(d.selectedTds, function(a) {
  12429. domUtils.setAttributes(a, b);
  12430. });
  12431. else {
  12432. var e = c.selection.getStart(),
  12433. g =
  12434. e &&
  12435. domUtils.findParentByTagName(e, ["td", "th", "caption"], !0);
  12436. /caption/gi.test(g.tagName)
  12437. ? ((g.style.textAlign = b.align),
  12438. (g.style.verticalAlign = b.vAlign))
  12439. : domUtils.setAttributes(g, b),
  12440. c.selection.getRange().setCursor(!0);
  12441. }
  12442. },
  12443. queryCommandValue: function(a) {
  12444. var b = e(this).cell;
  12445. if ((b || (b = c(this)[0]), b)) {
  12446. var d = UE.UETable.getUETable(b).selectedTds;
  12447. return !d.length && (d = b), UE.UETable.getTableCellAlignState(d);
  12448. }
  12449. return null;
  12450. },
  12451. }),
  12452. (UE.commands.tablealignment = {
  12453. queryCommandState: function() {
  12454. return browser.ie && browser.version < 8
  12455. ? -1
  12456. : e(this).table
  12457. ? 0
  12458. : -1;
  12459. },
  12460. execCommand: function(a, b) {
  12461. var c = this,
  12462. d = c.selection.getStart(),
  12463. e = d && domUtils.findParentByTagName(d, ["table"], !0);
  12464. e && e.setAttribute("align", b);
  12465. },
  12466. }),
  12467. (UE.commands.edittable = {
  12468. queryCommandState: function() {
  12469. return e(this).table ? 0 : -1;
  12470. },
  12471. execCommand: function(a, b) {
  12472. var c = this.selection.getRange(),
  12473. d = domUtils.findParentByTagName(c.startContainer, "table");
  12474. if (d) {
  12475. var e = domUtils
  12476. .getElementsByTagName(d, "td")
  12477. .concat(
  12478. domUtils.getElementsByTagName(d, "th"),
  12479. domUtils.getElementsByTagName(d, "caption")
  12480. );
  12481. utils.each(e, function(a) {
  12482. a.style.borderColor = b;
  12483. });
  12484. }
  12485. },
  12486. }),
  12487. (UE.commands.edittd = {
  12488. queryCommandState: function() {
  12489. return e(this).table ? 0 : -1;
  12490. },
  12491. execCommand: function(a, b) {
  12492. var c = this,
  12493. d = f(c);
  12494. if (d)
  12495. utils.each(d.selectedTds, function(a) {
  12496. a.style.backgroundColor = b;
  12497. });
  12498. else {
  12499. var e = c.selection.getStart(),
  12500. g =
  12501. e &&
  12502. domUtils.findParentByTagName(e, ["td", "th", "caption"], !0);
  12503. g && (g.style.backgroundColor = b);
  12504. }
  12505. },
  12506. }),
  12507. (UE.commands.settablebackground = {
  12508. queryCommandState: function() {
  12509. return c(this).length > 1 ? 0 : -1;
  12510. },
  12511. execCommand: function(a, b) {
  12512. var d, e;
  12513. (d = c(this)), (e = h(d[0])), e.setBackground(d, b);
  12514. },
  12515. }),
  12516. (UE.commands.cleartablebackground = {
  12517. queryCommandState: function() {
  12518. var a = c(this);
  12519. if (!a.length) return -1;
  12520. for (var b, d = 0; (b = a[d++]); )
  12521. if ("" !== b.style.backgroundColor) return 0;
  12522. return -1;
  12523. },
  12524. execCommand: function() {
  12525. var a = c(this),
  12526. b = h(a[0]);
  12527. b.removeBackground(a);
  12528. },
  12529. }),
  12530. (UE.commands.interlacetable = UE.commands.uninterlacetable = {
  12531. queryCommandState: function(a) {
  12532. var b = e(this).table;
  12533. if (!b) return -1;
  12534. var c = b.getAttribute("interlaced");
  12535. return "interlacetable" == a
  12536. ? "enabled" === c
  12537. ? -1
  12538. : 0
  12539. : c && "disabled" !== c
  12540. ? 0
  12541. : -1;
  12542. },
  12543. execCommand: function(a, b) {
  12544. var c = e(this).table;
  12545. "interlacetable" == a
  12546. ? (c.setAttribute("interlaced", "enabled"),
  12547. this.fireEvent("interlacetable", c, b))
  12548. : (c.setAttribute("interlaced", "disabled"),
  12549. this.fireEvent("uninterlacetable", c));
  12550. },
  12551. }),
  12552. (UE.commands.setbordervisible = {
  12553. queryCommandState: function(a) {
  12554. var b = e(this).table;
  12555. return b ? 0 : -1;
  12556. },
  12557. execCommand: function() {
  12558. var a = e(this).table;
  12559. utils.each(domUtils.getElementsByTagName(a, "td"), function(a) {
  12560. (a.style.borderWidth = "1px"), (a.style.borderStyle = "solid");
  12561. });
  12562. },
  12563. });
  12564. })(),
  12565. (UE.plugins.table = function() {
  12566. function a(a) {}
  12567. function b(a, b) {
  12568. c(a, "width", !0), c(a, "height", !0);
  12569. }
  12570. function c(a, b, c) {
  12571. a.style[b] &&
  12572. (c && a.setAttribute(b, parseInt(a.style[b], 10)), (a.style[b] = ""));
  12573. }
  12574. function d(a) {
  12575. if ("TD" == a.tagName || "TH" == a.tagName) return a;
  12576. var b;
  12577. return (b =
  12578. domUtils.findParentByTagName(a, "td", !0) ||
  12579. domUtils.findParentByTagName(a, "th", !0))
  12580. ? b
  12581. : null;
  12582. }
  12583. function e(a) {
  12584. var b = new RegExp(domUtils.fillChar, "g");
  12585. if (
  12586. a[browser.ie ? "innerText" : "textContent"]
  12587. .replace(/^\s*$/, "")
  12588. .replace(b, "").length > 0
  12589. )
  12590. return 0;
  12591. for (var c in dtd.$isNotEmpty)
  12592. if (a.getElementsByTagName(c).length) return 0;
  12593. return 1;
  12594. }
  12595. function f(a) {
  12596. return a.pageX || a.pageY
  12597. ? { x: a.pageX, y: a.pageY }
  12598. : {
  12599. x:
  12600. a.clientX +
  12601. N.document.body.scrollLeft -
  12602. N.document.body.clientLeft,
  12603. y:
  12604. a.clientY +
  12605. N.document.body.scrollTop -
  12606. N.document.body.clientTop,
  12607. };
  12608. }
  12609. function g(b) {
  12610. if (!A())
  12611. try {
  12612. var c,
  12613. e = d(b.target || b.srcElement);
  12614. if (
  12615. (R &&
  12616. ((N.body.style.webkitUserSelect = "none"),
  12617. (Math.abs(V.x - b.clientX) > T ||
  12618. Math.abs(V.y - b.clientY) > T) &&
  12619. (t(), (R = !1), (U = 0), v(b))),
  12620. ca && ha)
  12621. )
  12622. return (
  12623. (U = 0),
  12624. (N.body.style.webkitUserSelect = "none"),
  12625. N.selection
  12626. .getNative()
  12627. [browser.ie9below ? "empty" : "removeAllRanges"](),
  12628. (c = f(b)),
  12629. m(N, !0, ca, c, e),
  12630. void ("h" == ca
  12631. ? (ga.style.left = k(ha, b) + "px")
  12632. : "v" == ca && (ga.style.top = l(ha, b) + "px"))
  12633. );
  12634. if (e) {
  12635. if (N.fireEvent("excludetable", e) === !0) return;
  12636. c = f(b);
  12637. var g = n(e, c),
  12638. i = domUtils.findParentByTagName(e, "table", !0);
  12639. if (j(i, e, b, !0)) {
  12640. if (N.fireEvent("excludetable", i) === !0) return;
  12641. N.body.style.cursor =
  12642. "url(" + N.options.cursorpath + "h.png),pointer";
  12643. } else if (j(i, e, b)) {
  12644. if (N.fireEvent("excludetable", i) === !0) return;
  12645. N.body.style.cursor =
  12646. "url(" + N.options.cursorpath + "v.png),pointer";
  12647. } else {
  12648. N.body.style.cursor = "text";
  12649. /\d/.test(g) &&
  12650. ((g = g.replace(/\d/, "")),
  12651. (e = Y(e).getPreviewCell(e, "v" == g))),
  12652. m(N, !!e && !!g, e ? g : "", c, e);
  12653. }
  12654. } else h(!1, i, N);
  12655. } catch (o) {
  12656. a(o);
  12657. }
  12658. }
  12659. function h(a, b, c) {
  12660. if (a) i(b, c);
  12661. else {
  12662. if (fa) return;
  12663. la = setTimeout(function() {
  12664. !fa && ea && ea.parentNode && ea.parentNode.removeChild(ea);
  12665. }, 2e3);
  12666. }
  12667. }
  12668. function i(a, b) {
  12669. function c(c, d) {
  12670. clearTimeout(g),
  12671. (g = setTimeout(function() {
  12672. b.fireEvent("tableClicked", a, d);
  12673. }, 300));
  12674. }
  12675. function d(c) {
  12676. clearTimeout(g);
  12677. var d = Y(a),
  12678. e = a.rows[0].cells[0],
  12679. f = d.getLastCell(),
  12680. h = d.getCellsRange(e, f);
  12681. b.selection
  12682. .getRange()
  12683. .setStart(e, 0)
  12684. .setCursor(!1, !0),
  12685. d.setSelected(h);
  12686. }
  12687. var e = domUtils.getXY(a),
  12688. f = a.ownerDocument;
  12689. if (ea && ea.parentNode) return ea;
  12690. (ea = f.createElement("div")),
  12691. (ea.contentEditable = !1),
  12692. (ea.innerHTML = ""),
  12693. (ea.style.cssText =
  12694. "width:15px;height:15px;background-image:url(" +
  12695. b.options.UEDITOR_HOME_URL +
  12696. "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" +
  12697. (e.y - 15) +
  12698. "px;left:" +
  12699. e.x +
  12700. "px;"),
  12701. domUtils.unSelectable(ea),
  12702. (ea.onmouseover = function(a) {
  12703. fa = !0;
  12704. }),
  12705. (ea.onmouseout = function(a) {
  12706. fa = !1;
  12707. }),
  12708. domUtils.on(ea, "click", function(a, b) {
  12709. c(b, this);
  12710. }),
  12711. domUtils.on(ea, "dblclick", function(a, b) {
  12712. d(b);
  12713. }),
  12714. domUtils.on(ea, "dragstart", function(a, b) {
  12715. domUtils.preventDefault(b);
  12716. });
  12717. var g;
  12718. f.body.appendChild(ea);
  12719. }
  12720. function j(a, b, c, d) {
  12721. var e = f(c),
  12722. g = n(b, e);
  12723. if (d) {
  12724. var h = a.getElementsByTagName("caption")[0],
  12725. i = h ? h.offsetHeight : 0;
  12726. return "v1" == g && e.y - domUtils.getXY(a).y - i < 8;
  12727. }
  12728. return "h1" == g && e.x - domUtils.getXY(a).x < 8;
  12729. }
  12730. function k(a, b) {
  12731. var c = Y(a);
  12732. if (c) {
  12733. var d = c.getSameEndPosCells(a, "x")[0],
  12734. e = c.getSameStartPosXCells(a)[0],
  12735. g = f(b).x,
  12736. h = (d ? domUtils.getXY(d).x : domUtils.getXY(c.table).x) + 20,
  12737. i = e
  12738. ? domUtils.getXY(e).x + e.offsetWidth - 20
  12739. : N.body.offsetWidth + 5 ||
  12740. parseInt(domUtils.getComputedStyle(N.body, "width"), 10);
  12741. return (h += Q), (i -= Q), g < h ? h : g > i ? i : g;
  12742. }
  12743. }
  12744. function l(b, c) {
  12745. try {
  12746. var d = domUtils.getXY(b).y,
  12747. e = f(c).y;
  12748. return e < d ? d : e;
  12749. } catch (g) {
  12750. a(g);
  12751. }
  12752. }
  12753. function m(b, c, d, e, f) {
  12754. try {
  12755. (b.body.style.cursor =
  12756. "h" == d ? "col-resize" : "v" == d ? "row-resize" : "text"),
  12757. browser.ie &&
  12758. (!d || ia || Z(b) ? I(b) : (H(b, b.document), J(d, f))),
  12759. (da = c);
  12760. } catch (g) {
  12761. a(g);
  12762. }
  12763. }
  12764. function n(a, b) {
  12765. var c = domUtils.getXY(a);
  12766. return c
  12767. ? c.x + a.offsetWidth - b.x < S
  12768. ? "h"
  12769. : b.x - c.x < S
  12770. ? "h1"
  12771. : c.y + a.offsetHeight - b.y < S
  12772. ? "v"
  12773. : b.y - c.y < S
  12774. ? "v1"
  12775. : ""
  12776. : "";
  12777. }
  12778. function o(a, b) {
  12779. if (!A())
  12780. if (((V = { x: b.clientX, y: b.clientY }), 2 == b.button)) {
  12781. var c = Z(N),
  12782. d = !1;
  12783. if (c) {
  12784. var e = M(N, b);
  12785. utils.each(c.selectedTds, function(a) {
  12786. a === e && (d = !0);
  12787. }),
  12788. d
  12789. ? ((e = c.selectedTds[0]),
  12790. setTimeout(function() {
  12791. N.selection
  12792. .getRange()
  12793. .setStart(e, 0)
  12794. .setCursor(!1, !0);
  12795. }, 0))
  12796. : (_(domUtils.getElementsByTagName(N.body, "th td")),
  12797. c.clearSelected());
  12798. }
  12799. } else q(b);
  12800. }
  12801. function p(a) {
  12802. (U = 0), (a = a || N.window.event);
  12803. var b = d(a.target || a.srcElement);
  12804. if (b) {
  12805. var c;
  12806. if ((c = n(b, f(a)))) {
  12807. if ((I(N), "h1" == c))
  12808. if (
  12809. ((c = "h"), j(domUtils.findParentByTagName(b, "table"), b, a))
  12810. )
  12811. N.execCommand("adaptbywindow");
  12812. else if ((b = Y(b).getPreviewCell(b))) {
  12813. var e = N.selection.getRange();
  12814. e.selectNodeContents(b).setCursor(!0, !0);
  12815. }
  12816. if ("h" == c) {
  12817. var g = Y(b),
  12818. h = g.table,
  12819. i = C(b, h, !0);
  12820. (i = s(i, "left")), (g.width = g.offsetWidth);
  12821. var k = [],
  12822. l = [];
  12823. utils.each(i, function(a) {
  12824. k.push(a.offsetWidth);
  12825. }),
  12826. utils.each(i, function(a) {
  12827. a.removeAttribute("width");
  12828. }),
  12829. window.setTimeout(function() {
  12830. var a = !0;
  12831. utils.each(i, function(b, c) {
  12832. var d = b.offsetWidth;
  12833. return d > k[c] ? ((a = !1), !1) : void l.push(d);
  12834. });
  12835. var b = a ? l : k;
  12836. utils.each(i, function(a, c) {
  12837. a.width = b[c] - G();
  12838. });
  12839. }, 0);
  12840. }
  12841. }
  12842. }
  12843. }
  12844. function q(a) {
  12845. if (
  12846. (_(domUtils.getElementsByTagName(N.body, "td th")),
  12847. utils.each(N.document.getElementsByTagName("table"), function(a) {
  12848. a.ueTable = null;
  12849. }),
  12850. (aa = M(N, a)))
  12851. ) {
  12852. var b = domUtils.findParentByTagName(aa, "table", !0);
  12853. (ut = Y(b)),
  12854. ut && ut.clearSelected(),
  12855. da
  12856. ? r(a)
  12857. : ((N.document.body.style.webkitUserSelect = ""),
  12858. (ia = !0),
  12859. N.addListener("mouseover", x));
  12860. }
  12861. }
  12862. function r(a) {
  12863. browser.ie && (a = u(a)),
  12864. t(),
  12865. (R = !0),
  12866. (O = setTimeout(function() {
  12867. v(a);
  12868. }, W));
  12869. }
  12870. function s(a, b) {
  12871. for (var c = [], d = null, e = 0, f = a.length; e < f; e++)
  12872. (d = a[e][b]), d && c.push(d);
  12873. return c;
  12874. }
  12875. function t() {
  12876. O && clearTimeout(O), (O = null);
  12877. }
  12878. function u(a) {
  12879. var b = [
  12880. "pageX",
  12881. "pageY",
  12882. "clientX",
  12883. "clientY",
  12884. "srcElement",
  12885. "target",
  12886. ],
  12887. c = {};
  12888. if (a)
  12889. for (var d, e, f = 0; (d = b[f]); f++) (e = a[d]), e && (c[d] = e);
  12890. return c;
  12891. }
  12892. function v(a) {
  12893. if (((R = !1), (aa = a.target || a.srcElement))) {
  12894. var b = n(aa, f(a));
  12895. /\d/.test(b) &&
  12896. ((b = b.replace(/\d/, "")),
  12897. (aa = Y(aa).getPreviewCell(aa, "v" == b))),
  12898. I(N),
  12899. H(N, N.document),
  12900. N.fireEvent("saveScene"),
  12901. J(b, aa),
  12902. (ia = !0),
  12903. (ca = b),
  12904. (ha = aa);
  12905. }
  12906. }
  12907. function w(a, b) {
  12908. if (!A()) {
  12909. if (
  12910. (t(),
  12911. (R = !1),
  12912. da &&
  12913. ((U = ++U % 3),
  12914. (V = { x: b.clientX, y: b.clientY }),
  12915. (P = setTimeout(function() {
  12916. U > 0 && U--;
  12917. }, W)),
  12918. 2 === U))
  12919. )
  12920. return (U = 0), void p(b);
  12921. if (2 != b.button) {
  12922. var c = this,
  12923. d = c.selection.getRange(),
  12924. e = domUtils.findParentByTagName(d.startContainer, "table", !0),
  12925. f = domUtils.findParentByTagName(d.endContainer, "table", !0);
  12926. if (
  12927. ((e || f) &&
  12928. (e === f
  12929. ? ((e = domUtils.findParentByTagName(
  12930. d.startContainer,
  12931. ["td", "th", "caption"],
  12932. !0
  12933. )),
  12934. (f = domUtils.findParentByTagName(
  12935. d.endContainer,
  12936. ["td", "th", "caption"],
  12937. !0
  12938. )),
  12939. e !== f && c.selection.clearRange())
  12940. : c.selection.clearRange()),
  12941. (ia = !1),
  12942. (c.document.body.style.webkitUserSelect = ""),
  12943. ca &&
  12944. ha &&
  12945. (c.selection
  12946. .getNative()
  12947. [browser.ie9below ? "empty" : "removeAllRanges"](),
  12948. (U = 0),
  12949. (ga = c.document.getElementById("ue_tableDragLine"))))
  12950. ) {
  12951. var g = domUtils.getXY(ha),
  12952. h = domUtils.getXY(ga);
  12953. switch (ca) {
  12954. case "h":
  12955. z(ha, h.x - g.x);
  12956. break;
  12957. case "v":
  12958. B(ha, h.y - g.y - ha.offsetHeight);
  12959. }
  12960. return (
  12961. (ca = ""), (ha = null), I(c), void c.fireEvent("saveScene")
  12962. );
  12963. }
  12964. if (aa) {
  12965. var i = Y(aa),
  12966. j = i ? i.selectedTds[0] : null;
  12967. if (j)
  12968. (d = new dom.Range(c.document)),
  12969. domUtils.isEmptyBlock(j)
  12970. ? d.setStart(j, 0).setCursor(!1, !0)
  12971. : d
  12972. .selectNodeContents(j)
  12973. .shrinkBoundary()
  12974. .setCursor(!1, !0);
  12975. else if (
  12976. ((d = c.selection.getRange().shrinkBoundary()), !d.collapsed)
  12977. ) {
  12978. var e = domUtils.findParentByTagName(
  12979. d.startContainer,
  12980. ["td", "th"],
  12981. !0
  12982. ),
  12983. f = domUtils.findParentByTagName(
  12984. d.endContainer,
  12985. ["td", "th"],
  12986. !0
  12987. );
  12988. ((e && !f) || (!e && f) || (e && f && e !== f)) &&
  12989. d.setCursor(!1, !0);
  12990. }
  12991. (aa = null), c.removeListener("mouseover", x);
  12992. } else {
  12993. var k = domUtils.findParentByTagName(
  12994. b.target || b.srcElement,
  12995. "td",
  12996. !0
  12997. );
  12998. if (
  12999. (k ||
  13000. (k = domUtils.findParentByTagName(
  13001. b.target || b.srcElement,
  13002. "th",
  13003. !0
  13004. )),
  13005. k && ("TD" == k.tagName || "TH" == k.tagName))
  13006. ) {
  13007. if (c.fireEvent("excludetable", k) === !0) return;
  13008. (d = new dom.Range(c.document)),
  13009. d.setStart(k, 0).setCursor(!1, !0);
  13010. }
  13011. }
  13012. c._selectionChange(250, b);
  13013. }
  13014. }
  13015. }
  13016. function x(a, b) {
  13017. if (!A()) {
  13018. var c = this,
  13019. d = b.target || b.srcElement;
  13020. if (
  13021. ((ba =
  13022. domUtils.findParentByTagName(d, "td", !0) ||
  13023. domUtils.findParentByTagName(d, "th", !0)),
  13024. aa &&
  13025. ba &&
  13026. (("TD" == aa.tagName && "TD" == ba.tagName) ||
  13027. ("TH" == aa.tagName && "TH" == ba.tagName)) &&
  13028. domUtils.findParentByTagName(aa, "table") ==
  13029. domUtils.findParentByTagName(ba, "table"))
  13030. ) {
  13031. var e = Y(ba);
  13032. if (aa != ba) {
  13033. (c.document.body.style.webkitUserSelect = "none"),
  13034. c.selection
  13035. .getNative()
  13036. [browser.ie9below ? "empty" : "removeAllRanges"]();
  13037. var f = e.getCellsRange(aa, ba);
  13038. e.setSelected(f);
  13039. } else
  13040. (c.document.body.style.webkitUserSelect = ""), e.clearSelected();
  13041. }
  13042. b.preventDefault ? b.preventDefault() : (b.returnValue = !1);
  13043. }
  13044. }
  13045. function y(a, b, c) {
  13046. var d = parseInt(domUtils.getComputedStyle(a, "line-height"), 10),
  13047. e = c + b;
  13048. (b = e < d ? d : e),
  13049. a.style.height && (a.style.height = ""),
  13050. 1 == a.rowSpan
  13051. ? a.setAttribute("height", b)
  13052. : a.removeAttribute && a.removeAttribute("height");
  13053. }
  13054. function z(a, b) {
  13055. var c = Y(a);
  13056. if (c) {
  13057. var d = c.table,
  13058. e = C(a, d);
  13059. if (
  13060. ((d.style.width = ""),
  13061. d.removeAttribute("width"),
  13062. (b = D(b, a, e)),
  13063. a.nextSibling)
  13064. ) {
  13065. utils.each(e, function(a) {
  13066. (a.left.width = +a.left.width + b),
  13067. a.right && (a.right.width = +a.right.width - b);
  13068. });
  13069. } else
  13070. utils.each(e, function(a) {
  13071. a.left.width -= -b;
  13072. });
  13073. }
  13074. }
  13075. function A() {
  13076. return "false" === N.body.contentEditable;
  13077. }
  13078. function B(a, b) {
  13079. if (!(Math.abs(b) < 10)) {
  13080. var c = Y(a);
  13081. if (c)
  13082. for (
  13083. var d,
  13084. e = c.getSameEndPosCells(a, "y"),
  13085. f = e[0] ? e[0].offsetHeight : 0,
  13086. g = 0;
  13087. (d = e[g++]);
  13088. )
  13089. y(d, b, f);
  13090. }
  13091. }
  13092. function C(a, b, c) {
  13093. if ((b || (b = domUtils.findParentByTagName(a, "table")), !b))
  13094. return null;
  13095. for (var d = (domUtils.getNodeIndex(a), a), e = b.rows, f = 0; d; )
  13096. 1 === d.nodeType && (f += d.colSpan || 1), (d = d.previousSibling);
  13097. d = null;
  13098. var g = [];
  13099. return (
  13100. utils.each(e, function(a) {
  13101. var b = a.cells,
  13102. d = 0;
  13103. utils.each(b, function(a) {
  13104. return (
  13105. (d += a.colSpan || 1),
  13106. d === f
  13107. ? (g.push({ left: a, right: a.nextSibling || null }), !1)
  13108. : d > f
  13109. ? (c && g.push({ left: a }), !1)
  13110. : void 0
  13111. );
  13112. });
  13113. }),
  13114. g
  13115. );
  13116. }
  13117. function D(a, b, c) {
  13118. if (((a -= G()), a < 0)) return 0;
  13119. a -= E(b);
  13120. var d = a < 0 ? "left" : "right";
  13121. return (
  13122. (a = Math.abs(a)),
  13123. utils.each(c, function(b) {
  13124. var c = b[d];
  13125. c && (a = Math.min(a, E(c) - Q));
  13126. }),
  13127. (a = a < 0 ? 0 : a),
  13128. "left" === d ? -a : a
  13129. );
  13130. }
  13131. function E(a) {
  13132. var b = 0,
  13133. b = a.offsetWidth - G();
  13134. a.nextSibling || (b -= F(a)), (b = b < 0 ? 0 : b);
  13135. try {
  13136. a.width = b;
  13137. } catch (c) {}
  13138. return b;
  13139. }
  13140. function F(a) {
  13141. if (
  13142. ((tab = domUtils.findParentByTagName(a, "table", !1)),
  13143. void 0 === tab.offsetVal)
  13144. ) {
  13145. var b = a.previousSibling;
  13146. b
  13147. ? (tab.offsetVal =
  13148. a.offsetWidth - b.offsetWidth === X.borderWidth
  13149. ? X.borderWidth
  13150. : 0)
  13151. : (tab.offsetVal = 0);
  13152. }
  13153. return tab.offsetVal;
  13154. }
  13155. function G() {
  13156. if (void 0 === X.tabcellSpace) {
  13157. var a = N.document.createElement("table"),
  13158. b = N.document.createElement("tbody"),
  13159. c = N.document.createElement("tr"),
  13160. d = N.document.createElement("td"),
  13161. e = null;
  13162. (d.style.cssText = "border: 0;"),
  13163. (d.width = 1),
  13164. c.appendChild(d),
  13165. c.appendChild((e = d.cloneNode(!1))),
  13166. b.appendChild(c),
  13167. a.appendChild(b),
  13168. (a.style.cssText = "visibility: hidden;"),
  13169. N.body.appendChild(a),
  13170. (X.paddingSpace = d.offsetWidth - 1);
  13171. var f = a.offsetWidth;
  13172. (d.style.cssText = ""),
  13173. (e.style.cssText = ""),
  13174. (X.borderWidth = (a.offsetWidth - f) / 3),
  13175. (X.tabcellSpace = X.paddingSpace + X.borderWidth),
  13176. N.body.removeChild(a);
  13177. }
  13178. return (
  13179. (G = function() {
  13180. return X.tabcellSpace;
  13181. }),
  13182. X.tabcellSpace
  13183. );
  13184. }
  13185. function H(a, b) {
  13186. ia ||
  13187. ((ga = a.document.createElement("div")),
  13188. domUtils.setAttributes(ga, {
  13189. id: "ue_tableDragLine",
  13190. unselectable: "on",
  13191. contenteditable: !1,
  13192. onresizestart: "return false",
  13193. ondragstart: "return false",
  13194. onselectstart: "return false",
  13195. style:
  13196. "background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)",
  13197. }),
  13198. a.body.appendChild(ga));
  13199. }
  13200. function I(a) {
  13201. if (!ia)
  13202. for (var b; (b = a.document.getElementById("ue_tableDragLine")); )
  13203. domUtils.remove(b);
  13204. }
  13205. function J(a, b) {
  13206. if (b) {
  13207. var c,
  13208. d = domUtils.findParentByTagName(b, "table"),
  13209. e = d.getElementsByTagName("caption"),
  13210. f = d.offsetWidth,
  13211. g = d.offsetHeight - (e.length > 0 ? e[0].offsetHeight : 0),
  13212. h = domUtils.getXY(d),
  13213. i = domUtils.getXY(b);
  13214. switch (a) {
  13215. case "h":
  13216. (c =
  13217. "height:" +
  13218. g +
  13219. "px;top:" +
  13220. (h.y + (e.length > 0 ? e[0].offsetHeight : 0)) +
  13221. "px;left:" +
  13222. (i.x + b.offsetWidth)),
  13223. (ga.style.cssText =
  13224. c +
  13225. "px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)");
  13226. break;
  13227. case "v":
  13228. (c =
  13229. "width:" +
  13230. f +
  13231. "px;left:" +
  13232. h.x +
  13233. "px;top:" +
  13234. (i.y + b.offsetHeight)),
  13235. (ga.style.cssText =
  13236. c +
  13237. "px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)");
  13238. }
  13239. }
  13240. }
  13241. function K(a, b) {
  13242. for (
  13243. var c, d, e = domUtils.getElementsByTagName(a.body, "table"), f = 0;
  13244. (d = e[f++]);
  13245. ) {
  13246. var g = domUtils.getElementsByTagName(d, "td");
  13247. g[0] &&
  13248. (b
  13249. ? ((c = g[0].style.borderColor.replace(/\s/g, "")),
  13250. /(#ffffff)|(rgb\(255,255,255\))/gi.test(c) &&
  13251. domUtils.addClass(d, "noBorderTable"))
  13252. : domUtils.removeClasses(d, "noBorderTable"));
  13253. }
  13254. }
  13255. function L(a, b, c) {
  13256. var d = a.body;
  13257. return (
  13258. d.offsetWidth -
  13259. (b
  13260. ? 2 * parseInt(domUtils.getComputedStyle(d, "margin-left"), 10)
  13261. : 0) -
  13262. 2 * c.tableBorder -
  13263. (a.options.offsetWidth || 0)
  13264. );
  13265. }
  13266. function M(a, b) {
  13267. var c = domUtils.findParentByTagName(
  13268. b.target || b.srcElement,
  13269. ["td", "th"],
  13270. !0
  13271. ),
  13272. d = null;
  13273. if (!c) return null;
  13274. if (((d = n(c, f(b))), !c)) return null;
  13275. if ("h1" === d && c.previousSibling) {
  13276. var e = domUtils.getXY(c),
  13277. g = c.offsetWidth;
  13278. Math.abs(e.x + g - b.clientX) > g / 3 && (c = c.previousSibling);
  13279. } else if ("v1" === d && c.parentNode.previousSibling) {
  13280. var e = domUtils.getXY(c),
  13281. h = c.offsetHeight;
  13282. Math.abs(e.y + h - b.clientY) > h / 3 &&
  13283. (c = c.parentNode.previousSibling.firstChild);
  13284. }
  13285. return c && a.fireEvent("excludetable", c) !== !0 ? c : null;
  13286. }
  13287. var N = this,
  13288. O = null,
  13289. P = null,
  13290. Q = 5,
  13291. R = !1,
  13292. S = 5,
  13293. T = 10,
  13294. U = 0,
  13295. V = null,
  13296. W = 360,
  13297. X = UE.UETable,
  13298. Y = function(a) {
  13299. return X.getUETable(a);
  13300. },
  13301. Z = function(a) {
  13302. return X.getUETableBySelected(a);
  13303. },
  13304. $ = function(a, b) {
  13305. return X.getDefaultValue(a, b);
  13306. },
  13307. _ = function(a) {
  13308. return X.removeSelectedClass(a);
  13309. };
  13310. N.ready(function() {
  13311. var a = this,
  13312. b = a.selection.getText;
  13313. a.selection.getText = function() {
  13314. var c = Z(a);
  13315. if (c) {
  13316. var d = "";
  13317. return (
  13318. utils.each(c.selectedTds, function(a) {
  13319. d += a[browser.ie ? "innerText" : "textContent"];
  13320. }),
  13321. d
  13322. );
  13323. }
  13324. return b.call(a.selection);
  13325. };
  13326. });
  13327. var aa = null,
  13328. ba = null,
  13329. ca = "",
  13330. da = !1,
  13331. ea = null,
  13332. fa = !1,
  13333. ga = null,
  13334. ha = null,
  13335. ia = !1,
  13336. ja = !0;
  13337. N.setOpt({
  13338. maxColNum: 20,
  13339. maxRowNum: 100,
  13340. defaultCols: 5,
  13341. defaultRows: 5,
  13342. tdvalign: "top",
  13343. cursorpath:
  13344. N.options.UEDITOR_HOME_URL + "themes/default/images/cursor_",
  13345. tableDragable: !1,
  13346. classList: [
  13347. "ue-table-interlace-color-single",
  13348. "ue-table-interlace-color-double",
  13349. ],
  13350. }),
  13351. (N.getUETable = Y);
  13352. var ka = {
  13353. deletetable: 1,
  13354. inserttable: 1,
  13355. cellvalign: 1,
  13356. insertcaption: 1,
  13357. deletecaption: 1,
  13358. inserttitle: 1,
  13359. deletetitle: 1,
  13360. mergeright: 1,
  13361. mergedown: 1,
  13362. mergecells: 1,
  13363. insertrow: 1,
  13364. insertrownext: 1,
  13365. deleterow: 1,
  13366. insertcol: 1,
  13367. insertcolnext: 1,
  13368. deletecol: 1,
  13369. splittocells: 1,
  13370. splittorows: 1,
  13371. splittocols: 1,
  13372. adaptbytext: 1,
  13373. adaptbywindow: 1,
  13374. adaptbycustomer: 1,
  13375. insertparagraph: 1,
  13376. insertparagraphbeforetable: 1,
  13377. averagedistributecol: 1,
  13378. averagedistributerow: 1,
  13379. };
  13380. N.ready(function() {
  13381. utils.cssRule(
  13382. "table",
  13383. ".selectTdClass{background-color:#edf5fa !important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}table{margin-bottom:10px;border-collapse:collapse;display:table;}td,th{padding: 5px 10px;border: 1px solid #DDD;}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}th{border-top:1px solid #BBB;background-color:#F7F7F7;}table tr.firstRow th{border-top-width:2px;}.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }td p{margin:0;padding:0;}",
  13384. N.document
  13385. );
  13386. var a, c, f;
  13387. N.addListener("keydown", function(b, d) {
  13388. var g = this,
  13389. h = d.keyCode || d.which;
  13390. if (8 == h) {
  13391. var i = Z(g);
  13392. i &&
  13393. i.selectedTds.length &&
  13394. (i.isFullCol()
  13395. ? g.execCommand("deletecol")
  13396. : i.isFullRow()
  13397. ? g.execCommand("deleterow")
  13398. : g.fireEvent("delcells"),
  13399. domUtils.preventDefault(d));
  13400. var j = domUtils.findParentByTagName(
  13401. g.selection.getStart(),
  13402. "caption",
  13403. !0
  13404. ),
  13405. k = g.selection.getRange();
  13406. if (k.collapsed && j && e(j)) {
  13407. g.fireEvent("saveScene");
  13408. var l = j.parentNode;
  13409. domUtils.remove(j),
  13410. l && k.setStart(l.rows[0].cells[0], 0).setCursor(!1, !0),
  13411. g.fireEvent("saveScene");
  13412. }
  13413. }
  13414. if (46 == h && (i = Z(g))) {
  13415. g.fireEvent("saveScene");
  13416. for (var m, n = 0; (m = i.selectedTds[n++]); )
  13417. domUtils.fillNode(g.document, m);
  13418. g.fireEvent("saveScene"), domUtils.preventDefault(d);
  13419. }
  13420. if (13 == h) {
  13421. var o = g.selection.getRange(),
  13422. j = domUtils.findParentByTagName(o.startContainer, "caption", !0);
  13423. if (j) {
  13424. var l = domUtils.findParentByTagName(j, "table");
  13425. return (
  13426. o.collapsed
  13427. ? j && o.setStart(l.rows[0].cells[0], 0).setCursor(!1, !0)
  13428. : (o.deleteContents(), g.fireEvent("saveScene")),
  13429. void domUtils.preventDefault(d)
  13430. );
  13431. }
  13432. if (o.collapsed) {
  13433. var l = domUtils.findParentByTagName(o.startContainer, "table");
  13434. if (l) {
  13435. var p = l.rows[0].cells[0],
  13436. q = domUtils.findParentByTagName(
  13437. g.selection.getStart(),
  13438. ["td", "th"],
  13439. !0
  13440. ),
  13441. r = l.previousSibling;
  13442. if (
  13443. p === q &&
  13444. (!r || (1 == r.nodeType && "TABLE" == r.tagName)) &&
  13445. domUtils.isStartInblock(o)
  13446. ) {
  13447. var s = domUtils.findParent(
  13448. g.selection.getStart(),
  13449. function(a) {
  13450. return domUtils.isBlockElm(a);
  13451. },
  13452. !0
  13453. );
  13454. s &&
  13455. (/t(h|d)/i.test(s.tagName) || s === q.firstChild) &&
  13456. (g.execCommand("insertparagraphbeforetable"),
  13457. domUtils.preventDefault(d));
  13458. }
  13459. }
  13460. }
  13461. }
  13462. if ((d.ctrlKey || d.metaKey) && "67" == d.keyCode) {
  13463. a = null;
  13464. var i = Z(g);
  13465. if (i) {
  13466. var t = i.selectedTds;
  13467. (c = i.isFullCol()),
  13468. (f = i.isFullRow()),
  13469. (a = [[i.cloneCell(t[0], null, !0)]]);
  13470. for (var m, n = 1; (m = t[n]); n++)
  13471. m.parentNode !== t[n - 1].parentNode
  13472. ? a.push([i.cloneCell(m, null, !0)])
  13473. : a[a.length - 1].push(i.cloneCell(m, null, !0));
  13474. }
  13475. }
  13476. }),
  13477. N.addListener("tablehasdeleted", function() {
  13478. m(this, !1, "", null), ea && domUtils.remove(ea);
  13479. }),
  13480. N.addListener("beforepaste", function(d, g) {
  13481. var h = this,
  13482. i = h.selection.getRange();
  13483. if (domUtils.findParentByTagName(i.startContainer, "caption", !0)) {
  13484. var j = h.document.createElement("div");
  13485. return (
  13486. (j.innerHTML = g.html),
  13487. void (g.html =
  13488. j[browser.ie9below ? "innerText" : "textContent"])
  13489. );
  13490. }
  13491. var k = Z(h);
  13492. if (a) {
  13493. h.fireEvent("saveScene");
  13494. var l,
  13495. m,
  13496. i = h.selection.getRange(),
  13497. n = domUtils.findParentByTagName(
  13498. i.startContainer,
  13499. ["td", "th"],
  13500. !0
  13501. );
  13502. if (n) {
  13503. var o = Y(n);
  13504. if (f) {
  13505. var p = o.getCellInfo(n).rowIndex;
  13506. "TH" == n.tagName && p++;
  13507. for (var q, r = 0; (q = a[r++]); ) {
  13508. for (
  13509. var s, t = o.insertRow(p++, "td"), u = 0;
  13510. (s = q[u]);
  13511. u++
  13512. ) {
  13513. var v = t.cells[u];
  13514. v || (v = t.insertCell(u)),
  13515. (v.innerHTML = s.innerHTML),
  13516. s.getAttribute("width") &&
  13517. v.setAttribute("width", s.getAttribute("width")),
  13518. s.getAttribute("vAlign") &&
  13519. v.setAttribute("vAlign", s.getAttribute("vAlign")),
  13520. s.getAttribute("align") &&
  13521. v.setAttribute("align", s.getAttribute("align")),
  13522. s.style.cssText && (v.style.cssText = s.style.cssText);
  13523. }
  13524. for (var s, u = 0; (s = t.cells[u]) && q[u]; u++)
  13525. (s.innerHTML = q[u].innerHTML),
  13526. q[u].getAttribute("width") &&
  13527. s.setAttribute("width", q[u].getAttribute("width")),
  13528. q[u].getAttribute("vAlign") &&
  13529. s.setAttribute("vAlign", q[u].getAttribute("vAlign")),
  13530. q[u].getAttribute("align") &&
  13531. s.setAttribute("align", q[u].getAttribute("align")),
  13532. q[u].style.cssText &&
  13533. (s.style.cssText = q[u].style.cssText);
  13534. }
  13535. } else {
  13536. if (c) {
  13537. y = o.getCellInfo(n);
  13538. for (var s, w = 0, u = 0, q = a[0]; (s = q[u++]); )
  13539. w += s.colSpan || 1;
  13540. for (h.__hasEnterExecCommand = !0, r = 0; r < w; r++)
  13541. h.execCommand("insertcol");
  13542. (h.__hasEnterExecCommand = !1),
  13543. (n = o.table.rows[0].cells[y.cellIndex]),
  13544. "TH" == n.tagName &&
  13545. (n = o.table.rows[1].cells[y.cellIndex]);
  13546. }
  13547. for (var q, r = 0; (q = a[r++]); ) {
  13548. l = n;
  13549. for (var s, u = 0; (s = q[u++]); )
  13550. if (n)
  13551. (n.innerHTML = s.innerHTML),
  13552. s.getAttribute("width") &&
  13553. n.setAttribute("width", s.getAttribute("width")),
  13554. s.getAttribute("vAlign") &&
  13555. n.setAttribute("vAlign", s.getAttribute("vAlign")),
  13556. s.getAttribute("align") &&
  13557. n.setAttribute("align", s.getAttribute("align")),
  13558. s.style.cssText &&
  13559. (n.style.cssText = s.style.cssText),
  13560. (m = n),
  13561. (n = n.nextSibling);
  13562. else {
  13563. var x = s.cloneNode(!0);
  13564. domUtils.removeAttributes(x, [
  13565. "class",
  13566. "rowSpan",
  13567. "colSpan",
  13568. ]),
  13569. m.parentNode.appendChild(x);
  13570. }
  13571. if (((n = o.getNextCell(l, !0, !0)), !a[r])) break;
  13572. if (!n) {
  13573. var y = o.getCellInfo(l);
  13574. o.table.insertRow(o.table.rows.length),
  13575. o.update(),
  13576. (n = o.getVSideCell(l, !0));
  13577. }
  13578. }
  13579. }
  13580. o.update();
  13581. } else {
  13582. k = h.document.createElement("table");
  13583. for (var q, r = 0; (q = a[r++]); ) {
  13584. for (
  13585. var s, t = k.insertRow(k.rows.length), u = 0;
  13586. (s = q[u++]);
  13587. )
  13588. (x = X.cloneCell(s, null, !0)),
  13589. domUtils.removeAttributes(x, ["class"]),
  13590. t.appendChild(x);
  13591. 2 == u && x.rowSpan > 1 && (x.rowSpan = 1);
  13592. }
  13593. var z = $(h),
  13594. A =
  13595. h.body.offsetWidth -
  13596. (ja
  13597. ? 2 *
  13598. parseInt(
  13599. domUtils.getComputedStyle(h.body, "margin-left"),
  13600. 10
  13601. )
  13602. : 0) -
  13603. 2 * z.tableBorder -
  13604. (h.options.offsetWidth || 0);
  13605. h.execCommand(
  13606. "insertHTML",
  13607. "<table " +
  13608. (c && f ? 'width="' + A + '"' : "") +
  13609. ">" +
  13610. k.innerHTML
  13611. .replace(/>\s*</g, "><")
  13612. .replace(/\bth\b/gi, "td") +
  13613. "</table>"
  13614. );
  13615. }
  13616. return (
  13617. h.fireEvent("contentchange"),
  13618. h.fireEvent("saveScene"),
  13619. (g.html = ""),
  13620. !0
  13621. );
  13622. }
  13623. var B,
  13624. j = h.document.createElement("div");
  13625. (j.innerHTML = g.html),
  13626. (B = j.getElementsByTagName("table")),
  13627. domUtils.findParentByTagName(h.selection.getStart(), "table")
  13628. ? (utils.each(B, function(a) {
  13629. domUtils.remove(a);
  13630. }),
  13631. domUtils.findParentByTagName(
  13632. h.selection.getStart(),
  13633. "caption",
  13634. !0
  13635. ) &&
  13636. (j.innerHTML = j[browser.ie ? "innerText" : "textContent"]))
  13637. : utils.each(B, function(a) {
  13638. b(a, !0),
  13639. domUtils.removeAttributes(a, ["style", "border"]),
  13640. utils.each(
  13641. domUtils.getElementsByTagName(a, "td"),
  13642. function(a) {
  13643. e(a) && domUtils.fillNode(h.document, a), b(a, !0);
  13644. }
  13645. );
  13646. }),
  13647. (g.html = j.innerHTML);
  13648. }),
  13649. N.addListener("afterpaste", function() {
  13650. utils.each(domUtils.getElementsByTagName(N.body, "table"), function(
  13651. a
  13652. ) {
  13653. if (a.offsetWidth > N.body.offsetWidth) {
  13654. var b = $(N, a);
  13655. a.style.width =
  13656. N.body.offsetWidth -
  13657. (ja
  13658. ? 2 *
  13659. parseInt(
  13660. domUtils.getComputedStyle(N.body, "margin-left"),
  13661. 10
  13662. )
  13663. : 0) -
  13664. 2 * b.tableBorder -
  13665. (N.options.offsetWidth || 0) +
  13666. "px";
  13667. }
  13668. });
  13669. }),
  13670. N.addListener("blur", function() {
  13671. a = null;
  13672. });
  13673. var i;
  13674. N.addListener("keydown", function() {
  13675. clearTimeout(i),
  13676. (i = setTimeout(function() {
  13677. var a = N.selection.getRange(),
  13678. b = domUtils.findParentByTagName(
  13679. a.startContainer,
  13680. ["th", "td"],
  13681. !0
  13682. );
  13683. if (b) {
  13684. var c = b.parentNode.parentNode.parentNode;
  13685. c.offsetWidth > c.getAttribute("width") &&
  13686. (b.style.wordBreak = "break-all");
  13687. }
  13688. }, 100));
  13689. }),
  13690. N.addListener("selectionchange", function() {
  13691. m(N, !1, "", null);
  13692. }),
  13693. N.addListener("contentchange", function() {
  13694. var a = this;
  13695. if ((I(a), !Z(a))) {
  13696. var b = a.selection.getRange(),
  13697. c = b.startContainer;
  13698. (c = domUtils.findParentByTagName(c, ["td", "th"], !0)),
  13699. utils.each(
  13700. domUtils.getElementsByTagName(a.document, "table"),
  13701. function(b) {
  13702. a.fireEvent("excludetable", b) !== !0 &&
  13703. ((b.ueTable = new X(b)),
  13704. (b.onmouseover = function() {
  13705. a.fireEvent("tablemouseover", b);
  13706. }),
  13707. (b.onmousemove = function() {
  13708. a.fireEvent("tablemousemove", b),
  13709. a.options.tableDragable && h(!0, this, a),
  13710. utils.defer(function() {
  13711. a.fireEvent("contentchange", 50);
  13712. }, !0);
  13713. }),
  13714. (b.onmouseout = function() {
  13715. a.fireEvent("tablemouseout", b),
  13716. m(a, !1, "", null),
  13717. I(a);
  13718. }),
  13719. (b.onclick = function(b) {
  13720. b = a.window.event || b;
  13721. var c = d(b.target || b.srcElement);
  13722. if (c) {
  13723. var e,
  13724. f = Y(c),
  13725. g = f.table,
  13726. h = f.getCellInfo(c),
  13727. i = a.selection.getRange();
  13728. if (j(g, c, b, !0)) {
  13729. var k = f.getCell(
  13730. f.indexTable[f.rowsNum - 1][h.colIndex].rowIndex,
  13731. f.indexTable[f.rowsNum - 1][h.colIndex].cellIndex
  13732. );
  13733. return void (b.shiftKey && f.selectedTds.length
  13734. ? f.selectedTds[0] !== k
  13735. ? ((e = f.getCellsRange(f.selectedTds[0], k)),
  13736. f.setSelected(e))
  13737. : i && i.selectNodeContents(k).select()
  13738. : c !== k
  13739. ? ((e = f.getCellsRange(c, k)), f.setSelected(e))
  13740. : i && i.selectNodeContents(k).select());
  13741. }
  13742. if (j(g, c, b)) {
  13743. var l = f.getCell(
  13744. f.indexTable[h.rowIndex][f.colsNum - 1].rowIndex,
  13745. f.indexTable[h.rowIndex][f.colsNum - 1].cellIndex
  13746. );
  13747. b.shiftKey && f.selectedTds.length
  13748. ? f.selectedTds[0] !== l
  13749. ? ((e = f.getCellsRange(f.selectedTds[0], l)),
  13750. f.setSelected(e))
  13751. : i && i.selectNodeContents(l).select()
  13752. : c !== l
  13753. ? ((e = f.getCellsRange(c, l)), f.setSelected(e))
  13754. : i && i.selectNodeContents(l).select();
  13755. }
  13756. }
  13757. }));
  13758. }
  13759. ),
  13760. K(a, !0);
  13761. }
  13762. }),
  13763. domUtils.on(N.document, "mousemove", g),
  13764. domUtils.on(N.document, "mouseout", function(a) {
  13765. var b = a.target || a.srcElement;
  13766. "TABLE" == b.tagName && m(N, !1, "", null);
  13767. }),
  13768. N.addListener("interlacetable", function(a, b, c) {
  13769. if (b)
  13770. for (
  13771. var d = this,
  13772. e = b.rows,
  13773. f = e.length,
  13774. g = function(a, b, c) {
  13775. return a[b] ? a[b] : c ? a[b % a.length] : "";
  13776. },
  13777. h = 0;
  13778. h < f;
  13779. h++
  13780. )
  13781. e[h].className = g(c || d.options.classList, h, !0);
  13782. }),
  13783. N.addListener("uninterlacetable", function(a, b) {
  13784. if (b)
  13785. for (
  13786. var c = this,
  13787. d = b.rows,
  13788. e = c.options.classList,
  13789. f = d.length,
  13790. g = 0;
  13791. g < f;
  13792. g++
  13793. )
  13794. domUtils.removeClasses(d[g], e);
  13795. }),
  13796. N.addListener("mousedown", o),
  13797. N.addListener("mouseup", w),
  13798. domUtils.on(N.body, "dragstart", function(a) {
  13799. w.call(N, "dragstart", a);
  13800. }),
  13801. N.addOutputRule(function(a) {
  13802. utils.each(a.getNodesByTagName("div"), function(a) {
  13803. "ue_tableDragLine" == a.getAttr("id") &&
  13804. a.parentNode.removeChild(a);
  13805. });
  13806. });
  13807. var k = 0;
  13808. N.addListener("mousedown", function() {
  13809. k = 0;
  13810. }),
  13811. N.addListener("tabkeydown", function() {
  13812. var a = this.selection.getRange(),
  13813. b = a.getCommonAncestor(!0, !0),
  13814. c = domUtils.findParentByTagName(b, "table");
  13815. if (c) {
  13816. if (domUtils.findParentByTagName(b, "caption", !0)) {
  13817. var d = domUtils.getElementsByTagName(c, "th td");
  13818. d && d.length && a.setStart(d[0], 0).setCursor(!1, !0);
  13819. } else {
  13820. var d = domUtils.findParentByTagName(b, ["td", "th"], !0),
  13821. f = Y(d);
  13822. k = d.rowSpan > 1 ? k : f.getCellInfo(d).rowIndex;
  13823. var g = f.getTabNextCell(d, k);
  13824. g
  13825. ? e(g)
  13826. ? a.setStart(g, 0).setCursor(!1, !0)
  13827. : a.selectNodeContents(g).select()
  13828. : (N.fireEvent("saveScene"),
  13829. (N.__hasEnterExecCommand = !0),
  13830. this.execCommand("insertrownext"),
  13831. (N.__hasEnterExecCommand = !1),
  13832. (a = this.selection.getRange()),
  13833. a
  13834. .setStart(c.rows[c.rows.length - 1].cells[0], 0)
  13835. .setCursor(),
  13836. N.fireEvent("saveScene"));
  13837. }
  13838. return !0;
  13839. }
  13840. }),
  13841. browser.ie &&
  13842. N.addListener("selectionchange", function() {
  13843. m(this, !1, "", null);
  13844. }),
  13845. N.addListener("keydown", function(a, b) {
  13846. var c = this,
  13847. d = b.keyCode || b.which;
  13848. if (8 != d && 46 != d) {
  13849. var e = !(b.ctrlKey || b.metaKey || b.shiftKey || b.altKey);
  13850. e && _(domUtils.getElementsByTagName(c.body, "td"));
  13851. var f = Z(c);
  13852. f && e && f.clearSelected();
  13853. }
  13854. }),
  13855. N.addListener("beforegetcontent", function() {
  13856. K(this, !1),
  13857. browser.ie &&
  13858. utils.each(
  13859. this.document.getElementsByTagName("caption"),
  13860. function(a) {
  13861. domUtils.isEmptyNode(a) && (a.innerHTML = "&nbsp;");
  13862. }
  13863. );
  13864. }),
  13865. N.addListener("aftergetcontent", function() {
  13866. K(this, !0);
  13867. }),
  13868. N.addListener("getAllHtml", function() {
  13869. _(N.document.getElementsByTagName("td"));
  13870. }),
  13871. N.addListener("fullscreenchanged", function(a, b) {
  13872. if (!b) {
  13873. var c = this.body.offsetWidth / document.body.offsetWidth,
  13874. d = domUtils.getElementsByTagName(this.body, "table");
  13875. utils.each(d, function(a) {
  13876. if (a.offsetWidth < N.body.offsetWidth) return !1;
  13877. var b = domUtils.getElementsByTagName(a, "td"),
  13878. d = [];
  13879. utils.each(b, function(a) {
  13880. d.push(a.offsetWidth);
  13881. });
  13882. for (var e, f = 0; (e = b[f]); f++)
  13883. e.setAttribute("width", Math.floor(d[f] * c));
  13884. a.setAttribute("width", Math.floor(L(N, ja, $(N))));
  13885. });
  13886. }
  13887. });
  13888. var l = N.execCommand;
  13889. N.execCommand = function(a, b) {
  13890. var c = this;
  13891. a = a.toLowerCase();
  13892. var d,
  13893. f,
  13894. g = Z(c),
  13895. h = new dom.Range(c.document),
  13896. i = c.commands[a] || UE.commands[a];
  13897. if (i) {
  13898. if (!g || ka[a] || i.notNeedUndo || c.__hasEnterExecCommand)
  13899. f = l.apply(c, arguments);
  13900. else {
  13901. (c.__hasEnterExecCommand = !0),
  13902. c.fireEvent("beforeexeccommand", a),
  13903. (d = g.selectedTds);
  13904. for (var j, k, m, n = -2, o = -2, p = 0; (m = d[p]); p++)
  13905. e(m)
  13906. ? h.setStart(m, 0).setCursor(!1, !0)
  13907. : h.selectNode(m).select(!0),
  13908. (k = c.queryCommandState(a)),
  13909. (j = c.queryCommandValue(a)),
  13910. k != -1 &&
  13911. ((n === k && o === j) ||
  13912. ((c._ignoreContentChange = !0),
  13913. (f = l.apply(c, arguments)),
  13914. (c._ignoreContentChange = !1)),
  13915. (n = c.queryCommandState(a)),
  13916. (o = c.queryCommandValue(a)),
  13917. domUtils.isEmptyBlock(m) &&
  13918. domUtils.fillNode(c.document, m));
  13919. h
  13920. .setStart(d[0], 0)
  13921. .shrinkBoundary(!0)
  13922. .setCursor(!1, !0),
  13923. c.fireEvent("contentchange"),
  13924. c.fireEvent("afterexeccommand", a),
  13925. (c.__hasEnterExecCommand = !1),
  13926. c._selectionChange();
  13927. }
  13928. return f;
  13929. }
  13930. };
  13931. });
  13932. var la;
  13933. }),
  13934. (UE.UETable.prototype.sortTable = function(a, b) {
  13935. var c = this.table,
  13936. d = c.rows,
  13937. e = [],
  13938. f = "TH" === d[0].cells[0].tagName,
  13939. g = 0;
  13940. if (this.selectedTds.length) {
  13941. for (
  13942. var h = this.cellsRange, i = h.endRowIndex + 1, j = h.beginRowIndex;
  13943. j < i;
  13944. j++
  13945. )
  13946. e[j] = d[j];
  13947. e.splice(0, h.beginRowIndex),
  13948. (g = h.endRowIndex + 1 === this.rowsNum ? 0 : h.endRowIndex + 1);
  13949. } else for (var j = 0, i = d.length; j < i; j++) e[j] = d[j];
  13950. var k = {
  13951. reversecurrent: function(a, b) {
  13952. return 1;
  13953. },
  13954. orderbyasc: function(a, b) {
  13955. var c = a.innerText || a.textContent,
  13956. d = b.innerText || b.textContent;
  13957. return c.localeCompare(d);
  13958. },
  13959. reversebyasc: function(a, b) {
  13960. var c = a.innerHTML,
  13961. d = b.innerHTML;
  13962. return d.localeCompare(c);
  13963. },
  13964. orderbynum: function(a, b) {
  13965. var c = a[browser.ie ? "innerText" : "textContent"].match(/\d+/),
  13966. d = b[browser.ie ? "innerText" : "textContent"].match(/\d+/);
  13967. return c && (c = +c[0]), d && (d = +d[0]), (c || 0) - (d || 0);
  13968. },
  13969. reversebynum: function(a, b) {
  13970. var c = a[browser.ie ? "innerText" : "textContent"].match(/\d+/),
  13971. d = b[browser.ie ? "innerText" : "textContent"].match(/\d+/);
  13972. return c && (c = +c[0]), d && (d = +d[0]), (d || 0) - (c || 0);
  13973. },
  13974. };
  13975. c.setAttribute(
  13976. "data-sort-type",
  13977. b && "string" == typeof b && k[b] ? b : ""
  13978. ),
  13979. f && e.splice(0, 1),
  13980. (e = utils.sort(e, function(c, d) {
  13981. var e;
  13982. return (e =
  13983. b && "function" == typeof b
  13984. ? b.call(this, c.cells[a], d.cells[a])
  13985. : b && "number" == typeof b
  13986. ? 1
  13987. : b && "string" == typeof b && k[b]
  13988. ? k[b].call(this, c.cells[a], d.cells[a])
  13989. : k.orderbyasc.call(this, c.cells[a], d.cells[a]));
  13990. }));
  13991. for (
  13992. var l = c.ownerDocument.createDocumentFragment(), m = 0, i = e.length;
  13993. m < i;
  13994. m++
  13995. )
  13996. l.appendChild(e[m]);
  13997. var n = c.getElementsByTagName("tbody")[0];
  13998. g
  13999. ? n.insertBefore(l, d[g - h.endRowIndex + h.beginRowIndex - 1])
  14000. : n.appendChild(l);
  14001. }),
  14002. (UE.plugins.tablesort = function() {
  14003. var a = this,
  14004. b = UE.UETable,
  14005. c = function(a) {
  14006. return b.getUETable(a);
  14007. },
  14008. d = function(a) {
  14009. return b.getTableItemsByRange(a);
  14010. };
  14011. a.ready(function() {
  14012. utils.cssRule(
  14013. "tablesort",
  14014. "table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right; background-image:url(" +
  14015. a.options.themePath +
  14016. a.options.theme +
  14017. "/images/sortable.png);}",
  14018. a.document
  14019. ),
  14020. a.addListener("afterexeccommand", function(a, b) {
  14021. ("mergeright" != b && "mergedown" != b && "mergecells" != b) ||
  14022. this.execCommand("disablesort");
  14023. });
  14024. }),
  14025. (UE.commands.sorttable = {
  14026. queryCommandState: function() {
  14027. var a = this,
  14028. b = d(a);
  14029. if (!b.cell) return -1;
  14030. for (
  14031. var c, e = b.table, f = e.getElementsByTagName("td"), g = 0;
  14032. (c = f[g++]);
  14033. )
  14034. if (1 != c.rowSpan || 1 != c.colSpan) return -1;
  14035. return 0;
  14036. },
  14037. execCommand: function(a, b) {
  14038. var e = this,
  14039. f = e.selection.getRange(),
  14040. g = f.createBookmark(!0),
  14041. h = d(e),
  14042. i = h.cell,
  14043. j = c(h.table),
  14044. k = j.getCellInfo(i);
  14045. j.sortTable(k.cellIndex, b), f.moveToBookmark(g);
  14046. try {
  14047. f.select();
  14048. } catch (l) {}
  14049. },
  14050. }),
  14051. (UE.commands.enablesort = UE.commands.disablesort = {
  14052. queryCommandState: function(a) {
  14053. var b = d(this).table;
  14054. if (b && "enablesort" == a)
  14055. for (
  14056. var c = domUtils.getElementsByTagName(b, "th td"), e = 0;
  14057. e < c.length;
  14058. e++
  14059. )
  14060. if (
  14061. c[e].getAttribute("colspan") > 1 ||
  14062. c[e].getAttribute("rowspan") > 1
  14063. )
  14064. return -1;
  14065. return b
  14066. ? ("enablesort" == a) ^
  14067. ("sortEnabled" != b.getAttribute("data-sort"))
  14068. ? -1
  14069. : 0
  14070. : -1;
  14071. },
  14072. execCommand: function(a) {
  14073. var b = d(this).table;
  14074. b.setAttribute(
  14075. "data-sort",
  14076. "enablesort" == a ? "sortEnabled" : "sortDisabled"
  14077. ),
  14078. "enablesort" == a
  14079. ? domUtils.addClass(b, "sortEnabled")
  14080. : domUtils.removeClasses(b, "sortEnabled");
  14081. },
  14082. });
  14083. }),
  14084. (UE.plugins.contextmenu = function() {
  14085. var a = this;
  14086. if (
  14087. (a.setOpt("enableContextMenu", !0),
  14088. a.getOpt("enableContextMenu") !== !1)
  14089. ) {
  14090. var b,
  14091. c = a.getLang("contextMenu"),
  14092. d = a.options.contextMenu || [
  14093. { label: c.selectall, cmdName: "selectall" },
  14094. {
  14095. label: c.cleardoc,
  14096. cmdName: "cleardoc",
  14097. exec: function() {
  14098. confirm(c.confirmclear) && this.execCommand("cleardoc");
  14099. },
  14100. },
  14101. "-",
  14102. { label: c.unlink, cmdName: "unlink" },
  14103. "-",
  14104. {
  14105. group: c.paragraph,
  14106. icon: "justifyjustify",
  14107. subMenu: [
  14108. { label: c.justifyleft, cmdName: "justify", value: "left" },
  14109. { label: c.justifyright, cmdName: "justify", value: "right" },
  14110. { label: c.justifycenter, cmdName: "justify", value: "center" },
  14111. {
  14112. label: c.justifyjustify,
  14113. cmdName: "justify",
  14114. value: "justify",
  14115. },
  14116. ],
  14117. },
  14118. "-",
  14119. {
  14120. group: c.table,
  14121. icon: "table",
  14122. subMenu: [
  14123. { label: c.inserttable, cmdName: "inserttable" },
  14124. { label: c.deletetable, cmdName: "deletetable" },
  14125. "-",
  14126. { label: c.deleterow, cmdName: "deleterow" },
  14127. { label: c.deletecol, cmdName: "deletecol" },
  14128. { label: c.insertcol, cmdName: "insertcol" },
  14129. { label: c.insertcolnext, cmdName: "insertcolnext" },
  14130. { label: c.insertrow, cmdName: "insertrow" },
  14131. { label: c.insertrownext, cmdName: "insertrownext" },
  14132. "-",
  14133. { label: c.insertcaption, cmdName: "insertcaption" },
  14134. { label: c.deletecaption, cmdName: "deletecaption" },
  14135. { label: c.inserttitle, cmdName: "inserttitle" },
  14136. { label: c.deletetitle, cmdName: "deletetitle" },
  14137. { label: c.inserttitlecol, cmdName: "inserttitlecol" },
  14138. { label: c.deletetitlecol, cmdName: "deletetitlecol" },
  14139. "-",
  14140. { label: c.mergecells, cmdName: "mergecells" },
  14141. { label: c.mergeright, cmdName: "mergeright" },
  14142. { label: c.mergedown, cmdName: "mergedown" },
  14143. "-",
  14144. { label: c.splittorows, cmdName: "splittorows" },
  14145. { label: c.splittocols, cmdName: "splittocols" },
  14146. { label: c.splittocells, cmdName: "splittocells" },
  14147. "-",
  14148. { label: c.averageDiseRow, cmdName: "averagedistributerow" },
  14149. { label: c.averageDisCol, cmdName: "averagedistributecol" },
  14150. "-",
  14151. {
  14152. label: c.edittd,
  14153. cmdName: "edittd",
  14154. exec: function() {
  14155. UE.ui.edittd && new UE.ui.edittd(this),
  14156. this.getDialog("edittd").open();
  14157. },
  14158. },
  14159. {
  14160. label: c.edittable,
  14161. cmdName: "edittable",
  14162. exec: function() {
  14163. UE.ui.edittable && new UE.ui.edittable(this),
  14164. this.getDialog("edittable").open();
  14165. },
  14166. },
  14167. { label: c.setbordervisible, cmdName: "setbordervisible" },
  14168. ],
  14169. },
  14170. {
  14171. group: c.tablesort,
  14172. icon: "tablesort",
  14173. subMenu: [
  14174. { label: c.enablesort, cmdName: "enablesort" },
  14175. { label: c.disablesort, cmdName: "disablesort" },
  14176. "-",
  14177. {
  14178. label: c.reversecurrent,
  14179. cmdName: "sorttable",
  14180. value: "reversecurrent",
  14181. },
  14182. {
  14183. label: c.orderbyasc,
  14184. cmdName: "sorttable",
  14185. value: "orderbyasc",
  14186. },
  14187. {
  14188. label: c.reversebyasc,
  14189. cmdName: "sorttable",
  14190. value: "reversebyasc",
  14191. },
  14192. {
  14193. label: c.orderbynum,
  14194. cmdName: "sorttable",
  14195. value: "orderbynum",
  14196. },
  14197. {
  14198. label: c.reversebynum,
  14199. cmdName: "sorttable",
  14200. value: "reversebynum",
  14201. },
  14202. ],
  14203. },
  14204. {
  14205. group: c.borderbk,
  14206. icon: "borderBack",
  14207. subMenu: [
  14208. {
  14209. label: c.setcolor,
  14210. cmdName: "interlacetable",
  14211. exec: function() {
  14212. this.execCommand("interlacetable");
  14213. },
  14214. },
  14215. {
  14216. label: c.unsetcolor,
  14217. cmdName: "uninterlacetable",
  14218. exec: function() {
  14219. this.execCommand("uninterlacetable");
  14220. },
  14221. },
  14222. {
  14223. label: c.setbackground,
  14224. cmdName: "settablebackground",
  14225. exec: function() {
  14226. this.execCommand("settablebackground", {
  14227. repeat: !0,
  14228. colorList: ["#bbb", "#ccc"],
  14229. });
  14230. },
  14231. },
  14232. {
  14233. label: c.unsetbackground,
  14234. cmdName: "cleartablebackground",
  14235. exec: function() {
  14236. this.execCommand("cleartablebackground");
  14237. },
  14238. },
  14239. {
  14240. label: c.redandblue,
  14241. cmdName: "settablebackground",
  14242. exec: function() {
  14243. this.execCommand("settablebackground", {
  14244. repeat: !0,
  14245. colorList: ["red", "blue"],
  14246. });
  14247. },
  14248. },
  14249. {
  14250. label: c.threecolorgradient,
  14251. cmdName: "settablebackground",
  14252. exec: function() {
  14253. this.execCommand("settablebackground", {
  14254. repeat: !0,
  14255. colorList: ["#aaa", "#bbb", "#ccc"],
  14256. });
  14257. },
  14258. },
  14259. ],
  14260. },
  14261. {
  14262. group: c.aligntd,
  14263. icon: "aligntd",
  14264. subMenu: [
  14265. {
  14266. cmdName: "cellalignment",
  14267. value: { align: "left", vAlign: "top" },
  14268. },
  14269. {
  14270. cmdName: "cellalignment",
  14271. value: { align: "center", vAlign: "top" },
  14272. },
  14273. {
  14274. cmdName: "cellalignment",
  14275. value: { align: "right", vAlign: "top" },
  14276. },
  14277. {
  14278. cmdName: "cellalignment",
  14279. value: { align: "left", vAlign: "middle" },
  14280. },
  14281. {
  14282. cmdName: "cellalignment",
  14283. value: { align: "center", vAlign: "middle" },
  14284. },
  14285. {
  14286. cmdName: "cellalignment",
  14287. value: { align: "right", vAlign: "middle" },
  14288. },
  14289. {
  14290. cmdName: "cellalignment",
  14291. value: { align: "left", vAlign: "bottom" },
  14292. },
  14293. {
  14294. cmdName: "cellalignment",
  14295. value: { align: "center", vAlign: "bottom" },
  14296. },
  14297. {
  14298. cmdName: "cellalignment",
  14299. value: { align: "right", vAlign: "bottom" },
  14300. },
  14301. ],
  14302. },
  14303. {
  14304. group: c.aligntable,
  14305. icon: "aligntable",
  14306. subMenu: [
  14307. {
  14308. cmdName: "tablealignment",
  14309. className: "left",
  14310. label: c.tableleft,
  14311. value: "left",
  14312. },
  14313. {
  14314. cmdName: "tablealignment",
  14315. className: "center",
  14316. label: c.tablecenter,
  14317. value: "center",
  14318. },
  14319. {
  14320. cmdName: "tablealignment",
  14321. className: "right",
  14322. label: c.tableright,
  14323. value: "right",
  14324. },
  14325. ],
  14326. },
  14327. "-",
  14328. {
  14329. label: c.insertparagraphbefore,
  14330. cmdName: "insertparagraph",
  14331. value: !0,
  14332. },
  14333. { label: c.insertparagraphafter, cmdName: "insertparagraph" },
  14334. { label: c.copy, cmdName: "copy" },
  14335. { label: c.paste, cmdName: "paste" },
  14336. ];
  14337. if (d.length) {
  14338. var e = UE.ui.uiUtils;
  14339. a.addListener("contextmenu", function(f, g) {
  14340. var h = e.getViewportOffsetByEvent(g);
  14341. a.fireEvent("beforeselectionchange"), b && b.destroy();
  14342. for (var i, j = 0, k = []; (i = d[j]); j++) {
  14343. var l;
  14344. !(function(b) {
  14345. function d() {
  14346. switch (b.icon) {
  14347. case "table":
  14348. return a.getLang("contextMenu.table");
  14349. case "justifyjustify":
  14350. return a.getLang("contextMenu.paragraph");
  14351. case "aligntd":
  14352. return a.getLang("contextMenu.aligntd");
  14353. case "aligntable":
  14354. return a.getLang("contextMenu.aligntable");
  14355. case "tablesort":
  14356. return c.tablesort;
  14357. case "borderBack":
  14358. return c.borderbk;
  14359. default:
  14360. return "";
  14361. }
  14362. }
  14363. if ("-" == b) (l = k[k.length - 1]) && "-" !== l && k.push("-");
  14364. else if (b.hasOwnProperty("group")) {
  14365. for (var e, f = 0, g = []; (e = b.subMenu[f]); f++)
  14366. !(function(b) {
  14367. "-" == b
  14368. ? (l = g[g.length - 1]) && "-" !== l
  14369. ? g.push("-")
  14370. : g.splice(g.length - 1)
  14371. : (a.commands[b.cmdName] ||
  14372. UE.commands[b.cmdName] ||
  14373. b.query) &&
  14374. (b.query
  14375. ? b.query()
  14376. : a.queryCommandState(b.cmdName)) > -1 &&
  14377. g.push({
  14378. label:
  14379. b.label ||
  14380. a.getLang(
  14381. "contextMenu." + b.cmdName + (b.value || "")
  14382. ) ||
  14383. "",
  14384. className:
  14385. "edui-for-" +
  14386. b.cmdName +
  14387. (b.className
  14388. ? " edui-for-" + b.cmdName + "-" + b.className
  14389. : ""),
  14390. onclick: b.exec
  14391. ? function() {
  14392. b.exec.call(a);
  14393. }
  14394. : function() {
  14395. a.execCommand(b.cmdName, b.value);
  14396. },
  14397. });
  14398. })(e);
  14399. g.length &&
  14400. k.push({
  14401. label: d(),
  14402. className: "edui-for-" + b.icon,
  14403. subMenu: { items: g, editor: a },
  14404. });
  14405. } else
  14406. (a.commands[b.cmdName] ||
  14407. UE.commands[b.cmdName] ||
  14408. b.query) &&
  14409. (b.query
  14410. ? b.query.call(a)
  14411. : a.queryCommandState(b.cmdName)) > -1 &&
  14412. k.push({
  14413. label: b.label || a.getLang("contextMenu." + b.cmdName),
  14414. className:
  14415. "edui-for-" +
  14416. (b.icon ? b.icon : b.cmdName + (b.value || "")),
  14417. onclick: b.exec
  14418. ? function() {
  14419. b.exec.call(a);
  14420. }
  14421. : function() {
  14422. a.execCommand(b.cmdName, b.value);
  14423. },
  14424. });
  14425. })(i);
  14426. }
  14427. if (
  14428. ("-" == k[k.length - 1] && k.pop(),
  14429. (b = new UE.ui.Menu({
  14430. items: k,
  14431. className: "edui-contextmenu",
  14432. editor: a,
  14433. })),
  14434. b.render(),
  14435. b.showAt(h),
  14436. a.fireEvent("aftershowcontextmenu", b),
  14437. domUtils.preventDefault(g),
  14438. browser.ie)
  14439. ) {
  14440. var m;
  14441. try {
  14442. m = a.selection.getNative().createRange();
  14443. } catch (n) {
  14444. return;
  14445. }
  14446. if (m.item) {
  14447. var o = new dom.Range(a.document);
  14448. o.selectNode(m.item(0)).select(!0, !0);
  14449. }
  14450. }
  14451. }),
  14452. a.addListener("aftershowcontextmenu", function(b, c) {
  14453. if (a.zeroclipboard) {
  14454. var d = c.items;
  14455. for (var e in d)
  14456. "edui-for-copy" == d[e].className &&
  14457. a.zeroclipboard.clip(d[e].getDom());
  14458. }
  14459. });
  14460. }
  14461. }
  14462. }),
  14463. (UE.plugins.shortcutmenu = function() {
  14464. var a,
  14465. b = this,
  14466. c = b.options.shortcutMenu || [];
  14467. c.length &&
  14468. (b.addListener("contextmenu mouseup", function(b, d) {
  14469. var e = this,
  14470. f = {
  14471. type: b,
  14472. target: d.target || d.srcElement,
  14473. screenX: d.screenX,
  14474. screenY: d.screenY,
  14475. clientX: d.clientX,
  14476. clientY: d.clientY,
  14477. };
  14478. if (
  14479. (setTimeout(function() {
  14480. var d = e.selection.getRange();
  14481. (d.collapsed !== !1 && "contextmenu" != b) ||
  14482. (a ||
  14483. ((a = new baidu.editor.ui.ShortCutMenu({
  14484. editor: e,
  14485. items: c,
  14486. theme: e.options.theme,
  14487. className: "edui-shortcutmenu",
  14488. })),
  14489. a.render(),
  14490. e.fireEvent("afterrendershortcutmenu", a)),
  14491. a.show(f, !!UE.plugins.contextmenu));
  14492. }),
  14493. "contextmenu" == b &&
  14494. (domUtils.preventDefault(d), browser.ie9below))
  14495. ) {
  14496. var g;
  14497. try {
  14498. g = e.selection.getNative().createRange();
  14499. } catch (d) {
  14500. return;
  14501. }
  14502. if (g.item) {
  14503. var h = new dom.Range(e.document);
  14504. h.selectNode(g.item(0)).select(!0, !0);
  14505. }
  14506. }
  14507. }),
  14508. b.addListener("keydown", function(b) {
  14509. "keydown" == b && a && !a.isHidden && a.hide();
  14510. }));
  14511. }),
  14512. (UE.plugins.basestyle = function() {
  14513. var a = {
  14514. bold: ["strong", "b"],
  14515. italic: ["em", "i"],
  14516. subscript: ["sub"],
  14517. superscript: ["sup"],
  14518. },
  14519. b = function(a, b) {
  14520. return domUtils.filterNodeList(a.selection.getStartElementPath(), b);
  14521. },
  14522. c = this;
  14523. c.addshortcutkey({
  14524. Bold: "ctrl+66",
  14525. Italic: "ctrl+73",
  14526. Underline: "ctrl+85",
  14527. }),
  14528. c.addInputRule(function(a) {
  14529. utils.each(a.getNodesByTagName("b i"), function(a) {
  14530. switch (a.tagName) {
  14531. case "b":
  14532. a.tagName = "strong";
  14533. break;
  14534. case "i":
  14535. a.tagName = "em";
  14536. }
  14537. });
  14538. });
  14539. for (var d in a)
  14540. !(function(a, d) {
  14541. c.commands[a] = {
  14542. execCommand: function(a) {
  14543. var e = c.selection.getRange(),
  14544. f = b(this, d);
  14545. if (e.collapsed) {
  14546. if (f) {
  14547. var g = c.document.createTextNode("");
  14548. e.insertNode(g).removeInlineStyle(d),
  14549. e.setStartBefore(g),
  14550. domUtils.remove(g);
  14551. } else {
  14552. var h = e.document.createElement(d[0]);
  14553. ("superscript" != a && "subscript" != a) ||
  14554. ((g = c.document.createTextNode("")),
  14555. e
  14556. .insertNode(g)
  14557. .removeInlineStyle(["sub", "sup"])
  14558. .setStartBefore(g)
  14559. .collapse(!0)),
  14560. e.insertNode(h).setStart(h, 0);
  14561. }
  14562. e.collapse(!0);
  14563. } else
  14564. ("superscript" != a && "subscript" != a) ||
  14565. (f && f.tagName.toLowerCase() == a) ||
  14566. e.removeInlineStyle(["sub", "sup"]),
  14567. f ? e.removeInlineStyle(d) : e.applyInlineStyle(d[0]);
  14568. e.select();
  14569. },
  14570. queryCommandState: function() {
  14571. return b(this, d) ? 1 : 0;
  14572. },
  14573. };
  14574. })(d, a[d]);
  14575. }),
  14576. (UE.plugins.elementpath = function() {
  14577. var a,
  14578. b,
  14579. c = this;
  14580. c.setOpt("elementPathEnabled", !0),
  14581. c.options.elementPathEnabled &&
  14582. (c.commands.elementpath = {
  14583. execCommand: function(d, e) {
  14584. var f = b[e],
  14585. g = c.selection.getRange();
  14586. (a = 1 * e), g.selectNode(f).select();
  14587. },
  14588. queryCommandValue: function() {
  14589. var c = [].concat(this.selection.getStartElementPath()).reverse(),
  14590. d = [];
  14591. b = c;
  14592. for (var e, f = 0; (e = c[f]); f++)
  14593. if (3 != e.nodeType) {
  14594. var g = e.tagName.toLowerCase();
  14595. if (
  14596. ("img" == g &&
  14597. e.getAttribute("anchorname") &&
  14598. (g = "anchor"),
  14599. (d[f] = g),
  14600. a == f)
  14601. ) {
  14602. a = -1;
  14603. break;
  14604. }
  14605. }
  14606. return d;
  14607. },
  14608. });
  14609. }),
  14610. (UE.plugins.formatmatch = function() {
  14611. function a(f, g) {
  14612. function h(a) {
  14613. return (
  14614. m && a.selectNode(m),
  14615. a.applyInlineStyle(d[d.length - 1].tagName, null, d)
  14616. );
  14617. }
  14618. if (browser.webkit) var i = "IMG" == g.target.tagName ? g.target : null;
  14619. c.undoManger && c.undoManger.save();
  14620. var j = c.selection.getRange(),
  14621. k = i || j.getClosedNode();
  14622. if (b && k && "IMG" == k.tagName)
  14623. (k.style.cssText +=
  14624. ";float:" +
  14625. (b.style.cssFloat || b.style.styleFloat || "none") +
  14626. ";display:" +
  14627. (b.style.display || "inline")),
  14628. (b = null);
  14629. else if (!b) {
  14630. var l = j.collapsed;
  14631. if (l) {
  14632. var m = c.document.createTextNode("match");
  14633. j.insertNode(m).select();
  14634. }
  14635. c.__hasEnterExecCommand = !0;
  14636. var n = c.options.removeFormatAttributes;
  14637. (c.options.removeFormatAttributes = ""),
  14638. c.execCommand("removeformat"),
  14639. (c.options.removeFormatAttributes = n),
  14640. (c.__hasEnterExecCommand = !1),
  14641. (j = c.selection.getRange()),
  14642. d.length && h(j),
  14643. m && j.setStartBefore(m).collapse(!0),
  14644. j.select(),
  14645. m && domUtils.remove(m);
  14646. }
  14647. c.undoManger && c.undoManger.save(),
  14648. c.removeListener("mouseup", a),
  14649. (e = 0);
  14650. }
  14651. var b,
  14652. c = this,
  14653. d = [],
  14654. e = 0;
  14655. c.addListener("reset", function() {
  14656. (d = []), (e = 0);
  14657. }),
  14658. (c.commands.formatmatch = {
  14659. execCommand: function(f) {
  14660. if (e)
  14661. return (e = 0), (d = []), void c.removeListener("mouseup", a);
  14662. var g = c.selection.getRange();
  14663. if (((b = g.getClosedNode()), !b || "IMG" != b.tagName)) {
  14664. g.collapse(!0).shrinkBoundary();
  14665. var h = g.startContainer;
  14666. d = domUtils.findParents(h, !0, function(a) {
  14667. return !domUtils.isBlockElm(a) && 1 == a.nodeType;
  14668. });
  14669. for (var i, j = 0; (i = d[j]); j++)
  14670. if ("A" == i.tagName) {
  14671. d.splice(j, 1);
  14672. break;
  14673. }
  14674. }
  14675. c.addListener("mouseup", a), (e = 1);
  14676. },
  14677. queryCommandState: function() {
  14678. return e;
  14679. },
  14680. notNeedUndo: 1,
  14681. });
  14682. }),
  14683. UE.plugin.register("searchreplace", function() {
  14684. function a(a, b, c) {
  14685. var d = b.searchStr;
  14686. b.dir == -1 &&
  14687. ((a = a
  14688. .split("")
  14689. .reverse()
  14690. .join("")),
  14691. (d = d
  14692. .split("")
  14693. .reverse()
  14694. .join("")),
  14695. (c = a.length - c));
  14696. for (
  14697. var e, f = new RegExp(d, "g" + (b.casesensitive ? "" : "i"));
  14698. (e = f.exec(a));
  14699. )
  14700. if (e.index >= c)
  14701. return b.dir == -1
  14702. ? a.length - e.index - b.searchStr.length
  14703. : e.index;
  14704. return -1;
  14705. }
  14706. function b(b, c, d) {
  14707. var e,
  14708. f,
  14709. h = d.all || 1 == d.dir ? "getNextDomNode" : "getPreDomNode";
  14710. domUtils.isBody(b) && (b = b.firstChild);
  14711. for (var i = 1; b; ) {
  14712. if (
  14713. ((e =
  14714. 3 == b.nodeType
  14715. ? b.nodeValue
  14716. : b[browser.ie ? "innerText" : "textContent"]),
  14717. (f = a(e, d, c)),
  14718. (i = 0),
  14719. f != -1)
  14720. )
  14721. return { node: b, index: f };
  14722. for (b = domUtils[h](b); b && g[b.nodeName.toLowerCase()]; )
  14723. b = domUtils[h](b, !0);
  14724. b &&
  14725. (c =
  14726. d.dir == -1
  14727. ? (3 == b.nodeType
  14728. ? b.nodeValue
  14729. : b[browser.ie ? "innerText" : "textContent"]
  14730. ).length
  14731. : 0);
  14732. }
  14733. }
  14734. function c(a, b, d) {
  14735. for (var e, f = 0, g = a.firstChild, h = 0; g; ) {
  14736. if (3 == g.nodeType) {
  14737. if (
  14738. ((h = g.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/, "")
  14739. .length),
  14740. (f += h),
  14741. f >= b)
  14742. )
  14743. return { node: g, index: h - (f - b) };
  14744. } else if (
  14745. !dtd.$empty[g.tagName] &&
  14746. ((h = g[browser.ie ? "innerText" : "textContent"].replace(
  14747. /(^[\t\r\n]+)|([\t\r\n]+$)/,
  14748. ""
  14749. ).length),
  14750. (f += h),
  14751. f >= b && (e = c(g, h - (f - b), d)))
  14752. )
  14753. return e;
  14754. g = domUtils.getNextDomNode(g);
  14755. }
  14756. }
  14757. function d(a, d) {
  14758. var f,
  14759. g = a.selection.getRange(),
  14760. h = d.searchStr,
  14761. i = a.document.createElement("span");
  14762. if (
  14763. ((i.innerHTML = "$$ueditor_searchreplace_key$$"),
  14764. g.shrinkBoundary(!0),
  14765. !g.collapsed)
  14766. ) {
  14767. g.select();
  14768. var j = a.selection.getText();
  14769. if (
  14770. new RegExp(
  14771. "^" + d.searchStr + "$",
  14772. d.casesensitive ? "" : "i"
  14773. ).test(j)
  14774. ) {
  14775. if (void 0 != d.replaceStr)
  14776. return e(g, d.replaceStr), g.select(), !0;
  14777. g.collapse(d.dir == -1);
  14778. }
  14779. }
  14780. g.insertNode(i), g.enlargeToBlockElm(!0), (f = g.startContainer);
  14781. var k = f[browser.ie ? "innerText" : "textContent"].indexOf(
  14782. "$$ueditor_searchreplace_key$$"
  14783. );
  14784. g.setStartBefore(i), domUtils.remove(i);
  14785. var l = b(f, k, d);
  14786. if (l) {
  14787. var m = c(l.node, l.index, h),
  14788. n = c(l.node, l.index + h.length, h);
  14789. return (
  14790. g.setStart(m.node, m.index).setEnd(n.node, n.index),
  14791. void 0 !== d.replaceStr && e(g, d.replaceStr),
  14792. g.select(),
  14793. !0
  14794. );
  14795. }
  14796. g.setCursor();
  14797. }
  14798. function e(a, b) {
  14799. (b = f.document.createTextNode(b)), a.deleteContents().insertNode(b);
  14800. }
  14801. var f = this,
  14802. g = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 };
  14803. return {
  14804. commands: {
  14805. searchreplace: {
  14806. execCommand: function(a, b) {
  14807. utils.extend(b, { all: !1, casesensitive: !1, dir: 1 }, !0);
  14808. var c = 0;
  14809. if (b.all) {
  14810. var e = f.selection.getRange(),
  14811. g = f.body.firstChild;
  14812. for (
  14813. g && 1 == g.nodeType
  14814. ? (e.setStart(g, 0), e.shrinkBoundary(!0))
  14815. : 3 == g.nodeType && e.setStartBefore(g),
  14816. e.collapse(!0).select(!0),
  14817. void 0 !== b.replaceStr && f.fireEvent("saveScene");
  14818. d(this, b);
  14819. )
  14820. c++;
  14821. c && f.fireEvent("saveScene");
  14822. } else
  14823. void 0 !== b.replaceStr && f.fireEvent("saveScene"),
  14824. d(this, b) && c++,
  14825. c && f.fireEvent("saveScene");
  14826. return c;
  14827. },
  14828. notNeedUndo: 1,
  14829. },
  14830. },
  14831. };
  14832. }),
  14833. (UE.plugins.customstyle = function() {
  14834. var a = this;
  14835. a.setOpt({
  14836. customstyle: [
  14837. {
  14838. tag: "h1",
  14839. name: "tc",
  14840. style:
  14841. "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;",
  14842. },
  14843. {
  14844. tag: "h1",
  14845. name: "tl",
  14846. style:
  14847. "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;",
  14848. },
  14849. {
  14850. tag: "span",
  14851. name: "im",
  14852. style:
  14853. "font-size:16px;font-style:italic;font-weight:bold;line-height:18px;",
  14854. },
  14855. {
  14856. tag: "span",
  14857. name: "hi",
  14858. style:
  14859. "font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;",
  14860. },
  14861. ],
  14862. }),
  14863. (a.commands.customstyle = {
  14864. execCommand: function(a, b) {
  14865. var c,
  14866. d,
  14867. e = this,
  14868. f = b.tag,
  14869. g = domUtils.findParent(
  14870. e.selection.getStart(),
  14871. function(a) {
  14872. return a.getAttribute("label");
  14873. },
  14874. !0
  14875. ),
  14876. h = {};
  14877. for (var i in b) void 0 !== b[i] && (h[i] = b[i]);
  14878. if ((delete h.tag, g && g.getAttribute("label") == b.label)) {
  14879. if (
  14880. ((c = this.selection.getRange()),
  14881. (d = c.createBookmark()),
  14882. c.collapsed)
  14883. )
  14884. if (dtd.$block[g.tagName]) {
  14885. var j = e.document.createElement("p");
  14886. domUtils.moveChild(g, j),
  14887. g.parentNode.insertBefore(j, g),
  14888. domUtils.remove(g);
  14889. } else domUtils.remove(g, !0);
  14890. else {
  14891. var k = domUtils.getCommonAncestor(d.start, d.end),
  14892. l = domUtils.getElementsByTagName(k, f);
  14893. new RegExp(f, "i").test(k.tagName) && l.push(k);
  14894. for (var m, n = 0; (m = l[n++]); )
  14895. if (m.getAttribute("label") == b.label) {
  14896. var o = domUtils.getPosition(m, d.start),
  14897. p = domUtils.getPosition(m, d.end);
  14898. if (
  14899. (o & domUtils.POSITION_FOLLOWING ||
  14900. o & domUtils.POSITION_CONTAINS) &&
  14901. (p & domUtils.POSITION_PRECEDING ||
  14902. p & domUtils.POSITION_CONTAINS) &&
  14903. dtd.$block[f]
  14904. ) {
  14905. var j = e.document.createElement("p");
  14906. domUtils.moveChild(m, j), m.parentNode.insertBefore(j, m);
  14907. }
  14908. domUtils.remove(m, !0);
  14909. }
  14910. (g = domUtils.findParent(
  14911. k,
  14912. function(a) {
  14913. return a.getAttribute("label") == b.label;
  14914. },
  14915. !0
  14916. )),
  14917. g && domUtils.remove(g, !0);
  14918. }
  14919. c.moveToBookmark(d).select();
  14920. } else if (dtd.$block[f]) {
  14921. if (
  14922. (this.execCommand("paragraph", f, h, "customstyle"),
  14923. (c = e.selection.getRange()),
  14924. !c.collapsed)
  14925. ) {
  14926. c.collapse(),
  14927. (g = domUtils.findParent(
  14928. e.selection.getStart(),
  14929. function(a) {
  14930. return a.getAttribute("label") == b.label;
  14931. },
  14932. !0
  14933. ));
  14934. var q = e.document.createElement("p");
  14935. domUtils.insertAfter(g, q),
  14936. domUtils.fillNode(e.document, q),
  14937. c.setStart(q, 0).setCursor();
  14938. }
  14939. } else {
  14940. if (((c = e.selection.getRange()), c.collapsed))
  14941. return (
  14942. (g = e.document.createElement(f)),
  14943. domUtils.setAttributes(g, h),
  14944. void c
  14945. .insertNode(g)
  14946. .setStart(g, 0)
  14947. .setCursor()
  14948. );
  14949. (d = c.createBookmark()),
  14950. c
  14951. .applyInlineStyle(f, h)
  14952. .moveToBookmark(d)
  14953. .select();
  14954. }
  14955. },
  14956. queryCommandValue: function() {
  14957. var a = domUtils.filterNodeList(
  14958. this.selection.getStartElementPath(),
  14959. function(a) {
  14960. return a.getAttribute("label");
  14961. }
  14962. );
  14963. return a ? a.getAttribute("label") : "";
  14964. },
  14965. }),
  14966. a.addListener("keyup", function(b, c) {
  14967. var d = c.keyCode || c.which;
  14968. if (32 == d || 13 == d) {
  14969. var e = a.selection.getRange();
  14970. if (e.collapsed) {
  14971. var f = domUtils.findParent(
  14972. a.selection.getStart(),
  14973. function(a) {
  14974. return a.getAttribute("label");
  14975. },
  14976. !0
  14977. );
  14978. if (f && dtd.$block[f.tagName] && domUtils.isEmptyNode(f)) {
  14979. var g = a.document.createElement("p");
  14980. domUtils.insertAfter(f, g),
  14981. domUtils.fillNode(a.document, g),
  14982. domUtils.remove(f),
  14983. e.setStart(g, 0).setCursor();
  14984. }
  14985. }
  14986. }
  14987. });
  14988. }),
  14989. (UE.plugins.catchremoteimage = function() {
  14990. var me = this,
  14991. ajax = UE.ajax;
  14992. me.options.catchRemoteImageEnable !== !1 &&
  14993. (me.setOpt({ catchRemoteImageEnable: !1 }),
  14994. me.addListener("afterpaste", function() {
  14995. me.fireEvent("catchRemoteImage");
  14996. }),
  14997. me.addListener("catchRemoteImage", function() {
  14998. function catchremoteimage(a, b) {
  14999. var c =
  15000. utils.serializeParam(me.queryCommandValue("serverparam")) || "",
  15001. d = utils.formatUrl(
  15002. catcherActionUrl +
  15003. (catcherActionUrl.indexOf("?") == -1 ? "?" : "&") +
  15004. c
  15005. ),
  15006. e = utils.isCrossDomainUrl(d),
  15007. f = {
  15008. method: "POST",
  15009. dataType: e ? "jsonp" : "",
  15010. timeout: 6e4,
  15011. onsuccess: b.success,
  15012. onerror: b.error,
  15013. };
  15014. (f[catcherFieldName] = a), ajax.request(d, f);
  15015. }
  15016. for (
  15017. var catcherLocalDomain = me.getOpt("catcherLocalDomain"),
  15018. catcherActionUrl = me.getActionUrl(
  15019. me.getOpt("catcherActionName")
  15020. ),
  15021. catcherUrlPrefix = me.getOpt("catcherUrlPrefix"),
  15022. catcherFieldName = me.getOpt("catcherFieldName"),
  15023. remoteImages = [],
  15024. imgs = domUtils.getElementsByTagName(me.document, "img"),
  15025. test = function(a, b) {
  15026. if (a.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(a))
  15027. return !0;
  15028. if (b)
  15029. for (var c, d = 0; (c = b[d++]); )
  15030. if (a.indexOf(c) !== -1) return !0;
  15031. return !1;
  15032. },
  15033. i = 0,
  15034. ci;
  15035. (ci = imgs[i++]);
  15036. )
  15037. if (!ci.getAttribute("word_img")) {
  15038. var src = ci.getAttribute("_src") || ci.src || "";
  15039. /^(https?|ftp):/i.test(src) &&
  15040. !test(src, catcherLocalDomain) &&
  15041. remoteImages.push(src);
  15042. }
  15043. remoteImages.length &&
  15044. catchremoteimage(remoteImages, {
  15045. success: function(r) {
  15046. try {
  15047. var info =
  15048. void 0 !== r.state ? r : eval("(" + r.responseText + ")");
  15049. } catch (e) {
  15050. return;
  15051. }
  15052. var i,
  15053. j,
  15054. ci,
  15055. cj,
  15056. oldSrc,
  15057. newSrc,
  15058. list = info.list;
  15059. for (i = 0; (ci = imgs[i++]); )
  15060. for (
  15061. oldSrc = ci.getAttribute("_src") || ci.src || "", j = 0;
  15062. (cj = list[j++]);
  15063. )
  15064. if (oldSrc == cj.source && "SUCCESS" == cj.state) {
  15065. (newSrc = catcherUrlPrefix + cj.url),
  15066. domUtils.setAttributes(ci, {
  15067. src: newSrc,
  15068. _src: newSrc,
  15069. });
  15070. break;
  15071. }
  15072. me.fireEvent("catchremotesuccess");
  15073. },
  15074. error: function() {
  15075. me.fireEvent("catchremoteerror");
  15076. },
  15077. });
  15078. }));
  15079. }),
  15080. UE.plugin.register("snapscreen", function() {
  15081. function getLocation(a) {
  15082. var b,
  15083. c = document.createElement("a"),
  15084. d = utils.serializeParam(me.queryCommandValue("serverparam")) || "";
  15085. return (
  15086. (c.href = a),
  15087. browser.ie && (c.href = c.href),
  15088. (b = c.search),
  15089. d &&
  15090. ((b = b + (b.indexOf("?") == -1 ? "?" : "&") + d),
  15091. (b = b.replace(/[&]+/gi, "&"))),
  15092. {
  15093. port: c.port,
  15094. hostname: c.hostname,
  15095. path: c.pathname + b || +c.hash,
  15096. }
  15097. );
  15098. }
  15099. var me = this,
  15100. snapplugin;
  15101. return {
  15102. commands: {
  15103. snapscreen: {
  15104. execCommand: function(cmd) {
  15105. function onSuccess(rs) {
  15106. try {
  15107. if (((rs = eval("(" + rs + ")")), "SUCCESS" == rs.state)) {
  15108. var opt = me.options;
  15109. me.execCommand("insertimage", {
  15110. src: opt.snapscreenUrlPrefix + rs.url,
  15111. _src: opt.snapscreenUrlPrefix + rs.url,
  15112. alt: rs.title || "",
  15113. floatStyle: opt.snapscreenImgAlign,
  15114. });
  15115. } else alert(rs.state);
  15116. } catch (e) {
  15117. alert(lang.callBackErrorMsg);
  15118. }
  15119. }
  15120. var url,
  15121. local,
  15122. res,
  15123. lang = me.getLang("snapScreen_plugin");
  15124. if (!snapplugin) {
  15125. var container = me.container,
  15126. doc = me.container.ownerDocument || me.container.document;
  15127. snapplugin = doc.createElement("object");
  15128. try {
  15129. snapplugin.type = "application/x-pluginbaidusnap";
  15130. } catch (e) {
  15131. return;
  15132. }
  15133. (snapplugin.style.cssText =
  15134. "position:absolute;left:-9999px;width:0;height:0;"),
  15135. snapplugin.setAttribute("width", "0"),
  15136. snapplugin.setAttribute("height", "0"),
  15137. container.appendChild(snapplugin);
  15138. }
  15139. (url = me.getActionUrl(me.getOpt("snapscreenActionName"))),
  15140. (local = getLocation(url)),
  15141. setTimeout(function() {
  15142. try {
  15143. res = snapplugin.saveSnapshot(
  15144. local.hostname,
  15145. local.path,
  15146. local.port
  15147. );
  15148. } catch (a) {
  15149. return void me.ui._dialogs.snapscreenDialog.open();
  15150. }
  15151. onSuccess(res);
  15152. }, 50);
  15153. },
  15154. queryCommandState: function() {
  15155. return navigator.userAgent.indexOf("Windows", 0) != -1 ? 0 : -1;
  15156. },
  15157. },
  15158. },
  15159. };
  15160. }),
  15161. (UE.commands.insertparagraph = {
  15162. execCommand: function(a, b) {
  15163. for (
  15164. var c, d = this, e = d.selection.getRange(), f = e.startContainer;
  15165. f && !domUtils.isBody(f);
  15166. )
  15167. (c = f), (f = f.parentNode);
  15168. if (c) {
  15169. var g = d.document.createElement("p");
  15170. b
  15171. ? c.parentNode.insertBefore(g, c)
  15172. : c.parentNode.insertBefore(g, c.nextSibling),
  15173. domUtils.fillNode(d.document, g),
  15174. e.setStart(g, 0).setCursor(!1, !0);
  15175. }
  15176. },
  15177. }),
  15178. UE.plugin.register("webapp", function() {
  15179. function a(a, c) {
  15180. return c
  15181. ? '<iframe class="edui-faked-webapp" title="' +
  15182. a.title +
  15183. '" ' +
  15184. (a.align && !a.cssfloat ? 'align="' + a.align + '"' : "") +
  15185. (a.cssfloat ? 'style="float:' + a.cssfloat + '"' : "") +
  15186. 'width="' +
  15187. a.width +
  15188. '" height="' +
  15189. a.height +
  15190. '" scrolling="no" frameborder="0" src="' +
  15191. a.url +
  15192. '" logo_url = "' +
  15193. a.logo +
  15194. '"></iframe>'
  15195. : '<img title="' +
  15196. a.title +
  15197. '" width="' +
  15198. a.width +
  15199. '" height="' +
  15200. a.height +
  15201. '" src="' +
  15202. b.options.UEDITOR_HOME_URL +
  15203. 'themes/default/images/spacer.gif" _logo_url="' +
  15204. a.logo +
  15205. '" style="background:url(' +
  15206. a.logo +
  15207. ') no-repeat center center; border:1px solid gray;" class="edui-faked-webapp" _url="' +
  15208. a.url +
  15209. '" ' +
  15210. (a.align && !a.cssfloat ? 'align="' + a.align + '"' : "") +
  15211. (a.cssfloat ? 'style="float:' + a.cssfloat + '"' : "") +
  15212. "/>";
  15213. }
  15214. var b = this;
  15215. return {
  15216. outputRule: function(b) {
  15217. utils.each(b.getNodesByTagName("img"), function(b) {
  15218. var c;
  15219. if ("edui-faked-webapp" == b.getAttr("class")) {
  15220. c = a(
  15221. {
  15222. title: b.getAttr("title"),
  15223. width: b.getAttr("width"),
  15224. height: b.getAttr("height"),
  15225. align: b.getAttr("align"),
  15226. cssfloat: b.getStyle("float"),
  15227. url: b.getAttr("_url"),
  15228. logo: b.getAttr("_logo_url"),
  15229. },
  15230. !0
  15231. );
  15232. var d = UE.uNode.createElement(c);
  15233. b.parentNode.replaceChild(d, b);
  15234. }
  15235. });
  15236. },
  15237. inputRule: function(b) {
  15238. utils.each(b.getNodesByTagName("iframe"), function(b) {
  15239. if ("edui-faked-webapp" == b.getAttr("class")) {
  15240. var c = UE.uNode.createElement(
  15241. a({
  15242. title: b.getAttr("title"),
  15243. width: b.getAttr("width"),
  15244. height: b.getAttr("height"),
  15245. align: b.getAttr("align"),
  15246. cssfloat: b.getStyle("float"),
  15247. url: b.getAttr("src"),
  15248. logo: b.getAttr("logo_url"),
  15249. })
  15250. );
  15251. b.parentNode.replaceChild(c, b);
  15252. }
  15253. });
  15254. },
  15255. commands: {
  15256. webapp: {
  15257. execCommand: function(b, c) {
  15258. var d = this,
  15259. e = a(utils.extend(c, { align: "none" }), !1);
  15260. d.execCommand("inserthtml", e);
  15261. },
  15262. queryCommandState: function() {
  15263. var a = this,
  15264. b = a.selection.getRange().getClosedNode(),
  15265. c = b && "edui-faked-webapp" == b.className;
  15266. return c ? 1 : 0;
  15267. },
  15268. },
  15269. },
  15270. };
  15271. }),
  15272. (UE.plugins.template = function() {
  15273. (UE.commands.template = {
  15274. execCommand: function(a, b) {
  15275. b.html && this.execCommand("inserthtml", b.html);
  15276. },
  15277. }),
  15278. this.addListener("click", function(a, b) {
  15279. var c = b.target || b.srcElement,
  15280. d = this.selection.getRange(),
  15281. e = domUtils.findParent(
  15282. c,
  15283. function(a) {
  15284. if (a.className && domUtils.hasClass(a, "ue_t")) return a;
  15285. },
  15286. !0
  15287. );
  15288. e &&
  15289. d
  15290. .selectNode(e)
  15291. .shrinkBoundary()
  15292. .select();
  15293. }),
  15294. this.addListener("keydown", function(a, b) {
  15295. var c = this.selection.getRange();
  15296. if (
  15297. !c.collapsed &&
  15298. !(b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)
  15299. ) {
  15300. var d = domUtils.findParent(
  15301. c.startContainer,
  15302. function(a) {
  15303. if (a.className && domUtils.hasClass(a, "ue_t")) return a;
  15304. },
  15305. !0
  15306. );
  15307. d && domUtils.removeClasses(d, ["ue_t"]);
  15308. }
  15309. });
  15310. }),
  15311. UE.plugin.register("music", function() {
  15312. function a(a, c, d, e, f, g) {
  15313. return g
  15314. ? '<embed type="application/x-shockwave-flash" class="edui-faked-music" pluginspage="http://www.macromedia.com/go/getflashplayer" src="' +
  15315. a +
  15316. '" width="' +
  15317. c +
  15318. '" height="' +
  15319. d +
  15320. '" ' +
  15321. (e && !f ? 'align="' + e + '"' : "") +
  15322. (f ? 'style="float:' + f + '"' : "") +
  15323. ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >'
  15324. : "<img " +
  15325. (e && !f ? 'align="' + e + '"' : "") +
  15326. (f ? 'style="float:' + f + '"' : "") +
  15327. ' width="' +
  15328. c +
  15329. '" height="' +
  15330. d +
  15331. '" _url="' +
  15332. a +
  15333. '" class="edui-faked-music" src="' +
  15334. b.options.langPath +
  15335. b.options.lang +
  15336. '/images/music.png" />';
  15337. }
  15338. var b = this;
  15339. return {
  15340. outputRule: function(b) {
  15341. utils.each(b.getNodesByTagName("img"), function(b) {
  15342. var c;
  15343. if ("edui-faked-music" == b.getAttr("class")) {
  15344. var d = b.getStyle("float"),
  15345. e = b.getAttr("align");
  15346. c = a(
  15347. b.getAttr("_url"),
  15348. b.getAttr("width"),
  15349. b.getAttr("height"),
  15350. e,
  15351. d,
  15352. !0
  15353. );
  15354. var f = UE.uNode.createElement(c);
  15355. b.parentNode.replaceChild(f, b);
  15356. }
  15357. });
  15358. },
  15359. inputRule: function(b) {
  15360. utils.each(b.getNodesByTagName("embed"), function(b) {
  15361. if ("edui-faked-music" == b.getAttr("class")) {
  15362. var c = b.getStyle("float"),
  15363. d = b.getAttr("align");
  15364. html = a(
  15365. b.getAttr("src"),
  15366. b.getAttr("width"),
  15367. b.getAttr("height"),
  15368. d,
  15369. c,
  15370. !1
  15371. );
  15372. var e = UE.uNode.createElement(html);
  15373. b.parentNode.replaceChild(e, b);
  15374. }
  15375. });
  15376. },
  15377. commands: {
  15378. music: {
  15379. execCommand: function(b, c) {
  15380. var d = this,
  15381. e = a(c.url, c.width || 400, c.height || 95, "none", !1);
  15382. d.execCommand("inserthtml", e);
  15383. },
  15384. queryCommandState: function() {
  15385. var a = this,
  15386. b = a.selection.getRange().getClosedNode(),
  15387. c = b && "edui-faked-music" == b.className;
  15388. return c ? 1 : 0;
  15389. },
  15390. },
  15391. },
  15392. };
  15393. }),
  15394. UE.plugin.register("autoupload", function() {
  15395. function a(a, b) {
  15396. var c,
  15397. d,
  15398. e,
  15399. f,
  15400. g,
  15401. h,
  15402. i,
  15403. j,
  15404. k = b,
  15405. l = /image\/\w+/i.test(a.type) ? "image" : "file",
  15406. m = "loading_" + (+new Date()).toString(36);
  15407. if (
  15408. ((c = k.getOpt(l + "FieldName")),
  15409. (d = k.getOpt(l + "UrlPrefix")),
  15410. (e = k.getOpt(l + "MaxSize")),
  15411. (f = k.getOpt(l + "AllowFiles")),
  15412. (g = k.getActionUrl(k.getOpt(l + "ActionName"))),
  15413. (i = function(a) {
  15414. var b = k.document.getElementById(m);
  15415. b && domUtils.remove(b),
  15416. k.fireEvent("showmessage", {
  15417. id: m,
  15418. content: a,
  15419. type: "error",
  15420. timeout: 4e3,
  15421. });
  15422. }),
  15423. "image" == l
  15424. ? ((h =
  15425. '<img class="loadingclass" id="' +
  15426. m +
  15427. '" src="' +
  15428. k.options.themePath +
  15429. k.options.theme +
  15430. '/images/spacer.gif" title="' +
  15431. (k.getLang("autoupload.loading") || "") +
  15432. '" >'),
  15433. (j = function(a) {
  15434. var b = d + a.url,
  15435. c = k.document.getElementById(m);
  15436. c &&
  15437. (c.setAttribute("src", b),
  15438. c.setAttribute("_src", b),
  15439. c.setAttribute("title", a.title || ""),
  15440. c.setAttribute("alt", a.original || ""),
  15441. c.removeAttribute("id"),
  15442. domUtils.removeClasses(c, "loadingclass"));
  15443. }))
  15444. : ((h =
  15445. '<p><img class="loadingclass" id="' +
  15446. m +
  15447. '" src="' +
  15448. k.options.themePath +
  15449. k.options.theme +
  15450. '/images/spacer.gif" title="' +
  15451. (k.getLang("autoupload.loading") || "") +
  15452. '" ></p>'),
  15453. (j = function(a) {
  15454. var b = d + a.url,
  15455. c = k.document.getElementById(m),
  15456. e = k.selection.getRange(),
  15457. f = e.createBookmark();
  15458. e.selectNode(c).select(),
  15459. k.execCommand("insertfile", { url: b }),
  15460. e.moveToBookmark(f).select();
  15461. })),
  15462. k.execCommand("inserthtml", h),
  15463. !k.getOpt(l + "ActionName"))
  15464. )
  15465. return void i(k.getLang("autoupload.errorLoadConfig"));
  15466. if (a.size > e) return void i(k.getLang("autoupload.exceedSizeError"));
  15467. var n = a.name ? a.name.substr(a.name.lastIndexOf(".")) : "";
  15468. if (
  15469. (n && "image" != l) ||
  15470. (f && (f.join("") + ".").indexOf(n.toLowerCase() + ".") == -1)
  15471. )
  15472. return void i(k.getLang("autoupload.exceedTypeError"));
  15473. var o = new XMLHttpRequest(),
  15474. p = new FormData(),
  15475. q = utils.serializeParam(k.queryCommandValue("serverparam")) || "",
  15476. r = utils.formatUrl(g + (g.indexOf("?") == -1 ? "?" : "&") + q);
  15477. p.append(c, a, a.name || "blob." + a.type.substr("image/".length)),
  15478. p.append("type", "ajax"),
  15479. o.open("post", r, !0),
  15480. o.setRequestHeader("X-Requested-With", "XMLHttpRequest"),
  15481. o.addEventListener("load", function(a) {
  15482. try {
  15483. var b = new Function("return " + utils.trim(a.target.response))();
  15484. "SUCCESS" == b.state && b.url ? j(b) : i(b.state);
  15485. } catch (c) {
  15486. i(k.getLang("autoupload.loadError"));
  15487. }
  15488. }),
  15489. o.send(p);
  15490. }
  15491. function b(a) {
  15492. return a.clipboardData &&
  15493. a.clipboardData.items &&
  15494. 1 == a.clipboardData.items.length &&
  15495. /^image\//.test(a.clipboardData.items[0].type)
  15496. ? a.clipboardData.items
  15497. : null;
  15498. }
  15499. function c(a) {
  15500. return a.dataTransfer && a.dataTransfer.files
  15501. ? a.dataTransfer.files
  15502. : null;
  15503. }
  15504. return {
  15505. outputRule: function(a) {
  15506. utils.each(a.getNodesByTagName("img"), function(a) {
  15507. /\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class")) &&
  15508. a.parentNode.removeChild(a);
  15509. }),
  15510. utils.each(a.getNodesByTagName("p"), function(a) {
  15511. /\bloadpara\b/.test(a.getAttr("class")) &&
  15512. a.parentNode.removeChild(a);
  15513. });
  15514. },
  15515. bindEvents: {
  15516. ready: function(d) {
  15517. var e = this;
  15518. window.FormData &&
  15519. window.FileReader &&
  15520. (domUtils.on(e.body, "paste drop", function(d) {
  15521. var f,
  15522. g = !1;
  15523. if ((f = "paste" == d.type ? b(d) : c(d))) {
  15524. for (var h, i = f.length; i--; )
  15525. (h = f[i]),
  15526. h.getAsFile && (h = h.getAsFile()),
  15527. h && h.size > 0 && (a(h, e), (g = !0));
  15528. g && d.preventDefault();
  15529. }
  15530. }),
  15531. domUtils.on(e.body, "dragover", function(a) {
  15532. "Files" == a.dataTransfer.types[0] && a.preventDefault();
  15533. }),
  15534. utils.cssRule(
  15535. "loading",
  15536. ".loadingclass{display:inline-block;cursor:default;background: url('" +
  15537. this.options.themePath +
  15538. this.options.theme +
  15539. "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('" +
  15540. this.options.themePath +
  15541. this.options.theme +
  15542. "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",
  15543. this.document
  15544. ));
  15545. },
  15546. },
  15547. };
  15548. }),
  15549. UE.plugin.register("autosave", function() {
  15550. function a(a) {
  15551. var f;
  15552. if (!(new Date() - c < d)) {
  15553. if (!a.hasContents()) return void (e && b.removePreferences(e));
  15554. (c = new Date()),
  15555. (a._saveFlag = null),
  15556. (f = b.body.innerHTML),
  15557. a.fireEvent("beforeautosave", { content: f }) !== !1 &&
  15558. (b.setPreferences(e, f),
  15559. a.fireEvent("afterautosave", { content: f }));
  15560. }
  15561. }
  15562. var b = this,
  15563. c = new Date(),
  15564. d = 20,
  15565. e = null;
  15566. return {
  15567. defaultOptions: { saveInterval: 500 },
  15568. bindEvents: {
  15569. ready: function() {
  15570. var a = "-drafts-data",
  15571. c = null;
  15572. (c = b.key
  15573. ? b.key + a
  15574. : (b.container.parentNode.id || "ue-common") + a),
  15575. (e =
  15576. (location.protocol + location.host + location.pathname).replace(
  15577. /[.:\/]/g,
  15578. "_"
  15579. ) + c);
  15580. },
  15581. contentchange: function() {
  15582. e &&
  15583. (b._saveFlag && window.clearTimeout(b._saveFlag),
  15584. b.options.saveInterval > 0
  15585. ? (b._saveFlag = window.setTimeout(function() {
  15586. a(b);
  15587. }, b.options.saveInterval))
  15588. : a(b));
  15589. },
  15590. },
  15591. commands: {
  15592. clearlocaldata: {
  15593. execCommand: function(a, c) {
  15594. e && b.getPreferences(e) && b.removePreferences(e);
  15595. },
  15596. notNeedUndo: !0,
  15597. ignoreContentChange: !0,
  15598. },
  15599. getlocaldata: {
  15600. execCommand: function(a, c) {
  15601. return e ? b.getPreferences(e) || "" : "";
  15602. },
  15603. notNeedUndo: !0,
  15604. ignoreContentChange: !0,
  15605. },
  15606. drafts: {
  15607. execCommand: function(a, c) {
  15608. e &&
  15609. ((b.body.innerHTML =
  15610. b.getPreferences(e) || "<p>" + domUtils.fillHtml + "</p>"),
  15611. b.focus(!0));
  15612. },
  15613. queryCommandState: function() {
  15614. return e ? (null === b.getPreferences(e) ? -1 : 0) : -1;
  15615. },
  15616. notNeedUndo: !0,
  15617. ignoreContentChange: !0,
  15618. },
  15619. },
  15620. };
  15621. }),
  15622. UE.plugin.register("charts", function() {
  15623. function a(a) {
  15624. var b = null,
  15625. c = 0;
  15626. if (a.rows.length < 2) return !1;
  15627. if (a.rows[0].cells.length < 2) return !1;
  15628. (b = a.rows[0].cells), (c = b.length);
  15629. for (var d, e = 0; (d = b[e]); e++)
  15630. if ("th" !== d.tagName.toLowerCase()) return !1;
  15631. for (var f, e = 1; (f = a.rows[e]); e++) {
  15632. if (f.cells.length != c) return !1;
  15633. if ("th" !== f.cells[0].tagName.toLowerCase()) return !1;
  15634. for (var d, g = 1; (d = f.cells[g]); g++) {
  15635. var h = utils.trim(d.innerText || d.textContent || "");
  15636. if (
  15637. ((h = h
  15638. .replace(new RegExp(UE.dom.domUtils.fillChar, "g"), "")
  15639. .replace(/^\s+|\s+$/g, "")),
  15640. !/^\d*\.?\d+$/.test(h))
  15641. )
  15642. return !1;
  15643. }
  15644. }
  15645. return !0;
  15646. }
  15647. var b = this;
  15648. return {
  15649. bindEvents: { chartserror: function() {} },
  15650. commands: {
  15651. charts: {
  15652. execCommand: function(c, d) {
  15653. var e = domUtils.findParentByTagName(
  15654. this.selection.getRange().startContainer,
  15655. "table",
  15656. !0
  15657. ),
  15658. f = [],
  15659. g = {};
  15660. if (!e) return !1;
  15661. if (!a(e)) return b.fireEvent("chartserror"), !1;
  15662. (g.title = d.title || ""),
  15663. (g.subTitle = d.subTitle || ""),
  15664. (g.xTitle = d.xTitle || ""),
  15665. (g.yTitle = d.yTitle || ""),
  15666. (g.suffix = d.suffix || ""),
  15667. (g.tip = d.tip || ""),
  15668. (g.dataFormat = d.tableDataFormat || ""),
  15669. (g.chartType = d.chartType || 0);
  15670. for (var h in g) g.hasOwnProperty(h) && f.push(h + ":" + g[h]);
  15671. e.setAttribute("data-chart", f.join(";")),
  15672. domUtils.addClass(e, "edui-charts-table");
  15673. },
  15674. queryCommandState: function(b, c) {
  15675. var d = domUtils.findParentByTagName(
  15676. this.selection.getRange().startContainer,
  15677. "table",
  15678. !0
  15679. );
  15680. return d && a(d) ? 0 : -1;
  15681. },
  15682. },
  15683. },
  15684. inputRule: function(a) {
  15685. utils.each(a.getNodesByTagName("table"), function(a) {
  15686. void 0 !== a.getAttr("data-chart") && a.setAttr("style");
  15687. });
  15688. },
  15689. outputRule: function(a) {
  15690. utils.each(a.getNodesByTagName("table"), function(a) {
  15691. void 0 !== a.getAttr("data-chart") &&
  15692. a.setAttr("style", "display: none;");
  15693. });
  15694. },
  15695. };
  15696. }),
  15697. UE.plugin.register("section", function() {
  15698. function a(a) {
  15699. (this.tag = ""),
  15700. (this.level = -1),
  15701. (this.dom = null),
  15702. (this.nextSection = null),
  15703. (this.previousSection = null),
  15704. (this.parentSection = null),
  15705. (this.startAddress = []),
  15706. (this.endAddress = []),
  15707. (this.children = []);
  15708. }
  15709. function b(b) {
  15710. var c = new a();
  15711. return utils.extend(c, b);
  15712. }
  15713. function c(a, b) {
  15714. for (var c = b, d = 0; d < a.length; d++) {
  15715. if (!c.childNodes) return null;
  15716. c = c.childNodes[a[d]];
  15717. }
  15718. return c;
  15719. }
  15720. var d = this;
  15721. return {
  15722. bindMultiEvents: {
  15723. type: "aftersetcontent afterscencerestore",
  15724. handler: function() {
  15725. d.fireEvent("updateSections");
  15726. },
  15727. },
  15728. bindEvents: {
  15729. ready: function() {
  15730. d.fireEvent("updateSections"),
  15731. domUtils.on(d.body, "drop paste", function() {
  15732. d.fireEvent("updateSections");
  15733. });
  15734. },
  15735. afterexeccommand: function(a, b) {
  15736. "paragraph" == b && d.fireEvent("updateSections");
  15737. },
  15738. keyup: function(a, b) {
  15739. var c = this,
  15740. d = c.selection.getRange();
  15741. if (1 != d.collapsed) c.fireEvent("updateSections");
  15742. else {
  15743. var e = b.keyCode || b.which;
  15744. (13 != e && 8 != e && 46 != e) || c.fireEvent("updateSections");
  15745. }
  15746. },
  15747. },
  15748. commands: {
  15749. getsections: {
  15750. execCommand: function(a, c) {
  15751. function d(a) {
  15752. for (var b = 0; b < f.length; b++) if (f[b](a)) return b;
  15753. return -1;
  15754. }
  15755. function e(a, c) {
  15756. for (
  15757. var f, g, i, k = null, l = a.childNodes, m = 0, n = l.length;
  15758. m < n;
  15759. m++
  15760. )
  15761. if (((i = l[m]), (f = d(i)), f >= 0)) {
  15762. var o = h.selection
  15763. .getRange()
  15764. .selectNode(i)
  15765. .createAddress(!0).startAddress,
  15766. p = b({
  15767. tag: i.tagName,
  15768. title: i.innerText || i.textContent || "",
  15769. level: f,
  15770. dom: i,
  15771. startAddress: utils.clone(o, []),
  15772. endAddress: utils.clone(o, []),
  15773. children: [],
  15774. });
  15775. for (
  15776. j.nextSection = p, p.previousSection = j, g = j;
  15777. f <= g.level;
  15778. )
  15779. g = g.parentSection;
  15780. (p.parentSection = g), g.children.push(p), (k = j = p);
  15781. } else
  15782. 1 === i.nodeType && e(i, c),
  15783. k && k.endAddress[k.endAddress.length - 1]++;
  15784. }
  15785. for (
  15786. var f = c || ["h1", "h2", "h3", "h4", "h5", "h6"], g = 0;
  15787. g < f.length;
  15788. g++
  15789. )
  15790. "string" == typeof f[g]
  15791. ? (f[g] = (function(a) {
  15792. return function(b) {
  15793. return b.tagName == a.toUpperCase();
  15794. };
  15795. })(f[g]))
  15796. : "function" != typeof f[g] &&
  15797. (f[g] = function(a) {
  15798. return null;
  15799. });
  15800. var h = this,
  15801. i = b({ level: -1, title: "root" }),
  15802. j = i;
  15803. return e(h.body, i), i;
  15804. },
  15805. notNeedUndo: !0,
  15806. },
  15807. movesection: {
  15808. execCommand: function(a, b, d, e) {
  15809. function f(a, b, c) {
  15810. for (
  15811. var d = !1, e = !1, f = 0;
  15812. f < a.length && !(f >= c.length);
  15813. f++
  15814. ) {
  15815. if (c[f] > a[f]) {
  15816. d = !0;
  15817. break;
  15818. }
  15819. if (c[f] < a[f]) break;
  15820. }
  15821. for (var f = 0; f < b.length && !(f >= c.length); f++) {
  15822. if (c[f] < a[f]) {
  15823. e = !0;
  15824. break;
  15825. }
  15826. if (c[f] > a[f]) break;
  15827. }
  15828. return d && e;
  15829. }
  15830. var g,
  15831. h,
  15832. i = this;
  15833. if (
  15834. b &&
  15835. d &&
  15836. d.level != -1 &&
  15837. ((g = e ? d.endAddress : d.startAddress),
  15838. (h = c(g, i.body)),
  15839. g && h && !f(b.startAddress, b.endAddress, g))
  15840. ) {
  15841. var j,
  15842. k,
  15843. l = c(b.startAddress, i.body),
  15844. m = c(b.endAddress, i.body);
  15845. if (e)
  15846. for (
  15847. j = m;
  15848. j &&
  15849. !(
  15850. domUtils.getPosition(l, j) & domUtils.POSITION_FOLLOWING
  15851. ) &&
  15852. ((k = j.previousSibling),
  15853. domUtils.insertAfter(h, j),
  15854. j != l);
  15855. )
  15856. j = k;
  15857. else
  15858. for (
  15859. j = l;
  15860. j &&
  15861. !(
  15862. domUtils.getPosition(j, m) & domUtils.POSITION_FOLLOWING
  15863. ) &&
  15864. ((k = j.nextSibling),
  15865. h.parentNode.insertBefore(j, h),
  15866. j != m);
  15867. )
  15868. j = k;
  15869. i.fireEvent("updateSections");
  15870. }
  15871. },
  15872. },
  15873. deletesection: {
  15874. execCommand: function(a, b, c) {
  15875. function d(a) {
  15876. for (var b = e.body, c = 0; c < a.length; c++) {
  15877. if (!b.childNodes) return null;
  15878. b = b.childNodes[a[c]];
  15879. }
  15880. return b;
  15881. }
  15882. var e = this;
  15883. if (b) {
  15884. var f,
  15885. g = d(b.startAddress),
  15886. h = d(b.endAddress),
  15887. i = g;
  15888. if (c) domUtils.remove(i);
  15889. else
  15890. for (
  15891. ;
  15892. i &&
  15893. domUtils.inDoc(h, e.document) &&
  15894. !(domUtils.getPosition(i, h) & domUtils.POSITION_FOLLOWING);
  15895. )
  15896. (f = i.nextSibling), domUtils.remove(i), (i = f);
  15897. e.fireEvent("updateSections");
  15898. }
  15899. },
  15900. },
  15901. selectsection: {
  15902. execCommand: function(a, b) {
  15903. if (!b && !b.dom) return !1;
  15904. var c = this,
  15905. d = c.selection.getRange(),
  15906. e = {
  15907. startAddress: utils.clone(b.startAddress, []),
  15908. endAddress: utils.clone(b.endAddress, []),
  15909. };
  15910. return (
  15911. e.endAddress[e.endAddress.length - 1]++,
  15912. d
  15913. .moveToAddress(e)
  15914. .select()
  15915. .scrollToView(),
  15916. !0
  15917. );
  15918. },
  15919. notNeedUndo: !0,
  15920. },
  15921. scrolltosection: {
  15922. execCommand: function(a, b) {
  15923. if (!b && !b.dom) return !1;
  15924. var c = this,
  15925. d = c.selection.getRange(),
  15926. e = { startAddress: b.startAddress, endAddress: b.endAddress };
  15927. return (
  15928. e.endAddress[e.endAddress.length - 1]++,
  15929. d.moveToAddress(e).scrollToView(),
  15930. !0
  15931. );
  15932. },
  15933. notNeedUndo: !0,
  15934. },
  15935. },
  15936. };
  15937. }),
  15938. UE.plugin.register("simpleupload", function() {
  15939. function a() {
  15940. var a = b.offsetWidth || 20,
  15941. e = b.offsetHeight || 20,
  15942. f = document.createElement("iframe"),
  15943. g =
  15944. "display:block;width:" +
  15945. a +
  15946. "px;height:" +
  15947. e +
  15948. "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;";
  15949. domUtils.on(f, "load", function() {
  15950. var b,
  15951. h,
  15952. i,
  15953. j = (+new Date()).toString(36);
  15954. (h = f.contentDocument || f.contentWindow.document),
  15955. (i = h.body),
  15956. (b = h.createElement("div")),
  15957. (b.innerHTML =
  15958. '<form id="edui_form_' +
  15959. j +
  15960. '" target="edui_iframe_' +
  15961. j +
  15962. '" method="POST" enctype="multipart/form-data" action="' +
  15963. c.getOpt("serverUrl") +
  15964. '" style="' +
  15965. g +
  15966. '"><input id="edui_input_' +
  15967. j +
  15968. '" type="file" accept="image/*" name="' +
  15969. c.options.imageFieldName +
  15970. '" style="' +
  15971. g +
  15972. '"></form><iframe id="edui_iframe_' +
  15973. j +
  15974. '" name="edui_iframe_' +
  15975. j +
  15976. '" style="display:none;width:0;height:0;border:0;margin:0;padding:0;position:absolute;"></iframe>'),
  15977. (b.className = "edui-" + c.options.theme),
  15978. (b.id = c.ui.id + "_iframeupload"),
  15979. (i.style.cssText = g),
  15980. (i.style.width = a + "px"),
  15981. (i.style.height = e + "px"),
  15982. i.appendChild(b),
  15983. i.parentNode &&
  15984. ((i.parentNode.style.width = a + "px"),
  15985. (i.parentNode.style.height = a + "px"));
  15986. var k = h.getElementById("edui_form_" + j),
  15987. l = h.getElementById("edui_input_" + j),
  15988. m = h.getElementById("edui_iframe_" + j);
  15989. domUtils.on(l, "change", function() {
  15990. function a() {
  15991. try {
  15992. var e,
  15993. f,
  15994. g,
  15995. h = (m.contentDocument || m.contentWindow.document).body,
  15996. i = h.innerText || h.textContent || "";
  15997. (f = new Function("return " + i)()),
  15998. (e = c.options.imageUrlPrefix + f.url),
  15999. "SUCCESS" == f.state && f.url
  16000. ? ((g = c.document.getElementById(d)),
  16001. g.setAttribute("src", e),
  16002. g.setAttribute("_src", e),
  16003. g.setAttribute("title", f.title || ""),
  16004. g.setAttribute("alt", f.original || ""),
  16005. g.removeAttribute("id"),
  16006. domUtils.removeClasses(g, "loadingclass"))
  16007. : b && b(f.state);
  16008. } catch (j) {
  16009. b && b(c.getLang("simpleupload.loadError"));
  16010. }
  16011. k.reset(), domUtils.un(m, "load", a);
  16012. }
  16013. function b(a) {
  16014. if (d) {
  16015. var b = c.document.getElementById(d);
  16016. b && domUtils.remove(b),
  16017. c.fireEvent("showmessage", {
  16018. id: d,
  16019. content: a,
  16020. type: "error",
  16021. timeout: 4e3,
  16022. });
  16023. }
  16024. }
  16025. if (l.value) {
  16026. var d = "loading_" + (+new Date()).toString(36),
  16027. e =
  16028. utils.serializeParam(c.queryCommandValue("serverparam")) ||
  16029. "",
  16030. f = c.getActionUrl(c.getOpt("imageActionName")),
  16031. g = c.getOpt("imageAllowFiles");
  16032. if (
  16033. (c.focus(),
  16034. c.execCommand(
  16035. "inserthtml",
  16036. '<img class="loadingclass" id="' +
  16037. d +
  16038. '" src="' +
  16039. c.options.themePath +
  16040. c.options.theme +
  16041. '/images/spacer.gif" title="' +
  16042. (c.getLang("simpleupload.loading") || "") +
  16043. '" >'
  16044. ),
  16045. !c.getOpt("imageActionName"))
  16046. )
  16047. return void errorHandler(
  16048. c.getLang("autoupload.errorLoadConfig")
  16049. );
  16050. var h = l.value,
  16051. i = h ? h.substr(h.lastIndexOf(".")) : "";
  16052. if (
  16053. !i ||
  16054. (g && (g.join("") + ".").indexOf(i.toLowerCase() + ".") == -1)
  16055. )
  16056. return void b(c.getLang("simpleupload.exceedTypeError"));
  16057. domUtils.on(m, "load", a),
  16058. (k.action = utils.formatUrl(
  16059. f + (f.indexOf("?") == -1 ? "?" : "&") + e
  16060. )),
  16061. k.submit();
  16062. }
  16063. });
  16064. var n;
  16065. c.addListener("selectionchange", function() {
  16066. clearTimeout(n),
  16067. (n = setTimeout(function() {
  16068. var a = c.queryCommandState("simpleupload");
  16069. a == -1 ? (l.disabled = "disabled") : (l.disabled = !1);
  16070. }, 400));
  16071. }),
  16072. (d = !0);
  16073. }),
  16074. (f.style.cssText = g),
  16075. b.appendChild(f);
  16076. }
  16077. var b,
  16078. c = this,
  16079. d = !1;
  16080. return {
  16081. bindEvents: {
  16082. ready: function() {
  16083. utils.cssRule(
  16084. "loading",
  16085. ".loadingclass{display:inline-block;cursor:default;background: url('" +
  16086. this.options.themePath +
  16087. this.options.theme +
  16088. "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('" +
  16089. this.options.themePath +
  16090. this.options.theme +
  16091. "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",
  16092. this.document
  16093. );
  16094. },
  16095. simpleuploadbtnready: function(d, e) {
  16096. (b = e), c.afterConfigReady(a);
  16097. },
  16098. },
  16099. outputRule: function(a) {
  16100. utils.each(a.getNodesByTagName("img"), function(a) {
  16101. /\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class")) &&
  16102. a.parentNode.removeChild(a);
  16103. });
  16104. },
  16105. commands: {
  16106. simpleupload: {
  16107. queryCommandState: function() {
  16108. return d ? 0 : -1;
  16109. },
  16110. },
  16111. },
  16112. };
  16113. }),
  16114. UE.plugin.register("serverparam", function() {
  16115. var a = {};
  16116. return {
  16117. commands: {
  16118. serverparam: {
  16119. execCommand: function(b, c, d) {
  16120. void 0 === c || null === c
  16121. ? (a = {})
  16122. : utils.isString(c)
  16123. ? void 0 === d || null === d
  16124. ? delete a[c]
  16125. : (a[c] = d)
  16126. : utils.isObject(c)
  16127. ? utils.extend(a, c, !0)
  16128. : utils.isFunction(c) && utils.extend(a, c(), !0);
  16129. },
  16130. queryCommandValue: function() {
  16131. return a || {};
  16132. },
  16133. },
  16134. },
  16135. };
  16136. }),
  16137. UE.plugin.register("insertfile", function() {
  16138. function a(a) {
  16139. var b = a.substr(a.lastIndexOf(".") + 1).toLowerCase(),
  16140. c = {
  16141. rar: "icon_rar.gif",
  16142. zip: "icon_rar.gif",
  16143. tar: "icon_rar.gif",
  16144. gz: "icon_rar.gif",
  16145. bz2: "icon_rar.gif",
  16146. doc: "icon_doc.gif",
  16147. docx: "icon_doc.gif",
  16148. pdf: "icon_pdf.gif",
  16149. mp3: "icon_mp3.gif",
  16150. xls: "icon_xls.gif",
  16151. chm: "icon_chm.gif",
  16152. ppt: "icon_ppt.gif",
  16153. pptx: "icon_ppt.gif",
  16154. avi: "icon_mv.gif",
  16155. rmvb: "icon_mv.gif",
  16156. wmv: "icon_mv.gif",
  16157. flv: "icon_mv.gif",
  16158. swf: "icon_mv.gif",
  16159. rm: "icon_mv.gif",
  16160. exe: "icon_exe.gif",
  16161. psd: "icon_psd.gif",
  16162. txt: "icon_txt.gif",
  16163. jpg: "icon_jpg.gif",
  16164. png: "icon_jpg.gif",
  16165. jpeg: "icon_jpg.gif",
  16166. gif: "icon_jpg.gif",
  16167. ico: "icon_jpg.gif",
  16168. bmp: "icon_jpg.gif",
  16169. };
  16170. return c[b] ? c[b] : c.txt;
  16171. }
  16172. var b = this;
  16173. return {
  16174. commands: {
  16175. insertfile: {
  16176. execCommand: function(c, d) {
  16177. d = utils.isArray(d) ? d : [d];
  16178. var e,
  16179. f,
  16180. g,
  16181. h,
  16182. i = "",
  16183. j = b.getOpt("UEDITOR_HOME_URL"),
  16184. k =
  16185. j +
  16186. ("/" == j.substr(j.length - 1) ? "" : "/") +
  16187. "dialogs/attachment/fileTypeImages/";
  16188. for (e = 0; e < d.length; e++)
  16189. (f = d[e]),
  16190. (g = k + a(f.url)),
  16191. (h = f.title || f.url.substr(f.url.lastIndexOf("/") + 1)),
  16192. (i +=
  16193. '<p style="line-height: 16px;"><img style="vertical-align: middle; margin-right: 2px;" src="' +
  16194. g +
  16195. '" _src="' +
  16196. g +
  16197. '" /><a style="font-size:12px; color:#0066cc;" href="' +
  16198. f.url +
  16199. '" title="' +
  16200. h +
  16201. '">' +
  16202. h +
  16203. "</a></p>");
  16204. b.execCommand("insertHtml", i);
  16205. },
  16206. },
  16207. },
  16208. };
  16209. }),
  16210. (UE.plugins.xssFilter = function() {
  16211. function a(a) {
  16212. var b = a.tagName,
  16213. d = a.attrs;
  16214. return c.hasOwnProperty(b)
  16215. ? void UE.utils.each(d, function(d, e) {
  16216. c[b].indexOf(e) === -1 && a.setAttr(e);
  16217. })
  16218. : (a.parentNode.removeChild(a), !1);
  16219. }
  16220. var b = UEDITOR_CONFIG,
  16221. c = b.whitList;
  16222. c &&
  16223. b.xssFilterRules &&
  16224. (this.options.filterRules = (function() {
  16225. var b = {};
  16226. return (
  16227. UE.utils.each(c, function(c, d) {
  16228. b[d] = function(b) {
  16229. return a(b);
  16230. };
  16231. }),
  16232. b
  16233. );
  16234. })());
  16235. var d = [];
  16236. UE.utils.each(c, function(a, b) {
  16237. d.push(b);
  16238. }),
  16239. c &&
  16240. b.inputXssFilter &&
  16241. this.addInputRule(function(b) {
  16242. b.traversal(function(b) {
  16243. return "element" === b.type && void a(b);
  16244. });
  16245. }),
  16246. c &&
  16247. b.outputXssFilter &&
  16248. this.addOutputRule(function(b) {
  16249. b.traversal(function(b) {
  16250. return "element" === b.type && void a(b);
  16251. });
  16252. });
  16253. });
  16254. var baidu = baidu || {};
  16255. (baidu.editor = baidu.editor || {}),
  16256. (UE.ui = baidu.editor.ui = {}),
  16257. (function() {
  16258. function a() {
  16259. var a = document.getElementById("edui_fixedlayer");
  16260. i.setViewportOffset(a, { left: 0, top: 0 });
  16261. }
  16262. function b(b) {
  16263. d.on(window, "scroll", a),
  16264. d.on(window, "resize", baidu.editor.utils.defer(a, 0, !0));
  16265. }
  16266. var c = baidu.editor.browser,
  16267. d = baidu.editor.dom.domUtils,
  16268. e = "$EDITORUI",
  16269. f = (window[e] = {}),
  16270. g = "ID" + e,
  16271. h = 0,
  16272. i = (baidu.editor.ui.uiUtils = {
  16273. uid: function(a) {
  16274. return a ? a[g] || (a[g] = ++h) : ++h;
  16275. },
  16276. hook: function(a, b) {
  16277. var c;
  16278. return (
  16279. a && a._callbacks
  16280. ? (c = a)
  16281. : ((c = function() {
  16282. var b;
  16283. a && (b = a.apply(this, arguments));
  16284. for (var d = c._callbacks, e = d.length; e--; ) {
  16285. var f = d[e].apply(this, arguments);
  16286. void 0 === b && (b = f);
  16287. }
  16288. return b;
  16289. }),
  16290. (c._callbacks = [])),
  16291. c._callbacks.push(b),
  16292. c
  16293. );
  16294. },
  16295. createElementByHtml: function(a) {
  16296. var b = document.createElement("div");
  16297. return (
  16298. (b.innerHTML = a),
  16299. (b = b.firstChild),
  16300. b.parentNode.removeChild(b),
  16301. b
  16302. );
  16303. },
  16304. getViewportElement: function() {
  16305. return c.ie && c.quirks ? document.body : document.documentElement;
  16306. },
  16307. getClientRect: function(a) {
  16308. var b;
  16309. try {
  16310. b = a.getBoundingClientRect();
  16311. } catch (c) {
  16312. b = { left: 0, top: 0, height: 0, width: 0 };
  16313. }
  16314. for (
  16315. var e,
  16316. f = {
  16317. left: Math.round(b.left),
  16318. top: Math.round(b.top),
  16319. height: Math.round(b.bottom - b.top),
  16320. width: Math.round(b.right - b.left),
  16321. };
  16322. (e = a.ownerDocument) !== document &&
  16323. (a = d.getWindow(e).frameElement);
  16324. )
  16325. (b = a.getBoundingClientRect()),
  16326. (f.left += b.left),
  16327. (f.top += b.top);
  16328. return (
  16329. (f.bottom = f.top + f.height), (f.right = f.left + f.width), f
  16330. );
  16331. },
  16332. getViewportRect: function() {
  16333. var a = i.getViewportElement(),
  16334. b = 0 | (window.innerWidth || a.clientWidth),
  16335. c = 0 | (window.innerHeight || a.clientHeight);
  16336. return {
  16337. left: 0,
  16338. top: 0,
  16339. height: c,
  16340. width: b,
  16341. bottom: c,
  16342. right: b,
  16343. };
  16344. },
  16345. setViewportOffset: function(a, b) {
  16346. var c = i.getFixedLayer();
  16347. a.parentNode === c
  16348. ? ((a.style.left = b.left + "px"), (a.style.top = b.top + "px"))
  16349. : d.setViewportOffset(a, b);
  16350. },
  16351. getEventOffset: function(a) {
  16352. var b = a.target || a.srcElement,
  16353. c = i.getClientRect(b),
  16354. d = i.getViewportOffsetByEvent(a);
  16355. return { left: d.left - c.left, top: d.top - c.top };
  16356. },
  16357. getViewportOffsetByEvent: function(a) {
  16358. var b = a.target || a.srcElement,
  16359. c = d.getWindow(b).frameElement,
  16360. e = { left: a.clientX, top: a.clientY };
  16361. if (c && b.ownerDocument !== document) {
  16362. var f = i.getClientRect(c);
  16363. (e.left += f.left), (e.top += f.top);
  16364. }
  16365. return e;
  16366. },
  16367. setGlobal: function(a, b) {
  16368. return (f[a] = b), e + '["' + a + '"]';
  16369. },
  16370. unsetGlobal: function(a) {
  16371. delete f[a];
  16372. },
  16373. copyAttributes: function(a, b) {
  16374. for (var e = b.attributes, f = e.length; f--; ) {
  16375. var g = e[f];
  16376. "style" == g.nodeName ||
  16377. "class" == g.nodeName ||
  16378. (c.ie && !g.specified) ||
  16379. a.setAttribute(g.nodeName, g.nodeValue);
  16380. }
  16381. b.className && d.addClass(a, b.className),
  16382. b.style.cssText && (a.style.cssText += ";" + b.style.cssText);
  16383. },
  16384. removeStyle: function(a, b) {
  16385. if (a.style.removeProperty) a.style.removeProperty(b);
  16386. else {
  16387. if (!a.style.removeAttribute) throw "";
  16388. a.style.removeAttribute(b);
  16389. }
  16390. },
  16391. contains: function(a, b) {
  16392. return (
  16393. a &&
  16394. b &&
  16395. a !== b &&
  16396. (a.contains ? a.contains(b) : 16 & a.compareDocumentPosition(b))
  16397. );
  16398. },
  16399. startDrag: function(a, b, c) {
  16400. function d(a) {
  16401. var c = a.clientX - g,
  16402. d = a.clientY - h;
  16403. b.ondragmove(c, d, a),
  16404. a.stopPropagation ? a.stopPropagation() : (a.cancelBubble = !0);
  16405. }
  16406. function e(a) {
  16407. c.removeEventListener("mousemove", d, !0),
  16408. c.removeEventListener("mouseup", e, !0),
  16409. window.removeEventListener("mouseup", e, !0),
  16410. b.ondragstop();
  16411. }
  16412. function f() {
  16413. i.releaseCapture(),
  16414. i.detachEvent("onmousemove", d),
  16415. i.detachEvent("onmouseup", f),
  16416. i.detachEvent("onlosecaptrue", f),
  16417. b.ondragstop();
  16418. }
  16419. var c = c || document,
  16420. g = a.clientX,
  16421. h = a.clientY;
  16422. if (c.addEventListener)
  16423. c.addEventListener("mousemove", d, !0),
  16424. c.addEventListener("mouseup", e, !0),
  16425. window.addEventListener("mouseup", e, !0),
  16426. a.preventDefault();
  16427. else {
  16428. var i = a.srcElement;
  16429. i.setCapture(),
  16430. i.attachEvent("onmousemove", d),
  16431. i.attachEvent("onmouseup", f),
  16432. i.attachEvent("onlosecaptrue", f),
  16433. (a.returnValue = !1);
  16434. }
  16435. b.ondragstart();
  16436. },
  16437. getFixedLayer: function() {
  16438. var d = document.getElementById("edui_fixedlayer");
  16439. return (
  16440. null == d &&
  16441. ((d = document.createElement("div")),
  16442. (d.id = "edui_fixedlayer"),
  16443. document.body.appendChild(d),
  16444. c.ie && c.version <= 8
  16445. ? ((d.style.position = "absolute"), b(), setTimeout(a))
  16446. : (d.style.position = "fixed"),
  16447. (d.style.left = "0"),
  16448. (d.style.top = "0"),
  16449. (d.style.width = "0"),
  16450. (d.style.height = "0")),
  16451. d
  16452. );
  16453. },
  16454. makeUnselectable: function(a) {
  16455. if (c.opera || (c.ie && c.version < 9)) {
  16456. if (((a.unselectable = "on"), a.hasChildNodes()))
  16457. for (var b = 0; b < a.childNodes.length; b++)
  16458. 1 == a.childNodes[b].nodeType &&
  16459. i.makeUnselectable(a.childNodes[b]);
  16460. } else
  16461. void 0 !== a.style.MozUserSelect
  16462. ? (a.style.MozUserSelect = "none")
  16463. : void 0 !== a.style.WebkitUserSelect
  16464. ? (a.style.WebkitUserSelect = "none")
  16465. : void 0 !== a.style.KhtmlUserSelect &&
  16466. (a.style.KhtmlUserSelect = "none");
  16467. },
  16468. });
  16469. })(),
  16470. (function() {
  16471. var a = baidu.editor.utils,
  16472. b = baidu.editor.ui.uiUtils,
  16473. c = baidu.editor.EventBase,
  16474. d = (baidu.editor.ui.UIBase = function() {});
  16475. (d.prototype = {
  16476. className: "",
  16477. uiName: "",
  16478. initOptions: function(a) {
  16479. var c = this;
  16480. for (var d in a) c[d] = a[d];
  16481. this.id = this.id || "edui" + b.uid();
  16482. },
  16483. initUIBase: function() {
  16484. this._globalKey = a.unhtml(b.setGlobal(this.id, this));
  16485. },
  16486. render: function(a) {
  16487. for (
  16488. var c,
  16489. d = this.renderHtml(),
  16490. e = b.createElementByHtml(d),
  16491. f = domUtils.getElementsByTagName(e, "*"),
  16492. g = "edui-" + (this.theme || this.editor.options.theme),
  16493. h = document.getElementById("edui_fixedlayer"),
  16494. i = 0;
  16495. (c = f[i++]);
  16496. )
  16497. domUtils.addClass(c, g);
  16498. domUtils.addClass(e, g),
  16499. h && ((h.className = ""), domUtils.addClass(h, g));
  16500. var j = this.getDom();
  16501. null != j
  16502. ? (j.parentNode.replaceChild(e, j), b.copyAttributes(e, j))
  16503. : ("string" == typeof a && (a = document.getElementById(a)),
  16504. (a = a || b.getFixedLayer()),
  16505. domUtils.addClass(a, g),
  16506. a.appendChild(e)),
  16507. this.postRender();
  16508. },
  16509. getDom: function(a) {
  16510. return a
  16511. ? document.getElementById(this.id + "_" + a)
  16512. : document.getElementById(this.id);
  16513. },
  16514. postRender: function() {
  16515. this.fireEvent("postrender");
  16516. },
  16517. getHtmlTpl: function() {
  16518. return "";
  16519. },
  16520. formatHtml: function(a) {
  16521. var b = "edui-" + this.uiName;
  16522. return a
  16523. .replace(/##/g, this.id)
  16524. .replace(/%%-/g, this.uiName ? b + "-" : "")
  16525. .replace(/%%/g, (this.uiName ? b : "") + " " + this.className)
  16526. .replace(/\$\$/g, this._globalKey);
  16527. },
  16528. renderHtml: function() {
  16529. return this.formatHtml(this.getHtmlTpl());
  16530. },
  16531. dispose: function() {
  16532. var a = this.getDom();
  16533. a && baidu.editor.dom.domUtils.remove(a), b.unsetGlobal(this.id);
  16534. },
  16535. }),
  16536. a.inherits(d, c);
  16537. })(),
  16538. (function() {
  16539. var a = baidu.editor.utils,
  16540. b = baidu.editor.ui.UIBase,
  16541. c = (baidu.editor.ui.Separator = function(a) {
  16542. this.initOptions(a), this.initSeparator();
  16543. });
  16544. (c.prototype = {
  16545. uiName: "separator",
  16546. initSeparator: function() {
  16547. this.initUIBase();
  16548. },
  16549. getHtmlTpl: function() {
  16550. return '<div id="##" class="edui-box %%"></div>';
  16551. },
  16552. }),
  16553. a.inherits(c, b);
  16554. })(),
  16555. (function() {
  16556. var a = baidu.editor.utils,
  16557. b = baidu.editor.dom.domUtils,
  16558. c = baidu.editor.ui.UIBase,
  16559. d = baidu.editor.ui.uiUtils,
  16560. e = (baidu.editor.ui.Mask = function(a) {
  16561. this.initOptions(a), this.initUIBase();
  16562. });
  16563. (e.prototype = {
  16564. getHtmlTpl: function() {
  16565. return '<div id="##" class="edui-mask %%" onclick="return $$._onClick(event, this);" onmousedown="return $$._onMouseDown(event, this);"></div>';
  16566. },
  16567. postRender: function() {
  16568. var a = this;
  16569. b.on(window, "resize", function() {
  16570. setTimeout(function() {
  16571. a.isHidden() || a._fill();
  16572. });
  16573. });
  16574. },
  16575. show: function(a) {
  16576. this._fill(),
  16577. (this.getDom().style.display = ""),
  16578. (this.getDom().style.zIndex = a);
  16579. },
  16580. hide: function() {
  16581. (this.getDom().style.display = "none"),
  16582. (this.getDom().style.zIndex = "");
  16583. },
  16584. isHidden: function() {
  16585. return "none" == this.getDom().style.display;
  16586. },
  16587. _onMouseDown: function() {
  16588. return !1;
  16589. },
  16590. _onClick: function(a, b) {
  16591. this.fireEvent("click", a, b);
  16592. },
  16593. _fill: function() {
  16594. var a = this.getDom(),
  16595. b = d.getViewportRect();
  16596. (a.style.width = b.width + "px"), (a.style.height = b.height + "px");
  16597. },
  16598. }),
  16599. a.inherits(e, c);
  16600. })(),
  16601. (function() {
  16602. function a(a, b) {
  16603. for (var c = 0; c < g.length; c++) {
  16604. var d = g[c];
  16605. if (!d.isHidden() && d.queryAutoHide(b) !== !1) {
  16606. if (
  16607. a &&
  16608. /scroll/gi.test(a.type) &&
  16609. "edui-wordpastepop" == d.className
  16610. )
  16611. return;
  16612. d.hide();
  16613. }
  16614. }
  16615. g.length && d.editor.fireEvent("afterhidepop");
  16616. }
  16617. var b = baidu.editor.utils,
  16618. c = baidu.editor.ui.uiUtils,
  16619. d = baidu.editor.dom.domUtils,
  16620. e = baidu.editor.ui.UIBase,
  16621. f = (baidu.editor.ui.Popup = function(a) {
  16622. this.initOptions(a), this.initPopup();
  16623. }),
  16624. g = [];
  16625. f.postHide = a;
  16626. var h = [
  16627. "edui-anchor-topleft",
  16628. "edui-anchor-topright",
  16629. "edui-anchor-bottomleft",
  16630. "edui-anchor-bottomright",
  16631. ];
  16632. (f.prototype = {
  16633. SHADOW_RADIUS: 5,
  16634. content: null,
  16635. _hidden: !1,
  16636. autoRender: !0,
  16637. canSideLeft: !0,
  16638. canSideUp: !0,
  16639. initPopup: function() {
  16640. this.initUIBase(), g.push(this);
  16641. },
  16642. getHtmlTpl: function() {
  16643. return (
  16644. '<div id="##" class="edui-popup %%" onmousedown="return false;"> <div id="##_body" class="edui-popup-body"> <iframe style="position:absolute;z-index:-1;left:0;top:0;background-color: transparent;" frameborder="0" width="100%" height="100%" src="about:blank"></iframe> <div class="edui-shadow"></div> <div id="##_content" class="edui-popup-content">' +
  16645. this.getContentHtmlTpl() +
  16646. " </div> </div></div>"
  16647. );
  16648. },
  16649. getContentHtmlTpl: function() {
  16650. return this.content
  16651. ? "string" == typeof this.content
  16652. ? this.content
  16653. : this.content.renderHtml()
  16654. : "";
  16655. },
  16656. _UIBase_postRender: e.prototype.postRender,
  16657. postRender: function() {
  16658. if (
  16659. (this.content instanceof e && this.content.postRender(),
  16660. this.captureWheel && !this.captured)
  16661. ) {
  16662. this.captured = !0;
  16663. var a =
  16664. (document.documentElement.clientHeight ||
  16665. document.body.clientHeight) - 80,
  16666. b = this.getDom().offsetHeight,
  16667. f = c.getClientRect(this.combox.getDom()).top,
  16668. g = this.getDom("content"),
  16669. h = this.getDom("body").getElementsByTagName("iframe"),
  16670. i = this;
  16671. for (h.length && (h = h[0]); f + b > a; ) b -= 30;
  16672. (g.style.height = b + "px"),
  16673. h && (h.style.height = b + "px"),
  16674. window.XMLHttpRequest
  16675. ? d.on(
  16676. g,
  16677. "onmousewheel" in document.body
  16678. ? "mousewheel"
  16679. : "DOMMouseScroll",
  16680. function(a) {
  16681. a.preventDefault
  16682. ? a.preventDefault()
  16683. : (a.returnValue = !1),
  16684. a.wheelDelta
  16685. ? (g.scrollTop -= (a.wheelDelta / 120) * 60)
  16686. : (g.scrollTop -= (a.detail / -3) * 60);
  16687. }
  16688. )
  16689. : d.on(this.getDom(), "mousewheel", function(a) {
  16690. (a.returnValue = !1),
  16691. (i.getDom("content").scrollTop -=
  16692. (a.wheelDelta / 120) * 60);
  16693. });
  16694. }
  16695. this.fireEvent("postRenderAfter"),
  16696. this.hide(!0),
  16697. this._UIBase_postRender();
  16698. },
  16699. _doAutoRender: function() {
  16700. !this.getDom() && this.autoRender && this.render();
  16701. },
  16702. mesureSize: function() {
  16703. var a = this.getDom("content");
  16704. return c.getClientRect(a);
  16705. },
  16706. fitSize: function() {
  16707. if (this.captureWheel && this.sized) return this.__size;
  16708. this.sized = !0;
  16709. var a = this.getDom("body");
  16710. (a.style.width = ""), (a.style.height = "");
  16711. var b = this.mesureSize();
  16712. if (this.captureWheel) {
  16713. a.style.width = -(-20 - b.width) + "px";
  16714. var c = parseInt(this.getDom("content").style.height, 10);
  16715. !window.isNaN(c) && (b.height = c);
  16716. } else a.style.width = b.width + "px";
  16717. return (
  16718. (a.style.height = b.height + "px"),
  16719. (this.__size = b),
  16720. this.captureWheel &&
  16721. (this.getDom("content").style.overflow = "auto"),
  16722. b
  16723. );
  16724. },
  16725. showAnchor: function(a, b) {
  16726. this.showAnchorRect(c.getClientRect(a), b);
  16727. },
  16728. showAnchorRect: function(a, b, e) {
  16729. this._doAutoRender();
  16730. var f = c.getViewportRect();
  16731. (this.getDom().style.visibility = "hidden"), this._show();
  16732. var g,
  16733. i,
  16734. j,
  16735. k,
  16736. l = this.fitSize();
  16737. b
  16738. ? ((g =
  16739. this.canSideLeft &&
  16740. a.right + l.width > f.right &&
  16741. a.left > l.width),
  16742. (i =
  16743. this.canSideUp &&
  16744. a.top + l.height > f.bottom &&
  16745. a.bottom > l.height),
  16746. (j = g ? a.left - l.width : a.right),
  16747. (k = i ? a.bottom - l.height : a.top))
  16748. : ((g =
  16749. this.canSideLeft &&
  16750. a.right + l.width > f.right &&
  16751. a.left > l.width),
  16752. (i =
  16753. this.canSideUp &&
  16754. a.top + l.height > f.bottom &&
  16755. a.bottom > l.height),
  16756. (j = g ? a.right - l.width : a.left),
  16757. (k = i ? a.top - l.height : a.bottom));
  16758. var m = this.getDom();
  16759. c.setViewportOffset(m, { left: j, top: k }),
  16760. d.removeClasses(m, h),
  16761. (m.className += " " + h[2 * (i ? 1 : 0) + (g ? 1 : 0)]),
  16762. this.editor &&
  16763. ((m.style.zIndex = 1 * this.editor.container.style.zIndex + 10),
  16764. (baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex =
  16765. m.style.zIndex - 1)),
  16766. (this.getDom().style.visibility = "visible");
  16767. },
  16768. showAt: function(a) {
  16769. var b = a.left,
  16770. c = a.top,
  16771. d = { left: b, top: c, right: b, bottom: c, height: 0, width: 0 };
  16772. this.showAnchorRect(d, !1, !0);
  16773. },
  16774. _show: function() {
  16775. if (this._hidden) {
  16776. var a = this.getDom();
  16777. (a.style.display = ""), (this._hidden = !1), this.fireEvent("show");
  16778. }
  16779. },
  16780. isHidden: function() {
  16781. return this._hidden;
  16782. },
  16783. show: function() {
  16784. this._doAutoRender(), this._show();
  16785. },
  16786. hide: function(a) {
  16787. !this._hidden &&
  16788. this.getDom() &&
  16789. ((this.getDom().style.display = "none"),
  16790. (this._hidden = !0),
  16791. a || this.fireEvent("hide"));
  16792. },
  16793. queryAutoHide: function(a) {
  16794. return !a || !c.contains(this.getDom(), a);
  16795. },
  16796. }),
  16797. b.inherits(f, e),
  16798. d.on(document, "mousedown", function(b) {
  16799. var c = b.target || b.srcElement;
  16800. a(b, c);
  16801. }),
  16802. d.on(window, "scroll", function(b, c) {
  16803. a(b, c);
  16804. });
  16805. })(),
  16806. (function() {
  16807. function a(a, b) {
  16808. for (
  16809. var c =
  16810. '<div id="##" class="edui-colorpicker %%"><div class="edui-colorpicker-topbar edui-clearfix"><div unselectable="on" id="##_preview" class="edui-colorpicker-preview"></div><div unselectable="on" class="edui-colorpicker-nocolor" onclick="$$._onPickNoColor(event, this);">' +
  16811. a +
  16812. '</div></div><table class="edui-box" style="border-collapse: collapse;" onmouseover="$$._onTableOver(event, this);" onmouseout="$$._onTableOut(event, this);" onclick="return $$._onTableClick(event, this);" cellspacing="0" cellpadding="0"><tr style="border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;padding-top: 2px"><td colspan="10">' +
  16813. b.getLang("themeColor") +
  16814. '</td> </tr><tr class="edui-colorpicker-tablefirstrow" >',
  16815. d = 0;
  16816. d < e.length;
  16817. d++
  16818. )
  16819. d &&
  16820. d % 10 === 0 &&
  16821. (c +=
  16822. "</tr>" +
  16823. (60 == d
  16824. ? '<tr style="border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;"><td colspan="10">' +
  16825. b.getLang("standardColor") +
  16826. "</td></tr>"
  16827. : "") +
  16828. "<tr" +
  16829. (60 == d ? ' class="edui-colorpicker-tablefirstrow"' : "") +
  16830. ">"),
  16831. (c +=
  16832. d < 70
  16833. ? '<td style="padding: 0 2px;"><a hidefocus title="' +
  16834. e[d] +
  16835. '" onclick="return false;" href="javascript:" unselectable="on" class="edui-box edui-colorpicker-colorcell" data-color="#' +
  16836. e[d] +
  16837. '" style="background-color:#' +
  16838. e[d] +
  16839. ";border:solid #ccc;" +
  16840. (d < 10 || d >= 60
  16841. ? "border-width:1px;"
  16842. : d >= 10 && d < 20
  16843. ? "border-width:1px 1px 0 1px;"
  16844. : "border-width:0 1px 0 1px;") +
  16845. '"></a></td>'
  16846. : "");
  16847. return (c += "</tr></table></div>");
  16848. }
  16849. var b = baidu.editor.utils,
  16850. c = baidu.editor.ui.UIBase,
  16851. d = (baidu.editor.ui.ColorPicker = function(a) {
  16852. this.initOptions(a),
  16853. (this.noColorText =
  16854. this.noColorText || this.editor.getLang("clearColor")),
  16855. this.initUIBase();
  16856. });
  16857. (d.prototype = {
  16858. getHtmlTpl: function() {
  16859. return a(this.noColorText, this.editor);
  16860. },
  16861. _onTableClick: function(a) {
  16862. var b = a.target || a.srcElement,
  16863. c = b.getAttribute("data-color");
  16864. c && this.fireEvent("pickcolor", c);
  16865. },
  16866. _onTableOver: function(a) {
  16867. var b = a.target || a.srcElement,
  16868. c = b.getAttribute("data-color");
  16869. c && (this.getDom("preview").style.backgroundColor = c);
  16870. },
  16871. _onTableOut: function() {
  16872. this.getDom("preview").style.backgroundColor = "";
  16873. },
  16874. _onPickNoColor: function() {
  16875. this.fireEvent("picknocolor");
  16876. },
  16877. }),
  16878. b.inherits(d, c);
  16879. var e = "ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,".split(
  16880. ","
  16881. );
  16882. })(),
  16883. (function() {
  16884. var a = baidu.editor.utils,
  16885. b = baidu.editor.ui.uiUtils,
  16886. c = baidu.editor.ui.UIBase,
  16887. d = (baidu.editor.ui.TablePicker = function(a) {
  16888. this.initOptions(a), this.initTablePicker();
  16889. });
  16890. (d.prototype = {
  16891. defaultNumRows: 10,
  16892. defaultNumCols: 10,
  16893. maxNumRows: 20,
  16894. maxNumCols: 20,
  16895. numRows: 10,
  16896. numCols: 10,
  16897. lengthOfCellSide: 22,
  16898. initTablePicker: function() {
  16899. this.initUIBase();
  16900. },
  16901. getHtmlTpl: function() {
  16902. return '<div id="##" class="edui-tablepicker %%"><div class="edui-tablepicker-body"><div class="edui-infoarea"><span id="##_label" class="edui-label"></span></div><div class="edui-pickarea" onmousemove="$$._onMouseMove(event, this);" onmouseover="$$._onMouseOver(event, this);" onmouseout="$$._onMouseOut(event, this);" onclick="$$._onClick(event, this);"><div id="##_overlay" class="edui-overlay"></div></div></div></div>';
  16903. },
  16904. _UIBase_render: c.prototype.render,
  16905. render: function(a) {
  16906. this._UIBase_render(a),
  16907. (this.getDom("label").innerHTML =
  16908. "0" +
  16909. this.editor.getLang("t_row") +
  16910. " x 0" +
  16911. this.editor.getLang("t_col"));
  16912. },
  16913. _track: function(a, b) {
  16914. var c = this.getDom("overlay").style,
  16915. d = this.lengthOfCellSide;
  16916. (c.width = a * d + "px"), (c.height = b * d + "px");
  16917. var e = this.getDom("label");
  16918. (e.innerHTML =
  16919. a +
  16920. this.editor.getLang("t_col") +
  16921. " x " +
  16922. b +
  16923. this.editor.getLang("t_row")),
  16924. (this.numCols = a),
  16925. (this.numRows = b);
  16926. },
  16927. _onMouseOver: function(a, c) {
  16928. var d = a.relatedTarget || a.fromElement;
  16929. b.contains(c, d) ||
  16930. c === d ||
  16931. ((this.getDom("label").innerHTML =
  16932. "0" +
  16933. this.editor.getLang("t_col") +
  16934. " x 0" +
  16935. this.editor.getLang("t_row")),
  16936. (this.getDom("overlay").style.visibility = ""));
  16937. },
  16938. _onMouseOut: function(a, c) {
  16939. var d = a.relatedTarget || a.toElement;
  16940. b.contains(c, d) ||
  16941. c === d ||
  16942. ((this.getDom("label").innerHTML =
  16943. "0" +
  16944. this.editor.getLang("t_col") +
  16945. " x 0" +
  16946. this.editor.getLang("t_row")),
  16947. (this.getDom("overlay").style.visibility = "hidden"));
  16948. },
  16949. _onMouseMove: function(a, c) {
  16950. var d = (this.getDom("overlay").style, b.getEventOffset(a)),
  16951. e = this.lengthOfCellSide,
  16952. f = Math.ceil(d.left / e),
  16953. g = Math.ceil(d.top / e);
  16954. this._track(f, g);
  16955. },
  16956. _onClick: function() {
  16957. this.fireEvent("picktable", this.numCols, this.numRows);
  16958. },
  16959. }),
  16960. a.inherits(d, c);
  16961. })(),
  16962. (function() {
  16963. var a = baidu.editor.browser,
  16964. b = baidu.editor.dom.domUtils,
  16965. c = baidu.editor.ui.uiUtils,
  16966. d =
  16967. 'onmousedown="$$.Stateful_onMouseDown(event, this);" onmouseup="$$.Stateful_onMouseUp(event, this);"' +
  16968. (a.ie
  16969. ? ' onmouseenter="$$.Stateful_onMouseEnter(event, this);" onmouseleave="$$.Stateful_onMouseLeave(event, this);"'
  16970. : ' onmouseover="$$.Stateful_onMouseOver(event, this);" onmouseout="$$.Stateful_onMouseOut(event, this);"');
  16971. baidu.editor.ui.Stateful = {
  16972. alwalysHoverable: !1,
  16973. target: null,
  16974. Stateful_init: function() {
  16975. (this._Stateful_dGetHtmlTpl = this.getHtmlTpl),
  16976. (this.getHtmlTpl = this.Stateful_getHtmlTpl);
  16977. },
  16978. Stateful_getHtmlTpl: function() {
  16979. var a = this._Stateful_dGetHtmlTpl();
  16980. return a.replace(/stateful/g, function() {
  16981. return d;
  16982. });
  16983. },
  16984. Stateful_onMouseEnter: function(a, b) {
  16985. (this.target = b),
  16986. (this.isDisabled() && !this.alwalysHoverable) ||
  16987. (this.addState("hover"), this.fireEvent("over"));
  16988. },
  16989. Stateful_onMouseLeave: function(a, b) {
  16990. (this.isDisabled() && !this.alwalysHoverable) ||
  16991. (this.removeState("hover"),
  16992. this.removeState("active"),
  16993. this.fireEvent("out"));
  16994. },
  16995. Stateful_onMouseOver: function(a, b) {
  16996. var d = a.relatedTarget;
  16997. c.contains(b, d) || b === d || this.Stateful_onMouseEnter(a, b);
  16998. },
  16999. Stateful_onMouseOut: function(a, b) {
  17000. var d = a.relatedTarget;
  17001. c.contains(b, d) || b === d || this.Stateful_onMouseLeave(a, b);
  17002. },
  17003. Stateful_onMouseDown: function(a, b) {
  17004. this.isDisabled() || this.addState("active");
  17005. },
  17006. Stateful_onMouseUp: function(a, b) {
  17007. this.isDisabled() || this.removeState("active");
  17008. },
  17009. Stateful_postRender: function() {
  17010. this.disabled &&
  17011. !this.hasState("disabled") &&
  17012. this.addState("disabled");
  17013. },
  17014. hasState: function(a) {
  17015. return b.hasClass(this.getStateDom(), "edui-state-" + a);
  17016. },
  17017. addState: function(a) {
  17018. this.hasState(a) ||
  17019. (this.getStateDom().className += " edui-state-" + a);
  17020. },
  17021. removeState: function(a) {
  17022. this.hasState(a) &&
  17023. b.removeClasses(this.getStateDom(), ["edui-state-" + a]);
  17024. },
  17025. getStateDom: function() {
  17026. return this.getDom("state");
  17027. },
  17028. isChecked: function() {
  17029. return this.hasState("checked");
  17030. },
  17031. setChecked: function(a) {
  17032. !this.isDisabled() && a
  17033. ? this.addState("checked")
  17034. : this.removeState("checked");
  17035. },
  17036. isDisabled: function() {
  17037. return this.hasState("disabled");
  17038. },
  17039. setDisabled: function(a) {
  17040. a
  17041. ? (this.removeState("hover"),
  17042. this.removeState("checked"),
  17043. this.removeState("active"),
  17044. this.addState("disabled"))
  17045. : this.removeState("disabled");
  17046. },
  17047. };
  17048. })(),
  17049. (function() {
  17050. var a = baidu.editor.utils,
  17051. b = baidu.editor.ui.UIBase,
  17052. c = baidu.editor.ui.Stateful,
  17053. d = (baidu.editor.ui.Button = function(a) {
  17054. if (a.name) {
  17055. var b = a.name,
  17056. c = a.cssRules;
  17057. a.className || (a.className = "edui-for-" + b),
  17058. (a.cssRules =
  17059. ".edui-default .edui-for-" + b + " .edui-icon {" + c + "}");
  17060. }
  17061. this.initOptions(a), this.initButton();
  17062. });
  17063. (d.prototype = {
  17064. uiName: "button",
  17065. label: "",
  17066. title: "",
  17067. showIcon: !0,
  17068. showText: !0,
  17069. cssRules: "",
  17070. initButton: function() {
  17071. this.initUIBase(),
  17072. this.Stateful_init(),
  17073. this.cssRules &&
  17074. a.cssRule(
  17075. "edui-customize-" + this.name + "-style",
  17076. this.cssRules
  17077. );
  17078. },
  17079. getHtmlTpl: function() {
  17080. return (
  17081. '<div id="##" class="edui-box %%"><div id="##_state" stateful><div class="%%-wrap"><div id="##_body" unselectable="on" ' +
  17082. (this.title ? 'title="' + this.title + '"' : "") +
  17083. ' class="%%-body" onmousedown="return $$._onMouseDown(event, this);" onclick="return $$._onClick(event, this);">' +
  17084. (this.showIcon ? '<div class="edui-box edui-icon"></div>' : "") +
  17085. (this.showText
  17086. ? '<div class="edui-box edui-label">' + this.label + "</div>"
  17087. : "") +
  17088. "</div></div></div></div>"
  17089. );
  17090. },
  17091. postRender: function() {
  17092. this.Stateful_postRender(), this.setDisabled(this.disabled);
  17093. },
  17094. _onMouseDown: function(a) {
  17095. var b = a.target || a.srcElement,
  17096. c = b && b.tagName && b.tagName.toLowerCase();
  17097. if ("input" == c || "object" == c || "object" == c) return !1;
  17098. },
  17099. _onClick: function() {
  17100. this.isDisabled() || this.fireEvent("click");
  17101. },
  17102. setTitle: function(a) {
  17103. var b = this.getDom("label");
  17104. b.innerHTML = a;
  17105. },
  17106. }),
  17107. a.inherits(d, b),
  17108. a.extend(d.prototype, c);
  17109. })(),
  17110. (function() {
  17111. var a = baidu.editor.utils,
  17112. b = baidu.editor.ui.uiUtils,
  17113. c = (baidu.editor.dom.domUtils, baidu.editor.ui.UIBase),
  17114. d = baidu.editor.ui.Stateful,
  17115. e = (baidu.editor.ui.SplitButton = function(a) {
  17116. this.initOptions(a), this.initSplitButton();
  17117. });
  17118. (e.prototype = {
  17119. popup: null,
  17120. uiName: "splitbutton",
  17121. title: "",
  17122. initSplitButton: function() {
  17123. this.initUIBase(), this.Stateful_init();
  17124. if (null != this.popup) {
  17125. var a = this.popup;
  17126. (this.popup = null), this.setPopup(a);
  17127. }
  17128. },
  17129. _UIBase_postRender: c.prototype.postRender,
  17130. postRender: function() {
  17131. this.Stateful_postRender(), this._UIBase_postRender();
  17132. },
  17133. setPopup: function(c) {
  17134. this.popup !== c &&
  17135. (null != this.popup && this.popup.dispose(),
  17136. c.addListener("show", a.bind(this._onPopupShow, this)),
  17137. c.addListener("hide", a.bind(this._onPopupHide, this)),
  17138. c.addListener(
  17139. "postrender",
  17140. a.bind(function() {
  17141. c
  17142. .getDom("body")
  17143. .appendChild(
  17144. b.createElementByHtml(
  17145. '<div id="' +
  17146. this.popup.id +
  17147. '_bordereraser" class="edui-bordereraser edui-background" style="width:' +
  17148. (b.getClientRect(this.getDom()).width + 20) +
  17149. 'px"></div>'
  17150. )
  17151. ),
  17152. (c.getDom().className += " " + this.className);
  17153. }, this)
  17154. ),
  17155. (this.popup = c));
  17156. },
  17157. _onPopupShow: function() {
  17158. this.addState("opened");
  17159. },
  17160. _onPopupHide: function() {
  17161. this.removeState("opened");
  17162. },
  17163. getHtmlTpl: function() {
  17164. return (
  17165. '<div id="##" class="edui-box %%"><div ' +
  17166. (this.title ? 'title="' + this.title + '"' : "") +
  17167. ' id="##_state" stateful><div class="%%-body"><div id="##_button_body" class="edui-box edui-button-body" onclick="$$._onButtonClick(event, this);"><div class="edui-box edui-icon"></div></div><div class="edui-box edui-splitborder"></div><div class="edui-box edui-arrow" onclick="$$._onArrowClick();"></div></div></div></div>'
  17168. );
  17169. },
  17170. showPopup: function() {
  17171. var a = b.getClientRect(this.getDom());
  17172. (a.top -= this.popup.SHADOW_RADIUS),
  17173. (a.height += this.popup.SHADOW_RADIUS),
  17174. this.popup.showAnchorRect(a);
  17175. },
  17176. _onArrowClick: function(a, b) {
  17177. this.isDisabled() || this.showPopup();
  17178. },
  17179. _onButtonClick: function() {
  17180. this.isDisabled() || this.fireEvent("buttonclick");
  17181. },
  17182. }),
  17183. a.inherits(e, c),
  17184. a.extend(e.prototype, d, !0);
  17185. })(),
  17186. (function() {
  17187. var a = baidu.editor.utils,
  17188. b = baidu.editor.ui.uiUtils,
  17189. c = baidu.editor.ui.ColorPicker,
  17190. d = baidu.editor.ui.Popup,
  17191. e = baidu.editor.ui.SplitButton,
  17192. f = (baidu.editor.ui.ColorButton = function(a) {
  17193. this.initOptions(a), this.initColorButton();
  17194. });
  17195. (f.prototype = {
  17196. initColorButton: function() {
  17197. var a = this;
  17198. (this.popup = new d({
  17199. content: new c({
  17200. noColorText: a.editor.getLang("clearColor"),
  17201. editor: a.editor,
  17202. onpickcolor: function(b, c) {
  17203. a._onPickColor(c);
  17204. },
  17205. onpicknocolor: function(b, c) {
  17206. a._onPickNoColor(c);
  17207. },
  17208. }),
  17209. editor: a.editor,
  17210. })),
  17211. this.initSplitButton();
  17212. },
  17213. _SplitButton_postRender: e.prototype.postRender,
  17214. postRender: function() {
  17215. this._SplitButton_postRender(),
  17216. this.getDom("button_body").appendChild(
  17217. b.createElementByHtml(
  17218. '<div id="' +
  17219. this.id +
  17220. '_colorlump" class="edui-colorlump"></div>'
  17221. )
  17222. ),
  17223. (this.getDom().className += " edui-colorbutton");
  17224. },
  17225. setColor: function(a) {
  17226. (this.getDom("colorlump").style.backgroundColor = a),
  17227. (this.color = a);
  17228. },
  17229. _onPickColor: function(a) {
  17230. this.fireEvent("pickcolor", a) !== !1 &&
  17231. (this.setColor(a), this.popup.hide());
  17232. },
  17233. _onPickNoColor: function(a) {
  17234. this.fireEvent("picknocolor") !== !1 && this.popup.hide();
  17235. },
  17236. }),
  17237. a.inherits(f, e);
  17238. })(),
  17239. (function() {
  17240. var a = baidu.editor.utils,
  17241. b = baidu.editor.ui.Popup,
  17242. c = baidu.editor.ui.TablePicker,
  17243. d = baidu.editor.ui.SplitButton,
  17244. e = (baidu.editor.ui.TableButton = function(a) {
  17245. this.initOptions(a), this.initTableButton();
  17246. });
  17247. (e.prototype = {
  17248. initTableButton: function() {
  17249. var a = this;
  17250. (this.popup = new b({
  17251. content: new c({
  17252. editor: a.editor,
  17253. onpicktable: function(b, c, d) {
  17254. a._onPickTable(c, d);
  17255. },
  17256. }),
  17257. editor: a.editor,
  17258. })),
  17259. this.initSplitButton();
  17260. },
  17261. _onPickTable: function(a, b) {
  17262. this.fireEvent("picktable", a, b) !== !1 && this.popup.hide();
  17263. },
  17264. }),
  17265. a.inherits(e, d);
  17266. })(),
  17267. (function() {
  17268. var a = baidu.editor.utils,
  17269. b = baidu.editor.ui.UIBase,
  17270. c = (baidu.editor.ui.AutoTypeSetPicker = function(a) {
  17271. this.initOptions(a), this.initAutoTypeSetPicker();
  17272. });
  17273. (c.prototype = {
  17274. initAutoTypeSetPicker: function() {
  17275. this.initUIBase();
  17276. },
  17277. getHtmlTpl: function() {
  17278. var a = this.editor,
  17279. b = a.options.autotypeset,
  17280. c = a.getLang("autoTypeSet"),
  17281. d = "textAlignValue" + a.uid,
  17282. e = "imageBlockLineValue" + a.uid,
  17283. f = "symbolConverValue" + a.uid;
  17284. return (
  17285. '<div id="##" class="edui-autotypesetpicker %%"><div class="edui-autotypesetpicker-body"><table ><tr><td nowrap><input type="checkbox" name="mergeEmptyline" ' +
  17286. (b.mergeEmptyline ? "checked" : "") +
  17287. ">" +
  17288. c.mergeLine +
  17289. '</td><td colspan="2"><input type="checkbox" name="removeEmptyline" ' +
  17290. (b.removeEmptyline ? "checked" : "") +
  17291. ">" +
  17292. c.delLine +
  17293. '</td></tr><tr><td nowrap><input type="checkbox" name="removeClass" ' +
  17294. (b.removeClass ? "checked" : "") +
  17295. ">" +
  17296. c.removeFormat +
  17297. '</td><td colspan="2"><input type="checkbox" name="indent" ' +
  17298. (b.indent ? "checked" : "") +
  17299. ">" +
  17300. c.indent +
  17301. '</td></tr><tr><td nowrap><input type="checkbox" name="textAlign" ' +
  17302. (b.textAlign ? "checked" : "") +
  17303. ">" +
  17304. c.alignment +
  17305. '</td><td colspan="2" id="' +
  17306. d +
  17307. '"><input type="radio" name="' +
  17308. d +
  17309. '" value="left" ' +
  17310. (b.textAlign && "left" == b.textAlign ? "checked" : "") +
  17311. ">" +
  17312. a.getLang("justifyleft") +
  17313. '<input type="radio" name="' +
  17314. d +
  17315. '" value="center" ' +
  17316. (b.textAlign && "center" == b.textAlign ? "checked" : "") +
  17317. ">" +
  17318. a.getLang("justifycenter") +
  17319. '<input type="radio" name="' +
  17320. d +
  17321. '" value="right" ' +
  17322. (b.textAlign && "right" == b.textAlign ? "checked" : "") +
  17323. ">" +
  17324. a.getLang("justifyright") +
  17325. '</td></tr><tr><td nowrap><input type="checkbox" name="imageBlockLine" ' +
  17326. (b.imageBlockLine ? "checked" : "") +
  17327. ">" +
  17328. c.imageFloat +
  17329. '</td><td nowrap id="' +
  17330. e +
  17331. '"><input type="radio" name="' +
  17332. e +
  17333. '" value="none" ' +
  17334. (b.imageBlockLine && "none" == b.imageBlockLine ? "checked" : "") +
  17335. ">" +
  17336. a.getLang("default") +
  17337. '<input type="radio" name="' +
  17338. e +
  17339. '" value="left" ' +
  17340. (b.imageBlockLine && "left" == b.imageBlockLine ? "checked" : "") +
  17341. ">" +
  17342. a.getLang("justifyleft") +
  17343. '<input type="radio" name="' +
  17344. e +
  17345. '" value="center" ' +
  17346. (b.imageBlockLine && "center" == b.imageBlockLine
  17347. ? "checked"
  17348. : "") +
  17349. ">" +
  17350. a.getLang("justifycenter") +
  17351. '<input type="radio" name="' +
  17352. e +
  17353. '" value="right" ' +
  17354. (b.imageBlockLine && "right" == b.imageBlockLine ? "checked" : "") +
  17355. ">" +
  17356. a.getLang("justifyright") +
  17357. '</td></tr><tr><td nowrap><input type="checkbox" name="clearFontSize" ' +
  17358. (b.clearFontSize ? "checked" : "") +
  17359. ">" +
  17360. c.removeFontsize +
  17361. '</td><td colspan="2"><input type="checkbox" name="clearFontFamily" ' +
  17362. (b.clearFontFamily ? "checked" : "") +
  17363. ">" +
  17364. c.removeFontFamily +
  17365. '</td></tr><tr><td nowrap colspan="3"><input type="checkbox" name="removeEmptyNode" ' +
  17366. (b.removeEmptyNode ? "checked" : "") +
  17367. ">" +
  17368. c.removeHtml +
  17369. '</td></tr><tr><td nowrap colspan="3"><input type="checkbox" name="pasteFilter" ' +
  17370. (b.pasteFilter ? "checked" : "") +
  17371. ">" +
  17372. c.pasteFilter +
  17373. '</td></tr><tr><td nowrap><input type="checkbox" name="symbolConver" ' +
  17374. (b.bdc2sb || b.tobdc ? "checked" : "") +
  17375. ">" +
  17376. c.symbol +
  17377. '</td><td id="' +
  17378. f +
  17379. '"><input type="radio" name="bdc" value="bdc2sb" ' +
  17380. (b.bdc2sb ? "checked" : "") +
  17381. ">" +
  17382. c.bdc2sb +
  17383. '<input type="radio" name="bdc" value="tobdc" ' +
  17384. (b.tobdc ? "checked" : "") +
  17385. ">" +
  17386. c.tobdc +
  17387. '</td><td nowrap align="right"><button >' +
  17388. c.run +
  17389. "</button></td></tr></table></div></div>"
  17390. );
  17391. },
  17392. _UIBase_render: b.prototype.render,
  17393. }),
  17394. a.inherits(c, b);
  17395. })(),
  17396. (function() {
  17397. function a(a) {
  17398. for (
  17399. var c,
  17400. d = {},
  17401. e = a.getDom(),
  17402. f = a.editor.uid,
  17403. g = null,
  17404. h = null,
  17405. i = domUtils.getElementsByTagName(e, "input"),
  17406. j = i.length - 1;
  17407. (c = i[j--]);
  17408. )
  17409. if (((g = c.getAttribute("type")), "checkbox" == g))
  17410. if (
  17411. ((h = c.getAttribute("name")), d[h] && delete d[h], c.checked)
  17412. ) {
  17413. var k = document.getElementById(h + "Value" + f);
  17414. if (k) {
  17415. if (/input/gi.test(k.tagName)) d[h] = k.value;
  17416. else
  17417. for (
  17418. var l,
  17419. m = k.getElementsByTagName("input"),
  17420. n = m.length - 1;
  17421. (l = m[n--]);
  17422. )
  17423. if (l.checked) {
  17424. d[h] = l.value;
  17425. break;
  17426. }
  17427. } else d[h] = !0;
  17428. } else d[h] = !1;
  17429. else d[c.getAttribute("value")] = c.checked;
  17430. for (
  17431. var o, p = domUtils.getElementsByTagName(e, "select"), j = 0;
  17432. (o = p[j++]);
  17433. ) {
  17434. var q = o.getAttribute("name");
  17435. d[q] = d[q] ? o.value : "";
  17436. }
  17437. b.extend(a.editor.options.autotypeset, d),
  17438. a.editor.setPreferences("autotypeset", d);
  17439. }
  17440. var b = baidu.editor.utils,
  17441. c = baidu.editor.ui.Popup,
  17442. d = baidu.editor.ui.AutoTypeSetPicker,
  17443. e = baidu.editor.ui.SplitButton,
  17444. f = (baidu.editor.ui.AutoTypeSetButton = function(a) {
  17445. this.initOptions(a), this.initAutoTypeSetButton();
  17446. });
  17447. (f.prototype = {
  17448. initAutoTypeSetButton: function() {
  17449. var b = this;
  17450. this.popup = new c({
  17451. content: new d({ editor: b.editor }),
  17452. editor: b.editor,
  17453. hide: function() {
  17454. !this._hidden &&
  17455. this.getDom() &&
  17456. (a(this),
  17457. (this.getDom().style.display = "none"),
  17458. (this._hidden = !0),
  17459. this.fireEvent("hide"));
  17460. },
  17461. });
  17462. var e = 0;
  17463. this.popup.addListener("postRenderAfter", function() {
  17464. var c = this;
  17465. if (!e) {
  17466. var d = this.getDom(),
  17467. f = d.getElementsByTagName("button")[0];
  17468. (f.onclick = function() {
  17469. a(c), b.editor.execCommand("autotypeset"), c.hide();
  17470. }),
  17471. domUtils.on(d, "click", function(d) {
  17472. var e = d.target || d.srcElement,
  17473. f = b.editor.uid;
  17474. if (e && "INPUT" == e.tagName) {
  17475. if (
  17476. "imageBlockLine" == e.name ||
  17477. "textAlign" == e.name ||
  17478. "symbolConver" == e.name
  17479. )
  17480. for (
  17481. var g = e.checked,
  17482. h = document.getElementById(e.name + "Value" + f),
  17483. i = h.getElementsByTagName("input"),
  17484. j = {
  17485. imageBlockLine: "none",
  17486. textAlign: "left",
  17487. symbolConver: "tobdc",
  17488. },
  17489. k = 0;
  17490. k < i.length;
  17491. k++
  17492. )
  17493. g
  17494. ? i[k].value == j[e.name] &&
  17495. (i[k].checked = "checked")
  17496. : (i[k].checked = !1);
  17497. if (
  17498. e.name == "imageBlockLineValue" + f ||
  17499. e.name == "textAlignValue" + f ||
  17500. "bdc" == e.name
  17501. ) {
  17502. var l = e.parentNode.previousSibling.getElementsByTagName(
  17503. "input"
  17504. );
  17505. l && (l[0].checked = !0);
  17506. }
  17507. a(c);
  17508. }
  17509. }),
  17510. (e = 1);
  17511. }
  17512. }),
  17513. this.initSplitButton();
  17514. },
  17515. }),
  17516. b.inherits(f, e);
  17517. })(),
  17518. (function() {
  17519. var a = baidu.editor.utils,
  17520. b = baidu.editor.ui.Popup,
  17521. c = baidu.editor.ui.Stateful,
  17522. d = baidu.editor.ui.UIBase,
  17523. e = (baidu.editor.ui.CellAlignPicker = function(a) {
  17524. this.initOptions(a), this.initSelected(), this.initCellAlignPicker();
  17525. });
  17526. (e.prototype = {
  17527. initSelected: function() {
  17528. var a = {
  17529. valign: { top: 0, middle: 1, bottom: 2 },
  17530. align: { left: 0, center: 1, right: 2 },
  17531. count: 3,
  17532. };
  17533. this.selected &&
  17534. (this.selectedIndex =
  17535. a.valign[this.selected.valign] * a.count +
  17536. a.align[this.selected.align]);
  17537. },
  17538. initCellAlignPicker: function() {
  17539. this.initUIBase(), this.Stateful_init();
  17540. },
  17541. getHtmlTpl: function() {
  17542. for (
  17543. var a = ["left", "center", "right"],
  17544. b = 9,
  17545. c = null,
  17546. d = -1,
  17547. e = [],
  17548. f = 0;
  17549. f < b;
  17550. f++
  17551. )
  17552. (c =
  17553. this.selectedIndex === f
  17554. ? ' class="edui-cellalign-selected" '
  17555. : ""),
  17556. (d = f % 3),
  17557. 0 === d && e.push("<tr>"),
  17558. e.push(
  17559. '<td index="' +
  17560. f +
  17561. '" ' +
  17562. c +
  17563. ' stateful><div class="edui-icon edui-' +
  17564. a[d] +
  17565. '"></div></td>'
  17566. ),
  17567. 2 === d && e.push("</tr>");
  17568. return (
  17569. '<div id="##" class="edui-cellalignpicker %%"><div class="edui-cellalignpicker-body"><table onclick="$$._onClick(event);">' +
  17570. e.join("") +
  17571. "</table></div></div>"
  17572. );
  17573. },
  17574. getStateDom: function() {
  17575. return this.target;
  17576. },
  17577. _onClick: function(a) {
  17578. var c = a.target || a.srcElement;
  17579. /icon/.test(c.className) &&
  17580. (this.items[c.parentNode.getAttribute("index")].onclick(),
  17581. b.postHide(a));
  17582. },
  17583. _UIBase_render: d.prototype.render,
  17584. }),
  17585. a.inherits(e, d),
  17586. a.extend(e.prototype, c, !0);
  17587. })(),
  17588. (function() {
  17589. var a = baidu.editor.utils,
  17590. b = baidu.editor.ui.Stateful,
  17591. c = baidu.editor.ui.uiUtils,
  17592. d = baidu.editor.ui.UIBase,
  17593. e = (baidu.editor.ui.PastePicker = function(a) {
  17594. this.initOptions(a), this.initPastePicker();
  17595. });
  17596. (e.prototype = {
  17597. initPastePicker: function() {
  17598. this.initUIBase(), this.Stateful_init();
  17599. },
  17600. getHtmlTpl: function() {
  17601. return (
  17602. '<div class="edui-pasteicon" onclick="$$._onClick(this)"></div><div class="edui-pastecontainer"><div class="edui-title">' +
  17603. this.editor.getLang("pasteOpt") +
  17604. '</div><div class="edui-button"><div title="' +
  17605. this.editor.getLang("pasteSourceFormat") +
  17606. '" onclick="$$.format(false)" stateful><div class="edui-richtxticon"></div></div><div title="' +
  17607. this.editor.getLang("tagFormat") +
  17608. '" onclick="$$.format(2)" stateful><div class="edui-tagicon"></div></div><div title="' +
  17609. this.editor.getLang("pasteTextFormat") +
  17610. '" onclick="$$.format(true)" stateful><div class="edui-plaintxticon"></div></div></div></div></div>'
  17611. );
  17612. },
  17613. getStateDom: function() {
  17614. return this.target;
  17615. },
  17616. format: function(a) {
  17617. (this.editor.ui._isTransfer = !0),
  17618. this.editor.fireEvent("pasteTransfer", a);
  17619. },
  17620. _onClick: function(a) {
  17621. var b = domUtils.getNextDomNode(a),
  17622. d = c.getViewportRect().height,
  17623. e = c.getClientRect(b);
  17624. e.top + e.height > d
  17625. ? (b.style.top = -e.height - a.offsetHeight + "px")
  17626. : (b.style.top = ""),
  17627. /hidden/gi.test(domUtils.getComputedStyle(b, "visibility"))
  17628. ? ((b.style.visibility = "visible"),
  17629. domUtils.addClass(a, "edui-state-opened"))
  17630. : ((b.style.visibility = "hidden"),
  17631. domUtils.removeClasses(a, "edui-state-opened"));
  17632. },
  17633. _UIBase_render: d.prototype.render,
  17634. }),
  17635. a.inherits(e, d),
  17636. a.extend(e.prototype, b, !0);
  17637. })(),
  17638. (function() {
  17639. var a = baidu.editor.utils,
  17640. b = baidu.editor.ui.uiUtils,
  17641. c = baidu.editor.ui.UIBase,
  17642. d = (baidu.editor.ui.Toolbar = function(a) {
  17643. this.initOptions(a), this.initToolbar();
  17644. });
  17645. (d.prototype = {
  17646. items: null,
  17647. initToolbar: function() {
  17648. (this.items = this.items || []), this.initUIBase();
  17649. },
  17650. add: function(a, b) {
  17651. void 0 === b ? this.items.push(a) : this.items.splice(b, 0, a);
  17652. },
  17653. getHtmlTpl: function() {
  17654. for (var a = [], b = 0; b < this.items.length; b++)
  17655. a[b] = this.items[b].renderHtml();
  17656. return (
  17657. '<div id="##" class="edui-toolbar %%" onselectstart="return false;" onmousedown="return $$._onMouseDown(event, this);">' +
  17658. a.join("") +
  17659. "</div>"
  17660. );
  17661. },
  17662. postRender: function() {
  17663. for (var a = this.getDom(), c = 0; c < this.items.length; c++)
  17664. this.items[c].postRender();
  17665. b.makeUnselectable(a);
  17666. },
  17667. _onMouseDown: function(a) {
  17668. var b = a.target || a.srcElement,
  17669. c = b && b.tagName && b.tagName.toLowerCase();
  17670. if ("input" == c || "object" == c || "object" == c) return !1;
  17671. },
  17672. }),
  17673. a.inherits(d, c);
  17674. })(),
  17675. (function() {
  17676. var a = baidu.editor.utils,
  17677. b = baidu.editor.dom.domUtils,
  17678. c = baidu.editor.ui.uiUtils,
  17679. d = baidu.editor.ui.UIBase,
  17680. e = baidu.editor.ui.Popup,
  17681. f = baidu.editor.ui.Stateful,
  17682. g = baidu.editor.ui.CellAlignPicker,
  17683. h = (baidu.editor.ui.Menu = function(a) {
  17684. this.initOptions(a), this.initMenu();
  17685. }),
  17686. i = {
  17687. renderHtml: function() {
  17688. return '<div class="edui-menuitem edui-menuseparator"><div class="edui-menuseparator-inner"></div></div>';
  17689. },
  17690. postRender: function() {},
  17691. queryAutoHide: function() {
  17692. return !0;
  17693. },
  17694. };
  17695. (h.prototype = {
  17696. items: null,
  17697. uiName: "menu",
  17698. initMenu: function() {
  17699. (this.items = this.items || []), this.initPopup(), this.initItems();
  17700. },
  17701. initItems: function() {
  17702. for (var a = 0; a < this.items.length; a++) {
  17703. var b = this.items[a];
  17704. "-" == b
  17705. ? (this.items[a] = this.getSeparator())
  17706. : b instanceof j ||
  17707. ((b.editor = this.editor),
  17708. (b.theme = this.editor.options.theme),
  17709. (this.items[a] = this.createItem(b)));
  17710. }
  17711. },
  17712. getSeparator: function() {
  17713. return i;
  17714. },
  17715. createItem: function(a) {
  17716. return (a.menu = this), new j(a);
  17717. },
  17718. _Popup_getContentHtmlTpl: e.prototype.getContentHtmlTpl,
  17719. getContentHtmlTpl: function() {
  17720. if (0 == this.items.length) return this._Popup_getContentHtmlTpl();
  17721. for (var a = [], b = 0; b < this.items.length; b++) {
  17722. var c = this.items[b];
  17723. a[b] = c.renderHtml();
  17724. }
  17725. return '<div class="%%-body">' + a.join("") + "</div>";
  17726. },
  17727. _Popup_postRender: e.prototype.postRender,
  17728. postRender: function() {
  17729. for (var a = this, d = 0; d < this.items.length; d++) {
  17730. var e = this.items[d];
  17731. (e.ownerMenu = this), e.postRender();
  17732. }
  17733. b.on(this.getDom(), "mouseover", function(b) {
  17734. b = b || event;
  17735. var d = b.relatedTarget || b.fromElement,
  17736. e = a.getDom();
  17737. c.contains(e, d) || e === d || a.fireEvent("over");
  17738. }),
  17739. this._Popup_postRender();
  17740. },
  17741. queryAutoHide: function(a) {
  17742. if (a) {
  17743. if (c.contains(this.getDom(), a)) return !1;
  17744. for (var b = 0; b < this.items.length; b++) {
  17745. var d = this.items[b];
  17746. if (d.queryAutoHide(a) === !1) return !1;
  17747. }
  17748. }
  17749. },
  17750. clearItems: function() {
  17751. for (var a = 0; a < this.items.length; a++) {
  17752. var b = this.items[a];
  17753. clearTimeout(b._showingTimer),
  17754. clearTimeout(b._closingTimer),
  17755. b.subMenu && b.subMenu.destroy();
  17756. }
  17757. this.items = [];
  17758. },
  17759. destroy: function() {
  17760. this.getDom() && b.remove(this.getDom()), this.clearItems();
  17761. },
  17762. dispose: function() {
  17763. this.destroy();
  17764. },
  17765. }),
  17766. a.inherits(h, e);
  17767. var j = (baidu.editor.ui.MenuItem = function(a) {
  17768. if (
  17769. (this.initOptions(a),
  17770. this.initUIBase(),
  17771. this.Stateful_init(),
  17772. this.subMenu && !(this.subMenu instanceof h))
  17773. )
  17774. if (a.className && a.className.indexOf("aligntd") != -1) {
  17775. var c = this;
  17776. (this.subMenu.selected = this.editor.queryCommandValue(
  17777. "cellalignment"
  17778. )),
  17779. (this.subMenu = new e({
  17780. content: new g(this.subMenu),
  17781. parentMenu: c,
  17782. editor: c.editor,
  17783. destroy: function() {
  17784. this.getDom() && b.remove(this.getDom());
  17785. },
  17786. })),
  17787. this.subMenu.addListener("postRenderAfter", function() {
  17788. b.on(this.getDom(), "mouseover", function() {
  17789. c.addState("opened");
  17790. });
  17791. });
  17792. } else this.subMenu = new h(this.subMenu);
  17793. });
  17794. (j.prototype = {
  17795. label: "",
  17796. subMenu: null,
  17797. ownerMenu: null,
  17798. uiName: "menuitem",
  17799. alwalysHoverable: !0,
  17800. getHtmlTpl: function() {
  17801. return (
  17802. '<div id="##" class="%%" stateful onclick="$$._onClick(event, this);"><div class="%%-body">' +
  17803. this.renderLabelHtml() +
  17804. "</div></div>"
  17805. );
  17806. },
  17807. postRender: function() {
  17808. var a = this;
  17809. this.addListener("over", function() {
  17810. a.ownerMenu.fireEvent("submenuover", a),
  17811. a.subMenu && a.delayShowSubMenu();
  17812. }),
  17813. this.subMenu &&
  17814. ((this.getDom().className += " edui-hassubmenu"),
  17815. this.subMenu.render(),
  17816. this.addListener("out", function() {
  17817. a.delayHideSubMenu();
  17818. }),
  17819. this.subMenu.addListener("over", function() {
  17820. clearTimeout(a._closingTimer),
  17821. (a._closingTimer = null),
  17822. a.addState("opened");
  17823. }),
  17824. this.ownerMenu.addListener("hide", function() {
  17825. a.hideSubMenu();
  17826. }),
  17827. this.ownerMenu.addListener("submenuover", function(b, c) {
  17828. c !== a && a.delayHideSubMenu();
  17829. }),
  17830. (this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide),
  17831. (this.subMenu.queryAutoHide = function(b) {
  17832. return (
  17833. (!b || !c.contains(a.getDom(), b)) &&
  17834. this._bakQueryAutoHide(b)
  17835. );
  17836. })),
  17837. (this.getDom().style.tabIndex = "-1"),
  17838. c.makeUnselectable(this.getDom()),
  17839. this.Stateful_postRender();
  17840. },
  17841. delayShowSubMenu: function() {
  17842. var a = this;
  17843. a.isDisabled() ||
  17844. (a.addState("opened"),
  17845. clearTimeout(a._showingTimer),
  17846. clearTimeout(a._closingTimer),
  17847. (a._closingTimer = null),
  17848. (a._showingTimer = setTimeout(function() {
  17849. a.showSubMenu();
  17850. }, 250)));
  17851. },
  17852. delayHideSubMenu: function() {
  17853. var a = this;
  17854. a.isDisabled() ||
  17855. (a.removeState("opened"),
  17856. clearTimeout(a._showingTimer),
  17857. a._closingTimer ||
  17858. (a._closingTimer = setTimeout(function() {
  17859. a.hasState("opened") || a.hideSubMenu(),
  17860. (a._closingTimer = null);
  17861. }, 400)));
  17862. },
  17863. renderLabelHtml: function() {
  17864. return (
  17865. '<div class="edui-arrow"></div><div class="edui-box edui-icon"></div><div class="edui-box edui-label %%-label">' +
  17866. (this.label || "") +
  17867. "</div>"
  17868. );
  17869. },
  17870. getStateDom: function() {
  17871. return this.getDom();
  17872. },
  17873. queryAutoHide: function(a) {
  17874. if (this.subMenu && this.hasState("opened"))
  17875. return this.subMenu.queryAutoHide(a);
  17876. },
  17877. _onClick: function(a, b) {
  17878. this.hasState("disabled") ||
  17879. (this.fireEvent("click", a, b) !== !1 &&
  17880. (this.subMenu ? this.showSubMenu() : e.postHide(a)));
  17881. },
  17882. showSubMenu: function() {
  17883. var a = c.getClientRect(this.getDom());
  17884. (a.right -= 5),
  17885. (a.left += 2),
  17886. (a.width -= 7),
  17887. (a.top -= 4),
  17888. (a.bottom += 4),
  17889. (a.height += 8),
  17890. this.subMenu.showAnchorRect(a, !0, !0);
  17891. },
  17892. hideSubMenu: function() {
  17893. this.subMenu.hide();
  17894. },
  17895. }),
  17896. a.inherits(j, d),
  17897. a.extend(j.prototype, f, !0);
  17898. })(),
  17899. (function() {
  17900. var a = baidu.editor.utils,
  17901. b = baidu.editor.ui.uiUtils,
  17902. c = baidu.editor.ui.Menu,
  17903. d = baidu.editor.ui.SplitButton,
  17904. e = (baidu.editor.ui.Combox = function(a) {
  17905. this.initOptions(a), this.initCombox();
  17906. });
  17907. (e.prototype = {
  17908. uiName: "combox",
  17909. onbuttonclick: function() {
  17910. this.showPopup();
  17911. },
  17912. initCombox: function() {
  17913. var a = this;
  17914. this.items = this.items || [];
  17915. for (var b = 0; b < this.items.length; b++) {
  17916. var d = this.items[b];
  17917. (d.uiName = "listitem"),
  17918. (d.index = b),
  17919. (d.onclick = function() {
  17920. a.selectByIndex(this.index);
  17921. });
  17922. }
  17923. (this.popup = new c({
  17924. items: this.items,
  17925. uiName: "list",
  17926. editor: this.editor,
  17927. captureWheel: !0,
  17928. combox: this,
  17929. })),
  17930. this.initSplitButton();
  17931. },
  17932. _SplitButton_postRender: d.prototype.postRender,
  17933. postRender: function() {
  17934. this._SplitButton_postRender(),
  17935. this.setLabel(this.label || ""),
  17936. this.setValue(this.initValue || "");
  17937. },
  17938. showPopup: function() {
  17939. var a = b.getClientRect(this.getDom());
  17940. (a.top += 1),
  17941. (a.bottom -= 1),
  17942. (a.height -= 2),
  17943. this.popup.showAnchorRect(a);
  17944. },
  17945. getValue: function() {
  17946. return this.value;
  17947. },
  17948. setValue: function(a) {
  17949. var b = this.indexByValue(a);
  17950. b != -1
  17951. ? ((this.selectedIndex = b),
  17952. this.setLabel(this.items[b].label),
  17953. (this.value = this.items[b].value))
  17954. : ((this.selectedIndex = -1),
  17955. this.setLabel(this.getLabelForUnknowValue(a)),
  17956. (this.value = a));
  17957. },
  17958. setLabel: function(a) {
  17959. (this.getDom("button_body").innerHTML = a), (this.label = a);
  17960. },
  17961. getLabelForUnknowValue: function(a) {
  17962. return a;
  17963. },
  17964. indexByValue: function(a) {
  17965. for (var b = 0; b < this.items.length; b++)
  17966. if (a == this.items[b].value) return b;
  17967. return -1;
  17968. },
  17969. getItem: function(a) {
  17970. return this.items[a];
  17971. },
  17972. selectByIndex: function(a) {
  17973. a < this.items.length &&
  17974. this.fireEvent("select", a) !== !1 &&
  17975. ((this.selectedIndex = a),
  17976. (this.value = this.items[a].value),
  17977. this.setLabel(this.items[a].label));
  17978. },
  17979. }),
  17980. a.inherits(e, d);
  17981. })(),
  17982. (function() {
  17983. var a,
  17984. b,
  17985. c,
  17986. d = baidu.editor.utils,
  17987. e = baidu.editor.dom.domUtils,
  17988. f = baidu.editor.ui.uiUtils,
  17989. g = baidu.editor.ui.Mask,
  17990. h = baidu.editor.ui.UIBase,
  17991. i = baidu.editor.ui.Button,
  17992. j = (baidu.editor.ui.Dialog = function(a) {
  17993. if (a.name) {
  17994. var b = a.name,
  17995. c = a.cssRules;
  17996. a.className || (a.className = "edui-for-" + b),
  17997. c &&
  17998. (a.cssRules =
  17999. ".edui-default .edui-for-" +
  18000. b +
  18001. " .edui-dialog-content {" +
  18002. c +
  18003. "}");
  18004. }
  18005. this.initOptions(
  18006. d.extend(
  18007. {
  18008. autoReset: !0,
  18009. draggable: !0,
  18010. onok: function() {},
  18011. oncancel: function() {},
  18012. onclose: function(a, b) {
  18013. return b ? this.onok() : this.oncancel();
  18014. },
  18015. holdScroll: !1,
  18016. },
  18017. a
  18018. )
  18019. ),
  18020. this.initDialog();
  18021. });
  18022. (j.prototype = {
  18023. draggable: !1,
  18024. uiName: "dialog",
  18025. initDialog: function() {
  18026. var e = this,
  18027. f = this.editor.options.theme;
  18028. if (
  18029. (this.cssRules &&
  18030. d.cssRule(
  18031. "edui-customize-" + this.name + "-style",
  18032. this.cssRules
  18033. ),
  18034. this.initUIBase(),
  18035. (this.modalMask =
  18036. a ||
  18037. (a = new g({
  18038. className: "edui-dialog-modalmask",
  18039. theme: f,
  18040. onclick: function() {
  18041. c && c.close(!1);
  18042. },
  18043. }))),
  18044. (this.dragMask =
  18045. b ||
  18046. (b = new g({ className: "edui-dialog-dragmask", theme: f }))),
  18047. (this.closeButton = new i({
  18048. className: "edui-dialog-closebutton",
  18049. title: e.closeDialog,
  18050. theme: f,
  18051. onclick: function() {
  18052. e.close(!1);
  18053. },
  18054. })),
  18055. this.fullscreen && this.initResizeEvent(),
  18056. this.buttons)
  18057. )
  18058. for (var h = 0; h < this.buttons.length; h++)
  18059. this.buttons[h] instanceof i ||
  18060. (this.buttons[h] = new i(
  18061. d.extend(this.buttons[h], { editor: this.editor }, !0)
  18062. ));
  18063. },
  18064. initResizeEvent: function() {
  18065. var a = this;
  18066. e.on(window, "resize", function() {
  18067. a._hidden ||
  18068. void 0 === a._hidden ||
  18069. (a.__resizeTimer && window.clearTimeout(a.__resizeTimer),
  18070. (a.__resizeTimer = window.setTimeout(function() {
  18071. a.__resizeTimer = null;
  18072. var b = a.getDom(),
  18073. c = a.getDom("content"),
  18074. d = UE.ui.uiUtils.getClientRect(b),
  18075. e = UE.ui.uiUtils.getClientRect(c),
  18076. g = f.getViewportRect();
  18077. (c.style.width = g.width - d.width + e.width + "px"),
  18078. (c.style.height = g.height - d.height + e.height + "px"),
  18079. (b.style.width = g.width + "px"),
  18080. (b.style.height = g.height + "px"),
  18081. a.fireEvent("resize");
  18082. }, 100)));
  18083. });
  18084. },
  18085. fitSize: function() {
  18086. var a = this.getDom("body"),
  18087. b = this.mesureSize();
  18088. return (
  18089. (a.style.width = b.width + "px"),
  18090. (a.style.height = b.height + "px"),
  18091. b
  18092. );
  18093. },
  18094. safeSetOffset: function(a) {
  18095. var b = this,
  18096. c = b.getDom(),
  18097. d = f.getViewportRect(),
  18098. e = f.getClientRect(c),
  18099. g = a.left;
  18100. g + e.width > d.right && (g = d.right - e.width);
  18101. var h = a.top;
  18102. h + e.height > d.bottom && (h = d.bottom - e.height),
  18103. (c.style.left = Math.max(g, 0) + "px"),
  18104. (c.style.top = Math.max(h, 0) + "px");
  18105. },
  18106. showAtCenter: function() {
  18107. var a = f.getViewportRect();
  18108. if (this.fullscreen) {
  18109. var b = this.getDom(),
  18110. c = this.getDom("content");
  18111. b.style.display = "block";
  18112. var d = UE.ui.uiUtils.getClientRect(b),
  18113. g = UE.ui.uiUtils.getClientRect(c);
  18114. (b.style.left = "-100000px"),
  18115. (c.style.width = a.width - d.width + g.width + "px"),
  18116. (c.style.height = a.height - d.height + g.height + "px"),
  18117. (b.style.width = a.width + "px"),
  18118. (b.style.height = a.height + "px"),
  18119. (b.style.left = 0),
  18120. (this._originalContext = {
  18121. html: {
  18122. overflowX: document.documentElement.style.overflowX,
  18123. overflowY: document.documentElement.style.overflowY,
  18124. },
  18125. body: {
  18126. overflowX: document.body.style.overflowX,
  18127. overflowY: document.body.style.overflowY,
  18128. },
  18129. }),
  18130. (document.documentElement.style.overflowX = "hidden"),
  18131. (document.documentElement.style.overflowY = "hidden"),
  18132. (document.body.style.overflowX = "hidden"),
  18133. (document.body.style.overflowY = "hidden");
  18134. } else {
  18135. this.getDom().style.display = "";
  18136. var h = this.fitSize(),
  18137. i = 0 | this.getDom("titlebar").offsetHeight,
  18138. j = a.width / 2 - h.width / 2,
  18139. k = a.height / 2 - (h.height - i) / 2 - i,
  18140. l = this.getDom();
  18141. this.safeSetOffset({
  18142. left: Math.max(0 | j, 0),
  18143. top: Math.max(0 | k, 0),
  18144. }),
  18145. e.hasClass(l, "edui-state-centered") ||
  18146. (l.className += " edui-state-centered");
  18147. }
  18148. this._show();
  18149. },
  18150. getContentHtml: function() {
  18151. var a = "";
  18152. return (
  18153. "string" == typeof this.content
  18154. ? (a = this.content)
  18155. : this.iframeUrl &&
  18156. (a =
  18157. '<span id="' +
  18158. this.id +
  18159. '_contmask" class="dialogcontmask"></span><iframe id="' +
  18160. this.id +
  18161. '_iframe" class="%%-iframe" height="100%" width="100%" frameborder="0" src="' +
  18162. this.iframeUrl +
  18163. '"></iframe>'),
  18164. a
  18165. );
  18166. },
  18167. getHtmlTpl: function() {
  18168. var a = "";
  18169. if (this.buttons) {
  18170. for (var b = [], c = 0; c < this.buttons.length; c++)
  18171. b[c] = this.buttons[c].renderHtml();
  18172. a =
  18173. '<div class="%%-foot"><div id="##_buttons" class="%%-buttons">' +
  18174. b.join("") +
  18175. "</div></div>";
  18176. }
  18177. return (
  18178. '<div id="##" class="%%"><div ' +
  18179. (this.fullscreen
  18180. ? 'class="%%-wrap edui-dialog-fullscreen-flag"'
  18181. : 'class="%%"') +
  18182. '><div id="##_body" class="%%-body"><div class="%%-shadow"></div><div id="##_titlebar" class="%%-titlebar"><div class="%%-draghandle" onmousedown="$$._onTitlebarMouseDown(event, this);"><span class="%%-caption">' +
  18183. (this.title || "") +
  18184. "</span></div>" +
  18185. this.closeButton.renderHtml() +
  18186. '</div><div id="##_content" class="%%-content">' +
  18187. (this.autoReset ? "" : this.getContentHtml()) +
  18188. "</div>" +
  18189. a +
  18190. "</div></div></div>"
  18191. );
  18192. },
  18193. postRender: function() {
  18194. this.modalMask.getDom() ||
  18195. (this.modalMask.render(), this.modalMask.hide()),
  18196. this.dragMask.getDom() ||
  18197. (this.dragMask.render(), this.dragMask.hide());
  18198. var a = this;
  18199. if (
  18200. (this.addListener("show", function() {
  18201. a.modalMask.show(this.getDom().style.zIndex - 2);
  18202. }),
  18203. this.addListener("hide", function() {
  18204. a.modalMask.hide();
  18205. }),
  18206. this.buttons)
  18207. )
  18208. for (var b = 0; b < this.buttons.length; b++)
  18209. this.buttons[b].postRender();
  18210. e.on(window, "resize", function() {
  18211. setTimeout(function() {
  18212. a.isHidden() || a.safeSetOffset(f.getClientRect(a.getDom()));
  18213. });
  18214. }),
  18215. this._hide();
  18216. },
  18217. mesureSize: function() {
  18218. var a = this.getDom("body"),
  18219. b = f.getClientRect(this.getDom("content")).width,
  18220. c = a.style;
  18221. return (c.width = b), f.getClientRect(a);
  18222. },
  18223. _onTitlebarMouseDown: function(a, b) {
  18224. if (this.draggable) {
  18225. var c,
  18226. d = (f.getViewportRect(), this);
  18227. f.startDrag(a, {
  18228. ondragstart: function() {
  18229. (c = f.getClientRect(d.getDom())),
  18230. (d.getDom("contmask").style.visibility = "visible"),
  18231. d.dragMask.show(d.getDom().style.zIndex - 1);
  18232. },
  18233. ondragmove: function(a, b) {
  18234. var e = c.left + a,
  18235. f = c.top + b;
  18236. d.safeSetOffset({ left: e, top: f });
  18237. },
  18238. ondragstop: function() {
  18239. (d.getDom("contmask").style.visibility = "hidden"),
  18240. e.removeClasses(d.getDom(), ["edui-state-centered"]),
  18241. d.dragMask.hide();
  18242. },
  18243. });
  18244. }
  18245. },
  18246. reset: function() {
  18247. (this.getDom("content").innerHTML = this.getContentHtml()),
  18248. this.fireEvent("dialogafterreset");
  18249. },
  18250. _show: function() {
  18251. this._hidden &&
  18252. ((this.getDom().style.display = ""),
  18253. this.editor.container.style.zIndex &&
  18254. (this.getDom().style.zIndex =
  18255. 1 * this.editor.container.style.zIndex + 10),
  18256. (this._hidden = !1),
  18257. this.fireEvent("show"),
  18258. (baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex =
  18259. this.getDom().style.zIndex - 4));
  18260. },
  18261. isHidden: function() {
  18262. return this._hidden;
  18263. },
  18264. _hide: function() {
  18265. if (!this._hidden) {
  18266. var a = this.getDom();
  18267. (a.style.display = "none"),
  18268. (a.style.zIndex = ""),
  18269. (a.style.width = ""),
  18270. (a.style.height = ""),
  18271. (this._hidden = !0),
  18272. this.fireEvent("hide");
  18273. }
  18274. },
  18275. open: function() {
  18276. if (this.autoReset)
  18277. try {
  18278. this.reset();
  18279. } catch (a) {
  18280. this.render(), this.open();
  18281. }
  18282. if ((this.showAtCenter(), this.iframeUrl))
  18283. try {
  18284. this.getDom("iframe").focus();
  18285. } catch (b) {}
  18286. c = this;
  18287. },
  18288. _onCloseButtonClick: function(a, b) {
  18289. this.close(!1);
  18290. },
  18291. close: function(a) {
  18292. if (this.fireEvent("close", a) !== !1) {
  18293. this.fullscreen &&
  18294. ((document.documentElement.style.overflowX = this._originalContext.html.overflowX),
  18295. (document.documentElement.style.overflowY = this._originalContext.html.overflowY),
  18296. (document.body.style.overflowX = this._originalContext.body.overflowX),
  18297. (document.body.style.overflowY = this._originalContext.body.overflowY),
  18298. delete this._originalContext),
  18299. this._hide();
  18300. var b = this.getDom("content"),
  18301. c = this.getDom("iframe");
  18302. if (b && c) {
  18303. var d = c.contentDocument || c.contentWindow.document;
  18304. d && (d.body.innerHTML = ""), e.remove(b);
  18305. }
  18306. }
  18307. },
  18308. }),
  18309. d.inherits(j, h);
  18310. })(),
  18311. (function() {
  18312. var a = baidu.editor.utils,
  18313. b = baidu.editor.ui.Menu,
  18314. c = baidu.editor.ui.SplitButton,
  18315. d = (baidu.editor.ui.MenuButton = function(a) {
  18316. this.initOptions(a), this.initMenuButton();
  18317. });
  18318. (d.prototype = {
  18319. initMenuButton: function() {
  18320. var a = this;
  18321. (this.uiName = "menubutton"),
  18322. (this.popup = new b({
  18323. items: a.items,
  18324. className: a.className,
  18325. editor: a.editor,
  18326. })),
  18327. this.popup.addListener("show", function() {
  18328. for (var b = this, c = 0; c < b.items.length; c++)
  18329. b.items[c].removeState("checked"),
  18330. b.items[c].value == a._value &&
  18331. (b.items[c].addState("checked"), (this.value = a._value));
  18332. }),
  18333. this.initSplitButton();
  18334. },
  18335. setValue: function(a) {
  18336. this._value = a;
  18337. },
  18338. }),
  18339. a.inherits(d, c);
  18340. })(),
  18341. (function() {
  18342. var a = baidu.editor.utils,
  18343. b = baidu.editor.ui.Popup,
  18344. c = baidu.editor.ui.SplitButton,
  18345. d = (baidu.editor.ui.MultiMenuPop = function(a) {
  18346. this.initOptions(a), this.initMultiMenu();
  18347. });
  18348. (d.prototype = {
  18349. initMultiMenu: function() {
  18350. var a = this;
  18351. (this.popup = new b({
  18352. content: "",
  18353. editor: a.editor,
  18354. iframe_rendered: !1,
  18355. onshow: function() {
  18356. this.iframe_rendered ||
  18357. ((this.iframe_rendered = !0),
  18358. (this.getDom("content").innerHTML =
  18359. '<iframe id="' +
  18360. a.id +
  18361. '_iframe" src="' +
  18362. a.iframeUrl +
  18363. '" frameborder="0"></iframe>'),
  18364. a.editor.container.style.zIndex &&
  18365. (this.getDom().style.zIndex =
  18366. 1 * a.editor.container.style.zIndex + 1));
  18367. },
  18368. })),
  18369. (this.onbuttonclick = function() {
  18370. this.showPopup();
  18371. }),
  18372. this.initSplitButton();
  18373. },
  18374. }),
  18375. a.inherits(d, c);
  18376. })(),
  18377. (function() {
  18378. function a(a) {
  18379. var b = a.target || a.srcElement,
  18380. c = g.findParent(
  18381. b,
  18382. function(a) {
  18383. return (
  18384. g.hasClass(a, "edui-shortcutmenu") ||
  18385. g.hasClass(a, "edui-popup")
  18386. );
  18387. },
  18388. !0
  18389. );
  18390. if (!c) for (var d, e = 0; (d = h[e++]); ) d.hide();
  18391. }
  18392. var b,
  18393. c = baidu.editor.ui,
  18394. d = c.UIBase,
  18395. e = c.uiUtils,
  18396. f = baidu.editor.utils,
  18397. g = baidu.editor.dom.domUtils,
  18398. h = [],
  18399. i = !1,
  18400. j = (c.ShortCutMenu = function(a) {
  18401. this.initOptions(a), this.initShortCutMenu();
  18402. });
  18403. (j.postHide = a),
  18404. (j.prototype = {
  18405. isHidden: !0,
  18406. SPACE: 5,
  18407. initShortCutMenu: function() {
  18408. (this.items = this.items || []),
  18409. this.initUIBase(),
  18410. this.initItems(),
  18411. this.initEvent(),
  18412. h.push(this);
  18413. },
  18414. initEvent: function() {
  18415. var a = this,
  18416. c = a.editor.document;
  18417. g.on(c, "mousemove", function(c) {
  18418. if (a.isHidden === !1) {
  18419. if (a.getSubMenuMark() || "contextmenu" == a.eventType) return;
  18420. var d = !0,
  18421. e = a.getDom(),
  18422. f = e.offsetWidth,
  18423. g = e.offsetHeight,
  18424. h = f / 2 + a.SPACE,
  18425. i = g / 2,
  18426. j = Math.abs(c.screenX - a.left),
  18427. k = Math.abs(c.screenY - a.top);
  18428. clearTimeout(b),
  18429. (b = setTimeout(function() {
  18430. k > 0 && k < i
  18431. ? a.setOpacity(e, "1")
  18432. : k > i && k < i + 70
  18433. ? (a.setOpacity(e, "0.5"), (d = !1))
  18434. : k > i + 70 && k < i + 140 && a.hide(),
  18435. d && j > 0 && j < h
  18436. ? a.setOpacity(e, "1")
  18437. : j > h && j < h + 70
  18438. ? a.setOpacity(e, "0.5")
  18439. : j > h + 70 && j < h + 140 && a.hide();
  18440. }));
  18441. }
  18442. }),
  18443. browser.chrome &&
  18444. g.on(c, "mouseout", function(b) {
  18445. var c = b.relatedTarget || b.toElement;
  18446. (null != c && "HTML" != c.tagName) || a.hide();
  18447. }),
  18448. a.editor.addListener("afterhidepop", function() {
  18449. a.isHidden || (i = !0);
  18450. });
  18451. },
  18452. initItems: function() {
  18453. if (f.isArray(this.items))
  18454. for (var a = 0, b = this.items.length; a < b; a++) {
  18455. var d = this.items[a].toLowerCase();
  18456. c[d] &&
  18457. ((this.items[a] = new c[d](this.editor)),
  18458. (this.items[a].className += " edui-shortcutsubmenu "));
  18459. }
  18460. },
  18461. setOpacity: function(a, b) {
  18462. browser.ie && browser.version < 9
  18463. ? (a.style.filter =
  18464. "alpha(opacity = " + 100 * parseFloat(b) + ");")
  18465. : (a.style.opacity = b);
  18466. },
  18467. getSubMenuMark: function() {
  18468. i = !1;
  18469. for (
  18470. var a,
  18471. b = e.getFixedLayer(),
  18472. c = g.getElementsByTagName(b, "div", function(a) {
  18473. return g.hasClass(a, "edui-shortcutsubmenu edui-popup");
  18474. }),
  18475. d = 0;
  18476. (a = c[d++]);
  18477. )
  18478. "none" != a.style.display && (i = !0);
  18479. return i;
  18480. },
  18481. show: function(a, b) {
  18482. function c(a) {
  18483. a.left < 0 && (a.left = 0),
  18484. a.top < 0 && (a.top = 0),
  18485. (i.style.cssText =
  18486. "position:absolute;left:" +
  18487. a.left +
  18488. "px;top:" +
  18489. a.top +
  18490. "px;");
  18491. }
  18492. function d(a) {
  18493. a.tagName || (a = a.getDom()),
  18494. (h.left = parseInt(a.style.left)),
  18495. (h.top = parseInt(a.style.top)),
  18496. (h.top -= i.offsetHeight + 15),
  18497. c(h);
  18498. }
  18499. var f = this,
  18500. h = {},
  18501. i = this.getDom(),
  18502. j = e.getFixedLayer();
  18503. if (
  18504. ((f.eventType = a.type),
  18505. (i.style.cssText = "display:block;left:-9999px"),
  18506. "contextmenu" == a.type && b)
  18507. ) {
  18508. var k = g.getElementsByTagName(j, "div", "edui-contextmenu")[0];
  18509. k
  18510. ? d(k)
  18511. : f.editor.addListener("aftershowcontextmenu", function(a, b) {
  18512. d(b);
  18513. });
  18514. } else
  18515. (h = e.getViewportOffsetByEvent(a)),
  18516. (h.top -= i.offsetHeight + f.SPACE),
  18517. (h.left += f.SPACE + 20),
  18518. c(h),
  18519. f.setOpacity(i, 0.2);
  18520. (f.isHidden = !1),
  18521. (f.left = a.screenX + i.offsetWidth / 2 - f.SPACE),
  18522. (f.top = a.screenY - i.offsetHeight / 2 - f.SPACE),
  18523. f.editor &&
  18524. ((i.style.zIndex = 1 * f.editor.container.style.zIndex + 10),
  18525. (j.style.zIndex = i.style.zIndex - 1));
  18526. },
  18527. hide: function() {
  18528. this.getDom() && (this.getDom().style.display = "none"),
  18529. (this.isHidden = !0);
  18530. },
  18531. postRender: function() {
  18532. if (f.isArray(this.items))
  18533. for (var a, b = 0; (a = this.items[b++]); ) a.postRender();
  18534. },
  18535. getHtmlTpl: function() {
  18536. var a;
  18537. if (f.isArray(this.items)) {
  18538. a = [];
  18539. for (var b = 0; b < this.items.length; b++)
  18540. a[b] = this.items[b].renderHtml();
  18541. a = a.join("");
  18542. } else a = this.items;
  18543. return (
  18544. '<div id="##" class="%% edui-toolbar" data-src="shortcutmenu" onmousedown="return false;" onselectstart="return false;" >' +
  18545. a +
  18546. "</div>"
  18547. );
  18548. },
  18549. }),
  18550. f.inherits(j, d),
  18551. g.on(document, "mousedown", function(b) {
  18552. a(b);
  18553. }),
  18554. g.on(window, "scroll", function(b) {
  18555. a(b);
  18556. });
  18557. })(),
  18558. (function() {
  18559. var a = baidu.editor.utils,
  18560. b = baidu.editor.ui.UIBase,
  18561. c = (baidu.editor.ui.Breakline = function(a) {
  18562. this.initOptions(a), this.initSeparator();
  18563. });
  18564. (c.prototype = {
  18565. uiName: "Breakline",
  18566. initSeparator: function() {
  18567. this.initUIBase();
  18568. },
  18569. getHtmlTpl: function() {
  18570. return "<br/>";
  18571. },
  18572. }),
  18573. a.inherits(c, b);
  18574. })(),
  18575. (function() {
  18576. var a = baidu.editor.utils,
  18577. b = baidu.editor.dom.domUtils,
  18578. c = baidu.editor.ui.UIBase,
  18579. d = (baidu.editor.ui.Message = function(a) {
  18580. this.initOptions(a), this.initMessage();
  18581. });
  18582. (d.prototype = {
  18583. initMessage: function() {
  18584. this.initUIBase();
  18585. },
  18586. getHtmlTpl: function() {
  18587. return '<div id="##" class="edui-message %%"> <div id="##_closer" class="edui-message-closer">×</div> <div id="##_body" class="edui-message-body edui-message-type-info"> <iframe style="position:absolute;z-index:-1;left:0;top:0;background-color: transparent;" frameborder="0" width="100%" height="100%" src="about:blank"></iframe> <div class="edui-shadow"></div> <div id="##_content" class="edui-message-content"> </div> </div></div>';
  18588. },
  18589. reset: function(a) {
  18590. var b = this;
  18591. a.keepshow ||
  18592. (clearTimeout(this.timer),
  18593. (b.timer = setTimeout(function() {
  18594. b.hide();
  18595. }, a.timeout || 4e3))),
  18596. void 0 !== a.content && b.setContent(a.content),
  18597. void 0 !== a.type && b.setType(a.type),
  18598. b.show();
  18599. },
  18600. postRender: function() {
  18601. var a = this,
  18602. c = this.getDom("closer");
  18603. c &&
  18604. b.on(c, "click", function() {
  18605. a.hide();
  18606. });
  18607. },
  18608. setContent: function(a) {
  18609. this.getDom("content").innerHTML = a;
  18610. },
  18611. setType: function(a) {
  18612. a = a || "info";
  18613. var b = this.getDom("body");
  18614. b.className = b.className.replace(
  18615. /edui-message-type-[\w-]+/,
  18616. "edui-message-type-" + a
  18617. );
  18618. },
  18619. getContent: function() {
  18620. return this.getDom("content").innerHTML;
  18621. },
  18622. getType: function() {
  18623. var a = this.getDom("body").match(/edui-message-type-([\w-]+)/);
  18624. return a ? a[1] : "";
  18625. },
  18626. show: function() {
  18627. this.getDom().style.display = "block";
  18628. },
  18629. hide: function() {
  18630. var a = this.getDom();
  18631. a &&
  18632. ((a.style.display = "none"),
  18633. a.parentNode && a.parentNode.removeChild(a));
  18634. },
  18635. }),
  18636. a.inherits(d, c);
  18637. })(),
  18638. (function() {
  18639. var a = baidu.editor.utils,
  18640. b = baidu.editor.ui,
  18641. c = b.Dialog;
  18642. (b.buttons = {}),
  18643. (b.Dialog = function(a) {
  18644. var b = new c(a);
  18645. return (
  18646. b.addListener("hide", function() {
  18647. if (b.editor) {
  18648. var a = b.editor;
  18649. try {
  18650. if (browser.gecko) {
  18651. var c = a.window.scrollY,
  18652. d = a.window.scrollX;
  18653. a.body.focus(), a.window.scrollTo(d, c);
  18654. } else a.focus();
  18655. } catch (e) {}
  18656. }
  18657. }),
  18658. b
  18659. );
  18660. });
  18661. for (
  18662. var d,
  18663. e = {
  18664. anchor: "~/dialogs/anchor/anchor.html",
  18665. insertimage: "~/dialogs/image/image.html",
  18666. link: "~/dialogs/link/link.html",
  18667. spechars: "~/dialogs/spechars/spechars.html",
  18668. searchreplace: "~/dialogs/searchreplace/searchreplace.html",
  18669. map: "~/dialogs/map/map.html",
  18670. gmap: "~/dialogs/gmap/gmap.html",
  18671. insertvideo: "~/dialogs/video/video.html",
  18672. help: "~/dialogs/help/help.html",
  18673. preview: "~/dialogs/preview/preview.html",
  18674. emotion: "~/dialogs/emotion/emotion.html",
  18675. wordimage: "~/dialogs/wordimage/wordimage.html",
  18676. attachment: "~/dialogs/attachment/attachment.html",
  18677. insertframe: "~/dialogs/insertframe/insertframe.html",
  18678. edittip: "~/dialogs/table/edittip.html",
  18679. edittable: "~/dialogs/table/edittable.html",
  18680. edittd: "~/dialogs/table/edittd.html",
  18681. webapp: "~/dialogs/webapp/webapp.html",
  18682. snapscreen: "~/dialogs/snapscreen/snapscreen.html",
  18683. scrawl: "~/dialogs/scrawl/scrawl.html",
  18684. music: "~/dialogs/music/music.html",
  18685. template: "~/dialogs/template/template.html",
  18686. background: "~/dialogs/background/background.html",
  18687. charts: "~/dialogs/charts/charts.html",
  18688. },
  18689. f = [
  18690. "undo",
  18691. "redo",
  18692. "formatmatch",
  18693. "bold",
  18694. "italic",
  18695. "underline",
  18696. "fontborder",
  18697. "touppercase",
  18698. "tolowercase",
  18699. "strikethrough",
  18700. "subscript",
  18701. "superscript",
  18702. "source",
  18703. "indent",
  18704. "outdent",
  18705. "blockquote",
  18706. "pasteplain",
  18707. "pagebreak",
  18708. "selectall",
  18709. "print",
  18710. "horizontal",
  18711. "removeformat",
  18712. "time",
  18713. "date",
  18714. "unlink",
  18715. "insertparagraphbeforetable",
  18716. "insertrow",
  18717. "insertcol",
  18718. "mergeright",
  18719. "mergedown",
  18720. "deleterow",
  18721. "deletecol",
  18722. "splittorows",
  18723. "splittocols",
  18724. "splittocells",
  18725. "mergecells",
  18726. "deletetable",
  18727. "drafts",
  18728. ],
  18729. g = 0;
  18730. (d = f[g++]);
  18731. )
  18732. (d = d.toLowerCase()),
  18733. (b[d] = (function(a) {
  18734. return function(c) {
  18735. var d = new b.Button({
  18736. className: "edui-for-" + a,
  18737. title:
  18738. c.options.labelMap[a] || c.getLang("labelMap." + a) || "",
  18739. onclick: function() {
  18740. c.execCommand(a);
  18741. },
  18742. theme: c.options.theme,
  18743. showText: !1,
  18744. });
  18745. return (
  18746. (b.buttons[a] = d),
  18747. c.addListener("selectionchange", function(b, e, f) {
  18748. var g = c.queryCommandState(a);
  18749. g == -1
  18750. ? (d.setDisabled(!0), d.setChecked(!1))
  18751. : f || (d.setDisabled(!1), d.setChecked(g));
  18752. }),
  18753. d
  18754. );
  18755. };
  18756. })(d));
  18757. b.cleardoc = function(a) {
  18758. var c = new b.Button({
  18759. className: "edui-for-cleardoc",
  18760. title:
  18761. a.options.labelMap.cleardoc || a.getLang("labelMap.cleardoc") || "",
  18762. theme: a.options.theme,
  18763. onclick: function() {
  18764. confirm(a.getLang("confirmClear")) && a.execCommand("cleardoc");
  18765. },
  18766. });
  18767. return (
  18768. (b.buttons.cleardoc = c),
  18769. a.addListener("selectionchange", function() {
  18770. c.setDisabled(a.queryCommandState("cleardoc") == -1);
  18771. }),
  18772. c
  18773. );
  18774. };
  18775. var h = {
  18776. justify: ["left", "right", "center", "justify"],
  18777. imagefloat: ["none", "left", "center", "right"],
  18778. directionality: ["ltr", "rtl"],
  18779. };
  18780. for (var i in h)
  18781. !(function(a, c) {
  18782. for (var d, e = 0; (d = c[e++]); )
  18783. !(function(c) {
  18784. b[a.replace("float", "") + c] = function(d) {
  18785. var e = new b.Button({
  18786. className: "edui-for-" + a.replace("float", "") + c,
  18787. title:
  18788. d.options.labelMap[a.replace("float", "") + c] ||
  18789. d.getLang("labelMap." + a.replace("float", "") + c) ||
  18790. "",
  18791. theme: d.options.theme,
  18792. onclick: function() {
  18793. d.execCommand(a, c);
  18794. },
  18795. });
  18796. return (
  18797. (b.buttons[a] = e),
  18798. d.addListener("selectionchange", function(b, f, g) {
  18799. e.setDisabled(d.queryCommandState(a) == -1),
  18800. e.setChecked(d.queryCommandValue(a) == c && !g);
  18801. }),
  18802. e
  18803. );
  18804. };
  18805. })(d);
  18806. })(i, h[i]);
  18807. for (var d, g = 0; (d = ["backcolor", "forecolor"][g++]); )
  18808. b[d] = (function(a) {
  18809. return function(c) {
  18810. var d = new b.ColorButton({
  18811. className: "edui-for-" + a,
  18812. color: "default",
  18813. title: c.options.labelMap[a] || c.getLang("labelMap." + a) || "",
  18814. editor: c,
  18815. onpickcolor: function(b, d) {
  18816. c.execCommand(a, d);
  18817. },
  18818. onpicknocolor: function() {
  18819. c.execCommand(a, "default"),
  18820. this.setColor("transparent"),
  18821. (this.color = "default");
  18822. },
  18823. onbuttonclick: function() {
  18824. c.execCommand(a, this.color);
  18825. },
  18826. });
  18827. return (
  18828. (b.buttons[a] = d),
  18829. c.addListener("selectionchange", function() {
  18830. d.setDisabled(c.queryCommandState(a) == -1);
  18831. }),
  18832. d
  18833. );
  18834. };
  18835. })(d);
  18836. var j = {
  18837. noOk: ["searchreplace", "help", "spechars", "webapp", "preview"],
  18838. ok: [
  18839. "attachment",
  18840. "anchor",
  18841. "link",
  18842. "insertimage",
  18843. "map",
  18844. "gmap",
  18845. "insertframe",
  18846. "wordimage",
  18847. "insertvideo",
  18848. "insertframe",
  18849. "edittip",
  18850. "edittable",
  18851. "edittd",
  18852. "scrawl",
  18853. "template",
  18854. "music",
  18855. "background",
  18856. "charts",
  18857. ],
  18858. };
  18859. for (var i in j)
  18860. !(function(c, d) {
  18861. for (var f, g = 0; (f = d[g++]); )
  18862. (browser.opera && "searchreplace" === f) ||
  18863. !(function(d) {
  18864. b[d] = function(f, g, h) {
  18865. (g = g || (f.options.iframeUrlMap || {})[d] || e[d]),
  18866. (h =
  18867. f.options.labelMap[d] ||
  18868. f.getLang("labelMap." + d) ||
  18869. "");
  18870. var i;
  18871. g &&
  18872. ((i = new b.Dialog(
  18873. a.extend(
  18874. {
  18875. iframeUrl: f.ui.mapUrl(g),
  18876. editor: f,
  18877. className: "edui-for-" + d,
  18878. title: h,
  18879. holdScroll: "insertimage" === d,
  18880. fullscreen: /charts|preview/.test(d),
  18881. closeDialog: f.getLang("closeDialog"),
  18882. },
  18883. "ok" == c
  18884. ? {
  18885. buttons: [
  18886. {
  18887. className: "edui-okbutton",
  18888. label: f.getLang("ok"),
  18889. editor: f,
  18890. onclick: function() {
  18891. i.close(!0);
  18892. },
  18893. },
  18894. {
  18895. className: "edui-cancelbutton",
  18896. label: f.getLang("cancel"),
  18897. editor: f,
  18898. onclick: function() {
  18899. i.close(!1);
  18900. },
  18901. },
  18902. ],
  18903. }
  18904. : {}
  18905. )
  18906. )),
  18907. (f.ui._dialogs[d + "Dialog"] = i));
  18908. var j = new b.Button({
  18909. className: "edui-for-" + d,
  18910. title: h,
  18911. onclick: function() {
  18912. if (i)
  18913. switch (d) {
  18914. case "wordimage":
  18915. var a = f.execCommand("wordimage");
  18916. a && a.length && (i.render(), i.open());
  18917. break;
  18918. case "scrawl":
  18919. f.queryCommandState("scrawl") != -1 &&
  18920. (i.render(), i.open());
  18921. break;
  18922. default:
  18923. i.render(), i.open();
  18924. }
  18925. },
  18926. theme: f.options.theme,
  18927. disabled:
  18928. ("scrawl" == d && f.queryCommandState("scrawl") == -1) ||
  18929. "charts" == d,
  18930. });
  18931. return (
  18932. (b.buttons[d] = j),
  18933. f.addListener("selectionchange", function() {
  18934. var a = { edittable: 1 };
  18935. if (!(d in a)) {
  18936. var b = f.queryCommandState(d);
  18937. j.getDom() && (j.setDisabled(b == -1), j.setChecked(b));
  18938. }
  18939. }),
  18940. j
  18941. );
  18942. };
  18943. })(f.toLowerCase());
  18944. })(i, j[i]);
  18945. (b.snapscreen = function(a, c, d) {
  18946. d =
  18947. a.options.labelMap.snapscreen ||
  18948. a.getLang("labelMap.snapscreen") ||
  18949. "";
  18950. var f = new b.Button({
  18951. className: "edui-for-snapscreen",
  18952. title: d,
  18953. onclick: function() {
  18954. a.execCommand("snapscreen");
  18955. },
  18956. theme: a.options.theme,
  18957. });
  18958. if (
  18959. ((b.buttons.snapscreen = f),
  18960. (c = c || (a.options.iframeUrlMap || {}).snapscreen || e.snapscreen))
  18961. ) {
  18962. var g = new b.Dialog({
  18963. iframeUrl: a.ui.mapUrl(c),
  18964. editor: a,
  18965. className: "edui-for-snapscreen",
  18966. title: d,
  18967. buttons: [
  18968. {
  18969. className: "edui-okbutton",
  18970. label: a.getLang("ok"),
  18971. editor: a,
  18972. onclick: function() {
  18973. g.close(!0);
  18974. },
  18975. },
  18976. {
  18977. className: "edui-cancelbutton",
  18978. label: a.getLang("cancel"),
  18979. editor: a,
  18980. onclick: function() {
  18981. g.close(!1);
  18982. },
  18983. },
  18984. ],
  18985. });
  18986. g.render(), (a.ui._dialogs.snapscreenDialog = g);
  18987. }
  18988. return (
  18989. a.addListener("selectionchange", function() {
  18990. f.setDisabled(a.queryCommandState("snapscreen") == -1);
  18991. }),
  18992. f
  18993. );
  18994. }),
  18995. (b.insertcode = function(c, d, e) {
  18996. (d = c.options.insertcode || []),
  18997. (e =
  18998. c.options.labelMap.insertcode ||
  18999. c.getLang("labelMap.insertcode") ||
  19000. "");
  19001. var f = [];
  19002. a.each(d, function(a, b) {
  19003. f.push({
  19004. label: a,
  19005. value: b,
  19006. theme: c.options.theme,
  19007. renderLabelHtml: function() {
  19008. return (
  19009. '<div class="edui-label %%-label" >' +
  19010. (this.label || "") +
  19011. "</div>"
  19012. );
  19013. },
  19014. });
  19015. });
  19016. var g = new b.Combox({
  19017. editor: c,
  19018. items: f,
  19019. onselect: function(a, b) {
  19020. c.execCommand("insertcode", this.items[b].value);
  19021. },
  19022. onbuttonclick: function() {
  19023. this.showPopup();
  19024. },
  19025. title: e,
  19026. initValue: e,
  19027. className: "edui-for-insertcode",
  19028. indexByValue: function(a) {
  19029. if (a)
  19030. for (var b, c = 0; (b = this.items[c]); c++)
  19031. if (b.value.indexOf(a) != -1) return c;
  19032. return -1;
  19033. },
  19034. });
  19035. return (
  19036. (b.buttons.insertcode = g),
  19037. c.addListener("selectionchange", function(a, b, d) {
  19038. if (!d) {
  19039. var f = c.queryCommandState("insertcode");
  19040. if (f == -1) g.setDisabled(!0);
  19041. else {
  19042. g.setDisabled(!1);
  19043. var h = c.queryCommandValue("insertcode");
  19044. if (!h) return void g.setValue(e);
  19045. h && (h = h.replace(/['"]/g, "").split(",")[0]),
  19046. g.setValue(h);
  19047. }
  19048. }
  19049. }),
  19050. g
  19051. );
  19052. }),
  19053. (b.fontfamily = function(c, d, e) {
  19054. if (
  19055. ((d = c.options.fontfamily || []),
  19056. (e =
  19057. c.options.labelMap.fontfamily ||
  19058. c.getLang("labelMap.fontfamily") ||
  19059. ""),
  19060. d.length)
  19061. ) {
  19062. for (var f, g = 0, h = []; (f = d[g]); g++) {
  19063. var i = c.getLang("fontfamily")[f.name] || "";
  19064. !(function(b, d) {
  19065. h.push({
  19066. label: b,
  19067. value: d,
  19068. theme: c.options.theme,
  19069. renderLabelHtml: function() {
  19070. return (
  19071. '<div class="edui-label %%-label" style="font-family:' +
  19072. a.unhtml(this.value) +
  19073. '">' +
  19074. (this.label || "") +
  19075. "</div>"
  19076. );
  19077. },
  19078. });
  19079. })(f.label || i, f.val);
  19080. }
  19081. var j = new b.Combox({
  19082. editor: c,
  19083. items: h,
  19084. onselect: function(a, b) {
  19085. c.execCommand("FontFamily", this.items[b].value);
  19086. },
  19087. onbuttonclick: function() {
  19088. this.showPopup();
  19089. },
  19090. title: e,
  19091. initValue: e,
  19092. className: "edui-for-fontfamily",
  19093. indexByValue: function(a) {
  19094. if (a)
  19095. for (var b, c = 0; (b = this.items[c]); c++)
  19096. if (b.value.indexOf(a) != -1) return c;
  19097. return -1;
  19098. },
  19099. });
  19100. return (
  19101. (b.buttons.fontfamily = j),
  19102. c.addListener("selectionchange", function(a, b, d) {
  19103. if (!d) {
  19104. var e = c.queryCommandState("FontFamily");
  19105. if (e == -1) j.setDisabled(!0);
  19106. else {
  19107. j.setDisabled(!1);
  19108. var f = c.queryCommandValue("FontFamily");
  19109. f && (f = f.replace(/['"]/g, "").split(",")[0]),
  19110. j.setValue(f);
  19111. }
  19112. }
  19113. }),
  19114. j
  19115. );
  19116. }
  19117. }),
  19118. (b.fontsize = function(a, c, d) {
  19119. if (
  19120. ((d =
  19121. a.options.labelMap.fontsize ||
  19122. a.getLang("labelMap.fontsize") ||
  19123. ""),
  19124. (c = c || a.options.fontsize || []),
  19125. c.length)
  19126. ) {
  19127. for (var e = [], f = 0; f < c.length; f++) {
  19128. var g = c[f] + "px";
  19129. e.push({
  19130. label: g,
  19131. value: g,
  19132. theme: a.options.theme,
  19133. renderLabelHtml: function() {
  19134. return (
  19135. '<div class="edui-label %%-label" style="line-height:1;font-size:' +
  19136. this.value +
  19137. '">' +
  19138. (this.label || "") +
  19139. "</div>"
  19140. );
  19141. },
  19142. });
  19143. }
  19144. var h = new b.Combox({
  19145. editor: a,
  19146. items: e,
  19147. title: d,
  19148. initValue: d,
  19149. onselect: function(b, c) {
  19150. a.execCommand("FontSize", this.items[c].value);
  19151. },
  19152. onbuttonclick: function() {
  19153. this.showPopup();
  19154. },
  19155. className: "edui-for-fontsize",
  19156. });
  19157. return (
  19158. (b.buttons.fontsize = h),
  19159. a.addListener("selectionchange", function(b, c, d) {
  19160. if (!d) {
  19161. var e = a.queryCommandState("FontSize");
  19162. e == -1
  19163. ? h.setDisabled(!0)
  19164. : (h.setDisabled(!1),
  19165. h.setValue(a.queryCommandValue("FontSize")));
  19166. }
  19167. }),
  19168. h
  19169. );
  19170. }
  19171. }),
  19172. (b.paragraph = function(c, d, e) {
  19173. if (
  19174. ((e =
  19175. c.options.labelMap.paragraph ||
  19176. c.getLang("labelMap.paragraph") ||
  19177. ""),
  19178. (d = c.options.paragraph || []),
  19179. !a.isEmptyObject(d))
  19180. ) {
  19181. var f = [];
  19182. for (var g in d)
  19183. f.push({
  19184. value: g,
  19185. label: d[g] || c.getLang("paragraph")[g],
  19186. theme: c.options.theme,
  19187. renderLabelHtml: function() {
  19188. return (
  19189. '<div class="edui-label %%-label"><span class="edui-for-' +
  19190. this.value +
  19191. '">' +
  19192. (this.label || "") +
  19193. "</span></div>"
  19194. );
  19195. },
  19196. });
  19197. var h = new b.Combox({
  19198. editor: c,
  19199. items: f,
  19200. title: e,
  19201. initValue: e,
  19202. className: "edui-for-paragraph",
  19203. onselect: function(a, b) {
  19204. c.execCommand("Paragraph", this.items[b].value);
  19205. },
  19206. onbuttonclick: function() {
  19207. this.showPopup();
  19208. },
  19209. });
  19210. return (
  19211. (b.buttons.paragraph = h),
  19212. c.addListener("selectionchange", function(a, b, d) {
  19213. if (!d) {
  19214. var e = c.queryCommandState("Paragraph");
  19215. if (e == -1) h.setDisabled(!0);
  19216. else {
  19217. h.setDisabled(!1);
  19218. var f = c.queryCommandValue("Paragraph"),
  19219. g = h.indexByValue(f);
  19220. g != -1 ? h.setValue(f) : h.setValue(h.initValue);
  19221. }
  19222. }
  19223. }),
  19224. h
  19225. );
  19226. }
  19227. }),
  19228. (b.customstyle = function(a) {
  19229. var c = a.options.customstyle || [],
  19230. d =
  19231. a.options.labelMap.customstyle ||
  19232. a.getLang("labelMap.customstyle") ||
  19233. "";
  19234. if (c.length) {
  19235. for (
  19236. var e, f = a.getLang("customstyle"), g = 0, h = [];
  19237. (e = c[g++]);
  19238. )
  19239. !(function(b) {
  19240. var c = {};
  19241. (c.label = b.label ? b.label : f[b.name]),
  19242. (c.style = b.style),
  19243. (c.className = b.className),
  19244. (c.tag = b.tag),
  19245. h.push({
  19246. label: c.label,
  19247. value: c,
  19248. theme: a.options.theme,
  19249. renderLabelHtml: function() {
  19250. return (
  19251. '<div class="edui-label %%-label"><' +
  19252. c.tag +
  19253. " " +
  19254. (c.className ? ' class="' + c.className + '"' : "") +
  19255. (c.style ? ' style="' + c.style + '"' : "") +
  19256. ">" +
  19257. c.label +
  19258. "</" +
  19259. c.tag +
  19260. "></div>"
  19261. );
  19262. },
  19263. });
  19264. })(e);
  19265. var i = new b.Combox({
  19266. editor: a,
  19267. items: h,
  19268. title: d,
  19269. initValue: d,
  19270. className: "edui-for-customstyle",
  19271. onselect: function(b, c) {
  19272. a.execCommand("customstyle", this.items[c].value);
  19273. },
  19274. onbuttonclick: function() {
  19275. this.showPopup();
  19276. },
  19277. indexByValue: function(a) {
  19278. for (var b, c = 0; (b = this.items[c++]); )
  19279. if (b.label == a) return c - 1;
  19280. return -1;
  19281. },
  19282. });
  19283. return (
  19284. (b.buttons.customstyle = i),
  19285. a.addListener("selectionchange", function(b, c, d) {
  19286. if (!d) {
  19287. var e = a.queryCommandState("customstyle");
  19288. if (e == -1) i.setDisabled(!0);
  19289. else {
  19290. i.setDisabled(!1);
  19291. var f = a.queryCommandValue("customstyle"),
  19292. g = i.indexByValue(f);
  19293. g != -1 ? i.setValue(f) : i.setValue(i.initValue);
  19294. }
  19295. }
  19296. }),
  19297. i
  19298. );
  19299. }
  19300. }),
  19301. (b.inserttable = function(a, c, d) {
  19302. d =
  19303. a.options.labelMap.inserttable ||
  19304. a.getLang("labelMap.inserttable") ||
  19305. "";
  19306. var e = new b.TableButton({
  19307. editor: a,
  19308. title: d,
  19309. className: "edui-for-inserttable",
  19310. onpicktable: function(b, c, d) {
  19311. a.execCommand("InsertTable", {
  19312. numRows: d,
  19313. numCols: c,
  19314. border: 1,
  19315. });
  19316. },
  19317. onbuttonclick: function() {
  19318. this.showPopup();
  19319. },
  19320. });
  19321. return (
  19322. (b.buttons.inserttable = e),
  19323. a.addListener("selectionchange", function() {
  19324. e.setDisabled(a.queryCommandState("inserttable") == -1);
  19325. }),
  19326. e
  19327. );
  19328. }),
  19329. (b.lineheight = function(a) {
  19330. var c = a.options.lineheight || [];
  19331. if (c.length) {
  19332. for (var d, e = 0, f = []; (d = c[e++]); )
  19333. f.push({
  19334. label: d,
  19335. value: d,
  19336. theme: a.options.theme,
  19337. onclick: function() {
  19338. a.execCommand("lineheight", this.value);
  19339. },
  19340. });
  19341. var g = new b.MenuButton({
  19342. editor: a,
  19343. className: "edui-for-lineheight",
  19344. title:
  19345. a.options.labelMap.lineheight ||
  19346. a.getLang("labelMap.lineheight") ||
  19347. "",
  19348. items: f,
  19349. onbuttonclick: function() {
  19350. var b = a.queryCommandValue("LineHeight") || this.value;
  19351. a.execCommand("LineHeight", b);
  19352. },
  19353. });
  19354. return (
  19355. (b.buttons.lineheight = g),
  19356. a.addListener("selectionchange", function() {
  19357. var b = a.queryCommandState("LineHeight");
  19358. if (b == -1) g.setDisabled(!0);
  19359. else {
  19360. g.setDisabled(!1);
  19361. var c = a.queryCommandValue("LineHeight");
  19362. c && g.setValue((c + "").replace(/cm/, "")), g.setChecked(b);
  19363. }
  19364. }),
  19365. g
  19366. );
  19367. }
  19368. });
  19369. for (var k, l = ["top", "bottom"], m = 0; (k = l[m++]); )
  19370. !(function(a) {
  19371. b["rowspacing" + a] = function(c) {
  19372. var d = c.options["rowspacing" + a] || [];
  19373. if (!d.length) return null;
  19374. for (var e, f = 0, g = []; (e = d[f++]); )
  19375. g.push({
  19376. label: e,
  19377. value: e,
  19378. theme: c.options.theme,
  19379. onclick: function() {
  19380. c.execCommand("rowspacing", this.value, a);
  19381. },
  19382. });
  19383. var h = new b.MenuButton({
  19384. editor: c,
  19385. className: "edui-for-rowspacing" + a,
  19386. title:
  19387. c.options.labelMap["rowspacing" + a] ||
  19388. c.getLang("labelMap.rowspacing" + a) ||
  19389. "",
  19390. items: g,
  19391. onbuttonclick: function() {
  19392. var b = c.queryCommandValue("rowspacing", a) || this.value;
  19393. c.execCommand("rowspacing", b, a);
  19394. },
  19395. });
  19396. return (
  19397. (b.buttons[a] = h),
  19398. c.addListener("selectionchange", function() {
  19399. var b = c.queryCommandState("rowspacing", a);
  19400. if (b == -1) h.setDisabled(!0);
  19401. else {
  19402. h.setDisabled(!1);
  19403. var d = c.queryCommandValue("rowspacing", a);
  19404. d && h.setValue((d + "").replace(/%/, "")), h.setChecked(b);
  19405. }
  19406. }),
  19407. h
  19408. );
  19409. };
  19410. })(k);
  19411. for (
  19412. var n, o = ["insertorderedlist", "insertunorderedlist"], p = 0;
  19413. (n = o[p++]);
  19414. )
  19415. !(function(a) {
  19416. b[a] = function(c) {
  19417. var d = c.options[a],
  19418. e = function() {
  19419. c.execCommand(a, this.value);
  19420. },
  19421. f = [];
  19422. for (var g in d)
  19423. f.push({
  19424. label: d[g] || c.getLang()[a][g] || "",
  19425. value: g,
  19426. theme: c.options.theme,
  19427. onclick: e,
  19428. });
  19429. var h = new b.MenuButton({
  19430. editor: c,
  19431. className: "edui-for-" + a,
  19432. title: c.getLang("labelMap." + a) || "",
  19433. items: f,
  19434. onbuttonclick: function() {
  19435. var b = c.queryCommandValue(a) || this.value;
  19436. c.execCommand(a, b);
  19437. },
  19438. });
  19439. return (
  19440. (b.buttons[a] = h),
  19441. c.addListener("selectionchange", function() {
  19442. var b = c.queryCommandState(a);
  19443. if (b == -1) h.setDisabled(!0);
  19444. else {
  19445. h.setDisabled(!1);
  19446. var d = c.queryCommandValue(a);
  19447. h.setValue(d), h.setChecked(b);
  19448. }
  19449. }),
  19450. h
  19451. );
  19452. };
  19453. })(n);
  19454. (b.fullscreen = function(a, c) {
  19455. c =
  19456. a.options.labelMap.fullscreen ||
  19457. a.getLang("labelMap.fullscreen") ||
  19458. "";
  19459. var d = new b.Button({
  19460. className: "edui-for-fullscreen",
  19461. title: c,
  19462. theme: a.options.theme,
  19463. onclick: function() {
  19464. a.ui && a.ui.setFullScreen(!a.ui.isFullScreen()),
  19465. this.setChecked(a.ui.isFullScreen());
  19466. },
  19467. });
  19468. return (
  19469. (b.buttons.fullscreen = d),
  19470. a.addListener("selectionchange", function() {
  19471. var b = a.queryCommandState("fullscreen");
  19472. d.setDisabled(b == -1), d.setChecked(a.ui.isFullScreen());
  19473. }),
  19474. d
  19475. );
  19476. }),
  19477. (b.emotion = function(a, c) {
  19478. var d = "emotion",
  19479. f = new b.MultiMenuPop({
  19480. title: a.options.labelMap[d] || a.getLang("labelMap." + d) || "",
  19481. editor: a,
  19482. className: "edui-for-" + d,
  19483. iframeUrl: a.ui.mapUrl(
  19484. c || (a.options.iframeUrlMap || {})[d] || e[d]
  19485. ),
  19486. });
  19487. return (
  19488. (b.buttons[d] = f),
  19489. a.addListener("selectionchange", function() {
  19490. f.setDisabled(a.queryCommandState(d) == -1);
  19491. }),
  19492. f
  19493. );
  19494. }),
  19495. (b.autotypeset = function(a) {
  19496. var c = new b.AutoTypeSetButton({
  19497. editor: a,
  19498. title:
  19499. a.options.labelMap.autotypeset ||
  19500. a.getLang("labelMap.autotypeset") ||
  19501. "",
  19502. className: "edui-for-autotypeset",
  19503. onbuttonclick: function() {
  19504. a.execCommand("autotypeset");
  19505. },
  19506. });
  19507. return (
  19508. (b.buttons.autotypeset = c),
  19509. a.addListener("selectionchange", function() {
  19510. c.setDisabled(a.queryCommandState("autotypeset") == -1);
  19511. }),
  19512. c
  19513. );
  19514. }),
  19515. (b.simpleupload = function(a) {
  19516. var c = "simpleupload",
  19517. d = new b.Button({
  19518. className: "edui-for-" + c,
  19519. title: a.options.labelMap[c] || a.getLang("labelMap." + c) || "",
  19520. onclick: function() {},
  19521. theme: a.options.theme,
  19522. showText: !1,
  19523. });
  19524. return (
  19525. (b.buttons[c] = d),
  19526. a.addListener("ready", function() {
  19527. var b = d.getDom("body"),
  19528. c = b.children[0];
  19529. a.fireEvent("simpleuploadbtnready", c);
  19530. }),
  19531. a.addListener("selectionchange", function(b, e, f) {
  19532. var g = a.queryCommandState(c);
  19533. g == -1
  19534. ? (d.setDisabled(!0), d.setChecked(!1))
  19535. : f || (d.setDisabled(!1), d.setChecked(g));
  19536. }),
  19537. d
  19538. );
  19539. });
  19540. })(),
  19541. (function() {
  19542. function a(a) {
  19543. this.initOptions(a), this.initEditorUI();
  19544. }
  19545. var b = baidu.editor.utils,
  19546. c = baidu.editor.ui.uiUtils,
  19547. d = baidu.editor.ui.UIBase,
  19548. e = baidu.editor.dom.domUtils,
  19549. f = [];
  19550. (a.prototype = {
  19551. uiName: "editor",
  19552. initEditorUI: function() {
  19553. function a(a, b) {
  19554. a.setOpt({
  19555. wordCount: !0,
  19556. maximumWords: 1e4,
  19557. wordCountMsg: a.options.wordCountMsg || a.getLang("wordCountMsg"),
  19558. wordOverFlowMsg:
  19559. a.options.wordOverFlowMsg || a.getLang("wordOverFlowMsg"),
  19560. });
  19561. var c = a.options,
  19562. d = c.maximumWords,
  19563. e = c.wordCountMsg,
  19564. f = c.wordOverFlowMsg,
  19565. g = b.getDom("wordcount");
  19566. if (c.wordCount) {
  19567. var h = a.getContentLength(!0);
  19568. h > d
  19569. ? ((g.innerHTML = f), a.fireEvent("wordcountoverflow"))
  19570. : (g.innerHTML = e
  19571. .replace("{#leave}", d - h)
  19572. .replace("{#count}", h));
  19573. }
  19574. }
  19575. (this.editor.ui = this),
  19576. (this._dialogs = {}),
  19577. this.initUIBase(),
  19578. this._initToolbars();
  19579. var b = this.editor,
  19580. c = this;
  19581. b.addListener("ready", function() {
  19582. function d() {
  19583. a(b, c), e.un(b.document, "click", arguments.callee);
  19584. }
  19585. (b.getDialog = function(a) {
  19586. return b.ui._dialogs[a + "Dialog"];
  19587. }),
  19588. e.on(b.window, "scroll", function(a) {
  19589. baidu.editor.ui.Popup.postHide(a);
  19590. }),
  19591. (b.ui._actualFrameWidth = b.options.initialFrameWidth),
  19592. UE.browser.ie &&
  19593. 6 === UE.browser.version &&
  19594. b.container.ownerDocument.execCommand(
  19595. "BackgroundImageCache",
  19596. !1,
  19597. !0
  19598. ),
  19599. b.options.elementPathEnabled &&
  19600. (b.ui.getDom("elementpath").innerHTML =
  19601. '<div class="edui-editor-breadcrumb">' +
  19602. b.getLang("elementPathTip") +
  19603. ":</div>"),
  19604. b.options.wordCount &&
  19605. (e.on(b.document, "click", d),
  19606. (b.ui.getDom("wordcount").innerHTML = b.getLang(
  19607. "wordCountTip"
  19608. ))),
  19609. b.ui._scale(),
  19610. b.options.scaleEnabled
  19611. ? (b.autoHeightEnabled && b.disableAutoHeight(),
  19612. c.enableScale())
  19613. : c.disableScale(),
  19614. b.options.elementPathEnabled ||
  19615. b.options.wordCount ||
  19616. b.options.scaleEnabled ||
  19617. ((b.ui.getDom("elementpath").style.display = "none"),
  19618. (b.ui.getDom("wordcount").style.display = "none"),
  19619. (b.ui.getDom("scale").style.display = "none")),
  19620. b.selection.isFocus() && b.fireEvent("selectionchange", !1, !0);
  19621. }),
  19622. b.addListener("mousedown", function(a, b) {
  19623. var c = b.target || b.srcElement;
  19624. baidu.editor.ui.Popup.postHide(b, c),
  19625. baidu.editor.ui.ShortCutMenu.postHide(b);
  19626. }),
  19627. b.addListener("delcells", function() {
  19628. UE.ui.edittip && new UE.ui.edittip(b),
  19629. b.getDialog("edittip").open();
  19630. });
  19631. var d,
  19632. f,
  19633. g = !1;
  19634. b.addListener("afterpaste", function() {
  19635. b.queryCommandState("pasteplain") ||
  19636. (baidu.editor.ui.PastePicker &&
  19637. ((d = new baidu.editor.ui.Popup({
  19638. content: new baidu.editor.ui.PastePicker({ editor: b }),
  19639. editor: b,
  19640. className: "edui-wordpastepop",
  19641. })),
  19642. d.render()),
  19643. (g = !0));
  19644. }),
  19645. b.addListener("afterinserthtml", function() {
  19646. clearTimeout(f),
  19647. (f = setTimeout(function() {
  19648. if (d && (g || b.ui._isTransfer)) {
  19649. if (d.isHidden()) {
  19650. var a = e.createElement(b.document, "span", {
  19651. style: "line-height:0px;",
  19652. innerHTML: "\ufeff",
  19653. }),
  19654. c = b.selection.getRange();
  19655. c.insertNode(a);
  19656. var f = getDomNode(a, "firstChild", "previousSibling");
  19657. f && d.showAnchor(3 == f.nodeType ? f.parentNode : f),
  19658. e.remove(a);
  19659. } else d.show();
  19660. delete b.ui._isTransfer, (g = !1);
  19661. }
  19662. }, 200));
  19663. }),
  19664. b.addListener("contextmenu", function(a, b) {
  19665. baidu.editor.ui.Popup.postHide(b);
  19666. }),
  19667. b.addListener("keydown", function(a, b) {
  19668. d && d.dispose(b);
  19669. var c = b.keyCode || b.which;
  19670. b.altKey && 90 == c && UE.ui.buttons.fullscreen.onclick();
  19671. }),
  19672. b.addListener("wordcount", function(b) {
  19673. a(this, c);
  19674. }),
  19675. b.addListener("selectionchange", function() {
  19676. b.options.elementPathEnabled &&
  19677. c[
  19678. (b.queryCommandState("elementpath") == -1 ? "dis" : "en") +
  19679. "ableElementPath"
  19680. ](),
  19681. b.options.scaleEnabled &&
  19682. c[
  19683. (b.queryCommandState("scale") == -1 ? "dis" : "en") +
  19684. "ableScale"
  19685. ]();
  19686. });
  19687. var h = new baidu.editor.ui.Popup({
  19688. editor: b,
  19689. content: "",
  19690. className: "edui-bubble",
  19691. _onEditButtonClick: function() {
  19692. this.hide(), b.ui._dialogs.linkDialog.open();
  19693. },
  19694. _onImgEditButtonClick: function(a) {
  19695. this.hide(), b.ui._dialogs[a] && b.ui._dialogs[a].open();
  19696. },
  19697. _onImgSetFloat: function(a) {
  19698. this.hide(), b.execCommand("imagefloat", a);
  19699. },
  19700. _setIframeAlign: function(a) {
  19701. var b = h.anchorEl,
  19702. c = b.cloneNode(!0);
  19703. switch (a) {
  19704. case -2:
  19705. c.setAttribute("align", "");
  19706. break;
  19707. case -1:
  19708. c.setAttribute("align", "left");
  19709. break;
  19710. case 1:
  19711. c.setAttribute("align", "right");
  19712. }
  19713. b.parentNode.insertBefore(c, b),
  19714. e.remove(b),
  19715. (h.anchorEl = c),
  19716. h.showAnchor(h.anchorEl);
  19717. },
  19718. _updateIframe: function() {
  19719. var a = (b._iframe = h.anchorEl);
  19720. e.hasClass(a, "ueditor_baidumap")
  19721. ? (b.selection
  19722. .getRange()
  19723. .selectNode(a)
  19724. .select(),
  19725. b.ui._dialogs.mapDialog.open(),
  19726. h.hide())
  19727. : (b.ui._dialogs.insertframeDialog.open(), h.hide());
  19728. },
  19729. _onRemoveButtonClick: function(a) {
  19730. b.execCommand(a), this.hide();
  19731. },
  19732. queryAutoHide: function(a) {
  19733. return a &&
  19734. a.ownerDocument == b.document &&
  19735. ("img" == a.tagName.toLowerCase() ||
  19736. e.findParentByTagName(a, "a", !0))
  19737. ? a !== h.anchorEl
  19738. : baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, a);
  19739. },
  19740. });
  19741. h.render(),
  19742. b.options.imagePopup &&
  19743. (b.addListener("mouseover", function(a, c) {
  19744. c = c || window.event;
  19745. var d = c.target || c.srcElement;
  19746. if (
  19747. b.ui._dialogs.insertframeDialog &&
  19748. /iframe/gi.test(d.tagName)
  19749. ) {
  19750. var e = h.formatHtml(
  19751. "<nobr>" +
  19752. b.getLang("property") +
  19753. ': <span onclick=$$._setIframeAlign(-2) class="edui-clickable">' +
  19754. b.getLang("default") +
  19755. '</span>&nbsp;&nbsp;<span onclick=$$._setIframeAlign(-1) class="edui-clickable">' +
  19756. b.getLang("justifyleft") +
  19757. '</span>&nbsp;&nbsp;<span onclick=$$._setIframeAlign(1) class="edui-clickable">' +
  19758. b.getLang("justifyright") +
  19759. '</span>&nbsp;&nbsp; <span onclick="$$._updateIframe( this);" class="edui-clickable">' +
  19760. b.getLang("modify") +
  19761. "</span></nobr>"
  19762. );
  19763. e
  19764. ? ((h.getDom("content").innerHTML = e),
  19765. (h.anchorEl = d),
  19766. h.showAnchor(h.anchorEl))
  19767. : h.hide();
  19768. }
  19769. }),
  19770. b.addListener("selectionchange", function(a, c) {
  19771. if (c) {
  19772. var d = "",
  19773. f = "",
  19774. g = b.selection.getRange().getClosedNode(),
  19775. i = b.ui._dialogs;
  19776. if (g && "IMG" == g.tagName) {
  19777. var j = "insertimageDialog";
  19778. if (
  19779. ((g.className.indexOf("edui-faked-video") == -1 &&
  19780. g.className.indexOf("edui-upload-video") == -1) ||
  19781. (j = "insertvideoDialog"),
  19782. g.className.indexOf("edui-faked-webapp") != -1 &&
  19783. (j = "webappDialog"),
  19784. g.src.indexOf("http://api.map.baidu.com") != -1 &&
  19785. (j = "mapDialog"),
  19786. g.className.indexOf("edui-faked-music") != -1 &&
  19787. (j = "musicDialog"),
  19788. g.src.indexOf(
  19789. "http://maps.google.com/maps/api/staticmap"
  19790. ) != -1 && (j = "gmapDialog"),
  19791. g.getAttribute("anchorname") &&
  19792. ((j = "anchorDialog"),
  19793. (d = h.formatHtml(
  19794. "<nobr>" +
  19795. b.getLang("property") +
  19796. ': <span onclick=$$._onImgEditButtonClick("anchorDialog") class="edui-clickable">' +
  19797. b.getLang("modify") +
  19798. "</span>&nbsp;&nbsp;<span onclick=$$._onRemoveButtonClick('anchor') class=\"edui-clickable\">" +
  19799. b.getLang("delete") +
  19800. "</span></nobr>"
  19801. ))),
  19802. g.getAttribute("word_img") &&
  19803. ((b.word_img = [g.getAttribute("word_img")]),
  19804. (j = "wordimageDialog")),
  19805. (e.hasClass(g, "loadingclass") ||
  19806. e.hasClass(g, "loaderrorclass")) &&
  19807. (j = ""),
  19808. !i[j])
  19809. )
  19810. return;
  19811. (f =
  19812. "<nobr>" +
  19813. b.getLang("property") +
  19814. ': <span onclick=$$._onImgSetFloat("none") class="edui-clickable">' +
  19815. b.getLang("default") +
  19816. '</span>&nbsp;&nbsp;<span onclick=$$._onImgSetFloat("left") class="edui-clickable">' +
  19817. b.getLang("justifyleft") +
  19818. '</span>&nbsp;&nbsp;<span onclick=$$._onImgSetFloat("right") class="edui-clickable">' +
  19819. b.getLang("justifyright") +
  19820. '</span>&nbsp;&nbsp;<span onclick=$$._onImgSetFloat("center") class="edui-clickable">' +
  19821. b.getLang("justifycenter") +
  19822. "</span>&nbsp;&nbsp;<span onclick=\"$$._onImgEditButtonClick('" +
  19823. j +
  19824. '\');" class="edui-clickable">' +
  19825. b.getLang("modify") +
  19826. "</span></nobr>"),
  19827. !d && (d = h.formatHtml(f));
  19828. }
  19829. if (b.ui._dialogs.linkDialog) {
  19830. var k,
  19831. l = b.queryCommandValue("link");
  19832. if (
  19833. l &&
  19834. (k = l.getAttribute("_href") || l.getAttribute("href", 2))
  19835. ) {
  19836. var m = k;
  19837. k.length > 30 && (m = k.substring(0, 20) + "..."),
  19838. d && (d += '<div style="height:5px;"></div>'),
  19839. (d += h.formatHtml(
  19840. "<nobr>" +
  19841. b.getLang("anthorMsg") +
  19842. ': <a target="_blank" href="' +
  19843. k +
  19844. '" title="' +
  19845. k +
  19846. '" >' +
  19847. m +
  19848. '</a> <span class="edui-clickable" onclick="$$._onEditButtonClick();">' +
  19849. b.getLang("modify") +
  19850. '</span> <span class="edui-clickable" onclick="$$._onRemoveButtonClick(\'unlink\');"> ' +
  19851. b.getLang("clear") +
  19852. "</span></nobr>"
  19853. )),
  19854. h.showAnchor(l);
  19855. }
  19856. }
  19857. d
  19858. ? ((h.getDom("content").innerHTML = d),
  19859. (h.anchorEl = g || l),
  19860. h.showAnchor(h.anchorEl))
  19861. : h.hide();
  19862. }
  19863. }));
  19864. },
  19865. _initToolbars: function() {
  19866. for (
  19867. var a = this.editor, c = this.toolbars || [], d = [], e = 0;
  19868. e < c.length;
  19869. e++
  19870. ) {
  19871. for (
  19872. var f = c[e],
  19873. g = new baidu.editor.ui.Toolbar({ theme: a.options.theme }),
  19874. h = 0;
  19875. h < f.length;
  19876. h++
  19877. ) {
  19878. var i = f[h],
  19879. j = null;
  19880. if ("string" == typeof i) {
  19881. if (
  19882. ((i = i.toLowerCase()),
  19883. "|" == i && (i = "Separator"),
  19884. "||" == i && (i = "Breakline"),
  19885. baidu.editor.ui[i] && (j = new baidu.editor.ui[i](a)),
  19886. "fullscreen" == i)
  19887. ) {
  19888. d && d[0]
  19889. ? d[0].items.splice(0, 0, j)
  19890. : j && g.items.splice(0, 0, j);
  19891. continue;
  19892. }
  19893. } else j = i;
  19894. j && j.id && g.add(j);
  19895. }
  19896. d[e] = g;
  19897. }
  19898. b.each(UE._customizeUI, function(b, c) {
  19899. var d, e;
  19900. return (
  19901. (!b.id || b.id == a.key) &&
  19902. ((d = b.execFn.call(a, a, c)),
  19903. void (
  19904. d &&
  19905. ((e = b.index),
  19906. void 0 === e && (e = g.items.length),
  19907. g.add(d, e))
  19908. ))
  19909. );
  19910. }),
  19911. (this.toolbars = d);
  19912. },
  19913. getHtmlTpl: function() {
  19914. return (
  19915. '<div id="##" class="%%"><div id="##_toolbarbox" class="%%-toolbarbox">' +
  19916. (this.toolbars.length
  19917. ? '<div id="##_toolbarboxouter" class="%%-toolbarboxouter"><div class="%%-toolbarboxinner">' +
  19918. this.renderToolbarBoxHtml() +
  19919. "</div></div>"
  19920. : "") +
  19921. '<div id="##_toolbarmsg" class="%%-toolbarmsg" style="display:none;"><div id = "##_upload_dialog" class="%%-toolbarmsg-upload" onclick="$$.showWordImageDialog();">' +
  19922. this.editor.getLang("clickToUpload") +
  19923. '</div><div class="%%-toolbarmsg-close" onclick="$$.hideToolbarMsg();">x</div><div id="##_toolbarmsg_label" class="%%-toolbarmsg-label"></div><div style="height:0;overflow:hidden;clear:both;"></div></div><div id="##_message_holder" class="%%-messageholder"></div></div><div id="##_iframeholder" class="%%-iframeholder"></div><div id="##_bottombar" class="%%-bottomContainer"><table><tr><td id="##_elementpath" class="%%-bottombar"></td><td id="##_wordcount" class="%%-wordcount"></td><td id="##_scale" class="%%-scale"><div class="%%-icon"></div></td></tr></table></div><div id="##_scalelayer"></div></div>'
  19924. );
  19925. },
  19926. showWordImageDialog: function() {
  19927. this._dialogs.wordimageDialog.open();
  19928. },
  19929. renderToolbarBoxHtml: function() {
  19930. for (var a = [], b = 0; b < this.toolbars.length; b++)
  19931. a.push(this.toolbars[b].renderHtml());
  19932. return a.join("");
  19933. },
  19934. setFullScreen: function(a) {
  19935. var b = this.editor,
  19936. c = b.container.parentNode.parentNode;
  19937. if (this._fullscreen != a) {
  19938. if (
  19939. ((this._fullscreen = a),
  19940. this.editor.fireEvent("beforefullscreenchange", a),
  19941. baidu.editor.browser.gecko)
  19942. )
  19943. var d = b.selection.getRange().createBookmark();
  19944. if (a) {
  19945. for (; "BODY" != c.tagName; ) {
  19946. var e = baidu.editor.dom.domUtils.getComputedStyle(
  19947. c,
  19948. "position"
  19949. );
  19950. f.push(e), (c.style.position = "static"), (c = c.parentNode);
  19951. }
  19952. (this._bakHtmlOverflow = document.documentElement.style.overflow),
  19953. (this._bakBodyOverflow = document.body.style.overflow),
  19954. (this._bakAutoHeight = this.editor.autoHeightEnabled),
  19955. (this._bakScrollTop = Math.max(
  19956. document.documentElement.scrollTop,
  19957. document.body.scrollTop
  19958. )),
  19959. (this._bakEditorContaninerWidth =
  19960. b.iframe.parentNode.offsetWidth),
  19961. this._bakAutoHeight &&
  19962. ((b.autoHeightEnabled = !1), this.editor.disableAutoHeight()),
  19963. (document.documentElement.style.overflow = "hidden"),
  19964. window.scrollTo(0, window.scrollY),
  19965. (this._bakCssText = this.getDom().style.cssText),
  19966. (this._bakCssText1 = this.getDom("iframeholder").style.cssText),
  19967. (b.iframe.parentNode.style.width = ""),
  19968. this._updateFullScreen();
  19969. } else {
  19970. for (; "BODY" != c.tagName; )
  19971. (c.style.position = f.shift()), (c = c.parentNode);
  19972. (this.getDom().style.cssText = this._bakCssText),
  19973. (this.getDom("iframeholder").style.cssText = this._bakCssText1),
  19974. this._bakAutoHeight &&
  19975. ((b.autoHeightEnabled = !0), this.editor.enableAutoHeight()),
  19976. (document.documentElement.style.overflow = this._bakHtmlOverflow),
  19977. (document.body.style.overflow = this._bakBodyOverflow),
  19978. (b.iframe.parentNode.style.width =
  19979. this._bakEditorContaninerWidth + "px"),
  19980. window.scrollTo(0, this._bakScrollTop);
  19981. }
  19982. if (browser.gecko && "true" === b.body.contentEditable) {
  19983. var g = document.createElement("input");
  19984. document.body.appendChild(g),
  19985. (b.body.contentEditable = !1),
  19986. setTimeout(function() {
  19987. g.focus(),
  19988. setTimeout(function() {
  19989. (b.body.contentEditable = !0),
  19990. b.fireEvent("fullscreenchanged", a),
  19991. b.selection
  19992. .getRange()
  19993. .moveToBookmark(d)
  19994. .select(!0),
  19995. baidu.editor.dom.domUtils.remove(g),
  19996. a && window.scroll(0, 0);
  19997. }, 0);
  19998. }, 0);
  19999. }
  20000. "true" === b.body.contentEditable &&
  20001. (this.editor.fireEvent("fullscreenchanged", a),
  20002. this.triggerLayout());
  20003. }
  20004. },
  20005. _updateFullScreen: function() {
  20006. if (this._fullscreen) {
  20007. var a = c.getViewportRect();
  20008. if (
  20009. ((this.getDom().style.cssText =
  20010. "border:0;position:absolute;left:0;top:" +
  20011. (this.editor.options.topOffset || 0) +
  20012. "px;width:" +
  20013. a.width +
  20014. "px;height:" +
  20015. a.height +
  20016. "px;z-index:" +
  20017. (1 * this.getDom().style.zIndex + 100)),
  20018. c.setViewportOffset(this.getDom(), {
  20019. left: 0,
  20020. top: this.editor.options.topOffset || 0,
  20021. }),
  20022. this.editor.setHeight(
  20023. a.height -
  20024. this.getDom("toolbarbox").offsetHeight -
  20025. this.getDom("bottombar").offsetHeight -
  20026. (this.editor.options.topOffset || 0),
  20027. !0
  20028. ),
  20029. browser.gecko)
  20030. )
  20031. try {
  20032. window.onresize();
  20033. } catch (b) {}
  20034. }
  20035. },
  20036. _updateElementPath: function() {
  20037. var a,
  20038. b = this.getDom("elementpath");
  20039. if (
  20040. this.elementPathEnabled &&
  20041. (a = this.editor.queryCommandValue("elementpath"))
  20042. ) {
  20043. for (var c, d = [], e = 0; (c = a[e]); e++)
  20044. d[e] = this.formatHtml(
  20045. '<span unselectable="on" onclick="$$.editor.execCommand(&quot;elementpath&quot;, &quot;' +
  20046. e +
  20047. '&quot;);">' +
  20048. c +
  20049. "</span>"
  20050. );
  20051. b.innerHTML =
  20052. '<div class="edui-editor-breadcrumb" onmousedown="return false;">' +
  20053. this.editor.getLang("elementPathTip") +
  20054. ": " +
  20055. d.join(" &gt; ") +
  20056. "</div>";
  20057. } else b.style.display = "none";
  20058. },
  20059. disableElementPath: function() {
  20060. var a = this.getDom("elementpath");
  20061. (a.innerHTML = ""),
  20062. (a.style.display = "none"),
  20063. (this.elementPathEnabled = !1);
  20064. },
  20065. enableElementPath: function() {
  20066. var a = this.getDom("elementpath");
  20067. (a.style.display = ""),
  20068. (this.elementPathEnabled = !0),
  20069. this._updateElementPath();
  20070. },
  20071. _scale: function() {
  20072. function a() {
  20073. (o = e.getXY(h)),
  20074. p ||
  20075. (p =
  20076. g.options.minFrameHeight + j.offsetHeight + k.offsetHeight),
  20077. (m.style.cssText =
  20078. "position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:" +
  20079. h.offsetWidth +
  20080. "px;height:" +
  20081. h.offsetHeight +
  20082. "px;z-index:" +
  20083. (g.options.zIndex + 1)),
  20084. e.on(f, "mousemove", b),
  20085. e.on(i, "mouseup", c),
  20086. e.on(f, "mouseup", c);
  20087. }
  20088. function b(a) {
  20089. d();
  20090. var b = a || window.event;
  20091. (r = b.pageX || f.documentElement.scrollLeft + b.clientX),
  20092. (s = b.pageY || f.documentElement.scrollTop + b.clientY),
  20093. (t = r - o.x),
  20094. (u = s - o.y),
  20095. t >= q && ((n = !0), (m.style.width = t + "px")),
  20096. u >= p && ((n = !0), (m.style.height = u + "px"));
  20097. }
  20098. function c() {
  20099. n &&
  20100. ((n = !1),
  20101. (g.ui._actualFrameWidth = m.offsetWidth - 2),
  20102. (h.style.width = g.ui._actualFrameWidth + "px"),
  20103. g.setHeight(
  20104. m.offsetHeight - k.offsetHeight - j.offsetHeight - 2,
  20105. !0
  20106. )),
  20107. m && (m.style.display = "none"),
  20108. d(),
  20109. e.un(f, "mousemove", b),
  20110. e.un(i, "mouseup", c),
  20111. e.un(f, "mouseup", c);
  20112. }
  20113. function d() {
  20114. browser.ie
  20115. ? f.selection.clear()
  20116. : window.getSelection().removeAllRanges();
  20117. }
  20118. var f = document,
  20119. g = this.editor,
  20120. h = g.container,
  20121. i = g.document,
  20122. j = this.getDom("toolbarbox"),
  20123. k = this.getDom("bottombar"),
  20124. l = this.getDom("scale"),
  20125. m = this.getDom("scalelayer"),
  20126. n = !1,
  20127. o = null,
  20128. p = 0,
  20129. q = g.options.minFrameWidth,
  20130. r = 0,
  20131. s = 0,
  20132. t = 0,
  20133. u = 0,
  20134. v = this;
  20135. this.editor.addListener("fullscreenchanged", function(a, b) {
  20136. if (b) v.disableScale();
  20137. else if (v.editor.options.scaleEnabled) {
  20138. v.enableScale();
  20139. var c = v.editor.document.createElement("span");
  20140. v.editor.body.appendChild(c),
  20141. (v.editor.body.style.height =
  20142. Math.max(e.getXY(c).y, v.editor.iframe.offsetHeight - 20) +
  20143. "px"),
  20144. e.remove(c);
  20145. }
  20146. }),
  20147. (this.enableScale = function() {
  20148. 1 != g.queryCommandState("source") &&
  20149. ((l.style.display = ""),
  20150. (this.scaleEnabled = !0),
  20151. e.on(l, "mousedown", a));
  20152. }),
  20153. (this.disableScale = function() {
  20154. (l.style.display = "none"),
  20155. (this.scaleEnabled = !1),
  20156. e.un(l, "mousedown", a);
  20157. });
  20158. },
  20159. isFullScreen: function() {
  20160. return this._fullscreen;
  20161. },
  20162. postRender: function() {
  20163. d.prototype.postRender.call(this);
  20164. for (var a = 0; a < this.toolbars.length; a++)
  20165. this.toolbars[a].postRender();
  20166. var b,
  20167. c = this,
  20168. e = baidu.editor.dom.domUtils,
  20169. f = function() {
  20170. clearTimeout(b),
  20171. (b = setTimeout(function() {
  20172. c._updateFullScreen();
  20173. }));
  20174. };
  20175. e.on(window, "resize", f),
  20176. c.addListener("destroy", function() {
  20177. e.un(window, "resize", f), clearTimeout(b);
  20178. });
  20179. },
  20180. showToolbarMsg: function(a, b) {
  20181. if (
  20182. ((this.getDom("toolbarmsg_label").innerHTML = a),
  20183. (this.getDom("toolbarmsg").style.display = ""),
  20184. !b)
  20185. ) {
  20186. var c = this.getDom("upload_dialog");
  20187. c.style.display = "none";
  20188. }
  20189. },
  20190. hideToolbarMsg: function() {
  20191. this.getDom("toolbarmsg").style.display = "none";
  20192. },
  20193. mapUrl: function(a) {
  20194. return a
  20195. ? a.replace("~/", this.editor.options.UEDITOR_HOME_URL || "")
  20196. : "";
  20197. },
  20198. triggerLayout: function() {
  20199. var a = this.getDom();
  20200. "1" == a.style.zoom ? (a.style.zoom = "100%") : (a.style.zoom = "1");
  20201. },
  20202. }),
  20203. b.inherits(a, baidu.editor.ui.UIBase);
  20204. var g = {};
  20205. (UE.ui.Editor = function(c) {
  20206. var d = new UE.Editor(c);
  20207. (d.options.editor = d),
  20208. b.loadFile(document, {
  20209. href: d.options.themePath + d.options.theme + "/css/ueditor.css",
  20210. tag: "link",
  20211. type: "text/css",
  20212. rel: "stylesheet",
  20213. });
  20214. var f = d.render;
  20215. return (
  20216. (d.render = function(c) {
  20217. c.constructor === String && ((d.key = c), (g[c] = d)),
  20218. b.domReady(function() {
  20219. function b() {
  20220. if (
  20221. (d.setOpt({
  20222. labelMap: d.options.labelMap || d.getLang("labelMap"),
  20223. }),
  20224. new a(d.options),
  20225. c &&
  20226. (c.constructor === String &&
  20227. (c = document.getElementById(c)),
  20228. c &&
  20229. c.getAttribute("name") &&
  20230. (d.options.textarea = c.getAttribute("name")),
  20231. c && /script|textarea/gi.test(c.tagName)))
  20232. ) {
  20233. var b = document.createElement("div");
  20234. c.parentNode.insertBefore(b, c);
  20235. var g = c.value || c.innerHTML;
  20236. (d.options.initialContent = /^[\t\r\n ]*$/.test(g)
  20237. ? d.options.initialContent
  20238. : g
  20239. .replace(/>[\n\r\t]+([ ]{4})+/g, ">")
  20240. .replace(/[\n\r\t]+([ ]{4})+</g, "<")
  20241. .replace(/>[\n\r\t]+</g, "><")),
  20242. c.className && (b.className = c.className),
  20243. c.style.cssText && (b.style.cssText = c.style.cssText),
  20244. /textarea/i.test(c.tagName)
  20245. ? ((d.textarea = c),
  20246. (d.textarea.style.display = "none"))
  20247. : c.parentNode.removeChild(c),
  20248. c.id && ((b.id = c.id), e.removeAttributes(c, "id")),
  20249. (c = b),
  20250. (c.innerHTML = "");
  20251. }
  20252. e.addClass(c, "edui-" + d.options.theme), d.ui.render(c);
  20253. var h = d.options;
  20254. d.container = d.ui.getDom();
  20255. for (
  20256. var i, j = e.findParents(c, !0), k = [], l = 0;
  20257. (i = j[l]);
  20258. l++
  20259. )
  20260. (k[l] = i.style.display), (i.style.display = "block");
  20261. if (h.initialFrameWidth)
  20262. h.minFrameWidth = h.initialFrameWidth;
  20263. else {
  20264. h.minFrameWidth = h.initialFrameWidth = c.offsetWidth;
  20265. var m = c.style.width;
  20266. /%$/.test(m) && (h.initialFrameWidth = m);
  20267. }
  20268. h.initialFrameHeight
  20269. ? (h.minFrameHeight = h.initialFrameHeight)
  20270. : (h.initialFrameHeight = h.minFrameHeight =
  20271. c.offsetHeight);
  20272. for (var i, l = 0; (i = j[l]); l++) i.style.display = k[l];
  20273. c.style.height && (c.style.height = ""),
  20274. (d.container.style.width =
  20275. h.initialFrameWidth +
  20276. (/%$/.test(h.initialFrameWidth) ? "" : "px")),
  20277. (d.container.style.zIndex = h.zIndex),
  20278. f.call(d, d.ui.getDom("iframeholder")),
  20279. d.fireEvent("afteruiready");
  20280. }
  20281. d.langIsReady ? b() : d.addListener("langReady", b);
  20282. });
  20283. }),
  20284. d
  20285. );
  20286. }),
  20287. (UE.getEditor = function(a, b) {
  20288. var c = g[a];
  20289. return c || ((c = g[a] = new UE.ui.Editor(b)), c.render(a)), c;
  20290. }),
  20291. (UE.delEditor = function(a) {
  20292. var b;
  20293. (b = g[a]) && (b.key && b.destroy(), delete g[a]);
  20294. }),
  20295. (UE.registerUI = function(a, c, d, e) {
  20296. b.each(a.split(/\s+/), function(a) {
  20297. UE._customizeUI[a] = { id: e, execFn: c, index: d };
  20298. });
  20299. });
  20300. })(),
  20301. UE.registerUI("message", function(a) {
  20302. function b() {
  20303. var a = g.ui.getDom("toolbarbox");
  20304. a && (c.style.top = a.offsetHeight + 3 + "px"),
  20305. (c.style.zIndex =
  20306. Math.max(g.options.zIndex, g.iframe.style.zIndex) + 1);
  20307. }
  20308. var c,
  20309. d = baidu.editor.ui,
  20310. e = d.Message,
  20311. f = [],
  20312. g = a;
  20313. g.addListener("ready", function() {
  20314. (c = document.getElementById(g.ui.id + "_message_holder")),
  20315. b(),
  20316. setTimeout(function() {
  20317. b();
  20318. }, 500);
  20319. }),
  20320. g.addListener("showmessage", function(a, d) {
  20321. d = utils.isString(d) ? { content: d } : d;
  20322. var h = new e({
  20323. timeout: d.timeout,
  20324. type: d.type,
  20325. content: d.content,
  20326. keepshow: d.keepshow,
  20327. editor: g,
  20328. }),
  20329. i = d.id || "msg_" + (+new Date()).toString(36);
  20330. return h.render(c), (f[i] = h), h.reset(d), b(), i;
  20331. }),
  20332. g.addListener("updatemessage", function(a, b, d) {
  20333. d = utils.isString(d) ? { content: d } : d;
  20334. var e = f[b];
  20335. e.render(c), e && e.reset(d);
  20336. }),
  20337. g.addListener("hidemessage", function(a, b) {
  20338. var c = f[b];
  20339. c && c.hide();
  20340. });
  20341. }),
  20342. UE.registerUI("autosave", function(a) {
  20343. var b = null,
  20344. c = null;
  20345. a.on("afterautosave", function() {
  20346. clearTimeout(b),
  20347. (b = setTimeout(function() {
  20348. c && a.trigger("hidemessage", c),
  20349. (c = a.trigger("showmessage", {
  20350. content: a.getLang("autosave.success"),
  20351. timeout: 2e3,
  20352. }));
  20353. }, 2e3));
  20354. });
  20355. });
  20356. })();