123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327 |
- // Do not edit this file; automatically generated by build.py.
- 'use strict';
- var $jscomp = $jscomp || {};
- $jscomp.scope = {};
- var COMPILED = !0
- , goog = goog || {};
- goog.global = this || self;
- goog.isDef = function (a) {
- return void 0 !== a
- }
- ;
- goog.isString = function (a) {
- return "string" == typeof a
- }
- ;
- goog.isBoolean = function (a) {
- return "boolean" == typeof a
- }
- ;
- goog.isNumber = function (a) {
- return "number" == typeof a
- }
- ;
- goog.exportPath_ = function (a, b, c) {
- a = a.split(".");
- c = c || goog.global;
- a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]);
- for (var d; a.length && (d = a.shift());)
- a.length || void 0 === b ? c = c[d] && c[d] !== Object.prototype[d] ? c[d] : c[d] = {} : c[d] = b
- }
- ;
- goog.define = function (a, b) {
- var c = b;
- if (!COMPILED) {
- var d = goog.global.CLOSURE_UNCOMPILED_DEFINES
- , e = goog.global.CLOSURE_DEFINES;
- d && void 0 === d.nodeType && Object.prototype.hasOwnProperty.call(d, a) ? c = d[a] : e && void 0 === e.nodeType && Object.prototype.hasOwnProperty.call(e, a) && (c = e[a])
- }
- return c
- }
- ;
- goog.FEATURESET_YEAR = 2012;
- goog.DEBUG = !1;
- goog.LOCALE = "en";
- goog.TRUSTED_SITE = !0;
- goog.STRICT_MODE_COMPATIBLE = !1;
- goog.DISALLOW_TEST_ONLY_CODE = COMPILED && !goog.DEBUG;
- goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1;
- goog.provide = function (a) {
- if (goog.isInModuleLoader_())
- throw Error("goog.provide cannot be used within a module.");
- if (!COMPILED && goog.isProvided_(a))
- throw Error('Namespace "' + a + '" already declared.');
- goog.constructNamespace_(a)
- }
- ;
- goog.constructNamespace_ = function (a, b) {
- if (!COMPILED) {
- delete goog.implicitNamespaces_[a];
- for (var c = a; (c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);)
- goog.implicitNamespaces_[c] = !0
- }
- goog.exportPath_(a, b)
- }
- ;
- goog.getScriptNonce = function (a) {
- if (a && a != goog.global)
- return goog.getScriptNonce_(a.document);
- null === goog.cspNonce_ && (goog.cspNonce_ = goog.getScriptNonce_(goog.global.document));
- return goog.cspNonce_
- }
- ;
- goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/;
- goog.cspNonce_ = null;
- goog.getScriptNonce_ = function (a) {
- return (a = a.querySelector && a.querySelector("script[nonce]")) && (a = a.nonce || a.getAttribute("nonce")) && goog.NONCE_PATTERN_.test(a) ? a : ""
- }
- ;
- goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
- goog.module = function (a) {
- if ("string" !== typeof a || !a || -1 == a.search(goog.VALID_MODULE_RE_))
- throw Error("Invalid module identifier");
- if (!goog.isInGoogModuleLoader_())
- throw Error("Module " + a + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");
- if (goog.moduleLoaderState_.moduleName)
- throw Error("goog.module may only be called once per module.");
- goog.moduleLoaderState_.moduleName = a;
- if (!COMPILED) {
- if (goog.isProvided_(a))
- throw Error('Namespace "' + a + '" already declared.');
- delete goog.implicitNamespaces_[a]
- }
- }
- ;
- goog.module.get = function (a) {
- return goog.module.getInternal_(a)
- }
- ;
- goog.module.getInternal_ = function (a) {
- if (!COMPILED) {
- if (a in goog.loadedModules_)
- return goog.loadedModules_[a].exports;
- if (!goog.implicitNamespaces_[a])
- return a = goog.getObjectByName(a),
- null != a ? a : null
- }
- return null
- }
- ;
- goog.ModuleType = {
- ES6: "es6",
- GOOG: "goog"
- };
- goog.moduleLoaderState_ = null;
- goog.isInModuleLoader_ = function () {
- return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_()
- }
- ;
- goog.isInGoogModuleLoader_ = function () {
- return !!goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.GOOG
- }
- ;
- goog.isInEs6ModuleLoader_ = function () {
- if (goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.ES6)
- return !0;
- var a = goog.global.$jscomp;
- return a ? "function" != typeof a.getCurrentModulePath ? !1 : !!a.getCurrentModulePath() : !1
- }
- ;
- goog.module.declareLegacyNamespace = function () {
- if (!COMPILED && !goog.isInGoogModuleLoader_())
- throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");
- if (!COMPILED && !goog.moduleLoaderState_.moduleName)
- throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");
- goog.moduleLoaderState_.declareLegacyNamespace = !0
- }
- ;
- goog.declareModuleId = function (a) {
- if (!COMPILED) {
- if (!goog.isInEs6ModuleLoader_())
- throw Error("goog.declareModuleId may only be called from within an ES6 module");
- if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName)
- throw Error("goog.declareModuleId may only be called once per module.");
- if (a in goog.loadedModules_)
- throw Error('Module with namespace "' + a + '" already exists.');
- }
- if (goog.moduleLoaderState_)
- goog.moduleLoaderState_.moduleName = a;
- else {
- var b = goog.global.$jscomp;
- if (!b || "function" != typeof b.getCurrentModulePath)
- throw Error('Module with namespace "' + a + '" has been loaded incorrectly.');
- b = b.require(b.getCurrentModulePath());
- goog.loadedModules_[a] = {
- exports: b,
- type: goog.ModuleType.ES6,
- moduleId: a
- }
- }
- }
- ;
- goog.setTestOnly = function (a) {
- if (goog.DISALLOW_TEST_ONLY_CODE)
- throw a = a || "",
- Error("Importing test-only code into non-debug environment" + (a ? ": " + a : "."));
- }
- ;
- goog.forwardDeclare = function (a) { }
- ;
- COMPILED || (goog.isProvided_ = function (a) {
- return a in goog.loadedModules_ || !goog.implicitNamespaces_[a] && null != goog.getObjectByName(a)
- }
- ,
- goog.implicitNamespaces_ = {
- "goog.module": !0
- });
- goog.getObjectByName = function (a, b) {
- for (var c = a.split("."), d = b || goog.global, e = 0; e < c.length; e++)
- if (d = d[c[e]],
- null == d)
- return null;
- return d
- }
- ;
- goog.globalize = function (a, b) {
- var c = b || goog.global, d;
- for (d in a)
- c[d] = a[d]
- }
- ;
- goog.addDependency = function (a, b, c, d) {
- !COMPILED && goog.DEPENDENCIES_ENABLED && goog.debugLoader_.addDependency(a, b, c, d)
- }
- ;
- goog.ENABLE_DEBUG_LOADER = !0;
- goog.logToConsole_ = function (a) {
- goog.global.console && goog.global.console.error(a)
- }
- ;
- goog.require = function (a) {
- if (!COMPILED) {
- goog.ENABLE_DEBUG_LOADER && goog.debugLoader_.requested(a);
- if (goog.isProvided_(a)) {
- if (goog.isInModuleLoader_())
- return goog.module.getInternal_(a)
- } else if (goog.ENABLE_DEBUG_LOADER) {
- var b = goog.moduleLoaderState_;
- goog.moduleLoaderState_ = null;
- try {
- goog.debugLoader_.load_(a)
- } finally {
- goog.moduleLoaderState_ = b
- }
- }
- return null
- }
- }
- ;
- goog.requireType = function (a) {
- return {}
- }
- ;
- goog.basePath = "";
- goog.nullFunction = function () { }
- ;
- goog.abstractMethod = function () {
- throw Error("unimplemented abstract method");
- }
- ;
- goog.addSingletonGetter = function (a) {
- a.instance_ = void 0;
- a.getInstance = function () {
- if (a.instance_)
- return a.instance_;
- goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a);
- return a.instance_ = new a
- }
- }
- ;
- goog.instantiatedSingletons_ = [];
- goog.LOAD_MODULE_USING_EVAL = !0;
- goog.SEAL_MODULE_EXPORTS = goog.DEBUG;
- goog.loadedModules_ = {};
- goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
- goog.TRANSPILE = "detect";
- goog.ASSUME_ES_MODULES_TRANSPILED = !1;
- goog.TRANSPILE_TO_LANGUAGE = "";
- goog.TRANSPILER = "transpile.js";
- goog.hasBadLetScoping = null;
- goog.useSafari10Workaround = function () {
- if (null == goog.hasBadLetScoping) {
- try {
- var a = !eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";')
- } catch (b) {
- a = !1
- }
- goog.hasBadLetScoping = a
- }
- return goog.hasBadLetScoping
- }
- ;
- goog.workaroundSafari10EvalBug = function (a) {
- return "(function(){" + a + "\n;})();\n"
- }
- ;
- goog.loadModule = function (a) {
- var b = goog.moduleLoaderState_;
- try {
- goog.moduleLoaderState_ = {
- moduleName: "",
- declareLegacyNamespace: !1,
- type: goog.ModuleType.GOOG
- };
- if (goog.isFunction(a))
- var c = a.call(void 0, {});
- else if ("string" === typeof a)
- goog.useSafari10Workaround() && (a = goog.workaroundSafari10EvalBug(a)),
- c = goog.loadModuleFromSource_.call(void 0, a);
- else
- throw Error("Invalid module definition");
- var d = goog.moduleLoaderState_.moduleName;
- if ("string" === typeof d && d)
- goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && "object" == typeof c && null != c && Object.seal(c),
- goog.loadedModules_[d] = {
- exports: c,
- type: goog.ModuleType.GOOG,
- moduleId: goog.moduleLoaderState_.moduleName
- };
- else
- throw Error('Invalid module name "' + d + '"');
- } finally {
- goog.moduleLoaderState_ = b
- }
- }
- ;
- goog.loadModuleFromSource_ = function (a) {
- eval(a);
- return {}
- }
- ;
- goog.normalizePath_ = function (a) {
- a = a.split("/");
- for (var b = 0; b < a.length;)
- "." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++;
- return a.join("/")
- }
- ;
- goog.loadFileSync_ = function (a) {
- if (goog.global.CLOSURE_LOAD_FILE_SYNC)
- return goog.global.CLOSURE_LOAD_FILE_SYNC(a);
- try {
- var b = new goog.global.XMLHttpRequest;
- b.open("get", a, !1);
- b.send();
- return 0 == b.status || 200 == b.status ? b.responseText : null
- } catch (c) {
- return null
- }
- }
- ;
- goog.transpile_ = function (a, b, c) {
- var d = goog.global.$jscomp;
- d || (goog.global.$jscomp = d = {});
- var e = d.transpile;
- if (!e) {
- var f = goog.basePath + goog.TRANSPILER
- , g = goog.loadFileSync_(f);
- if (g) {
- (function () {
- (0,
- eval)(g + "\n//# sourceURL=" + f)
- }
- ).call(goog.global);
- if (goog.global.$gwtExport && goog.global.$gwtExport.$jscomp && !goog.global.$gwtExport.$jscomp.transpile)
- throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: ' + JSON.stringify(goog.global.$gwtExport));
- goog.global.$jscomp.transpile = goog.global.$gwtExport.$jscomp.transpile;
- d = goog.global.$jscomp;
- e = d.transpile
- }
- }
- e || (e = d.transpile = function (a, b) {
- goog.logToConsole_(b + " requires transpilation but no transpiler was found.");
- return a
- }
- );
- return e(a, b, c)
- }
- ;
- goog.typeOf = function (a) {
- var b = typeof a;
- if ("object" == b)
- if (a) {
- if (a instanceof Array)
- return "array";
- if (a instanceof Object)
- return b;
- var c = Object.prototype.toString.call(a);
- if ("[object Window]" == c)
- return "object";
- if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice"))
- return "array";
- if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call"))
- return "function"
- } else
- return "null";
- else if ("function" == b && "undefined" == typeof a.call)
- return "object";
- return b
- }
- ;
- goog.isNull = function (a) {
- return null === a
- }
- ;
- goog.isDefAndNotNull = function (a) {
- return null != a
- }
- ;
- goog.isArray = function (a) {
- return "array" == goog.typeOf(a)
- }
- ;
- goog.isArrayLike = function (a) {
- var b = goog.typeOf(a);
- return "array" == b || "object" == b && "number" == typeof a.length
- }
- ;
- goog.isDateLike = function (a) {
- return goog.isObject(a) && "function" == typeof a.getFullYear
- }
- ;
- goog.isFunction = function (a) {
- return "function" == goog.typeOf(a)
- }
- ;
- goog.isObject = function (a) {
- var b = typeof a;
- return "object" == b && null != a || "function" == b
- }
- ;
- goog.getUid = function (a) {
- return a[goog.UID_PROPERTY_] || (a[goog.UID_PROPERTY_] = ++goog.uidCounter_)
- }
- ;
- goog.hasUid = function (a) {
- return !!a[goog.UID_PROPERTY_]
- }
- ;
- goog.removeUid = function (a) {
- null !== a && "removeAttribute" in a && a.removeAttribute(goog.UID_PROPERTY_);
- try {
- delete a[goog.UID_PROPERTY_]
- } catch (b) { }
- }
- ;
- goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0);
- goog.uidCounter_ = 0;
- goog.getHashCode = goog.getUid;
- goog.removeHashCode = goog.removeUid;
- goog.cloneObject = function (a) {
- var b = goog.typeOf(a);
- if ("object" == b || "array" == b) {
- if ("function" === typeof a.clone)
- return a.clone();
- b = "array" == b ? [] : {};
- for (var c in a)
- b[c] = goog.cloneObject(a[c]);
- return b
- }
- return a
- }
- ;
- goog.bindNative_ = function (a, b, c) {
- return a.call.apply(a.bind, arguments)
- }
- ;
- goog.bindJs_ = function (a, b, c) {
- if (!a)
- throw Error();
- if (2 < arguments.length) {
- var d = Array.prototype.slice.call(arguments, 2);
- return function () {
- var c = Array.prototype.slice.call(arguments);
- Array.prototype.unshift.apply(c, d);
- return a.apply(b, c)
- }
- }
- return function () {
- return a.apply(b, arguments)
- }
- }
- ;
- goog.bind = function (a, b, c) {
- Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_;
- return goog.bind.apply(null, arguments)
- }
- ;
- goog.partial = function (a, b) {
- var c = Array.prototype.slice.call(arguments, 1);
- return function () {
- var b = c.slice();
- b.push.apply(b, arguments);
- return a.apply(this, b)
- }
- }
- ;
- goog.mixin = function (a, b) {
- for (var c in b)
- a[c] = b[c]
- }
- ;
- goog.now = goog.TRUSTED_SITE && Date.now || function () {
- return +new Date
- }
- ;
- goog.globalEval = function (a) {
- if (goog.global.execScript)
- goog.global.execScript(a, "JavaScript");
- else if (goog.global.eval) {
- if (null == goog.evalWorksForGlobals_) {
- try {
- goog.global.eval("var _evalTest_ = 1;")
- } catch (d) { }
- if ("undefined" != typeof goog.global._evalTest_) {
- try {
- delete goog.global._evalTest_
- } catch (d) { }
- goog.evalWorksForGlobals_ = !0
- } else
- goog.evalWorksForGlobals_ = !1
- }
- if (goog.evalWorksForGlobals_)
- goog.global.eval(a);
- else {
- var b = goog.global.document
- , c = b.createElement("script");
- c.type = "text/javascript";
- c.defer = !1;
- c.appendChild(b.createTextNode(a));
- b.head.appendChild(c);
- b.head.removeChild(c)
- }
- } else
- throw Error("goog.globalEval not available");
- }
- ;
- goog.evalWorksForGlobals_ = null;
- goog.getCssName = function (a, b) {
- if ("." == String(a).charAt(0))
- throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + a);
- var c = function (a) {
- return goog.cssNameMapping_[a] || a
- }
- , d = function (a) {
- a = a.split("-");
- for (var b = [], d = 0; d < a.length; d++)
- b.push(c(a[d]));
- return b.join("-")
- };
- d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function (a) {
- return a
- }
- ;
- d = b ? a + "-" + d(b) : d(a);
- return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(d) : d
- }
- ;
- goog.setCssNameMapping = function (a, b) {
- goog.cssNameMapping_ = a;
- goog.cssNameMappingStyle_ = b
- }
- ;
- !COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING && (goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING);
- goog.getMsg = function (a, b, c) {
- c && c.html && (a = a.replace(/</g, "<"));
- b && (a = a.replace(/\{\$([^}]+)}/g, function (a, c) {
- return null != b && c in b ? b[c] : a
- }));
- return a
- }
- ;
- goog.getMsgWithFallback = function (a, b) {
- return a
- }
- ;
- goog.exportSymbol = function (a, b, c) {
- goog.exportPath_(a, b, c)
- }
- ;
- goog.exportProperty = function (a, b, c) {
- a[b] = c
- }
- ;
- goog.inherits = function (a, b) {
- function c() { }
- c.prototype = b.prototype;
- a.superClass_ = b.prototype;
- a.prototype = new c;
- a.prototype.constructor = a;
- a.base = function (a, c, f) {
- for (var d = Array(arguments.length - 2), e = 2; e < arguments.length; e++)
- d[e - 2] = arguments[e];
- return b.prototype[c].apply(a, d)
- }
- }
- ;
- goog.base = function (a, b, c) {
- var d = arguments.callee.caller;
- if (goog.STRICT_MODE_COMPATIBLE || goog.DEBUG && !d)
- throw Error("arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");
- if ("undefined" !== typeof d.superClass_) {
- for (var e = Array(arguments.length - 1), f = 1; f < arguments.length; f++)
- e[f - 1] = arguments[f];
- return d.superClass_.constructor.apply(a, e)
- }
- if ("string" != typeof b && "symbol" != typeof b)
- throw Error("method names provided to goog.base must be a string or a symbol");
- e = Array(arguments.length - 2);
- for (f = 2; f < arguments.length; f++)
- e[f - 2] = arguments[f];
- f = !1;
- for (var g = a.constructor.prototype; g; g = Object.getPrototypeOf(g))
- if (g[b] === d)
- f = !0;
- else if (f)
- return g[b].apply(a, e);
- if (a[b] === d)
- return a.constructor.prototype[b].apply(a, e);
- throw Error("goog.base called from a method of one name to a method of a different name");
- }
- ;
- goog.scope = function (a) {
- if (goog.isInModuleLoader_())
- throw Error("goog.scope is not supported within a module.");
- a.call(goog.global)
- }
- ;
- COMPILED || (goog.global.COMPILED = COMPILED);
- goog.defineClass = function (a, b) {
- var c = b.constructor
- , d = b.statics;
- c && c != Object.prototype.constructor || (c = function () {
- throw Error("cannot instantiate an interface (no constructor defined).");
- }
- );
- c = goog.defineClass.createSealingConstructor_(c, a);
- a && goog.inherits(c, a);
- delete b.constructor;
- delete b.statics;
- goog.defineClass.applyProperties_(c.prototype, b);
- null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d));
- return c
- }
- ;
- goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG;
- goog.defineClass.createSealingConstructor_ = function (a, b) {
- if (!goog.defineClass.SEAL_CLASS_INSTANCES)
- return a;
- var c = !goog.defineClass.isUnsealable_(b)
- , d = function () {
- var b = a.apply(this, arguments) || this;
- b[goog.UID_PROPERTY_] = b[goog.UID_PROPERTY_];
- this.constructor === d && c && Object.seal instanceof Function && Object.seal(b);
- return b
- };
- return d
- }
- ;
- goog.defineClass.isUnsealable_ = function (a) {
- return a && a.prototype && a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]
- }
- ;
- goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
- goog.defineClass.applyProperties_ = function (a, b) {
- for (var c in b)
- Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
- for (var d = 0; d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; d++)
- c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],
- Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c])
- }
- ;
- goog.tagUnsealableClass = function (a) {
- !COMPILED && goog.defineClass.SEAL_CLASS_INSTANCES && (a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_] = !0)
- }
- ;
- goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_ = "goog_defineClass_legacy_unsealable";
- !COMPILED && goog.DEPENDENCIES_ENABLED && (goog.inHtmlDocument_ = function () {
- var a = goog.global.document;
- return null != a && "write" in a
- }
- ,
- goog.isDocumentLoading_ = function () {
- var a = goog.global.document;
- return a.attachEvent ? "complete" != a.readyState : "loading" == a.readyState
- }
- ,
- goog.findBasePath_ = function () {
- if (void 0 != goog.global.CLOSURE_BASE_PATH && "string" === typeof goog.global.CLOSURE_BASE_PATH)
- goog.basePath = goog.global.CLOSURE_BASE_PATH;
- else if (goog.inHtmlDocument_()) {
- var a = goog.global.document
- , b = a.currentScript;
- a = b ? [b] : a.getElementsByTagName("SCRIPT");
- for (b = a.length - 1; 0 <= b; --b) {
- var c = a[b].src
- , d = c.lastIndexOf("?");
- d = -1 == d ? c.length : d;
- if ("base.js" == c.substr(d - 7, 7)) {
- goog.basePath = c.substr(0, d - 7);
- break
- }
- }
- }
- }
- ,
- goog.findBasePath_(),
- goog.Transpiler = function () {
- this.requiresTranspilation_ = null;
- this.transpilationTarget_ = goog.TRANSPILE_TO_LANGUAGE
- }
- ,
- goog.Transpiler.prototype.createRequiresTranspilation_ = function () {
- function a(a, b) {
- e ? d[a] = !0 : b() ? (c = a,
- d[a] = !1) : e = d[a] = !0
- }
- function b(a) {
- try {
- return !!eval(a)
- } catch (h) {
- return !1
- }
- }
- var c = "es3"
- , d = {
- es3: !1
- }
- , e = !1
- , f = goog.global.navigator && goog.global.navigator.userAgent ? goog.global.navigator.userAgent : "";
- a("es5", function () {
- return b("[1,].length==1")
- });
- a("es6", function () {
- return f.match(/Edge\/(\d+)(\.\d)*/i) ? !1 : b('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')
- });
- a("es7", function () {
- return b("2 ** 2 == 4")
- });
- a("es8", function () {
- return b("async () => 1, true")
- });
- a("es9", function () {
- return b("({...rest} = {}), true")
- });
- a("es_next", function () {
- return !1
- });
- return {
- target: c,
- map: d
- }
- }
- ,
- goog.Transpiler.prototype.needsTranspile = function (a, b) {
- if ("always" == goog.TRANSPILE)
- return !0;
- if ("never" == goog.TRANSPILE)
- return !1;
- if (!this.requiresTranspilation_) {
- var c = this.createRequiresTranspilation_();
- this.requiresTranspilation_ = c.map;
- this.transpilationTarget_ = this.transpilationTarget_ || c.target
- }
- if (a in this.requiresTranspilation_)
- return this.requiresTranspilation_[a] ? !0 : !goog.inHtmlDocument_() || "es6" != b || "noModule" in goog.global.document.createElement("script") ? !1 : !0;
- throw Error("Unknown language mode: " + a);
- }
- ,
- goog.Transpiler.prototype.transpile = function (a, b) {
- return goog.transpile_(a, b, this.transpilationTarget_)
- }
- ,
- goog.transpiler_ = new goog.Transpiler,
- goog.protectScriptTag_ = function (a) {
- return a.replace(/<\/(SCRIPT)/ig, "\\x3c/$1")
- }
- ,
- goog.DebugLoader_ = function () {
- this.dependencies_ = {};
- this.idToPath_ = {};
- this.written_ = {};
- this.loadingDeps_ = [];
- this.depsToLoad_ = [];
- this.paused_ = !1;
- this.factory_ = new goog.DependencyFactory(goog.transpiler_);
- this.deferredCallbacks_ = {};
- this.deferredQueue_ = []
- }
- ,
- goog.DebugLoader_.prototype.bootstrap = function (a, b) {
- function c() {
- d && (goog.global.setTimeout(d, 0),
- d = null)
- }
- var d = b;
- if (a.length) {
- for (var e = [], f = 0; f < a.length; f++) {
- var g = this.getPathFromDeps_(a[f]);
- if (!g)
- throw Error("Unregonized namespace: " + a[f]);
- e.push(this.dependencies_[g])
- }
- g = goog.require;
- var h = 0;
- for (f = 0; f < a.length; f++)
- g(a[f]),
- e[f].onLoad(function () {
- ++h == a.length && c()
- })
- } else
- c()
- }
- ,
- goog.DebugLoader_.prototype.loadClosureDeps = function () {
- this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath + "deps.js"), "deps.js", [], [], {}, !1));
- this.loadDeps_()
- }
- ,
- goog.DebugLoader_.prototype.requested = function (a, b) {
- var c = this.getPathFromDeps_(a);
- if (c && (b || this.areDepsLoaded_(this.dependencies_[c].requires))) {
- var d = this.deferredCallbacks_[c];
- d && (delete this.deferredCallbacks_[c],
- d())
- }
- }
- ,
- goog.DebugLoader_.prototype.setDependencyFactory = function (a) {
- this.factory_ = a
- }
- ,
- goog.DebugLoader_.prototype.load_ = function (a) {
- if (this.getPathFromDeps_(a)) {
- var b = this
- , c = []
- , d = function (a) {
- var e = b.getPathFromDeps_(a);
- if (!e)
- throw Error("Bad dependency path or symbol: " + a);
- if (!b.written_[e]) {
- b.written_[e] = !0;
- a = b.dependencies_[e];
- for (e = 0; e < a.requires.length; e++)
- goog.isProvided_(a.requires[e]) || d(a.requires[e]);
- c.push(a)
- }
- };
- d(a);
- a = !!this.depsToLoad_.length;
- this.depsToLoad_ = this.depsToLoad_.concat(c);
- this.paused_ || a || this.loadDeps_()
- } else
- throw a = "goog.require could not find: " + a,
- goog.logToConsole_(a),
- Error(a);
- }
- ,
- goog.DebugLoader_.prototype.loadDeps_ = function () {
- for (var a = this, b = this.paused_; this.depsToLoad_.length && !b;)
- (function () {
- var c = !1
- , d = a.depsToLoad_.shift()
- , e = !1;
- a.loading_(d);
- var f = {
- pause: function () {
- if (c)
- throw Error("Cannot call pause after the call to load.");
- b = !0
- },
- resume: function () {
- c ? a.resume_() : b = !1
- },
- loaded: function () {
- if (e)
- throw Error("Double call to loaded.");
- e = !0;
- a.loaded_(d)
- },
- pending: function () {
- for (var b = [], c = 0; c < a.loadingDeps_.length; c++)
- b.push(a.loadingDeps_[c]);
- return b
- },
- setModuleState: function (a) {
- goog.moduleLoaderState_ = {
- type: a,
- moduleName: "",
- declareLegacyNamespace: !1
- }
- },
- registerEs6ModuleExports: function (a, b, c) {
- c && (goog.loadedModules_[c] = {
- exports: b,
- type: goog.ModuleType.ES6,
- moduleId: c || ""
- })
- },
- registerGoogModuleExports: function (a, b) {
- goog.loadedModules_[a] = {
- exports: b,
- type: goog.ModuleType.GOOG,
- moduleId: a
- }
- },
- clearModuleState: function () {
- goog.moduleLoaderState_ = null
- },
- defer: function (b) {
- if (c)
- throw Error("Cannot register with defer after the call to load.");
- a.defer_(d, b)
- },
- areDepsLoaded: function () {
- return a.areDepsLoaded_(d.requires)
- }
- };
- try {
- d.load(f)
- } finally {
- c = !0
- }
- }
- )();
- b && this.pause_()
- }
- ,
- goog.DebugLoader_.prototype.pause_ = function () {
- this.paused_ = !0
- }
- ,
- goog.DebugLoader_.prototype.resume_ = function () {
- this.paused_ && (this.paused_ = !1,
- this.loadDeps_())
- }
- ,
- goog.DebugLoader_.prototype.loading_ = function (a) {
- this.loadingDeps_.push(a)
- }
- ,
- goog.DebugLoader_.prototype.loaded_ = function (a) {
- for (var b = 0; b < this.loadingDeps_.length; b++)
- if (this.loadingDeps_[b] == a) {
- this.loadingDeps_.splice(b, 1);
- break
- }
- for (b = 0; b < this.deferredQueue_.length; b++)
- if (this.deferredQueue_[b] == a.path) {
- this.deferredQueue_.splice(b, 1);
- break
- }
- if (this.loadingDeps_.length == this.deferredQueue_.length && !this.depsToLoad_.length)
- for (; this.deferredQueue_.length;)
- this.requested(this.deferredQueue_.shift(), !0);
- a.loaded()
- }
- ,
- goog.DebugLoader_.prototype.areDepsLoaded_ = function (a) {
- for (var b = 0; b < a.length; b++) {
- var c = this.getPathFromDeps_(a[b]);
- if (!c || !(c in this.deferredCallbacks_ || goog.isProvided_(a[b])))
- return !1
- }
- return !0
- }
- ,
- goog.DebugLoader_.prototype.getPathFromDeps_ = function (a) {
- return a in this.idToPath_ ? this.idToPath_[a] : a in this.dependencies_ ? a : null
- }
- ,
- goog.DebugLoader_.prototype.defer_ = function (a, b) {
- this.deferredCallbacks_[a.path] = b;
- this.deferredQueue_.push(a.path)
- }
- ,
- goog.LoadController = function () { }
- ,
- goog.LoadController.prototype.pause = function () { }
- ,
- goog.LoadController.prototype.resume = function () { }
- ,
- goog.LoadController.prototype.loaded = function () { }
- ,
- goog.LoadController.prototype.pending = function () { }
- ,
- goog.LoadController.prototype.registerEs6ModuleExports = function (a, b, c) { }
- ,
- goog.LoadController.prototype.setModuleState = function (a) { }
- ,
- goog.LoadController.prototype.clearModuleState = function () { }
- ,
- goog.LoadController.prototype.defer = function (a) { }
- ,
- goog.LoadController.prototype.areDepsLoaded = function () { }
- ,
- goog.Dependency = function (a, b, c, d, e) {
- this.path = a;
- this.relativePath = b;
- this.provides = c;
- this.requires = d;
- this.loadFlags = e;
- this.loaded_ = !1;
- this.loadCallbacks_ = []
- }
- ,
- goog.Dependency.prototype.getPathName = function () {
- var a = this.path
- , b = a.indexOf("://");
- 0 <= b && (a = a.substring(b + 3),
- b = a.indexOf("/"),
- 0 <= b && (a = a.substring(b + 1)));
- return a
- }
- ,
- goog.Dependency.prototype.onLoad = function (a) {
- this.loaded_ ? a() : this.loadCallbacks_.push(a)
- }
- ,
- goog.Dependency.prototype.loaded = function () {
- this.loaded_ = !0;
- var a = this.loadCallbacks_;
- this.loadCallbacks_ = [];
- for (var b = 0; b < a.length; b++)
- a[b]()
- }
- ,
- goog.Dependency.defer_ = !1,
- goog.Dependency.callbackMap_ = {},
- goog.Dependency.registerCallback_ = function (a) {
- var b = Math.random().toString(32);
- goog.Dependency.callbackMap_[b] = a;
- return b
- }
- ,
- goog.Dependency.unregisterCallback_ = function (a) {
- delete goog.Dependency.callbackMap_[a]
- }
- ,
- goog.Dependency.callback_ = function (a, b) {
- if (a in goog.Dependency.callbackMap_) {
- for (var c = goog.Dependency.callbackMap_[a], d = [], e = 1; e < arguments.length; e++)
- d.push(arguments[e]);
- c.apply(void 0, d)
- } else
- throw Error("Callback key " + a + " does not exist (was base.js loaded more than once?).");
- }
- ,
- goog.Dependency.prototype.load = function (a) {
- if (goog.global.CLOSURE_IMPORT_SCRIPT)
- goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause();
- else if (goog.inHtmlDocument_()) {
- var b = goog.global.document;
- if ("complete" == b.readyState && !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) {
- if (/\bdeps.js$/.test(this.path)) {
- a.loaded();
- return
- }
- throw Error('Cannot write "' + this.path + '" after document load');
- }
- if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && goog.isDocumentLoading_()) {
- var c = goog.Dependency.registerCallback_(function (b) {
- goog.DebugLoader_.IS_OLD_IE_ && "complete" != b.readyState || (goog.Dependency.unregisterCallback_(c),
- a.loaded())
- })
- , d = !goog.DebugLoader_.IS_OLD_IE_ && goog.getScriptNonce() ? ' nonce="' + goog.getScriptNonce() + '"' : "";
- d = '<script src="' + this.path + '" ' + (goog.DebugLoader_.IS_OLD_IE_ ? "onreadystatechange" : "onload") + "=\"goog.Dependency.callback_('" + c + '\', this)" type="text/javascript" ' + (goog.Dependency.defer_ ? "defer" : "") + d + ">\x3c/script>";
- b.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(d) : d)
- } else {
- var e = b.createElement("script");
- e.defer = goog.Dependency.defer_;
- e.async = !1;
- e.type = "text/javascript";
- (d = goog.getScriptNonce()) && e.setAttribute("nonce", d);
- goog.DebugLoader_.IS_OLD_IE_ ? (a.pause(),
- e.onreadystatechange = function () {
- if ("loaded" == e.readyState || "complete" == e.readyState)
- a.loaded(),
- a.resume()
- }
- ) : e.onload = function () {
- e.onload = null;
- a.loaded()
- }
- ;
- e.src = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path) : this.path;
- b.head.appendChild(e)
- }
- } else
- goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),
- "deps.js" == this.relativePath ? (goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),
- a.loaded()) : a.pause()
- }
- ,
- goog.Es6ModuleDependency = function (a, b, c, d, e) {
- goog.Dependency.call(this, a, b, c, d, e)
- }
- ,
- goog.inherits(goog.Es6ModuleDependency, goog.Dependency),
- goog.Es6ModuleDependency.prototype.load = function (a) {
- function b(a, b) {
- var c = b ? '<script type="module" crossorigin>' + b + "\x3c/script>" : '<script type="module" crossorigin src="' + a + '">\x3c/script>';
- d.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(c) : c)
- }
- function c(a, b) {
- var c = d.createElement("script");
- c.defer = !0;
- c.async = !1;
- c.type = "module";
- c.setAttribute("crossorigin", !0);
- var e = goog.getScriptNonce();
- e && c.setAttribute("nonce", e);
- b ? c.textContent = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScript(b) : b : c.src = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScriptURL(a) : a;
- d.head.appendChild(c)
- }
- if (goog.global.CLOSURE_IMPORT_SCRIPT)
- goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause();
- else if (goog.inHtmlDocument_()) {
- var d = goog.global.document
- , e = this;
- if (goog.isDocumentLoading_()) {
- var f = b;
- goog.Dependency.defer_ = !0
- } else
- f = c;
- var g = goog.Dependency.registerCallback_(function () {
- goog.Dependency.unregisterCallback_(g);
- a.setModuleState(goog.ModuleType.ES6)
- });
- f(void 0, 'goog.Dependency.callback_("' + g + '")');
- f(this.path, void 0);
- var h = goog.Dependency.registerCallback_(function (b) {
- goog.Dependency.unregisterCallback_(h);
- a.registerEs6ModuleExports(e.path, b, goog.moduleLoaderState_.moduleName)
- });
- f(void 0, 'import * as m from "' + this.path + '"; goog.Dependency.callback_("' + h + '", m)');
- var k = goog.Dependency.registerCallback_(function () {
- goog.Dependency.unregisterCallback_(k);
- a.clearModuleState();
- a.loaded()
- });
- f(void 0, 'goog.Dependency.callback_("' + k + '")')
- } else
- goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),
- a.pause()
- }
- ,
- goog.TransformedDependency = function (a, b, c, d, e) {
- goog.Dependency.call(this, a, b, c, d, e);
- this.contents_ = null;
- this.lazyFetch_ = !goog.inHtmlDocument_() || !("noModule" in goog.global.document.createElement("script"))
- }
- ,
- goog.inherits(goog.TransformedDependency, goog.Dependency),
- goog.TransformedDependency.prototype.load = function (a) {
- function b() {
- e.contents_ = goog.loadFileSync_(e.path);
- e.contents_ && (e.contents_ = e.transform(e.contents_),
- e.contents_ && (e.contents_ += "\n//# sourceURL=" + e.path))
- }
- function c() {
- e.lazyFetch_ && b();
- if (e.contents_) {
- f && a.setModuleState(goog.ModuleType.ES6);
- try {
- var c = e.contents_;
- e.contents_ = null;
- goog.globalEval(c);
- if (f)
- var d = goog.moduleLoaderState_.moduleName
- } finally {
- f && a.clearModuleState()
- }
- f && goog.global.$jscomp.require.ensure([e.getPathName()], function () {
- a.registerEs6ModuleExports(e.path, goog.global.$jscomp.require(e.getPathName()), d)
- });
- a.loaded()
- }
- }
- function d() {
- var a = goog.global.document
- , b = goog.Dependency.registerCallback_(function () {
- goog.Dependency.unregisterCallback_(b);
- c()
- })
- , d = '<script type="text/javascript">' + goog.protectScriptTag_('goog.Dependency.callback_("' + b + '");') + "\x3c/script>";
- a.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(d) : d)
- }
- var e = this;
- if (goog.global.CLOSURE_IMPORT_SCRIPT)
- b(),
- this.contents_ && goog.global.CLOSURE_IMPORT_SCRIPT("", this.contents_) ? (this.contents_ = null,
- a.loaded()) : a.pause();
- else {
- var f = this.loadFlags.module == goog.ModuleType.ES6;
- this.lazyFetch_ || b();
- var g = 1 < a.pending().length
- , h = g && goog.DebugLoader_.IS_OLD_IE_;
- g = goog.Dependency.defer_ && (g || goog.isDocumentLoading_());
- if (h || g)
- a.defer(function () {
- c()
- });
- else {
- var k = goog.global.document;
- h = goog.inHtmlDocument_() && "ActiveXObject" in goog.global;
- if (f && goog.inHtmlDocument_() && goog.isDocumentLoading_() && !h) {
- goog.Dependency.defer_ = !0;
- a.pause();
- var m = k.onreadystatechange;
- k.onreadystatechange = function () {
- "interactive" == k.readyState && (k.onreadystatechange = m,
- c(),
- a.resume());
- goog.isFunction(m) && m.apply(void 0, arguments)
- }
- } else
- !goog.DebugLoader_.IS_OLD_IE_ && goog.inHtmlDocument_() && goog.isDocumentLoading_() ? d() : c()
- }
- }
- }
- ,
- goog.TransformedDependency.prototype.transform = function (a) { }
- ,
- goog.TranspiledDependency = function (a, b, c, d, e, f) {
- goog.TransformedDependency.call(this, a, b, c, d, e);
- this.transpiler = f
- }
- ,
- goog.inherits(goog.TranspiledDependency, goog.TransformedDependency),
- goog.TranspiledDependency.prototype.transform = function (a) {
- return this.transpiler.transpile(a, this.getPathName())
- }
- ,
- goog.PreTranspiledEs6ModuleDependency = function (a, b, c, d, e) {
- goog.TransformedDependency.call(this, a, b, c, d, e)
- }
- ,
- goog.inherits(goog.PreTranspiledEs6ModuleDependency, goog.TransformedDependency),
- goog.PreTranspiledEs6ModuleDependency.prototype.transform = function (a) {
- return a
- }
- ,
- goog.GoogModuleDependency = function (a, b, c, d, e, f, g) {
- goog.TransformedDependency.call(this, a, b, c, d, e);
- this.needsTranspile_ = f;
- this.transpiler_ = g
- }
- ,
- goog.inherits(goog.GoogModuleDependency, goog.TransformedDependency),
- goog.GoogModuleDependency.prototype.transform = function (a) {
- this.needsTranspile_ && (a = this.transpiler_.transpile(a, this.getPathName()));
- return goog.LOAD_MODULE_USING_EVAL && void 0 !== goog.global.JSON ? "goog.loadModule(" + goog.global.JSON.stringify(a + "\n//# sourceURL=" + this.path + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + a + "\n;return exports});\n//# sourceURL=" + this.path + "\n"
- }
- ,
- goog.DebugLoader_.IS_OLD_IE_ = !(goog.global.atob || !goog.global.document || !goog.global.document.all),
- goog.DebugLoader_.prototype.addDependency = function (a, b, c, d) {
- b = b || [];
- a = a.replace(/\\/g, "/");
- var e = goog.normalizePath_(goog.basePath + a);
- d && "boolean" !== typeof d || (d = d ? {
- module: goog.ModuleType.GOOG
- } : {});
- c = this.factory_.createDependency(e, a, b, c, d, goog.transpiler_.needsTranspile(d.lang || "es3", d.module));
- this.dependencies_[e] = c;
- for (c = 0; c < b.length; c++)
- this.idToPath_[b[c]] = e;
- this.idToPath_[a] = e
- }
- ,
- goog.DependencyFactory = function (a) {
- this.transpiler = a
- }
- ,
- goog.DependencyFactory.prototype.createDependency = function (a, b, c, d, e, f) {
- return e.module == goog.ModuleType.GOOG ? new goog.GoogModuleDependency(a, b, c, d, e, f, this.transpiler) : f ? new goog.TranspiledDependency(a, b, c, d, e, this.transpiler) : e.module == goog.ModuleType.ES6 ? "never" == goog.TRANSPILE && goog.ASSUME_ES_MODULES_TRANSPILED ? new goog.PreTranspiledEs6ModuleDependency(a, b, c, d, e) : new goog.Es6ModuleDependency(a, b, c, d, e) : new goog.Dependency(a, b, c, d, e)
- }
- ,
- goog.debugLoader_ = new goog.DebugLoader_,
- goog.loadClosureDeps = function () {
- goog.debugLoader_.loadClosureDeps()
- }
- ,
- goog.setDependencyFactory = function (a) {
- goog.debugLoader_.setDependencyFactory(a)
- }
- ,
- goog.global.CLOSURE_NO_DEPS || goog.debugLoader_.loadClosureDeps(),
- goog.bootstrap = function (a, b) {
- goog.debugLoader_.bootstrap(a, b)
- }
- );
- goog.TRUSTED_TYPES_POLICY_NAME = "";
- goog.identity_ = function (a) {
- return a
- }
- ;
- goog.createTrustedTypesPolicy = function (a) {
- var b = null
- , c = goog.global.trustedTypes || goog.global.TrustedTypes;
- if (!c || !c.createPolicy)
- return b;
- try {
- b = c.createPolicy(a, {
- createHTML: goog.identity_,
- createScript: goog.identity_,
- createScriptURL: goog.identity_,
- createURL: goog.identity_
- })
- } catch (d) {
- goog.logToConsole_(d.message)
- }
- return b
- }
- ;
- goog.TRUSTED_TYPES_POLICY_ = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#base") : null;
- goog.debug = {};
- goog.debug.Error = function (a) {
- if (Error.captureStackTrace)
- Error.captureStackTrace(this, goog.debug.Error);
- else {
- var b = Error().stack;
- b && (this.stack = b)
- }
- a && (this.message = String(a));
- this.reportErrorToServer = !0
- }
- ;
- goog.inherits(goog.debug.Error, Error);
- goog.debug.Error.prototype.name = "CustomError";
- goog.dom = {};
- goog.dom.NodeType = {
- ELEMENT: 1,
- ATTRIBUTE: 2,
- TEXT: 3,
- CDATA_SECTION: 4,
- ENTITY_REFERENCE: 5,
- ENTITY: 6,
- PROCESSING_INSTRUCTION: 7,
- COMMENT: 8,
- DOCUMENT: 9,
- DOCUMENT_TYPE: 10,
- DOCUMENT_FRAGMENT: 11,
- NOTATION: 12
- };
- goog.asserts = {};
- goog.asserts.ENABLE_ASSERTS = goog.DEBUG;
- goog.asserts.AssertionError = function (a, b) {
- goog.debug.Error.call(this, goog.asserts.subs_(a, b));
- this.messagePattern = a
- }
- ;
- goog.inherits(goog.asserts.AssertionError, goog.debug.Error);
- goog.asserts.AssertionError.prototype.name = "AssertionError";
- goog.asserts.DEFAULT_ERROR_HANDLER = function (a) {
- throw a;
- }
- ;
- goog.asserts.errorHandler_ = goog.asserts.DEFAULT_ERROR_HANDLER;
- goog.asserts.subs_ = function (a, b) {
- for (var c = a.split("%s"), d = "", e = c.length - 1, f = 0; f < e; f++)
- d += c[f] + (f < b.length ? b[f] : "%s");
- return d + c[e]
- }
- ;
- goog.asserts.doAssertFailure_ = function (a, b, c, d) {
- var e = "Assertion failed";
- if (c) {
- e += ": " + c;
- var f = d
- } else
- a && (e += ": " + a,
- f = b);
- a = new goog.asserts.AssertionError("" + e, f || []);
- goog.asserts.errorHandler_(a)
- }
- ;
- goog.asserts.setErrorHandler = function (a) {
- goog.asserts.ENABLE_ASSERTS && (goog.asserts.errorHandler_ = a)
- }
- ;
- goog.asserts.assert = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !a && goog.asserts.doAssertFailure_("", null, b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertExists = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && null == a && goog.asserts.doAssertFailure_("Expected to exist: %s.", [a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.fail = function (a, b) {
- goog.asserts.ENABLE_ASSERTS && goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1)))
- }
- ;
- goog.asserts.assertNumber = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && "number" !== typeof a && goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertString = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && "string" !== typeof a && goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertFunction = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !goog.isFunction(a) && goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertObject = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !goog.isObject(a) && goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertArray = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !goog.isArray(a) && goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertBoolean = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && "boolean" !== typeof a && goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertElement = function (a, b, c) {
- !goog.asserts.ENABLE_ASSERTS || goog.isObject(a) && a.nodeType == goog.dom.NodeType.ELEMENT || goog.asserts.doAssertFailure_("Expected Element but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertInstanceof = function (a, b, c, d) {
- !goog.asserts.ENABLE_ASSERTS || a instanceof b || goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.", [goog.asserts.getType_(b), goog.asserts.getType_(a)], c, Array.prototype.slice.call(arguments, 3));
- return a
- }
- ;
- goog.asserts.assertFinite = function (a, b, c) {
- !goog.asserts.ENABLE_ASSERTS || "number" == typeof a && isFinite(a) || goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.", [a], b, Array.prototype.slice.call(arguments, 2));
- return a
- }
- ;
- goog.asserts.assertObjectPrototypeIsIntact = function () {
- for (var a in Object.prototype)
- goog.asserts.fail(a + " should not be enumerable in Object.prototype.")
- }
- ;
- goog.asserts.getType_ = function (a) {
- return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : typeof a
- }
- ;
- goog.array = {};
- goog.NATIVE_ARRAY_PROTOTYPES = goog.TRUSTED_SITE;
- goog.array.ASSUME_NATIVE_FUNCTIONS = 2012 < goog.FEATURESET_YEAR;
- goog.array.peek = function (a) {
- return a[a.length - 1]
- }
- ;
- goog.array.last = goog.array.peek;
- goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.indexOf) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.indexOf.call(a, b, c)
- }
- : function (a, b, c) {
- c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
- if ("string" === typeof a)
- return "string" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, c);
- for (; c < a.length; c++)
- if (c in a && a[c] === b)
- return c;
- return -1
- }
- ;
- goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.lastIndexOf) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.lastIndexOf.call(a, b, null == c ? a.length - 1 : c)
- }
- : function (a, b, c) {
- c = null == c ? a.length - 1 : c;
- 0 > c && (c = Math.max(0, a.length + c));
- if ("string" === typeof a)
- return "string" !== typeof b || 1 != b.length ? -1 : a.lastIndexOf(b, c);
- for (; 0 <= c; c--)
- if (c in a && a[c] === b)
- return c;
- return -1
- }
- ;
- goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.forEach) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- Array.prototype.forEach.call(a, b, c)
- }
- : function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++)
- f in e && b.call(c, e[f], f, a)
- }
- ;
- goog.array.forEachRight = function (a, b, c) {
- var d = a.length
- , e = "string" === typeof a ? a.split("") : a;
- for (--d; 0 <= d; --d)
- d in e && b.call(c, e[d], d, a)
- }
- ;
- goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.filter) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.filter.call(a, b, c)
- }
- : function (a, b, c) {
- for (var d = a.length, e = [], f = 0, g = "string" === typeof a ? a.split("") : a, h = 0; h < d; h++)
- if (h in g) {
- var k = g[h];
- b.call(c, k, h, a) && (e[f++] = k)
- }
- return e
- }
- ;
- goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.map) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.map.call(a, b, c)
- }
- : function (a, b, c) {
- for (var d = a.length, e = Array(d), f = "string" === typeof a ? a.split("") : a, g = 0; g < d; g++)
- g in f && (e[g] = b.call(c, f[g], g, a));
- return e
- }
- ;
- goog.array.reduce = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduce) ? function (a, b, c, d) {
- goog.asserts.assert(null != a.length);
- d && (b = goog.bind(b, d));
- return Array.prototype.reduce.call(a, b, c)
- }
- : function (a, b, c, d) {
- var e = c;
- goog.array.forEach(a, function (c, g) {
- e = b.call(d, e, c, g, a)
- });
- return e
- }
- ;
- goog.array.reduceRight = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduceRight) ? function (a, b, c, d) {
- goog.asserts.assert(null != a.length);
- goog.asserts.assert(null != b);
- d && (b = goog.bind(b, d));
- return Array.prototype.reduceRight.call(a, b, c)
- }
- : function (a, b, c, d) {
- var e = c;
- goog.array.forEachRight(a, function (c, g) {
- e = b.call(d, e, c, g, a)
- });
- return e
- }
- ;
- goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.some) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.some.call(a, b, c)
- }
- : function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++)
- if (f in e && b.call(c, e[f], f, a))
- return !0;
- return !1
- }
- ;
- goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.every) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.every.call(a, b, c)
- }
- : function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++)
- if (f in e && !b.call(c, e[f], f, a))
- return !1;
- return !0
- }
- ;
- goog.array.count = function (a, b, c) {
- var d = 0;
- goog.array.forEach(a, function (a, f, g) {
- b.call(c, a, f, g) && ++d
- }, c);
- return d
- }
- ;
- goog.array.find = function (a, b, c) {
- b = goog.array.findIndex(a, b, c);
- return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b]
- }
- ;
- goog.array.findIndex = function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++)
- if (f in e && b.call(c, e[f], f, a))
- return f;
- return -1
- }
- ;
- goog.array.findRight = function (a, b, c) {
- b = goog.array.findIndexRight(a, b, c);
- return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b]
- }
- ;
- goog.array.findIndexRight = function (a, b, c) {
- var d = a.length
- , e = "string" === typeof a ? a.split("") : a;
- for (--d; 0 <= d; d--)
- if (d in e && b.call(c, e[d], d, a))
- return d;
- return -1
- }
- ;
- goog.array.contains = function (a, b) {
- return 0 <= goog.array.indexOf(a, b)
- }
- ;
- goog.array.isEmpty = function (a) {
- return 0 == a.length
- }
- ;
- goog.array.clear = function (a) {
- if (!goog.isArray(a))
- for (var b = a.length - 1; 0 <= b; b--)
- delete a[b];
- a.length = 0
- }
- ;
- goog.array.insert = function (a, b) {
- goog.array.contains(a, b) || a.push(b)
- }
- ;
- goog.array.insertAt = function (a, b, c) {
- goog.array.splice(a, c, 0, b)
- }
- ;
- goog.array.insertArrayAt = function (a, b, c) {
- goog.partial(goog.array.splice, a, c, 0).apply(null, b)
- }
- ;
- goog.array.insertBefore = function (a, b, c) {
- var d;
- 2 == arguments.length || 0 > (d = goog.array.indexOf(a, c)) ? a.push(b) : goog.array.insertAt(a, b, d)
- }
- ;
- goog.array.remove = function (a, b) {
- var c = goog.array.indexOf(a, b), d;
- (d = 0 <= c) && goog.array.removeAt(a, c);
- return d
- }
- ;
- goog.array.removeLast = function (a, b) {
- var c = goog.array.lastIndexOf(a, b);
- return 0 <= c ? (goog.array.removeAt(a, c),
- !0) : !1
- }
- ;
- goog.array.removeAt = function (a, b) {
- goog.asserts.assert(null != a.length);
- return 1 == Array.prototype.splice.call(a, b, 1).length
- }
- ;
- goog.array.removeIf = function (a, b, c) {
- b = goog.array.findIndex(a, b, c);
- return 0 <= b ? (goog.array.removeAt(a, b),
- !0) : !1
- }
- ;
- goog.array.removeAllIf = function (a, b, c) {
- var d = 0;
- goog.array.forEachRight(a, function (e, f) {
- b.call(c, e, f, a) && goog.array.removeAt(a, f) && d++
- });
- return d
- }
- ;
- goog.array.concat = function (a) {
- return Array.prototype.concat.apply([], arguments)
- }
- ;
- goog.array.join = function (a) {
- return Array.prototype.concat.apply([], arguments)
- }
- ;
- goog.array.toArray = function (a) {
- var b = a.length;
- if (0 < b) {
- for (var c = Array(b), d = 0; d < b; d++)
- c[d] = a[d];
- return c
- }
- return []
- }
- ;
- goog.array.clone = goog.array.toArray;
- goog.array.extend = function (a, b) {
- for (var c = 1; c < arguments.length; c++) {
- var d = arguments[c];
- if (goog.isArrayLike(d)) {
- var e = a.length || 0
- , f = d.length || 0;
- a.length = e + f;
- for (var g = 0; g < f; g++)
- a[e + g] = d[g]
- } else
- a.push(d)
- }
- }
- ;
- goog.array.splice = function (a, b, c, d) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.splice.apply(a, goog.array.slice(arguments, 1))
- }
- ;
- goog.array.slice = function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return 2 >= arguments.length ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a, b, c)
- }
- ;
- goog.array.removeDuplicates = function (a, b, c) {
- b = b || a;
- var d = function (a) {
- return goog.isObject(a) ? "o" + goog.getUid(a) : (typeof a).charAt(0) + a
- };
- c = c || d;
- d = {};
- for (var e = 0, f = 0; f < a.length;) {
- var g = a[f++]
- , h = c(g);
- Object.prototype.hasOwnProperty.call(d, h) || (d[h] = !0,
- b[e++] = g)
- }
- b.length = e
- }
- ;
- goog.array.binarySearch = function (a, b, c) {
- return goog.array.binarySearch_(a, c || goog.array.defaultCompare, !1, b)
- }
- ;
- goog.array.binarySelect = function (a, b, c) {
- return goog.array.binarySearch_(a, b, !0, void 0, c)
- }
- ;
- goog.array.binarySearch_ = function (a, b, c, d, e) {
- for (var f = 0, g = a.length, h; f < g;) {
- var k = f + (g - f >>> 1);
- var m = c ? b.call(e, a[k], k, a) : b(d, a[k]);
- 0 < m ? f = k + 1 : (g = k,
- h = !m)
- }
- return h ? f : -f - 1
- }
- ;
- goog.array.sort = function (a, b) {
- a.sort(b || goog.array.defaultCompare)
- }
- ;
- goog.array.stableSort = function (a, b) {
- for (var c = Array(a.length), d = 0; d < a.length; d++)
- c[d] = {
- index: d,
- value: a[d]
- };
- var e = b || goog.array.defaultCompare;
- goog.array.sort(c, function (a, b) {
- return e(a.value, b.value) || a.index - b.index
- });
- for (d = 0; d < a.length; d++)
- a[d] = c[d].value
- }
- ;
- goog.array.sortByKey = function (a, b, c) {
- var d = c || goog.array.defaultCompare;
- goog.array.sort(a, function (a, c) {
- return d(b(a), b(c))
- })
- }
- ;
- goog.array.sortObjectsByKey = function (a, b, c) {
- goog.array.sortByKey(a, function (a) {
- return a[b]
- }, c)
- }
- ;
- goog.array.isSorted = function (a, b, c) {
- b = b || goog.array.defaultCompare;
- for (var d = 1; d < a.length; d++) {
- var e = b(a[d - 1], a[d]);
- if (0 < e || 0 == e && c)
- return !1
- }
- return !0
- }
- ;
- goog.array.equals = function (a, b, c) {
- if (!goog.isArrayLike(a) || !goog.isArrayLike(b) || a.length != b.length)
- return !1;
- var d = a.length;
- c = c || goog.array.defaultCompareEquality;
- for (var e = 0; e < d; e++)
- if (!c(a[e], b[e]))
- return !1;
- return !0
- }
- ;
- goog.array.compare3 = function (a, b, c) {
- c = c || goog.array.defaultCompare;
- for (var d = Math.min(a.length, b.length), e = 0; e < d; e++) {
- var f = c(a[e], b[e]);
- if (0 != f)
- return f
- }
- return goog.array.defaultCompare(a.length, b.length)
- }
- ;
- goog.array.defaultCompare = function (a, b) {
- return a > b ? 1 : a < b ? -1 : 0
- }
- ;
- goog.array.inverseDefaultCompare = function (a, b) {
- return -goog.array.defaultCompare(a, b)
- }
- ;
- goog.array.defaultCompareEquality = function (a, b) {
- return a === b
- }
- ;
- goog.array.binaryInsert = function (a, b, c) {
- c = goog.array.binarySearch(a, b, c);
- return 0 > c ? (goog.array.insertAt(a, b, -(c + 1)),
- !0) : !1
- }
- ;
- goog.array.binaryRemove = function (a, b, c) {
- b = goog.array.binarySearch(a, b, c);
- return 0 <= b ? goog.array.removeAt(a, b) : !1
- }
- ;
- goog.array.bucket = function (a, b, c) {
- for (var d = {}, e = 0; e < a.length; e++) {
- var f = a[e]
- , g = b.call(c, f, e, a);
- void 0 !== g && (d[g] || (d[g] = [])).push(f)
- }
- return d
- }
- ;
- goog.array.toObject = function (a, b, c) {
- var d = {};
- goog.array.forEach(a, function (e, f) {
- d[b.call(c, e, f, a)] = e
- });
- return d
- }
- ;
- goog.array.range = function (a, b, c) {
- var d = []
- , e = 0
- , f = a;
- c = c || 1;
- void 0 !== b && (e = a,
- f = b);
- if (0 > c * (f - e))
- return [];
- if (0 < c)
- for (a = e; a < f; a += c)
- d.push(a);
- else
- for (a = e; a > f; a += c)
- d.push(a);
- return d
- }
- ;
- goog.array.repeat = function (a, b) {
- for (var c = [], d = 0; d < b; d++)
- c[d] = a;
- return c
- }
- ;
- goog.array.flatten = function (a) {
- for (var b = [], c = 0; c < arguments.length; c++) {
- var d = arguments[c];
- if (goog.isArray(d))
- for (var e = 0; e < d.length; e += 8192) {
- var f = goog.array.slice(d, e, e + 8192);
- f = goog.array.flatten.apply(null, f);
- for (var g = 0; g < f.length; g++)
- b.push(f[g])
- }
- else
- b.push(d)
- }
- return b
- }
- ;
- goog.array.rotate = function (a, b) {
- goog.asserts.assert(null != a.length);
- a.length && (b %= a.length,
- 0 < b ? Array.prototype.unshift.apply(a, a.splice(-b, b)) : 0 > b && Array.prototype.push.apply(a, a.splice(0, -b)));
- return a
- }
- ;
- goog.array.moveItem = function (a, b, c) {
- goog.asserts.assert(0 <= b && b < a.length);
- goog.asserts.assert(0 <= c && c < a.length);
- b = Array.prototype.splice.call(a, b, 1);
- Array.prototype.splice.call(a, c, 0, b[0])
- }
- ;
- goog.array.zip = function (a) {
- if (!arguments.length)
- return [];
- for (var b = [], c = arguments[0].length, d = 1; d < arguments.length; d++)
- arguments[d].length < c && (c = arguments[d].length);
- for (d = 0; d < c; d++) {
- for (var e = [], f = 0; f < arguments.length; f++)
- e.push(arguments[f][d]);
- b.push(e)
- }
- return b
- }
- ;
- goog.array.shuffle = function (a, b) {
- for (var c = b || Math.random, d = a.length - 1; 0 < d; d--) {
- var e = Math.floor(c() * (d + 1))
- , f = a[d];
- a[d] = a[e];
- a[e] = f
- }
- }
- ;
- goog.array.copyByIndex = function (a, b) {
- var c = [];
- goog.array.forEach(b, function (b) {
- c.push(a[b])
- });
- return c
- }
- ;
- goog.array.concatMap = function (a, b, c) {
- return goog.array.concat.apply([], goog.array.map(a, b, c))
- }
- ;
- goog.math = {};
- goog.math.randomInt = function (a) {
- return Math.floor(Math.random() * a)
- }
- ;
- goog.math.uniformRandom = function (a, b) {
- return a + Math.random() * (b - a)
- }
- ;
- goog.math.clamp = function (a, b, c) {
- return Math.min(Math.max(a, b), c)
- }
- ;
- goog.math.modulo = function (a, b) {
- var c = a % b;
- return 0 > c * b ? c + b : c
- }
- ;
- goog.math.lerp = function (a, b, c) {
- return a + c * (b - a)
- }
- ;
- goog.math.nearlyEquals = function (a, b, c) {
- return Math.abs(a - b) <= (c || 1E-6)
- }
- ;
- goog.math.standardAngle = function (a) {
- return goog.math.modulo(a, 360)
- }
- ;
- goog.math.standardAngleInRadians = function (a) {
- return goog.math.modulo(a, 2 * Math.PI)
- }
- ;
- goog.math.toRadians = function (a) {
- return a * Math.PI / 180
- }
- ;
- goog.math.toDegrees = function (a) {
- return 180 * a / Math.PI
- }
- ;
- goog.math.angleDx = function (a, b) {
- return b * Math.cos(goog.math.toRadians(a))
- }
- ;
- goog.math.angleDy = function (a, b) {
- return b * Math.sin(goog.math.toRadians(a))
- }
- ;
- goog.math.angle = function (a, b, c, d) {
- return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d - b, c - a)))
- }
- ;
- goog.math.angleDifference = function (a, b) {
- var c = goog.math.standardAngle(b) - goog.math.standardAngle(a);
- 180 < c ? c -= 360 : -180 >= c && (c = 360 + c);
- return c
- }
- ;
- goog.math.sign = function (a) {
- return 0 < a ? 1 : 0 > a ? -1 : a
- }
- ;
- goog.math.longestCommonSubsequence = function (a, b, c, d) {
- c = c || function (a, b) {
- return a == b
- }
- ;
- d = d || function (b, c) {
- return a[b]
- }
- ;
- for (var e = a.length, f = b.length, g = [], h = 0; h < e + 1; h++)
- g[h] = [],
- g[h][0] = 0;
- for (var k = 0; k < f + 1; k++)
- g[0][k] = 0;
- for (h = 1; h <= e; h++)
- for (k = 1; k <= f; k++)
- c(a[h - 1], b[k - 1]) ? g[h][k] = g[h - 1][k - 1] + 1 : g[h][k] = Math.max(g[h - 1][k], g[h][k - 1]);
- var m = [];
- h = e;
- for (k = f; 0 < h && 0 < k;)
- c(a[h - 1], b[k - 1]) ? (m.unshift(d(h - 1, k - 1)),
- h--,
- k--) : g[h - 1][k] > g[h][k - 1] ? h-- : k--;
- return m
- }
- ;
- goog.math.sum = function (a) {
- return goog.array.reduce(arguments, function (a, c) {
- return a + c
- }, 0)
- }
- ;
- goog.math.average = function (a) {
- return goog.math.sum.apply(null, arguments) / arguments.length
- }
- ;
- goog.math.sampleVariance = function (a) {
- var b = arguments.length;
- if (2 > b)
- return 0;
- var c = goog.math.average.apply(null, arguments);
- return goog.math.sum.apply(null, goog.array.map(arguments, function (a) {
- return Math.pow(a - c, 2)
- })) / (b - 1)
- }
- ;
- goog.math.standardDeviation = function (a) {
- return Math.sqrt(goog.math.sampleVariance.apply(null, arguments))
- }
- ;
- goog.math.isInt = function (a) {
- return isFinite(a) && 0 == a % 1
- }
- ;
- goog.math.isFiniteNumber = function (a) {
- return isFinite(a)
- }
- ;
- goog.math.isNegativeZero = function (a) {
- return 0 == a && 0 > 1 / a
- }
- ;
- goog.math.log10Floor = function (a) {
- if (0 < a) {
- var b = Math.round(Math.log(a) * Math.LOG10E);
- return b - (parseFloat("1e" + b) > a ? 1 : 0)
- }
- return 0 == a ? -Infinity : NaN
- }
- ;
- goog.math.safeFloor = function (a, b) {
- goog.asserts.assert(void 0 === b || 0 < b);
- return Math.floor(a + (b || 2E-15))
- }
- ;
- goog.math.safeCeil = function (a, b) {
- goog.asserts.assert(void 0 === b || 0 < b);
- return Math.ceil(a - (b || 2E-15))
- }
- ;
- goog.math.Coordinate = function (a, b) {
- this.x = void 0 !== a ? a : 0;
- this.y = void 0 !== b ? b : 0
- }
- ;
- goog.math.Coordinate.prototype.clone = function () {
- return new goog.math.Coordinate(this.x, this.y)
- }
- ;
- goog.DEBUG && (goog.math.Coordinate.prototype.toString = function () {
- return "(" + this.x + ", " + this.y + ")"
- }
- );
- goog.math.Coordinate.prototype.equals = function (a) {
- return a instanceof goog.math.Coordinate && goog.math.Coordinate.equals(this, a)
- }
- ;
- goog.math.Coordinate.equals = function (a, b) {
- return a == b ? !0 : a && b ? a.x == b.x && a.y == b.y : !1
- }
- ;
- goog.math.Coordinate.distance = function (a, b) {
- var c = a.x - b.x
- , d = a.y - b.y;
- return Math.sqrt(c * c + d * d)
- }
- ;
- goog.math.Coordinate.magnitude = function (a) {
- return Math.sqrt(a.x * a.x + a.y * a.y)
- }
- ;
- goog.math.Coordinate.azimuth = function (a) {
- return goog.math.angle(0, 0, a.x, a.y)
- }
- ;
- goog.math.Coordinate.squaredDistance = function (a, b) {
- var c = a.x - b.x
- , d = a.y - b.y;
- return c * c + d * d
- }
- ;
- goog.math.Coordinate.difference = function (a, b) {
- return new goog.math.Coordinate(a.x - b.x, a.y - b.y)
- }
- ;
- goog.math.Coordinate.sum = function (a, b) {
- return new goog.math.Coordinate(a.x + b.x, a.y + b.y)
- }
- ;
- goog.math.Coordinate.prototype.ceil = function () {
- this.x = Math.ceil(this.x);
- this.y = Math.ceil(this.y);
- return this
- }
- ;
- goog.math.Coordinate.prototype.floor = function () {
- this.x = Math.floor(this.x);
- this.y = Math.floor(this.y);
- return this
- }
- ;
- goog.math.Coordinate.prototype.round = function () {
- this.x = Math.round(this.x);
- this.y = Math.round(this.y);
- return this
- }
- ;
- goog.math.Coordinate.prototype.translate = function (a, b) {
- a instanceof goog.math.Coordinate ? (this.x += a.x,
- this.y += a.y) : (this.x += Number(a),
- "number" === typeof b && (this.y += b));
- return this
- }
- ;
- goog.math.Coordinate.prototype.scale = function (a, b) {
- this.x *= a;
- this.y *= "number" === typeof b ? b : a;
- return this
- }
- ;
- goog.math.Coordinate.prototype.rotateRadians = function (a, b) {
- var c = b || new goog.math.Coordinate(0, 0)
- , d = this.x
- , e = this.y
- , f = Math.cos(a)
- , g = Math.sin(a);
- this.x = (d - c.x) * f - (e - c.y) * g + c.x;
- this.y = (d - c.x) * g + (e - c.y) * f + c.y
- }
- ;
- goog.math.Coordinate.prototype.rotateDegrees = function (a, b) {
- this.rotateRadians(goog.math.toRadians(a), b)
- }
- ;
- goog.dom.asserts = {};
- goog.dom.asserts.assertIsLocation = function (a) {
- if (goog.asserts.ENABLE_ASSERTS) {
- var b = goog.dom.asserts.getWindow_(a);
- b && (!a || !(a instanceof b.Location) && a instanceof b.Element) && goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s", goog.dom.asserts.debugStringForType_(a))
- }
- return a
- }
- ;
- goog.dom.asserts.assertIsElementType_ = function (a, b) {
- if (goog.asserts.ENABLE_ASSERTS) {
- var c = goog.dom.asserts.getWindow_(a);
- c && "undefined" != typeof c[b] && (a && (a instanceof c[b] || !(a instanceof c.Location || a instanceof c.Element)) || goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s", b, goog.dom.asserts.debugStringForType_(a)))
- }
- return a
- }
- ;
- goog.dom.asserts.assertIsHTMLAnchorElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLAnchorElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLButtonElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLButtonElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLLinkElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLLinkElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLImageElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLImageElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLAudioElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLAudioElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLVideoElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLVideoElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLInputElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLInputElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLTextAreaElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLTextAreaElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLCanvasElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLCanvasElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLEmbedElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLEmbedElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLFormElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLFormElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLFrameElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLFrameElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLIFrameElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLIFrameElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLObjectElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLObjectElement")
- }
- ;
- goog.dom.asserts.assertIsHTMLScriptElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLScriptElement")
- }
- ;
- goog.dom.asserts.debugStringForType_ = function (a) {
- if (goog.isObject(a))
- try {
- return a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a)
- } catch (b) {
- return "<object could not be stringified>"
- }
- else
- return void 0 === a ? "undefined" : null === a ? "null" : typeof a
- }
- ;
- goog.dom.asserts.getWindow_ = function (a) {
- try {
- var b = a && a.ownerDocument
- , c = b && (b.defaultView || b.parentWindow);
- c = c || goog.global;
- if (c.Element && c.Location)
- return c
- } catch (d) { }
- return null
- }
- ;
- goog.functions = {};
- goog.functions.constant = function (a) {
- return function () {
- return a
- }
- }
- ;
- goog.functions.FALSE = function () {
- return !1
- }
- ;
- goog.functions.TRUE = function () {
- return !0
- }
- ;
- goog.functions.NULL = function () {
- return null
- }
- ;
- goog.functions.identity = function (a, b) {
- return a
- }
- ;
- goog.functions.error = function (a) {
- return function () {
- throw Error(a);
- }
- }
- ;
- goog.functions.fail = function (a) {
- return function () {
- throw a;
- }
- }
- ;
- goog.functions.lock = function (a, b) {
- b = b || 0;
- return function () {
- return a.apply(this, Array.prototype.slice.call(arguments, 0, b))
- }
- }
- ;
- goog.functions.nth = function (a) {
- return function () {
- return arguments[a]
- }
- }
- ;
- goog.functions.partialRight = function (a, b) {
- var c = Array.prototype.slice.call(arguments, 1);
- return function () {
- var b = Array.prototype.slice.call(arguments);
- b.push.apply(b, c);
- return a.apply(this, b)
- }
- }
- ;
- goog.functions.withReturnValue = function (a, b) {
- return goog.functions.sequence(a, goog.functions.constant(b))
- }
- ;
- goog.functions.equalTo = function (a, b) {
- return function (c) {
- return b ? a == c : a === c
- }
- }
- ;
- goog.functions.compose = function (a, b) {
- var c = arguments
- , d = c.length;
- return function () {
- var a;
- d && (a = c[d - 1].apply(this, arguments));
- for (var b = d - 2; 0 <= b; b--)
- a = c[b].call(this, a);
- return a
- }
- }
- ;
- goog.functions.sequence = function (a) {
- var b = arguments
- , c = b.length;
- return function () {
- for (var a, e = 0; e < c; e++)
- a = b[e].apply(this, arguments);
- return a
- }
- }
- ;
- goog.functions.and = function (a) {
- var b = arguments
- , c = b.length;
- return function () {
- for (var a = 0; a < c; a++)
- if (!b[a].apply(this, arguments))
- return !1;
- return !0
- }
- }
- ;
- goog.functions.or = function (a) {
- var b = arguments
- , c = b.length;
- return function () {
- for (var a = 0; a < c; a++)
- if (b[a].apply(this, arguments))
- return !0;
- return !1
- }
- }
- ;
- goog.functions.not = function (a) {
- return function () {
- return !a.apply(this, arguments)
- }
- }
- ;
- goog.functions.create = function (a, b) {
- var c = function () { };
- c.prototype = a.prototype;
- c = new c;
- a.apply(c, Array.prototype.slice.call(arguments, 1));
- return c
- }
- ;
- goog.functions.CACHE_RETURN_VALUE = !0;
- goog.functions.cacheReturnValue = function (a) {
- var b = !1, c;
- return function () {
- if (!goog.functions.CACHE_RETURN_VALUE)
- return a();
- b || (c = a(),
- b = !0);
- return c
- }
- }
- ;
- goog.functions.once = function (a) {
- var b = a;
- return function () {
- if (b) {
- var a = b;
- b = null;
- a()
- }
- }
- }
- ;
- goog.functions.debounce = function (a, b, c) {
- var d = 0;
- return function (e) {
- goog.global.clearTimeout(d);
- var f = arguments;
- d = goog.global.setTimeout(function () {
- a.apply(c, f)
- }, b)
- }
- }
- ;
- goog.functions.throttle = function (a, b, c) {
- var d = 0
- , e = !1
- , f = []
- , g = function () {
- d = 0;
- e && (e = !1,
- h())
- }
- , h = function () {
- d = goog.global.setTimeout(g, b);
- a.apply(c, f)
- };
- return function (a) {
- f = arguments;
- d ? e = !0 : h()
- }
- }
- ;
- goog.functions.rateLimit = function (a, b, c) {
- var d = 0
- , e = function () {
- d = 0
- };
- return function (f) {
- d || (d = goog.global.setTimeout(e, b),
- a.apply(c, arguments))
- }
- }
- ;
- goog.dom.HtmlElement = function () { }
- ;
- goog.dom.TagName = function (a) {
- this.tagName_ = a
- }
- ;
- goog.dom.TagName.prototype.toString = function () {
- return this.tagName_
- }
- ;
- goog.dom.TagName.A = new goog.dom.TagName("A");
- goog.dom.TagName.ABBR = new goog.dom.TagName("ABBR");
- goog.dom.TagName.ACRONYM = new goog.dom.TagName("ACRONYM");
- goog.dom.TagName.ADDRESS = new goog.dom.TagName("ADDRESS");
- goog.dom.TagName.APPLET = new goog.dom.TagName("APPLET");
- goog.dom.TagName.AREA = new goog.dom.TagName("AREA");
- goog.dom.TagName.ARTICLE = new goog.dom.TagName("ARTICLE");
- goog.dom.TagName.ASIDE = new goog.dom.TagName("ASIDE");
- goog.dom.TagName.AUDIO = new goog.dom.TagName("AUDIO");
- goog.dom.TagName.B = new goog.dom.TagName("B");
- goog.dom.TagName.BASE = new goog.dom.TagName("BASE");
- goog.dom.TagName.BASEFONT = new goog.dom.TagName("BASEFONT");
- goog.dom.TagName.BDI = new goog.dom.TagName("BDI");
- goog.dom.TagName.BDO = new goog.dom.TagName("BDO");
- goog.dom.TagName.BIG = new goog.dom.TagName("BIG");
- goog.dom.TagName.BLOCKQUOTE = new goog.dom.TagName("BLOCKQUOTE");
- goog.dom.TagName.BODY = new goog.dom.TagName("BODY");
- goog.dom.TagName.BR = new goog.dom.TagName("BR");
- goog.dom.TagName.BUTTON = new goog.dom.TagName("BUTTON");
- goog.dom.TagName.CANVAS = new goog.dom.TagName("CANVAS");
- goog.dom.TagName.CAPTION = new goog.dom.TagName("CAPTION");
- goog.dom.TagName.CENTER = new goog.dom.TagName("CENTER");
- goog.dom.TagName.CITE = new goog.dom.TagName("CITE");
- goog.dom.TagName.CODE = new goog.dom.TagName("CODE");
- goog.dom.TagName.COL = new goog.dom.TagName("COL");
- goog.dom.TagName.COLGROUP = new goog.dom.TagName("COLGROUP");
- goog.dom.TagName.COMMAND = new goog.dom.TagName("COMMAND");
- goog.dom.TagName.DATA = new goog.dom.TagName("DATA");
- goog.dom.TagName.DATALIST = new goog.dom.TagName("DATALIST");
- goog.dom.TagName.DD = new goog.dom.TagName("DD");
- goog.dom.TagName.DEL = new goog.dom.TagName("DEL");
- goog.dom.TagName.DETAILS = new goog.dom.TagName("DETAILS");
- goog.dom.TagName.DFN = new goog.dom.TagName("DFN");
- goog.dom.TagName.DIALOG = new goog.dom.TagName("DIALOG");
- goog.dom.TagName.DIR = new goog.dom.TagName("DIR");
- goog.dom.TagName.DIV = new goog.dom.TagName("DIV");
- goog.dom.TagName.DL = new goog.dom.TagName("DL");
- goog.dom.TagName.DT = new goog.dom.TagName("DT");
- goog.dom.TagName.EM = new goog.dom.TagName("EM");
- goog.dom.TagName.EMBED = new goog.dom.TagName("EMBED");
- goog.dom.TagName.FIELDSET = new goog.dom.TagName("FIELDSET");
- goog.dom.TagName.FIGCAPTION = new goog.dom.TagName("FIGCAPTION");
- goog.dom.TagName.FIGURE = new goog.dom.TagName("FIGURE");
- goog.dom.TagName.FONT = new goog.dom.TagName("FONT");
- goog.dom.TagName.FOOTER = new goog.dom.TagName("FOOTER");
- goog.dom.TagName.FORM = new goog.dom.TagName("FORM");
- goog.dom.TagName.FRAME = new goog.dom.TagName("FRAME");
- goog.dom.TagName.FRAMESET = new goog.dom.TagName("FRAMESET");
- goog.dom.TagName.H1 = new goog.dom.TagName("H1");
- goog.dom.TagName.H2 = new goog.dom.TagName("H2");
- goog.dom.TagName.H3 = new goog.dom.TagName("H3");
- goog.dom.TagName.H4 = new goog.dom.TagName("H4");
- goog.dom.TagName.H5 = new goog.dom.TagName("H5");
- goog.dom.TagName.H6 = new goog.dom.TagName("H6");
- goog.dom.TagName.HEAD = new goog.dom.TagName("HEAD");
- goog.dom.TagName.HEADER = new goog.dom.TagName("HEADER");
- goog.dom.TagName.HGROUP = new goog.dom.TagName("HGROUP");
- goog.dom.TagName.HR = new goog.dom.TagName("HR");
- goog.dom.TagName.HTML = new goog.dom.TagName("HTML");
- goog.dom.TagName.I = new goog.dom.TagName("I");
- goog.dom.TagName.IFRAME = new goog.dom.TagName("IFRAME");
- goog.dom.TagName.IMG = new goog.dom.TagName("IMG");
- goog.dom.TagName.INPUT = new goog.dom.TagName("INPUT");
- goog.dom.TagName.INS = new goog.dom.TagName("INS");
- goog.dom.TagName.ISINDEX = new goog.dom.TagName("ISINDEX");
- goog.dom.TagName.KBD = new goog.dom.TagName("KBD");
- goog.dom.TagName.KEYGEN = new goog.dom.TagName("KEYGEN");
- goog.dom.TagName.LABEL = new goog.dom.TagName("LABEL");
- goog.dom.TagName.LEGEND = new goog.dom.TagName("LEGEND");
- goog.dom.TagName.LI = new goog.dom.TagName("LI");
- goog.dom.TagName.LINK = new goog.dom.TagName("LINK");
- goog.dom.TagName.MAIN = new goog.dom.TagName("MAIN");
- goog.dom.TagName.MAP = new goog.dom.TagName("MAP");
- goog.dom.TagName.MARK = new goog.dom.TagName("MARK");
- goog.dom.TagName.MATH = new goog.dom.TagName("MATH");
- goog.dom.TagName.MENU = new goog.dom.TagName("MENU");
- goog.dom.TagName.MENUITEM = new goog.dom.TagName("MENUITEM");
- goog.dom.TagName.META = new goog.dom.TagName("META");
- goog.dom.TagName.METER = new goog.dom.TagName("METER");
- goog.dom.TagName.NAV = new goog.dom.TagName("NAV");
- goog.dom.TagName.NOFRAMES = new goog.dom.TagName("NOFRAMES");
- goog.dom.TagName.NOSCRIPT = new goog.dom.TagName("NOSCRIPT");
- goog.dom.TagName.OBJECT = new goog.dom.TagName("OBJECT");
- goog.dom.TagName.OL = new goog.dom.TagName("OL");
- goog.dom.TagName.OPTGROUP = new goog.dom.TagName("OPTGROUP");
- goog.dom.TagName.OPTION = new goog.dom.TagName("OPTION");
- goog.dom.TagName.OUTPUT = new goog.dom.TagName("OUTPUT");
- goog.dom.TagName.P = new goog.dom.TagName("P");
- goog.dom.TagName.PARAM = new goog.dom.TagName("PARAM");
- goog.dom.TagName.PICTURE = new goog.dom.TagName("PICTURE");
- goog.dom.TagName.PRE = new goog.dom.TagName("PRE");
- goog.dom.TagName.PROGRESS = new goog.dom.TagName("PROGRESS");
- goog.dom.TagName.Q = new goog.dom.TagName("Q");
- goog.dom.TagName.RP = new goog.dom.TagName("RP");
- goog.dom.TagName.RT = new goog.dom.TagName("RT");
- goog.dom.TagName.RTC = new goog.dom.TagName("RTC");
- goog.dom.TagName.RUBY = new goog.dom.TagName("RUBY");
- goog.dom.TagName.S = new goog.dom.TagName("S");
- goog.dom.TagName.SAMP = new goog.dom.TagName("SAMP");
- goog.dom.TagName.SCRIPT = new goog.dom.TagName("SCRIPT");
- goog.dom.TagName.SECTION = new goog.dom.TagName("SECTION");
- goog.dom.TagName.SELECT = new goog.dom.TagName("SELECT");
- goog.dom.TagName.SMALL = new goog.dom.TagName("SMALL");
- goog.dom.TagName.SOURCE = new goog.dom.TagName("SOURCE");
- goog.dom.TagName.SPAN = new goog.dom.TagName("SPAN");
- goog.dom.TagName.STRIKE = new goog.dom.TagName("STRIKE");
- goog.dom.TagName.STRONG = new goog.dom.TagName("STRONG");
- goog.dom.TagName.STYLE = new goog.dom.TagName("STYLE");
- goog.dom.TagName.SUB = new goog.dom.TagName("SUB");
- goog.dom.TagName.SUMMARY = new goog.dom.TagName("SUMMARY");
- goog.dom.TagName.SUP = new goog.dom.TagName("SUP");
- goog.dom.TagName.SVG = new goog.dom.TagName("SVG");
- goog.dom.TagName.TABLE = new goog.dom.TagName("TABLE");
- goog.dom.TagName.TBODY = new goog.dom.TagName("TBODY");
- goog.dom.TagName.TD = new goog.dom.TagName("TD");
- goog.dom.TagName.TEMPLATE = new goog.dom.TagName("TEMPLATE");
- goog.dom.TagName.TEXTAREA = new goog.dom.TagName("TEXTAREA");
- goog.dom.TagName.TFOOT = new goog.dom.TagName("TFOOT");
- goog.dom.TagName.TH = new goog.dom.TagName("TH");
- goog.dom.TagName.THEAD = new goog.dom.TagName("THEAD");
- goog.dom.TagName.TIME = new goog.dom.TagName("TIME");
- goog.dom.TagName.TITLE = new goog.dom.TagName("TITLE");
- goog.dom.TagName.TR = new goog.dom.TagName("TR");
- goog.dom.TagName.TRACK = new goog.dom.TagName("TRACK");
- goog.dom.TagName.TT = new goog.dom.TagName("TT");
- goog.dom.TagName.U = new goog.dom.TagName("U");
- goog.dom.TagName.UL = new goog.dom.TagName("UL");
- goog.dom.TagName.VAR = new goog.dom.TagName("VAR");
- goog.dom.TagName.VIDEO = new goog.dom.TagName("VIDEO");
- goog.dom.TagName.WBR = new goog.dom.TagName("WBR");
- goog.object = {};
- goog.object.is = function (a, b) {
- return a === b ? 0 !== a || 1 / a === 1 / b : a !== a && b !== b
- }
- ;
- goog.object.forEach = function (a, b, c) {
- for (var d in a)
- b.call(c, a[d], d, a)
- }
- ;
- goog.object.filter = function (a, b, c) {
- var d = {}, e;
- for (e in a)
- b.call(c, a[e], e, a) && (d[e] = a[e]);
- return d
- }
- ;
- goog.object.map = function (a, b, c) {
- var d = {}, e;
- for (e in a)
- d[e] = b.call(c, a[e], e, a);
- return d
- }
- ;
- goog.object.some = function (a, b, c) {
- for (var d in a)
- if (b.call(c, a[d], d, a))
- return !0;
- return !1
- }
- ;
- goog.object.every = function (a, b, c) {
- for (var d in a)
- if (!b.call(c, a[d], d, a))
- return !1;
- return !0
- }
- ;
- goog.object.getCount = function (a) {
- var b = 0, c;
- for (c in a)
- b++;
- return b
- }
- ;
- goog.object.getAnyKey = function (a) {
- for (var b in a)
- return b
- }
- ;
- goog.object.getAnyValue = function (a) {
- for (var b in a)
- return a[b]
- }
- ;
- goog.object.contains = function (a, b) {
- return goog.object.containsValue(a, b)
- }
- ;
- goog.object.getValues = function (a) {
- var b = [], c = 0, d;
- for (d in a)
- b[c++] = a[d];
- return b
- }
- ;
- goog.object.getKeys = function (a) {
- var b = [], c = 0, d;
- for (d in a)
- b[c++] = d;
- return b
- }
- ;
- goog.object.getValueByKeys = function (a, b) {
- var c = goog.isArrayLike(b)
- , d = c ? b : arguments;
- for (c = c ? 0 : 1; c < d.length; c++) {
- if (null == a)
- return;
- a = a[d[c]]
- }
- return a
- }
- ;
- goog.object.containsKey = function (a, b) {
- return null !== a && b in a
- }
- ;
- goog.object.containsValue = function (a, b) {
- for (var c in a)
- if (a[c] == b)
- return !0;
- return !1
- }
- ;
- goog.object.findKey = function (a, b, c) {
- for (var d in a)
- if (b.call(c, a[d], d, a))
- return d
- }
- ;
- goog.object.findValue = function (a, b, c) {
- return (b = goog.object.findKey(a, b, c)) && a[b]
- }
- ;
- goog.object.isEmpty = function (a) {
- for (var b in a)
- return !1;
- return !0
- }
- ;
- goog.object.clear = function (a) {
- for (var b in a)
- delete a[b]
- }
- ;
- goog.object.remove = function (a, b) {
- var c;
- (c = b in a) && delete a[b];
- return c
- }
- ;
- goog.object.add = function (a, b, c) {
- if (null !== a && b in a)
- throw Error('The object already contains the key "' + b + '"');
- goog.object.set(a, b, c)
- }
- ;
- goog.object.get = function (a, b, c) {
- return null !== a && b in a ? a[b] : c
- }
- ;
- goog.object.set = function (a, b, c) {
- a[b] = c
- }
- ;
- goog.object.setIfUndefined = function (a, b, c) {
- return b in a ? a[b] : a[b] = c
- }
- ;
- goog.object.setWithReturnValueIfNotSet = function (a, b, c) {
- if (b in a)
- return a[b];
- c = c();
- return a[b] = c
- }
- ;
- goog.object.equals = function (a, b) {
- for (var c in a)
- if (!(c in b) || a[c] !== b[c])
- return !1;
- for (var d in b)
- if (!(d in a))
- return !1;
- return !0
- }
- ;
- goog.object.clone = function (a) {
- var b = {}, c;
- for (c in a)
- b[c] = a[c];
- return b
- }
- ;
- goog.object.unsafeClone = function (a) {
- var b = goog.typeOf(a);
- if ("object" == b || "array" == b) {
- if (goog.isFunction(a.clone))
- return a.clone();
- b = "array" == b ? [] : {};
- for (var c in a)
- b[c] = goog.object.unsafeClone(a[c]);
- return b
- }
- return a
- }
- ;
- goog.object.transpose = function (a) {
- var b = {}, c;
- for (c in a)
- b[a[c]] = c;
- return b
- }
- ;
- goog.object.PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
- goog.object.extend = function (a, b) {
- for (var c, d, e = 1; e < arguments.length; e++) {
- d = arguments[e];
- for (c in d)
- a[c] = d[c];
- for (var f = 0; f < goog.object.PROTOTYPE_FIELDS_.length; f++)
- c = goog.object.PROTOTYPE_FIELDS_[f],
- Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c])
- }
- }
- ;
- goog.object.create = function (a) {
- var b = arguments.length;
- if (1 == b && goog.isArray(arguments[0]))
- return goog.object.create.apply(null, arguments[0]);
- if (b % 2)
- throw Error("Uneven number of arguments");
- for (var c = {}, d = 0; d < b; d += 2)
- c[arguments[d]] = arguments[d + 1];
- return c
- }
- ;
- goog.object.createSet = function (a) {
- var b = arguments.length;
- if (1 == b && goog.isArray(arguments[0]))
- return goog.object.createSet.apply(null, arguments[0]);
- for (var c = {}, d = 0; d < b; d++)
- c[arguments[d]] = !0;
- return c
- }
- ;
- goog.object.createImmutableView = function (a) {
- var b = a;
- Object.isFrozen && !Object.isFrozen(a) && (b = Object.create(a),
- Object.freeze(b));
- return b
- }
- ;
- goog.object.isImmutableView = function (a) {
- return !!Object.isFrozen && Object.isFrozen(a)
- }
- ;
- goog.object.getAllPropertyNames = function (a, b, c) {
- if (!a)
- return [];
- if (!Object.getOwnPropertyNames || !Object.getPrototypeOf)
- return goog.object.getKeys(a);
- for (var d = {}; a && (a !== Object.prototype || b) && (a !== Function.prototype || c);) {
- for (var e = Object.getOwnPropertyNames(a), f = 0; f < e.length; f++)
- d[e[f]] = !0;
- a = Object.getPrototypeOf(a)
- }
- return goog.object.getKeys(d)
- }
- ;
- goog.object.getSuperClass = function (a) {
- return (a = Object.getPrototypeOf(a.prototype)) && a.constructor
- }
- ;
- goog.dom.tags = {};
- goog.dom.tags.VOID_TAGS_ = {
- area: !0,
- base: !0,
- br: !0,
- col: !0,
- command: !0,
- embed: !0,
- hr: !0,
- img: !0,
- input: !0,
- keygen: !0,
- link: !0,
- meta: !0,
- param: !0,
- source: !0,
- track: !0,
- wbr: !0
- };
- goog.dom.tags.isVoidTag = function (a) {
- return !0 === goog.dom.tags.VOID_TAGS_[a]
- }
- ;
- goog.html = {};
- goog.html.trustedtypes = {};
- goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#html") : null;
- goog.string = {};
- goog.string.TypedString = function () { }
- ;
- goog.string.Const = function (a, b) {
- this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = a === goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
- this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ = goog.string.Const.TYPE_MARKER_
- }
- ;
- goog.string.Const.prototype.implementsGoogStringTypedString = !0;
- goog.string.Const.prototype.getTypedStringValue = function () {
- return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_
- }
- ;
- goog.DEBUG && (goog.string.Const.prototype.toString = function () {
- return "Const{" + this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ + "}"
- }
- );
- goog.string.Const.unwrap = function (a) {
- if (a instanceof goog.string.Const && a.constructor === goog.string.Const && a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ === goog.string.Const.TYPE_MARKER_)
- return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
- goog.asserts.fail("expected object of type Const, got '" + a + "'");
- return "type_error:Const"
- }
- ;
- goog.string.Const.from = function (a) {
- return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_, a)
- }
- ;
- goog.string.Const.TYPE_MARKER_ = {};
- goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ = {};
- goog.string.Const.EMPTY = goog.string.Const.from("");
- goog.html.SafeScript = function () {
- this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = "";
- this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_
- }
- ;
- goog.html.SafeScript.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeScript.fromConstant = function (a) {
- a = goog.string.Const.unwrap(a);
- return 0 === a.length ? goog.html.SafeScript.EMPTY : goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeScript.fromConstantAndArgs = function (a, b) {
- for (var c = [], d = 1; d < arguments.length; d++)
- c.push(goog.html.SafeScript.stringify_(arguments[d]));
- return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("(" + goog.string.Const.unwrap(a) + ")(" + c.join(", ") + ");")
- }
- ;
- goog.html.SafeScript.fromJson = function (a) {
- return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(a))
- }
- ;
- goog.html.SafeScript.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()
- }
- ;
- goog.DEBUG && (goog.html.SafeScript.prototype.toString = function () {
- return "SafeScript{" + this.privateDoNotAccessOrElseSafeScriptWrappedValue_ + "}"
- }
- );
- goog.html.SafeScript.unwrap = function (a) {
- return goog.html.SafeScript.unwrapTrustedScript(a).toString()
- }
- ;
- goog.html.SafeScript.unwrapTrustedScript = function (a) {
- if (a instanceof goog.html.SafeScript && a.constructor === goog.html.SafeScript && a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)
- return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;
- goog.asserts.fail("expected object of type SafeScript, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeScript"
- }
- ;
- goog.html.SafeScript.stringify_ = function (a) {
- return JSON.stringify(a).replace(/</g, "\\x3c")
- }
- ;
- goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse = function (a) {
- return (new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(a)
- }
- ;
- goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
- this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(a) : a;
- return this
- }
- ;
- goog.html.SafeScript.EMPTY = goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("");
- goog.fs = {};
- goog.fs.url = {};
- goog.fs.url.createObjectUrl = function (a) {
- return goog.fs.url.getUrlObject_().createObjectURL(a)
- }
- ;
- goog.fs.url.revokeObjectUrl = function (a) {
- goog.fs.url.getUrlObject_().revokeObjectURL(a)
- }
- ;
- goog.fs.url.getUrlObject_ = function () {
- var a = goog.fs.url.findUrlObject_();
- if (null != a)
- return a;
- throw Error("This browser doesn't seem to support blob URLs");
- }
- ;
- goog.fs.url.findUrlObject_ = function () {
- return void 0 !== goog.global.URL && void 0 !== goog.global.URL.createObjectURL ? goog.global.URL : void 0 !== goog.global.webkitURL && void 0 !== goog.global.webkitURL.createObjectURL ? goog.global.webkitURL : void 0 !== goog.global.createObjectURL ? goog.global : null
- }
- ;
- goog.fs.url.browserSupportsObjectUrls = function () {
- return null != goog.fs.url.findUrlObject_()
- }
- ;
- goog.i18n = {};
- goog.i18n.bidi = {};
- goog.i18n.bidi.FORCE_RTL = !1;
- goog.i18n.bidi.IS_RTL = goog.i18n.bidi.FORCE_RTL || ("ar" == goog.LOCALE.substring(0, 2).toLowerCase() || "fa" == goog.LOCALE.substring(0, 2).toLowerCase() || "he" == goog.LOCALE.substring(0, 2).toLowerCase() || "iw" == goog.LOCALE.substring(0, 2).toLowerCase() || "ps" == goog.LOCALE.substring(0, 2).toLowerCase() || "sd" == goog.LOCALE.substring(0, 2).toLowerCase() || "ug" == goog.LOCALE.substring(0, 2).toLowerCase() || "ur" == goog.LOCALE.substring(0, 2).toLowerCase() || "yi" == goog.LOCALE.substring(0, 2).toLowerCase()) && (2 == goog.LOCALE.length || "-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) || 3 <= goog.LOCALE.length && "ckb" == goog.LOCALE.substring(0, 3).toLowerCase() && (3 == goog.LOCALE.length || "-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) || 7 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) && ("adlm" == goog.LOCALE.substring(3, 7).toLowerCase() || "arab" == goog.LOCALE.substring(3, 7).toLowerCase() || "hebr" == goog.LOCALE.substring(3, 7).toLowerCase() || "nkoo" == goog.LOCALE.substring(3, 7).toLowerCase() || "rohg" == goog.LOCALE.substring(3, 7).toLowerCase() || "thaa" == goog.LOCALE.substring(3, 7).toLowerCase()) || 8 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) && ("adlm" == goog.LOCALE.substring(4, 8).toLowerCase() || "arab" == goog.LOCALE.substring(4, 8).toLowerCase() || "hebr" == goog.LOCALE.substring(4, 8).toLowerCase() || "nkoo" == goog.LOCALE.substring(4, 8).toLowerCase() || "rohg" == goog.LOCALE.substring(4, 8).toLowerCase() || "thaa" == goog.LOCALE.substring(4, 8).toLowerCase());
- goog.i18n.bidi.Format = {
- LRE: "\u202a",
- RLE: "\u202b",
- PDF: "\u202c",
- LRM: "\u200e",
- RLM: "\u200f"
- };
- goog.i18n.bidi.Dir = {
- LTR: 1,
- RTL: -1,
- NEUTRAL: 0
- };
- goog.i18n.bidi.RIGHT = "right";
- goog.i18n.bidi.LEFT = "left";
- goog.i18n.bidi.I18N_RIGHT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.LEFT : goog.i18n.bidi.RIGHT;
- goog.i18n.bidi.I18N_LEFT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT;
- goog.i18n.bidi.toDir = function (a, b) {
- return "number" == typeof a ? 0 < a ? goog.i18n.bidi.Dir.LTR : 0 > a ? goog.i18n.bidi.Dir.RTL : b ? null : goog.i18n.bidi.Dir.NEUTRAL : null == a ? null : a ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR
- }
- ;
- goog.i18n.bidi.ltrChars_ = "A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0900-\u1fff\u200e\u2c00-\ud801\ud804-\ud839\ud83c-\udbff\uf900-\ufb1c\ufe00-\ufe6f\ufefd-\uffff";
- goog.i18n.bidi.rtlChars_ = "\u0591-\u06ef\u06fa-\u08ff\u200f\ud802-\ud803\ud83a-\ud83b\ufb1d-\ufdff\ufe70-\ufefc";
- goog.i18n.bidi.htmlSkipReg_ = /<[^>]*>|&[^;]+;/g;
- goog.i18n.bidi.stripHtmlIfNeeded_ = function (a, b) {
- return b ? a.replace(goog.i18n.bidi.htmlSkipReg_, "") : a
- }
- ;
- goog.i18n.bidi.rtlCharReg_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "]");
- goog.i18n.bidi.ltrCharReg_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "]");
- goog.i18n.bidi.hasAnyRtl = function (a, b) {
- return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b))
- }
- ;
- goog.i18n.bidi.hasRtlChar = goog.i18n.bidi.hasAnyRtl;
- goog.i18n.bidi.hasAnyLtr = function (a, b) {
- return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b))
- }
- ;
- goog.i18n.bidi.ltrRe_ = new RegExp("^[" + goog.i18n.bidi.ltrChars_ + "]");
- goog.i18n.bidi.rtlRe_ = new RegExp("^[" + goog.i18n.bidi.rtlChars_ + "]");
- goog.i18n.bidi.isRtlChar = function (a) {
- return goog.i18n.bidi.rtlRe_.test(a)
- }
- ;
- goog.i18n.bidi.isLtrChar = function (a) {
- return goog.i18n.bidi.ltrRe_.test(a)
- }
- ;
- goog.i18n.bidi.isNeutralChar = function (a) {
- return !goog.i18n.bidi.isLtrChar(a) && !goog.i18n.bidi.isRtlChar(a)
- }
- ;
- goog.i18n.bidi.ltrDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.rtlChars_ + "]*[" + goog.i18n.bidi.ltrChars_ + "]");
- goog.i18n.bidi.rtlDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.ltrChars_ + "]*[" + goog.i18n.bidi.rtlChars_ + "]");
- goog.i18n.bidi.startsWithRtl = function (a, b) {
- return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b))
- }
- ;
- goog.i18n.bidi.isRtlText = goog.i18n.bidi.startsWithRtl;
- goog.i18n.bidi.startsWithLtr = function (a, b) {
- return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b))
- }
- ;
- goog.i18n.bidi.isLtrText = goog.i18n.bidi.startsWithLtr;
- goog.i18n.bidi.isRequiredLtrRe_ = /^http:\/\/.*/;
- goog.i18n.bidi.isNeutralText = function (a, b) {
- a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b);
- return goog.i18n.bidi.isRequiredLtrRe_.test(a) || !goog.i18n.bidi.hasAnyLtr(a) && !goog.i18n.bidi.hasAnyRtl(a)
- }
- ;
- goog.i18n.bidi.ltrExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "][^" + goog.i18n.bidi.rtlChars_ + "]*$");
- goog.i18n.bidi.rtlExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "][^" + goog.i18n.bidi.ltrChars_ + "]*$");
- goog.i18n.bidi.endsWithLtr = function (a, b) {
- return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b))
- }
- ;
- goog.i18n.bidi.isLtrExitText = goog.i18n.bidi.endsWithLtr;
- goog.i18n.bidi.endsWithRtl = function (a, b) {
- return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b))
- }
- ;
- goog.i18n.bidi.isRtlExitText = goog.i18n.bidi.endsWithRtl;
- goog.i18n.bidi.rtlLocalesRe_ = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;
- goog.i18n.bidi.isRtlLanguage = function (a) {
- return goog.i18n.bidi.rtlLocalesRe_.test(a)
- }
- ;
- goog.i18n.bidi.bracketGuardTextRe_ = /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g;
- goog.i18n.bidi.guardBracketInText = function (a, b) {
- var c = (void 0 === b ? goog.i18n.bidi.hasAnyRtl(a) : b) ? goog.i18n.bidi.Format.RLM : goog.i18n.bidi.Format.LRM;
- return a.replace(goog.i18n.bidi.bracketGuardTextRe_, c + "$&" + c)
- }
- ;
- goog.i18n.bidi.enforceRtlInHtml = function (a) {
- return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=rtl") : "\n<span dir=rtl>" + a + "</span>"
- }
- ;
- goog.i18n.bidi.enforceRtlInText = function (a) {
- return goog.i18n.bidi.Format.RLE + a + goog.i18n.bidi.Format.PDF
- }
- ;
- goog.i18n.bidi.enforceLtrInHtml = function (a) {
- return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=ltr") : "\n<span dir=ltr>" + a + "</span>"
- }
- ;
- goog.i18n.bidi.enforceLtrInText = function (a) {
- return goog.i18n.bidi.Format.LRE + a + goog.i18n.bidi.Format.PDF
- }
- ;
- goog.i18n.bidi.dimensionsRe_ = /:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g;
- goog.i18n.bidi.leftRe_ = /left/gi;
- goog.i18n.bidi.rightRe_ = /right/gi;
- goog.i18n.bidi.tempRe_ = /%%%%/g;
- goog.i18n.bidi.mirrorCSS = function (a) {
- return a.replace(goog.i18n.bidi.dimensionsRe_, ":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_, "%%%%").replace(goog.i18n.bidi.rightRe_, goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_, goog.i18n.bidi.RIGHT)
- }
- ;
- goog.i18n.bidi.doubleQuoteSubstituteRe_ = /([\u0591-\u05f2])"/g;
- goog.i18n.bidi.singleQuoteSubstituteRe_ = /([\u0591-\u05f2])'/g;
- goog.i18n.bidi.normalizeHebrewQuote = function (a) {
- return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_, "$1\u05f4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_, "$1\u05f3")
- }
- ;
- goog.i18n.bidi.wordSeparatorRe_ = /\s+/;
- goog.i18n.bidi.hasNumeralsRe_ = /[\d\u06f0-\u06f9]/;
- goog.i18n.bidi.rtlDetectionThreshold_ = .4;
- goog.i18n.bidi.estimateDirection = function (a, b) {
- for (var c = 0, d = 0, e = !1, f = goog.i18n.bidi.stripHtmlIfNeeded_(a, b).split(goog.i18n.bidi.wordSeparatorRe_), g = 0; g < f.length; g++) {
- var h = f[g];
- goog.i18n.bidi.startsWithRtl(h) ? (c++,
- d++) : goog.i18n.bidi.isRequiredLtrRe_.test(h) ? e = !0 : goog.i18n.bidi.hasAnyLtr(h) ? d++ : goog.i18n.bidi.hasNumeralsRe_.test(h) && (e = !0)
- }
- return 0 == d ? e ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL : c / d > goog.i18n.bidi.rtlDetectionThreshold_ ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR
- }
- ;
- goog.i18n.bidi.detectRtlDirectionality = function (a, b) {
- return goog.i18n.bidi.estimateDirection(a, b) == goog.i18n.bidi.Dir.RTL
- }
- ;
- goog.i18n.bidi.setElementDirAndAlign = function (a, b) {
- a && (b = goog.i18n.bidi.toDir(b)) && (a.style.textAlign = b == goog.i18n.bidi.Dir.RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT,
- a.dir = b == goog.i18n.bidi.Dir.RTL ? "rtl" : "ltr")
- }
- ;
- goog.i18n.bidi.setElementDirByTextDirectionality = function (a, b) {
- switch (goog.i18n.bidi.estimateDirection(b)) {
- case goog.i18n.bidi.Dir.LTR:
- a.dir = "ltr";
- break;
- case goog.i18n.bidi.Dir.RTL:
- a.dir = "rtl";
- break;
- default:
- a.removeAttribute("dir")
- }
- }
- ;
- goog.i18n.bidi.DirectionalString = function () { }
- ;
- goog.html.TrustedResourceUrl = function (a, b) {
- this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = a === goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
- this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_
- }
- ;
- goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = !0;
- goog.html.TrustedResourceUrl.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()
- }
- ;
- goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
- goog.html.TrustedResourceUrl.prototype.getDirection = function () {
- return goog.i18n.bidi.Dir.LTR
- }
- ;
- goog.html.TrustedResourceUrl.prototype.cloneWithParams = function (a, b) {
- var c = goog.html.TrustedResourceUrl.unwrap(this);
- c = goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);
- var d = c[3] || "";
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1] + goog.html.TrustedResourceUrl.stringifyParams_("?", c[2] || "", a) + goog.html.TrustedResourceUrl.stringifyParams_("#", d, b))
- }
- ;
- goog.DEBUG && (goog.html.TrustedResourceUrl.prototype.toString = function () {
- return "TrustedResourceUrl{" + this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + "}"
- }
- );
- goog.html.TrustedResourceUrl.unwrap = function (a) {
- return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()
- }
- ;
- goog.html.TrustedResourceUrl.unwrapTrustedScriptURL = function (a) {
- if (a instanceof goog.html.TrustedResourceUrl && a.constructor === goog.html.TrustedResourceUrl && a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)
- return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
- goog.asserts.fail("expected object of type TrustedResourceUrl, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:TrustedResourceUrl"
- }
- ;
- goog.html.TrustedResourceUrl.format = function (a, b) {
- var c = goog.string.Const.unwrap(a);
- if (!goog.html.TrustedResourceUrl.BASE_URL_.test(c))
- throw Error("Invalid TrustedResourceUrl format: " + c);
- var d = c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_, function (a, d) {
- if (!Object.prototype.hasOwnProperty.call(b, d))
- throw Error('Found marker, "' + d + '", in format string, "' + c + '", but no valid label mapping found in args: ' + JSON.stringify(b));
- var e = b[d];
- return e instanceof goog.string.Const ? goog.string.Const.unwrap(e) : encodeURIComponent(String(e))
- });
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(d)
- }
- ;
- goog.html.TrustedResourceUrl.FORMAT_MARKER_ = /%{(\w+)}/g;
- goog.html.TrustedResourceUrl.BASE_URL_ = /^((https:)?\/\/[0-9a-z.:[\]-]+\/|\/[^/\\]|[^:/\\%]+\/|[^:/\\%]*[?#]|about:blank#)/i;
- goog.html.TrustedResourceUrl.URL_PARAM_PARSER_ = /^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
- goog.html.TrustedResourceUrl.formatWithParams = function (a, b, c, d) {
- return goog.html.TrustedResourceUrl.format(a, b).cloneWithParams(c, d)
- }
- ;
- goog.html.TrustedResourceUrl.fromConstant = function (a) {
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))
- }
- ;
- goog.html.TrustedResourceUrl.fromConstants = function (a) {
- for (var b = "", c = 0; c < a.length; c++)
- b += goog.string.Const.unwrap(a[c]);
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function (a) {
- a = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(a) : a;
- return new goog.html.TrustedResourceUrl(goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a)
- }
- ;
- goog.html.TrustedResourceUrl.stringifyParams_ = function (a, b, c) {
- if (null == c)
- return b;
- if ("string" === typeof c)
- return c ? a + encodeURIComponent(c) : "";
- for (var d in c) {
- var e = c[d];
- e = goog.isArray(e) ? e : [e];
- for (var f = 0; f < e.length; f++) {
- var g = e[f];
- null != g && (b || (b = a),
- b += (b.length > a.length ? "&" : "") + encodeURIComponent(d) + "=" + encodeURIComponent(String(g)))
- }
- }
- return b
- }
- ;
- goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
- goog.string.internal = {};
- goog.string.internal.startsWith = function (a, b) {
- return 0 == a.lastIndexOf(b, 0)
- }
- ;
- goog.string.internal.endsWith = function (a, b) {
- var c = a.length - b.length;
- return 0 <= c && a.indexOf(b, c) == c
- }
- ;
- goog.string.internal.caseInsensitiveStartsWith = function (a, b) {
- return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(0, b.length))
- }
- ;
- goog.string.internal.caseInsensitiveEndsWith = function (a, b) {
- return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(a.length - b.length, b.length))
- }
- ;
- goog.string.internal.caseInsensitiveEquals = function (a, b) {
- return a.toLowerCase() == b.toLowerCase()
- }
- ;
- goog.string.internal.isEmptyOrWhitespace = function (a) {
- return /^[\s\xa0]*$/.test(a)
- }
- ;
- goog.string.internal.trim = goog.TRUSTED_SITE && String.prototype.trim ? function (a) {
- return a.trim()
- }
- : function (a) {
- return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]
- }
- ;
- goog.string.internal.caseInsensitiveCompare = function (a, b) {
- var c = String(a).toLowerCase()
- , d = String(b).toLowerCase();
- return c < d ? -1 : c == d ? 0 : 1
- }
- ;
- goog.string.internal.newLineToBr = function (a, b) {
- return a.replace(/(\r\n|\r|\n)/g, b ? "<br />" : "<br>")
- }
- ;
- goog.string.internal.htmlEscape = function (a, b) {
- if (b)
- a = a.replace(goog.string.internal.AMP_RE_, "&").replace(goog.string.internal.LT_RE_, "<").replace(goog.string.internal.GT_RE_, ">").replace(goog.string.internal.QUOT_RE_, """).replace(goog.string.internal.SINGLE_QUOTE_RE_, "'").replace(goog.string.internal.NULL_RE_, "�");
- else {
- if (!goog.string.internal.ALL_RE_.test(a))
- return a;
- -1 != a.indexOf("&") && (a = a.replace(goog.string.internal.AMP_RE_, "&"));
- -1 != a.indexOf("<") && (a = a.replace(goog.string.internal.LT_RE_, "<"));
- -1 != a.indexOf(">") && (a = a.replace(goog.string.internal.GT_RE_, ">"));
- -1 != a.indexOf('"') && (a = a.replace(goog.string.internal.QUOT_RE_, """));
- -1 != a.indexOf("'") && (a = a.replace(goog.string.internal.SINGLE_QUOTE_RE_, "'"));
- -1 != a.indexOf("\x00") && (a = a.replace(goog.string.internal.NULL_RE_, "�"))
- }
- return a
- }
- ;
- goog.string.internal.AMP_RE_ = /&/g;
- goog.string.internal.LT_RE_ = /</g;
- goog.string.internal.GT_RE_ = />/g;
- goog.string.internal.QUOT_RE_ = /"/g;
- goog.string.internal.SINGLE_QUOTE_RE_ = /'/g;
- goog.string.internal.NULL_RE_ = /\x00/g;
- goog.string.internal.ALL_RE_ = /[\x00&<>"']/;
- goog.string.internal.whitespaceEscape = function (a, b) {
- return goog.string.internal.newLineToBr(a.replace(/ /g, "  "), b)
- }
- ;
- goog.string.internal.contains = function (a, b) {
- return -1 != a.indexOf(b)
- }
- ;
- goog.string.internal.caseInsensitiveContains = function (a, b) {
- return goog.string.internal.contains(a.toLowerCase(), b.toLowerCase())
- }
- ;
- goog.string.internal.compareVersions = function (a, b) {
- for (var c = 0, d = goog.string.internal.trim(String(a)).split("."), e = goog.string.internal.trim(String(b)).split("."), f = Math.max(d.length, e.length), g = 0; 0 == c && g < f; g++) {
- var h = d[g] || ""
- , k = e[g] || "";
- do {
- h = /(\d*)(\D*)(.*)/.exec(h) || ["", "", "", ""];
- k = /(\d*)(\D*)(.*)/.exec(k) || ["", "", "", ""];
- if (0 == h[0].length && 0 == k[0].length)
- break;
- c = 0 == h[1].length ? 0 : parseInt(h[1], 10);
- var m = 0 == k[1].length ? 0 : parseInt(k[1], 10);
- c = goog.string.internal.compareElements_(c, m) || goog.string.internal.compareElements_(0 == h[2].length, 0 == k[2].length) || goog.string.internal.compareElements_(h[2], k[2]);
- h = h[3];
- k = k[3]
- } while (0 == c)
- }
- return c
- }
- ;
- goog.string.internal.compareElements_ = function (a, b) {
- return a < b ? -1 : a > b ? 1 : 0
- }
- ;
- goog.html.SafeUrl = function (a, b) {
- this.privateDoNotAccessOrElseSafeUrlWrappedValue_ = a === goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
- this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_
- }
- ;
- goog.html.SafeUrl.INNOCUOUS_STRING = "about:invalid#zClosurez";
- goog.html.SafeUrl.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeUrl.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()
- }
- ;
- goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
- goog.html.SafeUrl.prototype.getDirection = function () {
- return goog.i18n.bidi.Dir.LTR
- }
- ;
- goog.DEBUG && (goog.html.SafeUrl.prototype.toString = function () {
- return "SafeUrl{" + this.privateDoNotAccessOrElseSafeUrlWrappedValue_ + "}"
- }
- );
- goog.html.SafeUrl.unwrap = function (a) {
- if (a instanceof goog.html.SafeUrl && a.constructor === goog.html.SafeUrl && a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)
- return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;
- goog.asserts.fail("expected object of type SafeUrl, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeUrl"
- }
- ;
- goog.html.SafeUrl.fromConstant = function (a) {
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))
- }
- ;
- goog.html.SAFE_MIME_TYPE_PATTERN_ = /^(?:audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-wav|wav|webm)|image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\/csv|video\/(?:mpeg|mp4|ogg|webm|quicktime))(?:;\w+=(?:\w+|"[\w;=]+"))*$/i;
- goog.html.SafeUrl.isSafeMimeType = function (a) {
- return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)
- }
- ;
- goog.html.SafeUrl.fromBlob = function (a) {
- a = goog.html.SAFE_MIME_TYPE_PATTERN_.test(a.type) ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING;
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.DATA_URL_PATTERN_ = /^data:([^,]*);base64,[a-z0-9+\/]+=*$/i;
- goog.html.SafeUrl.fromDataUrl = function (a) {
- a = a.replace(/(%0A|%0D)/g, "");
- var b = a.match(goog.html.DATA_URL_PATTERN_);
- b = b && goog.html.SAFE_MIME_TYPE_PATTERN_.test(b[1]);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b ? a : goog.html.SafeUrl.INNOCUOUS_STRING)
- }
- ;
- goog.html.SafeUrl.fromTelUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "tel:") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SIP_URL_PATTERN_ = /^sip[s]?:[+a-z0-9_.!$%&'*\/=^`{|}~-]+@([a-z0-9-]+\.)+[a-z0-9]{2,63}$/i;
- goog.html.SafeUrl.fromSipUrl = function (a) {
- goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a)) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.fromFacebookMessengerUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "fb-messenger://share") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.fromWhatsAppUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "whatsapp://send") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.fromSmsUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "sms:") && goog.html.SafeUrl.isSmsUrlBodyValid_(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.isSmsUrlBodyValid_ = function (a) {
- var b = a.indexOf("#");
- 0 < b && (a = a.substring(0, b));
- b = a.match(/[?&]body=/gi);
- if (!b)
- return !0;
- if (1 < b.length)
- return !1;
- a = a.match(/[?&]body=([^&]*)/)[1];
- if (!a)
- return !0;
- try {
- decodeURIComponent(a)
- } catch (c) {
- return !1
- }
- return /^(?:[a-z0-9\-_.~]|%[0-9a-f]{2})+$/i.test(a)
- }
- ;
- goog.html.SafeUrl.fromSshUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "ssh://") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.sanitizeChromeExtensionUrl = function (a, b) {
- return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\/\/([^\/]+)\//, a, b)
- }
- ;
- goog.html.SafeUrl.sanitizeFirefoxExtensionUrl = function (a, b) {
- return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\/\/([^\/]+)\//, a, b)
- }
- ;
- goog.html.SafeUrl.sanitizeEdgeExtensionUrl = function (a, b) {
- return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\/\/([^\/]+)\//, a, b)
- }
- ;
- goog.html.SafeUrl.sanitizeExtensionUrl_ = function (a, b, c) {
- (a = a.exec(b)) ? (a = a[1],
- -1 == (c instanceof goog.string.Const ? [goog.string.Const.unwrap(c)] : c.map(function (a) {
- return goog.string.Const.unwrap(a)
- })).indexOf(a) && (b = goog.html.SafeUrl.INNOCUOUS_STRING)) : b = goog.html.SafeUrl.INNOCUOUS_STRING;
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.SafeUrl.fromTrustedResourceUrl = function (a) {
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))
- }
- ;
- goog.html.SAFE_URL_PATTERN_ = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;
- goog.html.SafeUrl.SAFE_URL_PATTERN = goog.html.SAFE_URL_PATTERN_;
- goog.html.SafeUrl.sanitize = function (a) {
- if (a instanceof goog.html.SafeUrl)
- return a;
- a = "object" == typeof a && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
- goog.html.SAFE_URL_PATTERN_.test(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.sanitizeAssertUnchanged = function (a, b) {
- if (a instanceof goog.html.SafeUrl)
- return a;
- a = "object" == typeof a && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
- if (b && /^data:/i.test(a)) {
- var c = goog.html.SafeUrl.fromDataUrl(a);
- if (c.getTypedStringValue() == a)
- return c
- }
- goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a), "%s does not match the safe URL pattern", a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function (a) {
- return new goog.html.SafeUrl(goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a)
- }
- ;
- goog.html.SafeUrl.ABOUT_BLANK = goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");
- goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
- goog.html.SafeStyle = function () {
- this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = "";
- this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_
- }
- ;
- goog.html.SafeStyle.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeStyle.fromConstant = function (a) {
- a = goog.string.Const.unwrap(a);
- if (0 === a.length)
- return goog.html.SafeStyle.EMPTY;
- goog.asserts.assert(goog.string.internal.endsWith(a, ";"), "Last character of style string is not ';': " + a);
- goog.asserts.assert(goog.string.internal.contains(a, ":"), "Style string must contain at least one ':', to specify a \"name: value\" pair: " + a);
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeStyle.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeStyleWrappedValue_
- }
- ;
- goog.DEBUG && (goog.html.SafeStyle.prototype.toString = function () {
- return "SafeStyle{" + this.privateDoNotAccessOrElseSafeStyleWrappedValue_ + "}"
- }
- );
- goog.html.SafeStyle.unwrap = function (a) {
- if (a instanceof goog.html.SafeStyle && a.constructor === goog.html.SafeStyle && a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)
- return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;
- goog.asserts.fail("expected object of type SafeStyle, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeStyle"
- }
- ;
- goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function (a) {
- return (new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(a)
- }
- ;
- goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
- this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = a;
- return this
- }
- ;
- goog.html.SafeStyle.EMPTY = goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");
- goog.html.SafeStyle.INNOCUOUS_STRING = "zClosurez";
- goog.html.SafeStyle.create = function (a) {
- var b = "", c;
- for (c in a) {
- if (!/^[-_a-zA-Z0-9]+$/.test(c))
- throw Error("Name allows only [-_a-zA-Z0-9], got: " + c);
- var d = a[c];
- null != d && (d = goog.isArray(d) ? goog.array.map(d, goog.html.SafeStyle.sanitizePropertyValue_).join(" ") : goog.html.SafeStyle.sanitizePropertyValue_(d),
- b += c + ":" + d + ";")
- }
- return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY
- }
- ;
- goog.html.SafeStyle.sanitizePropertyValue_ = function (a) {
- if (a instanceof goog.html.SafeUrl)
- return 'url("' + goog.html.SafeUrl.unwrap(a).replace(/</g, "%3c").replace(/[\\"]/g, "\\$&") + '")';
- a = a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : goog.html.SafeStyle.sanitizePropertyValueString_(String(a));
- if (/[{;}]/.test(a))
- throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.", [a]);
- return a
- }
- ;
- goog.html.SafeStyle.sanitizePropertyValueString_ = function (a) {
- var b = a.replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.URL_RE_, "url");
- if (goog.html.SafeStyle.VALUE_RE_.test(b)) {
- if (goog.html.SafeStyle.COMMENT_RE_.test(a))
- return goog.asserts.fail("String value disallows comments, got: " + a),
- goog.html.SafeStyle.INNOCUOUS_STRING;
- if (!goog.html.SafeStyle.hasBalancedQuotes_(a))
- return goog.asserts.fail("String value requires balanced quotes, got: " + a),
- goog.html.SafeStyle.INNOCUOUS_STRING;
- if (!goog.html.SafeStyle.hasBalancedSquareBrackets_(a))
- return goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: " + a),
- goog.html.SafeStyle.INNOCUOUS_STRING
- } else
- return goog.asserts.fail("String value allows only " + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + " and simple functions, got: " + a),
- goog.html.SafeStyle.INNOCUOUS_STRING;
- return goog.html.SafeStyle.sanitizeUrl_(a)
- }
- ;
- goog.html.SafeStyle.hasBalancedQuotes_ = function (a) {
- for (var b = !0, c = !0, d = 0; d < a.length; d++) {
- var e = a.charAt(d);
- "'" == e && c ? b = !b : '"' == e && b && (c = !c)
- }
- return b && c
- }
- ;
- goog.html.SafeStyle.hasBalancedSquareBrackets_ = function (a) {
- for (var b = !0, c = /^[-_a-zA-Z0-9]$/, d = 0; d < a.length; d++) {
- var e = a.charAt(d);
- if ("]" == e) {
- if (b)
- return !1;
- b = !0
- } else if ("[" == e) {
- if (!b)
- return !1;
- b = !1
- } else if (!b && !c.test(e))
- return !1
- }
- return b
- }
- ;
- goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ = "[-,.\"'%_!# a-zA-Z0-9\\[\\]]";
- goog.html.SafeStyle.VALUE_RE_ = new RegExp("^" + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + "+$");
- goog.html.SafeStyle.URL_RE_ = RegExp("\\b(url\\([ \t\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \t\n]*\\))", "g");
- goog.html.SafeStyle.ALLOWED_FUNCTIONS_ = "calc cubic-bezier fit-content hsl hsla matrix minmax repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)?".split(" ");
- goog.html.SafeStyle.FUNCTIONS_RE_ = new RegExp("\\b(" + goog.html.SafeStyle.ALLOWED_FUNCTIONS_.join("|") + ")\\([-+*/0-9a-z.%\\[\\], ]+\\)", "g");
- goog.html.SafeStyle.COMMENT_RE_ = /\/\*/;
- goog.html.SafeStyle.sanitizeUrl_ = function (a) {
- return a.replace(goog.html.SafeStyle.URL_RE_, function (a, c, d, e) {
- var b = "";
- d = d.replace(/^(['"])(.*)\1$/, function (a, c, d) {
- b = c;
- return d
- });
- a = goog.html.SafeUrl.sanitize(d).getTypedStringValue();
- return c + b + a + b + e
- })
- }
- ;
- goog.html.SafeStyle.concat = function (a) {
- var b = ""
- , c = function (a) {
- goog.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyle.unwrap(a)
- };
- goog.array.forEach(arguments, c);
- return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY
- }
- ;
- goog.html.SafeStyleSheet = function () {
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = "";
- this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_
- }
- ;
- goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeStyleSheet.createRule = function (a, b) {
- if (goog.string.internal.contains(a, "<"))
- throw Error("Selector does not allow '<', got: " + a);
- var c = a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g, "");
- if (!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c))
- throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: " + a);
- if (!goog.html.SafeStyleSheet.hasBalancedBrackets_(c))
- throw Error("() and [] in selector must be balanced, got: " + a);
- b instanceof goog.html.SafeStyle || (b = goog.html.SafeStyle.create(b));
- c = a + "{" + goog.html.SafeStyle.unwrap(b).replace(/</g, "\\3C ") + "}";
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(c)
- }
- ;
- goog.html.SafeStyleSheet.hasBalancedBrackets_ = function (a) {
- for (var b = {
- "(": ")",
- "[": "]"
- }, c = [], d = 0; d < a.length; d++) {
- var e = a[d];
- if (b[e])
- c.push(b[e]);
- else if (goog.object.contains(b, e) && c.pop() != e)
- return !1
- }
- return 0 == c.length
- }
- ;
- goog.html.SafeStyleSheet.concat = function (a) {
- var b = ""
- , c = function (a) {
- goog.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyleSheet.unwrap(a)
- };
- goog.array.forEach(arguments, c);
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.SafeStyleSheet.fromConstant = function (a) {
- a = goog.string.Const.unwrap(a);
- if (0 === a.length)
- return goog.html.SafeStyleSheet.EMPTY;
- goog.asserts.assert(!goog.string.internal.contains(a, "<"), "Forbidden '<' character in style sheet string: " + a);
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)
- }
- ;
- goog.html.SafeStyleSheet.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_
- }
- ;
- goog.DEBUG && (goog.html.SafeStyleSheet.prototype.toString = function () {
- return "SafeStyleSheet{" + this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ + "}"
- }
- );
- goog.html.SafeStyleSheet.unwrap = function (a) {
- if (a instanceof goog.html.SafeStyleSheet && a.constructor === goog.html.SafeStyleSheet && a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)
- return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
- goog.asserts.fail("expected object of type SafeStyleSheet, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeStyleSheet"
- }
- ;
- goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse = function (a) {
- return (new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(a)
- }
- ;
- goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = a;
- return this
- }
- ;
- goog.html.SafeStyleSheet.EMPTY = goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");
- goog.labs = {};
- goog.labs.userAgent = {};
- goog.labs.userAgent.util = {};
- goog.labs.userAgent.util.getNativeUserAgentString_ = function () {
- var a = goog.labs.userAgent.util.getNavigator_();
- return a && (a = a.userAgent) ? a : ""
- }
- ;
- goog.labs.userAgent.util.getNavigator_ = function () {
- return goog.global.navigator
- }
- ;
- goog.labs.userAgent.util.userAgent_ = goog.labs.userAgent.util.getNativeUserAgentString_();
- goog.labs.userAgent.util.setUserAgent = function (a) {
- goog.labs.userAgent.util.userAgent_ = a || goog.labs.userAgent.util.getNativeUserAgentString_()
- }
- ;
- goog.labs.userAgent.util.getUserAgent = function () {
- return goog.labs.userAgent.util.userAgent_
- }
- ;
- goog.labs.userAgent.util.matchUserAgent = function (a) {
- var b = goog.labs.userAgent.util.getUserAgent();
- return goog.string.internal.contains(b, a)
- }
- ;
- goog.labs.userAgent.util.matchUserAgentIgnoreCase = function (a) {
- var b = goog.labs.userAgent.util.getUserAgent();
- return goog.string.internal.caseInsensitiveContains(b, a)
- }
- ;
- goog.labs.userAgent.util.extractVersionTuples = function (a) {
- for (var b = RegExp("(\\w[\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?", "g"), c = [], d; d = b.exec(a);)
- c.push([d[1], d[2], d[3] || void 0]);
- return c
- }
- ;
- goog.labs.userAgent.browser = {};
- goog.labs.userAgent.browser.matchOpera_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Opera")
- }
- ;
- goog.labs.userAgent.browser.matchIE_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE")
- }
- ;
- goog.labs.userAgent.browser.matchEdgeHtml_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Edge")
- }
- ;
- goog.labs.userAgent.browser.matchEdgeChromium_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Edg/")
- }
- ;
- goog.labs.userAgent.browser.matchOperaChromium_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("OPR")
- }
- ;
- goog.labs.userAgent.browser.matchFirefox_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Firefox") || goog.labs.userAgent.util.matchUserAgent("FxiOS")
- }
- ;
- goog.labs.userAgent.browser.matchSafari_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Safari") && !(goog.labs.userAgent.browser.matchChrome_() || goog.labs.userAgent.browser.matchCoast_() || goog.labs.userAgent.browser.matchOpera_() || goog.labs.userAgent.browser.matchEdgeHtml_() || goog.labs.userAgent.browser.matchEdgeChromium_() || goog.labs.userAgent.browser.matchOperaChromium_() || goog.labs.userAgent.browser.matchFirefox_() || goog.labs.userAgent.browser.isSilk() || goog.labs.userAgent.util.matchUserAgent("Android"))
- }
- ;
- goog.labs.userAgent.browser.matchCoast_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Coast")
- }
- ;
- goog.labs.userAgent.browser.matchIosWebview_ = function () {
- return (goog.labs.userAgent.util.matchUserAgent("iPad") || goog.labs.userAgent.util.matchUserAgent("iPhone")) && !goog.labs.userAgent.browser.matchSafari_() && !goog.labs.userAgent.browser.matchChrome_() && !goog.labs.userAgent.browser.matchCoast_() && !goog.labs.userAgent.browser.matchFirefox_() && goog.labs.userAgent.util.matchUserAgent("AppleWebKit")
- }
- ;
- goog.labs.userAgent.browser.matchChrome_ = function () {
- return (goog.labs.userAgent.util.matchUserAgent("Chrome") || goog.labs.userAgent.util.matchUserAgent("CriOS")) && !goog.labs.userAgent.browser.matchEdgeHtml_()
- }
- ;
- goog.labs.userAgent.browser.matchAndroidBrowser_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Android") && !(goog.labs.userAgent.browser.isChrome() || goog.labs.userAgent.browser.isFirefox() || goog.labs.userAgent.browser.isOpera() || goog.labs.userAgent.browser.isSilk())
- }
- ;
- goog.labs.userAgent.browser.isOpera = goog.labs.userAgent.browser.matchOpera_;
- goog.labs.userAgent.browser.isIE = goog.labs.userAgent.browser.matchIE_;
- goog.labs.userAgent.browser.isEdge = goog.labs.userAgent.browser.matchEdgeHtml_;
- goog.labs.userAgent.browser.isEdgeChromium = goog.labs.userAgent.browser.matchEdgeChromium_;
- goog.labs.userAgent.browser.isOperaChromium = goog.labs.userAgent.browser.matchOperaChromium_;
- goog.labs.userAgent.browser.isFirefox = goog.labs.userAgent.browser.matchFirefox_;
- goog.labs.userAgent.browser.isSafari = goog.labs.userAgent.browser.matchSafari_;
- goog.labs.userAgent.browser.isCoast = goog.labs.userAgent.browser.matchCoast_;
- goog.labs.userAgent.browser.isIosWebview = goog.labs.userAgent.browser.matchIosWebview_;
- goog.labs.userAgent.browser.isChrome = goog.labs.userAgent.browser.matchChrome_;
- goog.labs.userAgent.browser.isAndroidBrowser = goog.labs.userAgent.browser.matchAndroidBrowser_;
- goog.labs.userAgent.browser.isSilk = function () {
- return goog.labs.userAgent.util.matchUserAgent("Silk")
- }
- ;
- goog.labs.userAgent.browser.getVersion = function () {
- function a(a) {
- a = goog.array.find(a, d);
- return c[a] || ""
- }
- var b = goog.labs.userAgent.util.getUserAgent();
- if (goog.labs.userAgent.browser.isIE())
- return goog.labs.userAgent.browser.getIEVersion_(b);
- b = goog.labs.userAgent.util.extractVersionTuples(b);
- var c = {};
- goog.array.forEach(b, function (a) {
- c[a[0]] = a[1]
- });
- var d = goog.partial(goog.object.containsKey, c);
- return goog.labs.userAgent.browser.isOpera() ? a(["Version", "Opera"]) : goog.labs.userAgent.browser.isEdge() ? a(["Edge"]) : goog.labs.userAgent.browser.isEdgeChromium() ? a(["Edg"]) : goog.labs.userAgent.browser.isChrome() ? a(["Chrome", "CriOS"]) : (b = b[2]) && b[1] || ""
- }
- ;
- goog.labs.userAgent.browser.isVersionOrHigher = function (a) {
- return 0 <= goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(), a)
- }
- ;
- goog.labs.userAgent.browser.getIEVersion_ = function (a) {
- var b = /rv: *([\d\.]*)/.exec(a);
- if (b && b[1])
- return b[1];
- b = "";
- var c = /MSIE +([\d\.]+)/.exec(a);
- if (c && c[1])
- if (a = /Trident\/(\d.\d)/.exec(a),
- "7.0" == c[1])
- if (a && a[1])
- switch (a[1]) {
- case "4.0":
- b = "8.0";
- break;
- case "5.0":
- b = "9.0";
- break;
- case "6.0":
- b = "10.0";
- break;
- case "7.0":
- b = "11.0"
- }
- else
- b = "7.0";
- else
- b = c[1];
- return b
- }
- ;
- goog.html.SafeHtml = function () {
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = "";
- this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- this.dir_ = null
- }
- ;
- goog.html.SafeHtml.ENABLE_ERROR_MESSAGES = goog.DEBUG;
- goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE = !0;
- goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString = !0;
- goog.html.SafeHtml.prototype.getDirection = function () {
- return this.dir_
- }
- ;
- goog.html.SafeHtml.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeHtml.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()
- }
- ;
- goog.DEBUG && (goog.html.SafeHtml.prototype.toString = function () {
- return "SafeHtml{" + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ + "}"
- }
- );
- goog.html.SafeHtml.unwrap = function (a) {
- return goog.html.SafeHtml.unwrapTrustedHTML(a).toString()
- }
- ;
- goog.html.SafeHtml.unwrapTrustedHTML = function (a) {
- if (a instanceof goog.html.SafeHtml && a.constructor === goog.html.SafeHtml && a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)
- return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
- goog.asserts.fail("expected object of type SafeHtml, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeHtml"
- }
- ;
- goog.html.SafeHtml.htmlEscape = function (a) {
- if (a instanceof goog.html.SafeHtml)
- return a;
- var b = "object" == typeof a
- , c = null;
- b && a.implementsGoogI18nBidiDirectionalString && (c = a.getDirection());
- a = b && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a), c)
- }
- ;
- goog.html.SafeHtml.htmlEscapePreservingNewlines = function (a) {
- if (a instanceof goog.html.SafeHtml)
- return a;
- a = goog.html.SafeHtml.htmlEscape(a);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(a)), a.getDirection())
- }
- ;
- goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function (a) {
- if (a instanceof goog.html.SafeHtml)
- return a;
- a = goog.html.SafeHtml.htmlEscape(a);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(a)), a.getDirection())
- }
- ;
- goog.html.SafeHtml.from = goog.html.SafeHtml.htmlEscape;
- goog.html.SafeHtml.VALID_NAMES_IN_TAG_ = /^[a-zA-Z0-9-]+$/;
- goog.html.SafeHtml.URL_ATTRIBUTES_ = {
- action: !0,
- cite: !0,
- data: !0,
- formaction: !0,
- href: !0,
- manifest: !0,
- poster: !0,
- src: !0
- };
- goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_ = {
- APPLET: !0,
- BASE: !0,
- EMBED: !0,
- IFRAME: !0,
- LINK: !0,
- MATH: !0,
- META: !0,
- OBJECT: !0,
- SCRIPT: !0,
- STYLE: !0,
- SVG: !0,
- TEMPLATE: !0
- };
- goog.html.SafeHtml.create = function (a, b, c) {
- goog.html.SafeHtml.verifyTagName(String(a));
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a), b, c)
- }
- ;
- goog.html.SafeHtml.verifyTagName = function (a) {
- if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a))
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Invalid tag name <" + a + ">." : "");
- if (a.toUpperCase() in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Tag name <" + a + "> is not allowed for SafeHtml." : "");
- }
- ;
- goog.html.SafeHtml.createIframe = function (a, b, c, d) {
- a && goog.html.TrustedResourceUrl.unwrap(a);
- var e = {};
- e.src = a || null;
- e.srcdoc = b && goog.html.SafeHtml.unwrap(b);
- a = goog.html.SafeHtml.combineAttributes(e, {
- sandbox: ""
- }, c);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d)
- }
- ;
- goog.html.SafeHtml.createSandboxIframe = function (a, b, c, d) {
- if (!goog.html.SafeHtml.canUseSandboxIframe())
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "The browser does not support sandboxed iframes." : "");
- var e = {};
- e.src = a ? goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)) : null;
- e.srcdoc = b || null;
- e.sandbox = "";
- a = goog.html.SafeHtml.combineAttributes(e, {}, c);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d)
- }
- ;
- goog.html.SafeHtml.canUseSandboxIframe = function () {
- return goog.global.HTMLIFrameElement && "sandbox" in goog.global.HTMLIFrameElement.prototype
- }
- ;
- goog.html.SafeHtml.createScriptSrc = function (a, b) {
- goog.html.TrustedResourceUrl.unwrap(a);
- var c = goog.html.SafeHtml.combineAttributes({
- src: a
- }, {}, b);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", c)
- }
- ;
- goog.html.SafeHtml.createScript = function (a, b) {
- for (var c in b) {
- var d = c.toLowerCase();
- if ("language" == d || "src" == d || "text" == d || "type" == d)
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot set "' + d + '" attribute' : "");
- }
- c = "";
- a = goog.array.concat(a);
- for (d = 0; d < a.length; d++)
- c += goog.html.SafeScript.unwrap(a[d]);
- c = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", b, c)
- }
- ;
- goog.html.SafeHtml.createStyle = function (a, b) {
- var c = goog.html.SafeHtml.combineAttributes({
- type: "text/css"
- }, {}, b)
- , d = "";
- a = goog.array.concat(a);
- for (var e = 0; e < a.length; e++)
- d += goog.html.SafeStyleSheet.unwrap(a[e]);
- d = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d, goog.i18n.bidi.Dir.NEUTRAL);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style", c, d)
- }
- ;
- goog.html.SafeHtml.createMetaRefresh = function (a, b) {
- var c = goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));
- (goog.labs.userAgent.browser.isIE() || goog.labs.userAgent.browser.isEdge()) && goog.string.internal.contains(c, ";") && (c = "'" + c.replace(/'/g, "%27") + "'");
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta", {
- "http-equiv": "refresh",
- content: (b || 0) + "; url=" + c
- })
- }
- ;
- goog.html.SafeHtml.getAttrNameAndValue_ = function (a, b, c) {
- if (c instanceof goog.string.Const)
- c = goog.string.Const.unwrap(c);
- else if ("style" == b.toLowerCase())
- if (goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE)
- c = goog.html.SafeHtml.getStyleValue_(c);
- else
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "style" not supported.' : "");
- else {
- if (/^on/i.test(b))
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" requires goog.string.Const value, "' + c + '" given.' : "");
- if (b.toLowerCase() in goog.html.SafeHtml.URL_ATTRIBUTES_)
- if (c instanceof goog.html.TrustedResourceUrl)
- c = goog.html.TrustedResourceUrl.unwrap(c);
- else if (c instanceof goog.html.SafeUrl)
- c = goog.html.SafeUrl.unwrap(c);
- else if ("string" === typeof c)
- c = goog.html.SafeUrl.sanitize(c).getTypedStringValue();
- else
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" on tag "' + a + '" requires goog.html.SafeUrl, goog.string.Const, or string, value "' + c + '" given.' : "");
- }
- c.implementsGoogStringTypedString && (c = c.getTypedStringValue());
- goog.asserts.assert("string" === typeof c || "number" === typeof c, "String or number value expected, got " + typeof c + " with value: " + c);
- return b + '="' + goog.string.internal.htmlEscape(String(c)) + '"'
- }
- ;
- goog.html.SafeHtml.getStyleValue_ = function (a) {
- if (!goog.isObject(a))
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'The "style" attribute requires goog.html.SafeStyle or map of style properties, ' + typeof a + " given: " + a : "");
- a instanceof goog.html.SafeStyle || (a = goog.html.SafeStyle.create(a));
- return goog.html.SafeStyle.unwrap(a)
- }
- ;
- goog.html.SafeHtml.createWithDir = function (a, b, c, d) {
- b = goog.html.SafeHtml.create(b, c, d);
- b.dir_ = a;
- return b
- }
- ;
- goog.html.SafeHtml.join = function (a, b) {
- var c = goog.html.SafeHtml.htmlEscape(a)
- , d = c.getDirection()
- , e = []
- , f = function (a) {
- goog.isArray(a) ? goog.array.forEach(a, f) : (a = goog.html.SafeHtml.htmlEscape(a),
- e.push(goog.html.SafeHtml.unwrap(a)),
- a = a.getDirection(),
- d == goog.i18n.bidi.Dir.NEUTRAL ? d = a : a != goog.i18n.bidi.Dir.NEUTRAL && d != a && (d = null))
- };
- goog.array.forEach(b, f);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e.join(goog.html.SafeHtml.unwrap(c)), d)
- }
- ;
- goog.html.SafeHtml.concat = function (a) {
- return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY, Array.prototype.slice.call(arguments))
- }
- ;
- goog.html.SafeHtml.concatWithDir = function (a, b) {
- var c = goog.html.SafeHtml.concat(goog.array.slice(arguments, 1));
- c.dir_ = a;
- return c
- }
- ;
- goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function (a, b) {
- return (new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(a, b)
- }
- ;
- goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a, b) {
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(a) : a;
- this.dir_ = b;
- return this
- }
- ;
- goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function (a, b, c) {
- var d = null;
- var e = "<" + a + goog.html.SafeHtml.stringifyAttributes(a, b);
- null == c ? c = [] : goog.isArray(c) || (c = [c]);
- goog.dom.tags.isVoidTag(a.toLowerCase()) ? (goog.asserts.assert(!c.length, "Void tag <" + a + "> does not allow content."),
- e += ">") : (d = goog.html.SafeHtml.concat(c),
- e += ">" + goog.html.SafeHtml.unwrap(d) + "</" + a + ">",
- d = d.getDirection());
- (a = b && b.dir) && (d = /^(ltr|rtl|auto)$/i.test(a) ? goog.i18n.bidi.Dir.NEUTRAL : null);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e, d)
- }
- ;
- goog.html.SafeHtml.stringifyAttributes = function (a, b) {
- var c = "";
- if (b)
- for (var d in b) {
- if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d))
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Invalid attribute name "' + d + '".' : "");
- var e = b[d];
- null != e && (c += " " + goog.html.SafeHtml.getAttrNameAndValue_(a, d, e))
- }
- return c
- }
- ;
- goog.html.SafeHtml.combineAttributes = function (a, b, c) {
- var d = {}, e;
- for (e in a)
- goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"),
- d[e] = a[e];
- for (e in b)
- goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"),
- d[e] = b[e];
- if (c)
- for (e in c) {
- var f = e.toLowerCase();
- if (f in a)
- throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot override "' + f + '" attribute, got "' + e + '" with value "' + c[e] + '"' : "");
- f in b && delete d[f];
- d[e] = c[e]
- }
- return d
- }
- ;
- goog.html.SafeHtml.DOCTYPE_HTML = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>", goog.i18n.bidi.Dir.NEUTRAL);
- goog.html.SafeHtml.EMPTY = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("", goog.i18n.bidi.Dir.NEUTRAL);
- goog.html.SafeHtml.BR = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>", goog.i18n.bidi.Dir.NEUTRAL);
- goog.html.uncheckedconversions = {};
- goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract = function (a, b, c) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b, c || null)
- }
- ;
- goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)
- }
- ;
- goog.dom.safe = {};
- goog.dom.safe.InsertAdjacentHtmlPosition = {
- AFTERBEGIN: "afterbegin",
- AFTEREND: "afterend",
- BEFOREBEGIN: "beforebegin",
- BEFOREEND: "beforeend"
- };
- goog.dom.safe.insertAdjacentHtml = function (a, b, c) {
- a.insertAdjacentHTML(b, goog.html.SafeHtml.unwrapTrustedHTML(c))
- }
- ;
- goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_ = {
- MATH: !0,
- SCRIPT: !0,
- STYLE: !0,
- SVG: !0,
- TEMPLATE: !0
- };
- goog.dom.safe.isInnerHtmlCleanupRecursive_ = goog.functions.cacheReturnValue(function () {
- if (goog.DEBUG && "undefined" === typeof document)
- return !1;
- var a = document.createElement("div")
- , b = document.createElement("div");
- b.appendChild(document.createElement("div"));
- a.appendChild(b);
- if (goog.DEBUG && !a.firstChild)
- return !1;
- b = a.firstChild.firstChild;
- a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY);
- return !b.parentElement
- });
- goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse = function (a, b) {
- if (goog.dom.safe.isInnerHtmlCleanupRecursive_())
- for (; a.lastChild;)
- a.removeChild(a.lastChild);
- a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b)
- }
- ;
- goog.dom.safe.setInnerHtml = function (a, b) {
- if (goog.asserts.ENABLE_ASSERTS) {
- var c = a.tagName.toUpperCase();
- if (goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])
- throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of " + a.tagName + ".");
- }
- goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a, b)
- }
- ;
- goog.dom.safe.setOuterHtml = function (a, b) {
- a.outerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b)
- }
- ;
- goog.dom.safe.setFormElementAction = function (a, b) {
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- goog.dom.asserts.assertIsHTMLFormElement(a).action = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setButtonFormAction = function (a, b) {
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- goog.dom.asserts.assertIsHTMLButtonElement(a).formAction = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setInputFormAction = function (a, b) {
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- goog.dom.asserts.assertIsHTMLInputElement(a).formAction = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setStyle = function (a, b) {
- a.style.cssText = goog.html.SafeStyle.unwrap(b)
- }
- ;
- goog.dom.safe.documentWrite = function (a, b) {
- a.write(goog.html.SafeHtml.unwrapTrustedHTML(b))
- }
- ;
- goog.dom.safe.setAnchorHref = function (a, b) {
- goog.dom.asserts.assertIsHTMLAnchorElement(a);
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.href = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setImageSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLImageElement(a);
- if (b instanceof goog.html.SafeUrl)
- var c = b;
- else
- c = /^data:image\//i.test(b),
- c = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
- a.src = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setAudioSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLAudioElement(a);
- if (b instanceof goog.html.SafeUrl)
- var c = b;
- else
- c = /^data:audio\//i.test(b),
- c = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
- a.src = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setVideoSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLVideoElement(a);
- if (b instanceof goog.html.SafeUrl)
- var c = b;
- else
- c = /^data:video\//i.test(b),
- c = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
- a.src = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.setEmbedSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLEmbedElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)
- }
- ;
- goog.dom.safe.setFrameSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLFrameElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrap(b)
- }
- ;
- goog.dom.safe.setIframeSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLIFrameElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrap(b)
- }
- ;
- goog.dom.safe.setIframeSrcdoc = function (a, b) {
- goog.dom.asserts.assertIsHTMLIFrameElement(a);
- a.srcdoc = goog.html.SafeHtml.unwrapTrustedHTML(b)
- }
- ;
- goog.dom.safe.setLinkHrefAndRel = function (a, b, c) {
- goog.dom.asserts.assertIsHTMLLinkElement(a);
- a.rel = c;
- goog.string.internal.caseInsensitiveContains(c, "stylesheet") ? (goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl, 'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),
- a.href = goog.html.TrustedResourceUrl.unwrap(b)) : a.href = b instanceof goog.html.TrustedResourceUrl ? goog.html.TrustedResourceUrl.unwrap(b) : b instanceof goog.html.SafeUrl ? goog.html.SafeUrl.unwrap(b) : goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))
- }
- ;
- goog.dom.safe.setObjectData = function (a, b) {
- goog.dom.asserts.assertIsHTMLObjectElement(a);
- a.data = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)
- }
- ;
- goog.dom.safe.setScriptSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLScriptElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
- var c = goog.getScriptNonce();
- c && a.setAttribute("nonce", c)
- }
- ;
- goog.dom.safe.setScriptContent = function (a, b) {
- goog.dom.asserts.assertIsHTMLScriptElement(a);
- a.text = goog.html.SafeScript.unwrapTrustedScript(b);
- var c = goog.getScriptNonce();
- c && a.setAttribute("nonce", c)
- }
- ;
- goog.dom.safe.setLocationHref = function (a, b) {
- goog.dom.asserts.assertIsLocation(a);
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.href = goog.html.SafeUrl.unwrap(c)
- }
- ;
- goog.dom.safe.assignLocation = function (a, b) {
- goog.dom.asserts.assertIsLocation(a);
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.assign(goog.html.SafeUrl.unwrap(c))
- }
- ;
- goog.dom.safe.replaceLocation = function (a, b) {
- goog.dom.asserts.assertIsLocation(a);
- var c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.replace(goog.html.SafeUrl.unwrap(c))
- }
- ;
- goog.dom.safe.openInWindow = function (a, b, c, d, e) {
- a = a instanceof goog.html.SafeUrl ? a : goog.html.SafeUrl.sanitizeAssertUnchanged(a);
- return (b || goog.global).open(goog.html.SafeUrl.unwrap(a), c ? goog.string.Const.unwrap(c) : "", d, e)
- }
- ;
- goog.dom.safe.parseFromStringHtml = function (a, b) {
- return goog.dom.safe.parseFromString(a, b, "text/html")
- }
- ;
- goog.dom.safe.parseFromString = function (a, b, c) {
- return a.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(b), c)
- }
- ;
- goog.dom.safe.createImageFromBlob = function (a) {
- if (!/^image\/.*/g.test(a.type))
- throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");
- var b = goog.global.URL.createObjectURL(a);
- a = new goog.global.Image;
- a.onload = function () {
- goog.global.URL.revokeObjectURL(b)
- }
- ;
- goog.dom.safe.setImageSrc(a, goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."), b));
- return a
- }
- ;
- goog.string.DETECT_DOUBLE_ESCAPING = !1;
- goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1;
- goog.string.Unicode = {
- NBSP: "\u00a0"
- };
- goog.string.startsWith = goog.string.internal.startsWith;
- goog.string.endsWith = goog.string.internal.endsWith;
- goog.string.caseInsensitiveStartsWith = goog.string.internal.caseInsensitiveStartsWith;
- goog.string.caseInsensitiveEndsWith = goog.string.internal.caseInsensitiveEndsWith;
- goog.string.caseInsensitiveEquals = goog.string.internal.caseInsensitiveEquals;
- goog.string.subs = function (a, b) {
- for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;)
- d += c.shift() + e.shift();
- return d + c.join("%s")
- }
- ;
- goog.string.collapseWhitespace = function (a) {
- return a.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "")
- }
- ;
- goog.string.isEmptyOrWhitespace = goog.string.internal.isEmptyOrWhitespace;
- goog.string.isEmptyString = function (a) {
- return 0 == a.length
- }
- ;
- goog.string.isEmpty = goog.string.isEmptyOrWhitespace;
- goog.string.isEmptyOrWhitespaceSafe = function (a) {
- return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))
- }
- ;
- goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;
- goog.string.isBreakingWhitespace = function (a) {
- return !/[^\t\n\r ]/.test(a)
- }
- ;
- goog.string.isAlpha = function (a) {
- return !/[^a-zA-Z]/.test(a)
- }
- ;
- goog.string.isNumeric = function (a) {
- return !/[^0-9]/.test(a)
- }
- ;
- goog.string.isAlphaNumeric = function (a) {
- return !/[^a-zA-Z0-9]/.test(a)
- }
- ;
- goog.string.isSpace = function (a) {
- return " " == a
- }
- ;
- goog.string.isUnicodeChar = function (a) {
- return 1 == a.length && " " <= a && "~" >= a || "\u0080" <= a && "\ufffd" >= a
- }
- ;
- goog.string.stripNewlines = function (a) {
- return a.replace(/(\r\n|\r|\n)+/g, " ")
- }
- ;
- goog.string.canonicalizeNewlines = function (a) {
- return a.replace(/(\r\n|\r|\n)/g, "\n")
- }
- ;
- goog.string.normalizeWhitespace = function (a) {
- return a.replace(/\xa0|\s/g, " ")
- }
- ;
- goog.string.normalizeSpaces = function (a) {
- return a.replace(/\xa0|[ \t]+/g, " ")
- }
- ;
- goog.string.collapseBreakingSpaces = function (a) {
- return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "")
- }
- ;
- goog.string.trim = goog.string.internal.trim;
- goog.string.trimLeft = function (a) {
- return a.replace(/^[\s\xa0]+/, "")
- }
- ;
- goog.string.trimRight = function (a) {
- return a.replace(/[\s\xa0]+$/, "")
- }
- ;
- goog.string.caseInsensitiveCompare = goog.string.internal.caseInsensitiveCompare;
- goog.string.numberAwareCompare_ = function (a, b, c) {
- if (a == b)
- return 0;
- if (!a)
- return -1;
- if (!b)
- return 1;
- for (var d = a.toLowerCase().match(c), e = b.toLowerCase().match(c), f = Math.min(d.length, e.length), g = 0; g < f; g++) {
- c = d[g];
- var h = e[g];
- if (c != h)
- return a = parseInt(c, 10),
- !isNaN(a) && (b = parseInt(h, 10),
- !isNaN(b) && a - b) ? a - b : c < h ? -1 : 1
- }
- return d.length != e.length ? d.length - e.length : a < b ? -1 : 1
- }
- ;
- goog.string.intAwareCompare = function (a, b) {
- return goog.string.numberAwareCompare_(a, b, /\d+|\D+/g)
- }
- ;
- goog.string.floatAwareCompare = function (a, b) {
- return goog.string.numberAwareCompare_(a, b, /\d+|\.\d+|\D+/g)
- }
- ;
- goog.string.numerateCompare = goog.string.floatAwareCompare;
- goog.string.urlEncode = function (a) {
- return encodeURIComponent(String(a))
- }
- ;
- goog.string.urlDecode = function (a) {
- return decodeURIComponent(a.replace(/\+/g, " "))
- }
- ;
- goog.string.newLineToBr = goog.string.internal.newLineToBr;
- goog.string.htmlEscape = function (a, b) {
- a = goog.string.internal.htmlEscape(a, b);
- goog.string.DETECT_DOUBLE_ESCAPING && (a = a.replace(goog.string.E_RE_, "e"));
- return a
- }
- ;
- goog.string.E_RE_ = /e/g;
- goog.string.unescapeEntities = function (a) {
- return goog.string.contains(a, "&") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a
- }
- ;
- goog.string.unescapeEntitiesWithDocument = function (a, b) {
- return goog.string.contains(a, "&") ? goog.string.unescapeEntitiesUsingDom_(a, b) : a
- }
- ;
- goog.string.unescapeEntitiesUsingDom_ = function (a, b) {
- var c = {
- "&": "&",
- "<": "<",
- ">": ">",
- """: '"'
- };
- var d = b ? b.createElement("div") : goog.global.document.createElement("div");
- return a.replace(goog.string.HTML_ENTITY_PATTERN_, function (a, b) {
- var e = c[a];
- if (e)
- return e;
- if ("#" == b.charAt(0)) {
- var f = Number("0" + b.substr(1));
- isNaN(f) || (e = String.fromCharCode(f))
- }
- e || (goog.dom.safe.setInnerHtml(d, goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."), a + " ")),
- e = d.firstChild.nodeValue.slice(0, -1));
- return c[a] = e
- })
- }
- ;
- goog.string.unescapePureXmlEntities_ = function (a) {
- return a.replace(/&([^;]+);/g, function (a, c) {
- switch (c) {
- case "amp":
- return "&";
- case "lt":
- return "<";
- case "gt":
- return ">";
- case "quot":
- return '"';
- default:
- if ("#" == c.charAt(0)) {
- var b = Number("0" + c.substr(1));
- if (!isNaN(b))
- return String.fromCharCode(b)
- }
- return a
- }
- })
- }
- ;
- goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g;
- goog.string.whitespaceEscape = function (a, b) {
- return goog.string.newLineToBr(a.replace(/ /g, "  "), b)
- }
- ;
- goog.string.preserveSpaces = function (a) {
- return a.replace(/(^|[\n ]) /g, "$1" + goog.string.Unicode.NBSP)
- }
- ;
- goog.string.stripQuotes = function (a, b) {
- for (var c = b.length, d = 0; d < c; d++) {
- var e = 1 == c ? b : b.charAt(d);
- if (a.charAt(0) == e && a.charAt(a.length - 1) == e)
- return a.substring(1, a.length - 1)
- }
- return a
- }
- ;
- goog.string.truncate = function (a, b, c) {
- c && (a = goog.string.unescapeEntities(a));
- a.length > b && (a = a.substring(0, b - 3) + "...");
- c && (a = goog.string.htmlEscape(a));
- return a
- }
- ;
- goog.string.truncateMiddle = function (a, b, c, d) {
- c && (a = goog.string.unescapeEntities(a));
- if (d && a.length > b) {
- d > b && (d = b);
- var e = a.length - d;
- a = a.substring(0, b - d) + "..." + a.substring(e)
- } else
- a.length > b && (d = Math.floor(b / 2),
- e = a.length - d,
- a = a.substring(0, d + b % 2) + "..." + a.substring(e));
- c && (a = goog.string.htmlEscape(a));
- return a
- }
- ;
- goog.string.specialEscapeChars_ = {
- "\x00": "\\0",
- "\b": "\\b",
- "\f": "\\f",
- "\n": "\\n",
- "\r": "\\r",
- "\t": "\\t",
- "\x0B": "\\x0B",
- '"': '\\"',
- "\\": "\\\\",
- "<": "\\u003C"
- };
- goog.string.jsEscapeCache_ = {
- "'": "\\'"
- };
- goog.string.quote = function (a) {
- a = String(a);
- for (var b = ['"'], c = 0; c < a.length; c++) {
- var d = a.charAt(c)
- , e = d.charCodeAt(0);
- b[c + 1] = goog.string.specialEscapeChars_[d] || (31 < e && 127 > e ? d : goog.string.escapeChar(d))
- }
- b.push('"');
- return b.join("")
- }
- ;
- goog.string.escapeString = function (a) {
- for (var b = [], c = 0; c < a.length; c++)
- b[c] = goog.string.escapeChar(a.charAt(c));
- return b.join("")
- }
- ;
- goog.string.escapeChar = function (a) {
- if (a in goog.string.jsEscapeCache_)
- return goog.string.jsEscapeCache_[a];
- if (a in goog.string.specialEscapeChars_)
- return goog.string.jsEscapeCache_[a] = goog.string.specialEscapeChars_[a];
- var b = a.charCodeAt(0);
- if (31 < b && 127 > b)
- var c = a;
- else {
- if (256 > b) {
- if (c = "\\x",
- 16 > b || 256 < b)
- c += "0"
- } else
- c = "\\u",
- 4096 > b && (c += "0");
- c += b.toString(16).toUpperCase()
- }
- return goog.string.jsEscapeCache_[a] = c
- }
- ;
- goog.string.contains = goog.string.internal.contains;
- goog.string.caseInsensitiveContains = goog.string.internal.caseInsensitiveContains;
- goog.string.countOf = function (a, b) {
- return a && b ? a.split(b).length - 1 : 0
- }
- ;
- goog.string.removeAt = function (a, b, c) {
- var d = a;
- 0 <= b && b < a.length && 0 < c && (d = a.substr(0, b) + a.substr(b + c, a.length - b - c));
- return d
- }
- ;
- goog.string.remove = function (a, b) {
- return a.replace(b, "")
- }
- ;
- goog.string.removeAll = function (a, b) {
- var c = new RegExp(goog.string.regExpEscape(b), "g");
- return a.replace(c, "")
- }
- ;
- goog.string.replaceAll = function (a, b, c) {
- b = new RegExp(goog.string.regExpEscape(b), "g");
- return a.replace(b, c.replace(/\$/g, "$$$$"))
- }
- ;
- goog.string.regExpEscape = function (a) {
- return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
- }
- ;
- goog.string.repeat = String.prototype.repeat ? function (a, b) {
- return a.repeat(b)
- }
- : function (a, b) {
- return Array(b + 1).join(a)
- }
- ;
- goog.string.padNumber = function (a, b, c) {
- a = void 0 !== c ? a.toFixed(c) : String(a);
- c = a.indexOf(".");
- -1 == c && (c = a.length);
- return goog.string.repeat("0", Math.max(0, b - c)) + a
- }
- ;
- goog.string.makeSafe = function (a) {
- return null == a ? "" : String(a)
- }
- ;
- goog.string.buildString = function (a) {
- return Array.prototype.join.call(arguments, "")
- }
- ;
- goog.string.getRandomString = function () {
- return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ goog.now()).toString(36)
- }
- ;
- goog.string.compareVersions = goog.string.internal.compareVersions;
- goog.string.hashCode = function (a) {
- for (var b = 0, c = 0; c < a.length; ++c)
- b = 31 * b + a.charCodeAt(c) >>> 0;
- return b
- }
- ;
- goog.string.uniqueStringCounter_ = 2147483648 * Math.random() | 0;
- goog.string.createUniqueString = function () {
- return "goog_" + goog.string.uniqueStringCounter_++
- }
- ;
- goog.string.toNumber = function (a) {
- var b = Number(a);
- return 0 == b && goog.string.isEmptyOrWhitespace(a) ? NaN : b
- }
- ;
- goog.string.isLowerCamelCase = function (a) {
- return /^[a-z]+([A-Z][a-z]*)*$/.test(a)
- }
- ;
- goog.string.isUpperCamelCase = function (a) {
- return /^([A-Z][a-z]*)+$/.test(a)
- }
- ;
- goog.string.toCamelCase = function (a) {
- return String(a).replace(/\-([a-z])/g, function (a, c) {
- return c.toUpperCase()
- })
- }
- ;
- goog.string.toSelectorCase = function (a) {
- return String(a).replace(/([A-Z])/g, "-$1").toLowerCase()
- }
- ;
- goog.string.toTitleCase = function (a, b) {
- var c = "string" === typeof b ? goog.string.regExpEscape(b) : "\\s";
- return a.replace(new RegExp("(^" + (c ? "|[" + c + "]+" : "") + ")([a-z])", "g"), function (a, b, c) {
- return b + c.toUpperCase()
- })
- }
- ;
- goog.string.capitalize = function (a) {
- return String(a.charAt(0)).toUpperCase() + String(a.substr(1)).toLowerCase()
- }
- ;
- goog.string.parseInt = function (a) {
- isFinite(a) && (a = String(a));
- return "string" === typeof a ? /^\s*-?0x/i.test(a) ? parseInt(a, 16) : parseInt(a, 10) : NaN
- }
- ;
- goog.string.splitLimit = function (a, b, c) {
- a = a.split(b);
- for (var d = []; 0 < c && a.length;)
- d.push(a.shift()),
- c--;
- a.length && d.push(a.join(b));
- return d
- }
- ;
- goog.string.lastComponent = function (a, b) {
- if (b)
- "string" == typeof b && (b = [b]);
- else
- return a;
- for (var c = -1, d = 0; d < b.length; d++)
- if ("" != b[d]) {
- var e = a.lastIndexOf(b[d]);
- e > c && (c = e)
- }
- return -1 == c ? a : a.slice(c + 1)
- }
- ;
- goog.string.editDistance = function (a, b) {
- var c = []
- , d = [];
- if (a == b)
- return 0;
- if (!a.length || !b.length)
- return Math.max(a.length, b.length);
- for (var e = 0; e < b.length + 1; e++)
- c[e] = e;
- for (e = 0; e < a.length; e++) {
- d[0] = e + 1;
- for (var f = 0; f < b.length; f++)
- d[f + 1] = Math.min(d[f] + 1, c[f + 1] + 1, c[f] + Number(a[e] != b[f]));
- for (f = 0; f < c.length; f++)
- c[f] = d[f]
- }
- return d[b.length]
- }
- ;
- goog.Thenable = function () { }
- ;
- goog.Thenable.prototype.then = function (a, b, c) { }
- ;
- goog.Thenable.IMPLEMENTED_BY_PROP = "$goog_Thenable";
- goog.Thenable.addImplementation = function (a) {
- COMPILED ? a.prototype[goog.Thenable.IMPLEMENTED_BY_PROP] = !0 : a.prototype.$goog_Thenable = !0
- }
- ;
- goog.Thenable.isImplementedBy = function (a) {
- if (!a)
- return !1;
- try {
- return COMPILED ? !!a[goog.Thenable.IMPLEMENTED_BY_PROP] : !!a.$goog_Thenable
- } catch (b) {
- return !1
- }
- }
- ;
- goog.async = {};
- goog.async.FreeList = function (a, b, c) {
- this.limit_ = c;
- this.create_ = a;
- this.reset_ = b;
- this.occupants_ = 0;
- this.head_ = null
- }
- ;
- goog.async.FreeList.prototype.get = function () {
- if (0 < this.occupants_) {
- this.occupants_--;
- var a = this.head_;
- this.head_ = a.next;
- a.next = null
- } else
- a = this.create_();
- return a
- }
- ;
- goog.async.FreeList.prototype.put = function (a) {
- this.reset_(a);
- this.occupants_ < this.limit_ && (this.occupants_++,
- a.next = this.head_,
- this.head_ = a)
- }
- ;
- goog.async.FreeList.prototype.occupants = function () {
- return this.occupants_
- }
- ;
- goog.async.WorkQueue = function () {
- this.workTail_ = this.workHead_ = null
- }
- ;
- goog.async.WorkQueue.DEFAULT_MAX_UNUSED = 100;
- goog.async.WorkQueue.freelist_ = new goog.async.FreeList(function () {
- return new goog.async.WorkItem
- }
- , function (a) {
- a.reset()
- }
- , goog.async.WorkQueue.DEFAULT_MAX_UNUSED);
- goog.async.WorkQueue.prototype.add = function (a, b) {
- var c = this.getUnusedItem_();
- c.set(a, b);
- this.workTail_ ? this.workTail_.next = c : (goog.asserts.assert(!this.workHead_),
- this.workHead_ = c);
- this.workTail_ = c
- }
- ;
- goog.async.WorkQueue.prototype.remove = function () {
- var a = null;
- this.workHead_ && (a = this.workHead_,
- this.workHead_ = this.workHead_.next,
- this.workHead_ || (this.workTail_ = null),
- a.next = null);
- return a
- }
- ;
- goog.async.WorkQueue.prototype.returnUnused = function (a) {
- goog.async.WorkQueue.freelist_.put(a)
- }
- ;
- goog.async.WorkQueue.prototype.getUnusedItem_ = function () {
- return goog.async.WorkQueue.freelist_.get()
- }
- ;
- goog.async.WorkItem = function () {
- this.next = this.scope = this.fn = null
- }
- ;
- goog.async.WorkItem.prototype.set = function (a, b) {
- this.fn = a;
- this.scope = b;
- this.next = null
- }
- ;
- goog.async.WorkItem.prototype.reset = function () {
- this.next = this.scope = this.fn = null
- }
- ;
- goog.debug.entryPointRegistry = {};
- goog.debug.EntryPointMonitor = function () { }
- ;
- goog.debug.entryPointRegistry.refList_ = [];
- goog.debug.entryPointRegistry.monitors_ = [];
- goog.debug.entryPointRegistry.monitorsMayExist_ = !1;
- goog.debug.entryPointRegistry.register = function (a) {
- goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length] = a;
- if (goog.debug.entryPointRegistry.monitorsMayExist_)
- for (var b = goog.debug.entryPointRegistry.monitors_, c = 0; c < b.length; c++)
- a(goog.bind(b[c].wrap, b[c]))
- }
- ;
- goog.debug.entryPointRegistry.monitorAll = function (a) {
- goog.debug.entryPointRegistry.monitorsMayExist_ = !0;
- for (var b = goog.bind(a.wrap, a), c = 0; c < goog.debug.entryPointRegistry.refList_.length; c++)
- goog.debug.entryPointRegistry.refList_[c](b);
- goog.debug.entryPointRegistry.monitors_.push(a)
- }
- ;
- goog.debug.entryPointRegistry.unmonitorAllIfPossible = function (a) {
- var b = goog.debug.entryPointRegistry.monitors_;
- goog.asserts.assert(a == b[b.length - 1], "Only the most recent monitor can be unwrapped.");
- a = goog.bind(a.unwrap, a);
- for (var c = 0; c < goog.debug.entryPointRegistry.refList_.length; c++)
- goog.debug.entryPointRegistry.refList_[c](a);
- b.length--
- }
- ;
- goog.labs.userAgent.engine = {};
- goog.labs.userAgent.engine.isPresto = function () {
- return goog.labs.userAgent.util.matchUserAgent("Presto")
- }
- ;
- goog.labs.userAgent.engine.isTrident = function () {
- return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE")
- }
- ;
- goog.labs.userAgent.engine.isEdge = function () {
- return goog.labs.userAgent.util.matchUserAgent("Edge")
- }
- ;
- goog.labs.userAgent.engine.isWebKit = function () {
- return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit") && !goog.labs.userAgent.engine.isEdge()
- }
- ;
- goog.labs.userAgent.engine.isGecko = function () {
- return goog.labs.userAgent.util.matchUserAgent("Gecko") && !goog.labs.userAgent.engine.isWebKit() && !goog.labs.userAgent.engine.isTrident() && !goog.labs.userAgent.engine.isEdge()
- }
- ;
- goog.labs.userAgent.engine.getVersion = function () {
- var a = goog.labs.userAgent.util.getUserAgent();
- if (a) {
- a = goog.labs.userAgent.util.extractVersionTuples(a);
- var b = goog.labs.userAgent.engine.getEngineTuple_(a);
- if (b)
- return "Gecko" == b[0] ? goog.labs.userAgent.engine.getVersionForKey_(a, "Firefox") : b[1];
- a = a[0];
- var c;
- if (a && (c = a[2]) && (c = /Trident\/([^\s;]+)/.exec(c)))
- return c[1]
- }
- return ""
- }
- ;
- goog.labs.userAgent.engine.getEngineTuple_ = function (a) {
- if (!goog.labs.userAgent.engine.isEdge())
- return a[1];
- for (var b = 0; b < a.length; b++) {
- var c = a[b];
- if ("Edge" == c[0])
- return c
- }
- }
- ;
- goog.labs.userAgent.engine.isVersionOrHigher = function (a) {
- return 0 <= goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(), a)
- }
- ;
- goog.labs.userAgent.engine.getVersionForKey_ = function (a, b) {
- var c = goog.array.find(a, function (a) {
- return b == a[0]
- });
- return c && c[1] || ""
- }
- ;
- goog.labs.userAgent.platform = {};
- goog.labs.userAgent.platform.isAndroid = function () {
- return goog.labs.userAgent.util.matchUserAgent("Android")
- }
- ;
- goog.labs.userAgent.platform.isIpod = function () {
- return goog.labs.userAgent.util.matchUserAgent("iPod")
- }
- ;
- goog.labs.userAgent.platform.isIphone = function () {
- return goog.labs.userAgent.util.matchUserAgent("iPhone") && !goog.labs.userAgent.util.matchUserAgent("iPod") && !goog.labs.userAgent.util.matchUserAgent("iPad")
- }
- ;
- goog.labs.userAgent.platform.isIpad = function () {
- return goog.labs.userAgent.util.matchUserAgent("iPad")
- }
- ;
- goog.labs.userAgent.platform.isIos = function () {
- return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpad() || goog.labs.userAgent.platform.isIpod()
- }
- ;
- goog.labs.userAgent.platform.isMacintosh = function () {
- return goog.labs.userAgent.util.matchUserAgent("Macintosh")
- }
- ;
- goog.labs.userAgent.platform.isLinux = function () {
- return goog.labs.userAgent.util.matchUserAgent("Linux")
- }
- ;
- goog.labs.userAgent.platform.isWindows = function () {
- return goog.labs.userAgent.util.matchUserAgent("Windows")
- }
- ;
- goog.labs.userAgent.platform.isChromeOS = function () {
- return goog.labs.userAgent.util.matchUserAgent("CrOS")
- }
- ;
- goog.labs.userAgent.platform.isChromecast = function () {
- return goog.labs.userAgent.util.matchUserAgent("CrKey")
- }
- ;
- goog.labs.userAgent.platform.isKaiOS = function () {
- return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS")
- }
- ;
- goog.labs.userAgent.platform.isGo2Phone = function () {
- return goog.labs.userAgent.util.matchUserAgentIgnoreCase("GAFP")
- }
- ;
- goog.labs.userAgent.platform.getVersion = function () {
- var a = goog.labs.userAgent.util.getUserAgent()
- , b = "";
- goog.labs.userAgent.platform.isWindows() ? (b = /Windows (?:NT|Phone) ([0-9.]+)/,
- b = (a = b.exec(a)) ? a[1] : "0.0") : goog.labs.userAgent.platform.isIos() ? (b = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/,
- b = (a = b.exec(a)) && a[1].replace(/_/g, ".")) : goog.labs.userAgent.platform.isMacintosh() ? (b = /Mac OS X ([0-9_.]+)/,
- b = (a = b.exec(a)) ? a[1].replace(/_/g, ".") : "10") : goog.labs.userAgent.platform.isKaiOS() ? (b = /(?:KaiOS)\/(\S+)/i,
- b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isAndroid() ? (b = /Android\s+([^\);]+)(\)|;)/,
- b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isChromeOS() && (b = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/,
- b = (a = b.exec(a)) && a[1]);
- return b || ""
- }
- ;
- goog.labs.userAgent.platform.isVersionOrHigher = function (a) {
- return 0 <= goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(), a)
- }
- ;
- goog.reflect = {};
- goog.reflect.object = function (a, b) {
- return b
- }
- ;
- goog.reflect.objectProperty = function (a, b) {
- return a
- }
- ;
- goog.reflect.sinkValue = function (a) {
- goog.reflect.sinkValue[" "](a);
- return a
- }
- ;
- goog.reflect.sinkValue[" "] = goog.nullFunction;
- goog.reflect.canAccessProperty = function (a, b) {
- try {
- return goog.reflect.sinkValue(a[b]),
- !0
- } catch (c) { }
- return !1
- }
- ;
- goog.reflect.cache = function (a, b, c, d) {
- d = d ? d(b) : b;
- return Object.prototype.hasOwnProperty.call(a, d) ? a[d] : a[d] = c(b)
- }
- ;
- goog.userAgent = {};
- goog.userAgent.ASSUME_IE = !1;
- goog.userAgent.ASSUME_EDGE = !1;
- goog.userAgent.ASSUME_GECKO = !1;
- goog.userAgent.ASSUME_WEBKIT = !1;
- goog.userAgent.ASSUME_MOBILE_WEBKIT = !1;
- goog.userAgent.ASSUME_OPERA = !1;
- goog.userAgent.ASSUME_ANY_VERSION = !1;
- goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA;
- goog.userAgent.getUserAgentString = function () {
- return goog.labs.userAgent.util.getUserAgent()
- }
- ;
- goog.userAgent.getNavigatorTyped = function () {
- return goog.global.navigator || null
- }
- ;
- goog.userAgent.getNavigator = function () {
- return goog.userAgent.getNavigatorTyped()
- }
- ;
- goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : goog.labs.userAgent.browser.isOpera();
- goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : goog.labs.userAgent.browser.isIE();
- goog.userAgent.EDGE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_EDGE : goog.labs.userAgent.engine.isEdge();
- goog.userAgent.EDGE_OR_IE = goog.userAgent.EDGE || goog.userAgent.IE;
- goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : goog.labs.userAgent.engine.isGecko();
- goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : goog.labs.userAgent.engine.isWebKit();
- goog.userAgent.isMobile_ = function () {
- return goog.userAgent.WEBKIT && goog.labs.userAgent.util.matchUserAgent("Mobile")
- }
- ;
- goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.isMobile_();
- goog.userAgent.SAFARI = goog.userAgent.WEBKIT;
- goog.userAgent.determinePlatform_ = function () {
- var a = goog.userAgent.getNavigatorTyped();
- return a && a.platform || ""
- }
- ;
- goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_();
- goog.userAgent.ASSUME_MAC = !1;
- goog.userAgent.ASSUME_WINDOWS = !1;
- goog.userAgent.ASSUME_LINUX = !1;
- goog.userAgent.ASSUME_X11 = !1;
- goog.userAgent.ASSUME_ANDROID = !1;
- goog.userAgent.ASSUME_IPHONE = !1;
- goog.userAgent.ASSUME_IPAD = !1;
- goog.userAgent.ASSUME_IPOD = !1;
- goog.userAgent.ASSUME_KAIOS = !1;
- goog.userAgent.ASSUME_GO2PHONE = !1;
- goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD;
- goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.labs.userAgent.platform.isMacintosh();
- goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.labs.userAgent.platform.isWindows();
- goog.userAgent.isLegacyLinux_ = function () {
- return goog.labs.userAgent.platform.isLinux() || goog.labs.userAgent.platform.isChromeOS()
- }
- ;
- goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.isLegacyLinux_();
- goog.userAgent.isX11_ = function () {
- var a = goog.userAgent.getNavigatorTyped();
- return !!a && goog.string.contains(a.appVersion || "", "X11")
- }
- ;
- goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.isX11_();
- goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.labs.userAgent.platform.isAndroid();
- goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.labs.userAgent.platform.isIphone();
- goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
- goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIpod();
- goog.userAgent.IOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIos();
- goog.userAgent.KAIOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_KAIOS : goog.labs.userAgent.platform.isKaiOS();
- goog.userAgent.GO2PHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_GO2PHONE : goog.labs.userAgent.platform.isGo2Phone();
- goog.userAgent.determineVersion_ = function () {
- var a = ""
- , b = goog.userAgent.getVersionRegexResult_();
- b && (a = b ? b[1] : "");
- return goog.userAgent.IE && (b = goog.userAgent.getDocumentMode_(),
- null != b && b > parseFloat(a)) ? String(b) : a
- }
- ;
- goog.userAgent.getVersionRegexResult_ = function () {
- var a = goog.userAgent.getUserAgentString();
- if (goog.userAgent.GECKO)
- return /rv:([^\);]+)(\)|;)/.exec(a);
- if (goog.userAgent.EDGE)
- return /Edge\/([\d\.]+)/.exec(a);
- if (goog.userAgent.IE)
- return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
- if (goog.userAgent.WEBKIT)
- return /WebKit\/(\S+)/.exec(a);
- if (goog.userAgent.OPERA)
- return /(?:Version)[ \/]?(\S+)/.exec(a)
- }
- ;
- goog.userAgent.getDocumentMode_ = function () {
- var a = goog.global.document;
- return a ? a.documentMode : void 0
- }
- ;
- goog.userAgent.VERSION = goog.userAgent.determineVersion_();
- goog.userAgent.compare = function (a, b) {
- return goog.string.compareVersions(a, b)
- }
- ;
- goog.userAgent.isVersionOrHigherCache_ = {};
- goog.userAgent.isVersionOrHigher = function (a) {
- return goog.userAgent.ASSUME_ANY_VERSION || goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_, a, function () {
- return 0 <= goog.string.compareVersions(goog.userAgent.VERSION, a)
- })
- }
- ;
- goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher;
- goog.userAgent.isDocumentModeOrHigher = function (a) {
- return Number(goog.userAgent.DOCUMENT_MODE) >= a
- }
- ;
- goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher;
- goog.userAgent.DOCUMENT_MODE = function () {
- if (goog.global.document && goog.userAgent.IE)
- return goog.userAgent.getDocumentMode_()
- }();
- goog.dom.BrowserFeature = {};
- goog.dom.BrowserFeature.ASSUME_NO_OFFSCREEN_CANVAS = !1;
- goog.dom.BrowserFeature.ASSUME_OFFSCREEN_CANVAS = !1;
- goog.dom.BrowserFeature.detectOffscreenCanvas_ = function (a) {
- try {
- return !!(new self.OffscreenCanvas(0, 0)).getContext(a)
- } catch (b) { }
- return !1
- }
- ;
- goog.dom.BrowserFeature.OFFSCREEN_CANVAS_2D = !goog.dom.BrowserFeature.ASSUME_NO_OFFSCREEN_CANVAS && (goog.dom.BrowserFeature.ASSUME_OFFSCREEN_CANVAS || goog.dom.BrowserFeature.detectOffscreenCanvas_("2d"));
- goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES = !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9);
- goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE = !goog.userAgent.GECKO && !goog.userAgent.IE || goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9) || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9.1");
- goog.dom.BrowserFeature.CAN_USE_INNER_TEXT = goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9");
- goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY = goog.userAgent.IE || goog.userAgent.OPERA || goog.userAgent.WEBKIT;
- goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT = goog.userAgent.IE;
- goog.dom.BrowserFeature.LEGACY_IE_RANGES = goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9);
- goog.math.Size = function (a, b) {
- this.width = a;
- this.height = b
- }
- ;
- goog.math.Size.equals = function (a, b) {
- return a == b ? !0 : a && b ? a.width == b.width && a.height == b.height : !1
- }
- ;
- goog.math.Size.prototype.clone = function () {
- return new goog.math.Size(this.width, this.height)
- }
- ;
- goog.DEBUG && (goog.math.Size.prototype.toString = function () {
- return "(" + this.width + " x " + this.height + ")"
- }
- );
- goog.math.Size.prototype.getLongest = function () {
- return Math.max(this.width, this.height)
- }
- ;
- goog.math.Size.prototype.getShortest = function () {
- return Math.min(this.width, this.height)
- }
- ;
- goog.math.Size.prototype.area = function () {
- return this.width * this.height
- }
- ;
- goog.math.Size.prototype.perimeter = function () {
- return 2 * (this.width + this.height)
- }
- ;
- goog.math.Size.prototype.aspectRatio = function () {
- return this.width / this.height
- }
- ;
- goog.math.Size.prototype.isEmpty = function () {
- return !this.area()
- }
- ;
- goog.math.Size.prototype.ceil = function () {
- this.width = Math.ceil(this.width);
- this.height = Math.ceil(this.height);
- return this
- }
- ;
- goog.math.Size.prototype.fitsInside = function (a) {
- return this.width <= a.width && this.height <= a.height
- }
- ;
- goog.math.Size.prototype.floor = function () {
- this.width = Math.floor(this.width);
- this.height = Math.floor(this.height);
- return this
- }
- ;
- goog.math.Size.prototype.round = function () {
- this.width = Math.round(this.width);
- this.height = Math.round(this.height);
- return this
- }
- ;
- goog.math.Size.prototype.scale = function (a, b) {
- this.width *= a;
- this.height *= "number" === typeof b ? b : a;
- return this
- }
- ;
- goog.math.Size.prototype.scaleToCover = function (a) {
- a = this.aspectRatio() <= a.aspectRatio() ? a.width / this.width : a.height / this.height;
- return this.scale(a)
- }
- ;
- goog.math.Size.prototype.scaleToFit = function (a) {
- a = this.aspectRatio() > a.aspectRatio() ? a.width / this.width : a.height / this.height;
- return this.scale(a)
- }
- ;
- goog.dom.ASSUME_QUIRKS_MODE = !1;
- goog.dom.ASSUME_STANDARDS_MODE = !1;
- goog.dom.COMPAT_MODE_KNOWN_ = goog.dom.ASSUME_QUIRKS_MODE || goog.dom.ASSUME_STANDARDS_MODE;
- goog.dom.getDomHelper = function (a) {
- return a ? new goog.dom.DomHelper(goog.dom.getOwnerDocument(a)) : goog.dom.defaultDomHelper_ || (goog.dom.defaultDomHelper_ = new goog.dom.DomHelper)
- }
- ;
- goog.dom.getDocument = function () {
- return document
- }
- ;
- goog.dom.getElement = function (a) {
- return goog.dom.getElementHelper_(document, a)
- }
- ;
- goog.dom.getElementHelper_ = function (a, b) {
- return "string" === typeof b ? a.getElementById(b) : b
- }
- ;
- goog.dom.getRequiredElement = function (a) {
- return goog.dom.getRequiredElementHelper_(document, a)
- }
- ;
- goog.dom.getRequiredElementHelper_ = function (a, b) {
- goog.asserts.assertString(b);
- var c = goog.dom.getElementHelper_(a, b);
- return c = goog.asserts.assertElement(c, "No element found with id: " + b)
- }
- ;
- goog.dom.$ = goog.dom.getElement;
- goog.dom.getElementsByTagName = function (a, b) {
- return (b || document).getElementsByTagName(String(a))
- }
- ;
- goog.dom.getElementsByTagNameAndClass = function (a, b, c) {
- return goog.dom.getElementsByTagNameAndClass_(document, a, b, c)
- }
- ;
- goog.dom.getElementByTagNameAndClass = function (a, b, c) {
- return goog.dom.getElementByTagNameAndClass_(document, a, b, c)
- }
- ;
- goog.dom.getElementsByClass = function (a, b) {
- var c = b || document;
- return goog.dom.canUseQuerySelector_(c) ? c.querySelectorAll("." + a) : goog.dom.getElementsByTagNameAndClass_(document, "*", a, b)
- }
- ;
- goog.dom.getElementByClass = function (a, b) {
- var c = b || document;
- return (c.getElementsByClassName ? c.getElementsByClassName(a)[0] : goog.dom.getElementByTagNameAndClass_(document, "*", a, b)) || null
- }
- ;
- goog.dom.getRequiredElementByClass = function (a, b) {
- var c = goog.dom.getElementByClass(a, b);
- return goog.asserts.assert(c, "No element found with className: " + a)
- }
- ;
- goog.dom.canUseQuerySelector_ = function (a) {
- return !(!a.querySelectorAll || !a.querySelector)
- }
- ;
- goog.dom.getElementsByTagNameAndClass_ = function (a, b, c, d) {
- a = d || a;
- b = b && "*" != b ? String(b).toUpperCase() : "";
- if (goog.dom.canUseQuerySelector_(a) && (b || c))
- return a.querySelectorAll(b + (c ? "." + c : ""));
- if (c && a.getElementsByClassName) {
- a = a.getElementsByClassName(c);
- if (b) {
- d = {};
- for (var e = 0, f = 0, g; g = a[f]; f++)
- b == g.nodeName && (d[e++] = g);
- d.length = e;
- return d
- }
- return a
- }
- a = a.getElementsByTagName(b || "*");
- if (c) {
- d = {};
- for (f = e = 0; g = a[f]; f++)
- b = g.className,
- "function" == typeof b.split && goog.array.contains(b.split(/\s+/), c) && (d[e++] = g);
- d.length = e;
- return d
- }
- return a
- }
- ;
- goog.dom.getElementByTagNameAndClass_ = function (a, b, c, d) {
- var e = d || a
- , f = b && "*" != b ? String(b).toUpperCase() : "";
- return goog.dom.canUseQuerySelector_(e) && (f || c) ? e.querySelector(f + (c ? "." + c : "")) : goog.dom.getElementsByTagNameAndClass_(a, b, c, d)[0] || null
- }
- ;
- goog.dom.$$ = goog.dom.getElementsByTagNameAndClass;
- goog.dom.setProperties = function (a, b) {
- goog.object.forEach(b, function (b, d) {
- b && "object" == typeof b && b.implementsGoogStringTypedString && (b = b.getTypedStringValue());
- "style" == d ? a.style.cssText = b : "class" == d ? a.className = b : "for" == d ? a.htmlFor = b : goog.dom.DIRECT_ATTRIBUTE_MAP_.hasOwnProperty(d) ? a.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[d], b) : goog.string.startsWith(d, "aria-") || goog.string.startsWith(d, "data-") ? a.setAttribute(d, b) : a[d] = b
- })
- }
- ;
- goog.dom.DIRECT_ATTRIBUTE_MAP_ = {
- cellpadding: "cellPadding",
- cellspacing: "cellSpacing",
- colspan: "colSpan",
- frameborder: "frameBorder",
- height: "height",
- maxlength: "maxLength",
- nonce: "nonce",
- role: "role",
- rowspan: "rowSpan",
- type: "type",
- usemap: "useMap",
- valign: "vAlign",
- width: "width"
- };
- goog.dom.getViewportSize = function (a) {
- return goog.dom.getViewportSize_(a || window)
- }
- ;
- goog.dom.getViewportSize_ = function (a) {
- a = a.document;
- a = goog.dom.isCss1CompatMode_(a) ? a.documentElement : a.body;
- return new goog.math.Size(a.clientWidth, a.clientHeight)
- }
- ;
- goog.dom.getDocumentHeight = function () {
- return goog.dom.getDocumentHeight_(window)
- }
- ;
- goog.dom.getDocumentHeightForWindow = function (a) {
- return goog.dom.getDocumentHeight_(a)
- }
- ;
- goog.dom.getDocumentHeight_ = function (a) {
- var b = a.document
- , c = 0;
- if (b) {
- c = b.body;
- var d = b.documentElement;
- if (!d || !c)
- return 0;
- a = goog.dom.getViewportSize_(a).height;
- if (goog.dom.isCss1CompatMode_(b) && d.scrollHeight)
- c = d.scrollHeight != a ? d.scrollHeight : d.offsetHeight;
- else {
- b = d.scrollHeight;
- var e = d.offsetHeight;
- d.clientHeight != e && (b = c.scrollHeight,
- e = c.offsetHeight);
- c = b > a ? b > e ? b : e : b < e ? b : e
- }
- }
- return c
- }
- ;
- goog.dom.getPageScroll = function (a) {
- return goog.dom.getDomHelper((a || goog.global || window).document).getDocumentScroll()
- }
- ;
- goog.dom.getDocumentScroll = function () {
- return goog.dom.getDocumentScroll_(document)
- }
- ;
- goog.dom.getDocumentScroll_ = function (a) {
- var b = goog.dom.getDocumentScrollElement_(a);
- a = goog.dom.getWindow_(a);
- return goog.userAgent.IE && goog.userAgent.isVersionOrHigher("10") && a.pageYOffset != b.scrollTop ? new goog.math.Coordinate(b.scrollLeft, b.scrollTop) : new goog.math.Coordinate(a.pageXOffset || b.scrollLeft, a.pageYOffset || b.scrollTop)
- }
- ;
- goog.dom.getDocumentScrollElement = function () {
- return goog.dom.getDocumentScrollElement_(document)
- }
- ;
- goog.dom.getDocumentScrollElement_ = function (a) {
- return a.scrollingElement ? a.scrollingElement : !goog.userAgent.WEBKIT && goog.dom.isCss1CompatMode_(a) ? a.documentElement : a.body || a.documentElement
- }
- ;
- goog.dom.getWindow = function (a) {
- return a ? goog.dom.getWindow_(a) : window
- }
- ;
- goog.dom.getWindow_ = function (a) {
- return a.parentWindow || a.defaultView
- }
- ;
- goog.dom.createDom = function (a, b, c) {
- return goog.dom.createDom_(document, arguments)
- }
- ;
- goog.dom.createDom_ = function (a, b) {
- var c = String(b[0])
- , d = b[1];
- if (!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES && d && (d.name || d.type)) {
- c = ["<", c];
- d.name && c.push(' name="', goog.string.htmlEscape(d.name), '"');
- if (d.type) {
- c.push(' type="', goog.string.htmlEscape(d.type), '"');
- var e = {};
- goog.object.extend(e, d);
- delete e.type;
- d = e
- }
- c.push(">");
- c = c.join("")
- }
- c = goog.dom.createElement_(a, c);
- d && ("string" === typeof d ? c.className = d : goog.isArray(d) ? c.className = d.join(" ") : goog.dom.setProperties(c, d));
- 2 < b.length && goog.dom.append_(a, c, b, 2);
- return c
- }
- ;
- goog.dom.append_ = function (a, b, c, d) {
- function e(c) {
- c && b.appendChild("string" === typeof c ? a.createTextNode(c) : c)
- }
- for (; d < c.length; d++) {
- var f = c[d];
- goog.isArrayLike(f) && !goog.dom.isNodeLike(f) ? goog.array.forEach(goog.dom.isNodeList(f) ? goog.array.toArray(f) : f, e) : e(f)
- }
- }
- ;
- goog.dom.$dom = goog.dom.createDom;
- goog.dom.createElement = function (a) {
- return goog.dom.createElement_(document, a)
- }
- ;
- goog.dom.createElement_ = function (a, b) {
- b = String(b);
- "application/xhtml+xml" === a.contentType && (b = b.toLowerCase());
- return a.createElement(b)
- }
- ;
- goog.dom.createTextNode = function (a) {
- return document.createTextNode(String(a))
- }
- ;
- goog.dom.createTable = function (a, b, c) {
- return goog.dom.createTable_(document, a, b, !!c)
- }
- ;
- goog.dom.createTable_ = function (a, b, c, d) {
- for (var e = goog.dom.createElement_(a, "TABLE"), f = e.appendChild(goog.dom.createElement_(a, "TBODY")), g = 0; g < b; g++) {
- for (var h = goog.dom.createElement_(a, "TR"), k = 0; k < c; k++) {
- var m = goog.dom.createElement_(a, "TD");
- d && goog.dom.setTextContent(m, goog.string.Unicode.NBSP);
- h.appendChild(m)
- }
- f.appendChild(h)
- }
- return e
- }
- ;
- goog.dom.constHtmlToNode = function (a) {
- var b = goog.array.map(arguments, goog.string.Const.unwrap);
- b = goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML string, that gets turned into a Node later, so it will be automatically balanced."), b.join(""));
- return goog.dom.safeHtmlToNode(b)
- }
- ;
- goog.dom.safeHtmlToNode = function (a) {
- return goog.dom.safeHtmlToNode_(document, a)
- }
- ;
- goog.dom.safeHtmlToNode_ = function (a, b) {
- var c = goog.dom.createElement_(a, "DIV");
- goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT ? (goog.dom.safe.setInnerHtml(c, goog.html.SafeHtml.concat(goog.html.SafeHtml.BR, b)),
- c.removeChild(goog.asserts.assert(c.firstChild))) : goog.dom.safe.setInnerHtml(c, b);
- return goog.dom.childrenToNode_(a, c)
- }
- ;
- goog.dom.childrenToNode_ = function (a, b) {
- if (1 == b.childNodes.length)
- return b.removeChild(goog.asserts.assert(b.firstChild));
- for (var c = a.createDocumentFragment(); b.firstChild;)
- c.appendChild(b.firstChild);
- return c
- }
- ;
- goog.dom.isCss1CompatMode = function () {
- return goog.dom.isCss1CompatMode_(document)
- }
- ;
- goog.dom.isCss1CompatMode_ = function (a) {
- return goog.dom.COMPAT_MODE_KNOWN_ ? goog.dom.ASSUME_STANDARDS_MODE : "CSS1Compat" == a.compatMode
- }
- ;
- goog.dom.canHaveChildren = function (a) {
- if (a.nodeType != goog.dom.NodeType.ELEMENT)
- return !1;
- switch (a.tagName) {
- case "APPLET":
- case "AREA":
- case "BASE":
- case "BR":
- case "COL":
- case "COMMAND":
- case "EMBED":
- case "FRAME":
- case "HR":
- case "IMG":
- case "INPUT":
- case "IFRAME":
- case "ISINDEX":
- case "KEYGEN":
- case "LINK":
- case "NOFRAMES":
- case "NOSCRIPT":
- case "META":
- case "OBJECT":
- case "PARAM":
- case "SCRIPT":
- case "SOURCE":
- case "STYLE":
- case "TRACK":
- case "WBR":
- return !1
- }
- return !0
- }
- ;
- goog.dom.appendChild = function (a, b) {
- goog.asserts.assert(null != a && null != b, "goog.dom.appendChild expects non-null arguments");
- a.appendChild(b)
- }
- ;
- goog.dom.append = function (a, b) {
- goog.dom.append_(goog.dom.getOwnerDocument(a), a, arguments, 1)
- }
- ;
- goog.dom.removeChildren = function (a) {
- for (var b; b = a.firstChild;)
- a.removeChild(b)
- }
- ;
- goog.dom.insertSiblingBefore = function (a, b) {
- goog.asserts.assert(null != a && null != b, "goog.dom.insertSiblingBefore expects non-null arguments");
- b.parentNode && b.parentNode.insertBefore(a, b)
- }
- ;
- goog.dom.insertSiblingAfter = function (a, b) {
- goog.asserts.assert(null != a && null != b, "goog.dom.insertSiblingAfter expects non-null arguments");
- b.parentNode && b.parentNode.insertBefore(a, b.nextSibling)
- }
- ;
- goog.dom.insertChildAt = function (a, b, c) {
- goog.asserts.assert(null != a, "goog.dom.insertChildAt expects a non-null parent");
- a.insertBefore(b, a.childNodes[c] || null)
- }
- ;
- goog.dom.removeNode = function (a) {
- return a && a.parentNode ? a.parentNode.removeChild(a) : null
- }
- ;
- goog.dom.replaceNode = function (a, b) {
- goog.asserts.assert(null != a && null != b, "goog.dom.replaceNode expects non-null arguments");
- var c = b.parentNode;
- c && c.replaceChild(a, b)
- }
- ;
- goog.dom.flattenElement = function (a) {
- var b, c = a.parentNode;
- if (c && c.nodeType != goog.dom.NodeType.DOCUMENT_FRAGMENT) {
- if (a.removeNode)
- return a.removeNode(!1);
- for (; b = a.firstChild;)
- c.insertBefore(b, a);
- return goog.dom.removeNode(a)
- }
- }
- ;
- goog.dom.getChildren = function (a) {
- return goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE && void 0 != a.children ? a.children : goog.array.filter(a.childNodes, function (a) {
- return a.nodeType == goog.dom.NodeType.ELEMENT
- })
- }
- ;
- goog.dom.getFirstElementChild = function (a) {
- return void 0 !== a.firstElementChild ? a.firstElementChild : goog.dom.getNextElementNode_(a.firstChild, !0)
- }
- ;
- goog.dom.getLastElementChild = function (a) {
- return void 0 !== a.lastElementChild ? a.lastElementChild : goog.dom.getNextElementNode_(a.lastChild, !1)
- }
- ;
- goog.dom.getNextElementSibling = function (a) {
- return void 0 !== a.nextElementSibling ? a.nextElementSibling : goog.dom.getNextElementNode_(a.nextSibling, !0)
- }
- ;
- goog.dom.getPreviousElementSibling = function (a) {
- return void 0 !== a.previousElementSibling ? a.previousElementSibling : goog.dom.getNextElementNode_(a.previousSibling, !1)
- }
- ;
- goog.dom.getNextElementNode_ = function (a, b) {
- for (; a && a.nodeType != goog.dom.NodeType.ELEMENT;)
- a = b ? a.nextSibling : a.previousSibling;
- return a
- }
- ;
- goog.dom.getNextNode = function (a) {
- if (!a)
- return null;
- if (a.firstChild)
- return a.firstChild;
- for (; a && !a.nextSibling;)
- a = a.parentNode;
- return a ? a.nextSibling : null
- }
- ;
- goog.dom.getPreviousNode = function (a) {
- if (!a)
- return null;
- if (!a.previousSibling)
- return a.parentNode;
- for (a = a.previousSibling; a && a.lastChild;)
- a = a.lastChild;
- return a
- }
- ;
- goog.dom.isNodeLike = function (a) {
- return goog.isObject(a) && 0 < a.nodeType
- }
- ;
- goog.dom.isElement = function (a) {
- return goog.isObject(a) && a.nodeType == goog.dom.NodeType.ELEMENT
- }
- ;
- goog.dom.isWindow = function (a) {
- return goog.isObject(a) && a.window == a
- }
- ;
- goog.dom.getParentElement = function (a) {
- var b;
- if (goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY && !(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("9") && !goog.userAgent.isVersionOrHigher("10") && goog.global.SVGElement && a instanceof goog.global.SVGElement) && (b = a.parentElement))
- return b;
- b = a.parentNode;
- return goog.dom.isElement(b) ? b : null
- }
- ;
- goog.dom.contains = function (a, b) {
- if (!a || !b)
- return !1;
- if (a.contains && b.nodeType == goog.dom.NodeType.ELEMENT)
- return a == b || a.contains(b);
- if ("undefined" != typeof a.compareDocumentPosition)
- return a == b || !!(a.compareDocumentPosition(b) & 16);
- for (; b && a != b;)
- b = b.parentNode;
- return b == a
- }
- ;
- goog.dom.compareNodeOrder = function (a, b) {
- if (a == b)
- return 0;
- if (a.compareDocumentPosition)
- return a.compareDocumentPosition(b) & 2 ? 1 : -1;
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) {
- if (a.nodeType == goog.dom.NodeType.DOCUMENT)
- return -1;
- if (b.nodeType == goog.dom.NodeType.DOCUMENT)
- return 1
- }
- if ("sourceIndex" in a || a.parentNode && "sourceIndex" in a.parentNode) {
- var c = a.nodeType == goog.dom.NodeType.ELEMENT
- , d = b.nodeType == goog.dom.NodeType.ELEMENT;
- if (c && d)
- return a.sourceIndex - b.sourceIndex;
- var e = a.parentNode
- , f = b.parentNode;
- return e == f ? goog.dom.compareSiblingOrder_(a, b) : !c && goog.dom.contains(e, b) ? -1 * goog.dom.compareParentsDescendantNodeIe_(a, b) : !d && goog.dom.contains(f, a) ? goog.dom.compareParentsDescendantNodeIe_(b, a) : (c ? a.sourceIndex : e.sourceIndex) - (d ? b.sourceIndex : f.sourceIndex)
- }
- d = goog.dom.getOwnerDocument(a);
- c = d.createRange();
- c.selectNode(a);
- c.collapse(!0);
- d = d.createRange();
- d.selectNode(b);
- d.collapse(!0);
- return c.compareBoundaryPoints(goog.global.Range.START_TO_END, d)
- }
- ;
- goog.dom.compareParentsDescendantNodeIe_ = function (a, b) {
- var c = a.parentNode;
- if (c == b)
- return -1;
- for (var d = b; d.parentNode != c;)
- d = d.parentNode;
- return goog.dom.compareSiblingOrder_(d, a)
- }
- ;
- goog.dom.compareSiblingOrder_ = function (a, b) {
- for (var c = b; c = c.previousSibling;)
- if (c == a)
- return -1;
- return 1
- }
- ;
- goog.dom.findCommonAncestor = function (a) {
- var b, c = arguments.length;
- if (!c)
- return null;
- if (1 == c)
- return arguments[0];
- var d = []
- , e = Infinity;
- for (b = 0; b < c; b++) {
- for (var f = [], g = arguments[b]; g;)
- f.unshift(g),
- g = g.parentNode;
- d.push(f);
- e = Math.min(e, f.length)
- }
- f = null;
- for (b = 0; b < e; b++) {
- g = d[0][b];
- for (var h = 1; h < c; h++)
- if (g != d[h][b])
- return f;
- f = g
- }
- return f
- }
- ;
- goog.dom.isInDocument = function (a) {
- return 16 == (a.ownerDocument.compareDocumentPosition(a) & 16)
- }
- ;
- goog.dom.getOwnerDocument = function (a) {
- goog.asserts.assert(a, "Node cannot be null or undefined.");
- return a.nodeType == goog.dom.NodeType.DOCUMENT ? a : a.ownerDocument || a.document
- }
- ;
- goog.dom.getFrameContentDocument = function (a) {
- return a.contentDocument || a.contentWindow.document
- }
- ;
- goog.dom.getFrameContentWindow = function (a) {
- try {
- return a.contentWindow || (a.contentDocument ? goog.dom.getWindow(a.contentDocument) : null)
- } catch (b) { }
- return null
- }
- ;
- goog.dom.setTextContent = function (a, b) {
- goog.asserts.assert(null != a, "goog.dom.setTextContent expects a non-null value for node");
- if ("textContent" in a)
- a.textContent = b;
- else if (a.nodeType == goog.dom.NodeType.TEXT)
- a.data = String(b);
- else if (a.firstChild && a.firstChild.nodeType == goog.dom.NodeType.TEXT) {
- for (; a.lastChild != a.firstChild;)
- a.removeChild(goog.asserts.assert(a.lastChild));
- a.firstChild.data = String(b)
- } else {
- goog.dom.removeChildren(a);
- var c = goog.dom.getOwnerDocument(a);
- a.appendChild(c.createTextNode(String(b)))
- }
- }
- ;
- goog.dom.getOuterHtml = function (a) {
- goog.asserts.assert(null !== a, "goog.dom.getOuterHtml expects a non-null value for element");
- if ("outerHTML" in a)
- return a.outerHTML;
- var b = goog.dom.getOwnerDocument(a);
- b = goog.dom.createElement_(b, "DIV");
- b.appendChild(a.cloneNode(!0));
- return b.innerHTML
- }
- ;
- goog.dom.findNode = function (a, b) {
- var c = [];
- return goog.dom.findNodes_(a, b, c, !0) ? c[0] : void 0
- }
- ;
- goog.dom.findNodes = function (a, b) {
- var c = [];
- goog.dom.findNodes_(a, b, c, !1);
- return c
- }
- ;
- goog.dom.findNodes_ = function (a, b, c, d) {
- if (null != a)
- for (a = a.firstChild; a;) {
- if (b(a) && (c.push(a),
- d) || goog.dom.findNodes_(a, b, c, d))
- return !0;
- a = a.nextSibling
- }
- return !1
- }
- ;
- goog.dom.findElement = function (a, b) {
- for (var c = goog.dom.getChildrenReverse_(a); 0 < c.length;) {
- var d = c.pop();
- if (b(d))
- return d;
- for (d = d.lastElementChild; d; d = d.previousElementSibling)
- c.push(d)
- }
- return null
- }
- ;
- goog.dom.findElements = function (a, b) {
- for (var c = [], d = goog.dom.getChildrenReverse_(a); 0 < d.length;) {
- var e = d.pop();
- b(e) && c.push(e);
- for (e = e.lastElementChild; e; e = e.previousElementSibling)
- d.push(e)
- }
- return c
- }
- ;
- goog.dom.getChildrenReverse_ = function (a) {
- if (a.nodeType == goog.dom.NodeType.DOCUMENT)
- return [a.documentElement];
- var b = [];
- for (a = a.lastElementChild; a; a = a.previousElementSibling)
- b.push(a);
- return b
- }
- ;
- goog.dom.TAGS_TO_IGNORE_ = {
- SCRIPT: 1,
- STYLE: 1,
- HEAD: 1,
- IFRAME: 1,
- OBJECT: 1
- };
- goog.dom.PREDEFINED_TAG_VALUES_ = {
- IMG: " ",
- BR: "\n"
- };
- goog.dom.isFocusableTabIndex = function (a) {
- return goog.dom.hasSpecifiedTabIndex_(a) && goog.dom.isTabIndexFocusable_(a)
- }
- ;
- goog.dom.setFocusableTabIndex = function (a, b) {
- b ? a.tabIndex = 0 : (a.tabIndex = -1,
- a.removeAttribute("tabIndex"))
- }
- ;
- goog.dom.isFocusable = function (a) {
- var b;
- return (b = goog.dom.nativelySupportsFocus_(a) ? !a.disabled && (!goog.dom.hasSpecifiedTabIndex_(a) || goog.dom.isTabIndexFocusable_(a)) : goog.dom.isFocusableTabIndex(a)) && goog.userAgent.IE ? goog.dom.hasNonZeroBoundingRect_(a) : b
- }
- ;
- goog.dom.hasSpecifiedTabIndex_ = function (a) {
- return goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9") ? (a = a.getAttributeNode("tabindex"),
- null != a && a.specified) : a.hasAttribute("tabindex")
- }
- ;
- goog.dom.isTabIndexFocusable_ = function (a) {
- a = a.tabIndex;
- return "number" === typeof a && 0 <= a && 32768 > a
- }
- ;
- goog.dom.nativelySupportsFocus_ = function (a) {
- return "A" == a.tagName && a.hasAttribute("href") || "INPUT" == a.tagName || "TEXTAREA" == a.tagName || "SELECT" == a.tagName || "BUTTON" == a.tagName
- }
- ;
- goog.dom.hasNonZeroBoundingRect_ = function (a) {
- a = !goog.isFunction(a.getBoundingClientRect) || goog.userAgent.IE && null == a.parentElement ? {
- height: a.offsetHeight,
- width: a.offsetWidth
- } : a.getBoundingClientRect();
- return null != a && 0 < a.height && 0 < a.width
- }
- ;
- goog.dom.getTextContent = function (a) {
- if (goog.dom.BrowserFeature.CAN_USE_INNER_TEXT && null !== a && "innerText" in a)
- a = goog.string.canonicalizeNewlines(a.innerText);
- else {
- var b = [];
- goog.dom.getTextContent_(a, b, !0);
- a = b.join("")
- }
- a = a.replace(/ \xAD /g, " ").replace(/\xAD/g, "");
- a = a.replace(/\u200B/g, "");
- goog.dom.BrowserFeature.CAN_USE_INNER_TEXT || (a = a.replace(/ +/g, " "));
- " " != a && (a = a.replace(/^\s*/, ""));
- return a
- }
- ;
- goog.dom.getRawTextContent = function (a) {
- var b = [];
- goog.dom.getTextContent_(a, b, !1);
- return b.join("")
- }
- ;
- goog.dom.getTextContent_ = function (a, b, c) {
- if (!(a.nodeName in goog.dom.TAGS_TO_IGNORE_))
- if (a.nodeType == goog.dom.NodeType.TEXT)
- c ? b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g, "")) : b.push(a.nodeValue);
- else if (a.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)
- b.push(goog.dom.PREDEFINED_TAG_VALUES_[a.nodeName]);
- else
- for (a = a.firstChild; a;)
- goog.dom.getTextContent_(a, b, c),
- a = a.nextSibling
- }
- ;
- goog.dom.getNodeTextLength = function (a) {
- return goog.dom.getTextContent(a).length
- }
- ;
- goog.dom.getNodeTextOffset = function (a, b) {
- for (var c = b || goog.dom.getOwnerDocument(a).body, d = []; a && a != c;) {
- for (var e = a; e = e.previousSibling;)
- d.unshift(goog.dom.getTextContent(e));
- a = a.parentNode
- }
- return goog.string.trimLeft(d.join("")).replace(/ +/g, " ").length
- }
- ;
- goog.dom.getNodeAtOffset = function (a, b, c) {
- a = [a];
- for (var d = 0, e = null; 0 < a.length && d < b;)
- if (e = a.pop(),
- !(e.nodeName in goog.dom.TAGS_TO_IGNORE_))
- if (e.nodeType == goog.dom.NodeType.TEXT) {
- var f = e.nodeValue.replace(/(\r\n|\r|\n)/g, "").replace(/ +/g, " ");
- d += f.length
- } else if (e.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)
- d += goog.dom.PREDEFINED_TAG_VALUES_[e.nodeName].length;
- else
- for (f = e.childNodes.length - 1; 0 <= f; f--)
- a.push(e.childNodes[f]);
- goog.isObject(c) && (c.remainder = e ? e.nodeValue.length + b - d - 1 : 0,
- c.node = e);
- return e
- }
- ;
- goog.dom.isNodeList = function (a) {
- if (a && "number" == typeof a.length) {
- if (goog.isObject(a))
- return "function" == typeof a.item || "string" == typeof a.item;
- if (goog.isFunction(a))
- return "function" == typeof a.item
- }
- return !1
- }
- ;
- goog.dom.getAncestorByTagNameAndClass = function (a, b, c, d) {
- if (!b && !c)
- return null;
- var e = b ? String(b).toUpperCase() : null;
- return goog.dom.getAncestor(a, function (a) {
- return (!e || a.nodeName == e) && (!c || "string" === typeof a.className && goog.array.contains(a.className.split(/\s+/), c))
- }, !0, d)
- }
- ;
- goog.dom.getAncestorByClass = function (a, b, c) {
- return goog.dom.getAncestorByTagNameAndClass(a, null, b, c)
- }
- ;
- goog.dom.getAncestor = function (a, b, c, d) {
- a && !c && (a = a.parentNode);
- for (c = 0; a && (null == d || c <= d);) {
- goog.asserts.assert("parentNode" != a.name);
- if (b(a))
- return a;
- a = a.parentNode;
- c++
- }
- return null
- }
- ;
- goog.dom.getActiveElement = function (a) {
- try {
- var b = a && a.activeElement;
- return b && b.nodeName ? b : null
- } catch (c) {
- return null
- }
- }
- ;
- goog.dom.getPixelRatio = function () {
- var a = goog.dom.getWindow();
- return void 0 !== a.devicePixelRatio ? a.devicePixelRatio : a.matchMedia ? goog.dom.matchesPixelRatio_(3) || goog.dom.matchesPixelRatio_(2) || goog.dom.matchesPixelRatio_(1.5) || goog.dom.matchesPixelRatio_(1) || .75 : 1
- }
- ;
- goog.dom.matchesPixelRatio_ = function (a) {
- return goog.dom.getWindow().matchMedia("(min-resolution: " + a + "dppx),(min--moz-device-pixel-ratio: " + a + "),(min-resolution: " + 96 * a + "dpi)").matches ? a : 0
- }
- ;
- goog.dom.getCanvasContext2D = function (a) {
- return a.getContext("2d")
- }
- ;
- goog.dom.DomHelper = function (a) {
- this.document_ = a || goog.global.document || document
- }
- ;
- goog.dom.DomHelper.prototype.getDomHelper = goog.dom.getDomHelper;
- goog.dom.DomHelper.prototype.setDocument = function (a) {
- this.document_ = a
- }
- ;
- goog.dom.DomHelper.prototype.getDocument = function () {
- return this.document_
- }
- ;
- goog.dom.DomHelper.prototype.getElement = function (a) {
- return goog.dom.getElementHelper_(this.document_, a)
- }
- ;
- goog.dom.DomHelper.prototype.getRequiredElement = function (a) {
- return goog.dom.getRequiredElementHelper_(this.document_, a)
- }
- ;
- goog.dom.DomHelper.prototype.$ = goog.dom.DomHelper.prototype.getElement;
- goog.dom.DomHelper.prototype.getElementsByTagName = function (a, b) {
- return (b || this.document_).getElementsByTagName(String(a))
- }
- ;
- goog.dom.DomHelper.prototype.getElementsByTagNameAndClass = function (a, b, c) {
- return goog.dom.getElementsByTagNameAndClass_(this.document_, a, b, c)
- }
- ;
- goog.dom.DomHelper.prototype.getElementByTagNameAndClass = function (a, b, c) {
- return goog.dom.getElementByTagNameAndClass_(this.document_, a, b, c)
- }
- ;
- goog.dom.DomHelper.prototype.getElementsByClass = function (a, b) {
- return goog.dom.getElementsByClass(a, b || this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.getElementByClass = function (a, b) {
- return goog.dom.getElementByClass(a, b || this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.getRequiredElementByClass = function (a, b) {
- return goog.dom.getRequiredElementByClass(a, b || this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.$$ = goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;
- goog.dom.DomHelper.prototype.setProperties = goog.dom.setProperties;
- goog.dom.DomHelper.prototype.getViewportSize = function (a) {
- return goog.dom.getViewportSize(a || this.getWindow())
- }
- ;
- goog.dom.DomHelper.prototype.getDocumentHeight = function () {
- return goog.dom.getDocumentHeight_(this.getWindow())
- }
- ;
- goog.dom.DomHelper.prototype.createDom = function (a, b, c) {
- return goog.dom.createDom_(this.document_, arguments)
- }
- ;
- goog.dom.DomHelper.prototype.$dom = goog.dom.DomHelper.prototype.createDom;
- goog.dom.DomHelper.prototype.createElement = function (a) {
- return goog.dom.createElement_(this.document_, a)
- }
- ;
- goog.dom.DomHelper.prototype.createTextNode = function (a) {
- return this.document_.createTextNode(String(a))
- }
- ;
- goog.dom.DomHelper.prototype.createTable = function (a, b, c) {
- return goog.dom.createTable_(this.document_, a, b, !!c)
- }
- ;
- goog.dom.DomHelper.prototype.safeHtmlToNode = function (a) {
- return goog.dom.safeHtmlToNode_(this.document_, a)
- }
- ;
- goog.dom.DomHelper.prototype.isCss1CompatMode = function () {
- return goog.dom.isCss1CompatMode_(this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.getWindow = function () {
- return goog.dom.getWindow_(this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.getDocumentScrollElement = function () {
- return goog.dom.getDocumentScrollElement_(this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.getDocumentScroll = function () {
- return goog.dom.getDocumentScroll_(this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.getActiveElement = function (a) {
- return goog.dom.getActiveElement(a || this.document_)
- }
- ;
- goog.dom.DomHelper.prototype.appendChild = goog.dom.appendChild;
- goog.dom.DomHelper.prototype.append = goog.dom.append;
- goog.dom.DomHelper.prototype.canHaveChildren = goog.dom.canHaveChildren;
- goog.dom.DomHelper.prototype.removeChildren = goog.dom.removeChildren;
- goog.dom.DomHelper.prototype.insertSiblingBefore = goog.dom.insertSiblingBefore;
- goog.dom.DomHelper.prototype.insertSiblingAfter = goog.dom.insertSiblingAfter;
- goog.dom.DomHelper.prototype.insertChildAt = goog.dom.insertChildAt;
- goog.dom.DomHelper.prototype.removeNode = goog.dom.removeNode;
- goog.dom.DomHelper.prototype.replaceNode = goog.dom.replaceNode;
- goog.dom.DomHelper.prototype.flattenElement = goog.dom.flattenElement;
- goog.dom.DomHelper.prototype.getChildren = goog.dom.getChildren;
- goog.dom.DomHelper.prototype.getFirstElementChild = goog.dom.getFirstElementChild;
- goog.dom.DomHelper.prototype.getLastElementChild = goog.dom.getLastElementChild;
- goog.dom.DomHelper.prototype.getNextElementSibling = goog.dom.getNextElementSibling;
- goog.dom.DomHelper.prototype.getPreviousElementSibling = goog.dom.getPreviousElementSibling;
- goog.dom.DomHelper.prototype.getNextNode = goog.dom.getNextNode;
- goog.dom.DomHelper.prototype.getPreviousNode = goog.dom.getPreviousNode;
- goog.dom.DomHelper.prototype.isNodeLike = goog.dom.isNodeLike;
- goog.dom.DomHelper.prototype.isElement = goog.dom.isElement;
- goog.dom.DomHelper.prototype.isWindow = goog.dom.isWindow;
- goog.dom.DomHelper.prototype.getParentElement = goog.dom.getParentElement;
- goog.dom.DomHelper.prototype.contains = goog.dom.contains;
- goog.dom.DomHelper.prototype.compareNodeOrder = goog.dom.compareNodeOrder;
- goog.dom.DomHelper.prototype.findCommonAncestor = goog.dom.findCommonAncestor;
- goog.dom.DomHelper.prototype.getOwnerDocument = goog.dom.getOwnerDocument;
- goog.dom.DomHelper.prototype.getFrameContentDocument = goog.dom.getFrameContentDocument;
- goog.dom.DomHelper.prototype.getFrameContentWindow = goog.dom.getFrameContentWindow;
- goog.dom.DomHelper.prototype.setTextContent = goog.dom.setTextContent;
- goog.dom.DomHelper.prototype.getOuterHtml = goog.dom.getOuterHtml;
- goog.dom.DomHelper.prototype.findNode = goog.dom.findNode;
- goog.dom.DomHelper.prototype.findNodes = goog.dom.findNodes;
- goog.dom.DomHelper.prototype.isFocusableTabIndex = goog.dom.isFocusableTabIndex;
- goog.dom.DomHelper.prototype.setFocusableTabIndex = goog.dom.setFocusableTabIndex;
- goog.dom.DomHelper.prototype.isFocusable = goog.dom.isFocusable;
- goog.dom.DomHelper.prototype.getTextContent = goog.dom.getTextContent;
- goog.dom.DomHelper.prototype.getNodeTextLength = goog.dom.getNodeTextLength;
- goog.dom.DomHelper.prototype.getNodeTextOffset = goog.dom.getNodeTextOffset;
- goog.dom.DomHelper.prototype.getNodeAtOffset = goog.dom.getNodeAtOffset;
- goog.dom.DomHelper.prototype.isNodeList = goog.dom.isNodeList;
- goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass = goog.dom.getAncestorByTagNameAndClass;
- goog.dom.DomHelper.prototype.getAncestorByClass = goog.dom.getAncestorByClass;
- goog.dom.DomHelper.prototype.getAncestor = goog.dom.getAncestor;
- goog.dom.DomHelper.prototype.getCanvasContext2D = goog.dom.getCanvasContext2D;
- goog.async.throwException = function (a) {
- goog.global.setTimeout(function () {
- throw a;
- }, 0)
- }
- ;
- goog.async.nextTick = function (a, b, c) {
- var d = a;
- b && (d = goog.bind(a, b));
- d = goog.async.nextTick.wrapCallback_(d);
- goog.isFunction(goog.global.setImmediate) && (c || goog.async.nextTick.useSetImmediate_()) ? goog.global.setImmediate(d) : (goog.async.nextTick.setImmediate_ || (goog.async.nextTick.setImmediate_ = goog.async.nextTick.getSetImmediateEmulator_()),
- goog.async.nextTick.setImmediate_(d))
- }
- ;
- goog.async.nextTick.useSetImmediate_ = function () {
- return goog.global.Window && goog.global.Window.prototype && !goog.labs.userAgent.browser.isEdge() && goog.global.Window.prototype.setImmediate == goog.global.setImmediate ? !1 : !0
- }
- ;
- goog.async.nextTick.getSetImmediateEmulator_ = function () {
- var a = goog.global.MessageChannel;
- "undefined" === typeof a && "undefined" !== typeof window && window.postMessage && window.addEventListener && !goog.labs.userAgent.engine.isPresto() && (a = function () {
- var a = goog.dom.createElement("IFRAME");
- a.style.display = "none";
- goog.dom.safe.setIframeSrc(a, goog.html.TrustedResourceUrl.fromConstant(goog.string.Const.EMPTY));
- document.documentElement.appendChild(a);
- var b = a.contentWindow;
- a = b.document;
- a.open();
- goog.dom.safe.documentWrite(a, goog.html.SafeHtml.EMPTY);
- a.close();
- var c = "callImmediate" + Math.random()
- , d = "file:" == b.location.protocol ? "*" : b.location.protocol + "//" + b.location.host;
- a = goog.bind(function (a) {
- if (("*" == d || a.origin == d) && a.data == c)
- this.port1.onmessage()
- }, this);
- b.addEventListener("message", a, !1);
- this.port1 = {};
- this.port2 = {
- postMessage: function () {
- b.postMessage(c, d)
- }
- }
- }
- );
- if ("undefined" !== typeof a && !goog.labs.userAgent.browser.isIE()) {
- var b = new a
- , c = {}
- , d = c;
- b.port1.onmessage = function () {
- if (void 0 !== c.next) {
- c = c.next;
- var a = c.cb;
- c.cb = null;
- a()
- }
- }
- ;
- return function (a) {
- d.next = {
- cb: a
- };
- d = d.next;
- b.port2.postMessage(0)
- }
- }
- return "undefined" !== typeof document && "onreadystatechange" in goog.dom.createElement("SCRIPT") ? function (a) {
- var b = goog.dom.createElement("SCRIPT");
- b.onreadystatechange = function () {
- b.onreadystatechange = null;
- b.parentNode.removeChild(b);
- b = null;
- a();
- a = null
- }
- ;
- document.documentElement.appendChild(b)
- }
- : function (a) {
- goog.global.setTimeout(a, 0)
- }
- }
- ;
- goog.async.nextTick.wrapCallback_ = goog.functions.identity;
- goog.debug.entryPointRegistry.register(function (a) {
- goog.async.nextTick.wrapCallback_ = a
- });
- goog.ASSUME_NATIVE_PROMISE = !1;
- goog.async.run = function (a, b) {
- goog.async.run.schedule_ || goog.async.run.initializeRunner_();
- goog.async.run.workQueueScheduled_ || (goog.async.run.schedule_(),
- goog.async.run.workQueueScheduled_ = !0);
- goog.async.run.workQueue_.add(a, b)
- }
- ;
- goog.async.run.initializeRunner_ = function () {
- if (goog.ASSUME_NATIVE_PROMISE || goog.global.Promise && goog.global.Promise.resolve) {
- var a = goog.global.Promise.resolve(void 0);
- goog.async.run.schedule_ = function () {
- a.then(goog.async.run.processWorkQueue)
- }
- } else
- goog.async.run.schedule_ = function () {
- goog.async.nextTick(goog.async.run.processWorkQueue)
- }
- }
- ;
- goog.async.run.forceNextTick = function (a) {
- goog.async.run.schedule_ = function () {
- goog.async.nextTick(goog.async.run.processWorkQueue);
- a && a(goog.async.run.processWorkQueue)
- }
- }
- ;
- goog.async.run.workQueueScheduled_ = !1;
- goog.async.run.workQueue_ = new goog.async.WorkQueue;
- goog.DEBUG && (goog.async.run.resetQueue = function () {
- goog.async.run.workQueueScheduled_ = !1;
- goog.async.run.workQueue_ = new goog.async.WorkQueue
- }
- );
- goog.async.run.processWorkQueue = function () {
- for (var a; a = goog.async.run.workQueue_.remove();) {
- try {
- a.fn.call(a.scope)
- } catch (b) {
- goog.async.throwException(b)
- }
- goog.async.run.workQueue_.returnUnused(a)
- }
- goog.async.run.workQueueScheduled_ = !1
- }
- ;
- goog.promise = {};
- goog.promise.Resolver = function () { }
- ;
- goog.Promise = function (a, b) {
- this.state_ = goog.Promise.State_.PENDING;
- this.result_ = void 0;
- this.callbackEntriesTail_ = this.callbackEntries_ = this.parent_ = null;
- this.executing_ = !1;
- 0 < goog.Promise.UNHANDLED_REJECTION_DELAY ? this.unhandledRejectionId_ = 0 : 0 == goog.Promise.UNHANDLED_REJECTION_DELAY && (this.hadUnhandledRejection_ = !1);
- goog.Promise.LONG_STACK_TRACES && (this.stack_ = [],
- this.addStackTrace_(Error("created")),
- this.currentStep_ = 0);
- if (a != goog.nullFunction)
- try {
- var c = this;
- a.call(b, function (a) {
- c.resolve_(goog.Promise.State_.FULFILLED, a)
- }, function (a) {
- if (goog.DEBUG && !(a instanceof goog.Promise.CancellationError))
- try {
- if (a instanceof Error)
- throw a;
- throw Error("Promise rejected.");
- } catch (e) { }
- c.resolve_(goog.Promise.State_.REJECTED, a)
- })
- } catch (d) {
- this.resolve_(goog.Promise.State_.REJECTED, d)
- }
- }
- ;
- goog.Promise.LONG_STACK_TRACES = !1;
- goog.Promise.UNHANDLED_REJECTION_DELAY = 0;
- goog.Promise.State_ = {
- PENDING: 0,
- BLOCKED: 1,
- FULFILLED: 2,
- REJECTED: 3
- };
- goog.Promise.CallbackEntry_ = function () {
- this.next = this.context = this.onRejected = this.onFulfilled = this.child = null;
- this.always = !1
- }
- ;
- goog.Promise.CallbackEntry_.prototype.reset = function () {
- this.context = this.onRejected = this.onFulfilled = this.child = null;
- this.always = !1
- }
- ;
- goog.Promise.DEFAULT_MAX_UNUSED = 100;
- goog.Promise.freelist_ = new goog.async.FreeList(function () {
- return new goog.Promise.CallbackEntry_
- }
- , function (a) {
- a.reset()
- }
- , goog.Promise.DEFAULT_MAX_UNUSED);
- goog.Promise.getCallbackEntry_ = function (a, b, c) {
- var d = goog.Promise.freelist_.get();
- d.onFulfilled = a;
- d.onRejected = b;
- d.context = c;
- return d
- }
- ;
- goog.Promise.returnEntry_ = function (a) {
- goog.Promise.freelist_.put(a)
- }
- ;
- goog.Promise.resolve = function (a) {
- if (a instanceof goog.Promise)
- return a;
- var b = new goog.Promise(goog.nullFunction);
- b.resolve_(goog.Promise.State_.FULFILLED, a);
- return b
- }
- ;
- goog.Promise.reject = function (a) {
- return new goog.Promise(function (b, c) {
- c(a)
- }
- )
- }
- ;
- goog.Promise.resolveThen_ = function (a, b, c) {
- goog.Promise.maybeThen_(a, b, c, null) || goog.async.run(goog.partial(b, a))
- }
- ;
- goog.Promise.race = function (a) {
- return new goog.Promise(function (b, c) {
- a.length || b(void 0);
- for (var d = 0, e; d < a.length; d++)
- e = a[d],
- goog.Promise.resolveThen_(e, b, c)
- }
- )
- }
- ;
- goog.Promise.all = function (a) {
- return new goog.Promise(function (b, c) {
- var d = a.length
- , e = [];
- if (d)
- for (var f = function (a, c) {
- d--;
- e[a] = c;
- 0 == d && b(e)
- }, g = function (a) {
- c(a)
- }, h = 0, k; h < a.length; h++)
- k = a[h],
- goog.Promise.resolveThen_(k, goog.partial(f, h), g);
- else
- b(e)
- }
- )
- }
- ;
- goog.Promise.allSettled = function (a) {
- return new goog.Promise(function (b, c) {
- var d = a.length
- , e = [];
- if (d)
- for (var f = function (a, c, f) {
- d--;
- e[a] = c ? {
- fulfilled: !0,
- value: f
- } : {
- fulfilled: !1,
- reason: f
- };
- 0 == d && b(e)
- }, g = 0, h; g < a.length; g++)
- h = a[g],
- goog.Promise.resolveThen_(h, goog.partial(f, g, !0), goog.partial(f, g, !1));
- else
- b(e)
- }
- )
- }
- ;
- goog.Promise.firstFulfilled = function (a) {
- return new goog.Promise(function (b, c) {
- var d = a.length
- , e = [];
- if (d)
- for (var f = function (a) {
- b(a)
- }, g = function (a, b) {
- d--;
- e[a] = b;
- 0 == d && c(e)
- }, h = 0, k; h < a.length; h++)
- k = a[h],
- goog.Promise.resolveThen_(k, f, goog.partial(g, h));
- else
- b(void 0)
- }
- )
- }
- ;
- goog.Promise.withResolver = function () {
- var a, b, c = new goog.Promise(function (c, e) {
- a = c;
- b = e
- }
- );
- return new goog.Promise.Resolver_(c, a, b)
- }
- ;
- goog.Promise.prototype.then = function (a, b, c) {
- null != a && goog.asserts.assertFunction(a, "opt_onFulfilled should be a function.");
- null != b && goog.asserts.assertFunction(b, "opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");
- goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("then"));
- return this.addChildPromise_(goog.isFunction(a) ? a : null, goog.isFunction(b) ? b : null, c)
- }
- ;
- goog.Thenable.addImplementation(goog.Promise);
- goog.Promise.prototype.thenVoid = function (a, b, c) {
- null != a && goog.asserts.assertFunction(a, "opt_onFulfilled should be a function.");
- null != b && goog.asserts.assertFunction(b, "opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");
- goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("then"));
- this.addCallbackEntry_(goog.Promise.getCallbackEntry_(a || goog.nullFunction, b || null, c))
- }
- ;
- goog.Promise.prototype.thenAlways = function (a, b) {
- goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("thenAlways"));
- var c = goog.Promise.getCallbackEntry_(a, a, b);
- c.always = !0;
- this.addCallbackEntry_(c);
- return this
- }
- ;
- goog.Promise.prototype.thenCatch = function (a, b) {
- goog.Promise.LONG_STACK_TRACES && this.addStackTrace_(Error("thenCatch"));
- return this.addChildPromise_(null, a, b)
- }
- ;
- goog.Promise.prototype.cancel = function (a) {
- if (this.state_ == goog.Promise.State_.PENDING) {
- var b = new goog.Promise.CancellationError(a);
- goog.async.run(function () {
- this.cancelInternal_(b)
- }, this)
- }
- }
- ;
- goog.Promise.prototype.cancelInternal_ = function (a) {
- this.state_ == goog.Promise.State_.PENDING && (this.parent_ ? (this.parent_.cancelChild_(this, a),
- this.parent_ = null) : this.resolve_(goog.Promise.State_.REJECTED, a))
- }
- ;
- goog.Promise.prototype.cancelChild_ = function (a, b) {
- if (this.callbackEntries_) {
- for (var c = 0, d = null, e = null, f = this.callbackEntries_; f && (f.always || (c++,
- f.child == a && (d = f),
- !(d && 1 < c))); f = f.next)
- d || (e = f);
- d && (this.state_ == goog.Promise.State_.PENDING && 1 == c ? this.cancelInternal_(b) : (e ? this.removeEntryAfter_(e) : this.popEntry_(),
- this.executeCallback_(d, goog.Promise.State_.REJECTED, b)))
- }
- }
- ;
- goog.Promise.prototype.addCallbackEntry_ = function (a) {
- this.hasEntry_() || this.state_ != goog.Promise.State_.FULFILLED && this.state_ != goog.Promise.State_.REJECTED || this.scheduleCallbacks_();
- this.queueEntry_(a)
- }
- ;
- goog.Promise.prototype.addChildPromise_ = function (a, b, c) {
- var d = goog.Promise.getCallbackEntry_(null, null, null);
- d.child = new goog.Promise(function (e, f) {
- d.onFulfilled = a ? function (b) {
- try {
- var d = a.call(c, b);
- e(d)
- } catch (k) {
- f(k)
- }
- }
- : e;
- d.onRejected = b ? function (a) {
- try {
- var d = b.call(c, a);
- void 0 === d && a instanceof goog.Promise.CancellationError ? f(a) : e(d)
- } catch (k) {
- f(k)
- }
- }
- : f
- }
- );
- d.child.parent_ = this;
- this.addCallbackEntry_(d);
- return d.child
- }
- ;
- goog.Promise.prototype.unblockAndFulfill_ = function (a) {
- goog.asserts.assert(this.state_ == goog.Promise.State_.BLOCKED);
- this.state_ = goog.Promise.State_.PENDING;
- this.resolve_(goog.Promise.State_.FULFILLED, a)
- }
- ;
- goog.Promise.prototype.unblockAndReject_ = function (a) {
- goog.asserts.assert(this.state_ == goog.Promise.State_.BLOCKED);
- this.state_ = goog.Promise.State_.PENDING;
- this.resolve_(goog.Promise.State_.REJECTED, a)
- }
- ;
- goog.Promise.prototype.resolve_ = function (a, b) {
- this.state_ == goog.Promise.State_.PENDING && (this === b && (a = goog.Promise.State_.REJECTED,
- b = new TypeError("Promise cannot resolve to itself")),
- this.state_ = goog.Promise.State_.BLOCKED,
- goog.Promise.maybeThen_(b, this.unblockAndFulfill_, this.unblockAndReject_, this) || (this.result_ = b,
- this.state_ = a,
- this.parent_ = null,
- this.scheduleCallbacks_(),
- a != goog.Promise.State_.REJECTED || b instanceof goog.Promise.CancellationError || goog.Promise.addUnhandledRejection_(this, b)))
- }
- ;
- goog.Promise.maybeThen_ = function (a, b, c, d) {
- if (a instanceof goog.Promise)
- return a.thenVoid(b, c, d),
- !0;
- if (goog.Thenable.isImplementedBy(a))
- return a.then(b, c, d),
- !0;
- if (goog.isObject(a))
- try {
- var e = a.then;
- if (goog.isFunction(e))
- return goog.Promise.tryThen_(a, e, b, c, d),
- !0
- } catch (f) {
- return c.call(d, f),
- !0
- }
- return !1
- }
- ;
- goog.Promise.tryThen_ = function (a, b, c, d, e) {
- var f = !1
- , g = function (a) {
- f || (f = !0,
- c.call(e, a))
- }
- , h = function (a) {
- f || (f = !0,
- d.call(e, a))
- };
- try {
- b.call(a, g, h)
- } catch (k) {
- h(k)
- }
- }
- ;
- goog.Promise.prototype.scheduleCallbacks_ = function () {
- this.executing_ || (this.executing_ = !0,
- goog.async.run(this.executeCallbacks_, this))
- }
- ;
- goog.Promise.prototype.hasEntry_ = function () {
- return !!this.callbackEntries_
- }
- ;
- goog.Promise.prototype.queueEntry_ = function (a) {
- goog.asserts.assert(null != a.onFulfilled);
- this.callbackEntriesTail_ ? this.callbackEntriesTail_.next = a : this.callbackEntries_ = a;
- this.callbackEntriesTail_ = a
- }
- ;
- goog.Promise.prototype.popEntry_ = function () {
- var a = null;
- this.callbackEntries_ && (a = this.callbackEntries_,
- this.callbackEntries_ = a.next,
- a.next = null);
- this.callbackEntries_ || (this.callbackEntriesTail_ = null);
- null != a && goog.asserts.assert(null != a.onFulfilled);
- return a
- }
- ;
- goog.Promise.prototype.removeEntryAfter_ = function (a) {
- goog.asserts.assert(this.callbackEntries_);
- goog.asserts.assert(null != a);
- a.next == this.callbackEntriesTail_ && (this.callbackEntriesTail_ = a);
- a.next = a.next.next
- }
- ;
- goog.Promise.prototype.executeCallbacks_ = function () {
- for (var a; a = this.popEntry_();)
- goog.Promise.LONG_STACK_TRACES && this.currentStep_++,
- this.executeCallback_(a, this.state_, this.result_);
- this.executing_ = !1
- }
- ;
- goog.Promise.prototype.executeCallback_ = function (a, b, c) {
- b == goog.Promise.State_.REJECTED && a.onRejected && !a.always && this.removeUnhandledRejection_();
- if (a.child)
- a.child.parent_ = null,
- goog.Promise.invokeCallback_(a, b, c);
- else
- try {
- a.always ? a.onFulfilled.call(a.context) : goog.Promise.invokeCallback_(a, b, c)
- } catch (d) {
- goog.Promise.handleRejection_.call(null, d)
- }
- goog.Promise.returnEntry_(a)
- }
- ;
- goog.Promise.invokeCallback_ = function (a, b, c) {
- b == goog.Promise.State_.FULFILLED ? a.onFulfilled.call(a.context, c) : a.onRejected && a.onRejected.call(a.context, c)
- }
- ;
- goog.Promise.prototype.addStackTrace_ = function (a) {
- if (goog.Promise.LONG_STACK_TRACES && "string" === typeof a.stack) {
- var b = a.stack.split("\n", 4)[3];
- a = a.message;
- a += Array(11 - a.length).join(" ");
- this.stack_.push(a + b)
- }
- }
- ;
- goog.Promise.prototype.appendLongStack_ = function (a) {
- if (goog.Promise.LONG_STACK_TRACES && a && "string" === typeof a.stack && this.stack_.length) {
- for (var b = ["Promise trace:"], c = this; c; c = c.parent_) {
- for (var d = this.currentStep_; 0 <= d; d--)
- b.push(c.stack_[d]);
- b.push("Value: [" + (c.state_ == goog.Promise.State_.REJECTED ? "REJECTED" : "FULFILLED") + "] <" + String(c.result_) + ">")
- }
- a.stack += "\n\n" + b.join("\n")
- }
- }
- ;
- goog.Promise.prototype.removeUnhandledRejection_ = function () {
- if (0 < goog.Promise.UNHANDLED_REJECTION_DELAY)
- for (var a = this; a && a.unhandledRejectionId_; a = a.parent_)
- goog.global.clearTimeout(a.unhandledRejectionId_),
- a.unhandledRejectionId_ = 0;
- else if (0 == goog.Promise.UNHANDLED_REJECTION_DELAY)
- for (a = this; a && a.hadUnhandledRejection_; a = a.parent_)
- a.hadUnhandledRejection_ = !1
- }
- ;
- goog.Promise.addUnhandledRejection_ = function (a, b) {
- 0 < goog.Promise.UNHANDLED_REJECTION_DELAY ? a.unhandledRejectionId_ = goog.global.setTimeout(function () {
- a.appendLongStack_(b);
- goog.Promise.handleRejection_.call(null, b)
- }, goog.Promise.UNHANDLED_REJECTION_DELAY) : 0 == goog.Promise.UNHANDLED_REJECTION_DELAY && (a.hadUnhandledRejection_ = !0,
- goog.async.run(function () {
- a.hadUnhandledRejection_ && (a.appendLongStack_(b),
- goog.Promise.handleRejection_.call(null, b))
- }))
- }
- ;
- goog.Promise.handleRejection_ = goog.async.throwException;
- goog.Promise.setUnhandledRejectionHandler = function (a) {
- goog.Promise.handleRejection_ = a
- }
- ;
- goog.Promise.CancellationError = function (a) {
- goog.debug.Error.call(this, a)
- }
- ;
- goog.inherits(goog.Promise.CancellationError, goog.debug.Error);
- goog.Promise.CancellationError.prototype.name = "cancel";
- goog.Promise.Resolver_ = function (a, b, c) {
- this.promise = a;
- this.resolve = b;
- this.reject = c
- }
- ;
- goog.disposable = {};
- goog.disposable.IDisposable = function () { }
- ;
- goog.disposable.IDisposable.prototype.dispose = goog.abstractMethod;
- goog.disposable.IDisposable.prototype.isDisposed = goog.abstractMethod;
- goog.Disposable = function () {
- goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF && (goog.Disposable.INCLUDE_STACK_ON_CREATION && (this.creationStack = Error().stack),
- goog.Disposable.instances_[goog.getUid(this)] = this);
- this.disposed_ = this.disposed_;
- this.onDisposeCallbacks_ = this.onDisposeCallbacks_
- }
- ;
- goog.Disposable.MonitoringMode = {
- OFF: 0,
- PERMANENT: 1,
- INTERACTIVE: 2
- };
- goog.Disposable.MONITORING_MODE = 0;
- goog.Disposable.INCLUDE_STACK_ON_CREATION = !0;
- goog.Disposable.instances_ = {};
- goog.Disposable.getUndisposedObjects = function () {
- var a = [], b;
- for (b in goog.Disposable.instances_)
- goog.Disposable.instances_.hasOwnProperty(b) && a.push(goog.Disposable.instances_[Number(b)]);
- return a
- }
- ;
- goog.Disposable.clearUndisposedObjects = function () {
- goog.Disposable.instances_ = {}
- }
- ;
- goog.Disposable.prototype.disposed_ = !1;
- goog.Disposable.prototype.isDisposed = function () {
- return this.disposed_
- }
- ;
- goog.Disposable.prototype.getDisposed = goog.Disposable.prototype.isDisposed;
- goog.Disposable.prototype.dispose = function () {
- if (!this.disposed_ && (this.disposed_ = !0,
- this.disposeInternal(),
- goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF)) {
- var a = goog.getUid(this);
- if (goog.Disposable.MONITORING_MODE == goog.Disposable.MonitoringMode.PERMANENT && !goog.Disposable.instances_.hasOwnProperty(a))
- throw Error(this + " did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");
- if (goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF && this.onDisposeCallbacks_ && 0 < this.onDisposeCallbacks_.length)
- throw Error(this + " did not empty its onDisposeCallbacks queue. This probably means it overrode dispose() or disposeInternal() without calling the superclass' method.");
- delete goog.Disposable.instances_[a]
- }
- }
- ;
- goog.Disposable.prototype.registerDisposable = function (a) {
- this.addOnDisposeCallback(goog.partial(goog.dispose, a))
- }
- ;
- goog.Disposable.prototype.addOnDisposeCallback = function (a, b) {
- this.disposed_ ? void 0 !== b ? a.call(b) : a() : (this.onDisposeCallbacks_ || (this.onDisposeCallbacks_ = []),
- this.onDisposeCallbacks_.push(void 0 !== b ? goog.bind(a, b) : a))
- }
- ;
- goog.Disposable.prototype.disposeInternal = function () {
- if (this.onDisposeCallbacks_)
- for (; this.onDisposeCallbacks_.length;)
- this.onDisposeCallbacks_.shift()()
- }
- ;
- goog.Disposable.isDisposed = function (a) {
- return a && "function" == typeof a.isDisposed ? a.isDisposed() : !1
- }
- ;
- goog.dispose = function (a) {
- a && "function" == typeof a.dispose && a.dispose()
- }
- ;
- goog.disposeAll = function (a) {
- for (var b = 0, c = arguments.length; b < c; ++b) {
- var d = arguments[b];
- goog.isArrayLike(d) ? goog.disposeAll.apply(null, d) : goog.dispose(d)
- }
- }
- ;
- goog.debug.errorcontext = {};
- goog.debug.errorcontext.addErrorContext = function (a, b, c) {
- a[goog.debug.errorcontext.CONTEXT_KEY_] || (a[goog.debug.errorcontext.CONTEXT_KEY_] = {});
- a[goog.debug.errorcontext.CONTEXT_KEY_][b] = c
- }
- ;
- goog.debug.errorcontext.getErrorContext = function (a) {
- return a[goog.debug.errorcontext.CONTEXT_KEY_] || {}
- }
- ;
- goog.debug.errorcontext.CONTEXT_KEY_ = "__closure__error__context__984382";
- goog.debug.LOGGING_ENABLED = goog.DEBUG;
- goog.debug.FORCE_SLOPPY_STACKS = !1;
- goog.debug.catchErrors = function (a, b, c) {
- c = c || goog.global;
- var d = c.onerror
- , e = !!b;
- goog.userAgent.WEBKIT && !goog.userAgent.isVersionOrHigher("535.3") && (e = !e);
- c.onerror = function (b, c, h, k, m) {
- d && d(b, c, h, k, m);
- a({
- message: b,
- fileName: c,
- line: h,
- lineNumber: h,
- col: k,
- error: m
- });
- return e
- }
- }
- ;
- goog.debug.expose = function (a, b) {
- if ("undefined" == typeof a)
- return "undefined";
- if (null == a)
- return "NULL";
- var c = [], d;
- for (d in a)
- if (b || !goog.isFunction(a[d])) {
- var e = d + " = ";
- try {
- e += a[d]
- } catch (f) {
- e += "*** " + f + " ***"
- }
- c.push(e)
- }
- return c.join("\n")
- }
- ;
- goog.debug.deepExpose = function (a, b) {
- var c = []
- , d = []
- , e = {}
- , f = function (a, g) {
- var h = g + " ";
- try {
- if (void 0 === a)
- c.push("undefined");
- else if (null === a)
- c.push("NULL");
- else if ("string" === typeof a)
- c.push('"' + a.replace(/\n/g, "\n" + g) + '"');
- else if (goog.isFunction(a))
- c.push(String(a).replace(/\n/g, "\n" + g));
- else if (goog.isObject(a)) {
- goog.hasUid(a) || d.push(a);
- var k = goog.getUid(a);
- if (e[k])
- c.push("*** reference loop detected (id=" + k + ") ***");
- else {
- e[k] = !0;
- c.push("{");
- for (var l in a)
- if (b || !goog.isFunction(a[l]))
- c.push("\n"),
- c.push(h),
- c.push(l + " = "),
- f(a[l], h);
- c.push("\n" + g + "}");
- delete e[k]
- }
- } else
- c.push(a)
- } catch (n) {
- c.push("*** " + n + " ***")
- }
- };
- f(a, "");
- for (var g = 0; g < d.length; g++)
- goog.removeUid(d[g]);
- return c.join("")
- }
- ;
- goog.debug.exposeArray = function (a) {
- for (var b = [], c = 0; c < a.length; c++)
- goog.isArray(a[c]) ? b.push(goog.debug.exposeArray(a[c])) : b.push(a[c]);
- return "[ " + b.join(", ") + " ]"
- }
- ;
- goog.debug.normalizeErrorObject = function (a) {
- var b = goog.getObjectByName("window.location.href");
- null == a && (a = 'Unknown Error of type "null/undefined"');
- if ("string" === typeof a)
- return {
- message: a,
- name: "Unknown error",
- lineNumber: "Not available",
- fileName: b,
- stack: "Not available"
- };
- var c = !1;
- try {
- var d = a.lineNumber || a.line || "Not available"
- } catch (f) {
- d = "Not available",
- c = !0
- }
- try {
- var e = a.fileName || a.filename || a.sourceURL || goog.global.$googDebugFname || b
- } catch (f) {
- e = "Not available",
- c = !0
- }
- return !c && a.lineNumber && a.fileName && a.stack && a.message && a.name ? a : (b = a.message,
- null == b && (b = a.constructor && a.constructor instanceof Function ? 'Unknown Error of type "' + (a.constructor.name ? a.constructor.name : goog.debug.getFunctionName(a.constructor)) + '"' : "Unknown Error of unknown type"),
- {
- message: b,
- name: a.name || "UnknownError",
- lineNumber: d,
- fileName: e,
- stack: a.stack || "Not available"
- })
- }
- ;
- goog.debug.enhanceError = function (a, b) {
- if (a instanceof Error)
- var c = a;
- else
- c = Error(a),
- Error.captureStackTrace && Error.captureStackTrace(c, goog.debug.enhanceError);
- c.stack || (c.stack = goog.debug.getStacktrace(goog.debug.enhanceError));
- if (b) {
- for (var d = 0; c["message" + d];)
- ++d;
- c["message" + d] = String(b)
- }
- return c
- }
- ;
- goog.debug.enhanceErrorWithContext = function (a, b) {
- var c = goog.debug.enhanceError(a);
- if (b)
- for (var d in b)
- goog.debug.errorcontext.addErrorContext(c, d, b[d]);
- return c
- }
- ;
- goog.debug.getStacktraceSimple = function (a) {
- if (!goog.debug.FORCE_SLOPPY_STACKS) {
- var b = goog.debug.getNativeStackTrace_(goog.debug.getStacktraceSimple);
- if (b)
- return b
- }
- b = [];
- for (var c = arguments.callee.caller, d = 0; c && (!a || d < a);) {
- b.push(goog.debug.getFunctionName(c));
- b.push("()\n");
- try {
- c = c.caller
- } catch (e) {
- b.push("[exception trying to get caller]\n");
- break
- }
- d++;
- if (d >= goog.debug.MAX_STACK_DEPTH) {
- b.push("[...long stack...]");
- break
- }
- }
- a && d >= a ? b.push("[...reached max depth limit...]") : b.push("[end]");
- return b.join("")
- }
- ;
- goog.debug.MAX_STACK_DEPTH = 50;
- goog.debug.getNativeStackTrace_ = function (a) {
- var b = Error();
- if (Error.captureStackTrace)
- return Error.captureStackTrace(b, a),
- String(b.stack);
- try {
- throw b;
- } catch (c) {
- b = c
- }
- return (a = b.stack) ? String(a) : null
- }
- ;
- goog.debug.getStacktrace = function (a) {
- var b;
- goog.debug.FORCE_SLOPPY_STACKS || (b = goog.debug.getNativeStackTrace_(a || goog.debug.getStacktrace));
- b || (b = goog.debug.getStacktraceHelper_(a || arguments.callee.caller, []));
- return b
- }
- ;
- goog.debug.getStacktraceHelper_ = function (a, b) {
- var c = [];
- if (goog.array.contains(b, a))
- c.push("[...circular reference...]");
- else if (a && b.length < goog.debug.MAX_STACK_DEPTH) {
- c.push(goog.debug.getFunctionName(a) + "(");
- for (var d = a.arguments, e = 0; d && e < d.length; e++) {
- 0 < e && c.push(", ");
- var f = d[e];
- switch (typeof f) {
- case "object":
- f = f ? "object" : "null";
- break;
- case "string":
- break;
- case "number":
- f = String(f);
- break;
- case "boolean":
- f = f ? "true" : "false";
- break;
- case "function":
- f = (f = goog.debug.getFunctionName(f)) ? f : "[fn]";
- break;
- default:
- f = typeof f
- }
- 40 < f.length && (f = f.substr(0, 40) + "...");
- c.push(f)
- }
- b.push(a);
- c.push(")\n");
- try {
- c.push(goog.debug.getStacktraceHelper_(a.caller, b))
- } catch (g) {
- c.push("[exception trying to get caller]\n")
- }
- } else
- a ? c.push("[...long stack...]") : c.push("[end]");
- return c.join("")
- }
- ;
- goog.debug.getFunctionName = function (a) {
- if (goog.debug.fnNameCache_[a])
- return goog.debug.fnNameCache_[a];
- a = String(a);
- if (!goog.debug.fnNameCache_[a]) {
- var b = /function\s+([^\(]+)/m.exec(a);
- goog.debug.fnNameCache_[a] = b ? b[1] : "[Anonymous]"
- }
- return goog.debug.fnNameCache_[a]
- }
- ;
- goog.debug.makeWhitespaceVisible = function (a) {
- return a.replace(/ /g, "[_]").replace(/\f/g, "[f]").replace(/\n/g, "[n]\n").replace(/\r/g, "[r]").replace(/\t/g, "[t]")
- }
- ;
- goog.debug.runtimeType = function (a) {
- return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : typeof a
- }
- ;
- goog.debug.fnNameCache_ = {};
- goog.debug.freezeInternal_ = goog.DEBUG && Object.freeze || function (a) {
- return a
- }
- ;
- goog.debug.freeze = function (a) {
- return goog.debug.freezeInternal_(a)
- }
- ;
- goog.events = {};
- $jscomp.scope.purify = function (a) {
- return {
- valueOf: a
- }.valueOf()
- }
- ;
- goog.events.BrowserFeature = {
- HAS_W3C_BUTTON: !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9),
- HAS_W3C_EVENT_SUPPORT: !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9),
- SET_KEY_CODE_TO_PREVENT_DEFAULT: goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"),
- HAS_NAVIGATOR_ONLINE_PROPERTY: !goog.userAgent.WEBKIT || goog.userAgent.isVersionOrHigher("528"),
- HAS_HTML5_NETWORK_EVENT_SUPPORT: goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9b") || goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8") || goog.userAgent.OPERA && goog.userAgent.isVersionOrHigher("9.5") || goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("528"),
- HTML5_NETWORK_EVENTS_FIRE_ON_BODY: goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher("8") || goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"),
- TOUCH_ENABLED: "ontouchstart" in goog.global || !!(goog.global.document && document.documentElement && "ontouchstart" in document.documentElement) || !(!goog.global.navigator || !goog.global.navigator.maxTouchPoints && !goog.global.navigator.msMaxTouchPoints),
- POINTER_EVENTS: "PointerEvent" in goog.global,
- MSPOINTER_EVENTS: "MSPointerEvent" in goog.global && !(!goog.global.navigator || !goog.global.navigator.msPointerEnabled),
- PASSIVE_EVENTS: (0,
- $jscomp.scope.purify)(function () {
- if (!goog.global.addEventListener || !Object.defineProperty)
- return !1;
- var a = !1
- , b = Object.defineProperty({}, "passive", {
- get: function () {
- a = !0
- }
- });
- try {
- goog.global.addEventListener("test", goog.nullFunction, b),
- goog.global.removeEventListener("test", goog.nullFunction, b)
- } catch (c) { }
- return a
- })
- };
- goog.events.EventId = function (a) {
- this.id = a
- }
- ;
- goog.events.EventId.prototype.toString = function () {
- return this.id
- }
- ;
- goog.events.Event = function (a, b) {
- this.type = a instanceof goog.events.EventId ? String(a) : a;
- this.currentTarget = this.target = b;
- this.defaultPrevented = this.propagationStopped_ = !1;
- this.returnValue_ = !0
- }
- ;
- goog.events.Event.prototype.stopPropagation = function () {
- this.propagationStopped_ = !0
- }
- ;
- goog.events.Event.prototype.preventDefault = function () {
- this.defaultPrevented = !0;
- this.returnValue_ = !1
- }
- ;
- goog.events.Event.stopPropagation = function (a) {
- a.stopPropagation()
- }
- ;
- goog.events.Event.preventDefault = function (a) {
- a.preventDefault()
- }
- ;
- goog.events.getVendorPrefixedName_ = function (a) {
- return goog.userAgent.WEBKIT ? "webkit" + a : goog.userAgent.OPERA ? "o" + a.toLowerCase() : a.toLowerCase()
- }
- ;
- goog.events.EventType = {
- CLICK: "click",
- RIGHTCLICK: "rightclick",
- DBLCLICK: "dblclick",
- AUXCLICK: "auxclick",
- MOUSEDOWN: "mousedown",
- MOUSEUP: "mouseup",
- MOUSEOVER: "mouseover",
- MOUSEOUT: "mouseout",
- MOUSEMOVE: "mousemove",
- MOUSEENTER: "mouseenter",
- MOUSELEAVE: "mouseleave",
- MOUSECANCEL: "mousecancel",
- SELECTIONCHANGE: "selectionchange",
- SELECTSTART: "selectstart",
- WHEEL: "wheel",
- KEYPRESS: "keypress",
- KEYDOWN: "keydown",
- KEYUP: "keyup",
- BLUR: "blur",
- FOCUS: "focus",
- DEACTIVATE: "deactivate",
- FOCUSIN: "focusin",
- FOCUSOUT: "focusout",
- CHANGE: "change",
- RESET: "reset",
- SELECT: "select",
- SUBMIT: "submit",
- INPUT: "input",
- PROPERTYCHANGE: "propertychange",
- DRAGSTART: "dragstart",
- DRAG: "drag",
- DRAGENTER: "dragenter",
- DRAGOVER: "dragover",
- DRAGLEAVE: "dragleave",
- DROP: "drop",
- DRAGEND: "dragend",
- TOUCHSTART: "touchstart",
- TOUCHMOVE: "touchmove",
- TOUCHEND: "touchend",
- TOUCHCANCEL: "touchcancel",
- BEFOREUNLOAD: "beforeunload",
- CONSOLEMESSAGE: "consolemessage",
- CONTEXTMENU: "contextmenu",
- DEVICECHANGE: "devicechange",
- DEVICEMOTION: "devicemotion",
- DEVICEORIENTATION: "deviceorientation",
- DOMCONTENTLOADED: "DOMContentLoaded",
- ERROR: "error",
- HELP: "help",
- LOAD: "load",
- LOSECAPTURE: "losecapture",
- ORIENTATIONCHANGE: "orientationchange",
- READYSTATECHANGE: "readystatechange",
- RESIZE: "resize",
- SCROLL: "scroll",
- UNLOAD: "unload",
- CANPLAY: "canplay",
- CANPLAYTHROUGH: "canplaythrough",
- DURATIONCHANGE: "durationchange",
- EMPTIED: "emptied",
- ENDED: "ended",
- LOADEDDATA: "loadeddata",
- LOADEDMETADATA: "loadedmetadata",
- PAUSE: "pause",
- PLAY: "play",
- PLAYING: "playing",
- PROGRESS: "progress",
- RATECHANGE: "ratechange",
- SEEKED: "seeked",
- SEEKING: "seeking",
- STALLED: "stalled",
- SUSPEND: "suspend",
- TIMEUPDATE: "timeupdate",
- VOLUMECHANGE: "volumechange",
- WAITING: "waiting",
- SOURCEOPEN: "sourceopen",
- SOURCEENDED: "sourceended",
- SOURCECLOSED: "sourceclosed",
- ABORT: "abort",
- UPDATE: "update",
- UPDATESTART: "updatestart",
- UPDATEEND: "updateend",
- HASHCHANGE: "hashchange",
- PAGEHIDE: "pagehide",
- PAGESHOW: "pageshow",
- POPSTATE: "popstate",
- COPY: "copy",
- PASTE: "paste",
- CUT: "cut",
- BEFORECOPY: "beforecopy",
- BEFORECUT: "beforecut",
- BEFOREPASTE: "beforepaste",
- ONLINE: "online",
- OFFLINE: "offline",
- MESSAGE: "message",
- CONNECT: "connect",
- INSTALL: "install",
- ACTIVATE: "activate",
- FETCH: "fetch",
- FOREIGNFETCH: "foreignfetch",
- MESSAGEERROR: "messageerror",
- STATECHANGE: "statechange",
- UPDATEFOUND: "updatefound",
- CONTROLLERCHANGE: "controllerchange",
- ANIMATIONSTART: goog.events.getVendorPrefixedName_("AnimationStart"),
- ANIMATIONEND: goog.events.getVendorPrefixedName_("AnimationEnd"),
- ANIMATIONITERATION: goog.events.getVendorPrefixedName_("AnimationIteration"),
- TRANSITIONEND: goog.events.getVendorPrefixedName_("TransitionEnd"),
- POINTERDOWN: "pointerdown",
- POINTERUP: "pointerup",
- POINTERCANCEL: "pointercancel",
- POINTERMOVE: "pointermove",
- POINTEROVER: "pointerover",
- POINTEROUT: "pointerout",
- POINTERENTER: "pointerenter",
- POINTERLEAVE: "pointerleave",
- GOTPOINTERCAPTURE: "gotpointercapture",
- LOSTPOINTERCAPTURE: "lostpointercapture",
- MSGESTURECHANGE: "MSGestureChange",
- MSGESTUREEND: "MSGestureEnd",
- MSGESTUREHOLD: "MSGestureHold",
- MSGESTURESTART: "MSGestureStart",
- MSGESTURETAP: "MSGestureTap",
- MSGOTPOINTERCAPTURE: "MSGotPointerCapture",
- MSINERTIASTART: "MSInertiaStart",
- MSLOSTPOINTERCAPTURE: "MSLostPointerCapture",
- MSPOINTERCANCEL: "MSPointerCancel",
- MSPOINTERDOWN: "MSPointerDown",
- MSPOINTERENTER: "MSPointerEnter",
- MSPOINTERHOVER: "MSPointerHover",
- MSPOINTERLEAVE: "MSPointerLeave",
- MSPOINTERMOVE: "MSPointerMove",
- MSPOINTEROUT: "MSPointerOut",
- MSPOINTEROVER: "MSPointerOver",
- MSPOINTERUP: "MSPointerUp",
- TEXT: "text",
- TEXTINPUT: goog.userAgent.IE ? "textinput" : "textInput",
- COMPOSITIONSTART: "compositionstart",
- COMPOSITIONUPDATE: "compositionupdate",
- COMPOSITIONEND: "compositionend",
- BEFOREINPUT: "beforeinput",
- EXIT: "exit",
- LOADABORT: "loadabort",
- LOADCOMMIT: "loadcommit",
- LOADREDIRECT: "loadredirect",
- LOADSTART: "loadstart",
- LOADSTOP: "loadstop",
- RESPONSIVE: "responsive",
- SIZECHANGED: "sizechanged",
- UNRESPONSIVE: "unresponsive",
- VISIBILITYCHANGE: "visibilitychange",
- STORAGE: "storage",
- DOMSUBTREEMODIFIED: "DOMSubtreeModified",
- DOMNODEINSERTED: "DOMNodeInserted",
- DOMNODEREMOVED: "DOMNodeRemoved",
- DOMNODEREMOVEDFROMDOCUMENT: "DOMNodeRemovedFromDocument",
- DOMNODEINSERTEDINTODOCUMENT: "DOMNodeInsertedIntoDocument",
- DOMATTRMODIFIED: "DOMAttrModified",
- DOMCHARACTERDATAMODIFIED: "DOMCharacterDataModified",
- BEFOREPRINT: "beforeprint",
- AFTERPRINT: "afterprint",
- BEFOREINSTALLPROMPT: "beforeinstallprompt",
- APPINSTALLED: "appinstalled"
- };
- goog.events.getPointerFallbackEventName_ = function (a, b, c) {
- return goog.events.BrowserFeature.POINTER_EVENTS ? a : goog.events.BrowserFeature.MSPOINTER_EVENTS ? b : c
- }
- ;
- goog.events.PointerFallbackEventType = {
- POINTERDOWN: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERDOWN, goog.events.EventType.MSPOINTERDOWN, goog.events.EventType.MOUSEDOWN),
- POINTERUP: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERUP, goog.events.EventType.MSPOINTERUP, goog.events.EventType.MOUSEUP),
- POINTERCANCEL: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERCANCEL, goog.events.EventType.MSPOINTERCANCEL, goog.events.EventType.MOUSECANCEL),
- POINTERMOVE: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERMOVE, goog.events.EventType.MSPOINTERMOVE, goog.events.EventType.MOUSEMOVE),
- POINTEROVER: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTEROVER, goog.events.EventType.MSPOINTEROVER, goog.events.EventType.MOUSEOVER),
- POINTEROUT: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTEROUT, goog.events.EventType.MSPOINTEROUT, goog.events.EventType.MOUSEOUT),
- POINTERENTER: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERENTER, goog.events.EventType.MSPOINTERENTER, goog.events.EventType.MOUSEENTER),
- POINTERLEAVE: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERLEAVE, goog.events.EventType.MSPOINTERLEAVE, goog.events.EventType.MOUSELEAVE)
- };
- goog.events.PointerTouchFallbackEventType = {
- POINTERDOWN: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERDOWN, goog.events.EventType.MSPOINTERDOWN, goog.events.EventType.TOUCHSTART),
- POINTERUP: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERUP, goog.events.EventType.MSPOINTERUP, goog.events.EventType.TOUCHEND),
- POINTERCANCEL: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERCANCEL, goog.events.EventType.MSPOINTERCANCEL, goog.events.EventType.TOUCHCANCEL),
- POINTERMOVE: goog.events.getPointerFallbackEventName_(goog.events.EventType.POINTERMOVE, goog.events.EventType.MSPOINTERMOVE, goog.events.EventType.TOUCHMOVE)
- };
- goog.events.PointerAsMouseEventType = {
- MOUSEDOWN: goog.events.PointerFallbackEventType.POINTERDOWN,
- MOUSEUP: goog.events.PointerFallbackEventType.POINTERUP,
- MOUSECANCEL: goog.events.PointerFallbackEventType.POINTERCANCEL,
- MOUSEMOVE: goog.events.PointerFallbackEventType.POINTERMOVE,
- MOUSEOVER: goog.events.PointerFallbackEventType.POINTEROVER,
- MOUSEOUT: goog.events.PointerFallbackEventType.POINTEROUT,
- MOUSEENTER: goog.events.PointerFallbackEventType.POINTERENTER,
- MOUSELEAVE: goog.events.PointerFallbackEventType.POINTERLEAVE
- };
- goog.events.MouseAsMouseEventType = {
- MOUSEDOWN: goog.events.EventType.MOUSEDOWN,
- MOUSEUP: goog.events.EventType.MOUSEUP,
- MOUSECANCEL: goog.events.EventType.MOUSECANCEL,
- MOUSEMOVE: goog.events.EventType.MOUSEMOVE,
- MOUSEOVER: goog.events.EventType.MOUSEOVER,
- MOUSEOUT: goog.events.EventType.MOUSEOUT,
- MOUSEENTER: goog.events.EventType.MOUSEENTER,
- MOUSELEAVE: goog.events.EventType.MOUSELEAVE
- };
- goog.events.PointerAsTouchEventType = {
- TOUCHCANCEL: goog.events.PointerTouchFallbackEventType.POINTERCANCEL,
- TOUCHEND: goog.events.PointerTouchFallbackEventType.POINTERUP,
- TOUCHMOVE: goog.events.PointerTouchFallbackEventType.POINTERMOVE,
- TOUCHSTART: goog.events.PointerTouchFallbackEventType.POINTERDOWN
- };
- goog.events.USE_LAYER_XY_AS_OFFSET_XY = !1;
- goog.events.BrowserEvent = function (a, b) {
- goog.events.Event.call(this, a ? a.type : "");
- this.relatedTarget = this.currentTarget = this.target = null;
- this.button = this.screenY = this.screenX = this.clientY = this.clientX = this.offsetY = this.offsetX = 0;
- this.key = "";
- this.charCode = this.keyCode = 0;
- this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1;
- this.state = null;
- this.platformModifierKey = !1;
- this.pointerId = 0;
- this.pointerType = "";
- this.event_ = null;
- a && this.init(a, b)
- }
- ;
- goog.inherits(goog.events.BrowserEvent, goog.events.Event);
- goog.events.BrowserEvent.MouseButton = {
- LEFT: 0,
- MIDDLE: 1,
- RIGHT: 2
- };
- goog.events.BrowserEvent.PointerType = {
- MOUSE: "mouse",
- PEN: "pen",
- TOUCH: "touch"
- };
- goog.events.BrowserEvent.IEButtonMap = goog.debug.freeze([1, 4, 2]);
- goog.events.BrowserEvent.IE_BUTTON_MAP = goog.events.BrowserEvent.IEButtonMap;
- goog.events.BrowserEvent.IE_POINTER_TYPE_MAP = goog.debug.freeze({
- 2: goog.events.BrowserEvent.PointerType.TOUCH,
- 3: goog.events.BrowserEvent.PointerType.PEN,
- 4: goog.events.BrowserEvent.PointerType.MOUSE
- });
- goog.events.BrowserEvent.prototype.init = function (a, b) {
- var c = this.type = a.type
- , d = a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : null;
- this.target = a.target || a.srcElement;
- this.currentTarget = b;
- var e = a.relatedTarget;
- e ? goog.userAgent.GECKO && (goog.reflect.canAccessProperty(e, "nodeName") || (e = null)) : c == goog.events.EventType.MOUSEOVER ? e = a.fromElement : c == goog.events.EventType.MOUSEOUT && (e = a.toElement);
- this.relatedTarget = e;
- d ? (this.clientX = void 0 !== d.clientX ? d.clientX : d.pageX,
- this.clientY = void 0 !== d.clientY ? d.clientY : d.pageY,
- this.screenX = d.screenX || 0,
- this.screenY = d.screenY || 0) : (goog.events.USE_LAYER_XY_AS_OFFSET_XY ? (this.offsetX = void 0 !== a.layerX ? a.layerX : a.offsetX,
- this.offsetY = void 0 !== a.layerY ? a.layerY : a.offsetY) : (this.offsetX = goog.userAgent.WEBKIT || void 0 !== a.offsetX ? a.offsetX : a.layerX,
- this.offsetY = goog.userAgent.WEBKIT || void 0 !== a.offsetY ? a.offsetY : a.layerY),
- this.clientX = void 0 !== a.clientX ? a.clientX : a.pageX,
- this.clientY = void 0 !== a.clientY ? a.clientY : a.pageY,
- this.screenX = a.screenX || 0,
- this.screenY = a.screenY || 0);
- this.button = a.button;
- this.keyCode = a.keyCode || 0;
- this.key = a.key || "";
- this.charCode = a.charCode || ("keypress" == c ? a.keyCode : 0);
- this.ctrlKey = a.ctrlKey;
- this.altKey = a.altKey;
- this.shiftKey = a.shiftKey;
- this.metaKey = a.metaKey;
- this.platformModifierKey = goog.userAgent.MAC ? a.metaKey : a.ctrlKey;
- this.pointerId = a.pointerId || 0;
- this.pointerType = goog.events.BrowserEvent.getPointerType_(a);
- this.state = a.state;
- this.event_ = a;
- a.defaultPrevented && this.preventDefault()
- }
- ;
- goog.events.BrowserEvent.prototype.isButton = function (a) {
- return goog.events.BrowserFeature.HAS_W3C_BUTTON ? this.event_.button == a : "click" == this.type ? a == goog.events.BrowserEvent.MouseButton.LEFT : !!(this.event_.button & goog.events.BrowserEvent.IE_BUTTON_MAP[a])
- }
- ;
- goog.events.BrowserEvent.prototype.isMouseActionButton = function () {
- return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT) && !(goog.userAgent.WEBKIT && goog.userAgent.MAC && this.ctrlKey)
- }
- ;
- goog.events.BrowserEvent.prototype.stopPropagation = function () {
- goog.events.BrowserEvent.superClass_.stopPropagation.call(this);
- this.event_.stopPropagation ? this.event_.stopPropagation() : this.event_.cancelBubble = !0
- }
- ;
- goog.events.BrowserEvent.prototype.preventDefault = function () {
- goog.events.BrowserEvent.superClass_.preventDefault.call(this);
- var a = this.event_;
- if (a.preventDefault)
- a.preventDefault();
- else if (a.returnValue = !1,
- goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT)
- try {
- if (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode)
- a.keyCode = -1
- } catch (b) { }
- }
- ;
- goog.events.BrowserEvent.prototype.getBrowserEvent = function () {
- return this.event_
- }
- ;
- goog.events.BrowserEvent.getPointerType_ = function (a) {
- return "string" === typeof a.pointerType ? a.pointerType : goog.events.BrowserEvent.IE_POINTER_TYPE_MAP[a.pointerType] || ""
- }
- ;
- goog.events.Listenable = function () { }
- ;
- goog.events.Listenable.IMPLEMENTED_BY_PROP = "closure_listenable_" + (1E6 * Math.random() | 0);
- goog.events.Listenable.addImplementation = function (a) {
- a.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP] = !0
- }
- ;
- goog.events.Listenable.isImplementedBy = function (a) {
- return !(!a || !a[goog.events.Listenable.IMPLEMENTED_BY_PROP])
- }
- ;
- goog.events.ListenableKey = function () { }
- ;
- goog.events.ListenableKey.counter_ = 0;
- goog.events.ListenableKey.reserveKey = function () {
- return ++goog.events.ListenableKey.counter_
- }
- ;
- goog.events.Listener = function (a, b, c, d, e, f) {
- goog.events.Listener.ENABLE_MONITORING && (this.creationStack = Error().stack);
- this.listener = a;
- this.proxy = b;
- this.src = c;
- this.type = d;
- this.capture = !!e;
- this.handler = f;
- this.key = goog.events.ListenableKey.reserveKey();
- this.removed = this.callOnce = !1
- }
- ;
- goog.events.Listener.ENABLE_MONITORING = !1;
- goog.events.Listener.prototype.markAsRemoved = function () {
- this.removed = !0;
- this.handler = this.src = this.proxy = this.listener = null
- }
- ;
- goog.events.ListenerMap = function (a) {
- this.src = a;
- this.listeners = {};
- this.typeCount_ = 0
- }
- ;
- goog.events.ListenerMap.prototype.getTypeCount = function () {
- return this.typeCount_
- }
- ;
- goog.events.ListenerMap.prototype.getListenerCount = function () {
- var a = 0, b;
- for (b in this.listeners)
- a += this.listeners[b].length;
- return a
- }
- ;
- goog.events.ListenerMap.prototype.add = function (a, b, c, d, e) {
- var f = a.toString();
- a = this.listeners[f];
- a || (a = this.listeners[f] = [],
- this.typeCount_++);
- var g = goog.events.ListenerMap.findListenerIndex_(a, b, d, e);
- -1 < g ? (b = a[g],
- c || (b.callOnce = !1)) : (b = new goog.events.Listener(b, null, this.src, f, !!d, e),
- b.callOnce = c,
- a.push(b));
- return b
- }
- ;
- goog.events.ListenerMap.prototype.remove = function (a, b, c, d) {
- a = a.toString();
- if (!(a in this.listeners))
- return !1;
- var e = this.listeners[a];
- b = goog.events.ListenerMap.findListenerIndex_(e, b, c, d);
- return -1 < b ? (e[b].markAsRemoved(),
- goog.array.removeAt(e, b),
- 0 == e.length && (delete this.listeners[a],
- this.typeCount_--),
- !0) : !1
- }
- ;
- goog.events.ListenerMap.prototype.removeByKey = function (a) {
- var b = a.type;
- if (!(b in this.listeners))
- return !1;
- var c = goog.array.remove(this.listeners[b], a);
- c && (a.markAsRemoved(),
- 0 == this.listeners[b].length && (delete this.listeners[b],
- this.typeCount_--));
- return c
- }
- ;
- goog.events.ListenerMap.prototype.removeAll = function (a) {
- a = a && a.toString();
- var b = 0, c;
- for (c in this.listeners)
- if (!a || c == a) {
- for (var d = this.listeners[c], e = 0; e < d.length; e++)
- ++b,
- d[e].markAsRemoved();
- delete this.listeners[c];
- this.typeCount_--
- }
- return b
- }
- ;
- goog.events.ListenerMap.prototype.getListeners = function (a, b) {
- var c = this.listeners[a.toString()]
- , d = [];
- if (c)
- for (var e = 0; e < c.length; ++e) {
- var f = c[e];
- f.capture == b && d.push(f)
- }
- return d
- }
- ;
- goog.events.ListenerMap.prototype.getListener = function (a, b, c, d) {
- a = this.listeners[a.toString()];
- var e = -1;
- a && (e = goog.events.ListenerMap.findListenerIndex_(a, b, c, d));
- return -1 < e ? a[e] : null
- }
- ;
- goog.events.ListenerMap.prototype.hasListener = function (a, b) {
- var c = void 0 !== a
- , d = c ? a.toString() : ""
- , e = void 0 !== b;
- return goog.object.some(this.listeners, function (a, g) {
- for (var f = 0; f < a.length; ++f)
- if (!(c && a[f].type != d || e && a[f].capture != b))
- return !0;
- return !1
- })
- }
- ;
- goog.events.ListenerMap.findListenerIndex_ = function (a, b, c, d) {
- for (var e = 0; e < a.length; ++e) {
- var f = a[e];
- if (!f.removed && f.listener == b && f.capture == !!c && f.handler == d)
- return e
- }
- return -1
- }
- ;
- goog.events.LISTENER_MAP_PROP_ = "closure_lm_" + (1E6 * Math.random() | 0);
- goog.events.onString_ = "on";
- goog.events.onStringMap_ = {};
- goog.events.CaptureSimulationMode = {
- OFF_AND_FAIL: 0,
- OFF_AND_SILENT: 1,
- ON: 2
- };
- goog.events.CAPTURE_SIMULATION_MODE = 2;
- goog.events.listenerCountEstimate_ = 0;
- goog.events.listen = function (a, b, c, d, e) {
- if (d && d.once)
- return goog.events.listenOnce(a, b, c, d, e);
- if (goog.isArray(b)) {
- for (var f = 0; f < b.length; f++)
- goog.events.listen(a, b[f], c, d, e);
- return null
- }
- c = goog.events.wrapListener(c);
- return goog.events.Listenable.isImplementedBy(a) ? (d = goog.isObject(d) ? !!d.capture : !!d,
- a.listen(b, c, d, e)) : goog.events.listen_(a, b, c, !1, d, e)
- }
- ;
- goog.events.listen_ = function (a, b, c, d, e, f) {
- if (!b)
- throw Error("Invalid event type");
- var g = goog.isObject(e) ? !!e.capture : !!e;
- if (g && !goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT) {
- if (goog.events.CAPTURE_SIMULATION_MODE == goog.events.CaptureSimulationMode.OFF_AND_FAIL)
- return goog.asserts.fail("Can not register capture listener in IE8-."),
- null;
- if (goog.events.CAPTURE_SIMULATION_MODE == goog.events.CaptureSimulationMode.OFF_AND_SILENT)
- return null
- }
- var h = goog.events.getListenerMap_(a);
- h || (a[goog.events.LISTENER_MAP_PROP_] = h = new goog.events.ListenerMap(a));
- c = h.add(b, c, d, g, f);
- if (c.proxy)
- return c;
- d = goog.events.getProxy();
- c.proxy = d;
- d.src = a;
- d.listener = c;
- if (a.addEventListener)
- goog.events.BrowserFeature.PASSIVE_EVENTS || (e = g),
- void 0 === e && (e = !1),
- a.addEventListener(b.toString(), d, e);
- else if (a.attachEvent)
- a.attachEvent(goog.events.getOnString_(b.toString()), d);
- else if (a.addListener && a.removeListener)
- goog.asserts.assert("change" === b, "MediaQueryList only has a change event"),
- a.addListener(d);
- else
- throw Error("addEventListener and attachEvent are unavailable.");
- goog.events.listenerCountEstimate_++;
- return c
- }
- ;
- goog.events.getProxy = function () {
- var a = goog.events.handleBrowserEvent_
- , b = goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT ? function (c) {
- return a.call(b.src, b.listener, c)
- }
- : function (c) {
- c = a.call(b.src, b.listener, c);
- if (!c)
- return c
- }
- ;
- return b
- }
- ;
- goog.events.listenOnce = function (a, b, c, d, e) {
- if (goog.isArray(b)) {
- for (var f = 0; f < b.length; f++)
- goog.events.listenOnce(a, b[f], c, d, e);
- return null
- }
- c = goog.events.wrapListener(c);
- return goog.events.Listenable.isImplementedBy(a) ? (d = goog.isObject(d) ? !!d.capture : !!d,
- a.listenOnce(b, c, d, e)) : goog.events.listen_(a, b, c, !0, d, e)
- }
- ;
- goog.events.listenWithWrapper = function (a, b, c, d, e) {
- b.listen(a, c, d, e)
- }
- ;
- goog.events.unlisten = function (a, b, c, d, e) {
- if (goog.isArray(b)) {
- for (var f = 0; f < b.length; f++)
- goog.events.unlisten(a, b[f], c, d, e);
- return null
- }
- d = goog.isObject(d) ? !!d.capture : !!d;
- c = goog.events.wrapListener(c);
- if (goog.events.Listenable.isImplementedBy(a))
- return a.unlisten(b, c, d, e);
- if (!a)
- return !1;
- if (a = goog.events.getListenerMap_(a))
- if (b = a.getListener(b, c, d, e))
- return goog.events.unlistenByKey(b);
- return !1
- }
- ;
- goog.events.unlistenByKey = function (a) {
- if ("number" === typeof a || !a || a.removed)
- return !1;
- var b = a.src;
- if (goog.events.Listenable.isImplementedBy(b))
- return b.unlistenByKey(a);
- var c = a.type
- , d = a.proxy;
- b.removeEventListener ? b.removeEventListener(c, d, a.capture) : b.detachEvent ? b.detachEvent(goog.events.getOnString_(c), d) : b.addListener && b.removeListener && b.removeListener(d);
- goog.events.listenerCountEstimate_--;
- (c = goog.events.getListenerMap_(b)) ? (c.removeByKey(a),
- 0 == c.getTypeCount() && (c.src = null,
- b[goog.events.LISTENER_MAP_PROP_] = null)) : a.markAsRemoved();
- return !0
- }
- ;
- goog.events.unlistenWithWrapper = function (a, b, c, d, e) {
- b.unlisten(a, c, d, e)
- }
- ;
- goog.events.removeAll = function (a, b) {
- if (!a)
- return 0;
- if (goog.events.Listenable.isImplementedBy(a))
- return a.removeAllListeners(b);
- var c = goog.events.getListenerMap_(a);
- if (!c)
- return 0;
- var d = 0, e = b && b.toString(), f;
- for (f in c.listeners)
- if (!e || f == e)
- for (var g = c.listeners[f].concat(), h = 0; h < g.length; ++h)
- goog.events.unlistenByKey(g[h]) && ++d;
- return d
- }
- ;
- goog.events.getListeners = function (a, b, c) {
- return goog.events.Listenable.isImplementedBy(a) ? a.getListeners(b, c) : a ? (a = goog.events.getListenerMap_(a)) ? a.getListeners(b, c) : [] : []
- }
- ;
- goog.events.getListener = function (a, b, c, d, e) {
- c = goog.events.wrapListener(c);
- d = !!d;
- return goog.events.Listenable.isImplementedBy(a) ? a.getListener(b, c, d, e) : a ? (a = goog.events.getListenerMap_(a)) ? a.getListener(b, c, d, e) : null : null
- }
- ;
- goog.events.hasListener = function (a, b, c) {
- if (goog.events.Listenable.isImplementedBy(a))
- return a.hasListener(b, c);
- a = goog.events.getListenerMap_(a);
- return !!a && a.hasListener(b, c)
- }
- ;
- goog.events.expose = function (a) {
- var b = [], c;
- for (c in a)
- a[c] && a[c].id ? b.push(c + " = " + a[c] + " (" + a[c].id + ")") : b.push(c + " = " + a[c]);
- return b.join("\n")
- }
- ;
- goog.events.getOnString_ = function (a) {
- return a in goog.events.onStringMap_ ? goog.events.onStringMap_[a] : goog.events.onStringMap_[a] = goog.events.onString_ + a
- }
- ;
- goog.events.fireListeners = function (a, b, c, d) {
- return goog.events.Listenable.isImplementedBy(a) ? a.fireListeners(b, c, d) : goog.events.fireListeners_(a, b, c, d)
- }
- ;
- goog.events.fireListeners_ = function (a, b, c, d) {
- var e = !0;
- if (a = goog.events.getListenerMap_(a))
- if (b = a.listeners[b.toString()])
- for (b = b.concat(),
- a = 0; a < b.length; a++) {
- var f = b[a];
- f && f.capture == c && !f.removed && (f = goog.events.fireListener(f, d),
- e = e && !1 !== f)
- }
- return e
- }
- ;
- goog.events.fireListener = function (a, b) {
- var c = a.listener
- , d = a.handler || a.src;
- a.callOnce && goog.events.unlistenByKey(a);
- return c.call(d, b)
- }
- ;
- goog.events.getTotalListenerCount = function () {
- return goog.events.listenerCountEstimate_
- }
- ;
- goog.events.dispatchEvent = function (a, b) {
- goog.asserts.assert(goog.events.Listenable.isImplementedBy(a), "Can not use goog.events.dispatchEvent with non-goog.events.Listenable instance.");
- return a.dispatchEvent(b)
- }
- ;
- goog.events.protectBrowserEventEntryPoint = function (a) {
- goog.events.handleBrowserEvent_ = a.protectEntryPoint(goog.events.handleBrowserEvent_)
- }
- ;
- goog.events.handleBrowserEvent_ = function (a, b) {
- if (a.removed)
- return !0;
- if (!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT) {
- var c = b || goog.getObjectByName("window.event")
- , d = new goog.events.BrowserEvent(c, this)
- , e = !0;
- if (goog.events.CAPTURE_SIMULATION_MODE == goog.events.CaptureSimulationMode.ON) {
- if (!goog.events.isMarkedIeEvent_(c)) {
- goog.events.markIeEvent_(c);
- c = [];
- for (var f = d.currentTarget; f; f = f.parentNode)
- c.push(f);
- f = a.type;
- for (var g = c.length - 1; !d.propagationStopped_ && 0 <= g; g--) {
- d.currentTarget = c[g];
- var h = goog.events.fireListeners_(c[g], f, !0, d);
- e = e && h
- }
- for (g = 0; !d.propagationStopped_ && g < c.length; g++)
- d.currentTarget = c[g],
- h = goog.events.fireListeners_(c[g], f, !1, d),
- e = e && h
- }
- } else
- e = goog.events.fireListener(a, d);
- return e
- }
- return goog.events.fireListener(a, new goog.events.BrowserEvent(b, this))
- }
- ;
- goog.events.markIeEvent_ = function (a) {
- var b = !1;
- if (0 == a.keyCode)
- try {
- a.keyCode = -1;
- return
- } catch (c) {
- b = !0
- }
- if (b || void 0 == a.returnValue)
- a.returnValue = !0
- }
- ;
- goog.events.isMarkedIeEvent_ = function (a) {
- return 0 > a.keyCode || void 0 != a.returnValue
- }
- ;
- goog.events.uniqueIdCounter_ = 0;
- goog.events.getUniqueId = function (a) {
- return a + "_" + goog.events.uniqueIdCounter_++
- }
- ;
- goog.events.getListenerMap_ = function (a) {
- a = a[goog.events.LISTENER_MAP_PROP_];
- return a instanceof goog.events.ListenerMap ? a : null
- }
- ;
- goog.events.LISTENER_WRAPPER_PROP_ = "__closure_events_fn_" + (1E9 * Math.random() >>> 0);
- goog.events.wrapListener = function (a) {
- goog.asserts.assert(a, "Listener can not be null.");
- if (goog.isFunction(a))
- return a;
- goog.asserts.assert(a.handleEvent, "An object listener must have handleEvent method.");
- a[goog.events.LISTENER_WRAPPER_PROP_] || (a[goog.events.LISTENER_WRAPPER_PROP_] = function (b) {
- return a.handleEvent(b)
- }
- );
- return a[goog.events.LISTENER_WRAPPER_PROP_]
- }
- ;
- goog.debug.entryPointRegistry.register(function (a) {
- goog.events.handleBrowserEvent_ = a(goog.events.handleBrowserEvent_)
- });
- goog.events.EventTarget = function () {
- goog.Disposable.call(this);
- this.eventTargetListeners_ = new goog.events.ListenerMap(this);
- this.actualEventTarget_ = this;
- this.parentEventTarget_ = null
- }
- ;
- goog.inherits(goog.events.EventTarget, goog.Disposable);
- goog.events.Listenable.addImplementation(goog.events.EventTarget);
- goog.events.EventTarget.MAX_ANCESTORS_ = 1E3;
- goog.events.EventTarget.prototype.getParentEventTarget = function () {
- return this.parentEventTarget_
- }
- ;
- goog.events.EventTarget.prototype.setParentEventTarget = function (a) {
- this.parentEventTarget_ = a
- }
- ;
- goog.events.EventTarget.prototype.addEventListener = function (a, b, c, d) {
- goog.events.listen(this, a, b, c, d)
- }
- ;
- goog.events.EventTarget.prototype.removeEventListener = function (a, b, c, d) {
- goog.events.unlisten(this, a, b, c, d)
- }
- ;
- goog.events.EventTarget.prototype.dispatchEvent = function (a) {
- this.assertInitialized_();
- var b = this.getParentEventTarget();
- if (b) {
- var c = [];
- for (var d = 1; b; b = b.getParentEventTarget())
- c.push(b),
- goog.asserts.assert(++d < goog.events.EventTarget.MAX_ANCESTORS_, "infinite loop")
- }
- return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_, a, c)
- }
- ;
- goog.events.EventTarget.prototype.disposeInternal = function () {
- goog.events.EventTarget.superClass_.disposeInternal.call(this);
- this.removeAllListeners();
- this.parentEventTarget_ = null
- }
- ;
- goog.events.EventTarget.prototype.listen = function (a, b, c, d) {
- this.assertInitialized_();
- return this.eventTargetListeners_.add(String(a), b, !1, c, d)
- }
- ;
- goog.events.EventTarget.prototype.listenOnce = function (a, b, c, d) {
- return this.eventTargetListeners_.add(String(a), b, !0, c, d)
- }
- ;
- goog.events.EventTarget.prototype.unlisten = function (a, b, c, d) {
- return this.eventTargetListeners_.remove(String(a), b, c, d)
- }
- ;
- goog.events.EventTarget.prototype.unlistenByKey = function (a) {
- return this.eventTargetListeners_.removeByKey(a)
- }
- ;
- goog.events.EventTarget.prototype.removeAllListeners = function (a) {
- return this.eventTargetListeners_ ? this.eventTargetListeners_.removeAll(a) : 0
- }
- ;
- goog.events.EventTarget.prototype.fireListeners = function (a, b, c) {
- a = this.eventTargetListeners_.listeners[String(a)];
- if (!a)
- return !0;
- a = a.concat();
- for (var d = !0, e = 0; e < a.length; ++e) {
- var f = a[e];
- if (f && !f.removed && f.capture == b) {
- var g = f.listener
- , h = f.handler || f.src;
- f.callOnce && this.unlistenByKey(f);
- d = !1 !== g.call(h, c) && d
- }
- }
- return d && 0 != c.returnValue_
- }
- ;
- goog.events.EventTarget.prototype.getListeners = function (a, b) {
- return this.eventTargetListeners_.getListeners(String(a), b)
- }
- ;
- goog.events.EventTarget.prototype.getListener = function (a, b, c, d) {
- return this.eventTargetListeners_.getListener(String(a), b, c, d)
- }
- ;
- goog.events.EventTarget.prototype.hasListener = function (a, b) {
- return this.eventTargetListeners_.hasListener(void 0 !== a ? String(a) : void 0, b)
- }
- ;
- goog.events.EventTarget.prototype.setTargetForTesting = function (a) {
- this.actualEventTarget_ = a
- }
- ;
- goog.events.EventTarget.prototype.assertInitialized_ = function () {
- goog.asserts.assert(this.eventTargetListeners_, "Event target is not initialized. Did you call the superclass (goog.events.EventTarget) constructor?")
- }
- ;
- goog.events.EventTarget.dispatchEventInternal_ = function (a, b, c) {
- var d = b.type || b;
- if ("string" === typeof b)
- b = new goog.events.Event(b, a);
- else if (b instanceof goog.events.Event)
- b.target = b.target || a;
- else {
- var e = b;
- b = new goog.events.Event(d, a);
- goog.object.extend(b, e)
- }
- e = !0;
- if (c)
- for (var f = c.length - 1; !b.propagationStopped_ && 0 <= f; f--) {
- var g = b.currentTarget = c[f];
- e = g.fireListeners(d, !0, b) && e
- }
- b.propagationStopped_ || (g = b.currentTarget = a,
- e = g.fireListeners(d, !0, b) && e,
- b.propagationStopped_ || (e = g.fireListeners(d, !1, b) && e));
- if (c)
- for (f = 0; !b.propagationStopped_ && f < c.length; f++)
- g = b.currentTarget = c[f],
- e = g.fireListeners(d, !1, b) && e;
- return e
- }
- ;
- goog.Timer = function (a, b) {
- goog.events.EventTarget.call(this);
- this.interval_ = a || 1;
- this.timerObject_ = b || goog.Timer.defaultTimerObject;
- this.boundTick_ = goog.bind(this.tick_, this);
- this.last_ = goog.now()
- }
- ;
- goog.inherits(goog.Timer, goog.events.EventTarget);
- goog.Timer.MAX_TIMEOUT_ = 2147483647;
- goog.Timer.INVALID_TIMEOUT_ID_ = -1;
- goog.Timer.prototype.enabled = !1;
- goog.Timer.defaultTimerObject = goog.global;
- goog.Timer.intervalScale = .8;
- goog.Timer.prototype.timer_ = null;
- goog.Timer.prototype.getInterval = function () {
- return this.interval_
- }
- ;
- goog.Timer.prototype.setInterval = function (a) {
- this.interval_ = a;
- this.timer_ && this.enabled ? (this.stop(),
- this.start()) : this.timer_ && this.stop()
- }
- ;
- goog.Timer.prototype.tick_ = function () {
- if (this.enabled) {
- var a = goog.now() - this.last_;
- 0 < a && a < this.interval_ * goog.Timer.intervalScale ? this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_ - a) : (this.timer_ && (this.timerObject_.clearTimeout(this.timer_),
- this.timer_ = null),
- this.dispatchTick(),
- this.enabled && (this.stop(),
- this.start()))
- }
- }
- ;
- goog.Timer.prototype.dispatchTick = function () {
- this.dispatchEvent(goog.Timer.TICK)
- }
- ;
- goog.Timer.prototype.start = function () {
- this.enabled = !0;
- this.timer_ || (this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_),
- this.last_ = goog.now())
- }
- ;
- goog.Timer.prototype.stop = function () {
- this.enabled = !1;
- this.timer_ && (this.timerObject_.clearTimeout(this.timer_),
- this.timer_ = null)
- }
- ;
- goog.Timer.prototype.disposeInternal = function () {
- goog.Timer.superClass_.disposeInternal.call(this);
- this.stop();
- delete this.timerObject_
- }
- ;
- goog.Timer.TICK = "tick";
- goog.Timer.callOnce = function (a, b, c) {
- if (goog.isFunction(a))
- c && (a = goog.bind(a, c));
- else if (a && "function" == typeof a.handleEvent)
- a = goog.bind(a.handleEvent, a);
- else
- throw Error("Invalid listener argument");
- return Number(b) > goog.Timer.MAX_TIMEOUT_ ? goog.Timer.INVALID_TIMEOUT_ID_ : goog.Timer.defaultTimerObject.setTimeout(a, b || 0)
- }
- ;
- goog.Timer.clear = function (a) {
- goog.Timer.defaultTimerObject.clearTimeout(a)
- }
- ;
- goog.Timer.promise = function (a, b) {
- var c = null;
- return (new goog.Promise(function (d, e) {
- c = goog.Timer.callOnce(function () {
- d(b)
- }, a);
- c == goog.Timer.INVALID_TIMEOUT_ID_ && e(Error("Failed to schedule timer."))
- }
- )).thenCatch(function (a) {
- goog.Timer.clear(c);
- throw a;
- })
- }
- ;
- goog.color = {};
- goog.color.names = {
- aliceblue: "#f0f8ff",
- antiquewhite: "#faebd7",
- aqua: "#00ffff",
- aquamarine: "#7fffd4",
- azure: "#f0ffff",
- beige: "#f5f5dc",
- bisque: "#ffe4c4",
- black: "#000000",
- blanchedalmond: "#ffebcd",
- blue: "#0000ff",
- blueviolet: "#8a2be2",
- brown: "#a52a2a",
- burlywood: "#deb887",
- cadetblue: "#5f9ea0",
- chartreuse: "#7fff00",
- chocolate: "#d2691e",
- coral: "#ff7f50",
- cornflowerblue: "#6495ed",
- cornsilk: "#fff8dc",
- crimson: "#dc143c",
- cyan: "#00ffff",
- darkblue: "#00008b",
- darkcyan: "#008b8b",
- darkgoldenrod: "#b8860b",
- darkgray: "#a9a9a9",
- darkgreen: "#006400",
- darkgrey: "#a9a9a9",
- darkkhaki: "#bdb76b",
- darkmagenta: "#8b008b",
- darkolivegreen: "#556b2f",
- darkorange: "#ff8c00",
- darkorchid: "#9932cc",
- darkred: "#8b0000",
- darksalmon: "#e9967a",
- darkseagreen: "#8fbc8f",
- darkslateblue: "#483d8b",
- darkslategray: "#2f4f4f",
- darkslategrey: "#2f4f4f",
- darkturquoise: "#00ced1",
- darkviolet: "#9400d3",
- deeppink: "#ff1493",
- deepskyblue: "#00bfff",
- dimgray: "#696969",
- dimgrey: "#696969",
- dodgerblue: "#1e90ff",
- firebrick: "#b22222",
- floralwhite: "#fffaf0",
- forestgreen: "#228b22",
- fuchsia: "#ff00ff",
- gainsboro: "#dcdcdc",
- ghostwhite: "#f8f8ff",
- gold: "#ffd700",
- goldenrod: "#daa520",
- gray: "#808080",
- green: "#008000",
- greenyellow: "#adff2f",
- grey: "#808080",
- honeydew: "#f0fff0",
- hotpink: "#ff69b4",
- indianred: "#cd5c5c",
- indigo: "#4b0082",
- ivory: "#fffff0",
- khaki: "#f0e68c",
- lavender: "#e6e6fa",
- lavenderblush: "#fff0f5",
- lawngreen: "#7cfc00",
- lemonchiffon: "#fffacd",
- lightblue: "#add8e6",
- lightcoral: "#f08080",
- lightcyan: "#e0ffff",
- lightgoldenrodyellow: "#fafad2",
- lightgray: "#d3d3d3",
- lightgreen: "#90ee90",
- lightgrey: "#d3d3d3",
- lightpink: "#ffb6c1",
- lightsalmon: "#ffa07a",
- lightseagreen: "#20b2aa",
- lightskyblue: "#87cefa",
- lightslategray: "#778899",
- lightslategrey: "#778899",
- lightsteelblue: "#b0c4de",
- lightyellow: "#ffffe0",
- lime: "#00ff00",
- limegreen: "#32cd32",
- linen: "#faf0e6",
- magenta: "#ff00ff",
- maroon: "#800000",
- mediumaquamarine: "#66cdaa",
- mediumblue: "#0000cd",
- mediumorchid: "#ba55d3",
- mediumpurple: "#9370db",
- mediumseagreen: "#3cb371",
- mediumslateblue: "#7b68ee",
- mediumspringgreen: "#00fa9a",
- mediumturquoise: "#48d1cc",
- mediumvioletred: "#c71585",
- midnightblue: "#191970",
- mintcream: "#f5fffa",
- mistyrose: "#ffe4e1",
- moccasin: "#ffe4b5",
- navajowhite: "#ffdead",
- navy: "#000080",
- oldlace: "#fdf5e6",
- olive: "#808000",
- olivedrab: "#6b8e23",
- orange: "#ffa500",
- orangered: "#ff4500",
- orchid: "#da70d6",
- palegoldenrod: "#eee8aa",
- palegreen: "#98fb98",
- paleturquoise: "#afeeee",
- palevioletred: "#db7093",
- papayawhip: "#ffefd5",
- peachpuff: "#ffdab9",
- peru: "#cd853f",
- pink: "#ffc0cb",
- plum: "#dda0dd",
- powderblue: "#b0e0e6",
- purple: "#800080",
- red: "#ff0000",
- rosybrown: "#bc8f8f",
- royalblue: "#4169e1",
- saddlebrown: "#8b4513",
- salmon: "#fa8072",
- sandybrown: "#f4a460",
- seagreen: "#2e8b57",
- seashell: "#fff5ee",
- sienna: "#a0522d",
- silver: "#c0c0c0",
- skyblue: "#87ceeb",
- slateblue: "#6a5acd",
- slategray: "#708090",
- slategrey: "#708090",
- snow: "#fffafa",
- springgreen: "#00ff7f",
- steelblue: "#4682b4",
- tan: "#d2b48c",
- teal: "#008080",
- thistle: "#d8bfd8",
- tomato: "#ff6347",
- turquoise: "#40e0d0",
- violet: "#ee82ee",
- wheat: "#f5deb3",
- white: "#ffffff",
- whitesmoke: "#f5f5f5",
- yellow: "#ffff00",
- yellowgreen: "#9acd32"
- };
- goog.color.parse = function (a) {
- var b = {};
- a = String(a);
- var c = goog.color.prependHashIfNecessaryHelper(a);
- if (goog.color.isValidHexColor_(c))
- return b.hex = goog.color.normalizeHex(c),
- b.type = "hex",
- b;
- c = goog.color.isValidRgbColor_(a);
- if (c.length)
- return b.hex = goog.color.rgbArrayToHex(c),
- b.type = "rgb",
- b;
- if (goog.color.names && (c = goog.color.names[a.toLowerCase()]))
- return b.hex = c,
- b.type = "named",
- b;
- throw Error(a + " is not a valid color string");
- }
- ;
- goog.color.isValidColor = function (a) {
- var b = goog.color.prependHashIfNecessaryHelper(a);
- return !!(goog.color.isValidHexColor_(b) || goog.color.isValidRgbColor_(a).length || goog.color.names && goog.color.names[a.toLowerCase()])
- }
- ;
- goog.color.parseRgb = function (a) {
- var b = goog.color.isValidRgbColor_(a);
- if (!b.length)
- throw Error(a + " is not a valid RGB color");
- return b
- }
- ;
- goog.color.hexToRgbStyle = function (a) {
- return goog.color.rgbStyle_(goog.color.hexToRgb(a))
- }
- ;
- goog.color.hexTripletRe_ = /#(.)(.)(.)/;
- goog.color.normalizeHex = function (a) {
- if (!goog.color.isValidHexColor_(a))
- throw Error("'" + a + "' is not a valid hex color");
- 4 == a.length && (a = a.replace(goog.color.hexTripletRe_, "#$1$1$2$2$3$3"));
- return a.toLowerCase()
- }
- ;
- goog.color.hexToRgb = function (a) {
- a = goog.color.normalizeHex(a);
- a = parseInt(a.substr(1), 16);
- return [a >> 16, a >> 8 & 255, a & 255]
- }
- ;
- goog.color.rgbToHex = function (a, b, c) {
- a = Number(a);
- b = Number(b);
- c = Number(c);
- if (a != (a & 255) || b != (b & 255) || c != (c & 255))
- throw Error('"(' + a + "," + b + "," + c + '") is not a valid RGB color');
- b = a << 16 | b << 8 | c;
- return 16 > a ? "#" + (16777216 | b).toString(16).substr(1) : "#" + b.toString(16)
- }
- ;
- goog.color.rgbArrayToHex = function (a) {
- return goog.color.rgbToHex(a[0], a[1], a[2])
- }
- ;
- goog.color.rgbToHsl = function (a, b, c) {
- a /= 255;
- b /= 255;
- c /= 255;
- var d = Math.max(a, b, c)
- , e = Math.min(a, b, c)
- , f = 0
- , g = 0
- , h = .5 * (d + e);
- d != e && (d == a ? f = 60 * (b - c) / (d - e) : d == b ? f = 60 * (c - a) / (d - e) + 120 : d == c && (f = 60 * (a - b) / (d - e) + 240),
- g = 0 < h && .5 >= h ? (d - e) / (2 * h) : (d - e) / (2 - 2 * h));
- return [Math.round(f + 360) % 360, g, h]
- }
- ;
- goog.color.rgbArrayToHsl = function (a) {
- return goog.color.rgbToHsl(a[0], a[1], a[2])
- }
- ;
- goog.color.hueToRgb_ = function (a, b, c) {
- 0 > c ? c += 1 : 1 < c && --c;
- return 1 > 6 * c ? a + 6 * (b - a) * c : 1 > 2 * c ? b : 2 > 3 * c ? a + (b - a) * (2 / 3 - c) * 6 : a
- }
- ;
- goog.color.hslToRgb = function (a, b, c) {
- a /= 360;
- if (0 == b)
- c = b = a = 255 * c;
- else {
- var d = .5 > c ? c * (1 + b) : c + b - b * c;
- var e = 2 * c - d;
- c = 255 * goog.color.hueToRgb_(e, d, a + 1 / 3);
- b = 255 * goog.color.hueToRgb_(e, d, a);
- a = 255 * goog.color.hueToRgb_(e, d, a - 1 / 3)
- }
- return [Math.round(c), Math.round(b), Math.round(a)]
- }
- ;
- goog.color.hslArrayToRgb = function (a) {
- return goog.color.hslToRgb(a[0], a[1], a[2])
- }
- ;
- goog.color.validHexColorRe_ = /^#(?:[0-9a-f]{3}){1,2}$/i;
- goog.color.isValidHexColor_ = function (a) {
- return goog.color.validHexColorRe_.test(a)
- }
- ;
- goog.color.rgbColorRe_ = /^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i;
- goog.color.isValidRgbColor_ = function (a) {
- var b = a.match(goog.color.rgbColorRe_);
- if (b) {
- a = Number(b[1]);
- var c = Number(b[2]);
- b = Number(b[3]);
- if (0 <= a && 255 >= a && 0 <= c && 255 >= c && 0 <= b && 255 >= b)
- return [a, c, b]
- }
- return []
- }
- ;
- goog.color.prependZeroIfNecessaryHelper = function (a) {
- return 1 == a.length ? "0" + a : a
- }
- ;
- goog.color.prependHashIfNecessaryHelper = function (a) {
- return "#" == a.charAt(0) ? a : "#" + a
- }
- ;
- goog.color.rgbStyle_ = function (a) {
- return "rgb(" + a.join(",") + ")"
- }
- ;
- goog.color.hsvToRgb = function (a, b, c) {
- var d = 0
- , e = 0
- , f = 0;
- if (0 == b)
- f = e = d = c;
- else {
- var g = Math.floor(a / 60)
- , h = a / 60 - g;
- a = c * (1 - b);
- var k = c * (1 - b * h);
- b = c * (1 - b * (1 - h));
- switch (g) {
- case 1:
- d = k;
- e = c;
- f = a;
- break;
- case 2:
- d = a;
- e = c;
- f = b;
- break;
- case 3:
- d = a;
- e = k;
- f = c;
- break;
- case 4:
- d = b;
- e = a;
- f = c;
- break;
- case 5:
- d = c;
- e = a;
- f = k;
- break;
- case 6:
- case 0:
- d = c,
- e = b,
- f = a
- }
- }
- return [Math.round(d), Math.round(e), Math.round(f)]
- }
- ;
- goog.color.rgbToHsv = function (a, b, c) {
- var d = Math.max(Math.max(a, b), c)
- , e = Math.min(Math.min(a, b), c);
- if (e == d)
- e = a = 0;
- else {
- var f = d - e;
- e = f / d;
- a = 60 * (a == d ? (b - c) / f : b == d ? 2 + (c - a) / f : 4 + (a - b) / f);
- 0 > a && (a += 360);
- 360 < a && (a -= 360)
- }
- return [a, e, d]
- }
- ;
- goog.color.rgbArrayToHsv = function (a) {
- return goog.color.rgbToHsv(a[0], a[1], a[2])
- }
- ;
- goog.color.hsvArrayToRgb = function (a) {
- return goog.color.hsvToRgb(a[0], a[1], a[2])
- }
- ;
- goog.color.hexToHsl = function (a) {
- a = goog.color.hexToRgb(a);
- return goog.color.rgbToHsl(a[0], a[1], a[2])
- }
- ;
- goog.color.hslToHex = function (a, b, c) {
- return goog.color.rgbArrayToHex(goog.color.hslToRgb(a, b, c))
- }
- ;
- goog.color.hslArrayToHex = function (a) {
- return goog.color.rgbArrayToHex(goog.color.hslToRgb(a[0], a[1], a[2]))
- }
- ;
- goog.color.hexToHsv = function (a) {
- return goog.color.rgbArrayToHsv(goog.color.hexToRgb(a))
- }
- ;
- goog.color.hsvToHex = function (a, b, c) {
- return goog.color.rgbArrayToHex(goog.color.hsvToRgb(a, b, c))
- }
- ;
- goog.color.hsvArrayToHex = function (a) {
- return goog.color.hsvToHex(a[0], a[1], a[2])
- }
- ;
- goog.color.hslDistance = function (a, b) {
- var c = .5 >= a[2] ? a[1] * a[2] : a[1] * (1 - a[2]);
- var d = .5 >= b[2] ? b[1] * b[2] : b[1] * (1 - b[2]);
- return (a[2] - b[2]) * (a[2] - b[2]) + c * c + d * d - 2 * c * d * Math.cos(2 * (a[0] / 360 - b[0] / 360) * Math.PI)
- }
- ;
- goog.color.blend = function (a, b, c) {
- c = goog.math.clamp(c, 0, 1);
- return [Math.round(b[0] + c * (a[0] - b[0])), Math.round(b[1] + c * (a[1] - b[1])), Math.round(b[2] + c * (a[2] - b[2]))]
- }
- ;
- goog.color.darken = function (a, b) {
- return goog.color.blend([0, 0, 0], a, b)
- }
- ;
- goog.color.lighten = function (a, b) {
- return goog.color.blend([255, 255, 255], a, b)
- }
- ;
- goog.color.highContrast = function (a, b) {
- for (var c = [], d = 0; d < b.length; d++)
- c.push({
- color: b[d],
- diff: goog.color.yiqBrightnessDiff_(b[d], a) + goog.color.colorDiff_(b[d], a)
- });
- c.sort(function (a, b) {
- return b.diff - a.diff
- });
- return c[0].color
- }
- ;
- goog.color.yiqBrightness_ = function (a) {
- return Math.round((299 * a[0] + 587 * a[1] + 114 * a[2]) / 1E3)
- }
- ;
- goog.color.yiqBrightnessDiff_ = function (a, b) {
- return Math.abs(goog.color.yiqBrightness_(a) - goog.color.yiqBrightness_(b))
- }
- ;
- goog.color.colorDiff_ = function (a, b) {
- return Math.abs(a[0] - b[0]) + Math.abs(a[1] - b[1]) + Math.abs(a[2] - b[2])
- }
- ;
- goog.dom.vendor = {};
- goog.dom.vendor.getVendorJsPrefix = function () {
- return goog.userAgent.WEBKIT ? "Webkit" : goog.userAgent.GECKO ? "Moz" : goog.userAgent.IE ? "ms" : goog.userAgent.OPERA ? "O" : null
- }
- ;
- goog.dom.vendor.getVendorPrefix = function () {
- return goog.userAgent.WEBKIT ? "-webkit" : goog.userAgent.GECKO ? "-moz" : goog.userAgent.IE ? "-ms" : goog.userAgent.OPERA ? "-o" : null
- }
- ;
- goog.dom.vendor.getPrefixedPropertyName = function (a, b) {
- if (b && a in b)
- return a;
- var c = goog.dom.vendor.getVendorJsPrefix();
- return c ? (c = c.toLowerCase(),
- c += goog.string.toTitleCase(a),
- void 0 === b || c in b ? c : null) : null
- }
- ;
- goog.dom.vendor.getPrefixedEventType = function (a) {
- return ((goog.dom.vendor.getVendorJsPrefix() || "") + a).toLowerCase()
- }
- ;
- goog.math.Box = function (a, b, c, d) {
- this.top = a;
- this.right = b;
- this.bottom = c;
- this.left = d
- }
- ;
- goog.math.Box.boundingBox = function (a) {
- for (var b = new goog.math.Box(arguments[0].y, arguments[0].x, arguments[0].y, arguments[0].x), c = 1; c < arguments.length; c++)
- b.expandToIncludeCoordinate(arguments[c]);
- return b
- }
- ;
- goog.math.Box.prototype.getWidth = function () {
- return this.right - this.left
- }
- ;
- goog.math.Box.prototype.getHeight = function () {
- return this.bottom - this.top
- }
- ;
- goog.math.Box.prototype.clone = function () {
- return new goog.math.Box(this.top, this.right, this.bottom, this.left)
- }
- ;
- goog.DEBUG && (goog.math.Box.prototype.toString = function () {
- return "(" + this.top + "t, " + this.right + "r, " + this.bottom + "b, " + this.left + "l)"
- }
- );
- goog.math.Box.prototype.contains = function (a) {
- return goog.math.Box.contains(this, a)
- }
- ;
- goog.math.Box.prototype.expand = function (a, b, c, d) {
- goog.isObject(a) ? (this.top -= a.top,
- this.right += a.right,
- this.bottom += a.bottom,
- this.left -= a.left) : (this.top -= a,
- this.right += Number(b),
- this.bottom += Number(c),
- this.left -= Number(d));
- return this
- }
- ;
- goog.math.Box.prototype.expandToInclude = function (a) {
- this.left = Math.min(this.left, a.left);
- this.top = Math.min(this.top, a.top);
- this.right = Math.max(this.right, a.right);
- this.bottom = Math.max(this.bottom, a.bottom)
- }
- ;
- goog.math.Box.prototype.expandToIncludeCoordinate = function (a) {
- this.top = Math.min(this.top, a.y);
- this.right = Math.max(this.right, a.x);
- this.bottom = Math.max(this.bottom, a.y);
- this.left = Math.min(this.left, a.x)
- }
- ;
- goog.math.Box.equals = function (a, b) {
- return a == b ? !0 : a && b ? a.top == b.top && a.right == b.right && a.bottom == b.bottom && a.left == b.left : !1
- }
- ;
- goog.math.Box.contains = function (a, b) {
- return a && b ? b instanceof goog.math.Box ? b.left >= a.left && b.right <= a.right && b.top >= a.top && b.bottom <= a.bottom : b.x >= a.left && b.x <= a.right && b.y >= a.top && b.y <= a.bottom : !1
- }
- ;
- goog.math.Box.relativePositionX = function (a, b) {
- return b.x < a.left ? b.x - a.left : b.x > a.right ? b.x - a.right : 0
- }
- ;
- goog.math.Box.relativePositionY = function (a, b) {
- return b.y < a.top ? b.y - a.top : b.y > a.bottom ? b.y - a.bottom : 0
- }
- ;
- goog.math.Box.distance = function (a, b) {
- var c = goog.math.Box.relativePositionX(a, b)
- , d = goog.math.Box.relativePositionY(a, b);
- return Math.sqrt(c * c + d * d)
- }
- ;
- goog.math.Box.intersects = function (a, b) {
- return a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom
- }
- ;
- goog.math.Box.intersectsWithPadding = function (a, b, c) {
- return a.left <= b.right + c && b.left <= a.right + c && a.top <= b.bottom + c && b.top <= a.bottom + c
- }
- ;
- goog.math.Box.prototype.ceil = function () {
- this.top = Math.ceil(this.top);
- this.right = Math.ceil(this.right);
- this.bottom = Math.ceil(this.bottom);
- this.left = Math.ceil(this.left);
- return this
- }
- ;
- goog.math.Box.prototype.floor = function () {
- this.top = Math.floor(this.top);
- this.right = Math.floor(this.right);
- this.bottom = Math.floor(this.bottom);
- this.left = Math.floor(this.left);
- return this
- }
- ;
- goog.math.Box.prototype.round = function () {
- this.top = Math.round(this.top);
- this.right = Math.round(this.right);
- this.bottom = Math.round(this.bottom);
- this.left = Math.round(this.left);
- return this
- }
- ;
- goog.math.Box.prototype.translate = function (a, b) {
- a instanceof goog.math.Coordinate ? (this.left += a.x,
- this.right += a.x,
- this.top += a.y,
- this.bottom += a.y) : (goog.asserts.assertNumber(a),
- this.left += a,
- this.right += a,
- "number" === typeof b && (this.top += b,
- this.bottom += b));
- return this
- }
- ;
- goog.math.Box.prototype.scale = function (a, b) {
- var c = "number" === typeof b ? b : a;
- this.left *= a;
- this.right *= a;
- this.top *= c;
- this.bottom *= c;
- return this
- }
- ;
- goog.math.IRect = function () { }
- ;
- goog.math.Rect = function (a, b, c, d) {
- this.left = a;
- this.top = b;
- this.width = c;
- this.height = d
- }
- ;
- goog.math.Rect.prototype.clone = function () {
- return new goog.math.Rect(this.left, this.top, this.width, this.height)
- }
- ;
- goog.math.Rect.prototype.toBox = function () {
- return new goog.math.Box(this.top, this.left + this.width, this.top + this.height, this.left)
- }
- ;
- goog.math.Rect.createFromPositionAndSize = function (a, b) {
- return new goog.math.Rect(a.x, a.y, b.width, b.height)
- }
- ;
- goog.math.Rect.createFromBox = function (a) {
- return new goog.math.Rect(a.left, a.top, a.right - a.left, a.bottom - a.top)
- }
- ;
- goog.DEBUG && (goog.math.Rect.prototype.toString = function () {
- return "(" + this.left + ", " + this.top + " - " + this.width + "w x " + this.height + "h)"
- }
- );
- goog.math.Rect.equals = function (a, b) {
- return a == b ? !0 : a && b ? a.left == b.left && a.width == b.width && a.top == b.top && a.height == b.height : !1
- }
- ;
- goog.math.Rect.prototype.intersection = function (a) {
- var b = Math.max(this.left, a.left)
- , c = Math.min(this.left + this.width, a.left + a.width);
- if (b <= c) {
- var d = Math.max(this.top, a.top);
- a = Math.min(this.top + this.height, a.top + a.height);
- if (d <= a)
- return this.left = b,
- this.top = d,
- this.width = c - b,
- this.height = a - d,
- !0
- }
- return !1
- }
- ;
- goog.math.Rect.intersection = function (a, b) {
- var c = Math.max(a.left, b.left)
- , d = Math.min(a.left + a.width, b.left + b.width);
- if (c <= d) {
- var e = Math.max(a.top, b.top)
- , f = Math.min(a.top + a.height, b.top + b.height);
- if (e <= f)
- return new goog.math.Rect(c, e, d - c, f - e)
- }
- return null
- }
- ;
- goog.math.Rect.intersects = function (a, b) {
- return a.left <= b.left + b.width && b.left <= a.left + a.width && a.top <= b.top + b.height && b.top <= a.top + a.height
- }
- ;
- goog.math.Rect.prototype.intersects = function (a) {
- return goog.math.Rect.intersects(this, a)
- }
- ;
- goog.math.Rect.difference = function (a, b) {
- var c = goog.math.Rect.intersection(a, b);
- if (!c || !c.height || !c.width)
- return [a.clone()];
- c = [];
- var d = a.top
- , e = a.height
- , f = a.left + a.width
- , g = a.top + a.height
- , h = b.left + b.width
- , k = b.top + b.height;
- b.top > a.top && (c.push(new goog.math.Rect(a.left, a.top, a.width, b.top - a.top)),
- d = b.top,
- e -= b.top - a.top);
- k < g && (c.push(new goog.math.Rect(a.left, k, a.width, g - k)),
- e = k - d);
- b.left > a.left && c.push(new goog.math.Rect(a.left, d, b.left - a.left, e));
- h < f && c.push(new goog.math.Rect(h, d, f - h, e));
- return c
- }
- ;
- goog.math.Rect.prototype.difference = function (a) {
- return goog.math.Rect.difference(this, a)
- }
- ;
- goog.math.Rect.prototype.boundingRect = function (a) {
- var b = Math.max(this.left + this.width, a.left + a.width)
- , c = Math.max(this.top + this.height, a.top + a.height);
- this.left = Math.min(this.left, a.left);
- this.top = Math.min(this.top, a.top);
- this.width = b - this.left;
- this.height = c - this.top
- }
- ;
- goog.math.Rect.boundingRect = function (a, b) {
- if (!a || !b)
- return null;
- var c = new goog.math.Rect(a.left, a.top, a.width, a.height);
- c.boundingRect(b);
- return c
- }
- ;
- goog.math.Rect.prototype.contains = function (a) {
- return a instanceof goog.math.Coordinate ? a.x >= this.left && a.x <= this.left + this.width && a.y >= this.top && a.y <= this.top + this.height : this.left <= a.left && this.left + this.width >= a.left + a.width && this.top <= a.top && this.top + this.height >= a.top + a.height
- }
- ;
- goog.math.Rect.prototype.squaredDistance = function (a) {
- var b = a.x < this.left ? this.left - a.x : Math.max(a.x - (this.left + this.width), 0);
- a = a.y < this.top ? this.top - a.y : Math.max(a.y - (this.top + this.height), 0);
- return b * b + a * a
- }
- ;
- goog.math.Rect.prototype.distance = function (a) {
- return Math.sqrt(this.squaredDistance(a))
- }
- ;
- goog.math.Rect.prototype.getSize = function () {
- return new goog.math.Size(this.width, this.height)
- }
- ;
- goog.math.Rect.prototype.getTopLeft = function () {
- return new goog.math.Coordinate(this.left, this.top)
- }
- ;
- goog.math.Rect.prototype.getCenter = function () {
- return new goog.math.Coordinate(this.left + this.width / 2, this.top + this.height / 2)
- }
- ;
- goog.math.Rect.prototype.getBottomRight = function () {
- return new goog.math.Coordinate(this.left + this.width, this.top + this.height)
- }
- ;
- goog.math.Rect.prototype.ceil = function () {
- this.left = Math.ceil(this.left);
- this.top = Math.ceil(this.top);
- this.width = Math.ceil(this.width);
- this.height = Math.ceil(this.height);
- return this
- }
- ;
- goog.math.Rect.prototype.floor = function () {
- this.left = Math.floor(this.left);
- this.top = Math.floor(this.top);
- this.width = Math.floor(this.width);
- this.height = Math.floor(this.height);
- return this
- }
- ;
- goog.math.Rect.prototype.round = function () {
- this.left = Math.round(this.left);
- this.top = Math.round(this.top);
- this.width = Math.round(this.width);
- this.height = Math.round(this.height);
- return this
- }
- ;
- goog.math.Rect.prototype.translate = function (a, b) {
- a instanceof goog.math.Coordinate ? (this.left += a.x,
- this.top += a.y) : (this.left += goog.asserts.assertNumber(a),
- "number" === typeof b && (this.top += b));
- return this
- }
- ;
- goog.math.Rect.prototype.scale = function (a, b) {
- var c = "number" === typeof b ? b : a;
- this.left *= a;
- this.width *= a;
- this.top *= c;
- this.height *= c;
- return this
- }
- ;
- goog.style = {};
- goog.style.setStyle = function (a, b, c) {
- if ("string" === typeof b)
- goog.style.setStyle_(a, c, b);
- else
- for (var d in b)
- goog.style.setStyle_(a, b[d], d)
- }
- ;
- goog.style.setStyle_ = function (a, b, c) {
- (c = goog.style.getVendorJsStyleName_(a, c)) && (a.style[c] = b)
- }
- ;
- goog.style.styleNameCache_ = {};
- goog.style.getVendorJsStyleName_ = function (a, b) {
- var c = goog.style.styleNameCache_[b];
- if (!c) {
- var d = goog.string.toCamelCase(b);
- c = d;
- void 0 === a.style[d] && (d = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(d),
- void 0 !== a.style[d] && (c = d));
- goog.style.styleNameCache_[b] = c
- }
- return c
- }
- ;
- goog.style.getVendorStyleName_ = function (a, b) {
- var c = goog.string.toCamelCase(b);
- return void 0 === a.style[c] && (c = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(c),
- void 0 !== a.style[c]) ? goog.dom.vendor.getVendorPrefix() + "-" + b : b
- }
- ;
- goog.style.getStyle = function (a, b) {
- var c = a.style[goog.string.toCamelCase(b)];
- return "undefined" !== typeof c ? c : a.style[goog.style.getVendorJsStyleName_(a, b)] || ""
- }
- ;
- goog.style.getComputedStyle = function (a, b) {
- var c = goog.dom.getOwnerDocument(a);
- return c.defaultView && c.defaultView.getComputedStyle && (c = c.defaultView.getComputedStyle(a, null)) ? c[b] || c.getPropertyValue(b) || "" : ""
- }
- ;
- goog.style.getCascadedStyle = function (a, b) {
- return a.currentStyle ? a.currentStyle[b] : null
- }
- ;
- goog.style.getStyle_ = function (a, b) {
- return goog.style.getComputedStyle(a, b) || goog.style.getCascadedStyle(a, b) || a.style && a.style[b]
- }
- ;
- goog.style.getComputedBoxSizing = function (a) {
- return goog.style.getStyle_(a, "boxSizing") || goog.style.getStyle_(a, "MozBoxSizing") || goog.style.getStyle_(a, "WebkitBoxSizing") || null
- }
- ;
- goog.style.getComputedPosition = function (a) {
- return goog.style.getStyle_(a, "position")
- }
- ;
- goog.style.getBackgroundColor = function (a) {
- return goog.style.getStyle_(a, "backgroundColor")
- }
- ;
- goog.style.getComputedOverflowX = function (a) {
- return goog.style.getStyle_(a, "overflowX")
- }
- ;
- goog.style.getComputedOverflowY = function (a) {
- return goog.style.getStyle_(a, "overflowY")
- }
- ;
- goog.style.getComputedZIndex = function (a) {
- return goog.style.getStyle_(a, "zIndex")
- }
- ;
- goog.style.getComputedTextAlign = function (a) {
- return goog.style.getStyle_(a, "textAlign")
- }
- ;
- goog.style.getComputedCursor = function (a) {
- return goog.style.getStyle_(a, "cursor")
- }
- ;
- goog.style.getComputedTransform = function (a) {
- var b = goog.style.getVendorStyleName_(a, "transform");
- return goog.style.getStyle_(a, b) || goog.style.getStyle_(a, "transform")
- }
- ;
- goog.style.setPosition = function (a, b, c) {
- if (b instanceof goog.math.Coordinate) {
- var d = b.x;
- b = b.y
- } else
- d = b,
- b = c;
- a.style.left = goog.style.getPixelStyleValue_(d, !1);
- a.style.top = goog.style.getPixelStyleValue_(b, !1)
- }
- ;
- goog.style.getPosition = function (a) {
- return new goog.math.Coordinate(a.offsetLeft, a.offsetTop)
- }
- ;
- goog.style.getClientViewportElement = function (a) {
- a = a ? goog.dom.getOwnerDocument(a) : goog.dom.getDocument();
- return !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9) || goog.dom.getDomHelper(a).isCss1CompatMode() ? a.documentElement : a.body
- }
- ;
- goog.style.getViewportPageOffset = function (a) {
- var b = a.body;
- a = a.documentElement;
- return new goog.math.Coordinate(b.scrollLeft || a.scrollLeft, b.scrollTop || a.scrollTop)
- }
- ;
- goog.style.getBoundingClientRect_ = function (a) {
- try {
- var b = a.getBoundingClientRect()
- } catch (c) {
- return {
- left: 0,
- top: 0,
- right: 0,
- bottom: 0
- }
- }
- goog.userAgent.IE && a.ownerDocument.body && (a = a.ownerDocument,
- b.left -= a.documentElement.clientLeft + a.body.clientLeft,
- b.top -= a.documentElement.clientTop + a.body.clientTop);
- return b
- }
- ;
- goog.style.getOffsetParent = function (a) {
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(8))
- return goog.asserts.assert(a && "offsetParent" in a),
- a.offsetParent;
- var b = goog.dom.getOwnerDocument(a)
- , c = goog.style.getStyle_(a, "position")
- , d = "fixed" == c || "absolute" == c;
- for (a = a.parentNode; a && a != b; a = a.parentNode)
- if (a.nodeType == goog.dom.NodeType.DOCUMENT_FRAGMENT && a.host && (a = a.host),
- c = goog.style.getStyle_(a, "position"),
- d = d && "static" == c && a != b.documentElement && a != b.body,
- !d && (a.scrollWidth > a.clientWidth || a.scrollHeight > a.clientHeight || "fixed" == c || "absolute" == c || "relative" == c))
- return a;
- return null
- }
- ;
- goog.style.getVisibleRectForElement = function (a) {
- for (var b = new goog.math.Box(0, Infinity, Infinity, 0), c = goog.dom.getDomHelper(a), d = c.getDocument().body, e = c.getDocument().documentElement, f = c.getDocumentScrollElement(); a = goog.style.getOffsetParent(a);)
- if (!(goog.userAgent.IE && 0 == a.clientWidth || goog.userAgent.WEBKIT && 0 == a.clientHeight && a == d) && a != d && a != e && "visible" != goog.style.getStyle_(a, "overflow")) {
- var g = goog.style.getPageOffset(a)
- , h = goog.style.getClientLeftTop(a);
- g.x += h.x;
- g.y += h.y;
- b.top = Math.max(b.top, g.y);
- b.right = Math.min(b.right, g.x + a.clientWidth);
- b.bottom = Math.min(b.bottom, g.y + a.clientHeight);
- b.left = Math.max(b.left, g.x)
- }
- d = f.scrollLeft;
- f = f.scrollTop;
- b.left = Math.max(b.left, d);
- b.top = Math.max(b.top, f);
- c = c.getViewportSize();
- b.right = Math.min(b.right, d + c.width);
- b.bottom = Math.min(b.bottom, f + c.height);
- return 0 <= b.top && 0 <= b.left && b.bottom > b.top && b.right > b.left ? b : null
- }
- ;
- goog.style.getContainerOffsetToScrollInto = function (a, b, c) {
- var d = b || goog.dom.getDocumentScrollElement()
- , e = goog.style.getPageOffset(a)
- , f = goog.style.getPageOffset(d)
- , g = goog.style.getBorderBox(d);
- d == goog.dom.getDocumentScrollElement() ? (b = e.x - d.scrollLeft,
- e = e.y - d.scrollTop,
- goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(10) && (b += g.left,
- e += g.top)) : (b = e.x - f.x - g.left,
- e = e.y - f.y - g.top);
- g = goog.style.getSizeWithDisplay_(a);
- a = d.clientWidth - g.width;
- g = d.clientHeight - g.height;
- f = d.scrollLeft;
- d = d.scrollTop;
- c ? (f += b - a / 2,
- d += e - g / 2) : (f += Math.min(b, Math.max(b - a, 0)),
- d += Math.min(e, Math.max(e - g, 0)));
- return new goog.math.Coordinate(f, d)
- }
- ;
- goog.style.scrollIntoContainerView = function (a, b, c) {
- b = b || goog.dom.getDocumentScrollElement();
- a = goog.style.getContainerOffsetToScrollInto(a, b, c);
- b.scrollLeft = a.x;
- b.scrollTop = a.y
- }
- ;
- goog.style.getClientLeftTop = function (a) {
- return new goog.math.Coordinate(a.clientLeft, a.clientTop)
- }
- ;
- goog.style.getPageOffset = function (a) {
- var b = goog.dom.getOwnerDocument(a);
- goog.asserts.assertObject(a, "Parameter is required");
- var c = new goog.math.Coordinate(0, 0)
- , d = goog.style.getClientViewportElement(b);
- if (a == d)
- return c;
- a = goog.style.getBoundingClientRect_(a);
- b = goog.dom.getDomHelper(b).getDocumentScroll();
- c.x = a.left + b.x;
- c.y = a.top + b.y;
- return c
- }
- ;
- goog.style.getPageOffsetLeft = function (a) {
- return goog.style.getPageOffset(a).x
- }
- ;
- goog.style.getPageOffsetTop = function (a) {
- return goog.style.getPageOffset(a).y
- }
- ;
- goog.style.getFramedPageOffset = function (a, b) {
- var c = new goog.math.Coordinate(0, 0)
- , d = goog.dom.getWindow(goog.dom.getOwnerDocument(a));
- if (!goog.reflect.canAccessProperty(d, "parent"))
- return c;
- var e = a;
- do {
- var f = d == b ? goog.style.getPageOffset(e) : goog.style.getClientPositionForElement_(goog.asserts.assert(e));
- c.x += f.x;
- c.y += f.y
- } while (d && d != b && d != d.parent && (e = d.frameElement) && (d = d.parent)); return c
- }
- ;
- goog.style.translateRectForAnotherFrame = function (a, b, c) {
- if (b.getDocument() != c.getDocument()) {
- var d = b.getDocument().body;
- c = goog.style.getFramedPageOffset(d, c.getWindow());
- c = goog.math.Coordinate.difference(c, goog.style.getPageOffset(d));
- !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9) || b.isCss1CompatMode() || (c = goog.math.Coordinate.difference(c, b.getDocumentScroll()));
- a.left += c.x;
- a.top += c.y
- }
- }
- ;
- goog.style.getRelativePosition = function (a, b) {
- var c = goog.style.getClientPosition(a)
- , d = goog.style.getClientPosition(b);
- return new goog.math.Coordinate(c.x - d.x, c.y - d.y)
- }
- ;
- goog.style.getClientPositionForElement_ = function (a) {
- a = goog.style.getBoundingClientRect_(a);
- return new goog.math.Coordinate(a.left, a.top)
- }
- ;
- goog.style.getClientPosition = function (a) {
- goog.asserts.assert(a);
- if (a.nodeType == goog.dom.NodeType.ELEMENT)
- return goog.style.getClientPositionForElement_(a);
- a = a.changedTouches ? a.changedTouches[0] : a;
- return new goog.math.Coordinate(a.clientX, a.clientY)
- }
- ;
- goog.style.setPageOffset = function (a, b, c) {
- var d = goog.style.getPageOffset(a);
- b instanceof goog.math.Coordinate && (c = b.y,
- b = b.x);
- b = goog.asserts.assertNumber(b) - d.x;
- goog.style.setPosition(a, a.offsetLeft + b, a.offsetTop + (Number(c) - d.y))
- }
- ;
- goog.style.setSize = function (a, b, c) {
- if (b instanceof goog.math.Size)
- c = b.height,
- b = b.width;
- else if (void 0 == c)
- throw Error("missing height argument");
- goog.style.setWidth(a, b);
- goog.style.setHeight(a, c)
- }
- ;
- goog.style.getPixelStyleValue_ = function (a, b) {
- "number" == typeof a && (a = (b ? Math.round(a) : a) + "px");
- return a
- }
- ;
- goog.style.setHeight = function (a, b) {
- a.style.height = goog.style.getPixelStyleValue_(b, !0)
- }
- ;
- goog.style.setWidth = function (a, b) {
- a.style.width = goog.style.getPixelStyleValue_(b, !0)
- }
- ;
- goog.style.getSize = function (a) {
- return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_, a)
- }
- ;
- goog.style.evaluateWithTemporaryDisplay_ = function (a, b) {
- if ("none" != goog.style.getStyle_(b, "display"))
- return a(b);
- var c = b.style
- , d = c.display
- , e = c.visibility
- , f = c.position;
- c.visibility = "hidden";
- c.position = "absolute";
- c.display = "inline";
- var g = a(b);
- c.display = d;
- c.position = f;
- c.visibility = e;
- return g
- }
- ;
- goog.style.getSizeWithDisplay_ = function (a) {
- var b = a.offsetWidth
- , c = a.offsetHeight
- , d = goog.userAgent.WEBKIT && !b && !c;
- return (void 0 === b || d) && a.getBoundingClientRect ? (a = goog.style.getBoundingClientRect_(a),
- new goog.math.Size(a.right - a.left, a.bottom - a.top)) : new goog.math.Size(b, c)
- }
- ;
- goog.style.getTransformedSize = function (a) {
- if (!a.getBoundingClientRect)
- return null;
- a = goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_, a);
- return new goog.math.Size(a.right - a.left, a.bottom - a.top)
- }
- ;
- goog.style.getBounds = function (a) {
- var b = goog.style.getPageOffset(a);
- a = goog.style.getSize(a);
- return new goog.math.Rect(b.x, b.y, a.width, a.height)
- }
- ;
- goog.style.toCamelCase = function (a) {
- return goog.string.toCamelCase(String(a))
- }
- ;
- goog.style.toSelectorCase = function (a) {
- return goog.string.toSelectorCase(a)
- }
- ;
- goog.style.getOpacity = function (a) {
- goog.asserts.assert(a);
- var b = a.style;
- a = "";
- "opacity" in b ? a = b.opacity : "MozOpacity" in b ? a = b.MozOpacity : "filter" in b && (b = b.filter.match(/alpha\(opacity=([\d.]+)\)/)) && (a = String(b[1] / 100));
- return "" == a ? a : Number(a)
- }
- ;
- goog.style.setOpacity = function (a, b) {
- goog.asserts.assert(a);
- var c = a.style;
- "opacity" in c ? c.opacity = b : "MozOpacity" in c ? c.MozOpacity = b : "filter" in c && (c.filter = "" === b ? "" : "alpha(opacity=" + 100 * Number(b) + ")")
- }
- ;
- goog.style.setTransparentBackgroundImage = function (a, b) {
- var c = a.style;
- goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8") ? c.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + b + '", sizingMethod="crop")' : (c.backgroundImage = "url(" + b + ")",
- c.backgroundPosition = "top left",
- c.backgroundRepeat = "no-repeat")
- }
- ;
- goog.style.clearTransparentBackgroundImage = function (a) {
- a = a.style;
- "filter" in a ? a.filter = "" : a.backgroundImage = "none"
- }
- ;
- goog.style.showElement = function (a, b) {
- goog.style.setElementShown(a, b)
- }
- ;
- goog.style.setElementShown = function (a, b) {
- a.style.display = b ? "" : "none"
- }
- ;
- goog.style.isElementShown = function (a) {
- return "none" != a.style.display
- }
- ;
- goog.style.installSafeStyleSheet = function (a, b) {
- var c = goog.dom.getDomHelper(b)
- , d = c.getDocument();
- if (goog.userAgent.IE && d.createStyleSheet)
- return c = d.createStyleSheet(),
- goog.style.setSafeStyleSheet(c, a),
- c;
- d = c.getElementsByTagNameAndClass("HEAD")[0];
- if (!d) {
- var e = c.getElementsByTagNameAndClass("BODY")[0];
- d = c.createDom("HEAD");
- e.parentNode.insertBefore(d, e)
- }
- e = c.createDom("STYLE");
- goog.style.setSafeStyleSheet(e, a);
- c.appendChild(d, e);
- return e
- }
- ;
- goog.style.uninstallStyles = function (a) {
- goog.dom.removeNode(a.ownerNode || a.owningElement || a)
- }
- ;
- goog.style.setSafeStyleSheet = function (a, b) {
- var c = goog.html.SafeStyleSheet.unwrap(b);
- goog.userAgent.IE && void 0 !== a.cssText ? a.cssText = c : a.innerHTML = c
- }
- ;
- goog.style.setPreWrap = function (a) {
- a = a.style;
- goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8") ? (a.whiteSpace = "pre",
- a.wordWrap = "break-word") : a.whiteSpace = goog.userAgent.GECKO ? "-moz-pre-wrap" : "pre-wrap"
- }
- ;
- goog.style.setInlineBlock = function (a) {
- a = a.style;
- a.position = "relative";
- goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8") ? (a.zoom = "1",
- a.display = "inline") : a.display = "inline-block"
- }
- ;
- goog.style.isRightToLeft = function (a) {
- return "rtl" == goog.style.getStyle_(a, "direction")
- }
- ;
- goog.style.unselectableStyle_ = goog.userAgent.GECKO ? "MozUserSelect" : goog.userAgent.WEBKIT || goog.userAgent.EDGE ? "WebkitUserSelect" : null;
- goog.style.isUnselectable = function (a) {
- return goog.style.unselectableStyle_ ? "none" == a.style[goog.style.unselectableStyle_].toLowerCase() : goog.userAgent.IE || goog.userAgent.OPERA ? "on" == a.getAttribute("unselectable") : !1
- }
- ;
- goog.style.setUnselectable = function (a, b, c) {
- c = c ? null : a.getElementsByTagName("*");
- var d = goog.style.unselectableStyle_;
- if (d) {
- if (b = b ? "none" : "",
- a.style && (a.style[d] = b),
- c) {
- a = 0;
- for (var e; e = c[a]; a++)
- e.style && (e.style[d] = b)
- }
- } else if (goog.userAgent.IE || goog.userAgent.OPERA)
- if (b = b ? "on" : "",
- a.setAttribute("unselectable", b),
- c)
- for (a = 0; e = c[a]; a++)
- e.setAttribute("unselectable", b)
- }
- ;
- goog.style.getBorderBoxSize = function (a) {
- return new goog.math.Size(a.offsetWidth, a.offsetHeight)
- }
- ;
- goog.style.setBorderBoxSize = function (a, b) {
- var c = goog.dom.getOwnerDocument(a)
- , d = goog.dom.getDomHelper(c).isCss1CompatMode();
- if (!goog.userAgent.IE || goog.userAgent.isVersionOrHigher("10") || d && goog.userAgent.isVersionOrHigher("8"))
- goog.style.setBoxSizingSize_(a, b, "border-box");
- else if (c = a.style,
- d) {
- d = goog.style.getPaddingBox(a);
- var e = goog.style.getBorderBox(a);
- c.pixelWidth = b.width - e.left - d.left - d.right - e.right;
- c.pixelHeight = b.height - e.top - d.top - d.bottom - e.bottom
- } else
- c.pixelWidth = b.width,
- c.pixelHeight = b.height
- }
- ;
- goog.style.getContentBoxSize = function (a) {
- var b = goog.dom.getOwnerDocument(a)
- , c = goog.userAgent.IE && a.currentStyle;
- if (c && goog.dom.getDomHelper(b).isCss1CompatMode() && "auto" != c.width && "auto" != c.height && !c.boxSizing)
- return b = goog.style.getIePixelValue_(a, c.width, "width", "pixelWidth"),
- a = goog.style.getIePixelValue_(a, c.height, "height", "pixelHeight"),
- new goog.math.Size(b, a);
- c = goog.style.getBorderBoxSize(a);
- b = goog.style.getPaddingBox(a);
- a = goog.style.getBorderBox(a);
- return new goog.math.Size(c.width - a.left - b.left - b.right - a.right, c.height - a.top - b.top - b.bottom - a.bottom)
- }
- ;
- goog.style.setContentBoxSize = function (a, b) {
- var c = goog.dom.getOwnerDocument(a)
- , d = goog.dom.getDomHelper(c).isCss1CompatMode();
- if (!goog.userAgent.IE || goog.userAgent.isVersionOrHigher("10") || d && goog.userAgent.isVersionOrHigher("8"))
- goog.style.setBoxSizingSize_(a, b, "content-box");
- else if (c = a.style,
- d)
- c.pixelWidth = b.width,
- c.pixelHeight = b.height;
- else {
- d = goog.style.getPaddingBox(a);
- var e = goog.style.getBorderBox(a);
- c.pixelWidth = b.width + e.left + d.left + d.right + e.right;
- c.pixelHeight = b.height + e.top + d.top + d.bottom + e.bottom
- }
- }
- ;
- goog.style.setBoxSizingSize_ = function (a, b, c) {
- a = a.style;
- goog.userAgent.GECKO ? a.MozBoxSizing = c : goog.userAgent.WEBKIT ? a.WebkitBoxSizing = c : a.boxSizing = c;
- a.width = Math.max(b.width, 0) + "px";
- a.height = Math.max(b.height, 0) + "px"
- }
- ;
- goog.style.getIePixelValue_ = function (a, b, c, d) {
- if (/^\d+px?$/.test(b))
- return parseInt(b, 10);
- var e = a.style[c]
- , f = a.runtimeStyle[c];
- a.runtimeStyle[c] = a.currentStyle[c];
- a.style[c] = b;
- b = a.style[d];
- a.style[c] = e;
- a.runtimeStyle[c] = f;
- return +b
- }
- ;
- goog.style.getIePixelDistance_ = function (a, b) {
- var c = goog.style.getCascadedStyle(a, b);
- return c ? goog.style.getIePixelValue_(a, c, "left", "pixelLeft") : 0
- }
- ;
- goog.style.getBox_ = function (a, b) {
- if (goog.userAgent.IE) {
- var c = goog.style.getIePixelDistance_(a, b + "Left")
- , d = goog.style.getIePixelDistance_(a, b + "Right")
- , e = goog.style.getIePixelDistance_(a, b + "Top")
- , f = goog.style.getIePixelDistance_(a, b + "Bottom");
- return new goog.math.Box(e, d, f, c)
- }
- c = goog.style.getComputedStyle(a, b + "Left");
- d = goog.style.getComputedStyle(a, b + "Right");
- e = goog.style.getComputedStyle(a, b + "Top");
- f = goog.style.getComputedStyle(a, b + "Bottom");
- return new goog.math.Box(parseFloat(e), parseFloat(d), parseFloat(f), parseFloat(c))
- }
- ;
- goog.style.getPaddingBox = function (a) {
- return goog.style.getBox_(a, "padding")
- }
- ;
- goog.style.getMarginBox = function (a) {
- return goog.style.getBox_(a, "margin")
- }
- ;
- goog.style.ieBorderWidthKeywords_ = {
- thin: 2,
- medium: 4,
- thick: 6
- };
- goog.style.getIePixelBorder_ = function (a, b) {
- if ("none" == goog.style.getCascadedStyle(a, b + "Style"))
- return 0;
- var c = goog.style.getCascadedStyle(a, b + "Width");
- return c in goog.style.ieBorderWidthKeywords_ ? goog.style.ieBorderWidthKeywords_[c] : goog.style.getIePixelValue_(a, c, "left", "pixelLeft")
- }
- ;
- goog.style.getBorderBox = function (a) {
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) {
- var b = goog.style.getIePixelBorder_(a, "borderLeft")
- , c = goog.style.getIePixelBorder_(a, "borderRight")
- , d = goog.style.getIePixelBorder_(a, "borderTop");
- a = goog.style.getIePixelBorder_(a, "borderBottom");
- return new goog.math.Box(d, c, a, b)
- }
- b = goog.style.getComputedStyle(a, "borderLeftWidth");
- c = goog.style.getComputedStyle(a, "borderRightWidth");
- d = goog.style.getComputedStyle(a, "borderTopWidth");
- a = goog.style.getComputedStyle(a, "borderBottomWidth");
- return new goog.math.Box(parseFloat(d), parseFloat(c), parseFloat(a), parseFloat(b))
- }
- ;
- goog.style.getFontFamily = function (a) {
- var b = goog.dom.getOwnerDocument(a)
- , c = "";
- if (b.body.createTextRange && goog.dom.contains(b, a)) {
- b = b.body.createTextRange();
- b.moveToElementText(a);
- try {
- c = b.queryCommandValue("FontName")
- } catch (d) {
- c = ""
- }
- }
- c || (c = goog.style.getStyle_(a, "fontFamily"));
- a = c.split(",");
- 1 < a.length && (c = a[0]);
- return goog.string.stripQuotes(c, "\"'")
- }
- ;
- goog.style.lengthUnitRegex_ = /[^\d]+$/;
- goog.style.getLengthUnits = function (a) {
- return (a = a.match(goog.style.lengthUnitRegex_)) && a[0] || null
- }
- ;
- goog.style.ABSOLUTE_CSS_LENGTH_UNITS_ = {
- cm: 1,
- "in": 1,
- mm: 1,
- pc: 1,
- pt: 1
- };
- goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_ = {
- em: 1,
- ex: 1
- };
- goog.style.getFontSize = function (a) {
- var b = goog.style.getStyle_(a, "fontSize")
- , c = goog.style.getLengthUnits(b);
- if (b && "px" == c)
- return parseInt(b, 10);
- if (goog.userAgent.IE) {
- if (String(c) in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_)
- return goog.style.getIePixelValue_(a, b, "left", "pixelLeft");
- if (a.parentNode && a.parentNode.nodeType == goog.dom.NodeType.ELEMENT && String(c) in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_)
- return a = a.parentNode,
- c = goog.style.getStyle_(a, "fontSize"),
- goog.style.getIePixelValue_(a, b == c ? "1em" : b, "left", "pixelLeft")
- }
- c = goog.dom.createDom("SPAN", {
- style: "visibility:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;height:1em;"
- });
- goog.dom.appendChild(a, c);
- b = c.offsetHeight;
- goog.dom.removeNode(c);
- return b
- }
- ;
- goog.style.parseStyleAttribute = function (a) {
- var b = {};
- goog.array.forEach(a.split(/\s*;\s*/), function (a) {
- var c = a.match(/\s*([\w-]+)\s*:(.+)/);
- c && (a = c[1],
- c = goog.string.trim(c[2]),
- b[goog.string.toCamelCase(a.toLowerCase())] = c)
- });
- return b
- }
- ;
- goog.style.toStyleAttribute = function (a) {
- var b = [];
- goog.object.forEach(a, function (a, d) {
- b.push(goog.string.toSelectorCase(d), ":", a, ";")
- });
- return b.join("")
- }
- ;
- goog.style.setFloat = function (a, b) {
- a.style[goog.userAgent.IE ? "styleFloat" : "cssFloat"] = b
- }
- ;
- goog.style.getFloat = function (a) {
- return a.style[goog.userAgent.IE ? "styleFloat" : "cssFloat"] || ""
- }
- ;
- goog.style.getScrollbarWidth = function (a) {
- var b = goog.dom.createElement("DIV");
- a && (b.className = a);
- b.style.cssText = "overflow:auto;position:absolute;top:0;width:100px;height:100px";
- a = goog.dom.createElement("DIV");
- goog.style.setSize(a, "200px", "200px");
- b.appendChild(a);
- goog.dom.appendChild(goog.dom.getDocument().body, b);
- a = b.offsetWidth - b.clientWidth;
- goog.dom.removeNode(b);
- return a
- }
- ;
- goog.style.MATRIX_TRANSLATION_REGEX_ = /matrix\([0-9\.\-]+, [0-9\.\-]+, [0-9\.\-]+, [0-9\.\-]+, ([0-9\.\-]+)p?x?, ([0-9\.\-]+)p?x?\)/;
- goog.style.getCssTranslation = function (a) {
- a = goog.style.getComputedTransform(a);
- return a ? (a = a.match(goog.style.MATRIX_TRANSLATION_REGEX_)) ? new goog.math.Coordinate(parseFloat(a[1]), parseFloat(a[2])) : new goog.math.Coordinate(0, 0) : new goog.math.Coordinate(0, 0)
- }
- ;
- goog.events.EventHandler = function (a) {
- goog.Disposable.call(this);
- this.handler_ = a;
- this.keys_ = {}
- }
- ;
- goog.inherits(goog.events.EventHandler, goog.Disposable);
- goog.events.EventHandler.typeArray_ = [];
- goog.events.EventHandler.prototype.listen = function (a, b, c, d) {
- return this.listen_(a, b, c, d)
- }
- ;
- goog.events.EventHandler.prototype.listenWithScope = function (a, b, c, d, e) {
- return this.listen_(a, b, c, d, e)
- }
- ;
- goog.events.EventHandler.prototype.listen_ = function (a, b, c, d, e) {
- goog.isArray(b) || (b && (goog.events.EventHandler.typeArray_[0] = b.toString()),
- b = goog.events.EventHandler.typeArray_);
- for (var f = 0; f < b.length; f++) {
- var g = goog.events.listen(a, b[f], c || this.handleEvent, d || !1, e || this.handler_ || this);
- if (!g)
- break;
- this.keys_[g.key] = g
- }
- return this
- }
- ;
- goog.events.EventHandler.prototype.listenOnce = function (a, b, c, d) {
- return this.listenOnce_(a, b, c, d)
- }
- ;
- goog.events.EventHandler.prototype.listenOnceWithScope = function (a, b, c, d, e) {
- return this.listenOnce_(a, b, c, d, e)
- }
- ;
- goog.events.EventHandler.prototype.listenOnce_ = function (a, b, c, d, e) {
- if (goog.isArray(b))
- for (var f = 0; f < b.length; f++)
- this.listenOnce_(a, b[f], c, d, e);
- else {
- a = goog.events.listenOnce(a, b, c || this.handleEvent, d, e || this.handler_ || this);
- if (!a)
- return this;
- this.keys_[a.key] = a
- }
- return this
- }
- ;
- goog.events.EventHandler.prototype.listenWithWrapper = function (a, b, c, d) {
- return this.listenWithWrapper_(a, b, c, d)
- }
- ;
- goog.events.EventHandler.prototype.listenWithWrapperAndScope = function (a, b, c, d, e) {
- return this.listenWithWrapper_(a, b, c, d, e)
- }
- ;
- goog.events.EventHandler.prototype.listenWithWrapper_ = function (a, b, c, d, e) {
- b.listen(a, c, d, e || this.handler_ || this, this);
- return this
- }
- ;
- goog.events.EventHandler.prototype.getListenerCount = function () {
- var a = 0, b;
- for (b in this.keys_)
- Object.prototype.hasOwnProperty.call(this.keys_, b) && a++;
- return a
- }
- ;
- goog.events.EventHandler.prototype.unlisten = function (a, b, c, d, e) {
- if (goog.isArray(b))
- for (var f = 0; f < b.length; f++)
- this.unlisten(a, b[f], c, d, e);
- else if (d = goog.isObject(d) ? !!d.capture : !!d,
- a = goog.events.getListener(a, b, c || this.handleEvent, d, e || this.handler_ || this))
- goog.events.unlistenByKey(a),
- delete this.keys_[a.key];
- return this
- }
- ;
- goog.events.EventHandler.prototype.unlistenWithWrapper = function (a, b, c, d, e) {
- b.unlisten(a, c, d, e || this.handler_ || this, this);
- return this
- }
- ;
- goog.events.EventHandler.prototype.removeAll = function () {
- goog.object.forEach(this.keys_, function (a, b) {
- this.keys_.hasOwnProperty(b) && goog.events.unlistenByKey(a)
- }, this);
- this.keys_ = {}
- }
- ;
- goog.events.EventHandler.prototype.disposeInternal = function () {
- goog.events.EventHandler.superClass_.disposeInternal.call(this);
- this.removeAll()
- }
- ;
- goog.events.EventHandler.prototype.handleEvent = function (a) {
- throw Error("EventHandler.handleEvent not implemented");
- }
- ;
- goog.ui = {};
- goog.ui.IdGenerator = function () { }
- ;
- goog.addSingletonGetter(goog.ui.IdGenerator);
- goog.ui.IdGenerator.prototype.nextId_ = 0;
- goog.ui.IdGenerator.prototype.idPrefix_ = "";
- goog.ui.IdGenerator.prototype.setIdPrefix = function (a) {
- this.idPrefix_ = a
- }
- ;
- goog.ui.IdGenerator.prototype.getNextUniqueId = function () {
- return this.idPrefix_ + ":" + (this.nextId_++).toString(36)
- }
- ;
- goog.ui.Component = function (a) {
- goog.events.EventTarget.call(this);
- this.dom_ = a || goog.dom.getDomHelper();
- this.rightToLeft_ = goog.ui.Component.defaultRightToLeft_;
- this.id_ = null;
- this.inDocument_ = !1;
- this.element_ = null;
- this.googUiComponentHandler_ = void 0;
- this.childIndex_ = this.children_ = this.parent_ = this.model_ = null;
- this.pointerEventsEnabled_ = this.wasDecorated_ = !1
- }
- ;
- goog.inherits(goog.ui.Component, goog.events.EventTarget);
- goog.ui.Component.ALLOW_DETACHED_DECORATION = !1;
- goog.ui.Component.prototype.idGenerator_ = goog.ui.IdGenerator.getInstance();
- goog.ui.Component.DEFAULT_BIDI_DIR = 0;
- goog.ui.Component.defaultRightToLeft_ = 1 == goog.ui.Component.DEFAULT_BIDI_DIR ? !1 : -1 == goog.ui.Component.DEFAULT_BIDI_DIR ? !0 : null;
- goog.ui.Component.EventType = {
- BEFORE_SHOW: "beforeshow",
- SHOW: "show",
- HIDE: "hide",
- DISABLE: "disable",
- ENABLE: "enable",
- HIGHLIGHT: "highlight",
- UNHIGHLIGHT: "unhighlight",
- ACTIVATE: "activate",
- DEACTIVATE: "deactivate",
- SELECT: "select",
- UNSELECT: "unselect",
- CHECK: "check",
- UNCHECK: "uncheck",
- FOCUS: "focus",
- BLUR: "blur",
- OPEN: "open",
- CLOSE: "close",
- ENTER: "enter",
- LEAVE: "leave",
- ACTION: "action",
- CHANGE: "change"
- };
- goog.ui.Component.Error = {
- NOT_SUPPORTED: "Method not supported",
- DECORATE_INVALID: "Invalid element to decorate",
- ALREADY_RENDERED: "Component already rendered",
- PARENT_UNABLE_TO_BE_SET: "Unable to set parent component",
- CHILD_INDEX_OUT_OF_BOUNDS: "Child component index out of bounds",
- NOT_OUR_CHILD: "Child is not in parent component",
- NOT_IN_DOCUMENT: "Operation not supported while component is not in document",
- STATE_INVALID: "Invalid component state"
- };
- goog.ui.Component.State = {
- ALL: 255,
- DISABLED: 1,
- HOVER: 2,
- ACTIVE: 4,
- SELECTED: 8,
- CHECKED: 16,
- FOCUSED: 32,
- OPENED: 64
- };
- goog.ui.Component.getStateTransitionEvent = function (a, b) {
- switch (a) {
- case goog.ui.Component.State.DISABLED:
- return b ? goog.ui.Component.EventType.DISABLE : goog.ui.Component.EventType.ENABLE;
- case goog.ui.Component.State.HOVER:
- return b ? goog.ui.Component.EventType.HIGHLIGHT : goog.ui.Component.EventType.UNHIGHLIGHT;
- case goog.ui.Component.State.ACTIVE:
- return b ? goog.ui.Component.EventType.ACTIVATE : goog.ui.Component.EventType.DEACTIVATE;
- case goog.ui.Component.State.SELECTED:
- return b ? goog.ui.Component.EventType.SELECT : goog.ui.Component.EventType.UNSELECT;
- case goog.ui.Component.State.CHECKED:
- return b ? goog.ui.Component.EventType.CHECK : goog.ui.Component.EventType.UNCHECK;
- case goog.ui.Component.State.FOCUSED:
- return b ? goog.ui.Component.EventType.FOCUS : goog.ui.Component.EventType.BLUR;
- case goog.ui.Component.State.OPENED:
- return b ? goog.ui.Component.EventType.OPEN : goog.ui.Component.EventType.CLOSE
- }
- throw Error(goog.ui.Component.Error.STATE_INVALID);
- }
- ;
- goog.ui.Component.setDefaultRightToLeft = function (a) {
- goog.ui.Component.defaultRightToLeft_ = a
- }
- ;
- goog.ui.Component.prototype.getId = function () {
- return this.id_ || (this.id_ = this.idGenerator_.getNextUniqueId())
- }
- ;
- goog.ui.Component.prototype.setId = function (a) {
- this.parent_ && this.parent_.childIndex_ && (goog.object.remove(this.parent_.childIndex_, this.id_),
- goog.object.add(this.parent_.childIndex_, a, this));
- this.id_ = a
- }
- ;
- goog.ui.Component.prototype.getElement = function () {
- return this.element_
- }
- ;
- goog.ui.Component.prototype.getElementStrict = function () {
- var a = this.element_;
- goog.asserts.assert(a, "Can not call getElementStrict before rendering/decorating.");
- return a
- }
- ;
- goog.ui.Component.prototype.setElementInternal = function (a) {
- this.element_ = a
- }
- ;
- goog.ui.Component.prototype.getElementsByClass = function (a) {
- return this.element_ ? this.dom_.getElementsByClass(a, this.element_) : []
- }
- ;
- goog.ui.Component.prototype.getElementByClass = function (a) {
- return this.element_ ? this.dom_.getElementByClass(a, this.element_) : null
- }
- ;
- goog.ui.Component.prototype.getRequiredElementByClass = function (a) {
- var b = this.getElementByClass(a);
- goog.asserts.assert(b, "Expected element in component with class: %s", a);
- return b
- }
- ;
- goog.ui.Component.prototype.getHandler = function () {
- this.googUiComponentHandler_ || (this.googUiComponentHandler_ = new goog.events.EventHandler(this));
- return goog.asserts.assert(this.googUiComponentHandler_)
- }
- ;
- goog.ui.Component.prototype.setParent = function (a) {
- if (this == a)
- throw Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);
- if (a && this.parent_ && this.id_ && this.parent_.getChild(this.id_) && this.parent_ != a)
- throw Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);
- this.parent_ = a;
- goog.ui.Component.superClass_.setParentEventTarget.call(this, a)
- }
- ;
- goog.ui.Component.prototype.getParent = function () {
- return this.parent_
- }
- ;
- goog.ui.Component.prototype.setParentEventTarget = function (a) {
- if (this.parent_ && this.parent_ != a)
- throw Error(goog.ui.Component.Error.NOT_SUPPORTED);
- goog.ui.Component.superClass_.setParentEventTarget.call(this, a)
- }
- ;
- goog.ui.Component.prototype.getDomHelper = function () {
- return this.dom_
- }
- ;
- goog.ui.Component.prototype.isInDocument = function () {
- return this.inDocument_
- }
- ;
- goog.ui.Component.prototype.createDom = function () {
- this.element_ = this.dom_.createElement("DIV")
- }
- ;
- goog.ui.Component.prototype.render = function (a) {
- this.render_(a)
- }
- ;
- goog.ui.Component.prototype.renderBefore = function (a) {
- this.render_(a.parentNode, a)
- }
- ;
- goog.ui.Component.prototype.render_ = function (a, b) {
- if (this.inDocument_)
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.element_ || this.createDom();
- a ? a.insertBefore(this.element_, b || null) : this.dom_.getDocument().body.appendChild(this.element_);
- this.parent_ && !this.parent_.isInDocument() || this.enterDocument()
- }
- ;
- goog.ui.Component.prototype.decorate = function (a) {
- if (this.inDocument_)
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- if (a && this.canDecorate(a)) {
- this.wasDecorated_ = !0;
- var b = goog.dom.getOwnerDocument(a);
- this.dom_ && this.dom_.getDocument() == b || (this.dom_ = goog.dom.getDomHelper(a));
- this.decorateInternal(a);
- goog.ui.Component.ALLOW_DETACHED_DECORATION && !goog.dom.contains(b, a) || this.enterDocument()
- } else
- throw Error(goog.ui.Component.Error.DECORATE_INVALID);
- }
- ;
- goog.ui.Component.prototype.canDecorate = function (a) {
- return !0
- }
- ;
- goog.ui.Component.prototype.wasDecorated = function () {
- return this.wasDecorated_
- }
- ;
- goog.ui.Component.prototype.decorateInternal = function (a) {
- this.element_ = a
- }
- ;
- goog.ui.Component.prototype.enterDocument = function () {
- this.inDocument_ = !0;
- this.forEachChild(function (a) {
- !a.isInDocument() && a.getElement() && a.enterDocument()
- })
- }
- ;
- goog.ui.Component.prototype.exitDocument = function () {
- this.forEachChild(function (a) {
- a.isInDocument() && a.exitDocument()
- });
- this.googUiComponentHandler_ && this.googUiComponentHandler_.removeAll();
- this.inDocument_ = !1
- }
- ;
- goog.ui.Component.prototype.disposeInternal = function () {
- this.inDocument_ && this.exitDocument();
- this.googUiComponentHandler_ && (this.googUiComponentHandler_.dispose(),
- delete this.googUiComponentHandler_);
- this.forEachChild(function (a) {
- a.dispose()
- });
- !this.wasDecorated_ && this.element_ && goog.dom.removeNode(this.element_);
- this.parent_ = this.model_ = this.element_ = this.childIndex_ = this.children_ = null;
- goog.ui.Component.superClass_.disposeInternal.call(this)
- }
- ;
- goog.ui.Component.prototype.makeId = function (a) {
- return this.getId() + "." + a
- }
- ;
- goog.ui.Component.prototype.makeIds = function (a) {
- var b = {}, c;
- for (c in a)
- b[c] = this.makeId(a[c]);
- return b
- }
- ;
- goog.ui.Component.prototype.getModel = function () {
- return this.model_
- }
- ;
- goog.ui.Component.prototype.setModel = function (a) {
- this.model_ = a
- }
- ;
- goog.ui.Component.prototype.getFragmentFromId = function (a) {
- return a.substring(this.getId().length + 1)
- }
- ;
- goog.ui.Component.prototype.getElementByFragment = function (a) {
- if (!this.inDocument_)
- throw Error(goog.ui.Component.Error.NOT_IN_DOCUMENT);
- return this.dom_.getElement(this.makeId(a))
- }
- ;
- goog.ui.Component.prototype.addChild = function (a, b) {
- this.addChildAt(a, this.getChildCount(), b)
- }
- ;
- goog.ui.Component.prototype.addChildAt = function (a, b, c) {
- goog.asserts.assert(!!a, "Provided element must not be null.");
- if (a.inDocument_ && (c || !this.inDocument_))
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- if (0 > b || b > this.getChildCount())
- throw Error(goog.ui.Component.Error.CHILD_INDEX_OUT_OF_BOUNDS);
- this.childIndex_ && this.children_ || (this.childIndex_ = {},
- this.children_ = []);
- a.getParent() == this ? (goog.object.set(this.childIndex_, a.getId(), a),
- goog.array.remove(this.children_, a)) : goog.object.add(this.childIndex_, a.getId(), a);
- a.setParent(this);
- goog.array.insertAt(this.children_, a, b);
- a.inDocument_ && this.inDocument_ && a.getParent() == this ? (c = this.getContentElement(),
- b = c.childNodes[b] || null,
- b != a.getElement() && c.insertBefore(a.getElement(), b)) : c ? (this.element_ || this.createDom(),
- b = this.getChildAt(b + 1),
- a.render_(this.getContentElement(), b ? b.element_ : null)) : this.inDocument_ && !a.inDocument_ && a.element_ && a.element_.parentNode && a.element_.parentNode.nodeType == goog.dom.NodeType.ELEMENT && a.enterDocument()
- }
- ;
- goog.ui.Component.prototype.getContentElement = function () {
- return this.element_
- }
- ;
- goog.ui.Component.prototype.isRightToLeft = function () {
- null == this.rightToLeft_ && (this.rightToLeft_ = goog.style.isRightToLeft(this.inDocument_ ? this.element_ : this.dom_.getDocument().body));
- return this.rightToLeft_
- }
- ;
- goog.ui.Component.prototype.setRightToLeft = function (a) {
- if (this.inDocument_)
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.rightToLeft_ = a
- }
- ;
- goog.ui.Component.prototype.hasChildren = function () {
- return !!this.children_ && 0 != this.children_.length
- }
- ;
- goog.ui.Component.prototype.getChildCount = function () {
- return this.children_ ? this.children_.length : 0
- }
- ;
- goog.ui.Component.prototype.getChildIds = function () {
- var a = [];
- this.forEachChild(function (b) {
- a.push(b.getId())
- });
- return a
- }
- ;
- goog.ui.Component.prototype.getChild = function (a) {
- return this.childIndex_ && a ? goog.object.get(this.childIndex_, a) || null : null
- }
- ;
- goog.ui.Component.prototype.getChildAt = function (a) {
- return this.children_ ? this.children_[a] || null : null
- }
- ;
- goog.ui.Component.prototype.forEachChild = function (a, b) {
- this.children_ && goog.array.forEach(this.children_, a, b)
- }
- ;
- goog.ui.Component.prototype.indexOfChild = function (a) {
- return this.children_ && a ? goog.array.indexOf(this.children_, a) : -1
- }
- ;
- goog.ui.Component.prototype.removeChild = function (a, b) {
- if (a) {
- var c = "string" === typeof a ? a : a.getId();
- a = this.getChild(c);
- c && a && (goog.object.remove(this.childIndex_, c),
- goog.array.remove(this.children_, a),
- b && (a.exitDocument(),
- a.element_ && goog.dom.removeNode(a.element_)),
- a.setParent(null))
- }
- if (!a)
- throw Error(goog.ui.Component.Error.NOT_OUR_CHILD);
- return a
- }
- ;
- goog.ui.Component.prototype.removeChildAt = function (a, b) {
- return this.removeChild(this.getChildAt(a), b)
- }
- ;
- goog.ui.Component.prototype.removeChildren = function (a) {
- for (var b = []; this.hasChildren();)
- b.push(this.removeChildAt(0, a));
- return b
- }
- ;
- goog.ui.Component.prototype.pointerEventsEnabled = function () {
- return this.pointerEventsEnabled_
- }
- ;
- goog.ui.Component.prototype.setPointerEventsEnabled = function (a) {
- if (this.inDocument_)
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.pointerEventsEnabled_ = a
- }
- ;
- goog.a11y = {};
- goog.a11y.aria = {};
- goog.a11y.aria.Role = {
- ALERT: "alert",
- ALERTDIALOG: "alertdialog",
- APPLICATION: "application",
- ARTICLE: "article",
- BANNER: "banner",
- BUTTON: "button",
- CHECKBOX: "checkbox",
- COLUMNHEADER: "columnheader",
- COMBOBOX: "combobox",
- COMPLEMENTARY: "complementary",
- CONTENTINFO: "contentinfo",
- DEFINITION: "definition",
- DIALOG: "dialog",
- DIRECTORY: "directory",
- DOCUMENT: "document",
- FORM: "form",
- GRID: "grid",
- GRIDCELL: "gridcell",
- GROUP: "group",
- HEADING: "heading",
- IMG: "img",
- LINK: "link",
- LIST: "list",
- LISTBOX: "listbox",
- LISTITEM: "listitem",
- LOG: "log",
- MAIN: "main",
- MARQUEE: "marquee",
- MATH: "math",
- MENU: "menu",
- MENUBAR: "menubar",
- MENU_ITEM: "menuitem",
- MENU_ITEM_CHECKBOX: "menuitemcheckbox",
- MENU_ITEM_RADIO: "menuitemradio",
- NAVIGATION: "navigation",
- NOTE: "note",
- OPTION: "option",
- PRESENTATION: "presentation",
- PROGRESSBAR: "progressbar",
- RADIO: "radio",
- RADIOGROUP: "radiogroup",
- REGION: "region",
- ROW: "row",
- ROWGROUP: "rowgroup",
- ROWHEADER: "rowheader",
- SCROLLBAR: "scrollbar",
- SEARCH: "search",
- SEPARATOR: "separator",
- SLIDER: "slider",
- SPINBUTTON: "spinbutton",
- STATUS: "status",
- TAB: "tab",
- TAB_LIST: "tablist",
- TAB_PANEL: "tabpanel",
- TEXTBOX: "textbox",
- TEXTINFO: "textinfo",
- TIMER: "timer",
- TOOLBAR: "toolbar",
- TOOLTIP: "tooltip",
- TREE: "tree",
- TREEGRID: "treegrid",
- TREEITEM: "treeitem"
- };
- goog.a11y.aria.State = {
- ACTIVEDESCENDANT: "activedescendant",
- ATOMIC: "atomic",
- AUTOCOMPLETE: "autocomplete",
- BUSY: "busy",
- CHECKED: "checked",
- COLINDEX: "colindex",
- CONTROLS: "controls",
- DESCRIBEDBY: "describedby",
- DISABLED: "disabled",
- DROPEFFECT: "dropeffect",
- EXPANDED: "expanded",
- FLOWTO: "flowto",
- GRABBED: "grabbed",
- HASPOPUP: "haspopup",
- HIDDEN: "hidden",
- INVALID: "invalid",
- LABEL: "label",
- LABELLEDBY: "labelledby",
- LEVEL: "level",
- LIVE: "live",
- MULTILINE: "multiline",
- MULTISELECTABLE: "multiselectable",
- ORIENTATION: "orientation",
- OWNS: "owns",
- POSINSET: "posinset",
- PRESSED: "pressed",
- READONLY: "readonly",
- RELEVANT: "relevant",
- REQUIRED: "required",
- ROWINDEX: "rowindex",
- SELECTED: "selected",
- SETSIZE: "setsize",
- SORT: "sort",
- VALUEMAX: "valuemax",
- VALUEMIN: "valuemin",
- VALUENOW: "valuenow",
- VALUETEXT: "valuetext"
- };
- goog.a11y.aria.AutoCompleteValues = {
- INLINE: "inline",
- LIST: "list",
- BOTH: "both",
- NONE: "none"
- };
- goog.a11y.aria.DropEffectValues = {
- COPY: "copy",
- MOVE: "move",
- LINK: "link",
- EXECUTE: "execute",
- POPUP: "popup",
- NONE: "none"
- };
- goog.a11y.aria.LivePriority = {
- OFF: "off",
- POLITE: "polite",
- ASSERTIVE: "assertive"
- };
- goog.a11y.aria.OrientationValues = {
- VERTICAL: "vertical",
- HORIZONTAL: "horizontal"
- };
- goog.a11y.aria.RelevantValues = {
- ADDITIONS: "additions",
- REMOVALS: "removals",
- TEXT: "text",
- ALL: "all"
- };
- goog.a11y.aria.SortValues = {
- ASCENDING: "ascending",
- DESCENDING: "descending",
- NONE: "none",
- OTHER: "other"
- };
- goog.a11y.aria.CheckedValues = {
- TRUE: "true",
- FALSE: "false",
- MIXED: "mixed",
- UNDEFINED: "undefined"
- };
- goog.a11y.aria.ExpandedValues = {
- TRUE: "true",
- FALSE: "false",
- UNDEFINED: "undefined"
- };
- goog.a11y.aria.GrabbedValues = {
- TRUE: "true",
- FALSE: "false",
- UNDEFINED: "undefined"
- };
- goog.a11y.aria.InvalidValues = {
- FALSE: "false",
- TRUE: "true",
- GRAMMAR: "grammar",
- SPELLING: "spelling"
- };
- goog.a11y.aria.PressedValues = {
- TRUE: "true",
- FALSE: "false",
- MIXED: "mixed",
- UNDEFINED: "undefined"
- };
- goog.a11y.aria.SelectedValues = {
- TRUE: "true",
- FALSE: "false",
- UNDEFINED: "undefined"
- };
- goog.a11y.aria.datatables = {};
- goog.a11y.aria.datatables.getDefaultValuesMap = function () {
- goog.a11y.aria.DefaultStateValueMap_ || (goog.a11y.aria.DefaultStateValueMap_ = goog.object.create(goog.a11y.aria.State.ATOMIC, !1, goog.a11y.aria.State.AUTOCOMPLETE, "none", goog.a11y.aria.State.DROPEFFECT, "none", goog.a11y.aria.State.HASPOPUP, !1, goog.a11y.aria.State.LIVE, "off", goog.a11y.aria.State.MULTILINE, !1, goog.a11y.aria.State.MULTISELECTABLE, !1, goog.a11y.aria.State.ORIENTATION, "vertical", goog.a11y.aria.State.READONLY, !1, goog.a11y.aria.State.RELEVANT, "additions text", goog.a11y.aria.State.REQUIRED, !1, goog.a11y.aria.State.SORT, "none", goog.a11y.aria.State.BUSY, !1, goog.a11y.aria.State.DISABLED, !1, goog.a11y.aria.State.HIDDEN, !1, goog.a11y.aria.State.INVALID, "false"));
- return goog.a11y.aria.DefaultStateValueMap_
- }
- ;
- goog.a11y.aria.ARIA_PREFIX_ = "aria-";
- goog.a11y.aria.ROLE_ATTRIBUTE_ = "role";
- goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_ = goog.object.createSet("A AREA BUTTON HEAD INPUT LINK MENU META OPTGROUP OPTION PROGRESS STYLE SELECT SOURCE TEXTAREA TITLE TRACK".split(" "));
- goog.a11y.aria.CONTAINER_ROLES_ = [goog.a11y.aria.Role.COMBOBOX, goog.a11y.aria.Role.GRID, goog.a11y.aria.Role.GROUP, goog.a11y.aria.Role.LISTBOX, goog.a11y.aria.Role.MENU, goog.a11y.aria.Role.MENUBAR, goog.a11y.aria.Role.RADIOGROUP, goog.a11y.aria.Role.ROW, goog.a11y.aria.Role.ROWGROUP, goog.a11y.aria.Role.TAB_LIST, goog.a11y.aria.Role.TEXTBOX, goog.a11y.aria.Role.TOOLBAR, goog.a11y.aria.Role.TREE, goog.a11y.aria.Role.TREEGRID];
- goog.a11y.aria.setRole = function (a, b) {
- b ? (goog.asserts.ENABLE_ASSERTS && goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.Role, b), "No such ARIA role " + b),
- a.setAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_, b)) : goog.a11y.aria.removeRole(a)
- }
- ;
- goog.a11y.aria.getRole = function (a) {
- return a.getAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_) || null
- }
- ;
- goog.a11y.aria.removeRole = function (a) {
- a.removeAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)
- }
- ;
- goog.a11y.aria.setState = function (a, b, c) {
- goog.isArray(c) && (c = c.join(" "));
- var d = goog.a11y.aria.getAriaAttributeName_(b);
- "" === c || void 0 == c ? (c = goog.a11y.aria.datatables.getDefaultValuesMap(),
- b in c ? a.setAttribute(d, c[b]) : a.removeAttribute(d)) : a.setAttribute(d, c)
- }
- ;
- goog.a11y.aria.toggleState = function (a, b) {
- var c = goog.a11y.aria.getState(a, b);
- goog.string.isEmptyOrWhitespace(goog.string.makeSafe(c)) || "true" == c || "false" == c ? goog.a11y.aria.setState(a, b, "true" == c ? "false" : "true") : goog.a11y.aria.removeState(a, b)
- }
- ;
- goog.a11y.aria.removeState = function (a, b) {
- a.removeAttribute(goog.a11y.aria.getAriaAttributeName_(b))
- }
- ;
- goog.a11y.aria.getState = function (a, b) {
- var c = a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));
- return null == c || void 0 == c ? "" : String(c)
- }
- ;
- goog.a11y.aria.getActiveDescendant = function (a) {
- var b = goog.a11y.aria.getState(a, goog.a11y.aria.State.ACTIVEDESCENDANT);
- return goog.dom.getOwnerDocument(a).getElementById(b)
- }
- ;
- goog.a11y.aria.setActiveDescendant = function (a, b) {
- var c = "";
- b && (c = b.id,
- goog.asserts.assert(c, "The active element should have an id."));
- goog.a11y.aria.setState(a, goog.a11y.aria.State.ACTIVEDESCENDANT, c)
- }
- ;
- goog.a11y.aria.getLabel = function (a) {
- return goog.a11y.aria.getState(a, goog.a11y.aria.State.LABEL)
- }
- ;
- goog.a11y.aria.setLabel = function (a, b) {
- goog.a11y.aria.setState(a, goog.a11y.aria.State.LABEL, b)
- }
- ;
- goog.a11y.aria.assertRoleIsSetInternalUtil = function (a, b) {
- if (!goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_[a.tagName]) {
- var c = goog.a11y.aria.getRole(a);
- goog.asserts.assert(null != c, "The element ARIA role cannot be null.");
- goog.asserts.assert(goog.array.contains(b, c), 'Non existing or incorrect role set for element.The role set is "' + c + '". The role should be any of "' + b + '". Check the ARIA specification for more details http://www.w3.org/TR/wai-aria/roles.')
- }
- }
- ;
- goog.a11y.aria.getStateBoolean = function (a, b) {
- var c = a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));
- goog.asserts.assert("boolean" === typeof c || null == c || "true" == c || "false" == c);
- return null == c ? c : "boolean" === typeof c ? c : "true" == c
- }
- ;
- goog.a11y.aria.getStateNumber = function (a, b) {
- var c = a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));
- goog.asserts.assert((null == c || !isNaN(Number(c))) && "boolean" !== typeof c);
- return null == c ? null : Number(c)
- }
- ;
- goog.a11y.aria.getStateString = function (a, b) {
- var c = a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));
- goog.asserts.assert((null == c || "string" === typeof c) && ("" == c || isNaN(Number(c))) && "true" != c && "false" != c);
- return null == c || "" == c ? null : c
- }
- ;
- goog.a11y.aria.getStringArrayStateInternalUtil = function (a, b) {
- var c = a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));
- return goog.a11y.aria.splitStringOnWhitespace_(c)
- }
- ;
- goog.a11y.aria.hasState = function (a, b) {
- return a.hasAttribute(goog.a11y.aria.getAriaAttributeName_(b))
- }
- ;
- goog.a11y.aria.isContainerRole = function (a) {
- a = goog.a11y.aria.getRole(a);
- return goog.array.contains(goog.a11y.aria.CONTAINER_ROLES_, a)
- }
- ;
- goog.a11y.aria.splitStringOnWhitespace_ = function (a) {
- return a ? a.split(/\s+/) : []
- }
- ;
- goog.a11y.aria.getAriaAttributeName_ = function (a) {
- goog.asserts.ENABLE_ASSERTS && (goog.asserts.assert(a, "ARIA attribute cannot be empty."),
- goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.State, a), "No such ARIA attribute " + a));
- return goog.a11y.aria.ARIA_PREFIX_ + a
- }
- ;
- goog.events.KeyCodes = {
- WIN_KEY_FF_LINUX: 0,
- MAC_ENTER: 3,
- BACKSPACE: 8,
- TAB: 9,
- NUM_CENTER: 12,
- ENTER: 13,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- PAUSE: 19,
- CAPS_LOCK: 20,
- ESC: 27,
- SPACE: 32,
- PAGE_UP: 33,
- PAGE_DOWN: 34,
- END: 35,
- HOME: 36,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- PLUS_SIGN: 43,
- PRINT_SCREEN: 44,
- INSERT: 45,
- DELETE: 46,
- ZERO: 48,
- ONE: 49,
- TWO: 50,
- THREE: 51,
- FOUR: 52,
- FIVE: 53,
- SIX: 54,
- SEVEN: 55,
- EIGHT: 56,
- NINE: 57,
- FF_SEMICOLON: 59,
- FF_EQUALS: 61,
- FF_DASH: 173,
- FF_HASH: 163,
- FF_JP_QUOTE: 58,
- QUESTION_MARK: 63,
- AT_SIGN: 64,
- A: 65,
- B: 66,
- C: 67,
- D: 68,
- E: 69,
- F: 70,
- G: 71,
- H: 72,
- I: 73,
- J: 74,
- K: 75,
- L: 76,
- M: 77,
- N: 78,
- O: 79,
- P: 80,
- Q: 81,
- R: 82,
- S: 83,
- T: 84,
- U: 85,
- V: 86,
- W: 87,
- X: 88,
- Y: 89,
- Z: 90,
- META: 91,
- WIN_KEY_RIGHT: 92,
- CONTEXT_MENU: 93,
- NUM_ZERO: 96,
- NUM_ONE: 97,
- NUM_TWO: 98,
- NUM_THREE: 99,
- NUM_FOUR: 100,
- NUM_FIVE: 101,
- NUM_SIX: 102,
- NUM_SEVEN: 103,
- NUM_EIGHT: 104,
- NUM_NINE: 105,
- NUM_MULTIPLY: 106,
- NUM_PLUS: 107,
- NUM_MINUS: 109,
- NUM_PERIOD: 110,
- NUM_DIVISION: 111,
- F1: 112,
- F2: 113,
- F3: 114,
- F4: 115,
- F5: 116,
- F6: 117,
- F7: 118,
- F8: 119,
- F9: 120,
- F10: 121,
- F11: 122,
- F12: 123,
- NUMLOCK: 144,
- SCROLL_LOCK: 145,
- FIRST_MEDIA_KEY: 166,
- LAST_MEDIA_KEY: 183,
- SEMICOLON: 186,
- DASH: 189,
- EQUALS: 187,
- COMMA: 188,
- PERIOD: 190,
- SLASH: 191,
- APOSTROPHE: 192,
- TILDE: 192,
- SINGLE_QUOTE: 222,
- OPEN_SQUARE_BRACKET: 219,
- BACKSLASH: 220,
- CLOSE_SQUARE_BRACKET: 221,
- WIN_KEY: 224,
- MAC_FF_META: 224,
- MAC_WK_CMD_LEFT: 91,
- MAC_WK_CMD_RIGHT: 93,
- WIN_IME: 229,
- VK_NONAME: 252,
- PHANTOM: 255
- };
- goog.events.KeyCodes.isTextModifyingKeyEvent = function (a) {
- if (a.altKey && !a.ctrlKey || a.metaKey || a.keyCode >= goog.events.KeyCodes.F1 && a.keyCode <= goog.events.KeyCodes.F12)
- return !1;
- if (goog.events.KeyCodes.isCharacterKey(a.keyCode))
- return !0;
- switch (a.keyCode) {
- case goog.events.KeyCodes.ALT:
- case goog.events.KeyCodes.CAPS_LOCK:
- case goog.events.KeyCodes.CONTEXT_MENU:
- case goog.events.KeyCodes.CTRL:
- case goog.events.KeyCodes.DOWN:
- case goog.events.KeyCodes.END:
- case goog.events.KeyCodes.ESC:
- case goog.events.KeyCodes.HOME:
- case goog.events.KeyCodes.INSERT:
- case goog.events.KeyCodes.LEFT:
- case goog.events.KeyCodes.MAC_FF_META:
- case goog.events.KeyCodes.META:
- case goog.events.KeyCodes.NUMLOCK:
- case goog.events.KeyCodes.NUM_CENTER:
- case goog.events.KeyCodes.PAGE_DOWN:
- case goog.events.KeyCodes.PAGE_UP:
- case goog.events.KeyCodes.PAUSE:
- case goog.events.KeyCodes.PHANTOM:
- case goog.events.KeyCodes.PRINT_SCREEN:
- case goog.events.KeyCodes.RIGHT:
- case goog.events.KeyCodes.SCROLL_LOCK:
- case goog.events.KeyCodes.SHIFT:
- case goog.events.KeyCodes.UP:
- case goog.events.KeyCodes.VK_NONAME:
- case goog.events.KeyCodes.WIN_KEY:
- case goog.events.KeyCodes.WIN_KEY_RIGHT:
- return !1;
- case goog.events.KeyCodes.WIN_KEY_FF_LINUX:
- return !goog.userAgent.GECKO;
- default:
- return a.keyCode < goog.events.KeyCodes.FIRST_MEDIA_KEY || a.keyCode > goog.events.KeyCodes.LAST_MEDIA_KEY
- }
- }
- ;
- goog.events.KeyCodes.firesKeyPressEvent = function (a, b, c, d, e, f) {
- if (goog.userAgent.WEBKIT && !goog.userAgent.isVersionOrHigher("525"))
- return !0;
- if (goog.userAgent.MAC && e)
- return goog.events.KeyCodes.isCharacterKey(a);
- if (e && !d)
- return !1;
- if (!goog.userAgent.GECKO) {
- "number" === typeof b && (b = goog.events.KeyCodes.normalizeKeyCode(b));
- var g = b == goog.events.KeyCodes.CTRL || b == goog.events.KeyCodes.ALT || goog.userAgent.MAC && b == goog.events.KeyCodes.META
- , h = b == goog.events.KeyCodes.SHIFT && (d || f);
- if ((!c || goog.userAgent.MAC) && g || goog.userAgent.MAC && h)
- return !1
- }
- if ((goog.userAgent.WEBKIT || goog.userAgent.EDGE) && d && c)
- switch (a) {
- case goog.events.KeyCodes.BACKSLASH:
- case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:
- case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:
- case goog.events.KeyCodes.TILDE:
- case goog.events.KeyCodes.SEMICOLON:
- case goog.events.KeyCodes.DASH:
- case goog.events.KeyCodes.EQUALS:
- case goog.events.KeyCodes.COMMA:
- case goog.events.KeyCodes.PERIOD:
- case goog.events.KeyCodes.SLASH:
- case goog.events.KeyCodes.APOSTROPHE:
- case goog.events.KeyCodes.SINGLE_QUOTE:
- return !1
- }
- if (goog.userAgent.IE && d && b == a)
- return !1;
- switch (a) {
- case goog.events.KeyCodes.ENTER:
- return goog.userAgent.GECKO ? f || e ? !1 : !(c && d) : !0;
- case goog.events.KeyCodes.ESC:
- return !(goog.userAgent.WEBKIT || goog.userAgent.EDGE || goog.userAgent.GECKO)
- }
- return goog.userAgent.GECKO && (d || e || f) ? !1 : goog.events.KeyCodes.isCharacterKey(a)
- }
- ;
- goog.events.KeyCodes.isCharacterKey = function (a) {
- if (a >= goog.events.KeyCodes.ZERO && a <= goog.events.KeyCodes.NINE || a >= goog.events.KeyCodes.NUM_ZERO && a <= goog.events.KeyCodes.NUM_MULTIPLY || a >= goog.events.KeyCodes.A && a <= goog.events.KeyCodes.Z || (goog.userAgent.WEBKIT || goog.userAgent.EDGE) && 0 == a)
- return !0;
- switch (a) {
- case goog.events.KeyCodes.SPACE:
- case goog.events.KeyCodes.PLUS_SIGN:
- case goog.events.KeyCodes.QUESTION_MARK:
- case goog.events.KeyCodes.AT_SIGN:
- case goog.events.KeyCodes.NUM_PLUS:
- case goog.events.KeyCodes.NUM_MINUS:
- case goog.events.KeyCodes.NUM_PERIOD:
- case goog.events.KeyCodes.NUM_DIVISION:
- case goog.events.KeyCodes.SEMICOLON:
- case goog.events.KeyCodes.FF_SEMICOLON:
- case goog.events.KeyCodes.DASH:
- case goog.events.KeyCodes.EQUALS:
- case goog.events.KeyCodes.FF_EQUALS:
- case goog.events.KeyCodes.COMMA:
- case goog.events.KeyCodes.PERIOD:
- case goog.events.KeyCodes.SLASH:
- case goog.events.KeyCodes.APOSTROPHE:
- case goog.events.KeyCodes.SINGLE_QUOTE:
- case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:
- case goog.events.KeyCodes.BACKSLASH:
- case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:
- case goog.events.KeyCodes.FF_HASH:
- case goog.events.KeyCodes.FF_JP_QUOTE:
- return !0;
- case goog.events.KeyCodes.FF_DASH:
- return goog.userAgent.GECKO;
- default:
- return !1
- }
- }
- ;
- goog.events.KeyCodes.normalizeKeyCode = function (a) {
- return goog.userAgent.GECKO ? goog.events.KeyCodes.normalizeGeckoKeyCode(a) : goog.userAgent.MAC && goog.userAgent.WEBKIT ? goog.events.KeyCodes.normalizeMacWebKitKeyCode(a) : a
- }
- ;
- goog.events.KeyCodes.normalizeGeckoKeyCode = function (a) {
- switch (a) {
- case goog.events.KeyCodes.FF_EQUALS:
- return goog.events.KeyCodes.EQUALS;
- case goog.events.KeyCodes.FF_SEMICOLON:
- return goog.events.KeyCodes.SEMICOLON;
- case goog.events.KeyCodes.FF_DASH:
- return goog.events.KeyCodes.DASH;
- case goog.events.KeyCodes.MAC_FF_META:
- return goog.events.KeyCodes.META;
- case goog.events.KeyCodes.WIN_KEY_FF_LINUX:
- return goog.events.KeyCodes.WIN_KEY;
- default:
- return a
- }
- }
- ;
- goog.events.KeyCodes.normalizeMacWebKitKeyCode = function (a) {
- switch (a) {
- case goog.events.KeyCodes.MAC_WK_CMD_RIGHT:
- return goog.events.KeyCodes.META;
- default:
- return a
- }
- }
- ;
- goog.events.KeyHandler = function (a, b) {
- goog.events.EventTarget.call(this);
- a && this.attach(a, b)
- }
- ;
- goog.inherits(goog.events.KeyHandler, goog.events.EventTarget);
- goog.events.KeyHandler.prototype.element_ = null;
- goog.events.KeyHandler.prototype.keyPressKey_ = null;
- goog.events.KeyHandler.prototype.keyDownKey_ = null;
- goog.events.KeyHandler.prototype.keyUpKey_ = null;
- goog.events.KeyHandler.prototype.lastKey_ = -1;
- goog.events.KeyHandler.prototype.keyCode_ = -1;
- goog.events.KeyHandler.prototype.altKey_ = !1;
- goog.events.KeyHandler.EventType = {
- KEY: "key"
- };
- goog.events.KeyHandler.safariKey_ = {
- 3: goog.events.KeyCodes.ENTER,
- 12: goog.events.KeyCodes.NUMLOCK,
- 63232: goog.events.KeyCodes.UP,
- 63233: goog.events.KeyCodes.DOWN,
- 63234: goog.events.KeyCodes.LEFT,
- 63235: goog.events.KeyCodes.RIGHT,
- 63236: goog.events.KeyCodes.F1,
- 63237: goog.events.KeyCodes.F2,
- 63238: goog.events.KeyCodes.F3,
- 63239: goog.events.KeyCodes.F4,
- 63240: goog.events.KeyCodes.F5,
- 63241: goog.events.KeyCodes.F6,
- 63242: goog.events.KeyCodes.F7,
- 63243: goog.events.KeyCodes.F8,
- 63244: goog.events.KeyCodes.F9,
- 63245: goog.events.KeyCodes.F10,
- 63246: goog.events.KeyCodes.F11,
- 63247: goog.events.KeyCodes.F12,
- 63248: goog.events.KeyCodes.PRINT_SCREEN,
- 63272: goog.events.KeyCodes.DELETE,
- 63273: goog.events.KeyCodes.HOME,
- 63275: goog.events.KeyCodes.END,
- 63276: goog.events.KeyCodes.PAGE_UP,
- 63277: goog.events.KeyCodes.PAGE_DOWN,
- 63289: goog.events.KeyCodes.NUMLOCK,
- 63302: goog.events.KeyCodes.INSERT
- };
- goog.events.KeyHandler.keyIdentifier_ = {
- Up: goog.events.KeyCodes.UP,
- Down: goog.events.KeyCodes.DOWN,
- Left: goog.events.KeyCodes.LEFT,
- Right: goog.events.KeyCodes.RIGHT,
- Enter: goog.events.KeyCodes.ENTER,
- F1: goog.events.KeyCodes.F1,
- F2: goog.events.KeyCodes.F2,
- F3: goog.events.KeyCodes.F3,
- F4: goog.events.KeyCodes.F4,
- F5: goog.events.KeyCodes.F5,
- F6: goog.events.KeyCodes.F6,
- F7: goog.events.KeyCodes.F7,
- F8: goog.events.KeyCodes.F8,
- F9: goog.events.KeyCodes.F9,
- F10: goog.events.KeyCodes.F10,
- F11: goog.events.KeyCodes.F11,
- F12: goog.events.KeyCodes.F12,
- "U+007F": goog.events.KeyCodes.DELETE,
- Home: goog.events.KeyCodes.HOME,
- End: goog.events.KeyCodes.END,
- PageUp: goog.events.KeyCodes.PAGE_UP,
- PageDown: goog.events.KeyCodes.PAGE_DOWN,
- Insert: goog.events.KeyCodes.INSERT
- };
- goog.events.KeyHandler.USES_KEYDOWN_ = !goog.userAgent.WEBKIT || goog.userAgent.isVersionOrHigher("525");
- goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_ = goog.userAgent.MAC && goog.userAgent.GECKO;
- goog.events.KeyHandler.prototype.handleKeyDown_ = function (a) {
- (goog.userAgent.WEBKIT || goog.userAgent.EDGE) && (this.lastKey_ == goog.events.KeyCodes.CTRL && !a.ctrlKey || this.lastKey_ == goog.events.KeyCodes.ALT && !a.altKey || goog.userAgent.MAC && this.lastKey_ == goog.events.KeyCodes.META && !a.metaKey) && this.resetState();
- -1 == this.lastKey_ && (a.ctrlKey && a.keyCode != goog.events.KeyCodes.CTRL ? this.lastKey_ = goog.events.KeyCodes.CTRL : a.altKey && a.keyCode != goog.events.KeyCodes.ALT ? this.lastKey_ = goog.events.KeyCodes.ALT : a.metaKey && a.keyCode != goog.events.KeyCodes.META && (this.lastKey_ = goog.events.KeyCodes.META));
- goog.events.KeyHandler.USES_KEYDOWN_ && !goog.events.KeyCodes.firesKeyPressEvent(a.keyCode, this.lastKey_, a.shiftKey, a.ctrlKey, a.altKey, a.metaKey) ? this.handleEvent(a) : (this.keyCode_ = goog.events.KeyCodes.normalizeKeyCode(a.keyCode),
- goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_ && (this.altKey_ = a.altKey))
- }
- ;
- goog.events.KeyHandler.prototype.resetState = function () {
- this.keyCode_ = this.lastKey_ = -1
- }
- ;
- goog.events.KeyHandler.prototype.handleKeyup_ = function (a) {
- this.resetState();
- this.altKey_ = a.altKey
- }
- ;
- goog.events.KeyHandler.prototype.handleEvent = function (a) {
- var b = a.getBrowserEvent()
- , c = b.altKey;
- if (goog.userAgent.IE && a.type == goog.events.EventType.KEYPRESS) {
- var d = this.keyCode_;
- var e = d != goog.events.KeyCodes.ENTER && d != goog.events.KeyCodes.ESC ? b.keyCode : 0
- } else
- (goog.userAgent.WEBKIT || goog.userAgent.EDGE) && a.type == goog.events.EventType.KEYPRESS ? (d = this.keyCode_,
- e = 0 <= b.charCode && 63232 > b.charCode && goog.events.KeyCodes.isCharacterKey(d) ? b.charCode : 0) : goog.userAgent.OPERA && !goog.userAgent.WEBKIT ? (d = this.keyCode_,
- e = goog.events.KeyCodes.isCharacterKey(d) ? b.keyCode : 0) : (a.type == goog.events.EventType.KEYPRESS ? (goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_ && (c = this.altKey_),
- b.keyCode == b.charCode ? 32 > b.keyCode ? (d = b.keyCode,
- e = 0) : (d = this.keyCode_,
- e = b.charCode) : (d = b.keyCode || this.keyCode_,
- e = b.charCode || 0)) : (d = b.keyCode || this.keyCode_,
- e = b.charCode || 0),
- goog.userAgent.MAC && e == goog.events.KeyCodes.QUESTION_MARK && d == goog.events.KeyCodes.WIN_KEY && (d = goog.events.KeyCodes.SLASH));
- var f = d = goog.events.KeyCodes.normalizeKeyCode(d);
- d ? 63232 <= d && d in goog.events.KeyHandler.safariKey_ ? f = goog.events.KeyHandler.safariKey_[d] : 25 == d && a.shiftKey && (f = 9) : b.keyIdentifier && b.keyIdentifier in goog.events.KeyHandler.keyIdentifier_ && (f = goog.events.KeyHandler.keyIdentifier_[b.keyIdentifier]);
- goog.userAgent.GECKO && goog.events.KeyHandler.USES_KEYDOWN_ && a.type == goog.events.EventType.KEYPRESS && !goog.events.KeyCodes.firesKeyPressEvent(f, this.lastKey_, a.shiftKey, a.ctrlKey, c, a.metaKey) || (a = f == this.lastKey_,
- this.lastKey_ = f,
- b = new goog.events.KeyEvent(f, e, a, b),
- b.altKey = c,
- this.dispatchEvent(b))
- }
- ;
- goog.events.KeyHandler.prototype.getElement = function () {
- return this.element_
- }
- ;
- goog.events.KeyHandler.prototype.attach = function (a, b) {
- this.keyUpKey_ && this.detach();
- this.element_ = a;
- this.keyPressKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYPRESS, this, b);
- this.keyDownKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYDOWN, this.handleKeyDown_, b, this);
- this.keyUpKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYUP, this.handleKeyup_, b, this)
- }
- ;
- goog.events.KeyHandler.prototype.detach = function () {
- this.keyPressKey_ && (goog.events.unlistenByKey(this.keyPressKey_),
- goog.events.unlistenByKey(this.keyDownKey_),
- goog.events.unlistenByKey(this.keyUpKey_),
- this.keyUpKey_ = this.keyDownKey_ = this.keyPressKey_ = null);
- this.element_ = null;
- this.keyCode_ = this.lastKey_ = -1
- }
- ;
- goog.events.KeyHandler.prototype.disposeInternal = function () {
- goog.events.KeyHandler.superClass_.disposeInternal.call(this);
- this.detach()
- }
- ;
- goog.events.KeyEvent = function (a, b, c, d) {
- goog.events.BrowserEvent.call(this, d);
- this.type = goog.events.KeyHandler.EventType.KEY;
- this.keyCode = a;
- this.charCode = b;
- this.repeat = c
- }
- ;
- goog.inherits(goog.events.KeyEvent, goog.events.BrowserEvent);
- goog.ui.ComponentUtil = {};
- goog.ui.ComponentUtil.getMouseEventType = function (a) {
- return a.pointerEventsEnabled() ? goog.events.PointerAsMouseEventType : goog.events.MouseAsMouseEventType
- }
- ;
- goog.dom.classlist = {};
- goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST = !1;
- goog.dom.classlist.getClassName_ = function (a) {
- return "string" == typeof a.className ? a.className : a.getAttribute && a.getAttribute("class") || ""
- }
- ;
- goog.dom.classlist.get = function (a) {
- return goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || a.classList ? a.classList : goog.dom.classlist.getClassName_(a).match(/\S+/g) || []
- }
- ;
- goog.dom.classlist.set = function (a, b) {
- "string" == typeof a.className ? a.className = b : a.setAttribute && a.setAttribute("class", b)
- }
- ;
- goog.dom.classlist.contains = function (a, b) {
- return goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || a.classList ? a.classList.contains(b) : goog.array.contains(goog.dom.classlist.get(a), b)
- }
- ;
- goog.dom.classlist.add = function (a, b) {
- if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || a.classList)
- a.classList.add(b);
- else if (!goog.dom.classlist.contains(a, b)) {
- var c = goog.dom.classlist.getClassName_(a);
- goog.dom.classlist.set(a, c + (0 < c.length ? " " + b : b))
- }
- }
- ;
- goog.dom.classlist.addAll = function (a, b) {
- if (goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || a.classList)
- goog.array.forEach(b, function (b) {
- goog.dom.classlist.add(a, b)
- });
- else {
- var c = {};
- goog.array.forEach(goog.dom.classlist.get(a), function (a) {
- c[a] = !0
- });
- goog.array.forEach(b, function (a) {
- c[a] = !0
- });
- var d = "", e;
- for (e in c)
- d += 0 < d.length ? " " + e : e;
- goog.dom.classlist.set(a, d)
- }
- }
- ;
- goog.dom.classlist.remove = function (a, b) {
- goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || a.classList ? a.classList.remove(b) : goog.dom.classlist.contains(a, b) && goog.dom.classlist.set(a, goog.array.filter(goog.dom.classlist.get(a), function (a) {
- return a != b
- }).join(" "))
- }
- ;
- goog.dom.classlist.removeAll = function (a, b) {
- goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST || a.classList ? goog.array.forEach(b, function (b) {
- goog.dom.classlist.remove(a, b)
- }) : goog.dom.classlist.set(a, goog.array.filter(goog.dom.classlist.get(a), function (a) {
- return !goog.array.contains(b, a)
- }).join(" "))
- }
- ;
- goog.dom.classlist.enable = function (a, b, c) {
- c ? goog.dom.classlist.add(a, b) : goog.dom.classlist.remove(a, b)
- }
- ;
- goog.dom.classlist.enableAll = function (a, b, c) {
- (c ? goog.dom.classlist.addAll : goog.dom.classlist.removeAll)(a, b)
- }
- ;
- goog.dom.classlist.swap = function (a, b, c) {
- return goog.dom.classlist.contains(a, b) ? (goog.dom.classlist.remove(a, b),
- goog.dom.classlist.add(a, c),
- !0) : !1
- }
- ;
- goog.dom.classlist.toggle = function (a, b) {
- var c = !goog.dom.classlist.contains(a, b);
- goog.dom.classlist.enable(a, b, c);
- return c
- }
- ;
- goog.dom.classlist.addRemove = function (a, b, c) {
- goog.dom.classlist.remove(a, b);
- goog.dom.classlist.add(a, c)
- }
- ;
- goog.ui.registry = {};
- goog.ui.registry.getDefaultRenderer = function (a) {
- for (var b; a;) {
- b = goog.getUid(a);
- if (b = goog.ui.registry.defaultRenderers_[b])
- break;
- a = a.superClass_ ? a.superClass_.constructor : null
- }
- return b ? goog.isFunction(b.getInstance) ? b.getInstance() : new b : null
- }
- ;
- goog.ui.registry.setDefaultRenderer = function (a, b) {
- if (!goog.isFunction(a))
- throw Error("Invalid component class " + a);
- if (!goog.isFunction(b))
- throw Error("Invalid renderer class " + b);
- var c = goog.getUid(a);
- goog.ui.registry.defaultRenderers_[c] = b
- }
- ;
- goog.ui.registry.getDecoratorByClassName = function (a) {
- return a in goog.ui.registry.decoratorFunctions_ ? goog.ui.registry.decoratorFunctions_[a]() : null
- }
- ;
- goog.ui.registry.setDecoratorByClassName = function (a, b) {
- if (!a)
- throw Error("Invalid class name " + a);
- if (!goog.isFunction(b))
- throw Error("Invalid decorator function " + b);
- goog.ui.registry.decoratorFunctions_[a] = b
- }
- ;
- goog.ui.registry.getDecorator = function (a) {
- goog.asserts.assert(a);
- for (var b = goog.dom.classlist.get(a), c = 0, d = b.length; c < d; c++)
- if (a = goog.ui.registry.getDecoratorByClassName(b[c]))
- return a;
- return null
- }
- ;
- goog.ui.registry.reset = function () {
- goog.ui.registry.defaultRenderers_ = {};
- goog.ui.registry.decoratorFunctions_ = {}
- }
- ;
- goog.ui.registry.defaultRenderers_ = {};
- goog.ui.registry.decoratorFunctions_ = {};
- goog.ui.ContainerRenderer = function (a) {
- this.ariaRole_ = a
- }
- ;
- goog.addSingletonGetter(goog.ui.ContainerRenderer);
- goog.ui.ContainerRenderer.getCustomRenderer = function (a, b) {
- var c = new a;
- c.getCssClass = function () {
- return b
- }
- ;
- return c
- }
- ;
- goog.ui.ContainerRenderer.CSS_CLASS = "goog-container";
- goog.ui.ContainerRenderer.prototype.getAriaRole = function () {
- return this.ariaRole_
- }
- ;
- goog.ui.ContainerRenderer.prototype.enableTabIndex = function (a, b) {
- a && (a.tabIndex = b ? 0 : -1)
- }
- ;
- goog.ui.ContainerRenderer.prototype.createDom = function (a) {
- return a.getDomHelper().createDom("DIV", this.getClassNames(a).join(" "))
- }
- ;
- goog.ui.ContainerRenderer.prototype.getContentElement = function (a) {
- return a
- }
- ;
- goog.ui.ContainerRenderer.prototype.canDecorate = function (a) {
- return "DIV" == a.tagName
- }
- ;
- goog.ui.ContainerRenderer.prototype.decorate = function (a, b) {
- b.id && a.setId(b.id);
- var c = this.getCssClass()
- , d = !1
- , e = goog.dom.classlist.get(b);
- e && goog.array.forEach(e, function (b) {
- b == c ? d = !0 : b && this.setStateFromClassName(a, b, c)
- }, this);
- d || goog.dom.classlist.add(b, c);
- this.decorateChildren(a, this.getContentElement(b));
- return b
- }
- ;
- goog.ui.ContainerRenderer.prototype.setStateFromClassName = function (a, b, c) {
- b == c + "-disabled" ? a.setEnabled(!1) : b == c + "-horizontal" ? a.setOrientation(goog.ui.Container.Orientation.HORIZONTAL) : b == c + "-vertical" && a.setOrientation(goog.ui.Container.Orientation.VERTICAL)
- }
- ;
- goog.ui.ContainerRenderer.prototype.decorateChildren = function (a, b, c) {
- if (b) {
- c = c || b.firstChild;
- for (var d; c && c.parentNode == b;) {
- d = c.nextSibling;
- if (c.nodeType == goog.dom.NodeType.ELEMENT) {
- var e = this.getDecoratorForChild(c);
- e && (e.setElementInternal(c),
- a.isEnabled() || e.setEnabled(!1),
- a.addChild(e),
- e.decorate(c))
- } else
- c.nodeValue && "" != goog.string.trim(c.nodeValue) || b.removeChild(c);
- c = d
- }
- }
- }
- ;
- goog.ui.ContainerRenderer.prototype.getDecoratorForChild = function (a) {
- return goog.ui.registry.getDecorator(a)
- }
- ;
- goog.ui.ContainerRenderer.prototype.initializeDom = function (a) {
- a = a.getElement();
- goog.asserts.assert(a, "The container DOM element cannot be null.");
- goog.style.setUnselectable(a, !0, goog.userAgent.GECKO);
- goog.userAgent.IE && (a.hideFocus = !0);
- var b = this.getAriaRole();
- b && goog.a11y.aria.setRole(a, b)
- }
- ;
- goog.ui.ContainerRenderer.prototype.getKeyEventTarget = function (a) {
- return a.getElement()
- }
- ;
- goog.ui.ContainerRenderer.prototype.getCssClass = function () {
- return goog.ui.ContainerRenderer.CSS_CLASS
- }
- ;
- goog.ui.ContainerRenderer.prototype.getClassNames = function (a) {
- var b = this.getCssClass()
- , c = a.getOrientation() == goog.ui.Container.Orientation.HORIZONTAL;
- c = [b, c ? b + "-horizontal" : b + "-vertical"];
- a.isEnabled() || c.push(b + "-disabled");
- return c
- }
- ;
- goog.ui.ContainerRenderer.prototype.getDefaultOrientation = function () {
- return goog.ui.Container.Orientation.VERTICAL
- }
- ;
- goog.ui.ControlRenderer = function () { }
- ;
- goog.addSingletonGetter(goog.ui.ControlRenderer);
- goog.tagUnsealableClass(goog.ui.ControlRenderer);
- goog.ui.ControlRenderer.getCustomRenderer = function (a, b) {
- var c = new a;
- c.getCssClass = function () {
- return b
- }
- ;
- return c
- }
- ;
- goog.ui.ControlRenderer.CSS_CLASS = "goog-control";
- goog.ui.ControlRenderer.IE6_CLASS_COMBINATIONS = [];
- goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_ = goog.object.create(goog.a11y.aria.Role.BUTTON, goog.a11y.aria.State.PRESSED, goog.a11y.aria.Role.CHECKBOX, goog.a11y.aria.State.CHECKED, goog.a11y.aria.Role.MENU_ITEM, goog.a11y.aria.State.SELECTED, goog.a11y.aria.Role.MENU_ITEM_CHECKBOX, goog.a11y.aria.State.CHECKED, goog.a11y.aria.Role.MENU_ITEM_RADIO, goog.a11y.aria.State.CHECKED, goog.a11y.aria.Role.RADIO, goog.a11y.aria.State.CHECKED, goog.a11y.aria.Role.TAB, goog.a11y.aria.State.SELECTED, goog.a11y.aria.Role.TREEITEM, goog.a11y.aria.State.SELECTED);
- goog.ui.ControlRenderer.prototype.getAriaRole = function () { }
- ;
- goog.ui.ControlRenderer.prototype.createDom = function (a) {
- return a.getDomHelper().createDom("DIV", this.getClassNames(a).join(" "), a.getContent())
- }
- ;
- goog.ui.ControlRenderer.prototype.getContentElement = function (a) {
- return a
- }
- ;
- goog.ui.ControlRenderer.prototype.enableClassName = function (a, b, c) {
- if (a = a.getElement ? a.getElement() : a) {
- var d = [b];
- goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("7") && (d = this.getAppliedCombinedClassNames_(goog.dom.classlist.get(a), b),
- d.push(b));
- goog.dom.classlist.enableAll(a, d, c)
- }
- }
- ;
- goog.ui.ControlRenderer.prototype.enableExtraClassName = function (a, b, c) {
- this.enableClassName(a, b, c)
- }
- ;
- goog.ui.ControlRenderer.prototype.canDecorate = function (a) {
- return !0
- }
- ;
- goog.ui.ControlRenderer.prototype.decorate = function (a, b) {
- b.id && a.setId(b.id);
- var c = this.getContentElement(b);
- c && c.firstChild ? a.setContentInternal(c.firstChild.nextSibling ? goog.array.clone(c.childNodes) : c.firstChild) : a.setContentInternal(null);
- var d = 0
- , e = this.getCssClass()
- , f = this.getStructuralCssClass()
- , g = !1
- , h = !1
- , k = !1
- , m = goog.array.toArray(goog.dom.classlist.get(b));
- goog.array.forEach(m, function (a) {
- g || a != e ? h || a != f ? d |= this.getStateFromClass(a) : h = !0 : (g = !0,
- f == e && (h = !0));
- this.getStateFromClass(a) == goog.ui.Component.State.DISABLED && (goog.asserts.assertElement(c),
- goog.dom.isFocusableTabIndex(c) && goog.dom.setFocusableTabIndex(c, !1))
- }, this);
- a.setStateInternal(d);
- g || (m.push(e),
- f == e && (h = !0));
- h || m.push(f);
- var p = a.getExtraClassNames();
- p && m.push.apply(m, p);
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("7")) {
- var l = this.getAppliedCombinedClassNames_(m);
- 0 < l.length && (m.push.apply(m, l),
- k = !0)
- }
- g && h && !p && !k || goog.dom.classlist.set(b, m.join(" "));
- return b
- }
- ;
- goog.ui.ControlRenderer.prototype.initializeDom = function (a) {
- a.isRightToLeft() && this.setRightToLeft(a.getElement(), !0);
- a.isEnabled() && this.setFocusable(a, a.isVisible())
- }
- ;
- goog.ui.ControlRenderer.prototype.setAriaRole = function (a, b) {
- var c = b || this.getAriaRole();
- if (c) {
- goog.asserts.assert(a, "The element passed as a first parameter cannot be null.");
- var d = goog.a11y.aria.getRole(a);
- c != d && goog.a11y.aria.setRole(a, c)
- }
- }
- ;
- goog.ui.ControlRenderer.prototype.setAriaStates = function (a, b) {
- goog.asserts.assert(a);
- goog.asserts.assert(b);
- var c = a.getAriaLabel();
- null != c && this.setAriaLabel(b, c);
- a.isVisible() || goog.a11y.aria.setState(b, goog.a11y.aria.State.HIDDEN, !a.isVisible());
- a.isEnabled() || this.updateAriaState(b, goog.ui.Component.State.DISABLED, !a.isEnabled());
- a.isSupportedState(goog.ui.Component.State.SELECTED) && this.updateAriaState(b, goog.ui.Component.State.SELECTED, a.isSelected());
- a.isSupportedState(goog.ui.Component.State.CHECKED) && this.updateAriaState(b, goog.ui.Component.State.CHECKED, a.isChecked());
- a.isSupportedState(goog.ui.Component.State.OPENED) && this.updateAriaState(b, goog.ui.Component.State.OPENED, a.isOpen())
- }
- ;
- goog.ui.ControlRenderer.prototype.setAriaLabel = function (a, b) {
- goog.a11y.aria.setLabel(a, b)
- }
- ;
- goog.ui.ControlRenderer.prototype.setAllowTextSelection = function (a, b) {
- goog.style.setUnselectable(a, !b, !goog.userAgent.IE && !goog.userAgent.OPERA)
- }
- ;
- goog.ui.ControlRenderer.prototype.setRightToLeft = function (a, b) {
- this.enableClassName(a, this.getStructuralCssClass() + "-rtl", b)
- }
- ;
- goog.ui.ControlRenderer.prototype.isFocusable = function (a) {
- var b;
- return a.isSupportedState(goog.ui.Component.State.FOCUSED) && (b = a.getKeyEventTarget()) ? goog.dom.isFocusableTabIndex(b) : !1
- }
- ;
- goog.ui.ControlRenderer.prototype.setFocusable = function (a, b) {
- var c;
- if (a.isSupportedState(goog.ui.Component.State.FOCUSED) && (c = a.getKeyEventTarget())) {
- if (!b && a.isFocused()) {
- try {
- c.blur()
- } catch (d) { }
- a.isFocused() && a.handleBlur(null)
- }
- goog.dom.isFocusableTabIndex(c) != b && goog.dom.setFocusableTabIndex(c, b)
- }
- }
- ;
- goog.ui.ControlRenderer.prototype.setVisible = function (a, b) {
- goog.style.setElementShown(a, b);
- a && goog.a11y.aria.setState(a, goog.a11y.aria.State.HIDDEN, !b)
- }
- ;
- goog.ui.ControlRenderer.prototype.setState = function (a, b, c) {
- var d = a.getElement();
- if (d) {
- var e = this.getClassForState(b);
- e && this.enableClassName(a, e, c);
- this.updateAriaState(d, b, c)
- }
- }
- ;
- goog.ui.ControlRenderer.prototype.updateAriaState = function (a, b, c) {
- goog.ui.ControlRenderer.ariaAttributeMap_ || (goog.ui.ControlRenderer.ariaAttributeMap_ = goog.object.create(goog.ui.Component.State.DISABLED, goog.a11y.aria.State.DISABLED, goog.ui.Component.State.SELECTED, goog.a11y.aria.State.SELECTED, goog.ui.Component.State.CHECKED, goog.a11y.aria.State.CHECKED, goog.ui.Component.State.OPENED, goog.a11y.aria.State.EXPANDED));
- goog.asserts.assert(a, "The element passed as a first parameter cannot be null.");
- (b = goog.ui.ControlRenderer.getAriaStateForAriaRole_(a, goog.ui.ControlRenderer.ariaAttributeMap_[b])) && goog.a11y.aria.setState(a, b, c)
- }
- ;
- goog.ui.ControlRenderer.getAriaStateForAriaRole_ = function (a, b) {
- var c = goog.a11y.aria.getRole(a);
- if (!c)
- return b;
- c = goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_[c] || b;
- return goog.ui.ControlRenderer.isAriaState_(b) ? c : b
- }
- ;
- goog.ui.ControlRenderer.isAriaState_ = function (a) {
- return a == goog.a11y.aria.State.CHECKED || a == goog.a11y.aria.State.SELECTED
- }
- ;
- goog.ui.ControlRenderer.prototype.setContent = function (a, b) {
- var c = this.getContentElement(a);
- if (c && (goog.dom.removeChildren(c),
- b))
- if ("string" === typeof b)
- goog.dom.setTextContent(c, b);
- else {
- var d = function (a) {
- if (a) {
- var b = goog.dom.getOwnerDocument(c);
- c.appendChild("string" === typeof a ? b.createTextNode(a) : a)
- }
- };
- goog.isArray(b) ? goog.array.forEach(b, d) : !goog.isArrayLike(b) || "nodeType" in b ? d(b) : goog.array.forEach(goog.array.clone(b), d)
- }
- }
- ;
- goog.ui.ControlRenderer.prototype.getKeyEventTarget = function (a) {
- return a.getElement()
- }
- ;
- goog.ui.ControlRenderer.prototype.getCssClass = function () {
- return goog.ui.ControlRenderer.CSS_CLASS
- }
- ;
- goog.ui.ControlRenderer.prototype.getIe6ClassCombinations = function () {
- return []
- }
- ;
- goog.ui.ControlRenderer.prototype.getStructuralCssClass = function () {
- return this.getCssClass()
- }
- ;
- goog.ui.ControlRenderer.prototype.getClassNames = function (a) {
- var b = this.getCssClass()
- , c = [b]
- , d = this.getStructuralCssClass();
- d != b && c.push(d);
- b = this.getClassNamesForState(a.getState());
- c.push.apply(c, b);
- (a = a.getExtraClassNames()) && c.push.apply(c, a);
- goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("7") && c.push.apply(c, this.getAppliedCombinedClassNames_(c));
- return c
- }
- ;
- goog.ui.ControlRenderer.prototype.getAppliedCombinedClassNames_ = function (a, b) {
- var c = [];
- b && (a = goog.array.concat(a, [b]));
- goog.array.forEach(this.getIe6ClassCombinations(), function (d) {
- !goog.array.every(d, goog.partial(goog.array.contains, a)) || b && !goog.array.contains(d, b) || c.push(d.join("_"))
- });
- return c
- }
- ;
- goog.ui.ControlRenderer.prototype.getClassNamesForState = function (a) {
- for (var b = []; a;) {
- var c = a & -a;
- b.push(this.getClassForState(c));
- a &= ~c
- }
- return b
- }
- ;
- goog.ui.ControlRenderer.prototype.getClassForState = function (a) {
- this.classByState_ || this.createClassByStateMap_();
- return this.classByState_[a]
- }
- ;
- goog.ui.ControlRenderer.prototype.getStateFromClass = function (a) {
- this.stateByClass_ || this.createStateByClassMap_();
- a = parseInt(this.stateByClass_[a], 10);
- return isNaN(a) ? 0 : a
- }
- ;
- goog.ui.ControlRenderer.prototype.createClassByStateMap_ = function () {
- var a = this.getStructuralCssClass()
- , b = !goog.string.contains(goog.string.normalizeWhitespace(a), " ");
- goog.asserts.assert(b, "ControlRenderer has an invalid css class: '" + a + "'");
- this.classByState_ = goog.object.create(goog.ui.Component.State.DISABLED, a + "-disabled", goog.ui.Component.State.HOVER, a + "-hover", goog.ui.Component.State.ACTIVE, a + "-active", goog.ui.Component.State.SELECTED, a + "-selected", goog.ui.Component.State.CHECKED, a + "-checked", goog.ui.Component.State.FOCUSED, a + "-focused", goog.ui.Component.State.OPENED, a + "-open")
- }
- ;
- goog.ui.ControlRenderer.prototype.createStateByClassMap_ = function () {
- this.classByState_ || this.createClassByStateMap_();
- this.stateByClass_ = goog.object.transpose(this.classByState_)
- }
- ;
- goog.ui.Control = function (a, b, c) {
- goog.ui.Component.call(this, c);
- this.renderer_ = b || goog.ui.registry.getDefaultRenderer(this.constructor);
- this.setContentInternal(void 0 !== a ? a : null);
- this.ariaLabel_ = null
- }
- ;
- goog.inherits(goog.ui.Control, goog.ui.Component);
- goog.tagUnsealableClass(goog.ui.Control);
- goog.ui.Control.registerDecorator = goog.ui.registry.setDecoratorByClassName;
- goog.ui.Control.getDecorator = goog.ui.registry.getDecorator;
- goog.ui.Control.prototype.content_ = null;
- goog.ui.Control.prototype.state_ = 0;
- goog.ui.Control.prototype.supportedStates_ = goog.ui.Component.State.DISABLED | goog.ui.Component.State.HOVER | goog.ui.Component.State.ACTIVE | goog.ui.Component.State.FOCUSED;
- goog.ui.Control.prototype.autoStates_ = goog.ui.Component.State.ALL;
- goog.ui.Control.prototype.statesWithTransitionEvents_ = 0;
- goog.ui.Control.prototype.visible_ = !0;
- goog.ui.Control.prototype.extraClassNames_ = null;
- goog.ui.Control.prototype.handleMouseEvents_ = !0;
- goog.ui.Control.prototype.allowTextSelection_ = !1;
- goog.ui.Control.prototype.preferredAriaRole_ = null;
- goog.ui.Control.prototype.isHandleMouseEvents = function () {
- return this.handleMouseEvents_
- }
- ;
- goog.ui.Control.prototype.setHandleMouseEvents = function (a) {
- this.isInDocument() && a != this.handleMouseEvents_ && this.enableMouseEventHandling_(a);
- this.handleMouseEvents_ = a
- }
- ;
- goog.ui.Control.prototype.getKeyEventTarget = function () {
- return this.renderer_.getKeyEventTarget(this)
- }
- ;
- goog.ui.Control.prototype.getKeyHandler = function () {
- return this.keyHandler_ || (this.keyHandler_ = new goog.events.KeyHandler)
- }
- ;
- goog.ui.Control.prototype.getRenderer = function () {
- return this.renderer_
- }
- ;
- goog.ui.Control.prototype.setRenderer = function (a) {
- if (this.isInDocument())
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.getElement() && this.setElementInternal(null);
- this.renderer_ = a
- }
- ;
- goog.ui.Control.prototype.getExtraClassNames = function () {
- return this.extraClassNames_
- }
- ;
- goog.ui.Control.prototype.addClassName = function (a) {
- a && (this.extraClassNames_ ? goog.array.contains(this.extraClassNames_, a) || this.extraClassNames_.push(a) : this.extraClassNames_ = [a],
- this.renderer_.enableExtraClassName(this, a, !0))
- }
- ;
- goog.ui.Control.prototype.removeClassName = function (a) {
- a && this.extraClassNames_ && goog.array.remove(this.extraClassNames_, a) && (0 == this.extraClassNames_.length && (this.extraClassNames_ = null),
- this.renderer_.enableExtraClassName(this, a, !1))
- }
- ;
- goog.ui.Control.prototype.enableClassName = function (a, b) {
- b ? this.addClassName(a) : this.removeClassName(a)
- }
- ;
- goog.ui.Control.prototype.createDom = function () {
- var a = this.renderer_.createDom(this);
- this.setElementInternal(a);
- this.renderer_.setAriaRole(a, this.getPreferredAriaRole());
- this.isAllowTextSelection() || this.renderer_.setAllowTextSelection(a, !1);
- this.isVisible() || this.renderer_.setVisible(a, !1)
- }
- ;
- goog.ui.Control.prototype.getPreferredAriaRole = function () {
- return this.preferredAriaRole_
- }
- ;
- goog.ui.Control.prototype.setPreferredAriaRole = function (a) {
- this.preferredAriaRole_ = a
- }
- ;
- goog.ui.Control.prototype.getAriaLabel = function () {
- return this.ariaLabel_
- }
- ;
- goog.ui.Control.prototype.setAriaLabel = function (a) {
- this.ariaLabel_ = a;
- var b = this.getElement();
- b && this.renderer_.setAriaLabel(b, a)
- }
- ;
- goog.ui.Control.prototype.getContentElement = function () {
- return this.renderer_.getContentElement(this.getElement())
- }
- ;
- goog.ui.Control.prototype.canDecorate = function (a) {
- return this.renderer_.canDecorate(a)
- }
- ;
- goog.ui.Control.prototype.decorateInternal = function (a) {
- a = this.renderer_.decorate(this, a);
- this.setElementInternal(a);
- this.renderer_.setAriaRole(a, this.getPreferredAriaRole());
- this.isAllowTextSelection() || this.renderer_.setAllowTextSelection(a, !1);
- this.visible_ = "none" != a.style.display
- }
- ;
- goog.ui.Control.prototype.enterDocument = function () {
- goog.ui.Control.superClass_.enterDocument.call(this);
- this.renderer_.setAriaStates(this, this.getElementStrict());
- this.renderer_.initializeDom(this);
- if (this.supportedStates_ & ~goog.ui.Component.State.DISABLED && (this.isHandleMouseEvents() && this.enableMouseEventHandling_(!0),
- this.isSupportedState(goog.ui.Component.State.FOCUSED))) {
- var a = this.getKeyEventTarget();
- if (a) {
- var b = this.getKeyHandler();
- b.attach(a);
- this.getHandler().listen(b, goog.events.KeyHandler.EventType.KEY, this.handleKeyEvent).listen(a, goog.events.EventType.FOCUS, this.handleFocus).listen(a, goog.events.EventType.BLUR, this.handleBlur)
- }
- }
- }
- ;
- goog.ui.Control.prototype.enableMouseEventHandling_ = function (a) {
- var b = goog.ui.ComponentUtil.getMouseEventType(this)
- , c = this.getHandler()
- , d = this.getElement();
- a ? (c.listen(d, b.MOUSEDOWN, this.handleMouseDown).listen(d, [b.MOUSEUP, b.MOUSECANCEL], this.handleMouseUp).listen(d, goog.events.EventType.MOUSEOVER, this.handleMouseOver).listen(d, goog.events.EventType.MOUSEOUT, this.handleMouseOut),
- this.pointerEventsEnabled() && c.listen(d, goog.events.EventType.GOTPOINTERCAPTURE, this.preventPointerCapture_),
- this.handleContextMenu != goog.nullFunction && c.listen(d, goog.events.EventType.CONTEXTMENU, this.handleContextMenu),
- goog.userAgent.IE && (goog.userAgent.isVersionOrHigher(9) || c.listen(d, goog.events.EventType.DBLCLICK, this.handleDblClick),
- this.ieMouseEventSequenceSimulator_ || (this.ieMouseEventSequenceSimulator_ = new goog.ui.Control.IeMouseEventSequenceSimulator_(this),
- this.registerDisposable(this.ieMouseEventSequenceSimulator_)))) : (c.unlisten(d, b.MOUSEDOWN, this.handleMouseDown).unlisten(d, [b.MOUSEUP, b.MOUSECANCEL], this.handleMouseUp).unlisten(d, goog.events.EventType.MOUSEOVER, this.handleMouseOver).unlisten(d, goog.events.EventType.MOUSEOUT, this.handleMouseOut),
- this.pointerEventsEnabled() && c.unlisten(d, goog.events.EventType.GOTPOINTERCAPTURE, this.preventPointerCapture_),
- this.handleContextMenu != goog.nullFunction && c.unlisten(d, goog.events.EventType.CONTEXTMENU, this.handleContextMenu),
- goog.userAgent.IE && (goog.userAgent.isVersionOrHigher(9) || c.unlisten(d, goog.events.EventType.DBLCLICK, this.handleDblClick),
- goog.dispose(this.ieMouseEventSequenceSimulator_),
- this.ieMouseEventSequenceSimulator_ = null))
- }
- ;
- goog.ui.Control.prototype.exitDocument = function () {
- goog.ui.Control.superClass_.exitDocument.call(this);
- this.keyHandler_ && this.keyHandler_.detach();
- this.isVisible() && this.isEnabled() && this.renderer_.setFocusable(this, !1)
- }
- ;
- goog.ui.Control.prototype.disposeInternal = function () {
- goog.ui.Control.superClass_.disposeInternal.call(this);
- this.keyHandler_ && (this.keyHandler_.dispose(),
- delete this.keyHandler_);
- delete this.renderer_;
- this.ieMouseEventSequenceSimulator_ = this.extraClassNames_ = this.content_ = null
- }
- ;
- goog.ui.Control.prototype.getContent = function () {
- return this.content_
- }
- ;
- goog.ui.Control.prototype.setContent = function (a) {
- this.renderer_.setContent(this.getElement(), a);
- this.setContentInternal(a)
- }
- ;
- goog.ui.Control.prototype.setContentInternal = function (a) {
- this.content_ = a
- }
- ;
- goog.ui.Control.prototype.getCaption = function () {
- var a = this.getContent();
- if (!a)
- return "";
- a = "string" === typeof a ? a : goog.isArray(a) ? goog.array.map(a, goog.dom.getRawTextContent).join("") : goog.dom.getTextContent(a);
- return goog.string.collapseBreakingSpaces(a)
- }
- ;
- goog.ui.Control.prototype.setCaption = function (a) {
- this.setContent(a)
- }
- ;
- goog.ui.Control.prototype.setRightToLeft = function (a) {
- goog.ui.Control.superClass_.setRightToLeft.call(this, a);
- var b = this.getElement();
- b && this.renderer_.setRightToLeft(b, a)
- }
- ;
- goog.ui.Control.prototype.isAllowTextSelection = function () {
- return this.allowTextSelection_
- }
- ;
- goog.ui.Control.prototype.setAllowTextSelection = function (a) {
- this.allowTextSelection_ = a;
- var b = this.getElement();
- b && this.renderer_.setAllowTextSelection(b, a)
- }
- ;
- goog.ui.Control.prototype.isVisible = function () {
- return this.visible_
- }
- ;
- goog.ui.Control.prototype.setVisible = function (a, b) {
- if (b || this.visible_ != a && this.dispatchEvent(a ? goog.ui.Component.EventType.SHOW : goog.ui.Component.EventType.HIDE)) {
- var c = this.getElement();
- c && this.renderer_.setVisible(c, a);
- this.isEnabled() && this.renderer_.setFocusable(this, a);
- this.visible_ = a;
- return !0
- }
- return !1
- }
- ;
- goog.ui.Control.prototype.isEnabled = function () {
- return !this.hasState(goog.ui.Component.State.DISABLED)
- }
- ;
- goog.ui.Control.prototype.isParentDisabled_ = function () {
- var a = this.getParent();
- return !!a && "function" == typeof a.isEnabled && !a.isEnabled()
- }
- ;
- goog.ui.Control.prototype.setEnabled = function (a) {
- !this.isParentDisabled_() && this.isTransitionAllowed(goog.ui.Component.State.DISABLED, !a) && (a || (this.setActive(!1),
- this.setHighlighted(!1)),
- this.isVisible() && this.renderer_.setFocusable(this, a),
- this.setState(goog.ui.Component.State.DISABLED, !a, !0))
- }
- ;
- goog.ui.Control.prototype.isHighlighted = function () {
- return this.hasState(goog.ui.Component.State.HOVER)
- }
- ;
- goog.ui.Control.prototype.setHighlighted = function (a) {
- this.isTransitionAllowed(goog.ui.Component.State.HOVER, a) && this.setState(goog.ui.Component.State.HOVER, a)
- }
- ;
- goog.ui.Control.prototype.isActive = function () {
- return this.hasState(goog.ui.Component.State.ACTIVE)
- }
- ;
- goog.ui.Control.prototype.setActive = function (a) {
- this.isTransitionAllowed(goog.ui.Component.State.ACTIVE, a) && this.setState(goog.ui.Component.State.ACTIVE, a)
- }
- ;
- goog.ui.Control.prototype.isSelected = function () {
- return this.hasState(goog.ui.Component.State.SELECTED)
- }
- ;
- goog.ui.Control.prototype.setSelected = function (a) {
- this.isTransitionAllowed(goog.ui.Component.State.SELECTED, a) && this.setState(goog.ui.Component.State.SELECTED, a)
- }
- ;
- goog.ui.Control.prototype.isChecked = function () {
- return this.hasState(goog.ui.Component.State.CHECKED)
- }
- ;
- goog.ui.Control.prototype.setChecked = function (a) {
- this.isTransitionAllowed(goog.ui.Component.State.CHECKED, a) && this.setState(goog.ui.Component.State.CHECKED, a)
- }
- ;
- goog.ui.Control.prototype.isFocused = function () {
- return this.hasState(goog.ui.Component.State.FOCUSED)
- }
- ;
- goog.ui.Control.prototype.setFocused = function (a) {
- this.isTransitionAllowed(goog.ui.Component.State.FOCUSED, a) && this.setState(goog.ui.Component.State.FOCUSED, a)
- }
- ;
- goog.ui.Control.prototype.isOpen = function () {
- return this.hasState(goog.ui.Component.State.OPENED)
- }
- ;
- goog.ui.Control.prototype.setOpen = function (a) {
- this.isTransitionAllowed(goog.ui.Component.State.OPENED, a) && this.setState(goog.ui.Component.State.OPENED, a)
- }
- ;
- goog.ui.Control.prototype.getState = function () {
- return this.state_
- }
- ;
- goog.ui.Control.prototype.hasState = function (a) {
- return !!(this.state_ & a)
- }
- ;
- goog.ui.Control.prototype.setState = function (a, b, c) {
- c || a != goog.ui.Component.State.DISABLED ? this.isSupportedState(a) && b != this.hasState(a) && (this.renderer_.setState(this, a, b),
- this.state_ = b ? this.state_ | a : this.state_ & ~a) : this.setEnabled(!b)
- }
- ;
- goog.ui.Control.prototype.setStateInternal = function (a) {
- this.state_ = a
- }
- ;
- goog.ui.Control.prototype.isSupportedState = function (a) {
- return !!(this.supportedStates_ & a)
- }
- ;
- goog.ui.Control.prototype.setSupportedState = function (a, b) {
- if (this.isInDocument() && this.hasState(a) && !b)
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- !b && this.hasState(a) && this.setState(a, !1);
- this.supportedStates_ = b ? this.supportedStates_ | a : this.supportedStates_ & ~a
- }
- ;
- goog.ui.Control.prototype.isAutoState = function (a) {
- return !!(this.autoStates_ & a) && this.isSupportedState(a)
- }
- ;
- goog.ui.Control.prototype.setAutoStates = function (a, b) {
- this.autoStates_ = b ? this.autoStates_ | a : this.autoStates_ & ~a
- }
- ;
- goog.ui.Control.prototype.isDispatchTransitionEvents = function (a) {
- return !!(this.statesWithTransitionEvents_ & a) && this.isSupportedState(a)
- }
- ;
- goog.ui.Control.prototype.setDispatchTransitionEvents = function (a, b) {
- this.statesWithTransitionEvents_ = b ? this.statesWithTransitionEvents_ | a : this.statesWithTransitionEvents_ & ~a
- }
- ;
- goog.ui.Control.prototype.isTransitionAllowed = function (a, b) {
- return this.isSupportedState(a) && this.hasState(a) != b && (!(this.statesWithTransitionEvents_ & a) || this.dispatchEvent(goog.ui.Component.getStateTransitionEvent(a, b))) && !this.isDisposed()
- }
- ;
- goog.ui.Control.prototype.handleMouseOver = function (a) {
- !goog.ui.Control.isMouseEventWithinElement_(a, this.getElement()) && this.dispatchEvent(goog.ui.Component.EventType.ENTER) && this.isEnabled() && this.isAutoState(goog.ui.Component.State.HOVER) && this.setHighlighted(!0)
- }
- ;
- goog.ui.Control.prototype.handleMouseOut = function (a) {
- !goog.ui.Control.isMouseEventWithinElement_(a, this.getElement()) && this.dispatchEvent(goog.ui.Component.EventType.LEAVE) && (this.isAutoState(goog.ui.Component.State.ACTIVE) && this.setActive(!1),
- this.isAutoState(goog.ui.Component.State.HOVER) && this.setHighlighted(!1))
- }
- ;
- goog.ui.Control.prototype.preventPointerCapture_ = function (a) {
- var b = a.target;
- b.releasePointerCapture && b.releasePointerCapture(a.pointerId)
- }
- ;
- goog.ui.Control.prototype.handleContextMenu = goog.nullFunction;
- goog.ui.Control.isMouseEventWithinElement_ = function (a, b) {
- return !!a.relatedTarget && goog.dom.contains(b, a.relatedTarget)
- }
- ;
- goog.ui.Control.prototype.handleMouseDown = function (a) {
- this.isEnabled() && (this.isAutoState(goog.ui.Component.State.HOVER) && this.setHighlighted(!0),
- a.isMouseActionButton() && (this.isAutoState(goog.ui.Component.State.ACTIVE) && this.setActive(!0),
- this.renderer_ && this.renderer_.isFocusable(this) && this.getKeyEventTarget().focus()));
- !this.isAllowTextSelection() && a.isMouseActionButton() && a.preventDefault()
- }
- ;
- goog.ui.Control.prototype.handleMouseUp = function (a) {
- this.isEnabled() && (this.isAutoState(goog.ui.Component.State.HOVER) && this.setHighlighted(!0),
- this.isActive() && this.performActionInternal(a) && this.isAutoState(goog.ui.Component.State.ACTIVE) && this.setActive(!1))
- }
- ;
- goog.ui.Control.prototype.handleDblClick = function (a) {
- this.isEnabled() && this.performActionInternal(a)
- }
- ;
- goog.ui.Control.prototype.performActionInternal = function (a) {
- this.isAutoState(goog.ui.Component.State.CHECKED) && this.setChecked(!this.isChecked());
- this.isAutoState(goog.ui.Component.State.SELECTED) && this.setSelected(!0);
- this.isAutoState(goog.ui.Component.State.OPENED) && this.setOpen(!this.isOpen());
- var b = new goog.events.Event(goog.ui.Component.EventType.ACTION, this);
- a && (b.altKey = a.altKey,
- b.ctrlKey = a.ctrlKey,
- b.metaKey = a.metaKey,
- b.shiftKey = a.shiftKey,
- b.platformModifierKey = a.platformModifierKey);
- return this.dispatchEvent(b)
- }
- ;
- goog.ui.Control.prototype.handleFocus = function (a) {
- this.isAutoState(goog.ui.Component.State.FOCUSED) && this.setFocused(!0)
- }
- ;
- goog.ui.Control.prototype.handleBlur = function (a) {
- this.isAutoState(goog.ui.Component.State.ACTIVE) && this.setActive(!1);
- this.isAutoState(goog.ui.Component.State.FOCUSED) && this.setFocused(!1)
- }
- ;
- goog.ui.Control.prototype.handleKeyEvent = function (a) {
- return this.isVisible() && this.isEnabled() && this.handleKeyEventInternal(a) ? (a.preventDefault(),
- a.stopPropagation(),
- !0) : !1
- }
- ;
- goog.ui.Control.prototype.handleKeyEventInternal = function (a) {
- return a.keyCode == goog.events.KeyCodes.ENTER && this.performActionInternal(a)
- }
- ;
- goog.ui.registry.setDefaultRenderer(goog.ui.Control, goog.ui.ControlRenderer);
- goog.ui.registry.setDecoratorByClassName(goog.ui.ControlRenderer.CSS_CLASS, function () {
- return new goog.ui.Control(null)
- });
- goog.ui.Control.IeMouseEventSequenceSimulator_ = function (a) {
- goog.Disposable.call(this);
- this.control_ = a;
- this.clickExpected_ = !1;
- this.handler_ = new goog.events.EventHandler(this);
- this.registerDisposable(this.handler_);
- var b = this.control_.getElementStrict();
- a = goog.ui.ComponentUtil.getMouseEventType(a);
- this.handler_.listen(b, a.MOUSEDOWN, this.handleMouseDown_).listen(b, a.MOUSEUP, this.handleMouseUp_).listen(b, goog.events.EventType.CLICK, this.handleClick_)
- }
- ;
- goog.inherits(goog.ui.Control.IeMouseEventSequenceSimulator_, goog.Disposable);
- goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_ = !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9);
- goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleMouseDown_ = function () {
- this.clickExpected_ = !1
- }
- ;
- goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleMouseUp_ = function () {
- this.clickExpected_ = !0
- }
- ;
- goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_ = function (a, b) {
- if (!goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_)
- return a.button = goog.events.BrowserEvent.MouseButton.LEFT,
- a.type = b,
- a;
- var c = document.createEvent("MouseEvents");
- c.initMouseEvent(b, a.bubbles, a.cancelable, a.view || null, a.detail, a.screenX, a.screenY, a.clientX, a.clientY, a.ctrlKey, a.altKey, a.shiftKey, a.metaKey, goog.events.BrowserEvent.MouseButton.LEFT, a.relatedTarget || null);
- return c
- }
- ;
- goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleClick_ = function (a) {
- if (this.clickExpected_)
- this.clickExpected_ = !1;
- else {
- var b = a.getBrowserEvent()
- , c = b.button
- , d = b.type
- , e = goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_(b, goog.events.EventType.MOUSEDOWN);
- this.control_.handleMouseDown(new goog.events.BrowserEvent(e, a.currentTarget));
- e = goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_(b, goog.events.EventType.MOUSEUP);
- this.control_.handleMouseUp(new goog.events.BrowserEvent(e, a.currentTarget));
- goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_ || (b.button = c,
- b.type = d)
- }
- }
- ;
- goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.disposeInternal = function () {
- this.control_ = null;
- goog.ui.Control.IeMouseEventSequenceSimulator_.superClass_.disposeInternal.call(this)
- }
- ;
- goog.ui.Container = function (a, b, c) {
- goog.ui.Component.call(this, c);
- this.renderer_ = b || goog.ui.ContainerRenderer.getInstance();
- this.orientation_ = a || this.renderer_.getDefaultOrientation()
- }
- ;
- goog.inherits(goog.ui.Container, goog.ui.Component);
- goog.tagUnsealableClass(goog.ui.Container);
- goog.ui.Container.EventType = {
- AFTER_SHOW: "aftershow",
- AFTER_HIDE: "afterhide"
- };
- goog.ui.Container.Orientation = {
- HORIZONTAL: "horizontal",
- VERTICAL: "vertical"
- };
- goog.ui.Container.prototype.keyEventTarget_ = null;
- goog.ui.Container.prototype.keyHandler_ = null;
- goog.ui.Container.prototype.renderer_ = null;
- goog.ui.Container.prototype.orientation_ = null;
- goog.ui.Container.prototype.visible_ = !0;
- goog.ui.Container.prototype.enabled_ = !0;
- goog.ui.Container.prototype.focusable_ = !0;
- goog.ui.Container.prototype.highlightedIndex_ = -1;
- goog.ui.Container.prototype.openItem_ = null;
- goog.ui.Container.prototype.mouseButtonPressed_ = !1;
- goog.ui.Container.prototype.allowFocusableChildren_ = !1;
- goog.ui.Container.prototype.openFollowsHighlight_ = !0;
- goog.ui.Container.prototype.childElementIdMap_ = null;
- goog.ui.Container.prototype.getKeyEventTarget = function () {
- return this.keyEventTarget_ || this.renderer_.getKeyEventTarget(this)
- }
- ;
- goog.ui.Container.prototype.setKeyEventTarget = function (a) {
- if (this.focusable_) {
- var b = this.getKeyEventTarget()
- , c = this.isInDocument();
- this.keyEventTarget_ = a;
- var d = this.getKeyEventTarget();
- c && (this.keyEventTarget_ = b,
- this.enableFocusHandling_(!1),
- this.keyEventTarget_ = a,
- this.getKeyHandler().attach(d),
- this.enableFocusHandling_(!0))
- } else
- throw Error("Can't set key event target for container that doesn't support keyboard focus!");
- }
- ;
- goog.ui.Container.prototype.getKeyHandler = function () {
- return this.keyHandler_ || (this.keyHandler_ = new goog.events.KeyHandler(this.getKeyEventTarget()))
- }
- ;
- goog.ui.Container.prototype.getRenderer = function () {
- return this.renderer_
- }
- ;
- goog.ui.Container.prototype.setRenderer = function (a) {
- if (this.getElement())
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.renderer_ = a
- }
- ;
- goog.ui.Container.prototype.createDom = function () {
- this.setElementInternal(this.renderer_.createDom(this))
- }
- ;
- goog.ui.Container.prototype.getContentElement = function () {
- return this.renderer_.getContentElement(this.getElement())
- }
- ;
- goog.ui.Container.prototype.canDecorate = function (a) {
- return this.renderer_.canDecorate(a)
- }
- ;
- goog.ui.Container.prototype.decorateInternal = function (a) {
- this.setElementInternal(this.renderer_.decorate(this, a));
- "none" == a.style.display && (this.visible_ = !1)
- }
- ;
- goog.ui.Container.prototype.enterDocument = function () {
- goog.ui.Container.superClass_.enterDocument.call(this);
- this.forEachChild(function (a) {
- a.isInDocument() && this.registerChildId_(a)
- }, this);
- var a = this.getElement();
- this.renderer_.initializeDom(this);
- this.setVisible(this.visible_, !0);
- var b = goog.ui.ComponentUtil.getMouseEventType(this);
- this.getHandler().listen(this, goog.ui.Component.EventType.ENTER, this.handleEnterItem).listen(this, goog.ui.Component.EventType.HIGHLIGHT, this.handleHighlightItem).listen(this, goog.ui.Component.EventType.UNHIGHLIGHT, this.handleUnHighlightItem).listen(this, goog.ui.Component.EventType.OPEN, this.handleOpenItem).listen(this, goog.ui.Component.EventType.CLOSE, this.handleCloseItem).listen(a, b.MOUSEDOWN, this.handleMouseDown).listen(goog.dom.getOwnerDocument(a), [b.MOUSEUP, b.MOUSECANCEL], this.handleDocumentMouseUp).listen(a, [b.MOUSEDOWN, b.MOUSEUP, b.MOUSECANCEL, goog.events.EventType.MOUSEOVER, goog.events.EventType.MOUSEOUT, goog.events.EventType.CONTEXTMENU], this.handleChildMouseEvents);
- this.pointerEventsEnabled() && this.getHandler().listen(a, goog.events.EventType.GOTPOINTERCAPTURE, this.preventPointerCapture_);
- this.isFocusable() && this.enableFocusHandling_(!0)
- }
- ;
- goog.ui.Container.prototype.preventPointerCapture_ = function (a) {
- var b = a.target;
- b.releasePointerCapture && b.releasePointerCapture(a.pointerId)
- }
- ;
- goog.ui.Container.prototype.enableFocusHandling_ = function (a) {
- var b = this.getHandler()
- , c = this.getKeyEventTarget();
- a ? b.listen(c, goog.events.EventType.FOCUS, this.handleFocus).listen(c, goog.events.EventType.BLUR, this.handleBlur).listen(this.getKeyHandler(), goog.events.KeyHandler.EventType.KEY, this.handleKeyEvent) : b.unlisten(c, goog.events.EventType.FOCUS, this.handleFocus).unlisten(c, goog.events.EventType.BLUR, this.handleBlur).unlisten(this.getKeyHandler(), goog.events.KeyHandler.EventType.KEY, this.handleKeyEvent)
- }
- ;
- goog.ui.Container.prototype.exitDocument = function () {
- this.setHighlightedIndex(-1);
- this.openItem_ && this.openItem_.setOpen(!1);
- this.mouseButtonPressed_ = !1;
- goog.ui.Container.superClass_.exitDocument.call(this)
- }
- ;
- goog.ui.Container.prototype.disposeInternal = function () {
- goog.ui.Container.superClass_.disposeInternal.call(this);
- this.keyHandler_ && (this.keyHandler_.dispose(),
- this.keyHandler_ = null);
- this.renderer_ = this.openItem_ = this.childElementIdMap_ = this.keyEventTarget_ = null
- }
- ;
- goog.ui.Container.prototype.handleEnterItem = function (a) {
- return !0
- }
- ;
- goog.ui.Container.prototype.handleHighlightItem = function (a) {
- var b = this.indexOfChild(a.target);
- if (-1 < b && b != this.highlightedIndex_) {
- var c = this.getHighlighted();
- c && c.setHighlighted(!1);
- this.highlightedIndex_ = b;
- c = this.getHighlighted();
- this.isMouseButtonPressed() && c.setActive(!0);
- this.openFollowsHighlight_ && this.openItem_ && c != this.openItem_ && (c.isSupportedState(goog.ui.Component.State.OPENED) ? c.setOpen(!0) : this.openItem_.setOpen(!1))
- }
- b = this.getElement();
- goog.asserts.assert(b, "The DOM element for the container cannot be null.");
- null != a.target.getElement() && goog.a11y.aria.setState(b, goog.a11y.aria.State.ACTIVEDESCENDANT, a.target.getElement().id)
- }
- ;
- goog.ui.Container.prototype.handleUnHighlightItem = function (a) {
- a.target == this.getHighlighted() && (this.highlightedIndex_ = -1);
- a = this.getElement();
- goog.asserts.assert(a, "The DOM element for the container cannot be null.");
- goog.a11y.aria.removeState(a, goog.a11y.aria.State.ACTIVEDESCENDANT)
- }
- ;
- goog.ui.Container.prototype.handleOpenItem = function (a) {
- (a = a.target) && a != this.openItem_ && a.getParent() == this && (this.openItem_ && this.openItem_.setOpen(!1),
- this.openItem_ = a)
- }
- ;
- goog.ui.Container.prototype.handleCloseItem = function (a) {
- a.target == this.openItem_ && (this.openItem_ = null);
- var b = this.getElement()
- , c = a.target.getElement();
- b && a.target.isHighlighted() && c && goog.a11y.aria.setActiveDescendant(b, c)
- }
- ;
- goog.ui.Container.prototype.handleMouseDown = function (a) {
- this.enabled_ && this.setMouseButtonPressed(!0);
- var b = this.getKeyEventTarget();
- b && goog.dom.isFocusableTabIndex(b) ? b.focus() : a.preventDefault()
- }
- ;
- goog.ui.Container.prototype.handleDocumentMouseUp = function (a) {
- this.setMouseButtonPressed(!1)
- }
- ;
- goog.ui.Container.prototype.handleChildMouseEvents = function (a) {
- var b = goog.ui.ComponentUtil.getMouseEventType(this)
- , c = this.getOwnerControl(a.target);
- if (c)
- switch (a.type) {
- case b.MOUSEDOWN:
- c.handleMouseDown(a);
- break;
- case b.MOUSEUP:
- case b.MOUSECANCEL:
- c.handleMouseUp(a);
- break;
- case goog.events.EventType.MOUSEOVER:
- c.handleMouseOver(a);
- break;
- case goog.events.EventType.MOUSEOUT:
- c.handleMouseOut(a);
- break;
- case goog.events.EventType.CONTEXTMENU:
- c.handleContextMenu(a)
- }
- }
- ;
- goog.ui.Container.prototype.getOwnerControl = function (a) {
- if (this.childElementIdMap_)
- for (var b = this.getElement(); a && a !== b;) {
- var c = a.id;
- if (c in this.childElementIdMap_)
- return this.childElementIdMap_[c];
- a = a.parentNode
- }
- return null
- }
- ;
- goog.ui.Container.prototype.handleFocus = function (a) { }
- ;
- goog.ui.Container.prototype.handleBlur = function (a) {
- this.setHighlightedIndex(-1);
- this.setMouseButtonPressed(!1);
- this.openItem_ && this.openItem_.setOpen(!1)
- }
- ;
- goog.ui.Container.prototype.handleKeyEvent = function (a) {
- return this.isEnabled() && this.isVisible() && (0 != this.getChildCount() || this.keyEventTarget_) && this.handleKeyEventInternal(a) ? (a.preventDefault(),
- a.stopPropagation(),
- !0) : !1
- }
- ;
- goog.ui.Container.prototype.handleKeyEventInternal = function (a) {
- var b = this.getHighlighted();
- if (b && "function" == typeof b.handleKeyEvent && b.handleKeyEvent(a) || this.openItem_ && this.openItem_ != b && "function" == typeof this.openItem_.handleKeyEvent && this.openItem_.handleKeyEvent(a))
- return !0;
- if (a.shiftKey || a.ctrlKey || a.metaKey || a.altKey)
- return !1;
- switch (a.keyCode) {
- case goog.events.KeyCodes.ESC:
- if (this.isFocusable())
- this.getKeyEventTarget().blur();
- else
- return !1;
- break;
- case goog.events.KeyCodes.HOME:
- this.highlightFirst();
- break;
- case goog.events.KeyCodes.END:
- this.highlightLast();
- break;
- case goog.events.KeyCodes.UP:
- if (this.orientation_ == goog.ui.Container.Orientation.VERTICAL)
- this.highlightPrevious();
- else
- return !1;
- break;
- case goog.events.KeyCodes.LEFT:
- if (this.orientation_ == goog.ui.Container.Orientation.HORIZONTAL)
- this.isRightToLeft() ? this.highlightNext() : this.highlightPrevious();
- else
- return !1;
- break;
- case goog.events.KeyCodes.DOWN:
- if (this.orientation_ == goog.ui.Container.Orientation.VERTICAL)
- this.highlightNext();
- else
- return !1;
- break;
- case goog.events.KeyCodes.RIGHT:
- if (this.orientation_ == goog.ui.Container.Orientation.HORIZONTAL)
- this.isRightToLeft() ? this.highlightPrevious() : this.highlightNext();
- else
- return !1;
- break;
- default:
- return !1
- }
- return !0
- }
- ;
- goog.ui.Container.prototype.registerChildId_ = function (a) {
- var b = a.getElement();
- b = b.id || (b.id = a.getId());
- this.childElementIdMap_ || (this.childElementIdMap_ = {});
- this.childElementIdMap_[b] = a
- }
- ;
- goog.ui.Container.prototype.addChild = function (a, b) {
- goog.asserts.assertInstanceof(a, goog.ui.Control, "The child of a container must be a control");
- goog.ui.Container.superClass_.addChild.call(this, a, b)
- }
- ;
- goog.ui.Container.prototype.addChildAt = function (a, b, c) {
- goog.asserts.assertInstanceof(a, goog.ui.Control);
- a.setDispatchTransitionEvents(goog.ui.Component.State.HOVER, !0);
- a.setDispatchTransitionEvents(goog.ui.Component.State.OPENED, !0);
- !this.isFocusable() && this.isFocusableChildrenAllowed() || a.setSupportedState(goog.ui.Component.State.FOCUSED, !1);
- a.setHandleMouseEvents(!1);
- var d = a.getParent() == this ? this.indexOfChild(a) : -1;
- goog.ui.Container.superClass_.addChildAt.call(this, a, b, c);
- a.isInDocument() && this.isInDocument() && this.registerChildId_(a);
- this.updateHighlightedIndex_(d, b)
- }
- ;
- goog.ui.Container.prototype.updateHighlightedIndex_ = function (a, b) {
- -1 == a && (a = this.getChildCount());
- a == this.highlightedIndex_ ? this.highlightedIndex_ = Math.min(this.getChildCount() - 1, b) : a > this.highlightedIndex_ && b <= this.highlightedIndex_ ? this.highlightedIndex_++ : a < this.highlightedIndex_ && b > this.highlightedIndex_ && this.highlightedIndex_--
- }
- ;
- goog.ui.Container.prototype.removeChild = function (a, b) {
- a = "string" === typeof a ? this.getChild(a) : a;
- goog.asserts.assertInstanceof(a, goog.ui.Control);
- if (a) {
- var c = this.indexOfChild(a);
- -1 != c && (c == this.highlightedIndex_ ? (a.setHighlighted(!1),
- this.highlightedIndex_ = -1) : c < this.highlightedIndex_ && this.highlightedIndex_--);
- (c = a.getElement()) && c.id && this.childElementIdMap_ && goog.object.remove(this.childElementIdMap_, c.id)
- }
- a = goog.ui.Container.superClass_.removeChild.call(this, a, b);
- a.setHandleMouseEvents(!0);
- return a
- }
- ;
- goog.ui.Container.prototype.getOrientation = function () {
- return this.orientation_
- }
- ;
- goog.ui.Container.prototype.setOrientation = function (a) {
- if (this.getElement())
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.orientation_ = a
- }
- ;
- goog.ui.Container.prototype.isVisible = function () {
- return this.visible_
- }
- ;
- goog.ui.Container.prototype.setVisible = function (a, b) {
- if (b || this.visible_ != a && this.dispatchEvent(a ? goog.ui.Component.EventType.SHOW : goog.ui.Component.EventType.HIDE)) {
- this.visible_ = a;
- var c = this.getElement();
- c && (goog.style.setElementShown(c, a),
- this.isFocusable() && this.renderer_.enableTabIndex(this.getKeyEventTarget(), this.enabled_ && this.visible_),
- b || this.dispatchEvent(this.visible_ ? goog.ui.Container.EventType.AFTER_SHOW : goog.ui.Container.EventType.AFTER_HIDE));
- return !0
- }
- return !1
- }
- ;
- goog.ui.Container.prototype.isEnabled = function () {
- return this.enabled_
- }
- ;
- goog.ui.Container.prototype.setEnabled = function (a) {
- this.enabled_ != a && this.dispatchEvent(a ? goog.ui.Component.EventType.ENABLE : goog.ui.Component.EventType.DISABLE) && (a ? (this.enabled_ = !0,
- this.forEachChild(function (a) {
- a.wasDisabled ? delete a.wasDisabled : a.setEnabled(!0)
- })) : (this.forEachChild(function (a) {
- a.isEnabled() ? a.setEnabled(!1) : a.wasDisabled = !0
- }),
- this.enabled_ = !1,
- this.setMouseButtonPressed(!1)),
- this.isFocusable() && this.renderer_.enableTabIndex(this.getKeyEventTarget(), a && this.visible_))
- }
- ;
- goog.ui.Container.prototype.isFocusable = function () {
- return this.focusable_
- }
- ;
- goog.ui.Container.prototype.setFocusable = function (a) {
- a != this.focusable_ && this.isInDocument() && this.enableFocusHandling_(a);
- this.focusable_ = a;
- this.enabled_ && this.visible_ && this.renderer_.enableTabIndex(this.getKeyEventTarget(), a)
- }
- ;
- goog.ui.Container.prototype.isFocusableChildrenAllowed = function () {
- return this.allowFocusableChildren_
- }
- ;
- goog.ui.Container.prototype.setFocusableChildrenAllowed = function (a) {
- this.allowFocusableChildren_ = a
- }
- ;
- goog.ui.Container.prototype.isOpenFollowsHighlight = function () {
- return this.openFollowsHighlight_
- }
- ;
- goog.ui.Container.prototype.setOpenFollowsHighlight = function (a) {
- this.openFollowsHighlight_ = a
- }
- ;
- goog.ui.Container.prototype.getHighlightedIndex = function () {
- return this.highlightedIndex_
- }
- ;
- goog.ui.Container.prototype.setHighlightedIndex = function (a) {
- (a = this.getChildAt(a)) ? a.setHighlighted(!0) : -1 < this.highlightedIndex_ && this.getHighlighted().setHighlighted(!1)
- }
- ;
- goog.ui.Container.prototype.setHighlighted = function (a) {
- this.setHighlightedIndex(this.indexOfChild(a))
- }
- ;
- goog.ui.Container.prototype.getHighlighted = function () {
- return this.getChildAt(this.highlightedIndex_)
- }
- ;
- goog.ui.Container.prototype.highlightFirst = function () {
- this.highlightHelper(function (a, b) {
- return (a + 1) % b
- }, this.getChildCount() - 1)
- }
- ;
- goog.ui.Container.prototype.highlightLast = function () {
- this.highlightHelper(function (a, b) {
- a--;
- return 0 > a ? b - 1 : a
- }, 0)
- }
- ;
- goog.ui.Container.prototype.highlightNext = function () {
- this.highlightHelper(function (a, b) {
- return (a + 1) % b
- }, this.highlightedIndex_)
- }
- ;
- goog.ui.Container.prototype.highlightPrevious = function () {
- this.highlightHelper(function (a, b) {
- a--;
- return 0 > a ? b - 1 : a
- }, this.highlightedIndex_)
- }
- ;
- goog.ui.Container.prototype.highlightHelper = function (a, b) {
- var c = 0 > b ? this.indexOfChild(this.openItem_) : b
- , d = this.getChildCount();
- c = a.call(this, c, d);
- for (var e = 0; e <= d;) {
- var f = this.getChildAt(c);
- if (f && this.canHighlightItem(f))
- return this.setHighlightedIndexFromKeyEvent(c),
- !0;
- e++;
- c = a.call(this, c, d)
- }
- return !1
- }
- ;
- goog.ui.Container.prototype.canHighlightItem = function (a) {
- return a.isVisible() && a.isEnabled() && a.isSupportedState(goog.ui.Component.State.HOVER)
- }
- ;
- goog.ui.Container.prototype.setHighlightedIndexFromKeyEvent = function (a) {
- this.setHighlightedIndex(a)
- }
- ;
- goog.ui.Container.prototype.getOpenItem = function () {
- return this.openItem_
- }
- ;
- goog.ui.Container.prototype.isMouseButtonPressed = function () {
- return this.mouseButtonPressed_
- }
- ;
- goog.ui.Container.prototype.setMouseButtonPressed = function (a) {
- this.mouseButtonPressed_ = a
- }
- ;
- goog.ui.MenuHeaderRenderer = function () {
- goog.ui.ControlRenderer.call(this)
- }
- ;
- goog.inherits(goog.ui.MenuHeaderRenderer, goog.ui.ControlRenderer);
- goog.addSingletonGetter(goog.ui.MenuHeaderRenderer);
- goog.ui.MenuHeaderRenderer.CSS_CLASS = "goog-menuheader";
- goog.ui.MenuHeaderRenderer.prototype.getCssClass = function () {
- return goog.ui.MenuHeaderRenderer.CSS_CLASS
- }
- ;
- goog.ui.MenuHeader = function (a, b, c) {
- goog.ui.Control.call(this, a, c || goog.ui.MenuHeaderRenderer.getInstance(), b);
- this.setSupportedState(goog.ui.Component.State.DISABLED, !1);
- this.setSupportedState(goog.ui.Component.State.HOVER, !1);
- this.setSupportedState(goog.ui.Component.State.ACTIVE, !1);
- this.setSupportedState(goog.ui.Component.State.FOCUSED, !1);
- this.setStateInternal(goog.ui.Component.State.DISABLED)
- }
- ;
- goog.inherits(goog.ui.MenuHeader, goog.ui.Control);
- goog.ui.registry.setDecoratorByClassName(goog.ui.MenuHeaderRenderer.CSS_CLASS, function () {
- return new goog.ui.MenuHeader(null)
- });
- goog.ui.MenuItemRenderer = function () {
- goog.ui.ControlRenderer.call(this);
- this.classNameCache_ = []
- }
- ;
- goog.inherits(goog.ui.MenuItemRenderer, goog.ui.ControlRenderer);
- goog.addSingletonGetter(goog.ui.MenuItemRenderer);
- goog.ui.MenuItemRenderer.CSS_CLASS = "goog-menuitem";
- goog.ui.MenuItemRenderer.CompositeCssClassIndex_ = {
- HOVER: 0,
- CHECKBOX: 1,
- CONTENT: 2
- };
- goog.ui.MenuItemRenderer.prototype.allowTextSelection_ = true;
- goog.ui.MenuItemRenderer.prototype.getCompositeCssClass_ = function (a) {
- var b = this.classNameCache_[a];
- if (!b) {
- switch (a) {
- case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER:
- b = this.getStructuralCssClass() + "-highlight";
- break;
- case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX:
- b = this.getStructuralCssClass() + "-checkbox";
- break;
- case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT:
- b = this.getStructuralCssClass() + "-content"
- }
- this.classNameCache_[a] = b
- }
- return b
- }
- ;
- goog.ui.MenuItemRenderer.prototype.getAriaRole = function () {
- return goog.a11y.aria.Role.MENU_ITEM
- }
- ;
- goog.ui.MenuItemRenderer.prototype.createDom = function (a) {
- var b = a.getDomHelper().createDom("DIV", this.getClassNames(a).join(" "), this.createContent(a.getContent(), a.getDomHelper()));
- this.setEnableCheckBoxStructure(a, b, a.isSupportedState(goog.ui.Component.State.SELECTED) || a.isSupportedState(goog.ui.Component.State.CHECKED));
- return b
- }
- ;
- goog.ui.MenuItemRenderer.prototype.getContentElement = function (a) {
- return a && a.firstChild
- }
- ;
- goog.ui.MenuItemRenderer.prototype.decorate = function (a, b) {
- goog.asserts.assert(b);
- this.hasContentStructure(b) || b.appendChild(this.createContent(b.childNodes, a.getDomHelper()));
- goog.dom.classlist.contains(b, "goog-option") && (a.setCheckable(!0),
- this.setCheckable(a, b, !0));
- return goog.ui.MenuItemRenderer.superClass_.decorate.call(this, a, b)
- }
- ;
- goog.ui.MenuItemRenderer.prototype.setContent = function (a, b) {
- var c = this.getContentElement(a)
- , d = this.hasCheckBoxStructure(a) ? c.firstChild : null;
- goog.ui.MenuItemRenderer.superClass_.setContent.call(this, a, b);
- d && !this.hasCheckBoxStructure(a) && c.insertBefore(d, c.firstChild || null)
- }
- ;
- goog.ui.MenuItemRenderer.prototype.hasContentStructure = function (a) {
- a = goog.dom.getFirstElementChild(a);
- var b = this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);
- return !!a && goog.dom.classlist.contains(a, b)
- }
- ;
- goog.ui.MenuItemRenderer.prototype.createContent = function (a, b) {
- var c = this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);
- return b.createDom("DIV", c, a)
- }
- ;
- goog.ui.MenuItemRenderer.prototype.setSelectable = function (a, b, c) {
- a && b && this.setEnableCheckBoxStructure(a, b, c)
- }
- ;
- goog.ui.MenuItemRenderer.prototype.setCheckable = function (a, b, c) {
- a && b && this.setEnableCheckBoxStructure(a, b, c)
- }
- ;
- goog.ui.MenuItemRenderer.prototype.hasCheckBoxStructure = function (a) {
- if (a = this.getContentElement(a)) {
- a = a.firstChild;
- var b = this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX);
- return !!a && goog.dom.isElement(a) && goog.dom.classlist.contains(a, b)
- }
- return !1
- }
- ;
- goog.ui.MenuItemRenderer.prototype.setEnableCheckBoxStructure = function (a, b, c) {
- this.setAriaRole(b, a.getPreferredAriaRole());
- this.setAriaStates(a, b);
- c != this.hasCheckBoxStructure(b) && (goog.dom.classlist.enable(b, "goog-option", c),
- b = this.getContentElement(b),
- c ? (c = this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX),
- b.insertBefore(a.getDomHelper().createDom("DIV", c), b.firstChild || null)) : b.removeChild(b.firstChild))
- }
- ;
- goog.ui.MenuItemRenderer.prototype.getClassForState = function (a) {
- switch (a) {
- case goog.ui.Component.State.HOVER:
- return this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);
- case goog.ui.Component.State.CHECKED:
- case goog.ui.Component.State.SELECTED:
- return "goog-option-selected";
- default:
- return goog.ui.MenuItemRenderer.superClass_.getClassForState.call(this, a)
- }
- }
- ;
- goog.ui.MenuItemRenderer.prototype.getStateFromClass = function (a) {
- var b = this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);
- switch (a) {
- case "goog-option-selected":
- return goog.ui.Component.State.CHECKED;
- case b:
- return goog.ui.Component.State.HOVER;
- default:
- return goog.ui.MenuItemRenderer.superClass_.getStateFromClass.call(this, a)
- }
- }
- ;
- goog.ui.MenuItemRenderer.prototype.getCssClass = function () {
- return goog.ui.MenuItemRenderer.CSS_CLASS
- }
- ;
- goog.ui.MenuItem = function (a, b, c, d) {
- goog.ui.Control.call(this, a, d || goog.ui.MenuItemRenderer.getInstance(), c);
- this.setValue(b)
- }
- ;
- goog.inherits(goog.ui.MenuItem, goog.ui.Control);
- goog.tagUnsealableClass(goog.ui.MenuItem);
- goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_ = "goog-menuitem-mnemonic-separator";
- goog.ui.MenuItem.ACCELERATOR_CLASS = "goog-menuitem-accel";
- goog.ui.MenuItem.prototype.allowTextSelection_ = true;
- goog.ui.MenuItem.prototype.getValue = function () {
- var a = this.getModel();
- return null != a ? a : this.getCaption()
- }
- ;
- goog.ui.MenuItem.prototype.setValue = function (a) {
- this.setModel(a)
- }
- ;
- goog.ui.MenuItem.prototype.setSupportedState = function (a, b) {
- goog.ui.MenuItem.superClass_.setSupportedState.call(this, a, b);
- switch (a) {
- case goog.ui.Component.State.SELECTED:
- this.setSelectableInternal_(b);
- break;
- case goog.ui.Component.State.CHECKED:
- this.setCheckableInternal_(b)
- }
- }
- ;
- goog.ui.MenuItem.prototype.setSelectable = function (a) {
- this.setSupportedState(goog.ui.Component.State.SELECTED, a)
- }
- ;
- goog.ui.MenuItem.prototype.setSelectableInternal_ = function (a) {
- this.isChecked() && !a && this.setChecked(!1);
- var b = this.getElement();
- b && this.getRenderer().setSelectable(this, b, a)
- }
- ;
- goog.ui.MenuItem.prototype.setCheckable = function (a) {
- this.setSupportedState(goog.ui.Component.State.CHECKED, a)
- }
- ;
- goog.ui.MenuItem.prototype.setCheckableInternal_ = function (a) {
- var b = this.getElement();
- b && this.getRenderer().setCheckable(this, b, a)
- }
- ;
- goog.ui.MenuItem.prototype.getCaption = function () {
- var a = this.getContent();
- if (goog.isArray(a)) {
- var b = goog.ui.MenuItem.ACCELERATOR_CLASS
- , c = goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_;
- a = goog.array.map(a, function (a) {
- return goog.dom.isElement(a) && (goog.dom.classlist.contains(a, b) || goog.dom.classlist.contains(a, c)) ? "" : goog.dom.getRawTextContent(a)
- }).join("");
- return goog.string.collapseBreakingSpaces(a)
- }
- return goog.ui.MenuItem.superClass_.getCaption.call(this)
- }
- ;
- goog.ui.MenuItem.prototype.getAccelerator = function () {
- var a = this.getDomHelper()
- , b = this.getContent();
- return goog.isArray(b) && (b = goog.array.find(b, function (a) {
- return goog.dom.classlist.contains(a, goog.ui.MenuItem.ACCELERATOR_CLASS)
- })) ? a.getTextContent(b) : null
- }
- ;
- goog.ui.MenuItem.prototype.handleMouseUp = function (a) {
- var b = this.getParent();
- if (b) {
- var c = b.openingCoords;
- b.openingCoords = null;
- if (c && "number" === typeof a.clientX && (b = new goog.math.Coordinate(a.clientX, a.clientY),
- goog.math.Coordinate.equals(c, b)))
- return
- }
- goog.ui.MenuItem.superClass_.handleMouseUp.call(this, a)
- }
- ;
- goog.ui.MenuItem.prototype.handleKeyEventInternal = function (a) {
- return a.keyCode == this.getMnemonic() && this.performActionInternal(a) ? !0 : goog.ui.MenuItem.superClass_.handleKeyEventInternal.call(this, a)
- }
- ;
- goog.ui.MenuItem.prototype.setMnemonic = function (a) {
- this.mnemonicKey_ = a
- }
- ;
- goog.ui.MenuItem.prototype.getMnemonic = function () {
- return this.mnemonicKey_
- }
- ;
- goog.ui.registry.setDecoratorByClassName(goog.ui.MenuItemRenderer.CSS_CLASS, function () {
- return new goog.ui.MenuItem(null)
- });
- goog.ui.MenuItem.prototype.getPreferredAriaRole = function () {
- return this.isSupportedState(goog.ui.Component.State.CHECKED) ? goog.a11y.aria.Role.MENU_ITEM_CHECKBOX : this.isSupportedState(goog.ui.Component.State.SELECTED) ? goog.a11y.aria.Role.MENU_ITEM_RADIO : goog.ui.MenuItem.superClass_.getPreferredAriaRole.call(this)
- }
- ;
- goog.ui.MenuItem.prototype.getParent = function () {
- return goog.ui.Control.prototype.getParent.call(this)
- }
- ;
- goog.ui.MenuItem.prototype.getParentEventTarget = function () {
- return goog.ui.Control.prototype.getParentEventTarget.call(this)
- }
- ;
- goog.ui.MenuSeparatorRenderer = function () {
- goog.ui.ControlRenderer.call(this)
- }
- ;
- goog.inherits(goog.ui.MenuSeparatorRenderer, goog.ui.ControlRenderer);
- goog.addSingletonGetter(goog.ui.MenuSeparatorRenderer);
- goog.ui.MenuSeparatorRenderer.CSS_CLASS = "goog-menuseparator";
- goog.ui.MenuSeparatorRenderer.prototype.createDom = function (a) {
- return a.getDomHelper().createDom("DIV", this.getCssClass())
- }
- ;
- goog.ui.MenuSeparatorRenderer.prototype.decorate = function (a, b) {
- b.id && a.setId(b.id);
- if ("HR" == b.tagName) {
- var c = b;
- b = this.createDom(a);
- goog.dom.insertSiblingBefore(b, c);
- goog.dom.removeNode(c)
- } else
- goog.dom.classlist.add(b, this.getCssClass());
- return b
- }
- ;
- goog.ui.MenuSeparatorRenderer.prototype.setContent = function (a, b) { }
- ;
- goog.ui.MenuSeparatorRenderer.prototype.getCssClass = function () {
- return goog.ui.MenuSeparatorRenderer.CSS_CLASS
- }
- ;
- goog.ui.Separator = function (a, b) {
- goog.ui.Control.call(this, null, a || goog.ui.MenuSeparatorRenderer.getInstance(), b);
- this.setSupportedState(goog.ui.Component.State.DISABLED, !1);
- this.setSupportedState(goog.ui.Component.State.HOVER, !1);
- this.setSupportedState(goog.ui.Component.State.ACTIVE, !1);
- this.setSupportedState(goog.ui.Component.State.FOCUSED, !1);
- this.setStateInternal(goog.ui.Component.State.DISABLED)
- }
- ;
- goog.inherits(goog.ui.Separator, goog.ui.Control);
- goog.ui.Separator.prototype.enterDocument = function () {
- goog.ui.Separator.superClass_.enterDocument.call(this);
- var a = this.getElement();
- goog.asserts.assert(a, "The DOM element for the separator cannot be null.");
- goog.a11y.aria.setRole(a, "separator")
- }
- ;
- goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS, function () {
- return new goog.ui.Separator
- });
- goog.ui.MenuRenderer = function (a) {
- goog.ui.ContainerRenderer.call(this, a || goog.a11y.aria.Role.MENU)
- }
- ;
- goog.inherits(goog.ui.MenuRenderer, goog.ui.ContainerRenderer);
- goog.addSingletonGetter(goog.ui.MenuRenderer);
- goog.ui.MenuRenderer.CSS_CLASS = "goog-menu";
- goog.ui.MenuRenderer.prototype.canDecorate = function (a) {
- return "UL" == a.tagName || goog.ui.MenuRenderer.superClass_.canDecorate.call(this, a)
- }
- ;
- goog.ui.MenuRenderer.prototype.getDecoratorForChild = function (a) {
- return "HR" == a.tagName ? new goog.ui.Separator : goog.ui.MenuRenderer.superClass_.getDecoratorForChild.call(this, a)
- }
- ;
- goog.ui.MenuRenderer.prototype.containsElement = function (a, b) {
- return goog.dom.contains(a.getElement(), b)
- }
- ;
- goog.ui.MenuRenderer.prototype.getCssClass = function () {
- return goog.ui.MenuRenderer.CSS_CLASS
- }
- ;
- goog.ui.MenuRenderer.prototype.initializeDom = function (a) {
- goog.ui.MenuRenderer.superClass_.initializeDom.call(this, a);
- a = a.getElement();
- goog.asserts.assert(a, "The menu DOM element cannot be null.");
- goog.a11y.aria.setState(a, goog.a11y.aria.State.HASPOPUP, "true")
- }
- ;
- goog.ui.MenuSeparator = function (a) {
- goog.ui.Separator.call(this, goog.ui.MenuSeparatorRenderer.getInstance(), a)
- }
- ;
- goog.inherits(goog.ui.MenuSeparator, goog.ui.Separator);
- goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS, function () {
- return new goog.ui.Separator
- });
- goog.ui.Menu = function (a, b) {
- goog.ui.Container.call(this, goog.ui.Container.Orientation.VERTICAL, b || goog.ui.MenuRenderer.getInstance(), a);
- this.setFocusable(!1)
- }
- ;
- goog.inherits(goog.ui.Menu, goog.ui.Container);
- goog.tagUnsealableClass(goog.ui.Menu);
- goog.ui.Menu.EventType = {
- BEFORE_SHOW: goog.ui.Component.EventType.BEFORE_SHOW,
- SHOW: goog.ui.Component.EventType.SHOW,
- BEFORE_HIDE: goog.ui.Component.EventType.HIDE,
- HIDE: goog.ui.Component.EventType.HIDE
- };
- goog.ui.Menu.CSS_CLASS = goog.ui.MenuRenderer.CSS_CLASS;
- goog.ui.Menu.prototype.allowAutoFocus_ = !0;
- goog.ui.Menu.prototype.allowHighlightDisabled_ = !1;
- goog.ui.Menu.prototype.getCssClass = function () {
- return this.getRenderer().getCssClass()
- }
- ;
- goog.ui.Menu.prototype.containsElement = function (a) {
- if (this.getRenderer().containsElement(this, a))
- return !0;
- for (var b = 0, c = this.getChildCount(); b < c; b++) {
- var d = this.getChildAt(b);
- if ("function" == typeof d.containsElement && d.containsElement(a))
- return !0
- }
- return !1
- }
- ;
- goog.ui.Menu.prototype.addItem = function (a) {
- this.addChild(a, !0)
- }
- ;
- goog.ui.Menu.prototype.addItemAt = function (a, b) {
- this.addChildAt(a, b, !0)
- }
- ;
- goog.ui.Menu.prototype.removeItem = function (a) {
- (a = this.removeChild(a, !0)) && a.dispose()
- }
- ;
- goog.ui.Menu.prototype.removeItemAt = function (a) {
- (a = this.removeChildAt(a, !0)) && a.dispose()
- }
- ;
- goog.ui.Menu.prototype.getItemAt = function (a) {
- return this.getChildAt(a)
- }
- ;
- goog.ui.Menu.prototype.getItemCount = function () {
- return this.getChildCount()
- }
- ;
- goog.ui.Menu.prototype.getItems = function () {
- var a = [];
- this.forEachChild(function (b) {
- a.push(b)
- });
- return a
- }
- ;
- goog.ui.Menu.prototype.setPosition = function (a, b) {
- var c = this.isVisible();
- c || goog.style.setElementShown(this.getElement(), !0);
- goog.style.setPageOffset(this.getElement(), a, b);
- c || goog.style.setElementShown(this.getElement(), !1)
- }
- ;
- goog.ui.Menu.prototype.getPosition = function () {
- return this.isVisible() ? goog.style.getPageOffset(this.getElement()) : null
- }
- ;
- goog.ui.Menu.prototype.setAllowAutoFocus = function (a) {
- (this.allowAutoFocus_ = a) && this.setFocusable(!0)
- }
- ;
- goog.ui.Menu.prototype.getAllowAutoFocus = function () {
- return this.allowAutoFocus_
- }
- ;
- goog.ui.Menu.prototype.setAllowHighlightDisabled = function (a) {
- this.allowHighlightDisabled_ = a
- }
- ;
- goog.ui.Menu.prototype.getAllowHighlightDisabled = function () {
- return this.allowHighlightDisabled_
- }
- ;
- goog.ui.Menu.prototype.setVisible = function (a, b, c) {
- (b = goog.ui.Menu.superClass_.setVisible.call(this, a, b)) && a && this.isInDocument() && this.allowAutoFocus_ && this.getKeyEventTarget().focus();
- this.openingCoords = a && c && "number" === typeof c.clientX ? new goog.math.Coordinate(c.clientX, c.clientY) : null;
- return b
- }
- ;
- goog.ui.Menu.prototype.handleEnterItem = function (a) {
- this.allowAutoFocus_ && this.getKeyEventTarget().focus();
- return goog.ui.Menu.superClass_.handleEnterItem.call(this, a)
- }
- ;
- goog.ui.Menu.prototype.highlightNextPrefix = function (a) {
- var b = new RegExp("^" + goog.string.regExpEscape(a), "i");
- return this.highlightHelper(function (a, d) {
- var c = 0 > a ? 0 : a
- , f = !1;
- do {
- ++a;
- a == d && (a = 0,
- f = !0);
- var g = this.getChildAt(a).getCaption();
- if (g && g.match(b))
- return a
- } while (!f || a != c); return this.getHighlightedIndex()
- }, this.getHighlightedIndex())
- }
- ;
- goog.ui.Menu.prototype.canHighlightItem = function (a) {
- return (this.allowHighlightDisabled_ || a.isEnabled()) && a.isVisible() && a.isSupportedState(goog.ui.Component.State.HOVER)
- }
- ;
- goog.ui.Menu.prototype.decorateInternal = function (a) {
- this.decorateContent(a);
- goog.ui.Menu.superClass_.decorateInternal.call(this, a)
- }
- ;
- goog.ui.Menu.prototype.handleKeyEventInternal = function (a) {
- var b = goog.ui.Menu.superClass_.handleKeyEventInternal.call(this, a);
- b || this.forEachChild(function (c) {
- !b && c.getMnemonic && c.getMnemonic() == a.keyCode && (this.isEnabled() && this.setHighlighted(c),
- b = c.handleKeyEvent(a))
- }, this);
- return b
- }
- ;
- goog.ui.Menu.prototype.setHighlightedIndex = function (a) {
- goog.ui.Menu.superClass_.setHighlightedIndex.call(this, a);
- (a = this.getChildAt(a)) && goog.style.scrollIntoContainerView(a.getElement(), this.getElement())
- }
- ;
- goog.ui.Menu.prototype.decorateContent = function (a) {
- var b = this.getRenderer();
- a = this.getDomHelper().getElementsByTagNameAndClass("DIV", b.getCssClass() + "-content", a);
- for (var c = a.length, d = 0; d < c; d++)
- b.decorateChildren(this, a[d])
- }
- ;
- goog.iter = {};
- goog.iter.StopIteration = "StopIteration" in goog.global ? goog.global.StopIteration : {
- message: "StopIteration",
- stack: ""
- };
- goog.iter.Iterator = function () { }
- ;
- goog.iter.Iterator.prototype.next = function () {
- throw goog.iter.StopIteration;
- }
- ;
- goog.iter.Iterator.prototype.__iterator__ = function (a) {
- return this
- }
- ;
- goog.iter.toIterator = function (a) {
- if (a instanceof goog.iter.Iterator)
- return a;
- if ("function" == typeof a.__iterator__)
- return a.__iterator__(!1);
- if (goog.isArrayLike(a)) {
- var b = 0
- , c = new goog.iter.Iterator;
- c.next = function () {
- for (; ;) {
- if (b >= a.length)
- throw goog.iter.StopIteration;
- if (b in a)
- return a[b++];
- b++
- }
- }
- ;
- return c
- }
- throw Error("Not implemented");
- }
- ;
- goog.iter.forEach = function (a, b, c) {
- if (goog.isArrayLike(a))
- try {
- goog.array.forEach(a, b, c)
- } catch (d) {
- if (d !== goog.iter.StopIteration)
- throw d;
- }
- else {
- a = goog.iter.toIterator(a);
- try {
- for (; ;)
- b.call(c, a.next(), void 0, a)
- } catch (d) {
- if (d !== goog.iter.StopIteration)
- throw d;
- }
- }
- }
- ;
- goog.iter.filter = function (a, b, c) {
- var d = goog.iter.toIterator(a);
- a = new goog.iter.Iterator;
- a.next = function () {
- for (; ;) {
- var a = d.next();
- if (b.call(c, a, void 0, d))
- return a
- }
- }
- ;
- return a
- }
- ;
- goog.iter.filterFalse = function (a, b, c) {
- return goog.iter.filter(a, goog.functions.not(b), c)
- }
- ;
- goog.iter.range = function (a, b, c) {
- var d = 0
- , e = a
- , f = c || 1;
- 1 < arguments.length && (d = a,
- e = +b);
- if (0 == f)
- throw Error("Range step argument must not be zero");
- var g = new goog.iter.Iterator;
- g.next = function () {
- if (0 < f && d >= e || 0 > f && d <= e)
- throw goog.iter.StopIteration;
- var a = d;
- d += f;
- return a
- }
- ;
- return g
- }
- ;
- goog.iter.join = function (a, b) {
- return goog.iter.toArray(a).join(b)
- }
- ;
- goog.iter.map = function (a, b, c) {
- var d = goog.iter.toIterator(a);
- a = new goog.iter.Iterator;
- a.next = function () {
- var a = d.next();
- return b.call(c, a, void 0, d)
- }
- ;
- return a
- }
- ;
- goog.iter.reduce = function (a, b, c, d) {
- var e = c;
- goog.iter.forEach(a, function (a) {
- e = b.call(d, e, a)
- });
- return e
- }
- ;
- goog.iter.some = function (a, b, c) {
- a = goog.iter.toIterator(a);
- try {
- for (; ;)
- if (b.call(c, a.next(), void 0, a))
- return !0
- } catch (d) {
- if (d !== goog.iter.StopIteration)
- throw d;
- }
- return !1
- }
- ;
- goog.iter.every = function (a, b, c) {
- a = goog.iter.toIterator(a);
- try {
- for (; ;)
- if (!b.call(c, a.next(), void 0, a))
- return !1
- } catch (d) {
- if (d !== goog.iter.StopIteration)
- throw d;
- }
- return !0
- }
- ;
- goog.iter.chain = function (a) {
- return goog.iter.chainFromIterable(arguments)
- }
- ;
- goog.iter.chainFromIterable = function (a) {
- var b = goog.iter.toIterator(a);
- a = new goog.iter.Iterator;
- var c = null;
- a.next = function () {
- for (; ;) {
- if (null == c) {
- var a = b.next();
- c = goog.iter.toIterator(a)
- }
- try {
- return c.next()
- } catch (e) {
- if (e !== goog.iter.StopIteration)
- throw e;
- c = null
- }
- }
- }
- ;
- return a
- }
- ;
- goog.iter.dropWhile = function (a, b, c) {
- var d = goog.iter.toIterator(a);
- a = new goog.iter.Iterator;
- var e = !0;
- a.next = function () {
- for (; ;) {
- var a = d.next();
- if (!e || !b.call(c, a, void 0, d))
- return e = !1,
- a
- }
- }
- ;
- return a
- }
- ;
- goog.iter.takeWhile = function (a, b, c) {
- var d = goog.iter.toIterator(a);
- a = new goog.iter.Iterator;
- a.next = function () {
- var a = d.next();
- if (b.call(c, a, void 0, d))
- return a;
- throw goog.iter.StopIteration;
- }
- ;
- return a
- }
- ;
- goog.iter.toArray = function (a) {
- if (goog.isArrayLike(a))
- return goog.array.toArray(a);
- a = goog.iter.toIterator(a);
- var b = [];
- goog.iter.forEach(a, function (a) {
- b.push(a)
- });
- return b
- }
- ;
- goog.iter.equals = function (a, b, c) {
- a = goog.iter.zipLongest({}, a, b);
- var d = c || goog.array.defaultCompareEquality;
- return goog.iter.every(a, function (a) {
- return d(a[0], a[1])
- })
- }
- ;
- goog.iter.nextOrValue = function (a, b) {
- try {
- return goog.iter.toIterator(a).next()
- } catch (c) {
- if (c != goog.iter.StopIteration)
- throw c;
- return b
- }
- }
- ;
- goog.iter.product = function (a) {
- if (goog.array.some(arguments, function (a) {
- return !a.length
- }) || !arguments.length)
- return new goog.iter.Iterator;
- var b = new goog.iter.Iterator
- , c = arguments
- , d = goog.array.repeat(0, c.length);
- b.next = function () {
- if (d) {
- for (var a = goog.array.map(d, function (a, b) {
- return c[b][a]
- }), b = d.length - 1; 0 <= b; b--) {
- goog.asserts.assert(d);
- if (d[b] < c[b].length - 1) {
- d[b]++;
- break
- }
- if (0 == b) {
- d = null;
- break
- }
- d[b] = 0
- }
- return a
- }
- throw goog.iter.StopIteration;
- }
- ;
- return b
- }
- ;
- goog.iter.cycle = function (a) {
- var b = goog.iter.toIterator(a)
- , c = []
- , d = 0;
- a = new goog.iter.Iterator;
- var e = !1;
- a.next = function () {
- var a = null;
- if (!e)
- try {
- return a = b.next(),
- c.push(a),
- a
- } catch (g) {
- if (g != goog.iter.StopIteration || goog.array.isEmpty(c))
- throw g;
- e = !0
- }
- a = c[d];
- d = (d + 1) % c.length;
- return a
- }
- ;
- return a
- }
- ;
- goog.iter.count = function (a, b) {
- var c = a || 0
- , d = void 0 !== b ? b : 1
- , e = new goog.iter.Iterator;
- e.next = function () {
- var a = c;
- c += d;
- return a
- }
- ;
- return e
- }
- ;
- goog.iter.repeat = function (a) {
- var b = new goog.iter.Iterator;
- b.next = goog.functions.constant(a);
- return b
- }
- ;
- goog.iter.accumulate = function (a) {
- var b = goog.iter.toIterator(a)
- , c = 0;
- a = new goog.iter.Iterator;
- a.next = function () {
- return c += b.next()
- }
- ;
- return a
- }
- ;
- goog.iter.zip = function (a) {
- var b = arguments
- , c = new goog.iter.Iterator;
- if (0 < b.length) {
- var d = goog.array.map(b, goog.iter.toIterator);
- c.next = function () {
- return goog.array.map(d, function (a) {
- return a.next()
- })
- }
- }
- return c
- }
- ;
- goog.iter.zipLongest = function (a, b) {
- var c = goog.array.slice(arguments, 1)
- , d = new goog.iter.Iterator;
- if (0 < c.length) {
- var e = goog.array.map(c, goog.iter.toIterator);
- d.next = function () {
- var b = !1
- , c = goog.array.map(e, function (c) {
- try {
- var d = c.next();
- b = !0
- } catch (m) {
- if (m !== goog.iter.StopIteration)
- throw m;
- d = a
- }
- return d
- });
- if (!b)
- throw goog.iter.StopIteration;
- return c
- }
- }
- return d
- }
- ;
- goog.iter.compress = function (a, b) {
- var c = goog.iter.toIterator(b);
- return goog.iter.filter(a, function () {
- return !!c.next()
- })
- }
- ;
- goog.iter.GroupByIterator_ = function (a, b) {
- this.iterator = goog.iter.toIterator(a);
- this.keyFunc = b || goog.functions.identity
- }
- ;
- goog.inherits(goog.iter.GroupByIterator_, goog.iter.Iterator);
- goog.iter.GroupByIterator_.prototype.next = function () {
- for (; this.currentKey == this.targetKey;)
- this.currentValue = this.iterator.next(),
- this.currentKey = this.keyFunc(this.currentValue);
- this.targetKey = this.currentKey;
- return [this.currentKey, this.groupItems_(this.targetKey)]
- }
- ;
- goog.iter.GroupByIterator_.prototype.groupItems_ = function (a) {
- for (var b = []; this.currentKey == a;) {
- b.push(this.currentValue);
- try {
- this.currentValue = this.iterator.next()
- } catch (c) {
- if (c !== goog.iter.StopIteration)
- throw c;
- break
- }
- this.currentKey = this.keyFunc(this.currentValue)
- }
- return b
- }
- ;
- goog.iter.groupBy = function (a, b) {
- return new goog.iter.GroupByIterator_(a, b)
- }
- ;
- goog.iter.starMap = function (a, b, c) {
- var d = goog.iter.toIterator(a);
- a = new goog.iter.Iterator;
- a.next = function () {
- var a = goog.iter.toArray(d.next());
- return b.apply(c, goog.array.concat(a, void 0, d))
- }
- ;
- return a
- }
- ;
- goog.iter.tee = function (a, b) {
- var c = goog.iter.toIterator(a)
- , d = goog.array.map(goog.array.range("number" === typeof b ? b : 2), function () {
- return []
- })
- , e = function () {
- var a = c.next();
- goog.array.forEach(d, function (b) {
- b.push(a)
- })
- };
- return goog.array.map(d, function (a) {
- var b = new goog.iter.Iterator;
- b.next = function () {
- goog.array.isEmpty(a) && e();
- goog.asserts.assert(!goog.array.isEmpty(a));
- return a.shift()
- }
- ;
- return b
- })
- }
- ;
- goog.iter.enumerate = function (a, b) {
- return goog.iter.zip(goog.iter.count(b), a)
- }
- ;
- goog.iter.limit = function (a, b) {
- goog.asserts.assert(goog.math.isInt(b) && 0 <= b);
- var c = goog.iter.toIterator(a)
- , d = new goog.iter.Iterator
- , e = b;
- d.next = function () {
- if (0 < e--)
- return c.next();
- throw goog.iter.StopIteration;
- }
- ;
- return d
- }
- ;
- goog.iter.consume = function (a, b) {
- goog.asserts.assert(goog.math.isInt(b) && 0 <= b);
- for (var c = goog.iter.toIterator(a); 0 < b--;)
- goog.iter.nextOrValue(c, null);
- return c
- }
- ;
- goog.iter.slice = function (a, b, c) {
- goog.asserts.assert(goog.math.isInt(b) && 0 <= b);
- a = goog.iter.consume(a, b);
- "number" === typeof c && (goog.asserts.assert(goog.math.isInt(c) && c >= b),
- a = goog.iter.limit(a, c - b));
- return a
- }
- ;
- goog.iter.hasDuplicates_ = function (a) {
- var b = [];
- goog.array.removeDuplicates(a, b);
- return a.length != b.length
- }
- ;
- goog.iter.permutations = function (a, b) {
- var c = goog.iter.toArray(a);
- c = goog.array.repeat(c, "number" === typeof b ? b : c.length);
- c = goog.iter.product.apply(void 0, c);
- return goog.iter.filter(c, function (a) {
- return !goog.iter.hasDuplicates_(a)
- })
- }
- ;
- goog.iter.combinations = function (a, b) {
- function c(a) {
- return d[a]
- }
- var d = goog.iter.toArray(a)
- , e = goog.iter.range(d.length);
- e = goog.iter.permutations(e, b);
- var f = goog.iter.filter(e, function (a) {
- return goog.array.isSorted(a)
- });
- e = new goog.iter.Iterator;
- e.next = function () {
- return goog.array.map(f.next(), c)
- }
- ;
- return e
- }
- ;
- goog.iter.combinationsWithReplacement = function (a, b) {
- function c(a) {
- return d[a]
- }
- var d = goog.iter.toArray(a)
- , e = goog.array.range(d.length);
- e = goog.array.repeat(e, b);
- e = goog.iter.product.apply(void 0, e);
- var f = goog.iter.filter(e, function (a) {
- return goog.array.isSorted(a)
- });
- e = new goog.iter.Iterator;
- e.next = function () {
- return goog.array.map(f.next(), c)
- }
- ;
- return e
- }
- ;
- goog.dom.TagWalkType = {
- START_TAG: 1,
- OTHER: 0,
- END_TAG: -1
- };
- goog.dom.TagIterator = function (a, b, c, d, e) {
- this.reversed = !!b;
- this.node = null;
- this.tagType = goog.dom.TagWalkType.OTHER;
- this.started_ = !1;
- this.constrained = !c;
- a && this.setPosition(a, d);
- this.depth = void 0 != e ? e : this.tagType || 0;
- this.reversed && (this.depth *= -1)
- }
- ;
- goog.inherits(goog.dom.TagIterator, goog.iter.Iterator);
- goog.dom.TagIterator.prototype.setPosition = function (a, b, c) {
- if (this.node = a)
- this.tagType = "number" === typeof b ? b : this.node.nodeType != goog.dom.NodeType.ELEMENT ? goog.dom.TagWalkType.OTHER : this.reversed ? goog.dom.TagWalkType.END_TAG : goog.dom.TagWalkType.START_TAG;
- "number" === typeof c && (this.depth = c)
- }
- ;
- goog.dom.TagIterator.prototype.copyFrom = function (a) {
- this.node = a.node;
- this.tagType = a.tagType;
- this.depth = a.depth;
- this.reversed = a.reversed;
- this.constrained = a.constrained
- }
- ;
- goog.dom.TagIterator.prototype.clone = function () {
- return new goog.dom.TagIterator(this.node, this.reversed, !this.constrained, this.tagType, this.depth)
- }
- ;
- goog.dom.TagIterator.prototype.skipTag = function () {
- var a = this.reversed ? goog.dom.TagWalkType.END_TAG : goog.dom.TagWalkType.START_TAG;
- this.tagType == a && (this.tagType = -1 * a,
- this.depth += this.tagType * (this.reversed ? -1 : 1))
- }
- ;
- goog.dom.TagIterator.prototype.restartTag = function () {
- var a = this.reversed ? goog.dom.TagWalkType.START_TAG : goog.dom.TagWalkType.END_TAG;
- this.tagType == a && (this.tagType = -1 * a,
- this.depth += this.tagType * (this.reversed ? -1 : 1))
- }
- ;
- goog.dom.TagIterator.prototype.next = function () {
- if (this.started_) {
- if (!this.node || this.constrained && 0 == this.depth)
- throw goog.iter.StopIteration;
- var a = this.node;
- var b = this.reversed ? goog.dom.TagWalkType.END_TAG : goog.dom.TagWalkType.START_TAG;
- if (this.tagType == b) {
- var c = this.reversed ? a.lastChild : a.firstChild;
- c ? this.setPosition(c) : this.setPosition(a, -1 * b)
- } else
- (c = this.reversed ? a.previousSibling : a.nextSibling) ? this.setPosition(c) : this.setPosition(a.parentNode, -1 * b);
- this.depth += this.tagType * (this.reversed ? -1 : 1)
- } else
- this.started_ = !0;
- a = this.node;
- if (!this.node)
- throw goog.iter.StopIteration;
- return a
- }
- ;
- goog.dom.TagIterator.prototype.isStarted = function () {
- return this.started_
- }
- ;
- goog.dom.TagIterator.prototype.isStartTag = function () {
- return this.tagType == goog.dom.TagWalkType.START_TAG
- }
- ;
- goog.dom.TagIterator.prototype.isEndTag = function () {
- return this.tagType == goog.dom.TagWalkType.END_TAG
- }
- ;
- goog.dom.TagIterator.prototype.isNonElement = function () {
- return this.tagType == goog.dom.TagWalkType.OTHER
- }
- ;
- goog.dom.TagIterator.prototype.equals = function (a) {
- return a.node == this.node && (!this.node || a.tagType == this.tagType)
- }
- ;
- goog.dom.TagIterator.prototype.splice = function (a) {
- var b = this.node;
- this.restartTag();
- this.reversed = !this.reversed;
- goog.dom.TagIterator.prototype.next.call(this);
- this.reversed = !this.reversed;
- for (var c = goog.isArrayLike(arguments[0]) ? arguments[0] : arguments, d = c.length - 1; 0 <= d; d--)
- goog.dom.insertSiblingAfter(c[d], b);
- goog.dom.removeNode(b)
- }
- ;
- goog.dom.NodeIterator = function (a, b, c, d) {
- goog.dom.TagIterator.call(this, a, b, c, null, d)
- }
- ;
- goog.inherits(goog.dom.NodeIterator, goog.dom.TagIterator);
- goog.dom.NodeIterator.prototype.next = function () {
- do
- goog.dom.NodeIterator.superClass_.next.call(this);
- while (this.isEndTag()); return this.node
- }
- ;
- goog.userAgent.product = {};
- goog.userAgent.product.ASSUME_FIREFOX = !1;
- goog.userAgent.product.ASSUME_IPHONE = !1;
- goog.userAgent.product.ASSUME_IPAD = !1;
- goog.userAgent.product.ASSUME_ANDROID = !1;
- goog.userAgent.product.ASSUME_CHROME = !1;
- goog.userAgent.product.ASSUME_SAFARI = !1;
- goog.userAgent.product.PRODUCT_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_OPERA || goog.userAgent.product.ASSUME_FIREFOX || goog.userAgent.product.ASSUME_IPHONE || goog.userAgent.product.ASSUME_IPAD || goog.userAgent.product.ASSUME_ANDROID || goog.userAgent.product.ASSUME_CHROME || goog.userAgent.product.ASSUME_SAFARI;
- goog.userAgent.product.OPERA = goog.userAgent.OPERA;
- goog.userAgent.product.IE = goog.userAgent.IE;
- goog.userAgent.product.EDGE = goog.userAgent.EDGE;
- goog.userAgent.product.FIREFOX = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_FIREFOX : goog.labs.userAgent.browser.isFirefox();
- goog.userAgent.product.isIphoneOrIpod_ = function () {
- return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpod()
- }
- ;
- goog.userAgent.product.IPHONE = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPHONE : goog.userAgent.product.isIphoneOrIpod_();
- goog.userAgent.product.IPAD = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
- goog.userAgent.product.ANDROID = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_ANDROID : goog.labs.userAgent.browser.isAndroidBrowser();
- goog.userAgent.product.CHROME = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_CHROME : goog.labs.userAgent.browser.isChrome();
- goog.userAgent.product.isSafariDesktop_ = function () {
- return goog.labs.userAgent.browser.isSafari() && !goog.labs.userAgent.platform.isIos()
- }
- ;
- goog.userAgent.product.SAFARI = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_SAFARI : goog.userAgent.product.isSafariDesktop_();
- goog.dom.dataset = {};
- goog.dom.dataset.ALLOWED_ = !goog.userAgent.product.IE && !goog.labs.userAgent.browser.isSafari();
- goog.dom.dataset.PREFIX_ = "data-";
- goog.dom.dataset.isValidProperty_ = function (a) {
- return !/-[a-z]/.test(a)
- }
- ;
- goog.dom.dataset.set = function (a, b, c) {
- if (goog.dom.dataset.ALLOWED_ && a.dataset)
- a.dataset[b] = c;
- else if (goog.dom.dataset.isValidProperty_(b))
- a.setAttribute(goog.dom.dataset.PREFIX_ + goog.string.toSelectorCase(b), c);
- else
- throw Error(goog.DEBUG ? '"' + b + '" is not a valid dataset property name.' : "");
- }
- ;
- goog.dom.dataset.get = function (a, b) {
- if (!goog.dom.dataset.isValidProperty_(b))
- return null;
- if (goog.dom.dataset.ALLOWED_ && a.dataset) {
- if (goog.labs.userAgent.browser.isAndroidBrowser() && !(b in a.dataset))
- return null;
- var c = a.dataset[b];
- return void 0 === c ? null : c
- }
- return a.getAttribute(goog.dom.dataset.PREFIX_ + goog.string.toSelectorCase(b))
- }
- ;
- goog.dom.dataset.remove = function (a, b) {
- goog.dom.dataset.isValidProperty_(b) && (goog.dom.dataset.ALLOWED_ && a.dataset ? goog.dom.dataset.has(a, b) && delete a.dataset[b] : a.removeAttribute(goog.dom.dataset.PREFIX_ + goog.string.toSelectorCase(b)))
- }
- ;
- goog.dom.dataset.has = function (a, b) {
- return goog.dom.dataset.isValidProperty_(b) ? goog.dom.dataset.ALLOWED_ && a.dataset ? b in a.dataset : a.hasAttribute ? a.hasAttribute(goog.dom.dataset.PREFIX_ + goog.string.toSelectorCase(b)) : !!a.getAttribute(goog.dom.dataset.PREFIX_ + goog.string.toSelectorCase(b)) : !1
- }
- ;
- goog.dom.dataset.getAll = function (a) {
- if (goog.dom.dataset.ALLOWED_ && a.dataset)
- return a.dataset;
- var b = {};
- a = a.attributes;
- for (var c = 0; c < a.length; ++c) {
- var d = a[c];
- if (goog.string.startsWith(d.name, goog.dom.dataset.PREFIX_)) {
- var e = goog.string.toCamelCase(d.name.substr(5));
- b[e] = d.value
- }
- }
- return b
- }
- ;
- goog.ui.PaletteRenderer = function () {
- goog.ui.ControlRenderer.call(this)
- }
- ;
- goog.inherits(goog.ui.PaletteRenderer, goog.ui.ControlRenderer);
- goog.addSingletonGetter(goog.ui.PaletteRenderer);
- goog.ui.PaletteRenderer.cellId_ = 0;
- goog.ui.PaletteRenderer.CSS_CLASS = "goog-palette";
- goog.ui.PaletteRenderer.GRID_WIDTH_ATTRIBUTE = "gridWidth";
- goog.ui.PaletteRenderer.prototype.createDom = function (a) {
- var b = this.getClassNames(a);
- b = a.getDomHelper().createDom("DIV", b, this.createGrid(a.getContent(), a.getSize(), a.getDomHelper()));
- goog.a11y.aria.setRole(b, goog.a11y.aria.Role.GRID);
- goog.dom.dataset.set(b, goog.ui.PaletteRenderer.GRID_WIDTH_ATTRIBUTE, a.getSize().width);
- return b
- }
- ;
- goog.ui.PaletteRenderer.prototype.createGrid = function (a, b, c) {
- for (var d = [], e = 0, f = 0; e < b.height; e++) {
- for (var g = [], h = 0; h < b.width; h++) {
- var k = a && a[f++];
- g.push(this.createCell(k, c))
- }
- d.push(this.createRow(g, c))
- }
- return this.createTable(d, c)
- }
- ;
- goog.ui.PaletteRenderer.prototype.createTable = function (a, b) {
- var c = b.createDom("TABLE", this.getCssClass() + "-table", b.createDom("TBODY", this.getCssClass() + "-body", a));
- c.cellSpacing = "0";
- c.cellPadding = "0";
- return c
- }
- ;
- goog.ui.PaletteRenderer.prototype.createRow = function (a, b) {
- var c = b.createDom("TR", this.getCssClass() + "-row", a);
- goog.a11y.aria.setRole(c, goog.a11y.aria.Role.ROW);
- return c
- }
- ;
- goog.ui.PaletteRenderer.prototype.createCell = function (a, b) {
- var c = b.createDom("TD", {
- "class": this.getCssClass() + "-cell",
- id: this.getCssClass() + "-cell-" + goog.ui.PaletteRenderer.cellId_++
- }, a);
- goog.a11y.aria.setRole(c, goog.a11y.aria.Role.GRIDCELL);
- goog.a11y.aria.setState(c, goog.a11y.aria.State.SELECTED, !1);
- this.maybeUpdateAriaLabel_(c);
- return c
- }
- ;
- goog.ui.PaletteRenderer.prototype.maybeUpdateAriaLabel_ = function (a) {
- if (!goog.dom.getTextContent(a) && !goog.a11y.aria.getLabel(a)) {
- for (var b = new goog.dom.NodeIterator(a), c = "", d; !c && (d = goog.iter.nextOrValue(b, null));)
- d.nodeType == goog.dom.NodeType.ELEMENT && (c = goog.a11y.aria.getLabel(d) || d.title);
- c && goog.a11y.aria.setLabel(a, c)
- }
- }
- ;
- goog.ui.PaletteRenderer.prototype.canDecorate = function (a) {
- return !1
- }
- ;
- goog.ui.PaletteRenderer.prototype.decorate = function (a, b) {
- return null
- }
- ;
- goog.ui.PaletteRenderer.prototype.setContent = function (a, b) {
- if (a) {
- var c = goog.dom.getElementsByTagNameAndClass("TBODY", this.getCssClass() + "-body", a)[0];
- if (c) {
- var d = 0;
- goog.array.forEach(c.rows, function (a) {
- goog.array.forEach(a.cells, function (a) {
- goog.dom.removeChildren(a);
- goog.a11y.aria.removeState(a, goog.a11y.aria.State.LABEL);
- if (b) {
- var c = b[d++];
- c && (goog.dom.appendChild(a, c),
- this.maybeUpdateAriaLabel_(a))
- }
- }, this)
- }, this);
- if (d < b.length) {
- for (var e = [], f = goog.dom.getDomHelper(a), g = goog.dom.dataset.get(a, goog.ui.PaletteRenderer.GRID_WIDTH_ATTRIBUTE); d < b.length;) {
- var h = b[d++];
- e.push(this.createCell(h, f));
- e.length == g && (h = this.createRow(e, f),
- goog.dom.appendChild(c, h),
- e.length = 0)
- }
- if (0 < e.length) {
- for (; e.length < g;)
- e.push(this.createCell("", f));
- h = this.createRow(e, f);
- goog.dom.appendChild(c, h)
- }
- }
- }
- goog.style.setUnselectable(a, !0, goog.userAgent.GECKO)
- }
- }
- ;
- goog.ui.PaletteRenderer.prototype.getContainingItem = function (a, b) {
- for (var c = a.getElement(); b && b.nodeType == goog.dom.NodeType.ELEMENT && b != c;) {
- if ("TD" == b.tagName && goog.dom.classlist.contains(b, this.getCssClass() + "-cell"))
- return b.firstChild;
- b = b.parentNode
- }
- return null
- }
- ;
- goog.ui.PaletteRenderer.prototype.highlightCell = function (a, b, c) {
- b && (b = this.getCellForItem(b),
- goog.asserts.assert(b),
- goog.dom.classlist.enable(b, this.getCssClass() + "-cell-hover", c),
- c ? goog.a11y.aria.setState(a.getElementStrict(), goog.a11y.aria.State.ACTIVEDESCENDANT, b.id) : b.id == goog.a11y.aria.getState(a.getElementStrict(), goog.a11y.aria.State.ACTIVEDESCENDANT) && goog.a11y.aria.removeState(a.getElementStrict(), goog.a11y.aria.State.ACTIVEDESCENDANT))
- }
- ;
- goog.ui.PaletteRenderer.prototype.getCellForItem = function (a) {
- return a ? a.parentNode : null
- }
- ;
- goog.ui.PaletteRenderer.prototype.selectCell = function (a, b, c) {
- b && (a = b.parentNode,
- goog.dom.classlist.enable(a, this.getCssClass() + "-cell-selected", c),
- goog.a11y.aria.setState(a, goog.a11y.aria.State.SELECTED, c))
- }
- ;
- goog.ui.PaletteRenderer.prototype.getCssClass = function () {
- return goog.ui.PaletteRenderer.CSS_CLASS
- }
- ;
- goog.ui.SelectionModel = function (a) {
- goog.events.EventTarget.call(this);
- this.items_ = [];
- this.addItems(a)
- }
- ;
- goog.inherits(goog.ui.SelectionModel, goog.events.EventTarget);
- goog.tagUnsealableClass(goog.ui.SelectionModel);
- goog.ui.SelectionModel.prototype.selectedItem_ = null;
- goog.ui.SelectionModel.prototype.selectionHandler_ = null;
- goog.ui.SelectionModel.prototype.getSelectionHandler = function () {
- return this.selectionHandler_
- }
- ;
- goog.ui.SelectionModel.prototype.setSelectionHandler = function (a) {
- this.selectionHandler_ = a
- }
- ;
- goog.ui.SelectionModel.prototype.getItemCount = function () {
- return this.items_.length
- }
- ;
- goog.ui.SelectionModel.prototype.indexOfItem = function (a) {
- return a ? goog.array.indexOf(this.items_, a) : -1
- }
- ;
- goog.ui.SelectionModel.prototype.getFirst = function () {
- return this.items_[0]
- }
- ;
- goog.ui.SelectionModel.prototype.getLast = function () {
- return this.items_[this.items_.length - 1]
- }
- ;
- goog.ui.SelectionModel.prototype.getItemAt = function (a) {
- return this.items_[a] || null
- }
- ;
- goog.ui.SelectionModel.prototype.addItems = function (a) {
- a && (goog.array.forEach(a, function (a) {
- this.selectItem_(a, !1)
- }, this),
- goog.array.extend(this.items_, a))
- }
- ;
- goog.ui.SelectionModel.prototype.addItem = function (a) {
- this.addItemAt(a, this.getItemCount())
- }
- ;
- goog.ui.SelectionModel.prototype.addItemAt = function (a, b) {
- a && (this.selectItem_(a, !1),
- goog.array.insertAt(this.items_, a, b))
- }
- ;
- goog.ui.SelectionModel.prototype.removeItem = function (a) {
- a && goog.array.remove(this.items_, a) && a == this.selectedItem_ && (this.selectedItem_ = null,
- this.dispatchEvent(goog.events.EventType.SELECT))
- }
- ;
- goog.ui.SelectionModel.prototype.removeItemAt = function (a) {
- this.removeItem(this.getItemAt(a))
- }
- ;
- goog.ui.SelectionModel.prototype.getSelectedItem = function () {
- return this.selectedItem_
- }
- ;
- goog.ui.SelectionModel.prototype.getItems = function () {
- return goog.array.clone(this.items_)
- }
- ;
- goog.ui.SelectionModel.prototype.setSelectedItem = function (a) {
- a != this.selectedItem_ && (this.selectItem_(this.selectedItem_, !1),
- this.selectedItem_ = a,
- this.selectItem_(a, !0));
- this.dispatchEvent(goog.events.EventType.SELECT)
- }
- ;
- goog.ui.SelectionModel.prototype.getSelectedIndex = function () {
- return this.indexOfItem(this.selectedItem_)
- }
- ;
- goog.ui.SelectionModel.prototype.setSelectedIndex = function (a) {
- this.setSelectedItem(this.getItemAt(a))
- }
- ;
- goog.ui.SelectionModel.prototype.clear = function () {
- goog.array.clear(this.items_);
- this.selectedItem_ = null
- }
- ;
- goog.ui.SelectionModel.prototype.disposeInternal = function () {
- goog.ui.SelectionModel.superClass_.disposeInternal.call(this);
- delete this.items_;
- this.selectedItem_ = null
- }
- ;
- goog.ui.SelectionModel.prototype.selectItem_ = function (a, b) {
- a && ("function" == typeof this.selectionHandler_ ? this.selectionHandler_(a, b) : "function" == typeof a.setSelected && a.setSelected(b))
- }
- ;
- goog.ui.Palette = function (a, b, c) {
- goog.ui.Control.call(this, a, b || goog.ui.PaletteRenderer.getInstance(), c);
- this.setAutoStates(goog.ui.Component.State.CHECKED | goog.ui.Component.State.SELECTED | goog.ui.Component.State.OPENED, !1);
- this.currentCellControl_ = new goog.ui.Palette.CurrentCell_;
- this.currentCellControl_.setParentEventTarget(this);
- this.lastHighlightedIndex_ = -1
- }
- ;
- goog.inherits(goog.ui.Palette, goog.ui.Control);
- goog.tagUnsealableClass(goog.ui.Palette);
- goog.ui.Palette.EventType = {
- AFTER_HIGHLIGHT: goog.events.getUniqueId("afterhighlight")
- };
- goog.ui.Palette.prototype.size_ = null;
- goog.ui.Palette.prototype.highlightedIndex_ = -1;
- goog.ui.Palette.prototype.selectionModel_ = null;
- goog.ui.Palette.prototype.disposeInternal = function () {
- goog.ui.Palette.superClass_.disposeInternal.call(this);
- this.selectionModel_ && (this.selectionModel_.dispose(),
- this.selectionModel_ = null);
- this.size_ = null;
- this.currentCellControl_.dispose()
- }
- ;
- goog.ui.Palette.prototype.setContentInternal = function (a) {
- goog.ui.Palette.superClass_.setContentInternal.call(this, a);
- this.adjustSize_();
- this.selectionModel_ ? (this.selectionModel_.clear(),
- this.selectionModel_.addItems(a)) : (this.selectionModel_ = new goog.ui.SelectionModel(a),
- this.selectionModel_.setSelectionHandler(goog.bind(this.selectItem_, this)),
- this.getHandler().listen(this.selectionModel_, goog.events.EventType.SELECT, this.handleSelectionChange));
- this.highlightedIndex_ = -1
- }
- ;
- goog.ui.Palette.prototype.getCaption = function () {
- return ""
- }
- ;
- goog.ui.Palette.prototype.setCaption = function (a) { }
- ;
- goog.ui.Palette.prototype.handleMouseOver = function (a) {
- goog.ui.Palette.superClass_.handleMouseOver.call(this, a);
- var b = this.getRenderer().getContainingItem(this, a.target);
- b && a.relatedTarget && goog.dom.contains(b, a.relatedTarget) || b != this.getHighlightedItem() && this.setHighlightedItem(b)
- }
- ;
- goog.ui.Palette.prototype.handleMouseDown = function (a) {
- goog.ui.Palette.superClass_.handleMouseDown.call(this, a);
- this.isActive() && (a = this.getRenderer().getContainingItem(this, a.target),
- a != this.getHighlightedItem() && this.setHighlightedItem(a))
- }
- ;
- goog.ui.Palette.prototype.performActionInternal = function (a) {
- var b = this.getHighlightedItem();
- return b ? (a && this.shouldSelectHighlightedItem_(a) && this.setSelectedItem(b),
- goog.ui.Palette.superClass_.performActionInternal.call(this, a)) : !1
- }
- ;
- goog.ui.Palette.prototype.shouldSelectHighlightedItem_ = function (a) {
- return this.getSelectedItem() ? "mouseup" != a.type ? !0 : !!this.getRenderer().getContainingItem(this, a.target) : !0
- }
- ;
- goog.ui.Palette.prototype.handleKeyEvent = function (a) {
- var b = this.getContent();
- b = b ? b.length : 0;
- var c = this.size_.width;
- if (0 == b || !this.isEnabled())
- return !1;
- if (a.keyCode == goog.events.KeyCodes.ENTER || a.keyCode == goog.events.KeyCodes.SPACE)
- return this.performActionInternal(a);
- if (a.keyCode == goog.events.KeyCodes.HOME)
- return this.setHighlightedIndex(0),
- !0;
- if (a.keyCode == goog.events.KeyCodes.END)
- return this.setHighlightedIndex(b - 1),
- !0;
- var d = 0 > this.highlightedIndex_ ? this.getSelectedIndex() : this.highlightedIndex_;
- switch (a.keyCode) {
- case goog.events.KeyCodes.LEFT:
- if (-1 == d || 0 == d)
- d = b;
- this.setHighlightedIndex(d - 1);
- a.preventDefault();
- return !0;
- case goog.events.KeyCodes.RIGHT:
- return d == b - 1 && (d = -1),
- this.setHighlightedIndex(d + 1),
- a.preventDefault(),
- !0;
- case goog.events.KeyCodes.UP:
- -1 == d && (d = b + c - 1);
- if (d >= c)
- return this.setHighlightedIndex(d - c),
- a.preventDefault(),
- !0;
- break;
- case goog.events.KeyCodes.DOWN:
- if (-1 == d && (d = -c),
- d < b - c)
- return this.setHighlightedIndex(d + c),
- a.preventDefault(),
- !0
- }
- return !1
- }
- ;
- goog.ui.Palette.prototype.handleSelectionChange = function (a) { }
- ;
- goog.ui.Palette.prototype.getSize = function () {
- return this.size_
- }
- ;
- goog.ui.Palette.prototype.setSize = function (a, b) {
- if (this.getElement())
- throw Error(goog.ui.Component.Error.ALREADY_RENDERED);
- this.size_ = "number" === typeof a ? new goog.math.Size(a, b) : a;
- this.adjustSize_()
- }
- ;
- goog.ui.Palette.prototype.getHighlightedIndex = function () {
- return this.highlightedIndex_
- }
- ;
- goog.ui.Palette.prototype.getHighlightedItem = function () {
- var a = this.getContent();
- return a && a[this.highlightedIndex_]
- }
- ;
- goog.ui.Palette.prototype.getHighlightedCellElement_ = function () {
- return this.getRenderer().getCellForItem(this.getHighlightedItem())
- }
- ;
- goog.ui.Palette.prototype.setHighlightedIndex = function (a) {
- a != this.highlightedIndex_ && (this.highlightIndex_(this.highlightedIndex_, !1),
- this.lastHighlightedIndex_ = this.highlightedIndex_,
- this.highlightedIndex_ = a,
- this.highlightIndex_(a, !0),
- this.dispatchEvent(goog.ui.Palette.EventType.AFTER_HIGHLIGHT))
- }
- ;
- goog.ui.Palette.prototype.setHighlightedItem = function (a) {
- var b = this.getContent();
- this.setHighlightedIndex(b && a ? goog.array.indexOf(b, a) : -1)
- }
- ;
- goog.ui.Palette.prototype.getSelectedIndex = function () {
- return this.selectionModel_ ? this.selectionModel_.getSelectedIndex() : -1
- }
- ;
- goog.ui.Palette.prototype.getSelectedItem = function () {
- return this.selectionModel_ ? this.selectionModel_.getSelectedItem() : null
- }
- ;
- goog.ui.Palette.prototype.setSelectedIndex = function (a) {
- this.selectionModel_ && this.selectionModel_.setSelectedIndex(a)
- }
- ;
- goog.ui.Palette.prototype.setSelectedItem = function (a) {
- this.selectionModel_ && this.selectionModel_.setSelectedItem(a)
- }
- ;
- goog.ui.Palette.prototype.highlightIndex_ = function (a, b) {
- if (this.getElement()) {
- var c = this.getContent();
- if (c && 0 <= a && a < c.length) {
- var d = this.getHighlightedCellElement_();
- this.currentCellControl_.getElement() != d && this.currentCellControl_.setElementInternal(d);
- this.currentCellControl_.tryHighlight(b) && this.getRenderer().highlightCell(this, c[a], b)
- }
- }
- }
- ;
- goog.ui.Palette.prototype.setHighlighted = function (a) {
- a && -1 == this.highlightedIndex_ ? this.setHighlightedIndex(-1 < this.lastHighlightedIndex_ ? this.lastHighlightedIndex_ : 0) : a || this.setHighlightedIndex(-1);
- goog.ui.Palette.superClass_.setHighlighted.call(this, a)
- }
- ;
- goog.ui.Palette.prototype.selectItem_ = function (a, b) {
- this.getElement() && this.getRenderer().selectCell(this, a, b)
- }
- ;
- goog.ui.Palette.prototype.adjustSize_ = function () {
- var a = this.getContent();
- if (a)
- if (this.size_ && this.size_.width) {
- if (a = Math.ceil(a.length / this.size_.width),
- "number" !== typeof this.size_.height || this.size_.height < a)
- this.size_.height = a
- } else
- a = Math.ceil(Math.sqrt(a.length)),
- this.size_ = new goog.math.Size(a, a);
- else
- this.size_ = new goog.math.Size(0, 0)
- }
- ;
- goog.ui.Palette.CurrentCell_ = function () {
- goog.ui.Control.call(this, null);
- this.setDispatchTransitionEvents(goog.ui.Component.State.HOVER, !0)
- }
- ;
- goog.inherits(goog.ui.Palette.CurrentCell_, goog.ui.Control);
- goog.ui.Palette.CurrentCell_.prototype.tryHighlight = function (a) {
- this.setHighlighted(a);
- return this.isHighlighted() == a
- }
- ;
- goog.ui.ColorPalette = function (a, b, c) {
- this.colors_ = a || [];
- goog.ui.Palette.call(this, null, b || goog.ui.PaletteRenderer.getInstance(), c);
- this.setColors(this.colors_)
- }
- ;
- goog.inherits(goog.ui.ColorPalette, goog.ui.Palette);
- goog.tagUnsealableClass(goog.ui.ColorPalette);
- goog.ui.ColorPalette.prototype.normalizedColors_ = null;
- goog.ui.ColorPalette.prototype.labels_ = null;
- goog.ui.ColorPalette.prototype.getColors = function () {
- return this.colors_
- }
- ;
- goog.ui.ColorPalette.prototype.setColors = function (a, b) {
- this.colors_ = a;
- this.labels_ = b || null;
- this.normalizedColors_ = null;
- this.setContent(this.createColorNodes())
- }
- ;
- goog.ui.ColorPalette.prototype.getSelectedColor = function () {
- var a = this.getSelectedItem();
- return a ? (a = goog.style.getStyle(a, "background-color"),
- goog.ui.ColorPalette.parseColor_(a)) : null
- }
- ;
- goog.ui.ColorPalette.prototype.setSelectedColor = function (a) {
- a = goog.ui.ColorPalette.parseColor_(a);
- this.normalizedColors_ || (this.normalizedColors_ = goog.array.map(this.colors_, function (a) {
- return goog.ui.ColorPalette.parseColor_(a)
- }));
- this.setSelectedIndex(a ? goog.array.indexOf(this.normalizedColors_, a) : -1)
- }
- ;
- goog.ui.ColorPalette.prototype.createColorNodes = function () {
- return goog.array.map(this.colors_, function (a, b) {
- var c = this.getDomHelper().createDom("DIV", {
- "class": this.getRenderer().getCssClass() + "-colorswatch",
- style: "background-color:" + a
- });
- c.title = this.labels_ && this.labels_[b] ? this.labels_[b] : "#" == a.charAt(0) ? "RGB (" + goog.color.hexToRgb(a).join(", ") + ")" : a;
- return c
- }, this)
- }
- ;
- goog.ui.ColorPalette.parseColor_ = function (a) {
- if (a)
- try {
- return goog.color.parse(a).hex
- } catch (b) { }
- return null
- }
- ;
- goog.ui.ColorPicker = function (a, b) {
- goog.ui.Component.call(this, a);
- this.colorPalette_ = b || null;
- this.getHandler().listen(this, goog.ui.Component.EventType.ACTION, this.onColorPaletteAction_)
- }
- ;
- goog.inherits(goog.ui.ColorPicker, goog.ui.Component);
- goog.ui.ColorPicker.DEFAULT_NUM_COLS = 5;
- goog.ui.ColorPicker.EventType = {
- CHANGE: "change"
- };
- goog.ui.ColorPicker.prototype.focusable_ = !0;
- goog.ui.ColorPicker.prototype.getColors = function () {
- return this.colorPalette_ ? this.colorPalette_.getColors() : null
- }
- ;
- goog.ui.ColorPicker.prototype.setColors = function (a) {
- this.colorPalette_ ? this.colorPalette_.setColors(a) : this.createColorPalette_(a)
- }
- ;
- goog.ui.ColorPicker.prototype.addColors = function (a) {
- this.setColors(a)
- }
- ;
- goog.ui.ColorPicker.prototype.setSize = function (a) {
- this.colorPalette_ || this.createColorPalette_([]);
- this.colorPalette_.setSize(a)
- }
- ;
- goog.ui.ColorPicker.prototype.getSize = function () {
- return this.colorPalette_ ? this.colorPalette_.getSize() : null
- }
- ;
- goog.ui.ColorPicker.prototype.setColumnCount = function (a) {
- this.setSize(a)
- }
- ;
- goog.ui.ColorPicker.prototype.getSelectedIndex = function () {
- return this.colorPalette_ ? this.colorPalette_.getSelectedIndex() : -1
- }
- ;
- goog.ui.ColorPicker.prototype.setSelectedIndex = function (a) {
- this.colorPalette_ && this.colorPalette_.setSelectedIndex(a)
- }
- ;
- goog.ui.ColorPicker.prototype.getSelectedColor = function () {
- return this.colorPalette_ ? this.colorPalette_.getSelectedColor() : null
- }
- ;
- goog.ui.ColorPicker.prototype.setSelectedColor = function (a) {
- this.colorPalette_ && this.colorPalette_.setSelectedColor(a)
- }
- ;
- goog.ui.ColorPicker.prototype.isFocusable = function () {
- return this.focusable_
- }
- ;
- goog.ui.ColorPicker.prototype.setFocusable = function (a) {
- this.focusable_ = a;
- this.colorPalette_ && this.colorPalette_.setSupportedState(goog.ui.Component.State.FOCUSED, a)
- }
- ;
- goog.ui.ColorPicker.prototype.canDecorate = function (a) {
- return !1
- }
- ;
- goog.ui.ColorPicker.prototype.enterDocument = function () {
- goog.ui.ColorPicker.superClass_.enterDocument.call(this);
- this.colorPalette_ && this.colorPalette_.render(this.getElement());
- this.getElement().unselectable = "on"
- }
- ;
- goog.ui.ColorPicker.prototype.disposeInternal = function () {
- goog.ui.ColorPicker.superClass_.disposeInternal.call(this);
- this.colorPalette_ && (this.colorPalette_.dispose(),
- this.colorPalette_ = null)
- }
- ;
- goog.ui.ColorPicker.prototype.focus = function () {
- this.colorPalette_ && this.colorPalette_.getElement().focus()
- }
- ;
- goog.ui.ColorPicker.prototype.onColorPaletteAction_ = function (a) {
- a.stopPropagation();
- this.dispatchEvent(goog.ui.ColorPicker.EventType.CHANGE)
- }
- ;
- goog.ui.ColorPicker.prototype.createColorPalette_ = function (a) {
- a = new goog.ui.ColorPalette(a, null, this.getDomHelper());
- a.setSize(goog.ui.ColorPicker.DEFAULT_NUM_COLS);
- a.setSupportedState(goog.ui.Component.State.FOCUSED, this.focusable_);
- this.addChild(a);
- this.colorPalette_ = a;
- this.isInDocument() && this.colorPalette_.render(this.getElement())
- }
- ;
- goog.ui.ColorPicker.createSimpleColorGrid = function (a) {
- a = new goog.ui.ColorPicker(a);
- a.setSize(7);
- a.setColors(goog.ui.ColorPicker.SIMPLE_GRID_COLORS);
- return a
- }
- ;
- goog.ui.ColorPicker.SIMPLE_GRID_COLORS = "#ffffff #cccccc #c0c0c0 #999999 #666666 #333333 #000000 #ffcccc #ff6666 #ff0000 #cc0000 #990000 #660000 #330000 #ffcc99 #ff9966 #ff9900 #ff6600 #cc6600 #993300 #663300 #ffff99 #ffff66 #ffcc66 #ffcc33 #cc9933 #996633 #663333 #ffffcc #ffff33 #ffff00 #ffcc00 #999900 #666600 #333300 #99ff99 #66ff99 #33ff33 #33cc00 #009900 #006600 #003300 #99ffff #33ffff #66cccc #00cccc #339999 #336666 #003333 #ccffff #66ffff #33ccff #3366ff #3333ff #000099 #000066 #ccccff #9999ff #6666cc #6633ff #6600cc #333399 #330099 #ffccff #ff99ff #cc66cc #cc33cc #993399 #663366 #330033".split(" ");
- goog.events.FocusHandler = function (a) {
- goog.events.EventTarget.call(this);
- this.element_ = a;
- a = goog.userAgent.IE ? "focusout" : "blur";
- this.listenKeyIn_ = goog.events.listen(this.element_, goog.userAgent.IE ? "focusin" : "focus", this, !goog.userAgent.IE);
- this.listenKeyOut_ = goog.events.listen(this.element_, a, this, !goog.userAgent.IE)
- }
- ;
- goog.inherits(goog.events.FocusHandler, goog.events.EventTarget);
- goog.events.FocusHandler.EventType = {
- FOCUSIN: "focusin",
- FOCUSOUT: "focusout"
- };
- goog.events.FocusHandler.prototype.handleEvent = function (a) {
- var b = a.getBrowserEvent();
- b = new goog.events.BrowserEvent(b);
- b.type = "focusin" == a.type || "focus" == a.type ? goog.events.FocusHandler.EventType.FOCUSIN : goog.events.FocusHandler.EventType.FOCUSOUT;
- this.dispatchEvent(b)
- }
- ;
- goog.events.FocusHandler.prototype.disposeInternal = function () {
- goog.events.FocusHandler.superClass_.disposeInternal.call(this);
- goog.events.unlistenByKey(this.listenKeyIn_);
- goog.events.unlistenByKey(this.listenKeyOut_);
- delete this.element_
- }
- ;
- goog.debug.LogRecord = function (a, b, c, d, e) {
- this.reset(a, b, c, d, e)
- }
- ;
- goog.debug.LogRecord.prototype.sequenceNumber_ = 0;
- goog.debug.LogRecord.prototype.exception_ = null;
- goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS = !0;
- goog.debug.LogRecord.nextSequenceNumber_ = 0;
- goog.debug.LogRecord.prototype.reset = function (a, b, c, d, e) {
- goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS && (this.sequenceNumber_ = "number" == typeof e ? e : goog.debug.LogRecord.nextSequenceNumber_++);
- this.time_ = d || goog.now();
- this.level_ = a;
- this.msg_ = b;
- this.loggerName_ = c;
- delete this.exception_
- }
- ;
- goog.debug.LogRecord.prototype.getLoggerName = function () {
- return this.loggerName_
- }
- ;
- goog.debug.LogRecord.prototype.getException = function () {
- return this.exception_
- }
- ;
- goog.debug.LogRecord.prototype.setException = function (a) {
- this.exception_ = a
- }
- ;
- goog.debug.LogRecord.prototype.setLoggerName = function (a) {
- this.loggerName_ = a
- }
- ;
- goog.debug.LogRecord.prototype.getLevel = function () {
- return this.level_
- }
- ;
- goog.debug.LogRecord.prototype.setLevel = function (a) {
- this.level_ = a
- }
- ;
- goog.debug.LogRecord.prototype.getMessage = function () {
- return this.msg_
- }
- ;
- goog.debug.LogRecord.prototype.setMessage = function (a) {
- this.msg_ = a
- }
- ;
- goog.debug.LogRecord.prototype.getMillis = function () {
- return this.time_
- }
- ;
- goog.debug.LogRecord.prototype.setMillis = function (a) {
- this.time_ = a
- }
- ;
- goog.debug.LogRecord.prototype.getSequenceNumber = function () {
- return this.sequenceNumber_
- }
- ;
- goog.debug.LogBuffer = function () {
- goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(), "Cannot use goog.debug.LogBuffer without defining goog.debug.LogBuffer.CAPACITY.");
- this.clear()
- }
- ;
- goog.debug.LogBuffer.getInstance = function () {
- goog.debug.LogBuffer.instance_ || (goog.debug.LogBuffer.instance_ = new goog.debug.LogBuffer);
- return goog.debug.LogBuffer.instance_
- }
- ;
- goog.debug.LogBuffer.CAPACITY = 0;
- goog.debug.LogBuffer.prototype.addRecord = function (a, b, c) {
- var d = (this.curIndex_ + 1) % goog.debug.LogBuffer.CAPACITY;
- this.curIndex_ = d;
- if (this.isFull_)
- return d = this.buffer_[d],
- d.reset(a, b, c),
- d;
- this.isFull_ = d == goog.debug.LogBuffer.CAPACITY - 1;
- return this.buffer_[d] = new goog.debug.LogRecord(a, b, c)
- }
- ;
- goog.debug.LogBuffer.isBufferingEnabled = function () {
- return 0 < goog.debug.LogBuffer.CAPACITY
- }
- ;
- goog.debug.LogBuffer.prototype.clear = function () {
- this.buffer_ = Array(goog.debug.LogBuffer.CAPACITY);
- this.curIndex_ = -1;
- this.isFull_ = !1
- }
- ;
- goog.debug.LogBuffer.prototype.forEachRecord = function (a) {
- var b = this.buffer_;
- if (b[0]) {
- var c = this.curIndex_
- , d = this.isFull_ ? c : -1;
- do
- d = (d + 1) % goog.debug.LogBuffer.CAPACITY,
- a(b[d]);
- while (d != c)
- }
- }
- ;
- goog.debug.Logger = function (a) {
- this.name_ = a;
- this.handlers_ = this.children_ = this.level_ = this.parent_ = null
- }
- ;
- goog.debug.Logger.ROOT_LOGGER_NAME = "";
- goog.debug.Logger.ENABLE_HIERARCHY = !0;
- goog.debug.Logger.ENABLE_PROFILER_LOGGING = !1;
- goog.debug.Logger.ENABLE_HIERARCHY || (goog.debug.Logger.rootHandlers_ = []);
- goog.debug.Logger.Level = function (a, b) {
- this.name = a;
- this.value = b
- }
- ;
- goog.debug.Logger.Level.prototype.toString = function () {
- return this.name
- }
- ;
- goog.debug.Logger.Level.OFF = new goog.debug.Logger.Level("OFF", Infinity);
- goog.debug.Logger.Level.SHOUT = new goog.debug.Logger.Level("SHOUT", 1200);
- goog.debug.Logger.Level.SEVERE = new goog.debug.Logger.Level("SEVERE", 1E3);
- goog.debug.Logger.Level.WARNING = new goog.debug.Logger.Level("WARNING", 900);
- goog.debug.Logger.Level.INFO = new goog.debug.Logger.Level("INFO", 800);
- goog.debug.Logger.Level.CONFIG = new goog.debug.Logger.Level("CONFIG", 700);
- goog.debug.Logger.Level.FINE = new goog.debug.Logger.Level("FINE", 500);
- goog.debug.Logger.Level.FINER = new goog.debug.Logger.Level("FINER", 400);
- goog.debug.Logger.Level.FINEST = new goog.debug.Logger.Level("FINEST", 300);
- goog.debug.Logger.Level.ALL = new goog.debug.Logger.Level("ALL", 0);
- goog.debug.Logger.Level.PREDEFINED_LEVELS = [goog.debug.Logger.Level.OFF, goog.debug.Logger.Level.SHOUT, goog.debug.Logger.Level.SEVERE, goog.debug.Logger.Level.WARNING, goog.debug.Logger.Level.INFO, goog.debug.Logger.Level.CONFIG, goog.debug.Logger.Level.FINE, goog.debug.Logger.Level.FINER, goog.debug.Logger.Level.FINEST, goog.debug.Logger.Level.ALL];
- goog.debug.Logger.Level.predefinedLevelsCache_ = null;
- goog.debug.Logger.Level.createPredefinedLevelsCache_ = function () {
- goog.debug.Logger.Level.predefinedLevelsCache_ = {};
- for (var a = 0, b; b = goog.debug.Logger.Level.PREDEFINED_LEVELS[a]; a++)
- goog.debug.Logger.Level.predefinedLevelsCache_[b.value] = b,
- goog.debug.Logger.Level.predefinedLevelsCache_[b.name] = b
- }
- ;
- goog.debug.Logger.Level.getPredefinedLevel = function (a) {
- goog.debug.Logger.Level.predefinedLevelsCache_ || goog.debug.Logger.Level.createPredefinedLevelsCache_();
- return goog.debug.Logger.Level.predefinedLevelsCache_[a] || null
- }
- ;
- goog.debug.Logger.Level.getPredefinedLevelByValue = function (a) {
- goog.debug.Logger.Level.predefinedLevelsCache_ || goog.debug.Logger.Level.createPredefinedLevelsCache_();
- if (a in goog.debug.Logger.Level.predefinedLevelsCache_)
- return goog.debug.Logger.Level.predefinedLevelsCache_[a];
- for (var b = 0; b < goog.debug.Logger.Level.PREDEFINED_LEVELS.length; ++b) {
- var c = goog.debug.Logger.Level.PREDEFINED_LEVELS[b];
- if (c.value <= a)
- return c
- }
- return null
- }
- ;
- goog.debug.Logger.getLogger = function (a) {
- return goog.debug.LogManager.getLogger(a)
- }
- ;
- goog.debug.Logger.logToProfilers = function (a) {
- if (goog.debug.Logger.ENABLE_PROFILER_LOGGING) {
- var b = goog.global.msWriteProfilerMark;
- b ? b(a) : (b = goog.global.console) && b.timeStamp && b.timeStamp(a)
- }
- }
- ;
- goog.debug.Logger.prototype.getName = function () {
- return this.name_
- }
- ;
- goog.debug.Logger.prototype.addHandler = function (a) {
- goog.debug.LOGGING_ENABLED && (goog.debug.Logger.ENABLE_HIERARCHY ? (this.handlers_ || (this.handlers_ = []),
- this.handlers_.push(a)) : (goog.asserts.assert(!this.name_, "Cannot call addHandler on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),
- goog.debug.Logger.rootHandlers_.push(a)))
- }
- ;
- goog.debug.Logger.prototype.removeHandler = function (a) {
- if (goog.debug.LOGGING_ENABLED) {
- var b = goog.debug.Logger.ENABLE_HIERARCHY ? this.handlers_ : goog.debug.Logger.rootHandlers_;
- return !!b && goog.array.remove(b, a)
- }
- return !1
- }
- ;
- goog.debug.Logger.prototype.getParent = function () {
- return this.parent_
- }
- ;
- goog.debug.Logger.prototype.getChildren = function () {
- this.children_ || (this.children_ = {});
- return this.children_
- }
- ;
- goog.debug.Logger.prototype.setLevel = function (a) {
- goog.debug.LOGGING_ENABLED && (goog.debug.Logger.ENABLE_HIERARCHY ? this.level_ = a : (goog.asserts.assert(!this.name_, "Cannot call setLevel() on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),
- goog.debug.Logger.rootLevel_ = a))
- }
- ;
- goog.debug.Logger.prototype.getLevel = function () {
- return goog.debug.LOGGING_ENABLED ? this.level_ : goog.debug.Logger.Level.OFF
- }
- ;
- goog.debug.Logger.prototype.getEffectiveLevel = function () {
- if (!goog.debug.LOGGING_ENABLED)
- return goog.debug.Logger.Level.OFF;
- if (!goog.debug.Logger.ENABLE_HIERARCHY)
- return goog.debug.Logger.rootLevel_;
- if (this.level_)
- return this.level_;
- if (this.parent_)
- return this.parent_.getEffectiveLevel();
- goog.asserts.fail("Root logger has no level set.");
- return null
- }
- ;
- goog.debug.Logger.prototype.isLoggable = function (a) {
- return goog.debug.LOGGING_ENABLED && a.value >= this.getEffectiveLevel().value
- }
- ;
- goog.debug.Logger.prototype.log = function (a, b, c) {
- goog.debug.LOGGING_ENABLED && this.isLoggable(a) && (goog.isFunction(b) && (b = b()),
- this.doLogRecord_(this.getLogRecord(a, b, c)))
- }
- ;
- goog.debug.Logger.prototype.getLogRecord = function (a, b, c) {
- a = goog.debug.LogBuffer.isBufferingEnabled() ? goog.debug.LogBuffer.getInstance().addRecord(a, b, this.name_) : new goog.debug.LogRecord(a, String(b), this.name_);
- c && a.setException(c);
- return a
- }
- ;
- goog.debug.Logger.prototype.shout = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.SHOUT, a, b)
- }
- ;
- goog.debug.Logger.prototype.severe = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.SEVERE, a, b)
- }
- ;
- goog.debug.Logger.prototype.warning = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.WARNING, a, b)
- }
- ;
- goog.debug.Logger.prototype.info = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.INFO, a, b)
- }
- ;
- goog.debug.Logger.prototype.config = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.CONFIG, a, b)
- }
- ;
- goog.debug.Logger.prototype.fine = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.FINE, a, b)
- }
- ;
- goog.debug.Logger.prototype.finer = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.FINER, a, b)
- }
- ;
- goog.debug.Logger.prototype.finest = function (a, b) {
- goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.FINEST, a, b)
- }
- ;
- goog.debug.Logger.prototype.logRecord = function (a) {
- goog.debug.LOGGING_ENABLED && this.isLoggable(a.getLevel()) && this.doLogRecord_(a)
- }
- ;
- goog.debug.Logger.prototype.doLogRecord_ = function (a) {
- goog.debug.Logger.ENABLE_PROFILER_LOGGING && goog.debug.Logger.logToProfilers("log:" + a.getMessage());
- if (goog.debug.Logger.ENABLE_HIERARCHY)
- for (var b = this; b;)
- b.callPublish_(a),
- b = b.getParent();
- else {
- b = 0;
- for (var c; c = goog.debug.Logger.rootHandlers_[b++];)
- c(a)
- }
- }
- ;
- goog.debug.Logger.prototype.callPublish_ = function (a) {
- if (this.handlers_)
- for (var b = 0, c; c = this.handlers_[b]; b++)
- c(a)
- }
- ;
- goog.debug.Logger.prototype.setParent_ = function (a) {
- this.parent_ = a
- }
- ;
- goog.debug.Logger.prototype.addChild_ = function (a, b) {
- this.getChildren()[a] = b
- }
- ;
- goog.debug.LogManager = {};
- goog.debug.LogManager.loggers_ = {};
- goog.debug.LogManager.rootLogger_ = null;
- goog.debug.LogManager.initialize = function () {
- goog.debug.LogManager.rootLogger_ || (goog.debug.LogManager.rootLogger_ = new goog.debug.Logger(goog.debug.Logger.ROOT_LOGGER_NAME),
- goog.debug.LogManager.loggers_[goog.debug.Logger.ROOT_LOGGER_NAME] = goog.debug.LogManager.rootLogger_,
- goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG))
- }
- ;
- goog.debug.LogManager.getLoggers = function () {
- return goog.debug.LogManager.loggers_
- }
- ;
- goog.debug.LogManager.getRoot = function () {
- goog.debug.LogManager.initialize();
- return goog.debug.LogManager.rootLogger_
- }
- ;
- goog.debug.LogManager.getLogger = function (a) {
- goog.debug.LogManager.initialize();
- return goog.debug.LogManager.loggers_[a] || goog.debug.LogManager.createLogger_(a)
- }
- ;
- goog.debug.LogManager.createFunctionForCatchErrors = function (a) {
- return function (b) {
- (a || goog.debug.LogManager.getRoot()).severe("Error: " + b.message + " (" + b.fileName + " @ Line: " + b.line + ")")
- }
- }
- ;
- goog.debug.LogManager.createLogger_ = function (a) {
- var b = new goog.debug.Logger(a);
- if (goog.debug.Logger.ENABLE_HIERARCHY) {
- var c = a.lastIndexOf(".")
- , d = a.substr(0, c);
- c = a.substr(c + 1);
- d = goog.debug.LogManager.getLogger(d);
- d.addChild_(c, b);
- b.setParent_(d)
- }
- return goog.debug.LogManager.loggers_[a] = b
- }
- ;
- goog.log = {};
- goog.log.ENABLED = goog.debug.LOGGING_ENABLED;
- goog.log.ROOT_LOGGER_NAME = goog.debug.Logger.ROOT_LOGGER_NAME;
- goog.log.Logger = goog.debug.Logger;
- goog.log.Level = goog.debug.Logger.Level;
- goog.log.LogRecord = goog.debug.LogRecord;
- goog.log.getLogger = function (a, b) {
- if (goog.log.ENABLED) {
- var c = goog.debug.LogManager.getLogger(a);
- b && c && c.setLevel(b);
- return c
- }
- return null
- }
- ;
- goog.log.addHandler = function (a, b) {
- goog.log.ENABLED && a && a.addHandler(b)
- }
- ;
- goog.log.removeHandler = function (a, b) {
- return goog.log.ENABLED && a ? a.removeHandler(b) : !1
- }
- ;
- goog.log.log = function (a, b, c, d) {
- goog.log.ENABLED && a && a.log(b, c, d)
- }
- ;
- goog.log.error = function (a, b, c) {
- goog.log.ENABLED && a && a.severe(b, c)
- }
- ;
- goog.log.warning = function (a, b, c) {
- goog.log.ENABLED && a && a.warning(b, c)
- }
- ;
- goog.log.info = function (a, b, c) {
- goog.log.ENABLED && a && a.info(b, c)
- }
- ;
- goog.log.fine = function (a, b, c) {
- goog.log.ENABLED && a && a.fine(b, c)
- }
- ;
- goog.string.StringBuffer = function (a, b) {
- null != a && this.append.apply(this, arguments)
- }
- ;
- goog.string.StringBuffer.prototype.buffer_ = "";
- goog.string.StringBuffer.prototype.set = function (a) {
- this.buffer_ = "" + a
- }
- ;
- goog.string.StringBuffer.prototype.append = function (a, b, c) {
- this.buffer_ += String(a);
- if (null != b)
- for (var d = 1; d < arguments.length; d++)
- this.buffer_ += arguments[d];
- return this
- }
- ;
- goog.string.StringBuffer.prototype.clear = function () {
- this.buffer_ = ""
- }
- ;
- goog.string.StringBuffer.prototype.getLength = function () {
- return this.buffer_.length
- }
- ;
- goog.string.StringBuffer.prototype.toString = function () {
- return this.buffer_
- }
- ;
- goog.ui.tree = {};
- goog.ui.tree.BaseNode = function (a, b, c) {
- goog.ui.Component.call(this, c);
- this.config_ = b || goog.ui.tree.BaseNode.defaultConfig;
- this.html_ = goog.html.SafeHtml.htmlEscapePreservingNewlines(a);
- this.expanded_ = this.selected_ = !1;
- this.toolTip_ = null;
- this.afterLabelHtml_ = goog.html.SafeHtml.EMPTY;
- this.isUserCollapsible_ = !0;
- this.depth_ = -1
- }
- ;
- goog.inherits(goog.ui.tree.BaseNode, goog.ui.Component);
- goog.ui.tree.BaseNode.EventType = {
- BEFORE_EXPAND: "beforeexpand",
- EXPAND: "expand",
- BEFORE_COLLAPSE: "beforecollapse",
- COLLAPSE: "collapse"
- };
- goog.ui.tree.BaseNode.allNodes = {};
- goog.ui.tree.BaseNode.prototype.disposeInternal = function () {
- goog.ui.tree.BaseNode.superClass_.disposeInternal.call(this);
- this.tree && (this.tree.removeNode(this),
- this.tree = null);
- this.setElementInternal(null)
- }
- ;
- goog.ui.tree.BaseNode.prototype.initAccessibility = function () {
- var a = this.getElement();
- if (a) {
- var b = this.getLabelElement();
- b && !b.id && (b.id = this.getId() + ".label");
- goog.a11y.aria.setRole(a, "treeitem");
- goog.a11y.aria.setState(a, "selected", !1);
- goog.a11y.aria.setState(a, "level", this.getDepth());
- b && goog.a11y.aria.setState(a, "labelledby", b.id);
- (b = this.getIconElement()) && goog.a11y.aria.setRole(b, "presentation");
- (b = this.getExpandIconElement()) && goog.a11y.aria.setRole(b, "presentation");
- if (b = this.getChildrenElement())
- if (goog.a11y.aria.setRole(b, "group"),
- b.hasChildNodes())
- for (goog.a11y.aria.setState(a, goog.a11y.aria.State.EXPANDED, !1),
- a = this.getChildCount(),
- b = 1; b <= a; b++) {
- var c = this.getChildAt(b - 1).getElement();
- goog.asserts.assert(c, "The child element cannot be null");
- goog.a11y.aria.setState(c, "setsize", a);
- goog.a11y.aria.setState(c, "posinset", b)
- }
- }
- }
- ;
- goog.ui.tree.BaseNode.prototype.createDom = function () {
- var a = this.getDomHelper().safeHtmlToNode(this.toSafeHtml());
- this.setElementInternal(a)
- }
- ;
- goog.ui.tree.BaseNode.prototype.enterDocument = function () {
- goog.ui.tree.BaseNode.superClass_.enterDocument.call(this);
- goog.ui.tree.BaseNode.allNodes[this.getId()] = this;
- this.initAccessibility()
- }
- ;
- goog.ui.tree.BaseNode.prototype.exitDocument = function () {
- goog.ui.tree.BaseNode.superClass_.exitDocument.call(this);
- delete goog.ui.tree.BaseNode.allNodes[this.getId()]
- }
- ;
- goog.ui.tree.BaseNode.prototype.addChildAt = function (a, b, c) {
- goog.asserts.assert(!a.getParent());
- goog.asserts.assertInstanceof(a, goog.ui.tree.BaseNode);
- c = this.getChildAt(b - 1);
- var d = this.getChildAt(b);
- goog.ui.tree.BaseNode.superClass_.addChildAt.call(this, a, b);
- a.previousSibling_ = c;
- a.nextSibling_ = d;
- c ? c.nextSibling_ = a : this.firstChild_ = a;
- d ? d.previousSibling_ = a : this.lastChild_ = a;
- (b = this.getTree()) && a.setTreeInternal(b);
- a.setDepth_(this.getDepth() + 1);
- if (b = this.getElement())
- if (this.updateExpandIcon(),
- goog.a11y.aria.setState(b, goog.a11y.aria.State.EXPANDED, this.getExpanded()),
- this.getExpanded()) {
- b = this.getChildrenElement();
- a.getElement() || a.createDom();
- var e = a.getElement()
- , f = d && d.getElement();
- b.insertBefore(e, f);
- this.isInDocument() && a.enterDocument();
- d || (c ? c.updateExpandIcon() : (goog.style.setElementShown(b, !0),
- this.setExpanded(this.getExpanded())))
- }
- }
- ;
- goog.ui.tree.BaseNode.prototype.add = function (a, b) {
- goog.asserts.assert(!b || b.getParent() == this, "Can only add nodes before siblings");
- a.getParent() && a.getParent().removeChild(a);
- this.addChildAt(a, b ? this.indexOfChild(b) : this.getChildCount());
- return a
- }
- ;
- goog.ui.tree.BaseNode.prototype.removeChild = function (a, b) {
- var c = this.getTree()
- , d = c ? c.getSelectedItem() : null;
- if (d == a || a.contains(d))
- c.hasFocus() ? (this.select(),
- goog.Timer.callOnce(this.onTimeoutSelect_, 10, this)) : this.select();
- goog.ui.tree.BaseNode.superClass_.removeChild.call(this, a);
- this.lastChild_ == a && (this.lastChild_ = a.previousSibling_);
- this.firstChild_ == a && (this.firstChild_ = a.nextSibling_);
- a.previousSibling_ && (a.previousSibling_.nextSibling_ = a.nextSibling_);
- a.nextSibling_ && (a.nextSibling_.previousSibling_ = a.previousSibling_);
- d = a.isLastSibling();
- a.tree = null;
- a.depth_ = -1;
- if (c && (c.removeNode(a),
- this.isInDocument())) {
- c = this.getChildrenElement();
- if (a.isInDocument()) {
- var e = a.getElement();
- c.removeChild(e);
- a.exitDocument()
- }
- d && (d = this.getLastChild()) && d.updateExpandIcon();
- this.hasChildren() || (c.style.display = "none",
- this.updateExpandIcon(),
- this.updateIcon_(),
- (d = this.getElement()) && goog.a11y.aria.removeState(d, goog.a11y.aria.State.EXPANDED))
- }
- return a
- }
- ;
- goog.ui.tree.BaseNode.prototype.remove = goog.ui.tree.BaseNode.prototype.removeChild;
- goog.ui.tree.BaseNode.prototype.onTimeoutSelect_ = function () {
- this.select()
- }
- ;
- goog.ui.tree.BaseNode.prototype.getTree = goog.abstractMethod;
- goog.ui.tree.BaseNode.prototype.getDepth = function () {
- var a = this.depth_;
- 0 > a && (a = this.computeDepth_(),
- this.setDepth_(a));
- return a
- }
- ;
- goog.ui.tree.BaseNode.prototype.computeDepth_ = function () {
- var a = this.getParent();
- return a ? a.getDepth() + 1 : 0
- }
- ;
- goog.ui.tree.BaseNode.prototype.setDepth_ = function (a) {
- if (a != this.depth_) {
- this.depth_ = a;
- var b = this.getRowElement();
- if (b) {
- var c = this.getPixelIndent_() + "px";
- this.isRightToLeft() ? b.style.paddingRight = c : b.style.paddingLeft = c
- }
- this.forEachChild(function (b) {
- b.setDepth_(a + 1)
- })
- }
- }
- ;
- goog.ui.tree.BaseNode.prototype.contains = function (a) {
- for (; a;) {
- if (a == this)
- return !0;
- a = a.getParent()
- }
- return !1
- }
- ;
- goog.ui.tree.BaseNode.EMPTY_CHILDREN_ = [];
- goog.ui.tree.BaseNode.prototype.getChildren = function () {
- var a = [];
- this.forEachChild(function (b) {
- a.push(b)
- });
- return a
- }
- ;
- goog.ui.tree.BaseNode.prototype.getFirstChild = function () {
- return this.getChildAt(0)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getLastChild = function () {
- return this.getChildAt(this.getChildCount() - 1)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getPreviousSibling = function () {
- return this.previousSibling_
- }
- ;
- goog.ui.tree.BaseNode.prototype.getNextSibling = function () {
- return this.nextSibling_
- }
- ;
- goog.ui.tree.BaseNode.prototype.isLastSibling = function () {
- return !this.nextSibling_
- }
- ;
- goog.ui.tree.BaseNode.prototype.isSelected = function () {
- return this.selected_;
- }
- ;
- goog.ui.tree.BaseNode.prototype.select = function () {
- var a = this.getTree();
- a && a.setSelectedItem(this)
- }
- ;
- goog.ui.tree.BaseNode.prototype.deselect = goog.nullFunction;
- goog.ui.tree.BaseNode.prototype.setSelectedInternal = function (a) {
- if (this.selected_ != a) {
- this.selected_ = a;
- this.updateRow();
- var b = this.getElement();
- b && (goog.a11y.aria.setState(b, "selected", a),
- a && (a = this.getTree().getElement(),
- goog.asserts.assert(a, "The DOM element for the tree cannot be null"),
- goog.a11y.aria.setState(a, "activedescendant", this.getId())))
- }
- }
- ;
- goog.ui.tree.BaseNode.prototype.getExpanded = function () {
- return this.expanded_
- }
- ;
- goog.ui.tree.BaseNode.prototype.setExpandedInternal = function (a) {
- this.expanded_ = a
- }
- ;
- goog.ui.tree.BaseNode.prototype.setExpanded = function (a) {
- var b = a != this.expanded_;
- if (!b || this.dispatchEvent(a ? goog.ui.tree.BaseNode.EventType.BEFORE_EXPAND : goog.ui.tree.BaseNode.EventType.BEFORE_COLLAPSE)) {
- this.expanded_ = a;
- var c = this.getTree();
- var d = this.getElement();
- if (this.hasChildren()) {
- if (!a && c && this.contains(c.getSelectedItem()) && this.select(),
- d) {
- if (c = this.getChildrenElement())
- if (goog.style.setElementShown(c, a),
- goog.a11y.aria.setState(d, goog.a11y.aria.State.EXPANDED, a),
- a && this.isInDocument() && !c.hasChildNodes()) {
- var e = [];
- this.forEachChild(function (a) {
- e.push(a.toSafeHtml())
- });
- goog.dom.safe.setInnerHtml(c, goog.html.SafeHtml.concat(e));
- this.forEachChild(function (a) {
- a.enterDocument()
- })
- }
- this.updateExpandIcon()
- }
- } else
- (c = this.getChildrenElement()) && goog.style.setElementShown(c, !1);
- d && this.updateIcon_();
- b && this.dispatchEvent(a ? goog.ui.tree.BaseNode.EventType.EXPAND : goog.ui.tree.BaseNode.EventType.COLLAPSE)
- }
- }
- ;
- goog.ui.tree.BaseNode.prototype.toggle = function () {
- this.setExpanded(!this.getExpanded())
- }
- ;
- goog.ui.tree.BaseNode.prototype.expand = function () {
- this.setExpanded(!0)
- }
- ;
- goog.ui.tree.BaseNode.prototype.collapse = function () {
- this.setExpanded(!1)
- }
- ;
- goog.ui.tree.BaseNode.prototype.collapseChildren = function () {
- this.forEachChild(function (a) {
- a.collapseAll()
- })
- }
- ;
- goog.ui.tree.BaseNode.prototype.collapseAll = function () {
- this.collapseChildren();
- this.collapse()
- }
- ;
- goog.ui.tree.BaseNode.prototype.expandChildren = function () {
- this.forEachChild(function (a) {
- a.expandAll()
- })
- }
- ;
- goog.ui.tree.BaseNode.prototype.expandAll = function () {
- this.expandChildren();
- this.expand()
- }
- ;
- goog.ui.tree.BaseNode.prototype.reveal = function () {
- var a = this.getParent();
- a && (a.setExpanded(!0),
- a.reveal())
- }
- ;
- goog.ui.tree.BaseNode.prototype.setIsUserCollapsible = function (a) {
- (this.isUserCollapsible_ = a) || this.expand();
- this.getElement() && this.updateExpandIcon()
- }
- ;
- goog.ui.tree.BaseNode.prototype.isUserCollapsible = function () {
- return this.isUserCollapsible_
- }
- ;
- goog.ui.tree.BaseNode.prototype.toSafeHtml = function () {
- var a = this.getTree()
- , b = !a.getShowLines() || a == this.getParent() && !a.getShowRootLines() ? this.config_.cssChildrenNoLines : this.config_.cssChildren;
- a = this.getExpanded() && this.hasChildren();
- b = {
- "class": b,
- style: this.getLineStyle()
- };
- var c = [];
- a && this.forEachChild(function (a) {
- c.push(a.toSafeHtml())
- });
- a = goog.html.SafeHtml.create("div", b, c);
- return goog.html.SafeHtml.create("div", {
- "class": this.config_.cssItem,
- id: this.getId()
- }, [this.getRowSafeHtml(), a])
- }
- ;
- goog.ui.tree.BaseNode.prototype.getPixelIndent_ = function () {
- return Math.max(0, (this.getDepth() - 1) * this.config_.indentWidth)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getRowSafeHtml = function () {
- var a = {};
- a["padding-" + (this.isRightToLeft() ? "right" : "left")] = this.getPixelIndent_() + "px";
- if (this.html_.privateDoNotAccessOrElseSafeHtmlWrappedValue_ == Ardublockly.LOCALISED_TEXT.ExtendedFunction || this.html_.privateDoNotAccessOrElseSafeHtmlWrappedValue_ == Ardublockly.LOCALISED_TEXT.catMainBoard || this.html_.privateDoNotAccessOrElseSafeHtmlWrappedValue_ == Ardublockly.LOCALISED_TEXT.catAI || this.html_.privateDoNotAccessOrElseSafeHtmlWrappedValue_ == Ardublockly.LOCALISED_TEXT.IOT || this.html_.privateDoNotAccessOrElseSafeHtmlWrappedValue_ == Ardublockly.LOCALISED_TEXT.System || this.html_.privateDoNotAccessOrElseSafeHtmlWrappedValue_ == Ardublockly.LOCALISED_TEXT.AI) { a["background"] = this.hexColour; }
- a = {
- "class": this.getRowClassName(),
- style: a
- };
- var b = [this.getExpandIconSafeHtml(), this.getIconSafeHtml(), this.getLabelSafeHtml()];
- return goog.html.SafeHtml.create("div", a, b)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getRowClassName = function () {
- var a = this.isSelected() ? " " + this.config_.cssSelectedRow : "";
- return this.config_.cssTreeRow + a
- }
- ;
- goog.ui.tree.BaseNode.prototype.getLabelSafeHtml = function () {
- var a = goog.html.SafeHtml.create("span", {
- "class": this.config_.cssItemLabel,
- title: this.getToolTip() || null
- }, this.getSafeHtml());
- return goog.html.SafeHtml.concat(a, goog.html.SafeHtml.create("span", {}, this.getAfterLabelSafeHtml()))
- }
- ;
- goog.ui.tree.BaseNode.prototype.getAfterLabelHtml = function () {
- return goog.html.SafeHtml.unwrap(this.getAfterLabelSafeHtml())
- }
- ;
- goog.ui.tree.BaseNode.prototype.getAfterLabelSafeHtml = function () {
- return this.afterLabelHtml_
- }
- ;
- goog.ui.tree.BaseNode.prototype.setAfterLabelSafeHtml = function (a) {
- this.afterLabelHtml_ = a;
- var b = this.getAfterLabelElement();
- b && goog.dom.safe.setInnerHtml(b, a)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getIconSafeHtml = function () {
- return goog.html.SafeHtml.create("span", {
- style: {
- display: "inline-block"
- },
- "class": this.getCalculatedIconClass()
- })
- }
- ;
- goog.ui.tree.BaseNode.prototype.getCalculatedIconClass = goog.abstractMethod;
- goog.ui.tree.BaseNode.prototype.getExpandIconSafeHtml = function () {
- return goog.html.SafeHtml.create("span", {
- type: "expand",
- style: {
- display: "inline-block"
- },
- "class": this.getExpandIconClass()
- })
- }
- ;
- goog.ui.tree.BaseNode.prototype.getExpandIconClass = function () {
- var a = this.getTree()
- , b = !a.getShowLines() || a == this.getParent() && !a.getShowRootLines()
- , c = this.config_
- , d = new goog.string.StringBuffer;
- d.append(c.cssTreeIcon, " ", c.cssExpandTreeIcon, " ");
- if (this.hasChildren()) {
- var e = 0;
- a.getShowExpandIcons() && this.isUserCollapsible_ && (e = this.getExpanded() ? 2 : 1);
- b || (e = this.isLastSibling() ? e + 4 : e + 8);
- switch (e) {
- case 1:
- d.append(c.cssExpandTreeIconPlus);
- break;
- case 2:
- d.append(c.cssExpandTreeIconMinus);
- break;
- case 4:
- d.append(c.cssExpandTreeIconL);
- break;
- case 5:
- d.append(c.cssExpandTreeIconLPlus);
- break;
- case 6:
- d.append(c.cssExpandTreeIconLMinus);
- break;
- case 8:
- d.append(c.cssExpandTreeIconT);
- break;
- case 9:
- d.append(c.cssExpandTreeIconTPlus);
- break;
- case 10:
- d.append(c.cssExpandTreeIconTMinus);
- break;
- default:
- d.append(c.cssExpandTreeIconBlank)
- }
- } else
- b ? d.append(c.cssExpandTreeIconBlank) : this.isLastSibling() ? d.append(c.cssExpandTreeIconL) : d.append(c.cssExpandTreeIconT);
- return d.toString()
- }
- ;
- goog.ui.tree.BaseNode.prototype.getLineStyle = function () {
- var a = this.getExpanded() && this.hasChildren();
- return goog.html.SafeStyle.create({
- "background-position": this.getBackgroundPosition(),
- display: a ? null : "none"
- })
- }
- ;
- goog.ui.tree.BaseNode.prototype.getBackgroundPosition = function () {
- return (this.isLastSibling() ? "-100" : (this.getDepth() - 1) * this.config_.indentWidth) + "px 0"
- }
- ;
- goog.ui.tree.BaseNode.prototype.getElement = function () {
- var a = goog.ui.tree.BaseNode.superClass_.getElement.call(this);
- a || (a = this.getDomHelper().getElement(this.getId()),
- this.setElementInternal(a));
- return a
- }
- ;
- goog.ui.tree.BaseNode.prototype.getRowElement = function () {
- var a = this.getElement();
- return a ? a.firstChild : null
- }
- ;
- goog.ui.tree.BaseNode.prototype.getExpandIconElement = function () {
- var a = this.getRowElement();
- return a ? a.firstChild : null
- }
- ;
- goog.ui.tree.BaseNode.prototype.getIconElement = function () {
- var a = this.getRowElement();
- return a ? a.childNodes[1] : null
- }
- ;
- goog.ui.tree.BaseNode.prototype.getLabelElement = function () {
- var a = this.getRowElement();
- return a && a.lastChild ? a.lastChild.previousSibling : null
- }
- ;
- goog.ui.tree.BaseNode.prototype.getAfterLabelElement = function () {
- var a = this.getRowElement();
- return a ? a.lastChild : null
- }
- ;
- goog.ui.tree.BaseNode.prototype.getChildrenElement = function () {
- var a = this.getElement();
- return a ? a.lastChild : null
- }
- ;
- goog.ui.tree.BaseNode.prototype.setIconClass = function (a) {
- this.iconClass_ = a;
- this.isInDocument() && this.updateIcon_()
- }
- ;
- goog.ui.tree.BaseNode.prototype.getIconClass = function () {
- return this.iconClass_
- }
- ;
- goog.ui.tree.BaseNode.prototype.setExpandedIconClass = function (a) {
- this.expandedIconClass_ = a;
- this.isInDocument() && this.updateIcon_()
- }
- ;
- goog.ui.tree.BaseNode.prototype.getExpandedIconClass = function () {
- return this.expandedIconClass_
- }
- ;
- goog.ui.tree.BaseNode.prototype.setText = function (a) {
- this.setSafeHtml(goog.html.SafeHtml.htmlEscape(a))
- }
- ;
- goog.ui.tree.BaseNode.prototype.getText = function () {
- return goog.string.unescapeEntities(goog.html.SafeHtml.unwrap(this.html_))
- }
- ;
- goog.ui.tree.BaseNode.prototype.setSafeHtml = function (a) {
- this.html_ = a;
- var b = this.getLabelElement();
- b && goog.dom.safe.setInnerHtml(b, a);
- (a = this.getTree()) && a.setNode(this)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getHtml = function () {
- return goog.html.SafeHtml.unwrap(this.getSafeHtml())
- }
- ;
- goog.ui.tree.BaseNode.prototype.getSafeHtml = function () {
- return this.html_
- }
- ;
- goog.ui.tree.BaseNode.prototype.setToolTip = function (a) {
- this.toolTip_ = a;
- var b = this.getLabelElement();
- b && (b.title = a)
- }
- ;
- goog.ui.tree.BaseNode.prototype.getToolTip = function () {
- return this.toolTip_
- }
- ;
- goog.ui.tree.BaseNode.prototype.updateRow = function () {
- var a = this.getRowElement();
- a && (a.className = this.getRowClassName())
- }
- ;
- goog.ui.tree.BaseNode.prototype.updateExpandIcon = function () {
- var a = this.getExpandIconElement();
- a && (a.className = this.getExpandIconClass());
- if (a = this.getChildrenElement())
- a.style.backgroundPosition = this.getBackgroundPosition()
- }
- ;
- goog.ui.tree.BaseNode.prototype.updateIcon_ = function () {
- this.getIconElement().className = this.getCalculatedIconClass()
- }
- ;
- goog.ui.tree.BaseNode.prototype.onMouseDown = function (a) {
- "expand" == a.target.getAttribute("type") && this.hasChildren() ? this.isUserCollapsible_ && this.toggle() : (this.select(),
- this.updateRow())
- }
- ;
- goog.ui.tree.BaseNode.prototype.onClick_ = goog.events.Event.preventDefault;
- goog.ui.tree.BaseNode.prototype.onDoubleClick_ = function (a) {
- "expand" == a.target.getAttribute("type") && this.hasChildren() || this.isUserCollapsible_ && this.toggle()
- }
- ;
- goog.ui.tree.BaseNode.prototype.onKeyDown = function (a) {
- var b = !0;
- switch (a.keyCode) {
- case goog.events.KeyCodes.RIGHT:
- if (a.altKey)
- break;
- this.hasChildren() && (this.getExpanded() ? this.getFirstChild().select() : this.setExpanded(!0));
- break;
- case goog.events.KeyCodes.LEFT:
- if (a.altKey)
- break;
- if (this.hasChildren() && this.getExpanded() && this.isUserCollapsible_)
- this.setExpanded(!1);
- else {
- var c = this.getParent()
- , d = this.getTree();
- c && (d.getShowRootNode() || c != d) && c.select()
- }
- break;
- case goog.events.KeyCodes.DOWN:
- (c = this.getNextShownNode()) && c.select();
- break;
- case goog.events.KeyCodes.UP:
- (c = this.getPreviousShownNode()) && c.select();
- break;
- default:
- b = !1
- }
- b && (a.preventDefault(),
- (d = this.getTree()) && d.clearTypeAhead());
- return b
- }
- ;
- goog.ui.tree.BaseNode.prototype.getLastShownDescendant = function () {
- return this.getExpanded() && this.hasChildren() ? this.getLastChild().getLastShownDescendant() : this
- }
- ;
- goog.ui.tree.BaseNode.prototype.getNextShownNode = function () {
- if (this.hasChildren() && this.getExpanded())
- return this.getFirstChild();
- for (var a = this, b; a != this.getTree();) {
- b = a.getNextSibling();
- if (null != b)
- return b;
- a = a.getParent()
- }
- return null
- }
- ;
- goog.ui.tree.BaseNode.prototype.getPreviousShownNode = function () {
- var a = this.getPreviousSibling();
- if (null != a)
- return a.getLastShownDescendant();
- a = this.getParent();
- var b = this.getTree();
- return !b.getShowRootNode() && a == b || this == b ? null : a
- }
- ;
- goog.ui.tree.BaseNode.prototype.getClientData = goog.ui.tree.BaseNode.prototype.getModel;
- goog.ui.tree.BaseNode.prototype.setClientData = goog.ui.tree.BaseNode.prototype.setModel;
- goog.ui.tree.BaseNode.prototype.getConfig = function () {
- return this.config_
- }
- ;
- goog.ui.tree.BaseNode.prototype.setTreeInternal = function (a) {
- this.tree != a && (this.tree = a,
- a.setNode(this),
- this.forEachChild(function (b) {
- b.setTreeInternal(a)
- }))
- }
- ;
- goog.ui.tree.BaseNode.defaultConfig = {
- indentWidth: 19,
- cssRoot: "goog-tree-root goog-tree-item",
- cssHideRoot: "goog-tree-hide-root",
- cssItem: "goog-tree-item",
- cssChildren: "goog-tree-children",
- cssChildrenNoLines: "goog-tree-children-nolines",
- cssTreeRow: "goog-tree-row",
- cssItemLabel: "goog-tree-item-label",
- cssTreeIcon: "goog-tree-icon",
- cssExpandTreeIcon: "goog-tree-expand-icon",
- cssExpandTreeIconPlus: "goog-tree-expand-icon-plus",
- cssExpandTreeIconMinus: "goog-tree-expand-icon-minus",
- cssExpandTreeIconTPlus: "goog-tree-expand-icon-tplus",
- cssExpandTreeIconTMinus: "goog-tree-expand-icon-tminus",
- cssExpandTreeIconLPlus: "goog-tree-expand-icon-lplus",
- cssExpandTreeIconLMinus: "goog-tree-expand-icon-lminus",
- cssExpandTreeIconT: "goog-tree-expand-icon-t",
- cssExpandTreeIconL: "goog-tree-expand-icon-l",
- cssExpandTreeIconBlank: "goog-tree-expand-icon-blank",
- cssExpandedFolderIcon: "goog-tree-expanded-folder-icon",
- cssCollapsedFolderIcon: "goog-tree-collapsed-folder-icon",
- cssFileIcon: "goog-tree-file-icon",
- cssExpandedRootIcon: "goog-tree-expanded-folder-icon",
- cssCollapsedRootIcon: "goog-tree-collapsed-folder-icon",
- cssSelectedRow: "selected"
- };
- goog.ui.tree.TreeNode = function (a, b, c) {
- goog.ui.tree.BaseNode.call(this, a, b, c)
- }
- ;
- goog.inherits(goog.ui.tree.TreeNode, goog.ui.tree.BaseNode);
- goog.ui.tree.TreeNode.prototype.getTree = function () {
- if (this.tree)
- return this.tree;
- var a = this.getParent();
- return a && (a = a.getTree()) ? (this.setTreeInternal(a),
- a) : null
- }
- ;
- goog.ui.tree.TreeNode.prototype.getCalculatedIconClass = function () {
- var a = this.getExpanded()
- , b = this.getExpandedIconClass();
- if (a && b)
- return b;
- b = this.getIconClass();
- if (!a && b)
- return b;
- b = this.getConfig();
- if (this.hasChildren()) {
- if (a && b.cssExpandedFolderIcon)
- return b.cssTreeIcon + " " + b.cssExpandedFolderIcon;
- if (!a && b.cssCollapsedFolderIcon)
- return b.cssTreeIcon + " " + b.cssCollapsedFolderIcon
- } else if (b.cssFileIcon)
- return b.cssTreeIcon + " " + b.cssFileIcon;
- return ""
- }
- ;
- goog.structs = {};
- goog.structs.getCount = function (a) {
- return a.getCount && "function" == typeof a.getCount ? a.getCount() : goog.isArrayLike(a) || "string" === typeof a ? a.length : goog.object.getCount(a)
- }
- ;
- goog.structs.getValues = function (a) {
- if (a.getValues && "function" == typeof a.getValues)
- return a.getValues();
- if ("string" === typeof a)
- return a.split("");
- if (goog.isArrayLike(a)) {
- for (var b = [], c = a.length, d = 0; d < c; d++)
- b.push(a[d]);
- return b
- }
- return goog.object.getValues(a)
- }
- ;
- goog.structs.getKeys = function (a) {
- if (a.getKeys && "function" == typeof a.getKeys)
- return a.getKeys();
- if (!a.getValues || "function" != typeof a.getValues) {
- if (goog.isArrayLike(a) || "string" === typeof a) {
- var b = [];
- a = a.length;
- for (var c = 0; c < a; c++)
- b.push(c);
- return b
- }
- return goog.object.getKeys(a)
- }
- }
- ;
- goog.structs.contains = function (a, b) {
- return a.contains && "function" == typeof a.contains ? a.contains(b) : a.containsValue && "function" == typeof a.containsValue ? a.containsValue(b) : goog.isArrayLike(a) || "string" === typeof a ? goog.array.contains(a, b) : goog.object.containsValue(a, b)
- }
- ;
- goog.structs.isEmpty = function (a) {
- return a.isEmpty && "function" == typeof a.isEmpty ? a.isEmpty() : goog.isArrayLike(a) || "string" === typeof a ? goog.array.isEmpty(a) : goog.object.isEmpty(a)
- }
- ;
- goog.structs.clear = function (a) {
- a.clear && "function" == typeof a.clear ? a.clear() : goog.isArrayLike(a) ? goog.array.clear(a) : goog.object.clear(a)
- }
- ;
- goog.structs.forEach = function (a, b, c) {
- if (a.forEach && "function" == typeof a.forEach)
- a.forEach(b, c);
- else if (goog.isArrayLike(a) || "string" === typeof a)
- goog.array.forEach(a, b, c);
- else
- for (var d = goog.structs.getKeys(a), e = goog.structs.getValues(a), f = e.length, g = 0; g < f; g++)
- b.call(c, e[g], d && d[g], a)
- }
- ;
- goog.structs.filter = function (a, b, c) {
- if ("function" == typeof a.filter)
- return a.filter(b, c);
- if (goog.isArrayLike(a) || "string" === typeof a)
- return goog.array.filter(a, b, c);
- var d = goog.structs.getKeys(a)
- , e = goog.structs.getValues(a)
- , f = e.length;
- if (d) {
- var g = {};
- for (var h = 0; h < f; h++)
- b.call(c, e[h], d[h], a) && (g[d[h]] = e[h])
- } else
- for (g = [],
- h = 0; h < f; h++)
- b.call(c, e[h], void 0, a) && g.push(e[h]);
- return g
- }
- ;
- goog.structs.map = function (a, b, c) {
- if ("function" == typeof a.map)
- return a.map(b, c);
- if (goog.isArrayLike(a) || "string" === typeof a)
- return goog.array.map(a, b, c);
- var d = goog.structs.getKeys(a)
- , e = goog.structs.getValues(a)
- , f = e.length;
- if (d) {
- var g = {};
- for (var h = 0; h < f; h++)
- g[d[h]] = b.call(c, e[h], d[h], a)
- } else
- for (g = [],
- h = 0; h < f; h++)
- g[h] = b.call(c, e[h], void 0, a);
- return g
- }
- ;
- goog.structs.some = function (a, b, c) {
- if ("function" == typeof a.some)
- return a.some(b, c);
- if (goog.isArrayLike(a) || "string" === typeof a)
- return goog.array.some(a, b, c);
- for (var d = goog.structs.getKeys(a), e = goog.structs.getValues(a), f = e.length, g = 0; g < f; g++)
- if (b.call(c, e[g], d && d[g], a))
- return !0;
- return !1
- }
- ;
- goog.structs.every = function (a, b, c) {
- if ("function" == typeof a.every)
- return a.every(b, c);
- if (goog.isArrayLike(a) || "string" === typeof a)
- return goog.array.every(a, b, c);
- for (var d = goog.structs.getKeys(a), e = goog.structs.getValues(a), f = e.length, g = 0; g < f; g++)
- if (!b.call(c, e[g], d && d[g], a))
- return !1;
- return !0
- }
- ;
- goog.structs.Trie = function (a) {
- this.value_ = void 0;
- this.childNodes_ = {};
- a && this.setAll(a)
- }
- ;
- goog.structs.Trie.prototype.set = function (a, b) {
- this.setOrAdd_(a, b, !1)
- }
- ;
- goog.structs.Trie.prototype.add = function (a, b) {
- this.setOrAdd_(a, b, !0)
- }
- ;
- goog.structs.Trie.prototype.setOrAdd_ = function (a, b, c) {
- for (var d = this, e = 0; e < a.length; e++) {
- var f = a.charAt(e);
- d.childNodes_[f] || (d.childNodes_[f] = new goog.structs.Trie);
- d = d.childNodes_[f]
- }
- if (c && void 0 !== d.value_)
- throw Error('The collection already contains the key "' + a + '"');
- d.value_ = b
- }
- ;
- goog.structs.Trie.prototype.setAll = function (a) {
- var b = goog.structs.getKeys(a);
- a = goog.structs.getValues(a);
- for (var c = 0; c < b.length; c++)
- this.set(b[c], a[c])
- }
- ;
- goog.structs.Trie.prototype.getChildNode_ = function (a) {
- for (var b = this, c = 0; c < a.length; c++) {
- var d = a.charAt(c);
- b = b.childNodes_[d];
- if (!b)
- return
- }
- return b
- }
- ;
- goog.structs.Trie.prototype.get = function (a) {
- return (a = this.getChildNode_(a)) ? a.value_ : void 0
- }
- ;
- goog.structs.Trie.prototype.getKeyAndPrefixes = function (a, b) {
- var c = this
- , d = {}
- , e = b || 0;
- void 0 !== c.value_ && (d[e] = c.value_);
- for (; e < a.length; e++) {
- var f = a.charAt(e);
- if (!(f in c.childNodes_))
- break;
- c = c.childNodes_[f];
- void 0 !== c.value_ && (d[e] = c.value_)
- }
- return d
- }
- ;
- goog.structs.Trie.prototype.getValues = function () {
- var a = [];
- this.getValuesInternal_(a);
- return a
- }
- ;
- goog.structs.Trie.prototype.getValuesInternal_ = function (a) {
- void 0 !== this.value_ && a.push(this.value_);
- for (var b in this.childNodes_)
- this.childNodes_[b].getValuesInternal_(a)
- }
- ;
- goog.structs.Trie.prototype.getKeys = function (a) {
- var b = [];
- if (a) {
- for (var c = this, d = 0; d < a.length; d++) {
- var e = a.charAt(d);
- if (!c.childNodes_[e])
- return [];
- c = c.childNodes_[e]
- }
- c.getKeysInternal_(a, b)
- } else
- this.getKeysInternal_("", b);
- return b
- }
- ;
- goog.structs.Trie.prototype.getKeysInternal_ = function (a, b) {
- void 0 !== this.value_ && b.push(a);
- for (var c in this.childNodes_)
- this.childNodes_[c].getKeysInternal_(a + c, b)
- }
- ;
- goog.structs.Trie.prototype.containsKey = function (a) {
- return void 0 !== this.get(a)
- }
- ;
- goog.structs.Trie.prototype.containsPrefix = function (a) {
- return 0 == a.length ? !this.isEmpty() : !!this.getChildNode_(a)
- }
- ;
- goog.structs.Trie.prototype.containsValue = function (a) {
- if (this.value_ === a)
- return !0;
- for (var b in this.childNodes_)
- if (this.childNodes_[b].containsValue(a))
- return !0;
- return !1
- }
- ;
- goog.structs.Trie.prototype.clear = function () {
- this.childNodes_ = {};
- this.value_ = void 0
- }
- ;
- goog.structs.Trie.prototype.remove = function (a) {
- for (var b = this, c = [], d = 0; d < a.length; d++) {
- var e = a.charAt(d);
- if (!b.childNodes_[e])
- throw Error('The collection does not have the key "' + a + '"');
- c.push([b, e]);
- b = b.childNodes_[e]
- }
- a = b.value_;
- for (delete b.value_; 0 < c.length;)
- if (e = c.pop(),
- b = e[0],
- e = e[1],
- b.childNodes_[e].isEmpty())
- delete b.childNodes_[e];
- else
- break;
- return a
- }
- ;
- goog.structs.Trie.prototype.clone = function () {
- return new goog.structs.Trie(this)
- }
- ;
- goog.structs.Trie.prototype.getCount = function () {
- return goog.structs.getCount(this.getValues())
- }
- ;
- goog.structs.Trie.prototype.isEmpty = function () {
- return void 0 === this.value_ && goog.object.isEmpty(this.childNodes_)
- }
- ;
- goog.ui.tree.TypeAhead = function () {
- this.nodeMap_ = new goog.structs.Trie;
- this.buffer_ = "";
- this.matchingNodes_ = this.matchingLabels_ = null;
- this.matchingNodeIndex_ = this.matchingLabelIndex_ = 0
- }
- ;
- goog.ui.tree.TypeAhead.Offset = {
- DOWN: 1,
- UP: -1
- };
- goog.ui.tree.TypeAhead.prototype.handleNavigation = function (a) {
- var b = !1;
- switch (a.keyCode) {
- case goog.events.KeyCodes.DOWN:
- case goog.events.KeyCodes.UP:
- a.ctrlKey && (this.jumpTo_(a.keyCode == goog.events.KeyCodes.DOWN ? goog.ui.tree.TypeAhead.Offset.DOWN : goog.ui.tree.TypeAhead.Offset.UP),
- b = !0);
- break;
- case goog.events.KeyCodes.BACKSPACE:
- a = this.buffer_.length - 1;
- b = !0;
- 0 < a ? (this.buffer_ = this.buffer_.substring(0, a),
- this.jumpToLabel_(this.buffer_)) : 0 == a ? this.buffer_ = "" : b = !1;
- break;
- case goog.events.KeyCodes.ESC:
- this.buffer_ = "",
- b = !0
- }
- return b
- }
- ;
- goog.ui.tree.TypeAhead.prototype.handleTypeAheadChar = function (a) {
- var b = !1;
- a.ctrlKey || a.altKey || (a = String.fromCharCode(a.charCode || a.keyCode).toLowerCase(),
- goog.string.isUnicodeChar(a) && (" " != a || this.buffer_) && (this.buffer_ += a,
- b = this.jumpToLabel_(this.buffer_)));
- return b
- }
- ;
- goog.ui.tree.TypeAhead.prototype.setNodeInMap = function (a) {
- var b = a.getText();
- if (b && !goog.string.isEmptyOrWhitespace(goog.string.makeSafe(b))) {
- b = b.toLowerCase();
- var c = this.nodeMap_.get(b);
- c ? c.push(a) : this.nodeMap_.set(b, [a])
- }
- }
- ;
- goog.ui.tree.TypeAhead.prototype.removeNodeFromMap = function (a) {
- var b = a.getText();
- if (b && !goog.string.isEmptyOrWhitespace(goog.string.makeSafe(b))) {
- b = b.toLowerCase();
- var c = this.nodeMap_.get(b);
- if (c) {
- for (var d = a.getChildCount(), e = 0; e < d; e++)
- this.removeNodeFromMap(a.getChildAt(e));
- goog.array.remove(c, a);
- c.length || this.nodeMap_.remove(b)
- }
- }
- }
- ;
- goog.ui.tree.TypeAhead.prototype.jumpToLabel_ = function (a) {
- var b = !1;
- (a = this.nodeMap_.getKeys(a)) && a.length && (this.matchingLabelIndex_ = this.matchingNodeIndex_ = 0,
- b = this.nodeMap_.get(a[0]),
- b = this.selectMatchingNode_(b)) && (this.matchingLabels_ = a);
- return b
- }
- ;
- goog.ui.tree.TypeAhead.prototype.jumpTo_ = function (a) {
- var b = !1
- , c = this.matchingLabels_;
- if (c) {
- b = null;
- var d = !1;
- if (this.matchingNodes_) {
- var e = this.matchingNodeIndex_ + a;
- 0 <= e && e < this.matchingNodes_.length ? (this.matchingNodeIndex_ = e,
- b = this.matchingNodes_) : d = !0
- }
- b || (e = this.matchingLabelIndex_ + a,
- 0 <= e && e < c.length && (this.matchingLabelIndex_ = e),
- c.length > this.matchingLabelIndex_ && (b = this.nodeMap_.get(c[this.matchingLabelIndex_])),
- b && b.length && d && (this.matchingNodeIndex_ = a == goog.ui.tree.TypeAhead.Offset.UP ? b.length - 1 : 0));
- if (b = this.selectMatchingNode_(b))
- this.matchingLabels_ = c
- }
- return b
- }
- ;
- goog.ui.tree.TypeAhead.prototype.selectMatchingNode_ = function (a) {
- if (a) {
- if (this.matchingNodeIndex_ < a.length) {
- var b = a[this.matchingNodeIndex_];
- this.matchingNodes_ = a
- }
- b && (b.reveal(),
- b.select())
- }
- return !!b
- }
- ;
- goog.ui.tree.TypeAhead.prototype.clear = function () {
- this.buffer_ = ""
- }
- ;
- goog.ui.tree.TreeControl = function (a, b, c) {
- goog.ui.tree.BaseNode.call(this, a, b, c);
- this.setExpandedInternal(!0);
- this.setSelectedInternal(!0);
- this.selectedItem_ = this;
- this.typeAhead_ = new goog.ui.tree.TypeAhead;
- this.focusHandler_ = this.keyHandler_ = null;
- this.logger_ = goog.log.getLogger("this");
- this.focused_ = !1;
- this.focusedNode_ = null;
- this.showRootLines_ = this.showRootNode_ = this.showExpandIcons_ = this.showLines_ = !0;
- if (goog.userAgent.IE)
- try {
- document.execCommand("BackgroundImageCache", !1, !0)
- } catch (d) {
- goog.log.warning(this.logger_, "Failed to enable background image cache")
- }
- }
- ;
- goog.inherits(goog.ui.tree.TreeControl, goog.ui.tree.BaseNode);
- goog.ui.tree.TreeControl.prototype.getTree = function () {
- return this
- }
- ;
- goog.ui.tree.TreeControl.prototype.getDepth = function () {
- return 0
- }
- ;
- goog.ui.tree.TreeControl.prototype.reveal = function () { }
- ;
- goog.ui.tree.TreeControl.prototype.handleFocus_ = function (a) {
- this.focused_ = !0;
- goog.dom.classlist.add(goog.asserts.assert(this.getElement()), "focused");
- this.selectedItem_ && this.selectedItem_.select()
- }
- ;
- goog.ui.tree.TreeControl.prototype.handleBlur_ = function (a) {
- this.focused_ = !1;
- goog.dom.classlist.remove(goog.asserts.assert(this.getElement()), "focused")
- }
- ;
- goog.ui.tree.TreeControl.prototype.hasFocus = function () {
- return this.focused_
- }
- ;
- goog.ui.tree.TreeControl.prototype.getExpanded = function () {
- return !this.showRootNode_ || goog.ui.tree.TreeControl.superClass_.getExpanded.call(this)
- }
- ;
- goog.ui.tree.TreeControl.prototype.setExpanded = function (a) {
- this.showRootNode_ ? goog.ui.tree.TreeControl.superClass_.setExpanded.call(this, a) : this.setExpandedInternal(a)
- }
- ;
- goog.ui.tree.TreeControl.prototype.getExpandIconSafeHtml = function () {
- return goog.html.SafeHtml.EMPTY
- }
- ;
- goog.ui.tree.TreeControl.prototype.getIconElement = function () {
- var a = this.getRowElement();
- return a ? a.firstChild : null
- }
- ;
- goog.ui.tree.TreeControl.prototype.getExpandIconElement = function () {
- return null
- }
- ;
- goog.ui.tree.TreeControl.prototype.updateExpandIcon = function () { }
- ;
- goog.ui.tree.TreeControl.prototype.getRowClassName = function () {
- return goog.ui.tree.TreeControl.superClass_.getRowClassName.call(this) + (this.showRootNode_ ? "" : " " + this.getConfig().cssHideRoot)
- }
- ;
- goog.ui.tree.TreeControl.prototype.getCalculatedIconClass = function () {
- var a = this.getExpanded()
- , b = this.getExpandedIconClass();
- if (a && b)
- return b;
- b = this.getIconClass();
- if (!a && b)
- return b;
- b = this.getConfig();
- return a && b.cssExpandedRootIcon ? b.cssTreeIcon + " " + b.cssExpandedRootIcon : !a && b.cssCollapsedRootIcon ? b.cssTreeIcon + " " + b.cssCollapsedRootIcon : ""
- }
- ;
- goog.ui.tree.TreeControl.prototype.setSelectedItem = function (a) {
- if (this.selectedItem_ != a) {
- var b = !1;
- this.selectedItem_ && (b = this.selectedItem_ == this.focusedNode_,
- this.selectedItem_.setSelectedInternal(!1));
- if (this.selectedItem_ = a)
- a.setSelectedInternal(!0),
- b && a.select();
- this.dispatchEvent(goog.events.EventType.CHANGE)
- }
- }
- ;
- goog.ui.tree.TreeControl.prototype.getSelectedItem = function () {
- return this.selectedItem_
- }
- ;
- goog.ui.tree.TreeControl.prototype.setShowLines = function (a) {
- this.showLines_ != a && (this.showLines_ = a,
- this.isInDocument() && this.updateLinesAndExpandIcons_())
- }
- ;
- goog.ui.tree.TreeControl.prototype.getShowLines = function () {
- return this.showLines_
- }
- ;
- goog.ui.tree.TreeControl.prototype.updateLinesAndExpandIcons_ = function () {
- function a(e) {
- var f = e.getChildrenElement();
- if (f) {
- var g = !c || b == e.getParent() && !d ? e.getConfig().cssChildrenNoLines : e.getConfig().cssChildren;
- f.className = g;
- if (f = e.getExpandIconElement())
- f.className = e.getExpandIconClass()
- }
- e.forEachChild(a)
- }
- var b = this
- , c = b.getShowLines()
- , d = b.getShowRootLines();
- a(this)
- }
- ;
- goog.ui.tree.TreeControl.prototype.setShowRootLines = function (a) {
- this.showRootLines_ != a && (this.showRootLines_ = a,
- this.isInDocument() && this.updateLinesAndExpandIcons_())
- }
- ;
- goog.ui.tree.TreeControl.prototype.getShowRootLines = function () {
- return this.showRootLines_
- }
- ;
- goog.ui.tree.TreeControl.prototype.setShowExpandIcons = function (a) {
- this.showExpandIcons_ != a && (this.showExpandIcons_ = a,
- this.isInDocument() && this.updateLinesAndExpandIcons_())
- }
- ;
- goog.ui.tree.TreeControl.prototype.getShowExpandIcons = function () {
- return this.showExpandIcons_
- }
- ;
- goog.ui.tree.TreeControl.prototype.setShowRootNode = function (a) {
- if (this.showRootNode_ != a) {
- this.showRootNode_ = a;
- if (this.isInDocument()) {
- var b = this.getRowElement();
- b && (b.className = this.getRowClassName())
- }
- !a && this.getSelectedItem() == this && this.getFirstChild() && this.setSelectedItem(this.getFirstChild())
- }
- }
- ;
- goog.ui.tree.TreeControl.prototype.getShowRootNode = function () {
- return this.showRootNode_
- }
- ;
- goog.ui.tree.TreeControl.prototype.initAccessibility = function () {
- goog.ui.tree.TreeControl.superClass_.initAccessibility.call(this);
- var a = this.getElement();
- goog.asserts.assert(a, "The DOM element for the tree cannot be null.");
- goog.a11y.aria.setRole(a, "tree");
- goog.a11y.aria.setState(a, "labelledby", this.getLabelElement().id)
- }
- ;
- goog.ui.tree.TreeControl.prototype.enterDocument = function () {
- goog.ui.tree.TreeControl.superClass_.enterDocument.call(this);
- var a = this.getElement();
- a.className = this.getConfig().cssRoot;
- a.setAttribute("hideFocus", "true");
- this.attachEvents_();
- this.initAccessibility()
- }
- ;
- goog.ui.tree.TreeControl.prototype.exitDocument = function () {
- goog.ui.tree.TreeControl.superClass_.exitDocument.call(this);
- this.detachEvents_()
- }
- ;
- goog.ui.tree.TreeControl.prototype.attachEvents_ = function () {
- var a = this.getElement();
- a.tabIndex = 0;
- var b = this.keyHandler_ = new goog.events.KeyHandler(a)
- , c = this.focusHandler_ = new goog.events.FocusHandler(a);
- this.getHandler().listen(c, goog.events.FocusHandler.EventType.FOCUSOUT, this.handleBlur_).listen(c, goog.events.FocusHandler.EventType.FOCUSIN, this.handleFocus_).listen(b, goog.events.KeyHandler.EventType.KEY, this.handleKeyEvent).listen(a, goog.events.EventType.MOUSEDOWN, this.handleMouseEvent_).listen(a, goog.events.EventType.CLICK, this.handleMouseEvent_).listen(a, goog.events.EventType.DBLCLICK, this.handleMouseEvent_)
- }
- ;
- goog.ui.tree.TreeControl.prototype.detachEvents_ = function () {
- this.keyHandler_.dispose();
- this.keyHandler_ = null;
- this.focusHandler_.dispose();
- this.focusHandler_ = null
- }
- ;
- goog.ui.tree.TreeControl.prototype.handleMouseEvent_ = function (a) {
- goog.log.fine(this.logger_, "Received event " + a.type);
- var b = this.getNodeFromEvent_(a);
- if (b)
- switch (a.type) {
- case goog.events.EventType.MOUSEDOWN:
- b.onMouseDown(a);
- break;
- case goog.events.EventType.CLICK:
- b.onClick_(a);
- break;
- case goog.events.EventType.DBLCLICK:
- b.onDoubleClick_(a)
- }
- }
- ;
- goog.ui.tree.TreeControl.prototype.handleKeyEvent = function (a) {
- var b;
- (b = this.typeAhead_.handleNavigation(a) || this.selectedItem_ && this.selectedItem_.onKeyDown(a) || this.typeAhead_.handleTypeAheadChar(a)) && a.preventDefault();
- return b
- }
- ;
- goog.ui.tree.TreeControl.prototype.getNodeFromEvent_ = function (a) {
- for (var b = a.target; null != b;) {
- if (a = goog.ui.tree.BaseNode.allNodes[b.id])
- return a;
- if (b == this.getElement())
- break;
- b = b.parentNode
- }
- return null
- }
- ;
- goog.ui.tree.TreeControl.prototype.createNode = function (a) {
- return new goog.ui.tree.TreeNode(a || goog.html.SafeHtml.EMPTY, this.getConfig(), this.getDomHelper())
- }
- ;
- goog.ui.tree.TreeControl.prototype.setNode = function (a) {
- this.typeAhead_.setNodeInMap(a)
- }
- ;
- goog.ui.tree.TreeControl.prototype.removeNode = function (a) {
- this.typeAhead_.removeNodeFromMap(a)
- }
- ;
- goog.ui.tree.TreeControl.prototype.clearTypeAhead = function () {
- this.typeAhead_.clear()
- }
- ;
- goog.ui.tree.TreeControl.defaultConfig = goog.ui.tree.BaseNode.defaultConfig;
- var Blockly = {
- Blocks: {}
- };
- Blockly.Touch = {};
- Blockly.Touch.touchIdentifier_ = null;
- Blockly.Touch.onTouchUpWrapper_ = null;
- Blockly.Touch.TOUCH_MAP = {};
- goog.events.BrowserFeature.TOUCH_ENABLED && (Blockly.Touch.TOUCH_MAP = {
- mousedown: ["touchstart"],
- mousemove: ["touchmove"],
- mouseup: ["touchend", "touchcancel"]
- });
- Blockly.longPid_ = 0;
- Blockly.longStart_ = function (a, b) {
- Blockly.longStop_();
- Blockly.longPid_ = setTimeout(function () {
- a.button = 2;
- b.onMouseDown_(a)
- }, Blockly.LONGPRESS)
- }
- ;
- Blockly.longStop_ = function () {
- Blockly.longPid_ && (clearTimeout(Blockly.longPid_),
- Blockly.longPid_ = 0)
- }
- ;
- Blockly.onMouseUp_ = function (a) {
- a = Blockly.getMainWorkspace();
- a.dragMode_ != Blockly.DRAG_NONE && (Blockly.Touch.clearTouchIdentifier(),
- Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN),
- a.dragMode_ = Blockly.DRAG_NONE,
- Blockly.Touch.onTouchUpWrapper_ && (Blockly.unbindEvent_(Blockly.Touch.onTouchUpWrapper_),
- Blockly.Touch.onTouchUpWrapper_ = null),
- Blockly.onMouseMoveWrapper_ && (Blockly.unbindEvent_(Blockly.onMouseMoveWrapper_),
- Blockly.onMouseMoveWrapper_ = null))
- }
- ;
- Blockly.onMouseMove_ = function (a) {
- var b = Blockly.getMainWorkspace();
- if (b.dragMode_ != Blockly.DRAG_NONE) {
- var c = a.clientX - b.startDragMouseX
- , d = a.clientY - b.startDragMouseY
- , e = b.startDragMetrics
- , f = b.startScrollX + c
- , g = b.startScrollY + d;
- f = Math.min(f, -e.contentLeft);
- g = Math.min(g, -e.contentTop);
- f = Math.max(f, e.viewWidth - e.contentLeft - e.contentWidth);
- g = Math.max(g, e.viewHeight - e.contentTop - e.contentHeight);
- b.scrollbar.set(-f - e.contentLeft, -g - e.contentTop);
- Math.sqrt(c * c + d * d) > Blockly.DRAG_RADIUS && (Blockly.longStop_(),
- b.dragMode_ = Blockly.DRAG_FREE);
- a.stopPropagation();
- a.preventDefault()
- }
- }
- ;
- Blockly.Touch.clearTouchIdentifier = function () {
- Blockly.Touch.touchIdentifier_ = null
- }
- ;
- Blockly.Touch.shouldHandleEvent = function (a) {
- return !Blockly.Touch.isMouseOrTouchEvent(a) || Blockly.Touch.checkTouchIdentifier(a)
- }
- ;
- Blockly.Touch.checkTouchIdentifier = function (a) {
- var b = a.changedTouches && a.changedTouches[0] && void 0 != a.changedTouches[0].identifier && null != a.changedTouches[0].identifier ? a.changedTouches[0].identifier : "mouse";
- return void 0 != Blockly.Touch.touchIdentifier_ && null != Blockly.Touch.touchIdentifier_ ? Blockly.Touch.touchIdentifier_ == b : "mousedown" == a.type || "touchstart" == a.type ? (Blockly.Touch.touchIdentifier_ = b,
- !0) : !1
- }
- ;
- Blockly.Touch.setClientFromTouch = function (a) {
- if (goog.string.startsWith(a.type, "touch")) {
- var b = a.changedTouches[0];
- a.clientX = b.clientX;
- a.clientY = b.clientY
- }
- }
- ;
- Blockly.Touch.isMouseOrTouchEvent = function (a) {
- return goog.string.startsWith(a.type, "touch") || goog.string.startsWith(a.type, "mouse")
- }
- ;
- Blockly.Touch.splitEventByTouches = function (a) {
- var b = [];
- if (a.changedTouches)
- for (var c = 0; c < a.changedTouches.length; c++)
- b[c] = {
- type: a.type,
- changedTouches: [a.changedTouches[c]],
- target: a.target,
- stopPropagation: function () {
- a.stopPropagation()
- },
- preventDefault: function () {
- a.preventDefault()
- }
- };
- else
- b.push(a);
- return b
- }
- ;
- Blockly.Workspace = function (a) {
- this.id = Blockly.genUid();
- Blockly.Workspace.WorkspaceDB_[this.id] = this;
- this.options = a || {};
- this.RTL = !!this.options.RTL;
- this.horizontalLayout = !!this.options.horizontalLayout;
- this.toolboxPosition = this.options.toolboxPosition;
- this.topBlocks_ = [];
- this.listeners_ = [];
- this.undoStack_ = [];
- this.redoStack_ = [];
- this.blockDB_ = Object.create(null);
- this.variableList = []
- }
- ;
- Blockly.Workspace.prototype.rendered = !1;
- Blockly.Workspace.prototype.MAX_UNDO = 1024;
- Blockly.Workspace.prototype.dispose = function () {
- this.listeners_.length = 0;
- this.clear();
- delete Blockly.Workspace.WorkspaceDB_[this.id]
- }
- ;
- Blockly.Workspace.SCAN_ANGLE = 3;
- Blockly.Workspace.prototype.addTopBlock = function (a) {
- this.topBlocks_.push(a);
- if (this.isFlyout) {
- a = Blockly.Variables.allUsedVariables(a);
- for (var b = 0; b < a.length; b++)
- -1 == this.variableList.indexOf(a[b]) && this.variableList.push(a[b])
- }
- }
- ;
- Blockly.Workspace.prototype.removeTopBlock = function (a) {
- if (!goog.array.remove(this.topBlocks_, a))
- throw "Block not present in workspace's list of top-most blocks.";
- }
- ;
- Blockly.Workspace.prototype.getTopBlocks = function (a) {
- var b = [].concat(this.topBlocks_);
- if (a && 1 < b.length) {
- var c = Math.sin(goog.math.toRadians(Blockly.Workspace.SCAN_ANGLE));
- this.RTL && (c *= -1);
- b.sort(function (a, b) {
- var d = a.getRelativeToSurfaceXY()
- , e = b.getRelativeToSurfaceXY();
- return d.y + c * d.x - (e.y + c * e.x)
- })
- }
- return b
- }
- ;
- Blockly.Workspace.prototype.getAllBlocks = function () {
- for (var a = this.getTopBlocks(!1), b = 0; b < a.length; b++)
- a.push.apply(a, a[b].getChildren());
- return a
- }
- ;
- Blockly.Workspace.prototype.clear = function () {
- var a = Blockly.Events.getGroup();
- for (a || Blockly.Events.setGroup(!0); this.topBlocks_.length;)
- this.topBlocks_[0].dispose();
- a || Blockly.Events.setGroup(!1);
- this.variableList.length = 0
- }
- ;
- Blockly.Workspace.prototype.updateVariableList = function (a) {
- if (!this.isFlyout) {
- a && (this.variableList.length = 0);
- a = Blockly.Variables.allUsedVariables(this);
- for (var b = 0; b < a.length; b++)
- this.createVariable(a[b])
- }
- }
- ;
- Blockly.Workspace.prototype.renameVariable = function (a, b) {
- var c = this.variableIndexOf(a)
- , d = this.variableIndexOf(b);
- if (-1 != d && this.variableList[d] != b)
- var e = this.variableList[d];
- Blockly.Events.setGroup(!0);
- for (var f = this.getAllBlocks(), g = 0; g < f.length; g++)
- f[g].renameVar(a, b),
- e && f[g].renameVar(e, b);
- Blockly.Events.setGroup(!1);
- c == d || -1 != c && -1 == d ? this.variableList[c] = b : -1 != c && -1 != d ? (this.variableList[d] = b,
- this.variableList.splice(c, 1)) : (this.variableList.push(b),
- console.log("Tried to rename an non-existent variable."))
- }
- ;
- Blockly.Workspace.prototype.createVariable = function (a) {
- -1 == this.variableIndexOf(a) && this.variableList.push(a)
- }
- ;
- Blockly.Workspace.prototype.getVariableUses = function (a) {
- for (var b = [], c = this.getAllBlocks(), d = 0; d < c.length; d++) {
- var e = c[d].getVars();
- if (e)
- for (var f = 0; f < e.length; f++) {
- var g = e[f];
- g && Blockly.Names.equals(g, a) && b.push(c[d])
- }
- }
- return b
- }
- ;
- Blockly.Workspace.prototype.deleteVariable = function (a) {
- var b = this
- , c = this.variableIndexOf(a);
- if (-1 != c) {
- for (var d = function () {
- Blockly.Events.setGroup(!0);
- for (var a = 0; a < e.length; a++)
- e[a].dispose(!0, !1);
- Blockly.Events.setGroup(!1);
- b.variableList.splice(c, 1)
- }, e = this.getVariableUses(a), f = 0, g; g = e[f]; f++)
- if ("procedures_defnoreturn" == g.type || "procedures_defreturn" == g.type || "procedures_defthirdreturn" == g.type) {
- f = g.getFieldValue("NAME");
- Blockly.alert(Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE.replace("%1", a).replace("%2", f));
- return
- }
- 1 < e.length ? Blockly.confirm(Blockly.Msg.DELETE_VARIABLE_CONFIRMATION.replace("%1", e.length).replace("%2", a), function (a) {
- a && d()
- }) : d()
- }
- }
- ;
- Blockly.Workspace.prototype.variableIndexOf = function (a) {
- for (var b = 0, c; c = this.variableList[b]; b++)
- if (Blockly.Names.equals(c, a))
- return b;
- return -1
- }
- ;
- Blockly.Workspace.prototype.getWidth = function () {
- return 0
- }
- ;
- Blockly.Workspace.prototype.newBlock = function (a, b) {
- return new Blockly.Block(this, a, b)
- }
- ;
- Blockly.Workspace.prototype.remainingCapacity = function () {
- return isNaN(this.options.maxBlocks) ? Infinity : this.options.maxBlocks - this.getAllBlocks().length
- }
- ;
- Blockly.Workspace.prototype.undo = function (a) {
- var b = a ? this.redoStack_ : this.undoStack_
- , c = a ? this.undoStack_ : this.redoStack_
- , d = b.pop();
- if (d) {
- for (var e = [d]; b.length && d.group && d.group == b[b.length - 1].group;)
- e.push(b.pop());
- for (b = 0; d = e[b]; b++)
- c.push(d);
- e = Blockly.Events.filter(e, a);
- Blockly.Events.recordUndo = !1;
- for (b = 0; d = e[b]; b++)
- d.run(a);
- Blockly.Events.recordUndo = !0
- }
- }
- ;
- Blockly.Workspace.prototype.clearUndo = function () {
- this.undoStack_.length = 0;
- this.redoStack_.length = 0;
- Blockly.Events.clearPendingUndo()
- }
- ;
- Blockly.Workspace.prototype.addChangeListener = function (a) {
- this.listeners_.push(a);
- return a
- }
- ;
- Blockly.Workspace.prototype.removeChangeListener = function (a) {
- goog.array.remove(this.listeners_, a)
- }
- ;
- Blockly.Workspace.prototype.fireChangeListener = function (a) {
- a.recordUndo && (this.undoStack_.push(a),
- this.redoStack_.length = 0,
- this.undoStack_.length > this.MAX_UNDO && this.undoStack_.unshift());
- for (var b = 0, c; c = this.listeners_[b]; b++)
- c(a)
- }
- ;
- Blockly.Workspace.prototype.getBlockById = function (a) {
- return this.blockDB_[a] || null
- }
- ;
- Blockly.Workspace.WorkspaceDB_ = Object.create(null);
- Blockly.Workspace.getById = function (a) {
- return Blockly.Workspace.WorkspaceDB_[a] || null
- }
- ;
- Blockly.Workspace.prototype.clear = Blockly.Workspace.prototype.clear;
- Blockly.Workspace.prototype.clearUndo = Blockly.Workspace.prototype.clearUndo;
- Blockly.Workspace.prototype.addChangeListener = Blockly.Workspace.prototype.addChangeListener;
- Blockly.Workspace.prototype.removeChangeListener = Blockly.Workspace.prototype.removeChangeListener;
- Blockly.Bubble = function (a, b, c, d, e, f) {
- this.workspace_ = a;
- this.content_ = b;
- this.shape_ = c;
- c = Blockly.Bubble.ARROW_ANGLE;
- this.workspace_.RTL && (c = -c);
- this.arrow_radians_ = goog.math.toRadians(c);
- a.getBubbleCanvas().appendChild(this.createDom_(b, !(!e || !f)));
- this.setAnchorLocation(d);
- e && f || (b = this.content_.getBBox(),
- e = b.width + 2 * Blockly.Bubble.BORDER_WIDTH,
- f = b.height + 2 * Blockly.Bubble.BORDER_WIDTH);
- this.setBubbleSize(e, f);
- this.positionBubble_();
- this.renderArrow_();
- this.rendered_ = !0;
- a.options.readOnly || (Blockly.bindEventWithChecks_(this.bubbleBack_, "mousedown", this, this.bubbleMouseDown_),
- this.resizeGroup_ && Blockly.bindEventWithChecks_(this.resizeGroup_, "mousedown", this, this.resizeMouseDown_))
- }
- ;
- Blockly.Bubble.BORDER_WIDTH = 6;
- Blockly.Bubble.ARROW_THICKNESS = 5;
- Blockly.Bubble.ARROW_ANGLE = 20;
- Blockly.Bubble.ARROW_BEND = 4;
- Blockly.Bubble.ANCHOR_RADIUS = 8;
- Blockly.Bubble.onMouseUpWrapper_ = null;
- Blockly.Bubble.onMouseMoveWrapper_ = null;
- Blockly.Bubble.prototype.resizeCallback_ = null;
- Blockly.Bubble.unbindDragEvents_ = function () {
- Blockly.Bubble.onMouseUpWrapper_ && (Blockly.unbindEvent_(Blockly.Bubble.onMouseUpWrapper_),
- Blockly.Bubble.onMouseUpWrapper_ = null);
- Blockly.Bubble.onMouseMoveWrapper_ && (Blockly.unbindEvent_(Blockly.Bubble.onMouseMoveWrapper_),
- Blockly.Bubble.onMouseMoveWrapper_ = null)
- }
- ;
- Blockly.Bubble.bubbleMouseUp_ = function () {
- Blockly.Touch.clearTouchIdentifier();
- Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN);
- Blockly.Bubble.unbindDragEvents_()
- }
- ;
- Blockly.Bubble.prototype.rendered_ = !1;
- Blockly.Bubble.prototype.anchorXY_ = null;
- Blockly.Bubble.prototype.relativeLeft_ = 0;
- Blockly.Bubble.prototype.relativeTop_ = 0;
- Blockly.Bubble.prototype.width_ = 0;
- Blockly.Bubble.prototype.height_ = 0;
- Blockly.Bubble.prototype.autoLayout_ = !0;
- Blockly.Bubble.prototype.createDom_ = function (a, b) {
- this.bubbleGroup_ = Blockly.createSvgElement("g", {}, null);
- var c = {
- filter: "url(#" + this.workspace_.options.embossFilterId + ")"
- };
- -1 != goog.userAgent.getUserAgentString().indexOf("JavaFX") && (c = {});
- c = Blockly.createSvgElement("g", c, this.bubbleGroup_);
- this.bubbleArrow_ = Blockly.createSvgElement("path", {}, c);
- this.bubbleBack_ = Blockly.createSvgElement("rect", {
- "class": "blocklyDraggable",
- x: 0,
- y: 0,
- rx: Blockly.Bubble.BORDER_WIDTH,
- ry: Blockly.Bubble.BORDER_WIDTH
- }, c);
- b ? (this.resizeGroup_ = Blockly.createSvgElement("g", {
- "class": this.workspace_.RTL ? "blocklyResizeSW" : "blocklyResizeSE"
- }, this.bubbleGroup_),
- c = 2 * Blockly.Bubble.BORDER_WIDTH,
- Blockly.createSvgElement("polygon", {
- points: "0,x x,x x,0".replace(/x/g, c.toString())
- }, this.resizeGroup_),
- Blockly.createSvgElement("line", {
- "class": "blocklyResizeLine",
- x1: c / 3,
- y1: c - 1,
- x2: c - 1,
- y2: c / 3
- }, this.resizeGroup_),
- Blockly.createSvgElement("line", {
- "class": "blocklyResizeLine",
- x1: 2 * c / 3,
- y1: c - 1,
- x2: c - 1,
- y2: 2 * c / 3
- }, this.resizeGroup_)) : this.resizeGroup_ = null;
- this.bubbleGroup_.appendChild(a);
- return this.bubbleGroup_
- }
- ;
- Blockly.Bubble.prototype.bubbleMouseDown_ = function (a) {
- this.promote_();
- Blockly.Bubble.unbindDragEvents_();
- Blockly.isRightButton(a) ? a.stopPropagation() : Blockly.isTargetInput_(a) || (Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),
- this.workspace_.startDrag(a, new goog.math.Coordinate(this.workspace_.RTL ? -this.relativeLeft_ : this.relativeLeft_, this.relativeTop_)),
- Blockly.Bubble.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, "mouseup", this, Blockly.Bubble.bubbleMouseUp_),
- Blockly.Bubble.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_(document, "mousemove", this, this.bubbleMouseMove_),
- Blockly.hideChaff(),
- a.stopPropagation())
- }
- ;
- Blockly.Bubble.prototype.bubbleMouseMove_ = function (a) {
- this.autoLayout_ = !1;
- a = this.workspace_.moveDrag(a);
- this.relativeLeft_ = this.workspace_.RTL ? -a.x : a.x;
- this.relativeTop_ = a.y;
- this.positionBubble_();
- this.renderArrow_()
- }
- ;
- Blockly.Bubble.prototype.resizeMouseDown_ = function (a) {
- this.promote_();
- Blockly.Bubble.unbindDragEvents_();
- Blockly.isRightButton(a) || (Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),
- this.workspace_.startDrag(a, new goog.math.Coordinate(this.workspace_.RTL ? -this.width_ : this.width_, this.height_)),
- Blockly.Bubble.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, "mouseup", this, Blockly.Bubble.bubbleMouseUp_),
- Blockly.Bubble.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_(document, "mousemove", this, this.resizeMouseMove_),
- Blockly.hideChaff());
- a.stopPropagation()
- }
- ;
- Blockly.Bubble.prototype.resizeMouseMove_ = function (a) {
- this.autoLayout_ = !1;
- a = this.workspace_.moveDrag(a);
- this.setBubbleSize(this.workspace_.RTL ? -a.x : a.x, a.y);
- this.workspace_.RTL && this.positionBubble_()
- }
- ;
- Blockly.Bubble.prototype.registerResizeEvent = function (a) {
- this.resizeCallback_ = a
- }
- ;
- Blockly.Bubble.prototype.promote_ = function () {
- this.bubbleGroup_.parentNode.appendChild(this.bubbleGroup_)
- }
- ;
- Blockly.Bubble.prototype.setAnchorLocation = function (a) {
- this.anchorXY_ = a;
- this.rendered_ && this.positionBubble_()
- }
- ;
- Blockly.Bubble.prototype.layoutBubble_ = function () {
- var a = -this.width_ / 4
- , b = -this.height_ - Blockly.BlockSvg.MIN_BLOCK_Y
- , c = this.workspace_.getMetrics();
- c.viewWidth /= this.workspace_.scale;
- c.viewLeft /= this.workspace_.scale;
- var d = this.anchorXY_.x;
- this.workspace_.RTL ? d - c.viewLeft - a - this.width_ < Blockly.Scrollbar.scrollbarThickness ? a = d - c.viewLeft - this.width_ - Blockly.Scrollbar.scrollbarThickness : d - c.viewLeft - a > c.viewWidth && (a = d - c.viewLeft - c.viewWidth) : d + a < c.viewLeft ? a = c.viewLeft - d : c.viewLeft + c.viewWidth < d + a + this.width_ + Blockly.BlockSvg.SEP_SPACE_X + Blockly.Scrollbar.scrollbarThickness && (a = c.viewLeft + c.viewWidth - d - this.width_ - Blockly.Scrollbar.scrollbarThickness);
- this.anchorXY_.y + b < c.viewTop && (b = this.shape_.getBBox().height);
- this.relativeLeft_ = a;
- this.relativeTop_ = b
- }
- ;
- Blockly.Bubble.prototype.positionBubble_ = function () {
- var a = this.anchorXY_.x;
- a = this.workspace_.RTL ? a - (this.relativeLeft_ + this.width_) : a + this.relativeLeft_;
- this.bubbleGroup_.setAttribute("transform", "translate(" + a + "," + (this.relativeTop_ + this.anchorXY_.y) + ")")
- }
- ;
- Blockly.Bubble.prototype.getBubbleSize = function () {
- return {
- width: this.width_,
- height: this.height_
- }
- }
- ;
- Blockly.Bubble.prototype.setBubbleSize = function (a, b) {
- var c = 2 * Blockly.Bubble.BORDER_WIDTH;
- a = Math.max(a, c + 45);
- b = Math.max(b, c + 20);
- this.width_ = a;
- this.height_ = b;
- this.bubbleBack_.setAttribute("width", a);
- this.bubbleBack_.setAttribute("height", b);
- this.resizeGroup_ && (this.workspace_.RTL ? this.resizeGroup_.setAttribute("transform", "translate(" + 2 * Blockly.Bubble.BORDER_WIDTH + "," + (b - c) + ") scale(-1 1)") : this.resizeGroup_.setAttribute("transform", "translate(" + (a - c) + "," + (b - c) + ")"));
- this.rendered_ && (this.autoLayout_ && this.layoutBubble_(),
- this.positionBubble_(),
- this.renderArrow_());
- this.resizeCallback_ && this.resizeCallback_()
- }
- ;
- Blockly.Bubble.prototype.renderArrow_ = function () {
- var a = []
- , b = this.width_ / 2
- , c = this.height_ / 2
- , d = -this.relativeLeft_
- , e = -this.relativeTop_;
- if (b == d && c == e)
- a.push("M " + b + "," + c);
- else {
- e -= c;
- d -= b;
- this.workspace_.RTL && (d *= -1);
- var f = Math.sqrt(e * e + d * d)
- , g = Math.acos(d / f);
- 0 > e && (g = 2 * Math.PI - g);
- var h = g + Math.PI / 2;
- h > 2 * Math.PI && (h -= 2 * Math.PI);
- var k = Math.sin(h)
- , m = Math.cos(h)
- , p = this.getBubbleSize();
- h = (p.width + p.height) / Blockly.Bubble.ARROW_THICKNESS;
- h = Math.min(h, p.width, p.height) / 4;
- p = 1 - Blockly.Bubble.ANCHOR_RADIUS / f;
- d = b + p * d;
- e = c + p * e;
- p = b + h * m;
- var l = c + h * k;
- b -= h * m;
- c -= h * k;
- k = g + this.arrow_radians_;
- k > 2 * Math.PI && (k -= 2 * Math.PI);
- g = Math.sin(k) * f / Blockly.Bubble.ARROW_BEND;
- f = Math.cos(k) * f / Blockly.Bubble.ARROW_BEND;
- a.push("M" + p + "," + l);
- a.push("C" + (p + f) + "," + (l + g) + " " + d + "," + e + " " + d + "," + e);
- a.push("C" + d + "," + e + " " + (b + f) + "," + (c + g) + " " + b + "," + c)
- }
- a.push("z");
- this.bubbleArrow_.setAttribute("d", a.join(" "))
- }
- ;
- Blockly.Bubble.prototype.setColour = function (a) {
- this.bubbleBack_.setAttribute("fill", a);
- this.bubbleArrow_.setAttribute("fill", a)
- }
- ;
- Blockly.Bubble.prototype.dispose = function () {
- Blockly.Bubble.unbindDragEvents_();
- goog.dom.removeNode(this.bubbleGroup_);
- this.shape_ = this.content_ = this.workspace_ = this.resizeGroup_ = this.bubbleBack_ = this.bubbleArrow_ = this.bubbleGroup_ = null
- }
- ;
- Blockly.Icon = function (a) {
- this.block_ = a
- }
- ;
- Blockly.Icon.prototype.collapseHidden = !0;
- Blockly.Icon.prototype.SIZE = 17;
- Blockly.Icon.prototype.bubble_ = null;
- Blockly.Icon.prototype.iconXY_ = null;
- Blockly.Icon.prototype.createIcon = function () {
- this.iconGroup_ || (this.iconGroup_ = Blockly.createSvgElement("g", {
- "class": "blocklyIconGroup"
- }, null),
- this.block_.isInFlyout && Blockly.addClass_(this.iconGroup_, "blocklyIconGroupReadonly"),
- this.drawIcon_(this.iconGroup_),
- this.block_.getSvgRoot().appendChild(this.iconGroup_),
- Blockly.bindEventWithChecks_(this.iconGroup_, "mouseup", this, this.iconClick_),
- this.updateEditable())
- }
- ;
- Blockly.Icon.prototype.dispose = function () {
- goog.dom.removeNode(this.iconGroup_);
- this.iconGroup_ = null;
- this.setVisible(!1);
- this.block_ = null
- }
- ;
- Blockly.Icon.prototype.updateEditable = function () { }
- ;
- Blockly.Icon.prototype.isVisible = function () {
- return !!this.bubble_
- }
- ;
- Blockly.Icon.prototype.iconClick_ = function (a) {
- this.block_.workspace.isDragging() || this.block_.isInFlyout || Blockly.isRightButton(a) || this.setVisible(!this.isVisible())
- }
- ;
- Blockly.Icon.prototype.updateColour = function () {
- this.isVisible() && this.bubble_.setColour(this.block_.getColour())
- }
- ;
- Blockly.Icon.prototype.renderIcon = function (a) {
- if (this.collapseHidden && this.block_.isCollapsed())
- return this.iconGroup_.setAttribute("display", "none"),
- a;
- this.iconGroup_.setAttribute("display", "block");
- var b = this.SIZE;
- this.block_.RTL && (a -= b);
- this.iconGroup_.setAttribute("transform", "translate(" + a + ",5)");
- this.computeIconLocation();
- return a = this.block_.RTL ? a - Blockly.BlockSvg.SEP_SPACE_X : a + (b + Blockly.BlockSvg.SEP_SPACE_X)
- }
- ;
- Blockly.Icon.prototype.setIconLocation = function (a) {
- this.iconXY_ = a;
- this.isVisible() && this.bubble_.setAnchorLocation(a)
- }
- ;
- Blockly.Icon.prototype.computeIconLocation = function () {
- var a = this.block_.getRelativeToSurfaceXY()
- , b = Blockly.getRelativeXY_(this.iconGroup_);
- a = new goog.math.Coordinate(a.x + b.x + this.SIZE / 2, a.y + b.y + this.SIZE / 2);
- goog.math.Coordinate.equals(this.getIconLocation(), a) || this.setIconLocation(a)
- }
- ;
- Blockly.Icon.prototype.getIconLocation = function () {
- return this.iconXY_
- }
- ;
- Blockly.Comment = function (a) {
- Blockly.Comment.superClass_.constructor.call(this, a);
- this.createIcon()
- }
- ;
- goog.inherits(Blockly.Comment, Blockly.Icon);
- Blockly.Comment.prototype.text_ = "";
- Blockly.Comment.prototype.width_ = 160;
- Blockly.Comment.prototype.height_ = 80;
- Blockly.Comment.prototype.drawIcon_ = function (a) {
- Blockly.createSvgElement("circle", {
- "class": "blocklyIconShape",
- r: "8",
- cx: "8",
- cy: "8"
- }, a);
- Blockly.createSvgElement("path", {
- "class": "blocklyIconSymbol",
- d: "m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.405 0.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25 -1.201,0.998 -1.201,1.528 -1.204,2.19z"
- }, a);
- Blockly.createSvgElement("rect", {
- "class": "blocklyIconSymbol",
- x: "6.8",
- y: "10.78",
- height: "2",
- width: "2"
- }, a)
- }
- ;
- Blockly.Comment.prototype.createEditor_ = function () {
- this.foreignObject_ = Blockly.createSvgElement("foreignObject", {
- x: Blockly.Bubble.BORDER_WIDTH,
- y: Blockly.Bubble.BORDER_WIDTH
- }, null);
- var a = document.createElementNS(Blockly.HTML_NS, "body");
- a.setAttribute("xmlns", Blockly.HTML_NS);
- a.className = "blocklyMinimalBody";
- var b = document.createElementNS(Blockly.HTML_NS, "textarea");
- b.className = "blocklyCommentTextarea";
- b.setAttribute("dir", this.block_.RTL ? "RTL" : "LTR");
- a.appendChild(b);
- this.textarea_ = b;
- this.foreignObject_.appendChild(a);
- Blockly.bindEventWithChecks_(b, "mouseup", this, this.textareaFocus_);
- Blockly.bindEventWithChecks_(b, "wheel", this, function (a) {
- a.stopPropagation()
- });
- Blockly.bindEventWithChecks_(b, "change", this, function (a) {
- this.text_ != b.value && (Blockly.Events.fire(new Blockly.Events.Change(this.block_, "comment", null, this.text_, b.value)),
- this.text_ = b.value)
- });
- setTimeout(function () {
- b.focus()
- }, 0);
- return this.foreignObject_
- }
- ;
- Blockly.Comment.prototype.updateEditable = function () {
- this.isVisible() && (this.setVisible(!1),
- this.setVisible(!0));
- Blockly.Icon.prototype.updateEditable.call(this)
- }
- ;
- Blockly.Comment.prototype.resizeBubble_ = function () {
- if (this.isVisible()) {
- var a = this.bubble_.getBubbleSize()
- , b = 2 * Blockly.Bubble.BORDER_WIDTH;
- this.foreignObject_.setAttribute("width", a.width - b);
- this.foreignObject_.setAttribute("height", a.height - b);
- this.textarea_.style.width = a.width - b - 4 + "px";
- this.textarea_.style.height = a.height - b - 4 + "px"
- }
- }
- ;
- Blockly.Comment.prototype.setVisible = function (a) {
- if (a != this.isVisible())
- if (Blockly.Events.fire(new Blockly.Events.Ui(this.block_, "commentOpen", !a, a)),
- !this.block_.isEditable() && !this.textarea_ || goog.userAgent.IE)
- Blockly.Warning.prototype.setVisible.call(this, a);
- else {
- var b = this.getText()
- , c = this.getBubbleSize();
- a ? (this.bubble_ = new Blockly.Bubble(this.block_.workspace, this.createEditor_(), this.block_.svgPath_, this.iconXY_, this.width_, this.height_),
- this.bubble_.registerResizeEvent(this.resizeBubble_.bind(this)),
- this.updateColour()) : (this.bubble_.dispose(),
- this.foreignObject_ = this.textarea_ = this.bubble_ = null);
- this.setText(b);
- this.setBubbleSize(c.width, c.height)
- }
- }
- ;
- Blockly.Comment.prototype.textareaFocus_ = function (a) {
- this.bubble_.promote_();
- this.textarea_.focus()
- }
- ;
- Blockly.Comment.prototype.getBubbleSize = function () {
- return this.isVisible() ? this.bubble_.getBubbleSize() : {
- width: this.width_,
- height: this.height_
- }
- }
- ;
- Blockly.Comment.prototype.setBubbleSize = function (a, b) {
- this.textarea_ ? this.bubble_.setBubbleSize(a, b) : (this.width_ = a,
- this.height_ = b)
- }
- ;
- Blockly.Comment.prototype.getText = function () {
- return this.textarea_ ? this.textarea_.value : this.text_
- }
- ;
- Blockly.Comment.prototype.setText = function (a) {
- this.text_ != a && (Blockly.Events.fire(new Blockly.Events.Change(this.block_, "comment", null, this.text_, a)),
- this.text_ = a);
- this.textarea_ && (this.textarea_.value = a)
- }
- ;
- Blockly.Comment.prototype.dispose = function () {
- Blockly.Events.isEnabled() && this.setText("");
- this.block_.comment = null;
- Blockly.Icon.prototype.dispose.call(this)
- }
- ;
- Blockly.Connection = function (a, b) {
- this.sourceBlock_ = a;
- this.type = b;
- a.workspace.connectionDBList && (this.db_ = a.workspace.connectionDBList[b],
- this.dbOpposite_ = a.workspace.connectionDBList[Blockly.OPPOSITE_TYPE[b]],
- this.hidden_ = !this.db_)
- }
- ;
- Blockly.Connection.CAN_CONNECT = 0;
- Blockly.Connection.REASON_SELF_CONNECTION = 1;
- Blockly.Connection.REASON_WRONG_TYPE = 2;
- Blockly.Connection.REASON_TARGET_NULL = 3;
- Blockly.Connection.REASON_CHECKS_FAILED = 4;
- Blockly.Connection.REASON_DIFFERENT_WORKSPACES = 5;
- Blockly.Connection.REASON_SHADOW_PARENT = 6;
- Blockly.Connection.prototype.targetConnection = null;
- Blockly.Connection.prototype.check_ = null;
- Blockly.Connection.prototype.shadowDom_ = null;
- Blockly.Connection.prototype.x_ = 0;
- Blockly.Connection.prototype.y_ = 0;
- Blockly.Connection.prototype.inDB_ = !1;
- Blockly.Connection.prototype.db_ = null;
- Blockly.Connection.prototype.dbOpposite_ = null;
- Blockly.Connection.prototype.hidden_ = null;
- Blockly.Connection.prototype.connect_ = function (a) {
- var b = this
- , c = b.getSourceBlock()
- , d = a.getSourceBlock();
- a.isConnected() && a.disconnect();
- if (b.isConnected()) {
- var e = b.targetBlock()
- , f = b.getShadowDom();
- b.setShadowDom(null);
- if (e.isShadow())
- f = Blockly.Xml.blockToDom(e),
- e.dispose(),
- e = null;
- else if (b.type == Blockly.INPUT_VALUE) {
- if (!e.outputConnection)
- throw "Orphan block does not have an output connection.";
- var g = Blockly.Connection.lastConnectionInRow_(d, e);
- g && (e.outputConnection.connect(g),
- e = null)
- } else if (b.type == Blockly.NEXT_STATEMENT) {
- if (!e.previousConnection)
- throw "Orphan block does not have a previous connection.";
- for (g = d; g.nextConnection;) {
- var h = g.getNextBlock();
- if (h && !h.isShadow())
- g = h;
- else {
- e.previousConnection.checkType_(g.nextConnection) && (g.nextConnection.connect(e.previousConnection),
- e = null);
- break
- }
- }
- }
- if (e && (b.disconnect(),
- Blockly.Events.recordUndo)) {
- var k = Blockly.Events.getGroup();
- setTimeout(function () {
- e.workspace && !e.getParent() && (Blockly.Events.setGroup(k),
- e.outputConnection ? e.outputConnection.bumpAwayFrom_(b) : e.previousConnection && e.previousConnection.bumpAwayFrom_(b),
- Blockly.Events.setGroup(!1))
- }, Blockly.BUMP_DELAY)
- }
- b.setShadowDom(f)
- }
- var m;
- Blockly.Events.isEnabled() && (m = new Blockly.Events.Move(d));
- Blockly.Connection.connectReciprocally_(b, a);
- d.setParent(c);
- m && (m.recordNew(),
- Blockly.Events.fire(m))
- }
- ;
- Blockly.Connection.prototype.dispose = function () {
- if (this.isConnected())
- throw "Disconnect connection before disposing of it.";
- this.inDB_ && this.db_.removeConnection_(this);
- Blockly.highlightedConnection_ == this && (Blockly.highlightedConnection_ = null);
- Blockly.localConnection_ == this && (Blockly.localConnection_ = null);
- this.dbOpposite_ = this.db_ = null
- }
- ;
- Blockly.Connection.prototype.getSourceBlock = function () {
- return this.sourceBlock_
- }
- ;
- Blockly.Connection.prototype.isSuperior = function () {
- return this.type == Blockly.INPUT_VALUE || this.type == Blockly.NEXT_STATEMENT
- }
- ;
- Blockly.Connection.prototype.isConnected = function () {
- return !!this.targetConnection
- }
- ;
- Blockly.Connection.prototype.canConnectWithReason_ = function (a) {
- if (!a)
- return Blockly.Connection.REASON_TARGET_NULL;
- if (this.isSuperior())
- var b = this.sourceBlock_
- , c = a.getSourceBlock();
- else
- c = this.sourceBlock_,
- b = a.getSourceBlock();
- return b && b == c ? Blockly.Connection.REASON_SELF_CONNECTION : a.type != Blockly.OPPOSITE_TYPE[this.type] ? Blockly.Connection.REASON_WRONG_TYPE : b && c && b.workspace !== c.workspace ? Blockly.Connection.REASON_DIFFERENT_WORKSPACES : this.checkType_(a) ? b.isShadow() && !c.isShadow() ? Blockly.Connection.REASON_SHADOW_PARENT : Blockly.Connection.CAN_CONNECT : Blockly.Connection.REASON_CHECKS_FAILED
- }
- ;
- Blockly.Connection.prototype.checkConnection_ = function (a) {
- switch (this.canConnectWithReason_(a)) {
- case Blockly.Connection.CAN_CONNECT:
- break;
- case Blockly.Connection.REASON_SELF_CONNECTION:
- throw "Attempted to connect a block to itself.";
- case Blockly.Connection.REASON_DIFFERENT_WORKSPACES:
- throw "Blocks not on same workspace.";
- case Blockly.Connection.REASON_WRONG_TYPE:
- throw "Attempt to connect incompatible types.";
- case Blockly.Connection.REASON_TARGET_NULL:
- throw "Target connection is null.";
- case Blockly.Connection.REASON_CHECKS_FAILED:
- throw "Connection checks failed.";
- case Blockly.Connection.REASON_SHADOW_PARENT:
- throw "Connecting non-shadow to shadow block.";
- default:
- throw "Unknown connection failure: this should never happen!";
- }
- }
- ;
- Blockly.Connection.prototype.isConnectionAllowed = function (a) {
- if (this.canConnectWithReason_(a) != Blockly.Connection.CAN_CONNECT)
- return !1;
- if (a.type == Blockly.OUTPUT_VALUE || a.type == Blockly.PREVIOUS_STATEMENT)
- if (a.isConnected() || this.isConnected())
- return !1;
- return a.type == Blockly.INPUT_VALUE && a.isConnected() && !a.targetBlock().isMovable() && !a.targetBlock().isShadow() || this.type == Blockly.PREVIOUS_STATEMENT && a.isConnected() && !this.sourceBlock_.nextConnection && !a.targetBlock().isShadow() && a.targetBlock().nextConnection || -1 != Blockly.draggingConnections_.indexOf(a) ? !1 : !0
- }
- ;
- Blockly.Connection.prototype.connect = function (a) {
- this.targetConnection != a && (this.checkConnection_(a),
- this.isSuperior() ? this.connect_(a) : a.connect_(this))
- }
- ;
- Blockly.Connection.connectReciprocally_ = function (a, b) {
- goog.asserts.assert(a && b, "Cannot connect null connections.");
- a.targetConnection = b;
- b.targetConnection = a
- }
- ;
- Blockly.Connection.singleConnection_ = function (a, b) {
- for (var c = !1, d = 0; d < a.inputList.length; d++) {
- var e = a.inputList[d].connection;
- if (e && e.type == Blockly.INPUT_VALUE && b.outputConnection.checkType_(e)) {
- if (c)
- return null;
- c = e
- }
- }
- return c
- }
- ;
- Blockly.Connection.lastConnectionInRow_ = function (a, b) {
- for (var c = a, d; d = Blockly.Connection.singleConnection_(c, b);)
- if (c = d.targetBlock(),
- !c || c.isShadow())
- return d;
- return null
- }
- ;
- Blockly.Connection.prototype.disconnect = function () {
- var a = this.targetConnection;
- goog.asserts.assert(a, "Source connection not connected.");
- goog.asserts.assert(a.targetConnection == this, "Target connection not connected to source connection.");
- if (this.isSuperior()) {
- var b = this.sourceBlock_;
- var c = a.getSourceBlock();
- a = this
- } else
- b = a.getSourceBlock(),
- c = this.sourceBlock_;
- this.disconnectInternal_(b, c);
- a.respawnShadow_()
- }
- ;
- Blockly.Connection.prototype.disconnectInternal_ = function (a, b) {
- var c;
- Blockly.Events.isEnabled() && (c = new Blockly.Events.Move(b));
- this.targetConnection = this.targetConnection.targetConnection = null;
- b.setParent(null);
- c && (c.recordNew(),
- Blockly.Events.fire(c))
- }
- ;
- Blockly.Connection.prototype.respawnShadow_ = function () {
- var a = this.getSourceBlock()
- , b = this.getShadowDom();
- if (a.workspace && b && Blockly.Events.recordUndo)
- if (a = Blockly.Xml.domToBlock(b, a.workspace),
- a.outputConnection)
- this.connect(a.outputConnection);
- else if (a.previousConnection)
- this.connect(a.previousConnection);
- else
- throw "Child block does not have output or previous statement.";
- }
- ;
- Blockly.Connection.prototype.targetBlock = function () {
- return this.isConnected() ? this.targetConnection.getSourceBlock() : null
- }
- ;
- Blockly.Connection.prototype.checkType_ = function (a) {
- if (!this.check_ || !a.check_)
- return !0;
- for (var b = 0; b < this.check_.length; b++)
- if (-1 != a.check_.indexOf(this.check_[b]))
- return !0;
- return !1
- }
- ;
- Blockly.Connection.prototype.setCheck = function (a) {
- a ? (goog.isArray(a) || (a = [a]),
- this.check_ = a,
- this.isConnected() && !this.checkType_(this.targetConnection) && ((this.isSuperior() ? this.targetBlock() : this.sourceBlock_).unplug(),
- this.sourceBlock_.bumpNeighbours_())) : this.check_ = null;
- return this
- }
- ;
- Blockly.Connection.prototype.setShadowDom = function (a) {
- this.shadowDom_ = a
- }
- ;
- Blockly.Connection.prototype.getShadowDom = function () {
- return this.shadowDom_
- }
- ;
- Blockly.Field = function (a, b) {
- this.size_ = new goog.math.Size(0, 25);
- this.setValue(a);
- this.setValidator(b)
- }
- ;
- Blockly.Field.cacheWidths_ = null;
- Blockly.Field.cacheReference_ = 0;
- Blockly.Field.prototype.name = void 0;
- Blockly.Field.prototype.maxDisplayLength = 50;
- Blockly.Field.prototype.text_ = "";
- Blockly.Field.prototype.sourceBlock_ = null;
- Blockly.Field.prototype.visible_ = !0;
- Blockly.Field.prototype.validator_ = null;
- Blockly.Field.NBSP = "\u00a0";
- Blockly.Field.prototype.EDITABLE = !0;
- Blockly.Field.prototype.setSourceBlock = function (a) {
- goog.asserts.assert(!this.sourceBlock_, "Field already bound to a block.");
- this.sourceBlock_ = a
- }
- ;
- Blockly.Field.prototype.init = function () {
- this.fieldGroup_ || (this.fieldGroup_ = Blockly.createSvgElement("g", {}, null),
- this.visible_ || (this.fieldGroup_.style.display = "none"),
- this.borderRect_ = Blockly.createSvgElement("rect", {
- rx: 4,
- ry: 4,
- x: -Blockly.BlockSvg.SEP_SPACE_X / 2,
- y: 0,
- height: 16
- }, this.fieldGroup_, this.sourceBlock_.workspace),
- this.textElement_ = Blockly.createSvgElement("text", {
- "class": "blocklyText",
- y: this.size_.height - 12.5
- }, this.fieldGroup_),
- this.updateEditable(),
- this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_),
- this.mouseUpWrapper_ = Blockly.bindEventWithChecks_(this.fieldGroup_, "mouseup", this, this.onMouseUp_),
- this.updateTextNode_())
- }
- ;
- Blockly.Field.prototype.dispose = function () {
- this.mouseUpWrapper_ && (Blockly.unbindEvent_(this.mouseUpWrapper_),
- this.mouseUpWrapper_ = null);
- this.sourceBlock_ = null;
- goog.dom.removeNode(this.fieldGroup_);
- this.validator_ = this.borderRect_ = this.textElement_ = this.fieldGroup_ = null
- }
- ;
- Blockly.Field.prototype.updateEditable = function () {
- var a = this.fieldGroup_;
- this.EDITABLE && a && (this.sourceBlock_.isEditable() ? (Blockly.addClass_(a, "blocklyEditableText"),
- Blockly.removeClass_(a, "blocklyNonEditableText"),
- this.fieldGroup_.style.cursor = this.CURSOR) : (Blockly.addClass_(a, "blocklyNonEditableText"),
- Blockly.removeClass_(a, "blocklyEditableText"),
- this.fieldGroup_.style.cursor = ""))
- }
- ;
- Blockly.Field.prototype.isVisible = function () {
- return this.visible_
- }
- ;
- Blockly.Field.prototype.setVisible = function (a) {
- if (this.visible_ != a) {
- this.visible_ = a;
- var b = this.getSvgRoot();
- b && (b.style.display = a ? "block" : "none",
- this.render_())
- }
- }
- ;
- Blockly.Field.prototype.setValidator = function (a) {
- this.validator_ = a
- }
- ;
- Blockly.Field.prototype.getValidator = function () {
- return this.validator_
- }
- ;
- Blockly.Field.prototype.classValidator = function (a) {
- return a
- }
- ;
- Blockly.Field.prototype.callValidator = function (a) {
- var b = this.classValidator(a);
- if (null === b)
- return null;
- void 0 !== b && (a = b);
- if (b = this.getValidator()) {
- b = b.call(this, a);
- if (null === b)
- return null;
- void 0 !== b && (a = b)
- }
- return a
- }
- ;
- Blockly.Field.prototype.getSvgRoot = function () {
- return this.fieldGroup_
- }
- ;
- Blockly.Field.prototype.render_ = function () {
- if (this.visible_ && this.textElement_) {
- var a = this.textElement_.textContent + "\n" + this.textElement_.className.baseVal;
- if (Blockly.Field.cacheWidths_ && Blockly.Field.cacheWidths_[a])
- var b = Blockly.Field.cacheWidths_[a];
- else {
- try {
- b = this.textElement_.getComputedTextLength()
- } catch (c) {
- b = 8 * this.textElement_.textContent.length
- }
- Blockly.Field.cacheWidths_ && (Blockly.Field.cacheWidths_[a] = b)
- }
- this.borderRect_ && this.borderRect_.setAttribute("width", b + Blockly.BlockSvg.SEP_SPACE_X)
- } else
- b = 0;
- this.size_.width = b
- }
- ;
- Blockly.Field.startCache = function () {
- Blockly.Field.cacheReference_++;
- Blockly.Field.cacheWidths_ || (Blockly.Field.cacheWidths_ = {})
- }
- ;
- Blockly.Field.stopCache = function () {
- Blockly.Field.cacheReference_--;
- Blockly.Field.cacheReference_ || (Blockly.Field.cacheWidths_ = null)
- }
- ;
- Blockly.Field.prototype.getSize = function () {
- this.size_.width || this.render_();
- return this.size_
- }
- ;
- Blockly.Field.prototype.getScaledBBox_ = function () {
- var a = this.borderRect_.getBBox();
- return new goog.math.Size(a.width * this.sourceBlock_.workspace.scale, a.height * this.sourceBlock_.workspace.scale)
- }
- ;
- Blockly.Field.prototype.getText = function () {
- return this.text_
- }
- ;
- Blockly.Field.prototype.setText = function (a) {
- null !== a && (a = String(a),
- a !== this.text_ && (this.text_ = a,
- this.updateTextNode_(),
- this.sourceBlock_ && this.sourceBlock_.rendered && (this.sourceBlock_.render(),
- this.sourceBlock_.bumpNeighbours_())))
- }
- ;
- Blockly.Field.prototype.updateTextNode_ = function () {
- if (this.textElement_) {
- var a = this.text_;
- a.length > this.maxDisplayLength && (a = a.substring(0, this.maxDisplayLength - 2) + "\u2026");
- a = a.replace(/\s/g, Blockly.Field.NBSP);
- this.sourceBlock_.RTL && a && (a += "\u200f");
- a || (a = Blockly.Field.NBSP);
- goog.dom.removeChildren(this.textElement_);
- a = document.createTextNode(a);
- this.textElement_.appendChild(a);
- this.size_.width = 0
- }
- }
- ;
- Blockly.Field.prototype.getValue = function () {
- return this.getText()
- }
- ;
- Blockly.Field.prototype.setValue = function (a) {
- if (null !== a) {
- var b = this.getValue();
- b != a && (this.sourceBlock_ && Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_, "field", this.name, b, a)),
- this.setText(a))
- }
- }
- ;
- Blockly.Field.prototype.onMouseUp_ = function (a) {
- if (!goog.userAgent.IPHONE && !goog.userAgent.IPAD || goog.userAgent.isVersionOrHigher("537.51.2") || 0 === a.layerX || 0 === a.layerY)
- Blockly.isRightButton(a) || this.sourceBlock_.workspace.isDragging() || this.sourceBlock_.isEditable() && this.showEditor_()
- }
- ;
- Blockly.Field.prototype.setTooltip = function (a) { }
- ;
- Blockly.Field.prototype.getAbsoluteXY_ = function () {
- return goog.style.getPageOffset(this.borderRect_)
- }
- ;
- Blockly.Tooltip = {};
- Blockly.Tooltip.visible = !1;
- Blockly.Tooltip.LIMIT = 50;
- Blockly.Tooltip.mouseOutPid_ = 0;
- Blockly.Tooltip.showPid_ = 0;
- Blockly.Tooltip.lastX_ = 0;
- Blockly.Tooltip.lastY_ = 0;
- Blockly.Tooltip.element_ = null;
- Blockly.Tooltip.poisonedElement_ = null;
- Blockly.Tooltip.OFFSET_X = 0;
- Blockly.Tooltip.OFFSET_Y = 10;
- Blockly.Tooltip.RADIUS_OK = 10;
- Blockly.Tooltip.HOVER_MS = 750;
- Blockly.Tooltip.MARGINS = 5;
- Blockly.Tooltip.DIV = null;
- Blockly.Tooltip.createDom = function () {
- Blockly.Tooltip.DIV || (Blockly.Tooltip.DIV = goog.dom.createDom("DIV", "blocklyTooltipDiv"),
- document.body.appendChild(Blockly.Tooltip.DIV))
- }
- ;
- Blockly.Tooltip.bindMouseEvents = function (a) {
- Blockly.bindEvent_(a, "mouseover", null, Blockly.Tooltip.onMouseOver_);
- Blockly.bindEvent_(a, "mouseout", null, Blockly.Tooltip.onMouseOut_);
- a.addEventListener("mousemove", Blockly.Tooltip.onMouseMove_, !1)
- }
- ;
- Blockly.Tooltip.onMouseOver_ = function (a) {
- for (a = a.target; !goog.isString(a.tooltip) && !goog.isFunction(a.tooltip);)
- a = a.tooltip;
- Blockly.Tooltip.element_ != a && (Blockly.Tooltip.hide(),
- Blockly.Tooltip.poisonedElement_ = null,
- Blockly.Tooltip.element_ = a);
- clearTimeout(Blockly.Tooltip.mouseOutPid_)
- }
- ;
- Blockly.Tooltip.onMouseOut_ = function (a) {
- Blockly.Tooltip.mouseOutPid_ = setTimeout(function () {
- Blockly.Tooltip.element_ = null;
- Blockly.Tooltip.poisonedElement_ = null;
- Blockly.Tooltip.hide()
- }, 1);
- clearTimeout(Blockly.Tooltip.showPid_)
- }
- ;
- Blockly.Tooltip.onMouseMove_ = function (a) {
- if (Blockly.Tooltip.element_ && Blockly.Tooltip.element_.tooltip && Blockly.dragMode_ == Blockly.DRAG_NONE && !Blockly.WidgetDiv.isVisible())
- if (Blockly.Tooltip.visible) {
- var b = Blockly.Tooltip.lastX_ - a.pageX;
- a = Blockly.Tooltip.lastY_ - a.pageY;
- Math.sqrt(b * b + a * a) > Blockly.Tooltip.RADIUS_OK && Blockly.Tooltip.hide()
- } else
- Blockly.Tooltip.poisonedElement_ != Blockly.Tooltip.element_ && (clearTimeout(Blockly.Tooltip.showPid_),
- Blockly.Tooltip.lastX_ = a.pageX,
- Blockly.Tooltip.lastY_ = a.pageY,
- Blockly.Tooltip.showPid_ = setTimeout(Blockly.Tooltip.show_, Blockly.Tooltip.HOVER_MS))
- }
- ;
- Blockly.Tooltip.hide = function () {
- Blockly.Tooltip.visible && (Blockly.Tooltip.visible = !1,
- Blockly.Tooltip.DIV && (Blockly.Tooltip.DIV.style.display = "none"));
- clearTimeout(Blockly.Tooltip.showPid_)
- }
- ;
- Blockly.Tooltip.show_ = function () {
- Blockly.Tooltip.poisonedElement_ = Blockly.Tooltip.element_;
- if (Blockly.Tooltip.DIV) {
- goog.dom.removeChildren(Blockly.Tooltip.DIV);
- for (var a = Blockly.Tooltip.element_.tooltip; goog.isFunction(a);)
- a = a();
- a = Blockly.utils.wrap(a, Blockly.Tooltip.LIMIT);
- a = a.split("\n");
- for (var b = 0; b < a.length; b++) {
- var c = document.createElement("div");
- c.appendChild(document.createTextNode(a[b]));
- Blockly.Tooltip.DIV.appendChild(c)
- }
- a = Blockly.Tooltip.element_.RTL;
- b = goog.dom.getViewportSize();
- Blockly.Tooltip.DIV.style.direction = a ? "rtl" : "ltr";
- Blockly.Tooltip.DIV.style.display = "block";
- Blockly.Tooltip.visible = !0;
- c = Blockly.Tooltip.lastX_;
- c = a ? c - (Blockly.Tooltip.OFFSET_X + Blockly.Tooltip.DIV.offsetWidth) : c + Blockly.Tooltip.OFFSET_X;
- var d = Blockly.Tooltip.lastY_ + Blockly.Tooltip.OFFSET_Y;
- d + Blockly.Tooltip.DIV.offsetHeight > b.height + window.scrollY && (d -= Blockly.Tooltip.DIV.offsetHeight + 2 * Blockly.Tooltip.OFFSET_Y);
- a ? c = Math.max(Blockly.Tooltip.MARGINS - window.scrollX, c) : c + Blockly.Tooltip.DIV.offsetWidth > b.width + window.scrollX - 2 * Blockly.Tooltip.MARGINS && (c = b.width - Blockly.Tooltip.DIV.offsetWidth - 2 * Blockly.Tooltip.MARGINS);
- Blockly.Tooltip.DIV.style.top = d + "px";
- Blockly.Tooltip.DIV.style.left = c + "px"
- }
- }
- ;
- Blockly.FieldLabel = function (a, b) {
- this.size_ = new goog.math.Size(0, 17.5);
- this.class_ = b;
- this.setValue(a)
- }
- ;
- goog.inherits(Blockly.FieldLabel, Blockly.Field);
- Blockly.FieldLabel.prototype.EDITABLE = !1;
- Blockly.FieldLabel.prototype.init = function () {
- this.textElement_ || (this.textElement_ = Blockly.createSvgElement("text", {
- "class": "blocklyText",
- y: this.size_.height - 5
- }, null),
- this.class_ && Blockly.addClass_(this.textElement_, this.class_),
- this.visible_ || (this.textElement_.style.display = "none"),
- this.sourceBlock_.getSvgRoot().appendChild(this.textElement_),
- this.textElement_.tooltip = this.sourceBlock_,
- Blockly.Tooltip.bindMouseEvents(this.textElement_),
- this.updateTextNode_())
- }
- ;
- Blockly.FieldLabel.prototype.dispose = function () {
- goog.dom.removeNode(this.textElement_);
- this.textElement_ = null
- }
- ;
- Blockly.FieldLabel.prototype.getSvgRoot = function () {
- return this.textElement_
- }
- ;
- Blockly.FieldLabel.prototype.setTooltip = function (a) {
- this.textElement_.tooltip = a
- }
- ;
- Blockly.Input = function (a, b, c, d) {
- this.type = a;
- this.name = b;
- this.sourceBlock_ = c;
- this.connection = d;
- this.fieldRow = []
- }
- ;
- Blockly.Input.prototype.align = Blockly.ALIGN_LEFT;
- Blockly.Input.prototype.visible_ = !0;
- Blockly.Input.prototype.appendField = function (a, b) {
- if (!a && !b)
- return this;
- goog.isString(a) && (a = new Blockly.FieldLabel(a));
- a.setSourceBlock(this.sourceBlock_);
- this.sourceBlock_.rendered && a.init();
- a.name = b;
- a.prefixField && this.appendField(a.prefixField);
- this.fieldRow.push(a);
- a.suffixField && this.appendField(a.suffixField);
- this.sourceBlock_.rendered && (this.sourceBlock_.render(),
- this.sourceBlock_.bumpNeighbours_());
- return this
- }
- ;
- Blockly.Input.prototype.appendTitle = function (a, b) {
- console.warn("Deprecated call to appendTitle, use appendField instead.");
- return this.appendField(a, b)
- }
- ;
- Blockly.Input.prototype.removeField = function (a) {
- for (var b = 0, c; c = this.fieldRow[b]; b++)
- if (c.name === a) {
- c.dispose();
- this.fieldRow.splice(b, 1);
- this.sourceBlock_.rendered && (this.sourceBlock_.render(),
- this.sourceBlock_.bumpNeighbours_());
- return
- }
- goog.asserts.fail('Field "%s" not found.', a)
- }
- ;
- Blockly.Input.prototype.isVisible = function () {
- return this.visible_
- }
- ;
- Blockly.Input.prototype.setVisible = function (a) {
- var b = [];
- if (this.visible_ == a)
- return b;
- for (var c = (this.visible_ = a) ? "block" : "none", d = 0, e; e = this.fieldRow[d]; d++)
- e.setVisible(a);
- this.connection && (a ? b = this.connection.unhideAll() : this.connection.hideAll(),
- d = this.connection.targetBlock()) && (d.getSvgRoot().style.display = c,
- a || (d.rendered = !1));
- return b
- }
- ;
- Blockly.Input.prototype.setCheck = function (a) {
- if (!this.connection)
- throw "This input does not have a connection.";
- this.connection.setCheck(a);
- return this
- }
- ;
- Blockly.Input.prototype.setAlign = function (a) {
- this.align = a;
- this.sourceBlock_.rendered && this.sourceBlock_.render();
- return this
- }
- ;
- Blockly.Input.prototype.init = function () {
- if (this.sourceBlock_.workspace.rendered)
- for (var a = 0; a < this.fieldRow.length; a++)
- this.fieldRow[a].init()
- }
- ;
- Blockly.Input.prototype.dispose = function () {
- for (var a = 0, b; b = this.fieldRow[a]; a++)
- b.dispose();
- this.connection && this.connection.dispose();
- this.sourceBlock_ = null
- }
- ;
- Blockly.ConnectionDB = function () { }
- ;
- Blockly.ConnectionDB.prototype = [];
- Blockly.ConnectionDB.constructor = Blockly.ConnectionDB;
- Blockly.ConnectionDB.prototype.addConnection = function (a) {
- if (a.inDB_)
- throw "Connection already in database.";
- if (!a.getSourceBlock().isInFlyout) {
- var b = this.findPositionForConnection_(a);
- this.splice(b, 0, a);
- a.inDB_ = !0
- }
- }
- ;
- Blockly.ConnectionDB.prototype.findConnection = function (a) {
- if (!this.length)
- return -1;
- var b = this.findPositionForConnection_(a);
- if (b >= this.length)
- return -1;
- for (var c = a.y_, d = b; 0 <= d && this[d].y_ == c;) {
- if (this[d] == a)
- return d;
- d--
- }
- for (; b < this.length && this[b].y_ == c;) {
- if (this[b] == a)
- return b;
- b++
- }
- return -1
- }
- ;
- Blockly.ConnectionDB.prototype.findPositionForConnection_ = function (a) {
- if (!this.length)
- return 0;
- for (var b = 0, c = this.length; b < c;) {
- var d = Math.floor((b + c) / 2);
- if (this[d].y_ < a.y_)
- b = d + 1;
- else if (this[d].y_ > a.y_)
- c = d;
- else {
- b = d;
- break
- }
- }
- return b
- }
- ;
- Blockly.ConnectionDB.prototype.removeConnection_ = function (a) {
- if (!a.inDB_)
- throw "Connection not in database.";
- var b = this.findConnection(a);
- if (-1 == b)
- throw "Unable to find connection in connectionDB.";
- a.inDB_ = !1;
- this.splice(b, 1)
- }
- ;
- Blockly.ConnectionDB.prototype.getNeighbours = function (a, b) {
- function c(a) {
- var c = e - d[a].x_
- , g = f - d[a].y_;
- Math.sqrt(c * c + g * g) <= b && m.push(d[a]);
- return g < b
- }
- for (var d = this, e = a.x_, f = a.y_, g = 0, h = d.length - 2, k = h; g < k;)
- d[k].y_ < f ? g = k : h = k,
- k = Math.floor((g + h) / 2);
- var m = [];
- h = g = k;
- if (d.length) {
- for (; 0 <= g && c(g);)
- g--;
- do
- h++;
- while (h < d.length && c(h))
- }
- return m
- }
- ;
- Blockly.ConnectionDB.prototype.isInYRange_ = function (a, b, c) {
- return Math.abs(this[a].y_ - b) <= c
- }
- ;
- Blockly.ConnectionDB.prototype.searchForClosest = function (a, b, c) {
- if (!this.length)
- return {
- connection: null,
- radius: b
- };
- var d = a.y_
- , e = a.x_;
- a.x_ = e + c.x;
- a.y_ = d + c.y;
- var f = this.findPositionForConnection_(a);
- c = null;
- for (var g = b, h, k = f - 1; 0 <= k && this.isInYRange_(k, a.y_, b);)
- h = this[k],
- a.isConnectionAllowed(h, g) && (c = h,
- g = h.distanceFrom(a)),
- k--;
- for (; f < this.length && this.isInYRange_(f, a.y_, b);)
- h = this[f],
- a.isConnectionAllowed(h, g) && (c = h,
- g = h.distanceFrom(a)),
- f++;
- a.x_ = e;
- a.y_ = d;
- return {
- connection: c,
- radius: g
- }
- }
- ;
- Blockly.ConnectionDB.init = function (a) {
- var b = [];
- b[Blockly.INPUT_VALUE] = new Blockly.ConnectionDB;
- b[Blockly.OUTPUT_VALUE] = new Blockly.ConnectionDB;
- b[Blockly.NEXT_STATEMENT] = new Blockly.ConnectionDB;
- b[Blockly.PREVIOUS_STATEMENT] = new Blockly.ConnectionDB;
- a.connectionDBList = b
- }
- ;
- Blockly.constants = {};
- Blockly.DRAG_RADIUS = 5;
- Blockly.SNAP_RADIUS = 20;
- Blockly.BUMP_DELAY = 250;
- Blockly.COLLAPSE_CHARS = 30;
- Blockly.LONGPRESS = 750;
- Blockly.SOUND_LIMIT = 100;
- Blockly.HSV_SATURATION = .45;
- Blockly.HSV_VALUE = .65;
- Blockly.SPRITE = {
- width: 96,
- height: 124,
- url: "sprites.png"
- };
- Blockly.SVG_NS = "http://www.w3.org/2000/svg";
- Blockly.HTML_NS = "http://www.w3.org/1999/xhtml";
- Blockly.INPUT_VALUE = 1;
- Blockly.OUTPUT_VALUE = 2;
- Blockly.NEXT_STATEMENT = 3;
- Blockly.PREVIOUS_STATEMENT = 4;
- Blockly.DUMMY_INPUT = 5;
- Blockly.ALIGN_LEFT = -1;
- Blockly.ALIGN_CENTRE = 0;
- Blockly.ALIGN_RIGHT = 1;
- Blockly.DRAG_NONE = 0;
- Blockly.DRAG_STICKY = 1;
- Blockly.DRAG_BEGIN = 1;
- Blockly.DRAG_FREE = 2;
- Blockly.OPPOSITE_TYPE = [];
- Blockly.OPPOSITE_TYPE[Blockly.INPUT_VALUE] = Blockly.OUTPUT_VALUE;
- Blockly.OPPOSITE_TYPE[Blockly.OUTPUT_VALUE] = Blockly.INPUT_VALUE;
- Blockly.OPPOSITE_TYPE[Blockly.NEXT_STATEMENT] = Blockly.PREVIOUS_STATEMENT;
- Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT] = Blockly.NEXT_STATEMENT;
- Blockly.TOOLBOX_AT_TOP = 0;
- Blockly.TOOLBOX_AT_BOTTOM = 1;
- Blockly.TOOLBOX_AT_LEFT = 2;
- Blockly.TOOLBOX_AT_RIGHT = 3;
- Blockly.Options = function (a) {
- var b = !!a.readOnly;
- if (b)
- var c = null
- , d = !1
- , e = !1
- , f = !1
- , g = !1
- , h = !1
- , k = !1;
- else
- c = Blockly.Options.parseToolboxTree(a.toolbox),
- d = !(!c || !c.getElementsByTagName("category").length),
- e = a.trashcan,
- void 0 === e && (e = d),
- f = a.collapse,
- void 0 === f && (f = d),
- g = a.comments,
- void 0 === g && (g = d),
- h = a.disable,
- void 0 === h && (h = d),
- k = a.sounds,
- void 0 === k && (k = !0);
- var m = !!a.rtl
- , p = a.horizontalLayout;
- void 0 === p && (p = !1);
- var l = a.toolboxPosition;
- l = "end" === l ? !1 : !0;
- l = p ? l ? Blockly.TOOLBOX_AT_TOP : Blockly.TOOLBOX_AT_BOTTOM : l == m ? Blockly.TOOLBOX_AT_RIGHT : Blockly.TOOLBOX_AT_LEFT;
- var n = a.scrollbars;
- void 0 === n && (n = d);
- var q = a.css;
- void 0 === q && (q = !0);
- var t = "blockly/media/";
- a.media ? t = a.media : a.path && (t = a.path + "media/");
- var r = void 0 === a.oneBasedIndex ? !0 : !!a.oneBasedIndex;
- this.RTL = m;
- this.oneBasedIndex = r;
- this.collapse = f;
- this.comments = g;
- this.disable = h;
- this.readOnly = b;
- this.maxBlocks = a.maxBlocks || Infinity;
- this.pathToMedia = t;
- this.hasCategories = d;
- this.hasScrollbars = n;
- this.hasTrashcan = e;
- this.hasSounds = k;
- this.hasCss = q;
- this.horizontalLayout = p;
- this.languageTree = c;
- this.gridOptions = Blockly.Options.parseGridOptions_(a);
- this.zoomOptions = Blockly.Options.parseZoomOptions_(a);
- this.toolboxPosition = l
- }
- ;
- Blockly.Options.prototype.parentWorkspace = null;
- Blockly.Options.prototype.setMetrics = null;
- Blockly.Options.prototype.getMetrics = null;
- Blockly.Options.parseZoomOptions_ = function (a) {
- a = a.zoom || {};
- var b = {};
- b.controls = void 0 === a.controls ? !1 : !!a.controls;
- b.wheel = void 0 === a.wheel ? !1 : !!a.wheel;
- b.startScale = void 0 === a.startScale ? 1 : parseFloat(a.startScale);
- b.maxScale = void 0 === a.maxScale ? 3 : parseFloat(a.maxScale);
- b.minScale = void 0 === a.minScale ? .3 : parseFloat(a.minScale);
- b.scaleSpeed = void 0 === a.scaleSpeed ? 1.2 : parseFloat(a.scaleSpeed);
- return b
- }
- ;
- Blockly.Options.parseGridOptions_ = function (a) {
- a = a.grid || {};
- var b = {};
- b.spacing = parseFloat(a.spacing) || 0;
- b.colour = a.colour || "#888";
- b.length = parseFloat(a.length) || 1;
- b.snap = 0 < b.spacing && !!a.snap;
- return b
- }
- ;
- Blockly.Options.parseToolboxTree = function (a) {
- a ? ("string" != typeof a && ("undefined" == typeof XSLTProcessor && a.outerHTML ? a = a.outerHTML : a instanceof Element || (a = null)),
- "string" == typeof a && (a = Blockly.Xml.textToDom(a))) : a = null;
- return a
- }
- ;
- Blockly.ScrollbarPair = function (a) {
- this.workspace_ = a;
- this.hScroll = new Blockly.Scrollbar(a, !0, !0);
- this.vScroll = new Blockly.Scrollbar(a, !1, !0);
- this.corner_ = Blockly.createSvgElement("rect", {
- height: Blockly.Scrollbar.scrollbarThickness,
- width: Blockly.Scrollbar.scrollbarThickness,
- "class": "blocklyScrollbarBackground"
- }, null);
- Blockly.Scrollbar.insertAfter_(this.corner_, a.getBubbleCanvas())
- }
- ;
- Blockly.ScrollbarPair.prototype.oldHostMetrics_ = null;
- Blockly.ScrollbarPair.prototype.dispose = function () {
- goog.dom.removeNode(this.corner_);
- this.oldHostMetrics_ = this.workspace_ = this.corner_ = null;
- this.hScroll.dispose();
- this.hScroll = null;
- this.vScroll.dispose();
- this.vScroll = null
- }
- ;
- Blockly.ScrollbarPair.prototype.resize = function () {
- var a = this.workspace_.getMetrics();
- if (a) {
- var b = !1
- , c = !1;
- this.oldHostMetrics_ && this.oldHostMetrics_.viewWidth == a.viewWidth && this.oldHostMetrics_.viewHeight == a.viewHeight && this.oldHostMetrics_.absoluteTop == a.absoluteTop && this.oldHostMetrics_.absoluteLeft == a.absoluteLeft ? (this.oldHostMetrics_ && this.oldHostMetrics_.contentWidth == a.contentWidth && this.oldHostMetrics_.viewLeft == a.viewLeft && this.oldHostMetrics_.contentLeft == a.contentLeft || (b = !0),
- this.oldHostMetrics_ && this.oldHostMetrics_.contentHeight == a.contentHeight && this.oldHostMetrics_.viewTop == a.viewTop && this.oldHostMetrics_.contentTop == a.contentTop || (c = !0)) : c = b = !0;
- b && this.hScroll.resize(a);
- c && this.vScroll.resize(a);
- this.oldHostMetrics_ && this.oldHostMetrics_.viewWidth == a.viewWidth && this.oldHostMetrics_.absoluteLeft == a.absoluteLeft || this.corner_.setAttribute("x", this.vScroll.position_.x);
- this.oldHostMetrics_ && this.oldHostMetrics_.viewHeight == a.viewHeight && this.oldHostMetrics_.absoluteTop == a.absoluteTop || this.corner_.setAttribute("y", this.hScroll.position_.y);
- this.oldHostMetrics_ = a
- }
- }
- ;
- Blockly.ScrollbarPair.prototype.set = function (a, b) {
- var c = {}
- , d = a * this.hScroll.ratio_
- , e = b * this.vScroll.ratio_
- , f = this.vScroll.scrollViewSize_;
- c.x = this.getRatio_(d, this.hScroll.scrollViewSize_);
- c.y = this.getRatio_(e, f);
- this.workspace_.setMetrics(c);
- this.hScroll.setHandlePosition(d);
- this.vScroll.setHandlePosition(e)
- }
- ;
- Blockly.ScrollbarPair.prototype.getRatio_ = function (a, b) {
- var c = a / b;
- return isNaN(c) ? 0 : c
- }
- ;
- Blockly.Scrollbar = function (a, b, c) {
- this.workspace_ = a;
- this.pair_ = c || !1;
- this.horizontal_ = b;
- this.oldHostMetrics_ = null;
- this.createDom_();
- this.position_ = new goog.math.Coordinate(0, 0);
- b ? (this.svgBackground_.setAttribute("height", Blockly.Scrollbar.scrollbarThickness),
- this.svgHandle_.setAttribute("height", Blockly.Scrollbar.scrollbarThickness - 5),
- this.svgHandle_.setAttribute("y", 2.5),
- this.lengthAttribute_ = "width",
- this.positionAttribute_ = "x") : (this.svgBackground_.setAttribute("width", Blockly.Scrollbar.scrollbarThickness),
- this.svgHandle_.setAttribute("width", Blockly.Scrollbar.scrollbarThickness - 5),
- this.svgHandle_.setAttribute("x", 2.5),
- this.lengthAttribute_ = "height",
- this.positionAttribute_ = "y");
- this.onMouseDownBarWrapper_ = Blockly.bindEventWithChecks_(this.svgBackground_, "mousedown", this, this.onMouseDownBar_);
- this.onMouseDownHandleWrapper_ = Blockly.bindEventWithChecks_(this.svgHandle_, "mousedown", this, this.onMouseDownHandle_)
- }
- ;
- Blockly.Scrollbar.prototype.scrollViewSize_ = 0;
- Blockly.Scrollbar.prototype.handleLength_ = 0;
- Blockly.Scrollbar.prototype.handlePosition_ = 0;
- Blockly.Scrollbar.prototype.isVisible_ = !0;
- Blockly.Scrollbar.scrollbarThickness = 15;
- goog.events.BrowserFeature.TOUCH_ENABLED && (Blockly.Scrollbar.scrollbarThickness = 25);
- Blockly.Scrollbar.metricsAreEquivalent_ = function (a, b) {
- return a && b && a.viewWidth == b.viewWidth && a.viewHeight == b.viewHeight && a.viewLeft == b.viewLeft && a.viewTop == b.viewTop && a.absoluteTop == b.absoluteTop && a.absoluteLeft == b.absoluteLeft && a.contentWidth == b.contentWidth && a.contentHeight == b.contentHeight && a.contentLeft == b.contentLeft && a.contentTop == b.contentTop ? !0 : !1
- }
- ;
- Blockly.Scrollbar.prototype.dispose = function () {
- this.cleanUp_();
- Blockly.unbindEvent_(this.onMouseDownBarWrapper_);
- this.onMouseDownBarWrapper_ = null;
- Blockly.unbindEvent_(this.onMouseDownHandleWrapper_);
- this.onMouseDownHandleWrapper_ = null;
- goog.dom.removeNode(this.svgGroup_);
- this.workspace_ = this.svgHandle_ = this.svgBackground_ = this.svgGroup_ = null
- }
- ;
- Blockly.Scrollbar.prototype.setHandleLength_ = function (a) {
- this.handleLength_ = a;
- this.svgHandle_.setAttribute(this.lengthAttribute_, this.handleLength_)
- }
- ;
- Blockly.Scrollbar.prototype.setHandlePosition = function (a) {
- this.handlePosition_ = a;
- this.svgHandle_.setAttribute(this.positionAttribute_, this.handlePosition_)
- }
- ;
- Blockly.Scrollbar.prototype.setScrollViewSize_ = function (a) {
- this.scrollViewSize_ = a;
- this.svgBackground_.setAttribute(this.lengthAttribute_, this.scrollViewSize_)
- }
- ;
- Blockly.Scrollbar.prototype.setPosition = function (a, b) {
- this.position_.x = a;
- this.position_.y = b;
- this.svgGroup_.setAttribute("transform", "translate(" + this.position_.x + "," + this.position_.y + ")")
- }
- ;
- Blockly.Scrollbar.prototype.resize = function (a) {
- if (!a && (a = this.workspace_.getMetrics(),
- !a))
- return;
- Blockly.Scrollbar.metricsAreEquivalent_(a, this.oldHostMetrics_) || (this.oldHostMetrics_ = a,
- this.horizontal_ ? this.resizeHorizontal_(a) : this.resizeVertical_(a),
- this.onScroll_())
- }
- ;
- Blockly.Scrollbar.prototype.resizeHorizontal_ = function (a) {
- this.resizeViewHorizontal(a)
- }
- ;
- Blockly.Scrollbar.prototype.resizeViewHorizontal = function (a) {
- var b = a.viewWidth - 1;
- this.pair_ && (b -= Blockly.Scrollbar.scrollbarThickness);
- this.setScrollViewSize_(Math.max(0, b));
- b = a.absoluteLeft + .5;
- this.pair_ && this.workspace_.RTL && (b += Blockly.Scrollbar.scrollbarThickness);
- this.setPosition(b, a.absoluteTop + a.viewHeight - Blockly.Scrollbar.scrollbarThickness - .5);
- this.resizeContentHorizontal(a)
- }
- ;
- Blockly.Scrollbar.prototype.resizeContentHorizontal = function (a) {
- this.pair_ || this.setVisible(this.scrollViewSize_ < a.contentWidth);
- this.ratio_ = this.scrollViewSize_ / a.contentWidth;
- if (-Infinity == this.ratio_ || Infinity == this.ratio_ || isNaN(this.ratio_))
- this.ratio_ = 0;
- this.setHandleLength_(Math.max(0, a.viewWidth * this.ratio_));
- this.setHandlePosition(this.constrainHandle_((a.viewLeft - a.contentLeft) * this.ratio_))
- }
- ;
- Blockly.Scrollbar.prototype.resizeVertical_ = function (a) {
- this.resizeViewVertical(a)
- }
- ;
- Blockly.Scrollbar.prototype.resizeViewVertical = function (a) {
- var b = a.viewHeight - 1;
- this.pair_ && (b -= Blockly.Scrollbar.scrollbarThickness);
- this.setScrollViewSize_(Math.max(0, b));
- b = a.absoluteLeft + .5;
- this.workspace_.RTL || (b += a.viewWidth - Blockly.Scrollbar.scrollbarThickness - 1);
- this.setPosition(b, a.absoluteTop + .5);
- this.resizeContentVertical(a)
- }
- ;
- Blockly.Scrollbar.prototype.resizeContentVertical = function (a) {
- this.pair_ || this.setVisible(this.scrollViewSize_ < a.contentHeight);
- this.ratio_ = this.scrollViewSize_ / a.contentHeight;
- if (-Infinity == this.ratio_ || Infinity == this.ratio_ || isNaN(this.ratio_))
- this.ratio_ = 0;
- this.setHandleLength_(Math.max(0, a.viewHeight * this.ratio_));
- this.setHandlePosition(this.constrainHandle_((a.viewTop - a.contentTop) * this.ratio_))
- }
- ;
- Blockly.Scrollbar.prototype.createDom_ = function () {
- this.svgGroup_ = Blockly.createSvgElement("g", {
- "class": "blocklyScrollbar" + (this.horizontal_ ? "Horizontal" : "Vertical")
- }, null);
- this.svgBackground_ = Blockly.createSvgElement("rect", {
- "class": "blocklyScrollbarBackground"
- }, this.svgGroup_);
- var a = Math.floor((Blockly.Scrollbar.scrollbarThickness - 5) / 2);
- this.svgHandle_ = Blockly.createSvgElement("rect", {
- "class": "blocklyScrollbarHandle",
- rx: a,
- ry: a
- }, this.svgGroup_);
- Blockly.Scrollbar.insertAfter_(this.svgGroup_, this.workspace_.getBubbleCanvas())
- }
- ;
- Blockly.Scrollbar.prototype.isVisible = function () {
- return this.isVisible_
- }
- ;
- Blockly.Scrollbar.prototype.setVisible = function (a) {
- if (a != this.isVisible()) {
- if (this.pair_)
- throw "Unable to toggle visibility of paired scrollbars.";
- (this.isVisible_ = a) ? this.svgGroup_.setAttribute("display", "block") : (this.workspace_.setMetrics({
- x: 0,
- y: 0
- }),
- this.svgGroup_.setAttribute("display", "none"))
- }
- }
- ;
- Blockly.Scrollbar.prototype.onMouseDownBar_ = function (a) {
- this.workspace_.markFocused();
- Blockly.Touch.clearTouchIdentifier();
- this.cleanUp_();
- if (Blockly.isRightButton(a))
- a.stopPropagation();
- else {
- var b = Blockly.mouseToSvg(a, this.workspace_.getParentSvg(), this.workspace_.getInverseScreenCTM());
- b = this.horizontal_ ? b.x : b.y;
- var c = Blockly.getSvgXY_(this.svgHandle_, this.workspace_);
- c = this.horizontal_ ? c.x : c.y;
- var d = this.handlePosition_
- , e = .95 * this.handleLength_;
- b <= c ? d -= e : b >= c + this.handleLength_ && (d += e);
- this.setHandlePosition(this.constrainHandle_(d));
- this.onScroll_();
- a.stopPropagation();
- a.preventDefault()
- }
- }
- ;
- Blockly.Scrollbar.prototype.onMouseDownHandle_ = function (a) {
- this.workspace_.markFocused();
- this.cleanUp_();
- Blockly.isRightButton(a) ? a.stopPropagation() : (this.startDragHandle = this.handlePosition_,
- this.startDragMouse = this.horizontal_ ? a.clientX : a.clientY,
- Blockly.Scrollbar.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, "mouseup", this, this.onMouseUpHandle_),
- Blockly.Scrollbar.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_(document, "mousemove", this, this.onMouseMoveHandle_),
- a.stopPropagation(),
- a.preventDefault())
- }
- ;
- Blockly.Scrollbar.prototype.onMouseMoveHandle_ = function (a) {
- this.setHandlePosition(this.constrainHandle_(this.startDragHandle + ((this.horizontal_ ? a.clientX : a.clientY) - this.startDragMouse)));
- this.onScroll_()
- }
- ;
- Blockly.Scrollbar.prototype.onMouseUpHandle_ = function () {
- Blockly.Touch.clearTouchIdentifier();
- this.cleanUp_()
- }
- ;
- Blockly.Scrollbar.prototype.cleanUp_ = function () {
- Blockly.hideChaff(!0);
- Blockly.Scrollbar.onMouseUpWrapper_ && (Blockly.unbindEvent_(Blockly.Scrollbar.onMouseUpWrapper_),
- Blockly.Scrollbar.onMouseUpWrapper_ = null);
- Blockly.Scrollbar.onMouseMoveWrapper_ && (Blockly.unbindEvent_(Blockly.Scrollbar.onMouseMoveWrapper_),
- Blockly.Scrollbar.onMouseMoveWrapper_ = null)
- }
- ;
- Blockly.Scrollbar.prototype.constrainHandle_ = function (a) {
- return a = 0 >= a || isNaN(a) || this.scrollViewSize_ < this.handleLength_ ? 0 : Math.min(a, this.scrollViewSize_ - this.handleLength_)
- }
- ;
- Blockly.Scrollbar.prototype.onScroll_ = function () {
- var a = this.handlePosition_ / this.scrollViewSize_;
- isNaN(a) && (a = 0);
- var b = {};
- this.horizontal_ ? b.x = a : b.y = a;
- this.workspace_.setMetrics(b)
- }
- ;
- Blockly.Scrollbar.prototype.set = function (a) {
- this.setHandlePosition(this.constrainHandle_(a * this.ratio_));
- this.onScroll_()
- }
- ;
- Blockly.Scrollbar.insertAfter_ = function (a, b) {
- var c = b.nextSibling
- , d = b.parentNode;
- if (!d)
- throw "Reference node has no parent.";
- c ? d.insertBefore(a, c) : d.appendChild(a)
- }
- ;
- Blockly.Trashcan = function (a) {
- this.workspace_ = a
- }
- ;
- Blockly.Trashcan.prototype.WIDTH_ = 47;
- Blockly.Trashcan.prototype.BODY_HEIGHT_ = 44;
- Blockly.Trashcan.prototype.LID_HEIGHT_ = 16;
- Blockly.Trashcan.prototype.MARGIN_BOTTOM_ = 20;
- Blockly.Trashcan.prototype.MARGIN_SIDE_ = 20;
- Blockly.Trashcan.prototype.MARGIN_HOTSPOT_ = 10;
- Blockly.Trashcan.prototype.SPRITE_LEFT_ = 0;
- Blockly.Trashcan.prototype.SPRITE_TOP_ = 32;
- Blockly.Trashcan.prototype.isOpen = !1;
- Blockly.Trashcan.prototype.svgGroup_ = null;
- Blockly.Trashcan.prototype.svgLid_ = null;
- Blockly.Trashcan.prototype.lidTask_ = 0;
- Blockly.Trashcan.prototype.lidOpen_ = 0;
- Blockly.Trashcan.prototype.left_ = 0;
- Blockly.Trashcan.prototype.top_ = 0;
- Blockly.Trashcan.prototype.init = function (a) {
- this.bottom_ = this.MARGIN_BOTTOM_ + a;
- this.setOpen_(!1);
- return this.bottom_ + this.BODY_HEIGHT_ + this.LID_HEIGHT_
- }
- ;
- Blockly.Trashcan.prototype.dispose = function () {
- this.svgGroup_ && (goog.dom.removeNode(this.svgGroup_),
- this.svgGroup_ = null);
- this.workspace_ = this.svgLid_ = null;
- goog.Timer.clear(this.lidTask_)
- }
- ;
- Blockly.Trashcan.prototype.position = function () {
- var a = this.workspace_.getMetrics();
- a && (this.workspace_.RTL ? (this.left_ = this.MARGIN_SIDE_ + Blockly.Scrollbar.scrollbarThickness,
- a.toolboxPosition == Blockly.TOOLBOX_AT_LEFT && (this.left_ += a.flyoutWidth,
- this.workspace_.toolbox_ && (this.left_ += a.absoluteLeft))) : (this.left_ = a.viewWidth + a.absoluteLeft - this.WIDTH_ - this.MARGIN_SIDE_ - Blockly.Scrollbar.scrollbarThickness,
- a.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT && (this.left_ -= a.flyoutWidth)),
- this.top_ = a.viewHeight + a.absoluteTop - (this.BODY_HEIGHT_ + this.LID_HEIGHT_) - this.bottom_,
- a.toolboxPosition == Blockly.TOOLBOX_AT_BOTTOM && (this.top_ -= a.flyoutHeight),
- this.svgGroup_.setAttribute("transform", "translate(" + this.left_ + "," + this.top_ + ")"))
- }
- ;
- Blockly.Trashcan.prototype.getClientRect = function () {
- if (!this.svgGroup_)
- return null;
- var a = this.svgGroup_.getBoundingClientRect();
- return new goog.math.Rect(a.left + this.SPRITE_LEFT_ - this.MARGIN_HOTSPOT_, a.top + this.SPRITE_TOP_ - this.MARGIN_HOTSPOT_, this.WIDTH_ + 2 * this.MARGIN_HOTSPOT_, this.LID_HEIGHT_ + this.BODY_HEIGHT_ + 2 * this.MARGIN_HOTSPOT_)
- }
- ;
- Blockly.Trashcan.prototype.setOpen_ = function (a) {
- this.isOpen != a && (goog.Timer.clear(this.lidTask_),
- this.isOpen = a,
- this.animateLid_())
- }
- ;
- Blockly.Trashcan.prototype.animateLid_ = function () {
- this.lidOpen_ += this.isOpen ? .2 : -.2;
- this.lidOpen_ = goog.math.clamp(this.lidOpen_, 0, 1);
- var a = 45 * this.lidOpen_;
- this.svgLid_.setAttribute("transform", "rotate(" + (this.workspace_.RTL ? -a : a) + "," + (this.workspace_.RTL ? 4 : this.WIDTH_ - 4) + "," + (this.LID_HEIGHT_ - 2) + ")");
- a = goog.math.lerp(.4, .8, this.lidOpen_);
- this.svgGroup_.style.opacity = a;
- 0 < this.lidOpen_ && 1 > this.lidOpen_ && (this.lidTask_ = goog.Timer.callOnce(this.animateLid_, 20, this))
- }
- ;
- Blockly.Trashcan.prototype.close = function () {
- this.setOpen_(!1)
- }
- ;
- Blockly.Trashcan.prototype.click = function () {
- var a = this.workspace_.startScrollX - this.workspace_.scrollX
- , b = this.workspace_.startScrollY - this.workspace_.scrollY;
- Math.sqrt(a * a + b * b) > Blockly.DRAG_RADIUS || console.log("TODO: Inspect trash.")
- }
- ;
- Blockly.Xml = {};
- Blockly.Xml.workspaceToDom = function (a, b) {
- for (var c = goog.dom.createDom("xml"), d = a.getTopBlocks(!0), e = 0, f; f = d[e]; e++)
- c.appendChild(Blockly.Xml.blockToDomWithXY(f, b));
- return c
- }
- ;
- Blockly.Xml.blockToDomWithXY = function (a, b) {
- var c;
- a.workspace.RTL && (c = a.workspace.getWidth());
- var d = Blockly.Xml.blockToDom(a, b)
- , e = a.getRelativeToSurfaceXY();
- d.setAttribute("x", Math.round(a.workspace.RTL ? c - e.x : e.x));
- d.setAttribute("y", Math.round(e.y));
- return d
- }
- ;
- Blockly.Xml.blockToDom = function (a, b) {
- var c = goog.dom.createDom(a.isShadow() ? "shadow" : "block");
- c.setAttribute("type", a.type);
- b || c.setAttribute("id", a.id);
- if (a.mutationToDom) {
- var d = a.mutationToDom();
- d && (d.hasChildNodes() || d.hasAttributes()) && c.appendChild(d)
- }
- d = 0;
- for (var e; e = a.inputList[d]; d++)
- for (var f = 0, g; g = e.fieldRow[f]; f++)
- if (g.name && g.EDITABLE) {
- var h = goog.dom.createDom("field", null, g.getValue());
- h.setAttribute("name", g.name);
- c.appendChild(h)
- }
- if (d = a.getCommentText())
- d = goog.dom.createDom("comment", null, d),
- "object" == typeof a.comment && (d.setAttribute("pinned", a.comment.isVisible()),
- e = a.comment.getBubbleSize(),
- d.setAttribute("h", e.height),
- d.setAttribute("w", e.width)),
- c.appendChild(d);
- a.data && (d = goog.dom.createDom("data", null, a.data),
- c.appendChild(d));
- for (d = 0; e = a.inputList[d]; d++) {
- var k;
- g = !0;
- e.type != Blockly.DUMMY_INPUT && (h = e.connection.targetBlock(),
- e.type == Blockly.INPUT_VALUE ? k = goog.dom.createDom("value") : e.type == Blockly.NEXT_STATEMENT && (k = goog.dom.createDom("statement")),
- f = e.connection.getShadowDom(),
- !f || h && h.isShadow() || k.appendChild(Blockly.Xml.cloneShadow_(f)),
- h && (k.appendChild(Blockly.Xml.blockToDom(h, b)),
- g = !1),
- k.setAttribute("name", e.name),
- g || c.appendChild(k))
- }
- a.inputsInlineDefault != a.inputsInline && c.setAttribute("inline", a.inputsInline);
- a.isCollapsed() && c.setAttribute("collapsed", !0);
- a.disabled && c.setAttribute("disabled", !0);
- a.isDeletable() || a.isShadow() || c.setAttribute("deletable", !1);
- a.isMovable() || a.isShadow() || c.setAttribute("movable", !1);
- a.isEditable() || c.setAttribute("editable", !1);
- if (d = a.getNextBlock())
- k = goog.dom.createDom("next", null, Blockly.Xml.blockToDom(d, b)),
- c.appendChild(k);
- f = a.nextConnection && a.nextConnection.getShadowDom();
- !f || d && d.isShadow() || k.appendChild(Blockly.Xml.cloneShadow_(f));
- return c
- }
- ;
- Blockly.Xml.cloneShadow_ = function (a) {
- for (var b = a = a.cloneNode(!0), c; b;)
- if (b.firstChild)
- b = b.firstChild;
- else {
- for (; b && !b.nextSibling;)
- c = b,
- b = b.parentNode,
- 3 == c.nodeType && "" == c.data.trim() && b.firstChild != c && goog.dom.removeNode(c);
- b && (c = b,
- b = b.nextSibling,
- 3 == c.nodeType && "" == c.data.trim() && goog.dom.removeNode(c))
- }
- return a
- }
- ;
- Blockly.Xml.domToText = function (a) {
- return (new XMLSerializer).serializeToString(a)
- }
- ;
- Blockly.Xml.domToPrettyText = function (a) {
- a = Blockly.Xml.domToText(a).split("<");
- for (var b = "", c = 1; c < a.length; c++) {
- var d = a[c];
- "/" == d[0] && (b = b.substring(2));
- a[c] = b + "<" + d;
- "/" != d[0] && "/>" != d.slice(-2) && (b += " ")
- }
- a = a.join("\n");
- a = a.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g, "$1</$2>");
- return a.replace(/^\n/, "")
- }
- ;
- Blockly.Xml.textToDom = function (a) {
- (a = (new DOMParser).parseFromString(a, "text/xml")) && a.firstChild && "xml" == a.firstChild.nodeName.toLowerCase() && a.firstChild === a.lastChild || goog.asserts.fail("Blockly.Xml.textToDom did not obtain a valid XML tree.");
- return a.firstChild
- }
- ;
- Blockly.Xml.domToWorkspace = function (a, b) {
- if (a instanceof Blockly.Workspace) {
- var c = a;
- a = b;
- b = c;
- console.warn("Deprecated call to Blockly.Xml.domToWorkspace, swap the arguments.")
- }
- var d;
- b.RTL && (d = b.getWidth());
- Blockly.Field.startCache();
- c = a.childNodes.length;
- var e = Blockly.Events.getGroup();
- e || Blockly.Events.setGroup(!0);
- b.setResizesEnabled && b.setResizesEnabled(!1);
- for (var f = 0; f < c; f++) {
- var g = a.childNodes[f]
- , h = g.nodeName.toLowerCase();
- if ("block" == h || "shadow" == h && !Blockly.Events.recordUndo) {
- h = Blockly.Xml.domToBlock(g, b);
- var k = parseInt(g.getAttribute("x"), 10);
- g = parseInt(g.getAttribute("y"), 10);
- isNaN(k) || isNaN(g) || h.moveBy(b.RTL ? d - k : k, g)
- } else
- "shadow" == h && goog.asserts.fail("Shadow block cannot be a top-level block.")
- }
- e || Blockly.Events.setGroup(!1);
- Blockly.Field.stopCache();
- b.updateVariableList(!1);
- b.setResizesEnabled && b.setResizesEnabled(!0)
- }
- ;
- Blockly.Xml.domToBlock = function (a, b) {
- if (a instanceof Blockly.Workspace) {
- var c = a;
- a = b;
- b = c;
- console.warn("Deprecated call to Blockly.Xml.domToBlock, swap the arguments.")
- }
- Blockly.Events.disable();
- try {
- var d = Blockly.Xml.domToBlockHeadless_(a, b);
- if (b.rendered) {
- d.setConnectionsHidden(!0);
- for (var e = d.getDescendants(), f = e.length - 1; 0 <= f; f--)
- e[f].initSvg();
- for (f = e.length - 1; 0 <= f; f--)
- e[f].render(!1);
- setTimeout(function () {
- d.workspace && d.setConnectionsHidden(!1)
- }, 1);
- d.updateDisabled();
- b.resizeContents()
- }
- } finally {
- Blockly.Events.enable()
- }
- Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Create(d));
- return d
- }
- ;
- Blockly.Xml.domToBlockHeadless_ = function (a, b) {
- var c = null
- , d = a.getAttribute("type");
- goog.asserts.assert(d, "Block type unspecified: %s", a.outerHTML);
- var e = a.getAttribute("id");
- c = b.newBlock(d, e);
- var f = null;
- e = 0;
- for (var g; g = a.childNodes[e]; e++)
- if (3 != g.nodeType) {
- for (var h = f = null, k = 0, m; m = g.childNodes[k]; k++)
- 1 == m.nodeType && ("block" == m.nodeName.toLowerCase() ? f = m : "shadow" == m.nodeName.toLowerCase() && (h = m));
- !f && h && (f = h);
- k = g.getAttribute("name");
- switch (g.nodeName.toLowerCase()) {
- case "mutation":
- c.domToMutation && (c.domToMutation(g),
- c.initSvg && c.initSvg());
- break;
- case "comment":
- c.setCommentText(g.textContent);
- var p = g.getAttribute("pinned");
- p && !c.isInFlyout && setTimeout(function () {
- c.comment && c.comment.setVisible && c.comment.setVisible("true" == p)
- }, 1);
- f = parseInt(g.getAttribute("w"), 10);
- g = parseInt(g.getAttribute("h"), 10);
- !isNaN(f) && !isNaN(g) && c.comment && c.comment.setVisible && c.comment.setBubbleSize(f, g);
- break;
- case "data":
- c.data = g.textContent;
- break;
- case "title":
- case "field":
- f = c.getField(k);
- if (!f) {
- console.warn("Ignoring non-existent field " + k + " in block " + d);
- break
- }
- f.setValue(g.textContent);
- break;
- case "value":
- case "statement":
- g = c.getInput(k);
- if (!g) {
- console.warn("Ignoring non-existent input " + k + " in block " + d);
- break
- }
- h && g.connection.setShadowDom(h);
- f && (f = Blockly.Xml.domToBlockHeadless_(f, b),
- f.outputConnection ? g.connection.connect(f.outputConnection) : f.previousConnection ? g.connection.connect(f.previousConnection) : goog.asserts.fail("Child block does not have output or previous statement."));
- break;
- case "next":
- h && c.nextConnection && c.nextConnection.setShadowDom(h);
- f && (goog.asserts.assert(c.nextConnection, "Next statement does not exist."),
- goog.asserts.assert(!c.nextConnection.isConnected(), "Next statement is already connected."),
- f = Blockly.Xml.domToBlockHeadless_(f, b),
- goog.asserts.assert(f.previousConnection, "Next block does not have previous statement."),
- c.nextConnection.connect(f.previousConnection));
- break;
- default:
- console.warn("Ignoring unknown tag: " + g.nodeName)
- }
- }
- (e = a.getAttribute("inline")) && c.setInputsInline("true" == e);
- (e = a.getAttribute("disabled")) && c.setDisabled("true" == e);
- (e = a.getAttribute("deletable")) && c.setDeletable("true" == e);
- (e = a.getAttribute("movable")) && c.setMovable("true" == e);
- (e = a.getAttribute("editable")) && c.setEditable("true" == e);
- (e = a.getAttribute("collapsed")) && c.setCollapsed("true" == e);
- if ("shadow" == a.nodeName.toLowerCase()) {
- d = c.getChildren();
- for (e = 0; g = d[e]; e++)
- goog.asserts.assert(g.isShadow(), "Shadow block not allowed non-shadow child.");
- goog.asserts.assert(0 == c.getVars().length, "Shadow blocks cannot have variable fields.");
- c.setShadow(!0)
- }
- return c
- }
- ;
- Blockly.Xml.deleteNext = function (a) {
- for (var b = 0, c; c = a.childNodes[b]; b++)
- if ("next" == c.nodeName.toLowerCase()) {
- a.removeChild(c);
- break
- }
- }
- ;
- goog.global.Blockly || (goog.global.Blockly = {});
- goog.global.Blockly.Xml || (goog.global.Blockly.Xml = {});
- goog.global.Blockly.Xml.domToText = Blockly.Xml.domToText;
- goog.global.Blockly.Xml.domToWorkspace = Blockly.Xml.domToWorkspace;
- goog.global.Blockly.Xml.textToDom = Blockly.Xml.textToDom;
- goog.global.Blockly.Xml.workspaceToDom = Blockly.Xml.workspaceToDom;
- Blockly.ZoomControls = function (a) {
- this.workspace_ = a
- }
- ;
- Blockly.ZoomControls.prototype.WIDTH_ = 32;
- Blockly.ZoomControls.prototype.HEIGHT_ = 110;
- Blockly.ZoomControls.prototype.MARGIN_BOTTOM_ = 20;
- Blockly.ZoomControls.prototype.MARGIN_SIDE_ = 20;
- Blockly.ZoomControls.prototype.svgGroup_ = null;
- Blockly.ZoomControls.prototype.left_ = 0;
- Blockly.ZoomControls.prototype.top_ = 0;
- Blockly.Trashcan.prototype.createDom = function () {
- this.svgGroup_ = Blockly.createSvgElement("g", {
- "class": "blocklyTrash"
- }, null);
- var a = String(Math.random()).substring(2)
- , b = Blockly.createSvgElement("clipPath", {
- id: "blocklyTrashBodyClipPath" + a
- }, this.svgGroup_);
- Blockly.createSvgElement("rect", {
- width: this.WIDTH_,
- height: this.BODY_HEIGHT_,
- y: this.LID_HEIGHT_
- }, b);
- Blockly.createSvgElement("image", {
- width: Blockly.SPRITE.width,
- x: -this.SPRITE_LEFT_,
- height: Blockly.SPRITE.height,
- y: -this.SPRITE_TOP_,
- "clip-path": "url(#blocklyTrashBodyClipPath" + a + ")"
- }, this.svgGroup_).setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.workspace_.options.pathToMedia + Blockly.SPRITE.url);
- b = Blockly.createSvgElement("clipPath", {
- id: "blocklyTrashLidClipPath" + a
- }, this.svgGroup_);
- Blockly.createSvgElement("rect", {
- width: this.WIDTH_,
- height: this.LID_HEIGHT_
- }, b);
- this.svgLid_ = Blockly.createSvgElement("image", {
- width: Blockly.SPRITE.width,
- x: -this.SPRITE_LEFT_,
- height: Blockly.SPRITE.height,
- y: -this.SPRITE_TOP_,
- "clip-path": "url(#blocklyTrashLidClipPath" + a + ")"
- }, this.svgGroup_);
- this.svgLid_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.workspace_.options.pathToMedia + Blockly.SPRITE.url);
- Blockly.bindEventWithChecks_(this.svgGroup_, "mouseup", this, this.click);
- this.animateLid_();
- return this.svgGroup_
- }
- ;
- Blockly.ZoomControls.prototype.createDom = function () {
- var a = this.workspace_;
- this.svgGroup_ = Blockly.createSvgElement("g", {
- "class": "blocklyZoom"
- }, null);
- var b = String(Math.random()).substring(2)
- , c = Blockly.createSvgElement("clipPath", {
- id: "blocklyZoomoutClipPath" + b
- }, this.svgGroup_);
- Blockly.createSvgElement("rect", {
- width: 32,
- height: 32,
- y: 77
- }, c);
- var d = Blockly.createSvgElement("image", {
- width: Blockly.SPRITE.width,
- height: Blockly.SPRITE.height,
- x: -64,
- y: -15,
- "clip-path": "url(#blocklyZoomoutClipPath" + b + ")"
- }, this.svgGroup_);
- d.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", a.options.pathToMedia + Blockly.SPRITE.url);
- c = Blockly.createSvgElement("clipPath", {
- id: "blocklyZoominClipPath" + b
- }, this.svgGroup_);
- Blockly.createSvgElement("rect", {
- width: 32,
- height: 32,
- y: 43
- }, c);
- var e = Blockly.createSvgElement("image", {
- width: Blockly.SPRITE.width,
- height: Blockly.SPRITE.height,
- x: -32,
- y: -49,
- "clip-path": "url(#blocklyZoominClipPath" + b + ")"
- }, this.svgGroup_);
- e.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", a.options.pathToMedia + Blockly.SPRITE.url);
- c = Blockly.createSvgElement("clipPath", {
- id: "blocklyZoomresetClipPath" + b
- }, this.svgGroup_);
- Blockly.createSvgElement("rect", {
- width: 32,
- height: 32
- }, c);
- b = Blockly.createSvgElement("image", {
- width: Blockly.SPRITE.width,
- height: Blockly.SPRITE.height,
- y: -92,
- "clip-path": "url(#blocklyZoomresetClipPath" + b + ")"
- }, this.svgGroup_);
- b.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", a.options.pathToMedia + Blockly.SPRITE.url);
- Blockly.bindEventWithChecks_(b, "mousedown", null, function (b) {
- a.markFocused();
- a.setScale(a.options.zoomOptions.startScale);
- a.scrollCenter();
- Blockly.Touch.clearTouchIdentifier();
- b.stopPropagation();
- b.preventDefault()
- });
- Blockly.bindEventWithChecks_(e, "mousedown", null, function (b) {
- a.markFocused();
- a.zoomCenter(1);
- Blockly.Touch.clearTouchIdentifier();
- b.stopPropagation();
- b.preventDefault()
- });
- Blockly.bindEventWithChecks_(d, "mousedown", null, function (b) {
- a.markFocused();
- a.zoomCenter(-1);
- Blockly.Touch.clearTouchIdentifier();
- b.stopPropagation();
- b.preventDefault()
- });
- return this.svgGroup_
- }
- ;
- Blockly.ZoomControls.prototype.init = function (a) {
- this.bottom_ = this.MARGIN_BOTTOM_ + a;
- return this.bottom_ + this.HEIGHT_
- }
- ;
- Blockly.ZoomControls.prototype.dispose = function () {
- this.svgGroup_ && (goog.dom.removeNode(this.svgGroup_),
- this.svgGroup_ = null);
- this.workspace_ = null
- }
- ;
- Blockly.ZoomControls.prototype.position = function () {
- var a = this.workspace_.getMetrics();
- a && (this.workspace_.RTL ? (this.left_ = this.MARGIN_SIDE_ + Blockly.Scrollbar.scrollbarThickness,
- a.toolboxPosition == Blockly.TOOLBOX_AT_LEFT && (this.left_ += a.flyoutWidth,
- this.workspace_.toolbox_ && (this.left_ += a.absoluteLeft))) : (this.left_ = a.viewWidth + a.absoluteLeft - this.WIDTH_ - this.MARGIN_SIDE_ - Blockly.Scrollbar.scrollbarThickness,
- a.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT && (this.left_ -= a.flyoutWidth)),
- this.top_ = a.viewHeight + a.absoluteTop - this.HEIGHT_ - this.bottom_,
- a.toolboxPosition == Blockly.TOOLBOX_AT_BOTTOM && (this.top_ -= a.flyoutHeight),
- this.svgGroup_.setAttribute("transform", "translate(" + this.left_ + "," + this.top_ + ")"))
- }
- ;
- Blockly.WorkspaceSvg = function (a) {
- Blockly.WorkspaceSvg.superClass_.constructor.call(this, a);
- this.getMetrics = a.getMetrics || Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_;
- this.setMetrics = a.setMetrics || Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_;
- Blockly.ConnectionDB.init(this);
- this.SOUNDS_ = Object.create(null);
- this.highlightedBlocks_ = []
- }
- ;
- goog.inherits(Blockly.WorkspaceSvg, Blockly.Workspace);
- Blockly.WorkspaceSvg.prototype.resizeHandlerWrapper_ = null;
- Blockly.WorkspaceSvg.prototype.rendered = !0;
- Blockly.WorkspaceSvg.prototype.isFlyout = !1;
- Blockly.WorkspaceSvg.prototype.isMutator = !1;
- Blockly.WorkspaceSvg.prototype.dragMode_ = Blockly.DRAG_NONE;
- Blockly.WorkspaceSvg.prototype.resizesEnabled_ = !0;
- Blockly.WorkspaceSvg.prototype.scrollX = 0;
- Blockly.WorkspaceSvg.prototype.scrollY = 0;
- Blockly.WorkspaceSvg.prototype.startScrollX = 0;
- Blockly.WorkspaceSvg.prototype.startScrollY = 0;
- Blockly.WorkspaceSvg.prototype.dragDeltaXY_ = null;
- Blockly.WorkspaceSvg.prototype.scale = 1;
- Blockly.WorkspaceSvg.prototype.trashcan = null;
- Blockly.WorkspaceSvg.prototype.scrollbar = null;
- Blockly.WorkspaceSvg.prototype.lastSound_ = null;
- Blockly.WorkspaceSvg.prototype.lastRecordedPageScroll_ = null;
- Blockly.WorkspaceSvg.prototype.inverseScreenCTM_ = null;
- Blockly.WorkspaceSvg.prototype.getInverseScreenCTM = function () {
- return this.inverseScreenCTM_
- }
- ;
- Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM = function () {
- var a = this.getParentSvg().getScreenCTM();
- a && (this.inverseScreenCTM_ = a.inverse())
- }
- ;
- Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper = function (a) {
- this.resizeHandlerWrapper_ = a
- }
- ;
- Blockly.WorkspaceSvg.prototype.createDom = function (a) {
- this.svgGroup_ = Blockly.createSvgElement("g", {
- "class": "blocklyWorkspace"
- }, null);
- a && (this.svgBackground_ = Blockly.createSvgElement("rect", {
- height: "100%",
- width: "100%",
- "class": a
- }, this.svgGroup_),
- "blocklyMainBackground" == a && (this.svgBackground_.style.fill = "url(#" + this.options.gridPattern.id + ")"));
- this.svgBlockCanvas_ = Blockly.createSvgElement("g", {
- "class": "blocklyBlockCanvas"
- }, this.svgGroup_, this);
- this.svgBubbleCanvas_ = Blockly.createSvgElement("g", {
- "class": "blocklyBubbleCanvas"
- }, this.svgGroup_, this);
- a = Blockly.Scrollbar.scrollbarThickness;
- this.options.hasTrashcan && (a = this.addTrashcan_(a));
- this.options.zoomOptions && this.options.zoomOptions.controls && (a = this.addZoomControls_(a));
- if (!this.isFlyout) {
- Blockly.bindEventWithChecks_(this.svgGroup_, "mousedown", this, this.onMouseDown_);
- var b = this;
- Blockly.bindEvent_(this.svgGroup_, "touchstart", null, function (a) {
- Blockly.longStart_(a, b)
- });
- this.options.zoomOptions && this.options.zoomOptions.wheel && Blockly.bindEventWithChecks_(this.svgGroup_, "wheel", this, this.onMouseWheel_)
- }
- this.options.hasCategories ? this.toolbox_ = new Blockly.Toolbox(this) : this.options.languageTree && this.addFlyout_();
- this.updateGridPattern_();
- this.recordDeleteAreas();
- return this.svgGroup_
- }
- ;
- Blockly.WorkspaceSvg.prototype.dispose = function () {
- this.rendered = !1;
- Blockly.WorkspaceSvg.superClass_.dispose.call(this);
- this.svgGroup_ && (goog.dom.removeNode(this.svgGroup_),
- this.svgGroup_ = null);
- this.svgBubbleCanvas_ = this.svgBlockCanvas_ = null;
- this.toolbox_ && (this.toolbox_.dispose(),
- this.toolbox_ = null);
- this.flyout_ && (this.flyout_.dispose(),
- this.flyout_ = null);
- this.trashcan && (this.trashcan.dispose(),
- this.trashcan = null);
- this.scrollbar && (this.scrollbar.dispose(),
- this.scrollbar = null);
- this.zoomControls_ && (this.zoomControls_.dispose(),
- this.zoomControls_ = null);
- this.options.parentWorkspace || goog.dom.removeNode(this.getParentSvg().parentNode);
- this.resizeHandlerWrapper_ && (Blockly.unbindEvent_(this.resizeHandlerWrapper_),
- this.resizeHandlerWrapper_ = null)
- }
- ;
- Blockly.WorkspaceSvg.prototype.newBlock = function (a, b) {
- return new Blockly.BlockSvg(this, a, b)
- }
- ;
- Blockly.WorkspaceSvg.prototype.addTrashcan_ = function (a) {
- this.trashcan = new Blockly.Trashcan(this);
- var b = this.trashcan.createDom();
- this.svgGroup_.insertBefore(b, this.svgBlockCanvas_);
- return this.trashcan.init(a)
- }
- ;
- Blockly.WorkspaceSvg.prototype.addZoomControls_ = function (a) {
- this.zoomControls_ = new Blockly.ZoomControls(this);
- var b = this.zoomControls_.createDom();
- this.svgGroup_.appendChild(b);
- return this.zoomControls_.init(a)
- }
- ;
- Blockly.WorkspaceSvg.prototype.addFlyout_ = function () {
- this.flyout_ = new Blockly.Flyout({
- disabledPatternId: this.options.disabledPatternId,
- parentWorkspace: this,
- RTL: this.RTL,
- oneBasedIndex: this.options.oneBasedIndex,
- horizontalLayout: this.horizontalLayout,
- toolboxPosition: this.options.toolboxPosition
- });
- this.flyout_.autoClose = !1;
- var a = this.flyout_.createDom();
- this.svgGroup_.insertBefore(a, this.svgBlockCanvas_)
- }
- ;
- Blockly.WorkspaceSvg.prototype.updateScreenCalculations_ = function () {
- this.updateInverseScreenCTM();
- this.recordDeleteAreas()
- }
- ;
- Blockly.WorkspaceSvg.prototype.resizeContents = function () {
- this.resizesEnabled_ && this.rendered && (this.scrollbar && this.scrollbar.resize(),
- this.updateInverseScreenCTM())
- }
- ;
- Blockly.WorkspaceSvg.prototype.resize = function () {
- this.toolbox_ && this.toolbox_.position();
- this.flyout_ && this.flyout_.position();
- this.trashcan && this.trashcan.position();
- this.zoomControls_ && this.zoomControls_.position();
- this.scrollbar && this.scrollbar.resize();
- this.updateScreenCalculations_()
- }
- ;
- Blockly.WorkspaceSvg.prototype.updateScreenCalculationsIfScrolled = function () {
- var a = goog.dom.getDocumentScroll();
- goog.math.Coordinate.equals(this.lastRecordedPageScroll_, a) || (this.lastRecordedPageScroll_ = a,
- this.updateScreenCalculations_())
- }
- ;
- Blockly.WorkspaceSvg.prototype.getCanvas = function () {
- return this.svgBlockCanvas_
- }
- ;
- Blockly.WorkspaceSvg.prototype.getBubbleCanvas = function () {
- return this.svgBubbleCanvas_
- }
- ;
- Blockly.WorkspaceSvg.prototype.getParentSvg = function () {
- if (this.cachedParentSvg_)
- return this.cachedParentSvg_;
- for (var a = this.svgGroup_; a;) {
- if ("svg" == a.tagName)
- return this.cachedParentSvg_ = a;
- a = a.parentNode
- }
- return null
- }
- ;
- Blockly.WorkspaceSvg.prototype.translate = function (a, b) {
- var c = "translate(" + a + "," + b + ") scale(" + this.scale + ")";
- this.svgBlockCanvas_.setAttribute("transform", c);
- this.svgBubbleCanvas_.setAttribute("transform", c)
- }
- ;
- Blockly.WorkspaceSvg.prototype.getWidth = function () {
- var a = this.getMetrics();
- return a ? a.viewWidth / this.scale : 0
- }
- ;
- Blockly.WorkspaceSvg.prototype.setVisible = function (a) {
- this.getParentSvg().style.display = a ? "block" : "none";
- this.toolbox_ && (this.toolbox_.HtmlDiv.style.display = a ? "block" : "none");
- a ? (this.render(),
- this.toolbox_ && this.toolbox_.position()) : Blockly.hideChaff(!0)
- }
- ;
- Blockly.WorkspaceSvg.prototype.render = function () {
- for (var a = this.getAllBlocks(), b = a.length - 1; 0 <= b; b--)
- a[b].render(!1)
- }
- ;
- Blockly.WorkspaceSvg.prototype.traceOn = function () {
- console.warn("Deprecated call to traceOn, delete this.")
- }
- ;
- Blockly.WorkspaceSvg.prototype.highlightBlock = function (a, b) {
- if (void 0 === b) {
- for (var c = 0, d; d = this.highlightedBlocks_[c]; c++)
- d.setHighlighted(!1);
- this.highlightedBlocks_.length = 0
- }
- if (d = a ? this.getBlockById(a) : null)
- (c = void 0 === b || b) ? -1 == this.highlightedBlocks_.indexOf(d) && this.highlightedBlocks_.push(d) : goog.array.remove(this.highlightedBlocks_, d),
- d.setHighlighted(c)
- }
- ;
- Blockly.WorkspaceSvg.prototype.paste = function (a) {
- if (this.rendered && !(a.getElementsByTagName("block").length >= this.remainingCapacity())) {
- Blockly.terminateDrag_();
- Blockly.Events.disable();
- try {
- var b = Blockly.Xml.domToBlock(a, this)
- , c = parseInt(a.getAttribute("x"), 10)
- , d = parseInt(a.getAttribute("y"), 10);
- if (!isNaN(c) && !isNaN(d)) {
- this.RTL && (c = -c);
- do {
- a = !1;
- for (var e = this.getAllBlocks(), f = 0, g; g = e[f]; f++) {
- var h = g.getRelativeToSurfaceXY();
- if (1 >= Math.abs(c - h.x) && 1 >= Math.abs(d - h.y)) {
- a = !0;
- break
- }
- }
- if (!a) {
- var k = b.getConnections_(!1);
- f = 0;
- for (var m; m = k[f]; f++)
- if (m.closest(Blockly.SNAP_RADIUS, new goog.math.Coordinate(c, d)).connection) {
- a = !0;
- break
- }
- }
- a && (c = this.RTL ? c - Blockly.SNAP_RADIUS : c + Blockly.SNAP_RADIUS,
- d += 2 * Blockly.SNAP_RADIUS)
- } while (a); b.moveBy(c, d)
- }
- } finally {
- Blockly.Events.enable()
- }
- Blockly.Events.isEnabled() && !b.isShadow() && Blockly.Events.fire(new Blockly.Events.Create(b));
- b.select()
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.createVariable = function (a) {
- Blockly.WorkspaceSvg.superClass_.createVariable.call(this, a);
- this.toolbox_ && this.toolbox_.flyout_ && !Blockly.Flyout.startFlyout_ && this.toolbox_.refreshSelection()
- }
- ;
- Blockly.WorkspaceSvg.prototype.recordDeleteAreas = function () {
- this.deleteAreaTrash_ = this.trashcan ? this.trashcan.getClientRect() : null;
- this.deleteAreaToolbox_ = this.flyout_ ? this.flyout_.getClientRect() : this.toolbox_ ? this.toolbox_.getClientRect() : null
- }
- ;
- Blockly.WorkspaceSvg.prototype.isDeleteArea = function (a) {
- a = new goog.math.Coordinate(a.clientX, a.clientY);
- if (this.deleteAreaTrash_) {
- if (this.deleteAreaTrash_.contains(a))
- return this.trashcan.setOpen_(!0),
- Blockly.Css.setCursor(Blockly.Css.Cursor.DELETE),
- !0;
- this.trashcan.setOpen_(!1)
- }
- if (this.deleteAreaToolbox_ && this.deleteAreaToolbox_.contains(a))
- return Blockly.Css.setCursor(Blockly.Css.Cursor.DELETE),
- !0;
- Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED);
- return !1
- }
- ;
- Blockly.WorkspaceSvg.prototype.onMouseDown_ = function (a) {
- this.markFocused();
- Blockly.isTargetInput_(a) ? Blockly.Touch.clearTouchIdentifier() : (Blockly.terminateDrag_(),
- Blockly.hideChaff(),
- a.target && a.target.nodeName && ("svg" == a.target.nodeName.toLowerCase() || a.target == this.svgBackground_) && Blockly.selected && !this.options.readOnly && Blockly.selected.unselect(),
- Blockly.isRightButton(a) ? (this.showContextMenu_(a),
- Blockly.Touch.clearTouchIdentifier()) : this.scrollbar ? (this.dragMode_ = Blockly.DRAG_BEGIN,
- this.startDragMouseX = a.clientX,
- this.startDragMouseY = a.clientY,
- this.startDragMetrics = this.getMetrics(),
- this.startScrollX = this.scrollX,
- this.startScrollY = this.scrollY,
- "mouseup" in Blockly.Touch.TOUCH_MAP && (Blockly.Touch.onTouchUpWrapper_ = Blockly.Touch.onTouchUpWrapper_ || [],
- Blockly.Touch.onTouchUpWrapper_ = Blockly.Touch.onTouchUpWrapper_.concat(Blockly.bindEventWithChecks_(document, "mouseup", null, Blockly.onMouseUp_))),
- Blockly.onMouseMoveWrapper_ = Blockly.onMouseMoveWrapper_ || [],
- Blockly.onMouseMoveWrapper_ = Blockly.onMouseMoveWrapper_.concat(Blockly.bindEventWithChecks_(document, "mousemove", null, Blockly.onMouseMove_))) : Blockly.Touch.clearTouchIdentifier(),
- a.stopPropagation(),
- a.preventDefault())
- }
- ;
- Blockly.WorkspaceSvg.prototype.startDrag = function (a, b) {
- var c = Blockly.mouseToSvg(a, this.getParentSvg(), this.getInverseScreenCTM());
- c.x /= this.scale;
- c.y /= this.scale;
- this.dragDeltaXY_ = goog.math.Coordinate.difference(b, c)
- }
- ;
- Blockly.WorkspaceSvg.prototype.moveDrag = function (a) {
- a = Blockly.mouseToSvg(a, this.getParentSvg(), this.getInverseScreenCTM());
- a.x /= this.scale;
- a.y /= this.scale;
- return goog.math.Coordinate.sum(this.dragDeltaXY_, a)
- }
- ;
- Blockly.WorkspaceSvg.prototype.isDragging = function () {
- return Blockly.dragMode_ == Blockly.DRAG_FREE || Blockly.Flyout.startFlyout_ && Blockly.Flyout.startFlyout_.dragMode_ == Blockly.DRAG_FREE || this.dragMode_ == Blockly.DRAG_FREE
- }
- ;
- Blockly.WorkspaceSvg.prototype.onMouseWheel_ = function (a) {
- Blockly.terminateDrag_();
- var b = 0 < a.deltaY ? -1 : 1
- , c = Blockly.mouseToSvg(a, this.getParentSvg(), this.getInverseScreenCTM());
- this.zoom(c.x, c.y, b);
- a.preventDefault()
- }
- ;
- Blockly.WorkspaceSvg.prototype.getBlocksBoundingBox = function () {
- var a = this.getTopBlocks(!1);
- if (!a.length)
- return {
- x: 0,
- y: 0,
- width: 0,
- height: 0
- };
- for (var b = a[0].getBoundingRectangle(), c = 1; c < a.length; c++) {
- var d = a[c].getBoundingRectangle();
- d.topLeft.x < b.topLeft.x && (b.topLeft.x = d.topLeft.x);
- d.bottomRight.x > b.bottomRight.x && (b.bottomRight.x = d.bottomRight.x);
- d.topLeft.y < b.topLeft.y && (b.topLeft.y = d.topLeft.y);
- d.bottomRight.y > b.bottomRight.y && (b.bottomRight.y = d.bottomRight.y)
- }
- return {
- x: b.topLeft.x,
- y: b.topLeft.y,
- width: b.bottomRight.x - b.topLeft.x,
- height: b.bottomRight.y - b.topLeft.y
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.cleanUp = function () {
- Blockly.Events.setGroup(!0);
- for (var a = this.getTopBlocks(!0), b = 0, c = 0, d; d = a[c]; c++) {
- var e = d.getRelativeToSurfaceXY();
- d.moveBy(-e.x, b - e.y);
- d.snapToGrid();
- b = d.getRelativeToSurfaceXY().y + d.getHeightWidth().height + Blockly.BlockSvg.MIN_BLOCK_Y
- }
- Blockly.Events.setGroup(!1);
- this.resizeContents()
- }
- ;
- Blockly.WorkspaceSvg.prototype.showContextMenu_ = function (a) {
- function b(a) {
- if (a.isDeletable())
- l = l.concat(a.getDescendants());
- else {
- a = a.getChildren();
- for (var c = 0; c < a.length; c++)
- b(a[c])
- }
- }
- function c() {
- Blockly.Events.setGroup(f);
- var a = l.shift();
- a && (a.workspace ? (a.dispose(!1, !0),
- setTimeout(c, 10)) : c());
- Blockly.Events.setGroup(!1)
- }
- if (!this.options.readOnly && !this.isFlyout) {
- var d = []
- , e = this.getTopBlocks(!0)
- , f = Blockly.genUid()
- , g = {};
- g.text = Blockly.Msg.UNDO;
- g.enabled = 0 < this.undoStack_.length;
- g.callback = this.undo.bind(this, !1);
- d.push(g);
- g = {};
- g.text = Blockly.Msg.REDO;
- g.enabled = 0 < this.redoStack_.length;
- g.callback = this.undo.bind(this, !0);
- d.push(g);
- this.scrollbar && (g = {},
- g.text = Blockly.Msg.CLEAN_UP,
- g.enabled = 1 < e.length,
- g.callback = this.cleanUp.bind(this),
- d.push(g));
- if (this.options.collapse) {
- for (var h = g = !1, k = 0; k < e.length; k++)
- for (var m = e[k]; m;)
- m.isCollapsed() ? g = !0 : h = !0,
- m = m.getNextBlock();
- var p = function (a) {
- for (var b = 0, c = 0; c < e.length; c++)
- for (var d = e[c]; d;)
- setTimeout(d.setCollapsed.bind(d, a), b),
- d = d.getNextBlock(),
- b += 10
- };
- h = {
- enabled: h
- };
- h.text = Blockly.Msg.COLLAPSE_ALL;
- h.callback = function () {
- p(!0)
- }
- ;
- d.push(h);
- g = {
- enabled: g
- };
- g.text = Blockly.Msg.EXPAND_ALL;
- g.callback = function () {
- p(!1)
- }
- ;
- d.push(g)
- }
- var l = [];
- for (k = 0; k < e.length; k++)
- b(e[k]);
- g = {
- text: 1 == l.length ? Blockly.Msg.DELETE_BLOCK : Blockly.Msg.DELETE_X_BLOCKS.replace("%1", String(l.length)),
- enabled: 0 < l.length,
- callback: function () {
- 2 > l.length ? c() : Blockly.confirm(Blockly.Msg.DELETE_ALL_BLOCKS.replace("%1", l.length), function (a) {
- a && c()
- })
- }
- };
- d.push(g);
- Blockly.ContextMenu.show(a, d, this.RTL)
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.loadAudio_ = function (a, b) {
- if (a.length) {
- try {
- var c = new window.Audio
- } catch (h) {
- return
- }
- for (var d, e = 0; e < a.length; e++) {
- var f = a[e]
- , g = f.match(/\.(\w+)$/);
- if (g && c.canPlayType("audio/" + g[1])) {
- d = new window.Audio(f);
- break
- }
- }
- d && d.play && (this.SOUNDS_[b] = d)
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.preloadAudio_ = function () {
- for (var a in this.SOUNDS_) {
- var b = this.SOUNDS_[a];
- b.volume = .01;
- b.play();
- b.pause();
- if (goog.userAgent.IPAD || goog.userAgent.IPHONE)
- break
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.playAudio = function (a, b) {
- var c = this.SOUNDS_[a];
- if (c) {
- var d = new Date;
- d - this.lastSound_ < Blockly.SOUND_LIMIT || (this.lastSound_ = d,
- c = goog.userAgent.DOCUMENT_MODE && 9 === goog.userAgent.DOCUMENT_MODE || goog.userAgent.IPAD || goog.userAgent.ANDROID ? c : c.cloneNode(),
- c.volume = void 0 === b ? 1 : b,
- c.play())
- } else
- this.options.parentWorkspace && this.options.parentWorkspace.playAudio(a, b)
- }
- ;
- Blockly.WorkspaceSvg.prototype.updateToolbox = function (a) {
- if (a = Blockly.Options.parseToolboxTree(a)) {
- if (!this.options.languageTree)
- throw "Existing toolbox is null. Can't create new toolbox.";
- if (a.getElementsByTagName("category").length) {
- if (!this.toolbox_)
- throw "Existing toolbox has no categories. Can't change mode.";
- this.options.languageTree = a;
- this.toolbox_.populate_(a);
- this.toolbox_.addColour_()
- } else {
- if (!this.flyout_)
- throw "Existing toolbox has categories. Can't change mode.";
- this.options.languageTree = a;
- this.flyout_.show(a.childNodes)
- }
- } else if (this.options.languageTree)
- throw "Can't nullify an existing toolbox.";
- }
- ;
- Blockly.WorkspaceSvg.prototype.markFocused = function () {
- this.options.parentWorkspace ? this.options.parentWorkspace.markFocused() : Blockly.mainWorkspace = this
- }
- ;
- Blockly.WorkspaceSvg.prototype.zoom = function (a, b, c) {
- var d = this.options.zoomOptions.scaleSpeed
- , e = this.getMetrics()
- , f = this.getParentSvg().createSVGPoint();
- f.x = a;
- f.y = b;
- f = f.matrixTransform(this.getCanvas().getCTM().inverse());
- a = f.x;
- b = f.y;
- f = this.getCanvas();
- d = 1 == c ? d : 1 / d;
- c = this.scale * d;
- c > this.options.zoomOptions.maxScale ? d = this.options.zoomOptions.maxScale / this.scale : c < this.options.zoomOptions.minScale && (d = this.options.zoomOptions.minScale / this.scale);
- this.scale != c && (this.scrollbar && (a = f.getCTM().translate(a * (1 - d), b * (1 - d)).scale(d),
- this.scrollX = a.e - e.absoluteLeft,
- this.scrollY = a.f - e.absoluteTop),
- this.setScale(c))
- }
- ;
- Blockly.WorkspaceSvg.prototype.zoomCenter = function (a) {
- var b = this.getMetrics();
- this.zoom(b.viewWidth / 2, b.viewHeight / 2, a)
- }
- ;
- Blockly.WorkspaceSvg.prototype.zoomToFit = function () {
- var a = this.getMetrics()
- , b = this.getBlocksBoundingBox()
- , c = b.width;
- b = b.height;
- if (c) {
- var d = a.viewWidth
- , e = a.viewHeight;
- this.flyout_ && (d -= this.flyout_.width_);
- this.scrollbar || (c += a.contentLeft,
- b += a.contentTop);
- this.setScale(Math.min(d / c, e / b));
- this.scrollCenter()
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.scrollCenter = function () {
- if (this.scrollbar) {
- var a = this.getMetrics()
- , b = (a.contentWidth - a.viewWidth) / 2;
- this.flyout_ && (b -= this.flyout_.width_ / 2);
- this.scrollbar.set(b, (a.contentHeight - a.viewHeight) / 2)
- }
- }
- ;
- Blockly.WorkspaceSvg.prototype.setScale = function (a) {
- this.options.zoomOptions.maxScale && a > this.options.zoomOptions.maxScale ? a = this.options.zoomOptions.maxScale : this.options.zoomOptions.minScale && a < this.options.zoomOptions.minScale && (a = this.options.zoomOptions.minScale);
- this.scale = a;
- this.updateGridPattern_();
- this.scrollbar ? this.scrollbar.resize() : this.translate(this.scrollX, this.scrollY);
- Blockly.hideChaff(!1);
- this.flyout_ && this.flyout_.reflow()
- }
- ;
- Blockly.WorkspaceSvg.prototype.updateGridPattern_ = function () {
- if (this.options.gridPattern) {
- var a = this.options.gridOptions.spacing * this.scale || 100;
- this.options.gridPattern.setAttribute("width", a);
- this.options.gridPattern.setAttribute("height", a);
- a = Math.floor(this.options.gridOptions.spacing / 2) + .5;
- var b = a - this.options.gridOptions.length / 2
- , c = a + this.options.gridOptions.length / 2
- , d = this.options.gridPattern.firstChild
- , e = d && d.nextSibling;
- a *= this.scale;
- b *= this.scale;
- c *= this.scale;
- d && (d.setAttribute("stroke-width", this.scale),
- d.setAttribute("x1", b),
- d.setAttribute("y1", a),
- d.setAttribute("x2", c),
- d.setAttribute("y2", a));
- e && (e.setAttribute("stroke-width", this.scale),
- e.setAttribute("x1", a),
- e.setAttribute("y1", b),
- e.setAttribute("x2", a),
- e.setAttribute("y2", c))
- }
- }
- ;
- Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_ = function () {
- var a = Blockly.svgSize(this.getParentSvg());
- if (this.toolbox_)
- if (this.toolboxPosition == Blockly.TOOLBOX_AT_TOP || this.toolboxPosition == Blockly.TOOLBOX_AT_BOTTOM)
- a.height -= this.toolbox_.getHeight();
- else if (this.toolboxPosition == Blockly.TOOLBOX_AT_LEFT || this.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT)
- a.width -= this.toolbox_.getWidth();
- var b = Blockly.Flyout.prototype.CORNER_RADIUS - 1
- , c = a.width - b
- , d = a.height - b
- , e = this.getBlocksBoundingBox()
- , f = e.width * this.scale
- , g = e.height * this.scale
- , h = e.x * this.scale
- , k = e.y * this.scale;
- this.scrollbar ? (b = Math.min(h - c / 2, h + f - c),
- c = Math.max(h + f + c / 2, h + c),
- f = Math.min(k - d / 2, k + g - d),
- d = Math.max(k + g + d / 2, k + d)) : (b = e.x,
- c = b + e.width,
- f = e.y,
- d = f + e.height);
- e = 0;
- this.toolbox_ && this.toolboxPosition == Blockly.TOOLBOX_AT_LEFT && (e = this.toolbox_.getWidth());
- g = 0;
- this.toolbox_ && this.toolboxPosition == Blockly.TOOLBOX_AT_TOP && (g = this.toolbox_.getHeight());
- return {
- viewHeight: a.height,
- viewWidth: a.width,
- contentHeight: d - f,
- contentWidth: c - b,
- viewTop: -this.scrollY,
- viewLeft: -this.scrollX,
- contentTop: f,
- contentLeft: b,
- absoluteTop: g,
- absoluteLeft: e,
- toolboxWidth: this.toolbox_ ? this.toolbox_.getWidth() : 0,
- toolboxHeight: this.toolbox_ ? this.toolbox_.getHeight() : 0,
- flyoutWidth: this.flyout_ ? this.flyout_.getWidth() : 0,
- flyoutHeight: this.flyout_ ? this.flyout_.getHeight() : 0,
- toolboxPosition: this.toolboxPosition
- }
- }
- ;
- Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_ = function (a) {
- if (!this.scrollbar)
- throw "Attempt to set top level workspace scroll without scrollbars.";
- var b = this.getMetrics();
- goog.isNumber(a.x) && (this.scrollX = -b.contentWidth * a.x - b.contentLeft);
- goog.isNumber(a.y) && (this.scrollY = -b.contentHeight * a.y - b.contentTop);
- a = this.scrollX + b.absoluteLeft;
- b = this.scrollY + b.absoluteTop;
- this.translate(a, b);
- this.options.gridPattern && (this.options.gridPattern.setAttribute("x", a),
- this.options.gridPattern.setAttribute("y", b),
- goog.userAgent.IE && this.updateGridPattern_())
- }
- ;
- Blockly.WorkspaceSvg.prototype.setResizesEnabled = function (a) {
- var b = !this.resizesEnabled_ && a;
- this.resizesEnabled_ = a;
- b && this.resizeContents()
- }
- ;
- Blockly.WorkspaceSvg.prototype.clear = function () {
- this.setResizesEnabled(!1);
- Blockly.WorkspaceSvg.superClass_.clear.call(this);
- this.setResizesEnabled(!0)
- }
- ;
- Blockly.WorkspaceSvg.prototype.setVisible = Blockly.WorkspaceSvg.prototype.setVisible;
- Blockly.Mutator = function (a) {
- Blockly.Mutator.superClass_.constructor.call(this, null);
- this.quarkNames_ = a
- }
- ;
- goog.inherits(Blockly.Mutator, Blockly.Icon);
- Blockly.Mutator.prototype.workspaceWidth_ = 0;
- Blockly.Mutator.prototype.workspaceHeight_ = 0;
- Blockly.Mutator.prototype.drawIcon_ = function (a) {
- Blockly.createSvgElement("rect", {
- "class": "blocklyIconShape",
- rx: "4",
- ry: "4",
- height: "16",
- width: "16"
- }, a);
- Blockly.createSvgElement("path", {
- "class": "blocklyIconSymbol",
- d: "m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"
- }, a);
- Blockly.createSvgElement("circle", {
- "class": "blocklyIconShape",
- r: "2.7",
- cx: "8",
- cy: "8"
- }, a)
- }
- ;
- Blockly.Mutator.prototype.iconClick_ = function (a) {
- this.block_.isEditable() && Blockly.Icon.prototype.iconClick_.call(this, a)
- }
- ;
- Blockly.Mutator.prototype.createEditor_ = function () {
- this.svgDialog_ = Blockly.createSvgElement("svg", {
- x: Blockly.Bubble.BORDER_WIDTH,
- y: Blockly.Bubble.BORDER_WIDTH
- }, null);
- if (this.quarkNames_.length)
- for (var a = goog.dom.createDom("xml"), b = 0, c; c = this.quarkNames_[b]; b++)
- a.appendChild(goog.dom.createDom("block", {
- type: c
- }));
- else
- a = null;
- a = {
- languageTree: a,
- parentWorkspace: this.block_.workspace,
- pathToMedia: this.block_.workspace.options.pathToMedia,
- RTL: this.block_.RTL,
- toolboxPosition: this.block_.RTL ? Blockly.TOOLBOX_AT_RIGHT : Blockly.TOOLBOX_AT_LEFT,
- horizontalLayout: !1,
- getMetrics: this.getFlyoutMetrics_.bind(this),
- setMetrics: null
- };
- this.workspace_ = new Blockly.WorkspaceSvg(a);
- this.workspace_.isMutator = !0;
- this.svgDialog_.appendChild(this.workspace_.createDom("blocklyMutatorBackground"));
- return this.svgDialog_
- }
- ;
- Blockly.Mutator.prototype.updateEditable = function () {
- this.block_.isInFlyout || (this.block_.isEditable() ? this.iconGroup_ && Blockly.removeClass_(this.iconGroup_, "blocklyIconGroupReadonly") : (this.setVisible(!1),
- this.iconGroup_ && Blockly.addClass_(this.iconGroup_, "blocklyIconGroupReadonly")));
- Blockly.Icon.prototype.updateEditable.call(this)
- }
- ;
- Blockly.Mutator.prototype.resizeBubble_ = function () {
- var a = 2 * Blockly.Bubble.BORDER_WIDTH
- , b = this.workspace_.getCanvas().getBBox();
- var c = this.block_.RTL ? -b.x : b.width + b.x;
- b = b.height + 3 * a;
- if (this.workspace_.flyout_) {
- var d = this.workspace_.flyout_.getMetrics_();
- b = Math.max(b, d.contentHeight + 20)
- }
- c += 3 * a;
- if (Math.abs(this.workspaceWidth_ - c) > a || Math.abs(this.workspaceHeight_ - b) > a)
- this.workspaceWidth_ = c,
- this.workspaceHeight_ = b,
- this.bubble_.setBubbleSize(c + a, b + a),
- this.svgDialog_.setAttribute("width", this.workspaceWidth_),
- this.svgDialog_.setAttribute("height", this.workspaceHeight_);
- this.block_.RTL && (a = "translate(" + this.workspaceWidth_ + ",0)",
- this.workspace_.getCanvas().setAttribute("transform", a));
- this.workspace_.resize()
- }
- ;
- Blockly.Mutator.prototype.setVisible = function (a) {
- if (a != this.isVisible())
- if (Blockly.Events.fire(new Blockly.Events.Ui(this.block_, "mutatorOpen", !a, a)),
- a) {
- this.bubble_ = new Blockly.Bubble(this.block_.workspace, this.createEditor_(), this.block_.svgPath_, this.iconXY_, null, null);
- if (a = this.workspace_.options.languageTree)
- this.workspace_.flyout_.init(this.workspace_),
- this.workspace_.flyout_.show(a.childNodes);
- this.rootBlock_ = this.block_.decompose(this.workspace_);
- a = this.rootBlock_.getDescendants();
- for (var b = 0, c; c = a[b]; b++)
- c.render();
- this.rootBlock_.setMovable(!1);
- this.rootBlock_.setDeletable(!1);
- this.workspace_.flyout_ ? (a = 2 * this.workspace_.flyout_.CORNER_RADIUS,
- b = this.workspace_.flyout_.width_ + a) : b = a = 16;
- this.block_.RTL && (b = -b);
- this.rootBlock_.moveBy(b, a);
- if (this.block_.saveConnections) {
- var d = this;
- this.block_.saveConnections(this.rootBlock_);
- this.sourceListener_ = function () {
- d.block_.saveConnections(d.rootBlock_)
- }
- ;
- this.block_.workspace.addChangeListener(this.sourceListener_)
- }
- this.resizeBubble_();
- this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));
- this.updateColour()
- } else
- this.svgDialog_ = null,
- this.workspace_.dispose(),
- this.rootBlock_ = this.workspace_ = null,
- this.bubble_.dispose(),
- this.bubble_ = null,
- this.workspaceHeight_ = this.workspaceWidth_ = 0,
- this.sourceListener_ && (this.block_.workspace.removeChangeListener(this.sourceListener_),
- this.sourceListener_ = null)
- }
- ;
- Blockly.Mutator.prototype.workspaceChanged_ = function () {
- if (Blockly.dragMode_ == Blockly.DRAG_NONE)
- for (var a = this.workspace_.getTopBlocks(!1), b = 0, c; c = a[b]; b++) {
- var d = c.getRelativeToSurfaceXY()
- , e = c.getHeightWidth();
- 20 > d.y + e.height && c.moveBy(0, 20 - e.height - d.y)
- }
- if (this.rootBlock_.workspace == this.workspace_) {
- Blockly.Events.setGroup(!0);
- c = this.block_;
- a = (a = c.mutationToDom()) && Blockly.Xml.domToText(a);
- b = c.rendered;
- c.rendered = !1;
- c.compose(this.rootBlock_);
- c.rendered = b;
- c.initSvg();
- b = (b = c.mutationToDom()) && Blockly.Xml.domToText(b);
- if (a != b) {
- Blockly.Events.fire(new Blockly.Events.Change(c, "mutation", null, a, b));
- var f = Blockly.Events.getGroup();
- setTimeout(function () {
- Blockly.Events.setGroup(f);
- c.bumpNeighbours_();
- Blockly.Events.setGroup(!1)
- }, Blockly.BUMP_DELAY)
- }
- c.rendered && c.render();
- this.resizeBubble_();
- Blockly.Events.setGroup(!1)
- }
- }
- ;
- Blockly.Mutator.prototype.getFlyoutMetrics_ = function () {
- return {
- viewHeight: this.workspaceHeight_,
- viewWidth: this.workspaceWidth_,
- absoluteTop: 0,
- absoluteLeft: 0
- }
- }
- ;
- Blockly.Mutator.prototype.dispose = function () {
- this.block_.mutator = null;
- Blockly.Icon.prototype.dispose.call(this)
- }
- ;
- Blockly.Mutator.reconnect = function (a, b, c) {
- if (!a || !a.getSourceBlock().workspace)
- return !1;
- c = b.getInput(c).connection;
- var d = a.targetBlock();
- return d && d != b || c.targetConnection == a ? !1 : (c.isConnected() && c.disconnect(),
- c.connect(a),
- !0)
- }
- ;
- goog.global.Blockly || (goog.global.Blockly = {});
- goog.global.Blockly.Mutator || (goog.global.Blockly.Mutator = {});
- goog.global.Blockly.Mutator.reconnect = Blockly.Mutator.reconnect;
- Blockly.Warning = function (a) {
- Blockly.Warning.superClass_.constructor.call(this, a);
- this.createIcon();
- this.text_ = {}
- }
- ;
- goog.inherits(Blockly.Warning, Blockly.Icon);
- Blockly.Warning.prototype.collapseHidden = !1;
- Blockly.Warning.prototype.drawIcon_ = function (a) {
- Blockly.createSvgElement("path", {
- "class": "blocklyIconShape",
- d: "M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"
- }, a);
- Blockly.createSvgElement("path", {
- "class": "blocklyIconSymbol",
- d: "m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"
- }, a);
- Blockly.createSvgElement("rect", {
- "class": "blocklyIconSymbol",
- x: "7",
- y: "11",
- height: "2",
- width: "2"
- }, a)
- }
- ;
- Blockly.Warning.textToDom_ = function (a) {
- var b = Blockly.createSvgElement("text", {
- "class": "blocklyText blocklyBubbleText",
- y: Blockly.Bubble.BORDER_WIDTH
- }, null);
- a = a.split("\n");
- for (var c = 0; c < a.length; c++) {
- var d = Blockly.createSvgElement("tspan", {
- dy: "1em",
- x: Blockly.Bubble.BORDER_WIDTH
- }, b)
- , e = document.createTextNode(a[c]);
- d.appendChild(e)
- }
- return b
- }
- ;
- Blockly.Warning.prototype.setVisible = function (a) {
- if (a != this.isVisible())
- if (Blockly.Events.fire(new Blockly.Events.Ui(this.block_, "warningOpen", !a, a)),
- a) {
- a = Blockly.Warning.textToDom_(this.getText());
- this.bubble_ = new Blockly.Bubble(this.block_.workspace, a, this.block_.svgPath_, this.iconXY_, null, null);
- if (this.block_.RTL)
- for (var b = a.getBBox().width, c = 0, d; d = a.childNodes[c]; c++)
- d.setAttribute("text-anchor", "end"),
- d.setAttribute("x", b + Blockly.Bubble.BORDER_WIDTH);
- this.updateColour();
- a = this.bubble_.getBubbleSize();
- this.bubble_.setBubbleSize(a.width, a.height)
- } else
- this.bubble_.dispose(),
- this.body_ = this.bubble_ = null
- }
- ;
- Blockly.Warning.prototype.bodyFocus_ = function (a) {
- this.bubble_.promote_()
- }
- ;
- Blockly.Warning.prototype.setText = function (a, b) {
- this.text_[b] != a && (a ? this.text_[b] = a : delete this.text_[b],
- this.isVisible() && (this.setVisible(!1),
- this.setVisible(!0)))
- }
- ;
- Blockly.Warning.prototype.getText = function () {
- var a = [], b;
- for (b in this.text_)
- a.push(this.text_[b]);
- return a.join("\n")
- }
- ;
- Blockly.Warning.prototype.dispose = function () {
- this.block_.warning = null;
- Blockly.Icon.prototype.dispose.call(this)
- }
- ;
- Blockly.Block = function (a, b, c) {
- this.id = c && !a.getBlockById(c) ? c : Blockly.genUid();
- a.blockDB_[this.id] = this;
- this.previousConnection = this.nextConnection = this.outputConnection = null;
- this.inputList = [];
- this.inputsInline = void 0;
- this.disabled = !1;
- this.tooltip = "";
- this.contextMenu = !0;
- this.parentBlock_ = null;
- this.childBlocks_ = [];
- this.editable_ = this.movable_ = this.deletable_ = !0;
- this.collapsed_ = this.isShadow_ = !1;
- this.comment = null;
- this.xy_ = new goog.math.Coordinate(0, 0);
- this.workspace = a;
- this.isInFlyout = a.isFlyout;
- this.isInMutator = a.isMutator;
- this.RTL = a.RTL;
- b && (this.type = b,
- c = Blockly.Blocks[b],
- goog.asserts.assertObject(c, 'Error: "%s" is an unknown language block.', b),
- goog.mixin(this, c));
- a.addTopBlock(this);
- goog.isFunction(this.init) && this.init();
- this.inputsInlineDefault = this.inputsInline;
- Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Create(this));
- goog.isFunction(this.onchange) && (this.onchangeWrapper_ = this.onchange.bind(this),
- this.workspace.addChangeListener(this.onchangeWrapper_))
- }
- ;
- Blockly.Block.obtain = function (a, b) {
- console.warn("Deprecated call to Blockly.Block.obtain, use workspace.newBlock instead.");
- return a.newBlock(b)
- }
- ;
- Blockly.Block.prototype.data = null;
- Blockly.Block.prototype.colour_ = "#000000";
- Blockly.Block.prototype.dispose = function (a) {
- if (this.workspace) {
- this.onchangeWrapper_ && this.workspace.removeChangeListener(this.onchangeWrapper_);
- this.unplug(a);
- Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Delete(this));
- Blockly.Events.disable();
- try {
- this.workspace && (this.workspace.removeTopBlock(this),
- delete this.workspace.blockDB_[this.id],
- this.workspace = null);
- for (var b = this.childBlocks_.length - 1; 0 <= b; b--)
- this.childBlocks_[b].dispose(!1);
- b = 0;
- for (var c; c = this.inputList[b]; b++)
- c.dispose();
- this.inputList.length = 0;
- var d = this.getConnections_(!0);
- for (b = 0; b < d.length; b++) {
- var e = d[b];
- e.isConnected() && e.disconnect();
- d[b].dispose()
- }
- } finally {
- Blockly.Events.enable()
- }
- }
- }
- ;
- Blockly.Block.prototype.unplug = function (a) {
- if (this.outputConnection)
- this.outputConnection.isConnected() && this.outputConnection.disconnect();
- else if (this.previousConnection) {
- var b = null;
- this.previousConnection.isConnected() && (b = this.previousConnection.targetConnection,
- this.previousConnection.disconnect());
- var c = this.getNextBlock();
- a && c && (a = this.nextConnection.targetConnection,
- a.disconnect(),
- b && b.checkType_(a) && b.connect(a))
- }
- }
- ;
- Blockly.Block.prototype.getConnections_ = function () {
- var a = [];
- this.outputConnection && a.push(this.outputConnection);
- this.previousConnection && a.push(this.previousConnection);
- this.nextConnection && a.push(this.nextConnection);
- for (var b = 0, c; c = this.inputList[b]; b++)
- c.connection && a.push(c.connection);
- return a
- }
- ;
- Blockly.Block.prototype.lastConnectionInStack_ = function () {
- for (var a = this.nextConnection; a;) {
- var b = a.targetBlock();
- if (!b)
- return a;
- a = b.nextConnection
- }
- return null
- }
- ;
- Blockly.Block.prototype.bumpNeighbours_ = function () {
- if (this.workspace && Blockly.dragMode_ == Blockly.DRAG_NONE) {
- var a = this.getRootBlock();
- if (!a.isInFlyout)
- for (var b = this.getConnections_(!1), c = 0, d; d = b[c]; c++) {
- d.isConnected() && d.isSuperior() && d.targetBlock().bumpNeighbours_();
- for (var e = d.neighbours_(Blockly.SNAP_RADIUS), f = 0, g; g = e[f]; f++)
- d.isConnected() && g.isConnected() || g.getSourceBlock().getRootBlock() != a && (d.isSuperior() ? g.bumpAwayFrom_(d) : d.bumpAwayFrom_(g))
- }
- }
- }
- ;
- Blockly.Block.prototype.getParent = function () {
- return this.parentBlock_
- }
- ;
- Blockly.Block.prototype.getInputWithBlock = function (a) {
- for (var b = 0, c; c = this.inputList[b]; b++)
- if (c.connection && c.connection.targetBlock() == a)
- return c;
- return null
- }
- ;
- Blockly.Block.prototype.getSurroundParent = function () {
- var a = this;
- do {
- var b = a;
- a = a.getParent();
- if (!a)
- return null
- } while (a.getNextBlock() == b); return a
- }
- ;
- Blockly.Block.prototype.getNextBlock = function () {
- return this.nextConnection && this.nextConnection.targetBlock()
- }
- ;
- Blockly.Block.prototype.getRootBlock = function () {
- var a = this;
- do {
- var b = a;
- a = b.parentBlock_
- } while (a); return b
- }
- ;
- Blockly.Block.prototype.getChildren = function () {
- return this.childBlocks_
- }
- ;
- Blockly.Block.prototype.setParent = function (a) {
- if (a != this.parentBlock_) {
- if (this.parentBlock_) {
- goog.array.remove(this.parentBlock_.childBlocks_, this);
- if (this.previousConnection && this.previousConnection.isConnected())
- throw "Still connected to previous block.";
- if (this.outputConnection && this.outputConnection.isConnected())
- throw "Still connected to parent block.";
- this.parentBlock_ = null
- } else
- this.workspace.removeTopBlock(this);
- (this.parentBlock_ = a) ? a.childBlocks_.push(this) : this.workspace.addTopBlock(this)
- }
- }
- ;
- Blockly.Block.prototype.getDescendants = function () {
- for (var a = [this], b, c = 0; b = this.childBlocks_[c]; c++)
- a.push.apply(a, b.getDescendants());
- return a
- }
- ;
- Blockly.Block.prototype.isDeletable = function () {
- return this.deletable_ && !this.isShadow_ && !(this.workspace && this.workspace.options.readOnly)
- }
- ;
- Blockly.Block.prototype.setDeletable = function (a) {
- this.deletable_ = a
- }
- ;
- Blockly.Block.prototype.isMovable = function () {
- return this.movable_ && !this.isShadow_ && !(this.workspace && this.workspace.options.readOnly)
- }
- ;
- Blockly.Block.prototype.setMovable = function (a) {
- this.movable_ = a
- }
- ;
- Blockly.Block.prototype.isShadow = function () {
- return this.isShadow_
- }
- ;
- Blockly.Block.prototype.setShadow = function (a) {
- this.isShadow_ = a
- }
- ;
- Blockly.Block.prototype.isEditable = function () {
- return this.editable_ && !(this.workspace && this.workspace.options.readOnly)
- }
- ;
- Blockly.Block.prototype.setEditable = function (a) {
- this.editable_ = a;
- a = 0;
- for (var b; b = this.inputList[a]; a++)
- for (var c = 0, d; d = b.fieldRow[c]; c++)
- d.updateEditable()
- }
- ;
- Blockly.Block.prototype.setConnectionsHidden = function (a) {
- if (!a && this.isCollapsed()) {
- if (this.outputConnection && this.outputConnection.setHidden(a),
- this.previousConnection && this.previousConnection.setHidden(a),
- this.nextConnection) {
- this.nextConnection.setHidden(a);
- var b = this.nextConnection.targetBlock();
- b && b.setConnectionsHidden(a)
- }
- } else
- for (var c = this.getConnections_(!0), d = 0; b = c[d]; d++)
- b.setHidden(a),
- b.isSuperior() && (b = b.targetBlock()) && b.setConnectionsHidden(a)
- }
- ;
- Blockly.Block.prototype.setHelpUrl = function (a) {
- this.helpUrl = a
- }
- ;
- Blockly.Block.prototype.setTooltip = function (a) {
- this.tooltip = a
- }
- ;
- Blockly.Block.prototype.getColour = function () {
- return this.colour_
- }
- ;
- Blockly.Block.prototype.setColour = function (a) {
- var b = parseFloat(a);
- if (isNaN(b))
- if (goog.isString(a) && a.match(/^#[0-9a-fA-F]{6}$/))
- this.colour_ = a;
- else
- throw "Invalid colour: " + a;
- else
- this.colour_ = Blockly.hueToRgb(b)
- }
- ;
- Blockly.Block.prototype.getField = function (a) {
- for (var b = 0, c; c = this.inputList[b]; b++)
- for (var d = 0, e; e = c.fieldRow[d]; d++)
- if (e.name === a)
- return e;
- return null
- }
- ;
- Blockly.Block.prototype.getVars = function () {
- for (var a = [], b = 0, c; c = this.inputList[b]; b++)
- for (var d = 0, e; e = c.fieldRow[d]; d++)
- e instanceof Blockly.FieldVariable && a.push(e.getValue());
- return a
- }
- ;
- Blockly.Block.prototype.renameVar = function (a, b) {
- for (var c = 0, d; d = this.inputList[c]; c++)
- for (var e = 0, f; f = d.fieldRow[e]; e++)
- f instanceof Blockly.FieldVariable && Blockly.Names.equals(a, f.getValue()) && f.setValue(b)
- }
- ;
- Blockly.Block.prototype.getFieldValue = function (a) {
- return (a = this.getField(a)) ? a.getValue() : null
- }
- ;
- Blockly.Block.prototype.getTitleValue = function (a) {
- console.warn("Deprecated call to getTitleValue, use getFieldValue instead.");
- return this.getFieldValue(a)
- }
- ;
- Blockly.Block.prototype.setFieldValue = function (a, b) {
- var c = this.getField(b);
- goog.asserts.assertObject(c, 'Field "%s" not found.', b);
- c.setValue(a)
- }
- ;
- Blockly.Block.prototype.setTitleValue = function (a, b) {
- console.warn("Deprecated call to setTitleValue, use setFieldValue instead.");
- this.setFieldValue(a, b)
- }
- ;
- Blockly.Block.prototype.setPreviousStatement = function (a, b) {
- a ? (void 0 === b && (b = null),
- this.previousConnection || (goog.asserts.assert(!this.outputConnection, "Remove output connection prior to adding previous connection."),
- this.previousConnection = this.makeConnection_(Blockly.PREVIOUS_STATEMENT)),
- this.previousConnection.setCheck(b)) : this.previousConnection && (goog.asserts.assert(!this.previousConnection.isConnected(), "Must disconnect previous statement before removing connection."),
- this.previousConnection.dispose(),
- this.previousConnection = null)
- }
- ;
- Blockly.Block.prototype.setNextStatement = function (a, b) {
- a ? (void 0 === b && (b = null),
- this.nextConnection || (this.nextConnection = this.makeConnection_(Blockly.NEXT_STATEMENT)),
- this.nextConnection.setCheck(b)) : this.nextConnection && (goog.asserts.assert(!this.nextConnection.isConnected(), "Must disconnect next statement before removing connection."),
- this.nextConnection.dispose(),
- this.nextConnection = null)
- }
- ;
- Blockly.Block.prototype.setOutput = function (a, b) {
- a ? (void 0 === b && (b = null),
- this.outputConnection || (goog.asserts.assert(!this.previousConnection, "Remove previous connection prior to adding output connection."),
- this.outputConnection = this.makeConnection_(Blockly.OUTPUT_VALUE)),
- this.outputConnection.setCheck(b)) : this.outputConnection && (goog.asserts.assert(!this.outputConnection.isConnected(), "Must disconnect output value before removing connection."),
- this.outputConnection.dispose(),
- this.outputConnection = null)
- }
- ;
- Blockly.Block.prototype.setInputsInline = function (a) {
- this.inputsInline != a && (Blockly.Events.fire(new Blockly.Events.Change(this, "inline", null, this.inputsInline, a)),
- this.inputsInline = a)
- }
- ;
- Blockly.Block.prototype.getInputsInline = function () {
- if (void 0 != this.inputsInline)
- return this.inputsInline;
- for (var a = 1; a < this.inputList.length; a++)
- if (this.inputList[a - 1].type == Blockly.DUMMY_INPUT && this.inputList[a].type == Blockly.DUMMY_INPUT)
- return !1;
- for (a = 1; a < this.inputList.length; a++)
- if (this.inputList[a - 1].type == Blockly.INPUT_VALUE && this.inputList[a].type == Blockly.DUMMY_INPUT)
- return !0;
- return !1
- }
- ;
- Blockly.Block.prototype.setDisabled = function (a) {
- this.disabled != a && (Blockly.Events.fire(new Blockly.Events.Change(this, "disabled", null, this.disabled, a)),
- this.disabled = a)
- }
- ;
- Blockly.Block.prototype.getInheritedDisabled = function () {
- for (var a = this; ;) {
- a = a.getSurroundParent();
- if (!a)
- return !1;
- if (a.disabled)
- return !0
- }
- }
- ;
- Blockly.Block.prototype.isCollapsed = function () {
- return this.collapsed_
- }
- ;
- Blockly.Block.prototype.setCollapsed = function (a) {
- this.collapsed_ != a && (Blockly.Events.fire(new Blockly.Events.Change(this, "collapsed", null, this.collapsed_, a)),
- this.collapsed_ = a)
- }
- ;
- Blockly.Block.prototype.toString = function (a, b) {
- var c = []
- , d = b || "?";
- if (this.collapsed_)
- c.push(this.getInput("_TEMP_COLLAPSED_INPUT").fieldRow[0].text_);
- else
- for (var e = 0, f; f = this.inputList[e]; e++) {
- for (var g = 0, h; h = f.fieldRow[g]; g++)
- c.push(h.getText());
- f.connection && ((f = f.connection.targetBlock()) ? c.push(f.toString(void 0, b)) : c.push(d))
- }
- c = goog.string.trim(c.join(" ")) || "???";
- a && (c = goog.string.truncate(c, a));
- return c
- }
- ;
- Blockly.Block.prototype.appendValueInput = function (a) {
- return this.appendInput_(Blockly.INPUT_VALUE, a)
- }
- ;
- Blockly.Block.prototype.appendStatementInput = function (a) {
- return this.appendInput_(Blockly.NEXT_STATEMENT, a)
- }
- ;
- Blockly.Block.prototype.appendDummyInput = function (a) {
- return this.appendInput_(Blockly.DUMMY_INPUT, a || "")
- }
- ;
- Blockly.Block.prototype.jsonInit = function (a) {
- goog.asserts.assert(void 0 == a.output || void 0 == a.previousStatement, "Must not have both an output and a previousStatement.");
- void 0 !== a.colour && this.setColour(a.colour);
- for (var b = 0; void 0 !== a["message" + b];)
- this.interpolate_(a["message" + b], a["args" + b] || [], a["lastDummyAlign" + b]),
- b++;
- void 0 !== a.inputsInline && this.setInputsInline(a.inputsInline);
- void 0 !== a.output && this.setOutput(!0, a.output);
- void 0 !== a.previousStatement && this.setPreviousStatement(!0, a.previousStatement);
- void 0 !== a.nextStatement && this.setNextStatement(!0, a.nextStatement);
- void 0 !== a.tooltip && this.setTooltip(a.tooltip);
- void 0 !== a.helpUrl && this.setHelpUrl(a.helpUrl)
- }
- ;
- Blockly.Block.prototype.interpolate_ = function (a, b, c) {
- var d = Blockly.utils.tokenizeInterpolation(a)
- , e = []
- , f = 0;
- a = [];
- for (var g = 0; g < d.length; g++) {
- var h = d[g];
- "number" == typeof h ? (goog.asserts.assert(0 < h && h <= b.length, 'Message index "%s" out of range.', h),
- goog.asserts.assert(!e[h], 'Message index "%s" duplicated.', h),
- e[h] = !0,
- f++,
- a.push(b[h - 1])) : (h = h.trim()) && a.push(h)
- }
- goog.asserts.assert(f == b.length, "Message does not reference all %s arg(s).", b.length);
- a.length && ("string" == typeof a[a.length - 1] || goog.string.startsWith(a[a.length - 1].type, "field_")) && (g = {
- type: "input_dummy"
- },
- c && (g.align = c),
- a.push(g));
- c = {
- LEFT: Blockly.ALIGN_LEFT,
- RIGHT: Blockly.ALIGN_RIGHT,
- CENTRE: Blockly.ALIGN_CENTRE
- };
- b = [];
- for (g = 0; g < a.length; g++)
- if (e = a[g],
- "string" == typeof e)
- b.push([e, void 0]);
- else {
- d = f = null;
- do
- if (h = !1,
- "string" == typeof e)
- f = new Blockly.FieldLabel(e);
- else
- switch (e.type) {
- case "input_value":
- d = this.appendValueInput(e.name);
- break;
- case "input_statement":
- d = this.appendStatementInput(e.name);
- break;
- case "input_dummy":
- d = this.appendDummyInput(e.name);
- break;
- case "field_label":
- f = new Blockly.FieldLabel(e.text, e["class"]);
- break;
- case "field_input":
- f = new Blockly.FieldTextInput(e.text);
- "boolean" == typeof e.spellcheck && f.setSpellcheck(e.spellcheck);
- break;
- case "field_textarea":
- f = new Blockly.FieldTextArea(e.text);
- break;
- case "field_angle":
- f = new Blockly.FieldAngle(e.angle);
- break;
- case "field_checkbox":
- f = new Blockly.FieldCheckbox(e.checked ? "TRUE" : "FALSE");
- break;
- case "field_colour":
- f = new Blockly.FieldColour(e.colour);
- break;
- case "field_variable":
- f = new Blockly.FieldVariable(e.variable);
- break;
- case "field_dropdown":
- f = new Blockly.FieldDropdown(e.options);
- break;
- case "field_image":
- f = new Blockly.FieldImage(e.src, e.width, e.height, e.alt);
- break;
- case "field_number":
- f = new Blockly.FieldNumber(e.value, e.min, e.max, e.precision);
- break;
- case "field_date":
- if (Blockly.FieldDate) {
- f = new Blockly.FieldDate(e.date);
- break
- }
- default:
- e.alt && (e = e.alt,
- h = !0)
- }
- while (h); if (f)
- b.push([f, e.name]);
- else if (d) {
- e.check && d.setCheck(e.check);
- e.align && d.setAlign(c[e.align]);
- for (e = 0; e < b.length; e++)
- d.appendField(b[e][0], b[e][1]);
- b.length = 0
- }
- }
- }
- ;
- Blockly.Block.prototype.appendInput_ = function (a, b) {
- var c = null;
- if (a == Blockly.INPUT_VALUE || a == Blockly.NEXT_STATEMENT)
- c = this.makeConnection_(a);
- c = new Blockly.Input(a, b, this, c);
- this.inputList.push(c);
- return c
- }
- ;
- Blockly.Block.prototype.moveInputBefore = function (a, b) {
- if (a != b) {
- for (var c = -1, d = b ? -1 : this.inputList.length, e = 0, f; f = this.inputList[e]; e++)
- if (f.name == a) {
- if (c = e,
- -1 != d)
- break
- } else if (b && f.name == b && (d = e,
- -1 != c))
- break;
- goog.asserts.assert(-1 != c, 'Named input "%s" not found.', a);
- goog.asserts.assert(-1 != d, 'Reference input "%s" not found.', b);
- this.moveNumberedInputBefore(c, d)
- }
- }
- ;
- Blockly.Block.prototype.moveNumberedInputBefore = function (a, b) {
- goog.asserts.assert(a != b, "Can't move input to itself.");
- goog.asserts.assert(a < this.inputList.length, "Input index " + a + " out of bounds.");
- goog.asserts.assert(b <= this.inputList.length, "Reference input " + b + " out of bounds.");
- var c = this.inputList[a];
- this.inputList.splice(a, 1);
- a < b && b--;
- this.inputList.splice(b, 0, c)
- }
- ;
- Blockly.Block.prototype.removeInput = function (a, b) {
- for (var c = 0, d; d = this.inputList[c]; c++)
- if (d.name == a) {
- if (d.connection && d.connection.isConnected()) {
- d.connection.setShadowDom(null);
- var e = d.connection.targetBlock();
- e.isShadow() ? e.dispose() : e.unplug()
- }
- d.dispose();
- this.inputList.splice(c, 1);
- return
- }
- b || goog.asserts.fail('Input "%s" not found.', a)
- }
- ;
- Blockly.Block.prototype.getInput = function (a) {
- for (var b = 0, c; c = this.inputList[b]; b++)
- if (c.name == a)
- return c;
- return null
- }
- ;
- Blockly.Block.prototype.getInputTargetBlock = function (a) {
- return (a = this.getInput(a)) && a.connection && a.connection.targetBlock()
- }
- ;
- Blockly.Block.prototype.getCommentText = function () {
- return this.comment || ""
- }
- ;
- Blockly.Block.prototype.setCommentText = function (a) {
- this.comment != a && (Blockly.Events.fire(new Blockly.Events.Change(this, "comment", null, this.comment, a || "")),
- this.comment = a)
- }
- ;
- Blockly.Block.prototype.setWarningText = function (a) { }
- ;
- Blockly.Block.prototype.setMutator = function (a) { }
- ;
- Blockly.Block.prototype.getRelativeToSurfaceXY = function () {
- return this.xy_
- }
- ;
- Blockly.Block.prototype.moveBy = function (a, b) {
- goog.asserts.assert(!this.parentBlock_, "Block has parent.");
- var c = new Blockly.Events.Move(this);
- this.xy_.translate(a, b);
- c.recordNew();
- Blockly.Events.fire(c)
- }
- ;
- Blockly.Block.prototype.makeConnection_ = function (a) {
- return new Blockly.Connection(this, a)
- }
- ;
- Blockly.ContextMenu = {};
- Blockly.ContextMenu.currentBlock = null;
- Blockly.ContextMenu.show = function (a, b, c) {
- Blockly.WidgetDiv.show(Blockly.ContextMenu, c, null);
- if (b.length) {
- var d = new goog.ui.Menu;
- d.setRightToLeft(c);
- for (var e = 0, f; f = b[e]; e++) {
- var g = new goog.ui.MenuItem(f.text);
- g.setRightToLeft(c);
- d.addChild(g, !0);
- g.setEnabled(f.enabled);
- f.enabled && (goog.events.listen(g, goog.ui.Component.EventType.ACTION, f.callback),
- g.handleContextMenu = function (a) {
- goog.events.dispatchEvent(this, goog.ui.Component.EventType.ACTION)
- }
- )
- }
- goog.events.listen(d, goog.ui.Component.EventType.ACTION, Blockly.ContextMenu.hide);
- b = goog.dom.getViewportSize();
- e = goog.style.getViewportPageOffset(document);
- d.render(Blockly.WidgetDiv.DIV);
- var h = d.getElement();
- Blockly.addClass_(h, "blocklyContextMenu");
- Blockly.bindEventWithChecks_(h, "contextmenu", null, Blockly.noEvent);
- f = goog.style.getSize(h);
- g = a.clientX + e.x;
- var k = a.clientY + e.y;
- a.clientY + f.height >= b.height && (k -= f.height);
- c ? f.width >= a.clientX && (g += f.width) : a.clientX + f.width >= b.width && (g -= f.width);
- Blockly.WidgetDiv.position(g, k, b, e, c);
- d.setAllowAutoFocus(!0);
- setTimeout(function () {
- h.focus()
- }, 1);
- Blockly.ContextMenu.currentBlock = null
- } else
- Blockly.ContextMenu.hide()
- }
- ;
- Blockly.ContextMenu.hide = function () {
- Blockly.WidgetDiv.hideIfOwner(Blockly.ContextMenu);
- Blockly.ContextMenu.currentBlock = null
- }
- ;
- Blockly.ContextMenu.callbackFactory = function (a, b) {
- return function () {
- Blockly.Events.disable();
- try {
- var c = Blockly.Xml.domToBlock(b, a.workspace)
- , d = a.getRelativeToSurfaceXY();
- d.x = a.RTL ? d.x - Blockly.SNAP_RADIUS : d.x + Blockly.SNAP_RADIUS;
- d.y += 2 * Blockly.SNAP_RADIUS;
- c.moveBy(d.x, d.y)
- } finally {
- Blockly.Events.enable()
- }
- Blockly.Events.isEnabled() && !c.isShadow() && Blockly.Events.fire(new Blockly.Events.Create(c));
- c.select()
- }
- }
- ;
- Blockly.RenderedConnection = function (a, b) {
- Blockly.RenderedConnection.superClass_.constructor.call(this, a, b);
- this.offsetInBlock_ = new goog.math.Coordinate(0, 0)
- }
- ;
- goog.inherits(Blockly.RenderedConnection, Blockly.Connection);
- Blockly.RenderedConnection.prototype.distanceFrom = function (a) {
- var b = this.x_ - a.x_;
- a = this.y_ - a.y_;
- return Math.sqrt(b * b + a * a)
- }
- ;
- Blockly.RenderedConnection.prototype.bumpAwayFrom_ = function (a) {
- if (Blockly.dragMode_ == Blockly.DRAG_NONE) {
- var b = this.sourceBlock_.getRootBlock();
- if (!b.isInFlyout) {
- var c = !1;
- if (!b.isMovable()) {
- b = a.getSourceBlock().getRootBlock();
- if (!b.isMovable())
- return;
- a = this;
- c = !0
- }
- var d = Blockly.selected == b;
- d || b.addSelect();
- var e = a.x_ + Blockly.SNAP_RADIUS - this.x_;
- a = a.y_ + Blockly.SNAP_RADIUS - this.y_;
- c && (a = -a);
- b.RTL && (e = -e);
- b.moveBy(e, a);
- d || b.removeSelect()
- }
- }
- }
- ;
- Blockly.RenderedConnection.prototype.moveTo = function (a, b) {
- this.inDB_ && this.db_.removeConnection_(this);
- this.x_ = a;
- this.y_ = b;
- this.hidden_ || this.db_.addConnection(this)
- }
- ;
- Blockly.RenderedConnection.prototype.moveBy = function (a, b) {
- this.moveTo(this.x_ + a, this.y_ + b)
- }
- ;
- Blockly.RenderedConnection.prototype.moveToOffset = function (a) {
- this.moveTo(a.x + this.offsetInBlock_.x, a.y + this.offsetInBlock_.y)
- }
- ;
- Blockly.RenderedConnection.prototype.setOffsetInBlock = function (a, b) {
- this.offsetInBlock_.x = a;
- this.offsetInBlock_.y = b
- }
- ;
- Blockly.RenderedConnection.prototype.tighten_ = function () {
- var a = this.targetConnection.x_ - this.x_
- , b = this.targetConnection.y_ - this.y_;
- if (0 != a || 0 != b) {
- var c = this.targetBlock()
- , d = c.getSvgRoot();
- if (!d)
- throw "block is not rendered.";
- d = Blockly.getRelativeXY_(d);
- c.getSvgRoot().setAttribute("transform", "translate(" + (d.x - a) + "," + (d.y - b) + ")");
- c.moveConnections_(-a, -b)
- }
- }
- ;
- Blockly.RenderedConnection.prototype.closest = function (a, b, c) {
- return this.dbOpposite_.searchForClosest(this, a, b, c)
- }
- ;
- Blockly.RenderedConnection.prototype.highlight = function () {
- var a = this.type == Blockly.INPUT_VALUE || this.type == Blockly.OUTPUT_VALUE ? "m 0,0 " + Blockly.BlockSvg.TAB_PATH_DOWN + " v 5" : "m -20,0 h 5 " + Blockly.BlockSvg.NOTCH_PATH_LEFT + " h 5";
- var b = this.sourceBlock_.getRelativeToSurfaceXY();
- Blockly.Connection.highlightedPath_ = Blockly.createSvgElement("path", {
- "class": "blocklyHighlightedConnectionPath",
- d: a,
- transform: "translate(" + (this.x_ - b.x) + "," + (this.y_ - b.y) + ")" + (this.sourceBlock_.RTL ? " scale(-1 1)" : "")
- }, this.sourceBlock_.getSvgRoot())
- }
- ;
- Blockly.RenderedConnection.prototype.unhideAll = function () {
- this.setHidden(!1);
- var a = [];
- if (this.type != Blockly.INPUT_VALUE && this.type != Blockly.NEXT_STATEMENT)
- return a;
- var b = this.targetBlock();
- if (b) {
- if (b.isCollapsed()) {
- var c = [];
- b.outputConnection && c.push(b.outputConnection);
- b.nextConnection && c.push(b.nextConnection);
- b.previousConnection && c.push(b.previousConnection)
- } else
- c = b.getConnections_(!0);
- for (var d = 0; d < c.length; d++)
- a.push.apply(a, c[d].unhideAll());
- a.length || (a[0] = b)
- }
- return a
- }
- ;
- Blockly.RenderedConnection.prototype.unhighlight = function () {
- goog.dom.removeNode(Blockly.Connection.highlightedPath_);
- delete Blockly.Connection.highlightedPath_
- }
- ;
- Blockly.RenderedConnection.prototype.setHidden = function (a) {
- (this.hidden_ = a) && this.inDB_ ? this.db_.removeConnection_(this) : a || this.inDB_ || this.db_.addConnection(this)
- }
- ;
- Blockly.RenderedConnection.prototype.hideAll = function () {
- this.setHidden(!0);
- if (this.targetConnection)
- for (var a = this.targetBlock().getDescendants(), b = 0; b < a.length; b++) {
- for (var c = a[b], d = c.getConnections_(!0), e = 0; e < d.length; e++)
- d[e].setHidden(!0);
- c = c.getIcons();
- for (e = 0; e < c.length; e++)
- c[e].setVisible(!1)
- }
- }
- ;
- Blockly.RenderedConnection.prototype.isConnectionAllowed = function (a, b) {
- return this.distanceFrom(a) > b ? !1 : Blockly.RenderedConnection.superClass_.isConnectionAllowed.call(this, a)
- }
- ;
- Blockly.RenderedConnection.prototype.disconnectInternal_ = function (a, b) {
- Blockly.RenderedConnection.superClass_.disconnectInternal_.call(this, a, b);
- a.rendered && a.render();
- b.rendered && (b.updateDisabled(),
- b.render())
- }
- ;
- Blockly.RenderedConnection.prototype.respawnShadow_ = function () {
- var a = this.getSourceBlock()
- , b = this.getShadowDom();
- if (a.workspace && b && Blockly.Events.recordUndo) {
- Blockly.RenderedConnection.superClass_.respawnShadow_.call(this);
- b = this.targetBlock();
- if (!b)
- throw "Couldn't respawn the shadow block that should exist here.";
- b.initSvg();
- b.render(!1);
- a.rendered && a.render()
- }
- }
- ;
- Blockly.RenderedConnection.prototype.neighbours_ = function (a) {
- return this.dbOpposite_.getNeighbours(this, a)
- }
- ;
- Blockly.RenderedConnection.prototype.connect_ = function (a) {
- Blockly.RenderedConnection.superClass_.connect_.call(this, a);
- var b = this.getSourceBlock();
- a = a.getSourceBlock();
- b.rendered && b.updateDisabled();
- a.rendered && a.updateDisabled();
- b.rendered && a.rendered && (this.type == Blockly.NEXT_STATEMENT || this.type == Blockly.PREVIOUS_STATEMENT ? a.render() : b.render())
- }
- ;
- Blockly.BlockSvg = function (a, b, c) {
- this.svgGroup_ = Blockly.createSvgElement("g", {}, null);
- this.svgPathDark_ = Blockly.createSvgElement("path", {
- "class": "blocklyPathDark",
- transform: "translate(1,1)"
- }, this.svgGroup_);
- this.svgPath_ = Blockly.createSvgElement("path", {
- "class": "blocklyPath"
- }, this.svgGroup_);
- this.svgPathLight_ = Blockly.createSvgElement("path", {
- "class": "blocklyPathLight"
- }, this.svgGroup_);
- this.svgPath_.tooltip = this;
- this.rendered = !1;
- Blockly.Tooltip.bindMouseEvents(this.svgPath_);
- Blockly.BlockSvg.superClass_.constructor.call(this, a, b, c)
- }
- ;
- goog.inherits(Blockly.BlockSvg, Blockly.Block);
- Blockly.BlockSvg.prototype.height = 0;
- Blockly.BlockSvg.prototype.width = 0;
- Blockly.BlockSvg.prototype.dragStartXY_ = null;
- Blockly.BlockSvg.INLINE = -1;
- Blockly.BlockSvg.prototype.initSvg = function () {
- goog.asserts.assert(this.workspace.rendered, "Workspace is headless.");
- for (var a = 0, b; b = this.inputList[a]; a++)
- b.init();
- b = this.getIcons();
- for (a = 0; a < b.length; a++)
- b[a].createIcon();
- this.updateColour();
- this.updateMovable();
- if (!this.workspace.options.readOnly && !this.eventsInit_) {
- Blockly.bindEventWithChecks_(this.getSvgRoot(), "mousedown", this, this.onMouseDown_);
- var c = this;
- Blockly.bindEvent_(this.getSvgRoot(), "touchstart", null, function (a) {
- Blockly.longStart_(a, c)
- })
- }
- this.eventsInit_ = !0;
- this.getSvgRoot().parentNode || this.workspace.getCanvas().appendChild(this.getSvgRoot())
- }
- ;
- Blockly.BlockSvg.prototype.select = function () {
- if (this.isShadow() && this.getParent())
- this.getParent().select();
- else if (Blockly.selected != this) {
- var a = null;
- if (Blockly.selected) {
- a = Blockly.selected.id;
- Blockly.Events.disable();
- try {
- Blockly.selected.unselect()
- } finally {
- Blockly.Events.enable()
- }
- }
- a = new Blockly.Events.Ui(null, "selected", a, this.id);
- a.workspaceId = this.workspace.id;
- Blockly.Events.fire(a);
- Blockly.selected = this;
- this.addSelect()
- }
- }
- ;
- Blockly.BlockSvg.prototype.unselect = function () {
- if (Blockly.selected == this) {
- var a = new Blockly.Events.Ui(null, "selected", this.id, null);
- a.workspaceId = this.workspace.id;
- Blockly.Events.fire(a);
- Blockly.selected = null;
- this.removeSelect()
- }
- }
- ;
- Blockly.BlockSvg.prototype.mutator = null;
- Blockly.BlockSvg.prototype.comment = null;
- Blockly.BlockSvg.prototype.warning = null;
- Blockly.BlockSvg.prototype.getIcons = function () {
- var a = [];
- this.mutator && a.push(this.mutator);
- this.comment && a.push(this.comment);
- this.warning && a.push(this.warning);
- return a
- }
- ;
- Blockly.BlockSvg.onMouseUpWrapper_ = null;
- Blockly.BlockSvg.onMouseMoveWrapper_ = null;
- Blockly.BlockSvg.terminateDrag = function () {
- Blockly.BlockSvg.disconnectUiStop_();
- Blockly.BlockSvg.onMouseUpWrapper_ && (Blockly.unbindEvent_(Blockly.BlockSvg.onMouseUpWrapper_),
- Blockly.BlockSvg.onMouseUpWrapper_ = null);
- Blockly.BlockSvg.onMouseMoveWrapper_ && (Blockly.unbindEvent_(Blockly.BlockSvg.onMouseMoveWrapper_),
- Blockly.BlockSvg.onMouseMoveWrapper_ = null);
- var a = Blockly.selected;
- if (Blockly.dragMode_ == Blockly.DRAG_FREE && a) {
- var b = a.getRelativeToSurfaceXY();
- b = goog.math.Coordinate.difference(b, a.dragStartXY_);
- var c = new Blockly.Events.Move(a);
- c.oldCoordinate = a.dragStartXY_;
- c.recordNew();
- Blockly.Events.fire(c);
- a.moveConnections_(b.x, b.y);
- delete a.draggedBubbles_;
- a.setDragging_(!1);
- a.render();
- a.workspace.setResizesEnabled(!0);
- var d = Blockly.Events.getGroup();
- setTimeout(function () {
- Blockly.Events.setGroup(d);
- a.snapToGrid();
- Blockly.Events.setGroup(!1)
- }, Blockly.BUMP_DELAY / 2);
- setTimeout(function () {
- Blockly.Events.setGroup(d);
- a.bumpNeighbours_();
- Blockly.Events.setGroup(!1)
- }, Blockly.BUMP_DELAY)
- }
- Blockly.dragMode_ = Blockly.DRAG_NONE;
- Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN)
- }
- ;
- Blockly.BlockSvg.prototype.setParent = function (a) {
- if (a != this.parentBlock_) {
- var b = this.getSvgRoot();
- if (this.parentBlock_ && b) {
- var c = this.getRelativeToSurfaceXY();
- this.workspace.getCanvas().appendChild(b);
- b.setAttribute("transform", "translate(" + c.x + "," + c.y + ")")
- }
- Blockly.Field.startCache();
- Blockly.BlockSvg.superClass_.setParent.call(this, a);
- Blockly.Field.stopCache();
- a && (c = this.getRelativeToSurfaceXY(),
- a.getSvgRoot().appendChild(b),
- a = this.getRelativeToSurfaceXY(),
- this.moveConnections_(a.x - c.x, a.y - c.y))
- }
- }
- ;
- Blockly.BlockSvg.prototype.getRelativeToSurfaceXY = function () {
- var a = 0
- , b = 0
- , c = this.getSvgRoot();
- if (c) {
- do {
- var d = Blockly.getRelativeXY_(c);
- a += d.x;
- b += d.y;
- c = c.parentNode
- } while (c && c != this.workspace.getCanvas())
- }
- return new goog.math.Coordinate(a, b)
- }
- ;
- Blockly.BlockSvg.prototype.moveBy = function (a, b) {
- goog.asserts.assert(!this.parentBlock_, "Block has parent.");
- var c = new Blockly.Events.Move(this)
- , d = this.getRelativeToSurfaceXY();
- this.getSvgRoot().setAttribute("transform", "translate(" + (d.x + a) + "," + (d.y + b) + ")");
- this.moveConnections_(a, b);
- c.recordNew();
- this.workspace.resizeContents();
- Blockly.Events.fire(c)
- }
- ;
- Blockly.BlockSvg.prototype.snapToGrid = function () {
- if (this.workspace && Blockly.dragMode_ == Blockly.DRAG_NONE && !this.getParent() && !this.isInFlyout && this.workspace.options.gridOptions && this.workspace.options.gridOptions.snap) {
- var a = this.workspace.options.gridOptions.spacing
- , b = a / 2
- , c = this.getRelativeToSurfaceXY()
- , d = Math.round((c.x - b) / a) * a + b - c.x;
- a = Math.round((c.y - b) / a) * a + b - c.y;
- d = Math.round(d);
- a = Math.round(a);
- 0 == d && 0 == a || this.moveBy(d, a)
- }
- }
- ;
- Blockly.BlockSvg.prototype.getHeightWidth = function () {
- var a = this.height
- , b = this.width
- , c = this.getNextBlock();
- c ? (c = c.getHeightWidth(),
- a += c.height - 4,
- b = Math.max(b, c.width)) : this.nextConnection || this.outputConnection || (a += 2);
- return {
- height: a,
- width: b
- }
- }
- ;
- Blockly.BlockSvg.prototype.getBoundingRectangle = function () {
- var a = this.getRelativeToSurfaceXY(this)
- , b = this.outputConnection ? Blockly.BlockSvg.TAB_WIDTH : 0
- , c = this.getHeightWidth();
- if (this.RTL) {
- var d = new goog.math.Coordinate(a.x - (c.width - b), a.y);
- a = new goog.math.Coordinate(a.x + b, a.y + c.height)
- } else
- d = new goog.math.Coordinate(a.x - b, a.y),
- a = new goog.math.Coordinate(a.x + c.width - b, a.y + c.height);
- return {
- topLeft: d,
- bottomRight: a
- }
- }
- ;
- Blockly.BlockSvg.prototype.setCollapsed = function (a) {
- if (this.collapsed_ != a) {
- for (var b = [], c = 0, d; d = this.inputList[c]; c++)
- b.push.apply(b, d.setVisible(!a));
- if (a) {
- d = this.getIcons();
- for (c = 0; c < d.length; c++)
- d[c].setVisible(!1);
- c = this.toString(Blockly.COLLAPSE_CHARS);
- this.appendDummyInput("_TEMP_COLLAPSED_INPUT").appendField(c).init()
- } else
- this.removeInput("_TEMP_COLLAPSED_INPUT"),
- this.setWarningText(null);
- Blockly.BlockSvg.superClass_.setCollapsed.call(this, a);
- b.length || (b[0] = this);
- if (this.rendered)
- for (c = 0; a = b[c]; c++)
- a.render()
- }
- }
- ;
- Blockly.BlockSvg.prototype.tab = function (a, b) {
- for (var c = [], d = 0, e; e = this.inputList[d]; d++) {
- for (var f = 0, g; g = e.fieldRow[f]; f++)
- g instanceof Blockly.FieldTextInput && c.push(g);
- e.connection && (e = e.connection.targetBlock()) && c.push(e)
- }
- d = c.indexOf(a);
- -1 == d && (d = b ? -1 : c.length);
- (c = c[b ? d + 1 : d - 1]) ? c instanceof Blockly.Field ? c.showEditor_() : c.tab(null, b) : (c = this.getParent()) && c.tab(this, b)
- }
- ;
- Blockly.BlockSvg.prototype.onMouseDown_ = function (a) {
- if (!this.workspace.options.readOnly)
- if (this.isInFlyout)
- "touchstart" == a.type && Blockly.isRightButton(a) && (Blockly.Flyout.blockRightClick_(a, this),
- a.stopPropagation(),
- a.preventDefault());
- else {
- this.isInMutator && this.workspace.resize();
- this.workspace.updateScreenCalculationsIfScrolled();
- this.workspace.markFocused();
- Blockly.terminateDrag_();
- this.select();
- Blockly.hideChaff();
- if (Blockly.isRightButton(a))
- this.showContextMenu_(a),
- Blockly.Touch.clearTouchIdentifier();
- else if (this.isMovable()) {
- Blockly.Events.getGroup() || Blockly.Events.setGroup(!0);
- Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED);
- this.dragStartXY_ = this.getRelativeToSurfaceXY();
- this.workspace.startDrag(a, this.dragStartXY_);
- Blockly.dragMode_ = Blockly.DRAG_STICKY;
- Blockly.BlockSvg.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, "mouseup", this, this.onMouseUp_);
- Blockly.BlockSvg.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_(document, "mousemove", this, this.onMouseMove_);
- this.draggedBubbles_ = [];
- for (var b = this.getDescendants(), c = 0, d; d = b[c]; c++) {
- d = d.getIcons();
- for (var e = 0; e < d.length; e++) {
- var f = d[e].getIconLocation();
- f.bubble = d[e];
- this.draggedBubbles_.push(f)
- }
- }
- } else
- return;
- a.stopPropagation();
- a.preventDefault()
- }
- }
- ;
- Blockly.BlockSvg.prototype.onMouseUp_ = function (a) {
- Blockly.Touch.clearTouchIdentifier();
- Blockly.dragMode_ == Blockly.DRAG_FREE || Blockly.WidgetDiv.isVisible() || Blockly.Events.fire(new Blockly.Events.Ui(this, "click", void 0, void 0));
- Blockly.terminateDrag_();
- Blockly.selected && Blockly.highlightedConnection_ ? (Blockly.localConnection_.connect(Blockly.highlightedConnection_),
- this.rendered && (Blockly.localConnection_.isSuperior() ? Blockly.highlightedConnection_ : Blockly.localConnection_).getSourceBlock().connectionUiEffect(),
- this.workspace.trashcan && this.workspace.trashcan.close()) : !this.getParent() && Blockly.selected.isDeletable() && this.workspace.isDeleteArea(a) && ((a = this.workspace.trashcan) && goog.Timer.callOnce(a.close, 100, a),
- Blockly.selected.dispose(!1, !0));
- Blockly.highlightedConnection_ && (Blockly.highlightedConnection_.unhighlight(),
- Blockly.highlightedConnection_ = null);
- Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN);
- Blockly.WidgetDiv.isVisible() || Blockly.Events.setGroup(!1)
- }
- ;
- Blockly.BlockSvg.prototype.showHelp_ = function () {
- var a = goog.isFunction(this.helpUrl) ? this.helpUrl() : this.helpUrl;
- a && window.open(a)
- }
- ;
- Blockly.BlockSvg.prototype.showContextMenu_ = function (a) {
- if (!this.workspace.options.readOnly && this.contextMenu) {
- var b = this
- , c = [];
- if (this.isDeletable() && this.isMovable() && !b.isInFlyout) {
- var d = {
- text: Blockly.Msg.DUPLICATE_BLOCK,
- enabled: !0,
- callback: function () {
- Blockly.duplicate_(b)
- }
- };
- this.getDescendants().length > this.workspace.remainingCapacity() && (d.enabled = !1);
- c.push(d);
- this.isEditable() && !this.collapsed_ && this.workspace.options.comments && (d = {
- enabled: !goog.userAgent.IE
- },
- this.comment ? (d.text = Blockly.Msg.REMOVE_COMMENT,
- d.callback = function () {
- b.setCommentText(null)
- }
- ) : (d.text = Blockly.Msg.ADD_COMMENT,
- d.callback = function () {
- b.setCommentText("")
- }
- ),
- c.push(d));
- if (!this.collapsed_)
- for (d = 1; d < this.inputList.length; d++)
- if (this.inputList[d - 1].type != Blockly.NEXT_STATEMENT && this.inputList[d].type != Blockly.NEXT_STATEMENT) {
- d = {
- enabled: !0
- };
- var e = this.getInputsInline();
- d.text = e ? Blockly.Msg.EXTERNAL_INPUTS : Blockly.Msg.INLINE_INPUTS;
- d.callback = function () {
- b.setInputsInline(!e)
- }
- ;
- c.push(d);
- break
- }
- this.workspace.options.collapse && (this.collapsed_ ? (d = {
- enabled: !0
- },
- d.text = Blockly.Msg.EXPAND_BLOCK,
- d.callback = function () {
- b.setCollapsed(!1)
- }
- ,
- c.push(d)) : (d = {
- enabled: !0
- },
- d.text = Blockly.Msg.COLLAPSE_BLOCK,
- d.callback = function () {
- b.setCollapsed(!0)
- }
- ,
- c.push(d)));
- this.workspace.options.disable && (d = {
- text: this.disabled ? Blockly.Msg.ENABLE_BLOCK : Blockly.Msg.DISABLE_BLOCK,
- enabled: !this.getInheritedDisabled(),
- callback: function () {
- b.setDisabled(!b.disabled)
- }
- },
- c.push(d));
- d = this.getDescendants().length;
- var f = this.getNextBlock();
- f && (d -= f.getDescendants().length);
- d = {
- text: 1 == d ? Blockly.Msg.DELETE_BLOCK : Blockly.Msg.DELETE_X_BLOCKS.replace("%1", String(d)),
- enabled: !0,
- callback: function () {
- Blockly.Events.setGroup(!0);
- b.dispose(!0, !0);
- Blockly.Events.setGroup(!1)
- }
- };
- c.push(d)
- }
- d = {
- enabled: !(goog.isFunction(this.helpUrl) ? !this.helpUrl() : !this.helpUrl)
- };
- d.text = Blockly.Msg.HELP;
- d.callback = function () {
- b.showHelp_()
- }
- ;
- c.push(d);
- this.customContextMenu && !b.isInFlyout && this.customContextMenu(c);
- Blockly.ContextMenu.show(a, c, this.RTL);
- Blockly.ContextMenu.currentBlock = this
- }
- }
- ;
- Blockly.BlockSvg.prototype.moveConnections_ = function (a, b) {
- if (this.rendered) {
- for (var c = this.getConnections_(!1), d = 0; d < c.length; d++)
- c[d].moveBy(a, b);
- c = this.getIcons();
- for (d = 0; d < c.length; d++)
- c[d].computeIconLocation();
- for (d = 0; d < this.childBlocks_.length; d++)
- this.childBlocks_[d].moveConnections_(a, b)
- }
- }
- ;
- Blockly.BlockSvg.prototype.setDragging_ = function (a) {
- if (a) {
- var b = this.getSvgRoot();
- b.translate_ = "";
- b.skew_ = "";
- Blockly.draggingConnections_ = Blockly.draggingConnections_.concat(this.getConnections_(!0));
- Blockly.addClass_(this.svgGroup_, "blocklyDragging")
- } else
- Blockly.draggingConnections_ = [],
- Blockly.removeClass_(this.svgGroup_, "blocklyDragging");
- for (b = 0; b < this.childBlocks_.length; b++)
- this.childBlocks_[b].setDragging_(a)
- }
- ;
- Blockly.BlockSvg.prototype.onMouseMove_ = function (a) {
- if ("mousemove" == a.type && 1 >= a.clientX && 0 == a.clientY && 0 == a.button)
- a.stopPropagation();
- else {
- var b = this.getRelativeToSurfaceXY()
- , c = this.workspace.moveDrag(a);
- if (Blockly.dragMode_ == Blockly.DRAG_STICKY && goog.math.Coordinate.distance(b, c) * this.workspace.scale > Blockly.DRAG_RADIUS) {
- Blockly.dragMode_ = Blockly.DRAG_FREE;
- Blockly.longStop_();
- this.workspace.setResizesEnabled(!1);
- if (this.parentBlock_) {
- this.unplug();
- var d = this.getSvgRoot();
- d.translate_ = "translate(" + c.x + "," + c.y + ")";
- this.disconnectUiEffect()
- }
- this.setDragging_(!0)
- }
- if (Blockly.dragMode_ == Blockly.DRAG_FREE) {
- b = goog.math.Coordinate.difference(b, this.dragStartXY_);
- d = this.getSvgRoot();
- d.translate_ = "translate(" + c.x + "," + c.y + ")";
- d.setAttribute("transform", d.translate_ + d.skew_);
- for (c = 0; c < this.draggedBubbles_.length; c++)
- d = this.draggedBubbles_[c],
- d.bubble.setIconLocation(goog.math.Coordinate.sum(d, b));
- d = this.getConnections_(!1);
- (c = this.lastConnectionInStack_()) && c != this.nextConnection && d.push(c);
- var e = null
- , f = null
- , g = Blockly.SNAP_RADIUS;
- for (c = 0; c < d.length; c++) {
- var h = d[c]
- , k = h.closest(g, b);
- k.connection && (e = k.connection,
- f = h,
- g = k.radius)
- }
- Blockly.highlightedConnection_ && Blockly.highlightedConnection_ != e && (Blockly.highlightedConnection_.unhighlight(),
- Blockly.highlightedConnection_ = null,
- Blockly.localConnection_ = null);
- e && e != Blockly.highlightedConnection_ && (e.highlight(),
- Blockly.highlightedConnection_ = e,
- Blockly.localConnection_ = f);
- this.isDeletable() && this.workspace.isDeleteArea(a)
- }
- a.stopPropagation();
- a.preventDefault()
- }
- }
- ;
- Blockly.BlockSvg.prototype.updateMovable = function () {
- this.isMovable() ? Blockly.addClass_(this.svgGroup_, "blocklyDraggable") : Blockly.removeClass_(this.svgGroup_, "blocklyDraggable")
- }
- ;
- Blockly.BlockSvg.prototype.setMovable = function (a) {
- Blockly.BlockSvg.superClass_.setMovable.call(this, a);
- this.updateMovable()
- }
- ;
- Blockly.BlockSvg.prototype.setEditable = function (a) {
- Blockly.BlockSvg.superClass_.setEditable.call(this, a);
- a = this.getIcons();
- for (var b = 0; b < a.length; b++)
- a[b].updateEditable()
- }
- ;
- Blockly.BlockSvg.prototype.setShadow = function (a) {
- Blockly.BlockSvg.superClass_.setShadow.call(this, a);
- this.updateColour()
- }
- ;
- Blockly.BlockSvg.prototype.getSvgRoot = function () {
- return this.svgGroup_
- }
- ;
- Blockly.BlockSvg.prototype.dispose = function (a, b) {
- if (this.workspace) {
- Blockly.Tooltip.hide();
- Blockly.Field.startCache();
- var c = this.workspace;
- Blockly.selected == this && (this.unselect(),
- Blockly.terminateDrag_());
- Blockly.ContextMenu.currentBlock == this && Blockly.ContextMenu.hide();
- b && this.rendered && (this.unplug(a),
- this.disposeUiEffect());
- this.rendered = !1;
- Blockly.Events.disable();
- try {
- for (var d = this.getIcons(), e = 0; e < d.length; e++)
- d[e].dispose()
- } finally {
- Blockly.Events.enable()
- }
- Blockly.BlockSvg.superClass_.dispose.call(this, a);
- goog.dom.removeNode(this.svgGroup_);
- c.resizeContents();
- this.svgPathDark_ = this.svgPathLight_ = this.svgPath_ = this.svgGroup_ = null;
- Blockly.Field.stopCache()
- }
- }
- ;
- Blockly.BlockSvg.prototype.disposeUiEffect = function () {
- this.workspace.playAudio("delete");
- var a = Blockly.getSvgXY_(this.svgGroup_, this.workspace)
- , b = this.svgGroup_.cloneNode(!0);
- b.translateX_ = a.x;
- b.translateY_ = a.y;
- b.setAttribute("transform", "translate(" + b.translateX_ + "," + b.translateY_ + ")");
- this.workspace.getParentSvg().appendChild(b);
- b.bBox_ = b.getBBox();
- Blockly.BlockSvg.disposeUiStep_(b, this.RTL, new Date, this.workspace.scale)
- }
- ;
- Blockly.BlockSvg.disposeUiStep_ = function (a, b, c, d) {
- var e = (new Date - c) / 150;
- 1 < e ? goog.dom.removeNode(a) : (a.setAttribute("transform", "translate(" + (a.translateX_ + (b ? -1 : 1) * a.bBox_.width * d / 2 * e) + "," + (a.translateY_ + a.bBox_.height * d * e) + ") scale(" + (1 - e) * d + ")"),
- setTimeout(function () {
- Blockly.BlockSvg.disposeUiStep_(a, b, c, d)
- }, 10))
- }
- ;
- Blockly.BlockSvg.prototype.connectionUiEffect = function () {
- this.workspace.playAudio("click");
- if (!(1 > this.workspace.scale)) {
- var a = Blockly.getSvgXY_(this.svgGroup_, this.workspace);
- this.outputConnection ? (a.x += (this.RTL ? 3 : -3) * this.workspace.scale,
- a.y += 13 * this.workspace.scale) : this.previousConnection && (a.x += (this.RTL ? -23 : 23) * this.workspace.scale,
- a.y += 3 * this.workspace.scale);
- a = Blockly.createSvgElement("circle", {
- cx: a.x,
- cy: a.y,
- r: 0,
- fill: "none",
- stroke: "#888",
- "stroke-width": 10
- }, this.workspace.getParentSvg());
- Blockly.BlockSvg.connectionUiStep_(a, new Date, this.workspace.scale)
- }
- }
- ;
- Blockly.BlockSvg.connectionUiStep_ = function (a, b, c) {
- var d = (new Date - b) / 150;
- 1 < d ? goog.dom.removeNode(a) : (a.setAttribute("r", 25 * d * c),
- a.style.opacity = 1 - d,
- Blockly.BlockSvg.disconnectUiStop_.pid_ = setTimeout(function () {
- Blockly.BlockSvg.connectionUiStep_(a, b, c)
- }, 10))
- }
- ;
- Blockly.BlockSvg.prototype.disconnectUiEffect = function () {
- this.workspace.playAudio("disconnect");
- if (!(1 > this.workspace.scale)) {
- var a = this.getHeightWidth().height;
- a = Math.atan(10 / a) / Math.PI * 180;
- this.RTL || (a *= -1);
- Blockly.BlockSvg.disconnectUiStep_(this.svgGroup_, a, new Date)
- }
- }
- ;
- Blockly.BlockSvg.disconnectUiStep_ = function (a, b, c) {
- var d = (new Date - c) / 200;
- 1 < d ? a.skew_ = "" : (a.skew_ = "skewX(" + Math.round(Math.sin(d * Math.PI * 3) * (1 - d) * b) + ")",
- Blockly.BlockSvg.disconnectUiStop_.group = a,
- Blockly.BlockSvg.disconnectUiStop_.pid = setTimeout(function () {
- Blockly.BlockSvg.disconnectUiStep_(a, b, c)
- }, 10));
- a.setAttribute("transform", a.translate_ + a.skew_)
- }
- ;
- Blockly.BlockSvg.disconnectUiStop_ = function () {
- if (Blockly.BlockSvg.disconnectUiStop_.group) {
- clearTimeout(Blockly.BlockSvg.disconnectUiStop_.pid);
- var a = Blockly.BlockSvg.disconnectUiStop_.group;
- a.skew_ = "";
- a.setAttribute("transform", a.translate_);
- Blockly.BlockSvg.disconnectUiStop_.group = null
- }
- }
- ;
- Blockly.BlockSvg.disconnectUiStop_.pid = 0;
- Blockly.BlockSvg.disconnectUiStop_.group = null;
- Blockly.BlockSvg.prototype.updateColour = function () {
- if (!this.disabled) {
- var a = this.getColour()
- , b = goog.color.hexToRgb(a);
- if (this.isShadow())
- b = goog.color.lighten(b, .6),
- a = goog.color.rgbArrayToHex(b),
- this.svgPathLight_.style.display = "none",
- this.svgPathDark_.setAttribute("fill", a);
- else {
- this.svgPathLight_.style.display = "";
- var c = goog.color.rgbArrayToHex(goog.color.lighten(b, .3));
- b = goog.color.rgbArrayToHex(goog.color.darken(b, .2));
- this.svgPathLight_.setAttribute("stroke", c);
- this.svgPathDark_.setAttribute("fill", b)
- }
- this.svgPath_.setAttribute("fill", a);
- a = this.getIcons();
- for (c = 0; c < a.length; c++)
- a[c].updateColour();
- for (a = 0; c = this.inputList[a]; a++) {
- b = 0;
- for (var d; d = c.fieldRow[b]; b++)
- d.setText(null)
- }
- }
- }
- ;
- Blockly.BlockSvg.prototype.updateDisabled = function () {
- var a = Blockly.hasClass_(this.svgGroup_, "blocklyDisabled");
- this.disabled || this.getInheritedDisabled() ? a || (Blockly.addClass_(this.svgGroup_, "blocklyDisabled"),
- this.svgPath_.setAttribute("fill", "url(#" + this.workspace.options.disabledPatternId + ")")) : a && (Blockly.removeClass_(this.svgGroup_, "blocklyDisabled"),
- this.updateColour());
- a = this.getChildren();
- for (var b = 0, c; c = a[b]; b++)
- c.updateDisabled()
- }
- ;
- Blockly.BlockSvg.prototype.getCommentText = function () {
- return this.comment ? this.comment.getText().replace(/\s+$/, "").replace(/ +\n/g, "\n") : ""
- }
- ;
- Blockly.BlockSvg.prototype.setCommentText = function (a) {
- var b = !1;
- goog.isString(a) ? (this.comment || (this.comment = new Blockly.Comment(this),
- b = !0),
- this.comment.setText(a)) : this.comment && (this.comment.dispose(),
- b = !0);
- b && this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.setWarningText = function (a, b) {
- this.setWarningText.pid_ || (this.setWarningText.pid_ = Object.create(null));
- var c = b || "";
- if (c)
- this.setWarningText.pid_[c] && (clearTimeout(this.setWarningText.pid_[c]),
- delete this.setWarningText.pid_[c]);
- else
- for (var d in this.setWarningText.pid_)
- clearTimeout(this.setWarningText.pid_[d]),
- delete this.setWarningText.pid_[d];
- if (Blockly.dragMode_ == Blockly.DRAG_FREE) {
- var e = this;
- this.setWarningText.pid_[c] = setTimeout(function () {
- e.workspace && (delete e.setWarningText.pid_[c],
- e.setWarningText(a, c))
- }, 100)
- } else {
- this.isInFlyout && (a = null);
- d = this.getSurroundParent();
- for (var f = null; d;)
- d.isCollapsed() && (f = d),
- d = d.getSurroundParent();
- f && f.setWarningText(a, "collapsed " + this.id + " " + c);
- d = !1;
- goog.isString(a) ? (this.warning || (this.warning = new Blockly.Warning(this),
- d = !0),
- this.warning.setText(a, c)) : this.warning && !c ? (this.warning.dispose(),
- d = !0) : this.warning && (d = this.warning.getText(),
- this.warning.setText("", c),
- (f = this.warning.getText()) || this.warning.dispose(),
- d = d == f);
- d && this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- }
- ;
- Blockly.BlockSvg.prototype.setMutator = function (a) {
- this.mutator && this.mutator !== a && this.mutator.dispose();
- a && (a.block_ = this,
- this.mutator = a,
- a.createIcon())
- }
- ;
- Blockly.BlockSvg.prototype.setDisabled = function (a) {
- this.disabled != a && (Blockly.BlockSvg.superClass_.setDisabled.call(this, a),
- this.rendered && this.updateDisabled())
- }
- ;
- Blockly.BlockSvg.prototype.setHighlighted = function (a) {
- if (!this.rendered) {
- return;
- }
- if (a) {
- this.svgPath_.setAttribute('filter',
- 'url(#' + this.workspace.options.embossFilterId + ')');
- this.svgPathLight_.style.display = 'none';
- } else {
- this.svgPath_.removeAttribute('filter');
- this.svgPathLight_.style.display = 'block';
- }
- }
- ;
- Blockly.BlockSvg.prototype.addSelect = function () {
- Blockly.addClass_(this.svgGroup_, "blocklySelected");
- var a = this;
- do {
- var b = a.getSvgRoot();
- b.parentNode.appendChild(b);
- a = a.getParent()
- } while (a)
- }
- ;
- Blockly.BlockSvg.prototype.removeSelect = function () {
- Blockly.removeClass_(this.svgGroup_, "blocklySelected")
- }
- ;
- Blockly.BlockSvg.prototype.setColour = function (a) {
- Blockly.BlockSvg.superClass_.setColour.call(this, a);
- this.rendered && this.updateColour()
- }
- ;
- Blockly.BlockSvg.prototype.setPreviousStatement = function (a, b) {
- Blockly.BlockSvg.superClass_.setPreviousStatement.call(this, a, b);
- this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.setNextStatement = function (a, b) {
- Blockly.BlockSvg.superClass_.setNextStatement.call(this, a, b);
- this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.setOutput = function (a, b) {
- Blockly.BlockSvg.superClass_.setOutput.call(this, a, b);
- this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.setInputsInline = function (a) {
- Blockly.BlockSvg.superClass_.setInputsInline.call(this, a);
- this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.removeInput = function (a, b) {
- Blockly.BlockSvg.superClass_.removeInput.call(this, a, b);
- this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.moveNumberedInputBefore = function (a, b) {
- Blockly.BlockSvg.superClass_.moveNumberedInputBefore.call(this, a, b);
- this.rendered && (this.render(),
- this.bumpNeighbours_())
- }
- ;
- Blockly.BlockSvg.prototype.appendInput_ = function (a, b) {
- var c = Blockly.BlockSvg.superClass_.appendInput_.call(this, a, b);
- this.rendered && (this.render(),
- this.bumpNeighbours_());
- return c
- }
- ;
- Blockly.BlockSvg.prototype.getConnections_ = function (a) {
- var b = [];
- if (a || this.rendered)
- if (this.outputConnection && b.push(this.outputConnection),
- this.previousConnection && b.push(this.previousConnection),
- this.nextConnection && b.push(this.nextConnection),
- a || !this.collapsed_) {
- a = 0;
- for (var c; c = this.inputList[a]; a++)
- c.connection && b.push(c.connection)
- }
- return b
- }
- ;
- Blockly.BlockSvg.prototype.makeConnection_ = function (a) {
- return new Blockly.RenderedConnection(this, a)
- }
- ;
- Blockly.BlockSvg.render = {};
- Blockly.BlockSvg.SEP_SPACE_X = 10;
- Blockly.BlockSvg.SEP_SPACE_Y = 10;
- Blockly.BlockSvg.INLINE_PADDING_Y = 5;
- Blockly.BlockSvg.MIN_BLOCK_Y = 25;
- Blockly.BlockSvg.TAB_HEIGHT = 20;
- Blockly.BlockSvg.TAB_WIDTH = 8;
- Blockly.BlockSvg.NOTCH_WIDTH = 30;
- Blockly.BlockSvg.CORNER_RADIUS = 8;
- Blockly.BlockSvg.START_HAT = !1;
- Blockly.BlockSvg.START_HAT_HEIGHT = 15;
- Blockly.BlockSvg.START_HAT_PATH = "c 30,-" + Blockly.BlockSvg.START_HAT_HEIGHT + " 70,-" + Blockly.BlockSvg.START_HAT_HEIGHT + " 100,0";
- Blockly.BlockSvg.START_HAT_HIGHLIGHT_LTR = "c 17.8,-9.2 45.3,-14.9 75,-8.7 M 100.5,0.5";
- Blockly.BlockSvg.START_HAT_HIGHLIGHT_RTL = "m 25,-8.7 c 29.7,-6.2 57.2,-0.5 75,8.7";
- Blockly.BlockSvg.DISTANCE_45_INSIDE = (1 - Math.SQRT1_2) * (Blockly.BlockSvg.CORNER_RADIUS - .5) + .5;
- Blockly.BlockSvg.DISTANCE_45_OUTSIDE = (1 - Math.SQRT1_2) * (Blockly.BlockSvg.CORNER_RADIUS + .5) - .5;
- Blockly.BlockSvg.NOTCH_PATH_LEFT = "l 6,4 3,0 6,-4";
- Blockly.BlockSvg.NOTCH_PATH_LEFT_HIGHLIGHT = "l 6,4 3,0 6,-4";
- Blockly.BlockSvg.NOTCH_PATH_RIGHT = "l -6,4 -3,0 -6,-4";
- Blockly.BlockSvg.JAGGED_TEETH = "l 8,0 0,4 8,4 -16,8 8,4";
- Blockly.BlockSvg.JAGGED_TEETH_HEIGHT = 20;
- Blockly.BlockSvg.JAGGED_TEETH_WIDTH = 15;
- Blockly.BlockSvg.TAB_PATH_DOWN = "v 5 c 0,10 -" + Blockly.BlockSvg.TAB_WIDTH + ",-8 -" + Blockly.BlockSvg.TAB_WIDTH + ",7.5 s " + Blockly.BlockSvg.TAB_WIDTH + ",-2.5 " + Blockly.BlockSvg.TAB_WIDTH + ",7.5";
- Blockly.BlockSvg.TAB_PATH_DOWN_HIGHLIGHT_RTL = "v 6.5 m -" + .97 * Blockly.BlockSvg.TAB_WIDTH + ",3 q -" + .05 * Blockly.BlockSvg.TAB_WIDTH + ",10 " + .3 * Blockly.BlockSvg.TAB_WIDTH + ",9.5 m " + .67 * Blockly.BlockSvg.TAB_WIDTH + ",-1.9 v 1.4";
- Blockly.BlockSvg.TOP_LEFT_CORNER_START = "m 0," + Blockly.BlockSvg.CORNER_RADIUS;
- Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_RTL = "m " + Blockly.BlockSvg.DISTANCE_45_INSIDE + "," + Blockly.BlockSvg.DISTANCE_45_INSIDE;
- Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_LTR = "m 0.5," + (Blockly.BlockSvg.CORNER_RADIUS - .5);
- Blockly.BlockSvg.TOP_LEFT_CORNER = "A " + Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS + " 0 0,1 " + Blockly.BlockSvg.CORNER_RADIUS + ",0";
- Blockly.BlockSvg.TOP_LEFT_CORNER_HIGHLIGHT = "A " + (Blockly.BlockSvg.CORNER_RADIUS - .5) + "," + (Blockly.BlockSvg.CORNER_RADIUS - .5) + " 0 0,1 " + Blockly.BlockSvg.CORNER_RADIUS + ",0.5";
- Blockly.BlockSvg.INNER_TOP_LEFT_CORNER = Blockly.BlockSvg.NOTCH_PATH_RIGHT + " h -" + (Blockly.BlockSvg.NOTCH_WIDTH - 15 - Blockly.BlockSvg.CORNER_RADIUS) + " a " + Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS + " 0 0,0 -" + Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS;
- Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER = "a " + Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS + " 0 0,0 " + Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS;
- Blockly.BlockSvg.INNER_TOP_LEFT_CORNER_HIGHLIGHT_RTL = "a " + Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS + " 0 0,0 " + (-Blockly.BlockSvg.DISTANCE_45_OUTSIDE - .5) + "," + (Blockly.BlockSvg.CORNER_RADIUS - Blockly.BlockSvg.DISTANCE_45_OUTSIDE);
- Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_RTL = "a " + (Blockly.BlockSvg.CORNER_RADIUS + .5) + "," + (Blockly.BlockSvg.CORNER_RADIUS + .5) + " 0 0,0 " + (Blockly.BlockSvg.CORNER_RADIUS + .5) + "," + (Blockly.BlockSvg.CORNER_RADIUS + .5);
- Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_LTR = "a " + (Blockly.BlockSvg.CORNER_RADIUS + .5) + "," + (Blockly.BlockSvg.CORNER_RADIUS + .5) + " 0 0,0 " + (Blockly.BlockSvg.CORNER_RADIUS - Blockly.BlockSvg.DISTANCE_45_OUTSIDE) + "," + (Blockly.BlockSvg.DISTANCE_45_OUTSIDE + .5);
- Blockly.BlockSvg.prototype.render = function (a) {
- Blockly.Field.startCache();
- this.rendered = !0;
- var b = Blockly.BlockSvg.SEP_SPACE_X;
- this.RTL && (b = -b);
- for (var c = this.getIcons(), d = 0; d < c.length; d++)
- b = c[d].renderIcon(b);
- b += this.RTL ? Blockly.BlockSvg.SEP_SPACE_X : -Blockly.BlockSvg.SEP_SPACE_X;
- c = this.renderCompute_(b);
- this.renderDraw_(b, c);
- this.renderMoveConnections_();
- !1 !== a && ((a = this.getParent()) ? a.render(!0) : this.workspace.resizeContents());
- Blockly.Field.stopCache()
- }
- ;
- Blockly.BlockSvg.prototype.renderFields_ = function (a, b, c) {
- c += Blockly.BlockSvg.INLINE_PADDING_Y;
- this.RTL && (b = -b);
- for (var d = 0, e; e = a[d]; d++) {
- var f = e.getSvgRoot();
- f && (this.RTL ? (b -= e.renderSep + e.renderWidth,
- f.setAttribute("transform", "translate(" + b + "," + c + ")"),
- e.renderWidth && (b -= Blockly.BlockSvg.SEP_SPACE_X)) : (f.setAttribute("transform", "translate(" + (b + e.renderSep) + "," + c + ")"),
- e.renderWidth && (b += e.renderSep + e.renderWidth + Blockly.BlockSvg.SEP_SPACE_X)))
- }
- return this.RTL ? -b : b
- }
- ;
- Blockly.BlockSvg.prototype.renderCompute_ = function (a) {
- var b = this.inputList
- , c = [];
- c.rightEdge = a + 2 * Blockly.BlockSvg.SEP_SPACE_X;
- if (this.previousConnection || this.nextConnection)
- c.rightEdge = Math.max(c.rightEdge, Blockly.BlockSvg.NOTCH_WIDTH + Blockly.BlockSvg.SEP_SPACE_X);
- for (var d = 0, e = 0, f = !1, g = !1, h = !1, k = void 0, m = this.getInputsInline() && !this.isCollapsed(), p = 0, l; l = b[p]; p++)
- if (l.isVisible()) {
- if (m && k && k != Blockly.NEXT_STATEMENT && l.type != Blockly.NEXT_STATEMENT)
- var n = c[c.length - 1];
- else
- k = l.type,
- n = [],
- n.type = m && l.type != Blockly.NEXT_STATEMENT ? Blockly.BlockSvg.INLINE : l.type,
- n.height = 0,
- c.push(n);
- n.push(l);
- l.renderHeight = Blockly.BlockSvg.MIN_BLOCK_Y;
- l.renderWidth = m && l.type == Blockly.INPUT_VALUE ? Blockly.BlockSvg.TAB_WIDTH + 1.25 * Blockly.BlockSvg.SEP_SPACE_X : 0;
- if (l.connection && l.connection.isConnected()) {
- var q = l.connection.targetBlock().getHeightWidth();
- l.renderHeight = Math.max(l.renderHeight, q.height);
- l.renderWidth = Math.max(l.renderWidth, q.width)
- }
- m || p != b.length - 1 ? !m && l.type == Blockly.INPUT_VALUE && b[p + 1] && b[p + 1].type == Blockly.NEXT_STATEMENT && l.renderHeight-- : l.renderHeight--;
- n.height = Math.max(n.height, l.renderHeight);
- l.fieldWidth = 0;
- 1 == c.length && (l.fieldWidth += this.RTL ? -a : a);
- q = !1;
- for (var t = 0, r; r = l.fieldRow[t]; t++) {
- 0 != t && (l.fieldWidth += Blockly.BlockSvg.SEP_SPACE_X);
- var u = r.getSize();
- r.renderWidth = u.width;
- r.renderSep = q && r.EDITABLE ? Blockly.BlockSvg.SEP_SPACE_X : 0;
- l.fieldWidth += r.renderWidth + r.renderSep;
- n.height = Math.max(n.height, u.height);
- q = r.EDITABLE
- }
- n.type != Blockly.BlockSvg.INLINE && (n.type == Blockly.NEXT_STATEMENT ? (g = !0,
- e = Math.max(e, l.fieldWidth)) : (n.type == Blockly.INPUT_VALUE ? f = !0 : n.type == Blockly.DUMMY_INPUT && (h = !0),
- d = Math.max(d, l.fieldWidth)))
- }
- for (a = 0; n = c[a]; a++)
- if (n.thicker = !1,
- n.type == Blockly.BlockSvg.INLINE)
- for (b = 0; l = n[b]; b++)
- if (l.type == Blockly.INPUT_VALUE) {
- n.height += 2 * Blockly.BlockSvg.INLINE_PADDING_Y;
- n.thicker = !0;
- break
- }
- c.statementEdge = 2 * Blockly.BlockSvg.SEP_SPACE_X + e;
- g && (c.rightEdge = Math.max(c.rightEdge, c.statementEdge + Blockly.BlockSvg.NOTCH_WIDTH));
- f ? c.rightEdge = Math.max(c.rightEdge, d + 2 * Blockly.BlockSvg.SEP_SPACE_X + Blockly.BlockSvg.TAB_WIDTH) : h && (c.rightEdge = Math.max(c.rightEdge, d + 2 * Blockly.BlockSvg.SEP_SPACE_X));
- c.hasValue = f;
- c.hasStatement = g;
- c.hasDummy = h;
- return c
- }
- ;
- Blockly.BlockSvg.prototype.renderDraw_ = function (a, b) {
- this.startHat_ = !1;
- this.height = 0;
- if (this.outputConnection)
- this.squareBottomLeftCorner_ = this.squareTopLeftCorner_ = !0;
- else {
- this.squareBottomLeftCorner_ = this.squareTopLeftCorner_ = !1;
- if (this.previousConnection) {
- var c = this.previousConnection.targetBlock();
- c && c.getNextBlock() == this && (this.squareTopLeftCorner_ = !0)
- } else
- Blockly.BlockSvg.START_HAT && (this.startHat_ = this.squareTopLeftCorner_ = !0,
- this.height += Blockly.BlockSvg.START_HAT_HEIGHT,
- b.rightEdge = Math.max(b.rightEdge, 100));
- this.getNextBlock() && (this.squareBottomLeftCorner_ = !0)
- }
- var d = []
- , e = [];
- c = [];
- var f = [];
- this.renderDrawTop_(d, c, b.rightEdge);
- var g = this.renderDrawRight_(d, c, e, f, b, a);
- this.renderDrawBottom_(d, c, g);
- this.renderDrawLeft_(d, c);
- d = d.join(" ") + "\n" + e.join(" ");
- this.svgPath_.setAttribute("d", d);
- this.svgPathDark_.setAttribute("d", d);
- d = c.join(" ") + "\n" + f.join(" ");
- this.svgPathLight_.setAttribute("d", d);
- this.RTL && (this.svgPath_.setAttribute("transform", "scale(-1 1)"),
- this.svgPathLight_.setAttribute("transform", "scale(-1 1)"),
- this.svgPathDark_.setAttribute("transform", "translate(1,1) scale(-1 1)"))
- }
- ;
- Blockly.BlockSvg.prototype.renderMoveConnections_ = function () {
- var a = this.getRelativeToSurfaceXY();
- this.previousConnection && this.previousConnection.moveToOffset(a);
- this.outputConnection && this.outputConnection.moveToOffset(a);
- for (var b = 0; b < this.inputList.length; b++) {
- var c = this.inputList[b].connection;
- c && (c.moveToOffset(a),
- c.isConnected() && c.tighten_())
- }
- this.nextConnection && (this.nextConnection.moveToOffset(a),
- this.nextConnection.isConnected() && this.nextConnection.tighten_())
- }
- ;
- Blockly.BlockSvg.prototype.renderDrawTop_ = function (a, b, c) {
- this.squareTopLeftCorner_ ? (a.push("m 0,0"),
- b.push("m 0.5,0.5"),
- this.startHat_ && (a.push(Blockly.BlockSvg.START_HAT_PATH),
- b.push(this.RTL ? Blockly.BlockSvg.START_HAT_HIGHLIGHT_RTL : Blockly.BlockSvg.START_HAT_HIGHLIGHT_LTR))) : (a.push(Blockly.BlockSvg.TOP_LEFT_CORNER_START),
- b.push(this.RTL ? Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_RTL : Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_LTR),
- a.push(Blockly.BlockSvg.TOP_LEFT_CORNER),
- b.push(Blockly.BlockSvg.TOP_LEFT_CORNER_HIGHLIGHT));
- this.previousConnection && (a.push("H", Blockly.BlockSvg.NOTCH_WIDTH - 15),
- b.push("H", Blockly.BlockSvg.NOTCH_WIDTH - 15),
- a.push(Blockly.BlockSvg.NOTCH_PATH_LEFT),
- b.push(Blockly.BlockSvg.NOTCH_PATH_LEFT_HIGHLIGHT),
- this.previousConnection.setOffsetInBlock(this.RTL ? -Blockly.BlockSvg.NOTCH_WIDTH : Blockly.BlockSvg.NOTCH_WIDTH, 0));
- a.push("H", c);
- b.push("H", c - .5);
- this.width = c
- }
- ;
- Blockly.BlockSvg.prototype.renderDrawRight_ = function (a, b, c, d, e, f) {
- for (var g, h = 0, k, m, p = 0, l; l = e[p]; p++) {
- g = Blockly.BlockSvg.SEP_SPACE_X;
- 0 == p && (g += this.RTL ? -f : f);
- b.push("M", e.rightEdge - .5 + "," + (h + .5));
- if (this.isCollapsed()) {
- var n = l[0];
- k = h;
- this.renderFields_(n.fieldRow, g, k);
- a.push(Blockly.BlockSvg.JAGGED_TEETH);
- b.push("h 8");
- n = l.height - Blockly.BlockSvg.JAGGED_TEETH_HEIGHT;
- a.push("v", n);
- this.RTL && (b.push("v 3.9 l 7.2,3.4 m -14.5,8.9 l 7.3,3.5"),
- b.push("v", n - .7));
- this.width += Blockly.BlockSvg.JAGGED_TEETH_WIDTH
- } else if (l.type == Blockly.BlockSvg.INLINE) {
- for (var q = 0; n = l[q]; q++)
- k = h,
- l.thicker && (k += Blockly.BlockSvg.INLINE_PADDING_Y),
- g = this.renderFields_(n.fieldRow, g, k),
- n.type != Blockly.DUMMY_INPUT && (g += n.renderWidth + Blockly.BlockSvg.SEP_SPACE_X),
- n.type == Blockly.INPUT_VALUE && (c.push("M", g - Blockly.BlockSvg.SEP_SPACE_X + "," + (h + Blockly.BlockSvg.INLINE_PADDING_Y)),
- c.push("h", Blockly.BlockSvg.TAB_WIDTH - 2 - n.renderWidth),
- c.push(Blockly.BlockSvg.TAB_PATH_DOWN),
- c.push("v", n.renderHeight + 1 - Blockly.BlockSvg.TAB_HEIGHT),
- c.push("h", n.renderWidth + 2 - Blockly.BlockSvg.TAB_WIDTH),
- c.push("z"),
- this.RTL ? (d.push("M", g - Blockly.BlockSvg.SEP_SPACE_X - 2.5 + Blockly.BlockSvg.TAB_WIDTH - n.renderWidth + "," + (h + Blockly.BlockSvg.INLINE_PADDING_Y + .5)),
- d.push(Blockly.BlockSvg.TAB_PATH_DOWN_HIGHLIGHT_RTL),
- d.push("v", n.renderHeight - Blockly.BlockSvg.TAB_HEIGHT + 2.5),
- d.push("h", n.renderWidth - Blockly.BlockSvg.TAB_WIDTH + 2)) : (d.push("M", g - Blockly.BlockSvg.SEP_SPACE_X + .5 + "," + (h + Blockly.BlockSvg.INLINE_PADDING_Y + .5)),
- d.push("v", n.renderHeight + 1),
- d.push("h", Blockly.BlockSvg.TAB_WIDTH - 2 - n.renderWidth),
- d.push("M", g - n.renderWidth - Blockly.BlockSvg.SEP_SPACE_X + .9 + "," + (h + Blockly.BlockSvg.INLINE_PADDING_Y + Blockly.BlockSvg.TAB_HEIGHT - .7)),
- d.push("l", .46 * Blockly.BlockSvg.TAB_WIDTH + ",-2.1")),
- k = this.RTL ? -g - Blockly.BlockSvg.TAB_WIDTH + Blockly.BlockSvg.SEP_SPACE_X + n.renderWidth + 1 : g + Blockly.BlockSvg.TAB_WIDTH - Blockly.BlockSvg.SEP_SPACE_X - n.renderWidth - 1,
- m = h + Blockly.BlockSvg.INLINE_PADDING_Y + 1,
- n.connection.setOffsetInBlock(k, m));
- g = Math.max(g, e.rightEdge);
- this.width = Math.max(this.width, g);
- a.push("H", g);
- b.push("H", g - .5);
- a.push("v", l.height);
- this.RTL && b.push("v", l.height - 1)
- } else
- l.type == Blockly.INPUT_VALUE ? (n = l[0],
- k = h,
- n.align != Blockly.ALIGN_LEFT && (q = e.rightEdge - n.fieldWidth - Blockly.BlockSvg.TAB_WIDTH - 2 * Blockly.BlockSvg.SEP_SPACE_X,
- n.align == Blockly.ALIGN_RIGHT ? g += q : n.align == Blockly.ALIGN_CENTRE && (g += q / 2)),
- this.renderFields_(n.fieldRow, g, k),
- a.push(Blockly.BlockSvg.TAB_PATH_DOWN),
- q = l.height - Blockly.BlockSvg.TAB_HEIGHT,
- a.push("v", q),
- this.RTL ? (b.push(Blockly.BlockSvg.TAB_PATH_DOWN_HIGHLIGHT_RTL),
- b.push("v", q + .5)) : (b.push("M", e.rightEdge - 5 + "," + (h + Blockly.BlockSvg.TAB_HEIGHT - .7)),
- b.push("l", .46 * Blockly.BlockSvg.TAB_WIDTH + ",-2.1")),
- k = this.RTL ? -e.rightEdge - 1 : e.rightEdge + 1,
- n.connection.setOffsetInBlock(k, h),
- n.connection.isConnected() && (this.width = Math.max(this.width, e.rightEdge + n.connection.targetBlock().getHeightWidth().width - Blockly.BlockSvg.TAB_WIDTH + 1))) : l.type == Blockly.DUMMY_INPUT ? (n = l[0],
- k = h,
- n.align != Blockly.ALIGN_LEFT && (q = e.rightEdge - n.fieldWidth - 2 * Blockly.BlockSvg.SEP_SPACE_X,
- e.hasValue && (q -= Blockly.BlockSvg.TAB_WIDTH),
- n.align == Blockly.ALIGN_RIGHT ? g += q : n.align == Blockly.ALIGN_CENTRE && (g += q / 2)),
- this.renderFields_(n.fieldRow, g, k),
- a.push("v", l.height),
- this.RTL && b.push("v", l.height - 1)) : l.type == Blockly.NEXT_STATEMENT && (n = l[0],
- 0 == p && (a.push("v", Blockly.BlockSvg.SEP_SPACE_Y),
- this.RTL && b.push("v", Blockly.BlockSvg.SEP_SPACE_Y - 1),
- h += Blockly.BlockSvg.SEP_SPACE_Y),
- k = h,
- n.align != Blockly.ALIGN_LEFT && (q = e.statementEdge - n.fieldWidth - 2 * Blockly.BlockSvg.SEP_SPACE_X,
- n.align == Blockly.ALIGN_RIGHT ? g += q : n.align == Blockly.ALIGN_CENTRE && (g += q / 2)),
- this.renderFields_(n.fieldRow, g, k),
- g = e.statementEdge + Blockly.BlockSvg.NOTCH_WIDTH,
- a.push("H", g),
- a.push(Blockly.BlockSvg.INNER_TOP_LEFT_CORNER),
- a.push("v", l.height - 2 * Blockly.BlockSvg.CORNER_RADIUS),
- a.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER),
- a.push("H", e.rightEdge),
- this.RTL ? (b.push("M", g - Blockly.BlockSvg.NOTCH_WIDTH + Blockly.BlockSvg.DISTANCE_45_OUTSIDE + "," + (h + Blockly.BlockSvg.DISTANCE_45_OUTSIDE)),
- b.push(Blockly.BlockSvg.INNER_TOP_LEFT_CORNER_HIGHLIGHT_RTL),
- b.push("v", l.height - 2 * Blockly.BlockSvg.CORNER_RADIUS),
- b.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_RTL)) : (b.push("M", g - Blockly.BlockSvg.NOTCH_WIDTH + Blockly.BlockSvg.DISTANCE_45_OUTSIDE + "," + (h + l.height - Blockly.BlockSvg.DISTANCE_45_OUTSIDE)),
- b.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_LTR)),
- b.push("H", e.rightEdge - .5),
- k = this.RTL ? -g : g + 1,
- n.connection.setOffsetInBlock(k, h + 1),
- n.connection.isConnected() && (this.width = Math.max(this.width, e.statementEdge + n.connection.targetBlock().getHeightWidth().width)),
- p == e.length - 1 || e[p + 1].type == Blockly.NEXT_STATEMENT) && (a.push("v", Blockly.BlockSvg.SEP_SPACE_Y),
- this.RTL && b.push("v", Blockly.BlockSvg.SEP_SPACE_Y - 1),
- h += Blockly.BlockSvg.SEP_SPACE_Y);
- h += l.height
- }
- e.length || (h = Blockly.BlockSvg.MIN_BLOCK_Y,
- a.push("V", h),
- this.RTL && b.push("V", h - 1));
- return h
- }
- ;
- Blockly.BlockSvg.prototype.renderDrawBottom_ = function (a, b, c) {
- this.height += c + 1;
- this.nextConnection && (a.push("H", Blockly.BlockSvg.NOTCH_WIDTH + (this.RTL ? .5 : -.5) + " " + Blockly.BlockSvg.NOTCH_PATH_RIGHT),
- this.nextConnection.setOffsetInBlock(this.RTL ? -Blockly.BlockSvg.NOTCH_WIDTH : Blockly.BlockSvg.NOTCH_WIDTH, c + 1),
- this.height += 4);
- this.squareBottomLeftCorner_ ? (a.push("H 0"),
- this.RTL || b.push("M", "0.5," + (c - .5))) : (a.push("H", Blockly.BlockSvg.CORNER_RADIUS),
- a.push("a", Blockly.BlockSvg.CORNER_RADIUS + "," + Blockly.BlockSvg.CORNER_RADIUS + " 0 0,1 -" + Blockly.BlockSvg.CORNER_RADIUS + ",-" + Blockly.BlockSvg.CORNER_RADIUS),
- this.RTL || (b.push("M", Blockly.BlockSvg.DISTANCE_45_INSIDE + "," + (c - Blockly.BlockSvg.DISTANCE_45_INSIDE)),
- b.push("A", Blockly.BlockSvg.CORNER_RADIUS - .5 + "," + (Blockly.BlockSvg.CORNER_RADIUS - .5) + " 0 0,1 0.5," + (c - Blockly.BlockSvg.CORNER_RADIUS))))
- }
- ;
- Blockly.BlockSvg.prototype.renderDrawLeft_ = function (a, b) {
- this.outputConnection ? (this.outputConnection.setOffsetInBlock(0, 0),
- a.push("V", Blockly.BlockSvg.TAB_HEIGHT),
- a.push("c 0,-10 -" + Blockly.BlockSvg.TAB_WIDTH + ",8 -" + Blockly.BlockSvg.TAB_WIDTH + ",-7.5 s " + Blockly.BlockSvg.TAB_WIDTH + ",2.5 " + Blockly.BlockSvg.TAB_WIDTH + ",-7.5"),
- this.RTL ? (b.push("M", -.25 * Blockly.BlockSvg.TAB_WIDTH + ",8.4"),
- b.push("l", -.45 * Blockly.BlockSvg.TAB_WIDTH + ",-2.1")) : (b.push("V", Blockly.BlockSvg.TAB_HEIGHT - 1.5),
- b.push("m", -.92 * Blockly.BlockSvg.TAB_WIDTH + ",-0.5 q " + -.19 * Blockly.BlockSvg.TAB_WIDTH + ",-5.5 0,-11"),
- b.push("m", .92 * Blockly.BlockSvg.TAB_WIDTH + ",1 V 0.5 H 1")),
- this.width += Blockly.BlockSvg.TAB_WIDTH) : this.RTL || (this.squareTopLeftCorner_ ? b.push("V", .5) : b.push("V", Blockly.BlockSvg.CORNER_RADIUS));
- a.push("z")
- }
- ;
- Blockly.Events = {};
- Blockly.Events.group_ = "";
- Blockly.Events.recordUndo = !0;
- Blockly.Events.disabled_ = 0;
- Blockly.Events.CREATE = "create";
- Blockly.Events.DELETE = "delete";
- Blockly.Events.CHANGE = "change";
- Blockly.Events.MOVE = "move";
- Blockly.Events.UI = "ui";
- Blockly.Events.FIRE_QUEUE_ = [];
- Blockly.Events.fire = function (a) {
- Blockly.Events.isEnabled() && (Blockly.Events.FIRE_QUEUE_.length || setTimeout(Blockly.Events.fireNow_, 0),
- Blockly.Events.FIRE_QUEUE_.push(a))
- }
- ;
- Blockly.Events.fireNow_ = function () {
- for (var a = Blockly.Events.filter(Blockly.Events.FIRE_QUEUE_, !0), b = Blockly.Events.FIRE_QUEUE_.length = 0, c; c = a[b]; b++) {
- var d = Blockly.Workspace.getById(c.workspaceId);
- d && d.fireChangeListener(c)
- }
- }
- ;
- Blockly.Events.filter = function (a, b) {
- var c = goog.array.clone(a);
- b || c.reverse();
- for (var d = 0, e; e = c[d]; d++)
- for (var f = d + 1, g; g = c[f]; f++)
- e.type == g.type && e.blockId == g.blockId && e.workspaceId == g.workspaceId && (e.type == Blockly.Events.MOVE ? (e.newParentId = g.newParentId,
- e.newInputName = g.newInputName,
- e.newCoordinate = g.newCoordinate,
- c.splice(f, 1),
- f--) : e.type == Blockly.Events.CHANGE && e.element == g.element && e.name == g.name ? (e.newValue = g.newValue,
- c.splice(f, 1),
- f--) : e.type != Blockly.Events.UI || "click" != g.element || "commentOpen" != e.element && "mutatorOpen" != e.element && "warningOpen" != e.element || (e.newValue = g.newValue,
- c.splice(f, 1),
- f--));
- for (d = c.length - 1; 0 <= d; d--)
- c[d].isNull() && c.splice(d, 1);
- b || c.reverse();
- for (d = 1; e = c[d]; d++)
- e.type == Blockly.Events.CHANGE && "mutation" == e.element && c.unshift(c.splice(d, 1)[0]);
- return c
- }
- ;
- Blockly.Events.clearPendingUndo = function () {
- for (var a = 0, b; b = Blockly.Events.FIRE_QUEUE_[a]; a++)
- b.recordUndo = !1
- }
- ;
- Blockly.Events.disable = function () {
- Blockly.Events.disabled_++
- }
- ;
- Blockly.Events.enable = function () {
- Blockly.Events.disabled_--
- }
- ;
- Blockly.Events.isEnabled = function () {
- return 0 == Blockly.Events.disabled_
- }
- ;
- Blockly.Events.getGroup = function () {
- return Blockly.Events.group_
- }
- ;
- Blockly.Events.setGroup = function (a) {
- Blockly.Events.group_ = "boolean" == typeof a ? a ? Blockly.genUid() : "" : a
- }
- ;
- Blockly.Events.getDescendantIds_ = function (a) {
- var b = [];
- a = a.getDescendants();
- for (var c = 0, d; d = a[c]; c++)
- b[c] = d.id;
- return b
- }
- ;
- Blockly.Events.fromJson = function (a, b) {
- switch (a.type) {
- case Blockly.Events.CREATE:
- var c = new Blockly.Events.Create(null);
- break;
- case Blockly.Events.DELETE:
- c = new Blockly.Events.Delete(null);
- break;
- case Blockly.Events.CHANGE:
- c = new Blockly.Events.Change(null);
- break;
- case Blockly.Events.MOVE:
- c = new Blockly.Events.Move(null);
- break;
- case Blockly.Events.UI:
- c = new Blockly.Events.Ui(null);
- break;
- default:
- throw "Unknown event type.";
- }
- c.fromJson(a);
- c.workspaceId = b.id;
- return c
- }
- ;
- Blockly.Events.Abstract = function (a) {
- a && (this.blockId = a.id,
- this.workspaceId = a.workspace.id);
- this.group = Blockly.Events.group_;
- this.recordUndo = Blockly.Events.recordUndo
- }
- ;
- Blockly.Events.Abstract.prototype.toJson = function () {
- var a = {
- type: this.type
- };
- this.blockId && (a.blockId = this.blockId);
- this.group && (a.group = this.group);
- return a
- }
- ;
- Blockly.Events.Abstract.prototype.fromJson = function (a) {
- this.blockId = a.blockId;
- this.group = a.group
- }
- ;
- Blockly.Events.Abstract.prototype.isNull = function () {
- return !1
- }
- ;
- Blockly.Events.Abstract.prototype.run = function (a) { }
- ;
- Blockly.Events.Create = function (a) {
- a && (Blockly.Events.Create.superClass_.constructor.call(this, a),
- this.xml = Blockly.Xml.blockToDomWithXY(a),
- this.ids = Blockly.Events.getDescendantIds_(a))
- }
- ;
- goog.inherits(Blockly.Events.Create, Blockly.Events.Abstract);
- Blockly.Events.Create.prototype.type = Blockly.Events.CREATE;
- Blockly.Events.Create.prototype.toJson = function () {
- var a = Blockly.Events.Create.superClass_.toJson.call(this);
- a.xml = Blockly.Xml.domToText(this.xml);
- a.ids = this.ids;
- return a
- }
- ;
- Blockly.Events.Create.prototype.fromJson = function (a) {
- Blockly.Events.Create.superClass_.fromJson.call(this, a);
- this.xml = Blockly.Xml.textToDom("<xml>" + a.xml + "</xml>").firstChild;
- this.ids = a.ids
- }
- ;
- Blockly.Events.Create.prototype.run = function (a) {
- var b = Blockly.Workspace.getById(this.workspaceId);
- if (a)
- a = goog.dom.createDom("xml"),
- a.appendChild(this.xml),
- Blockly.Xml.domToWorkspace(a, b);
- else {
- a = 0;
- for (var c; c = this.ids[a]; a++) {
- var d = b.getBlockById(c);
- d ? d.dispose(!1, !1) : c == this.blockId && console.warn("Can't uncreate non-existant block: " + c)
- }
- }
- }
- ;
- Blockly.Events.Delete = function (a) {
- if (a) {
- if (a.getParent())
- throw "Connected blocks cannot be deleted.";
- Blockly.Events.Delete.superClass_.constructor.call(this, a);
- this.oldXml = Blockly.Xml.blockToDomWithXY(a);
- this.ids = Blockly.Events.getDescendantIds_(a)
- }
- }
- ;
- goog.inherits(Blockly.Events.Delete, Blockly.Events.Abstract);
- Blockly.Events.Delete.prototype.type = Blockly.Events.DELETE;
- Blockly.Events.Delete.prototype.toJson = function () {
- var a = Blockly.Events.Delete.superClass_.toJson.call(this);
- a.ids = this.ids;
- return a
- }
- ;
- Blockly.Events.Delete.prototype.fromJson = function (a) {
- Blockly.Events.Delete.superClass_.fromJson.call(this, a);
- this.ids = a.ids
- }
- ;
- Blockly.Events.Delete.prototype.run = function (a) {
- var b = Blockly.Workspace.getById(this.workspaceId);
- if (a) {
- a = 0;
- for (var c; c = this.ids[a]; a++) {
- var d = b.getBlockById(c);
- d ? d.dispose(!1, !1) : c == this.blockId && console.warn("Can't delete non-existant block: " + c)
- }
- } else
- a = goog.dom.createDom("xml"),
- a.appendChild(this.oldXml),
- Blockly.Xml.domToWorkspace(a, b)
- }
- ;
- Blockly.Events.Change = function (a, b, c, d, e) {
- a && (Blockly.Events.Change.superClass_.constructor.call(this, a),
- this.element = b,
- this.name = c,
- this.oldValue = d,
- this.newValue = e)
- }
- ;
- goog.inherits(Blockly.Events.Change, Blockly.Events.Abstract);
- Blockly.Events.Change.prototype.type = Blockly.Events.CHANGE;
- Blockly.Events.Change.prototype.toJson = function () {
- var a = Blockly.Events.Change.superClass_.toJson.call(this);
- a.element = this.element;
- this.name && (a.name = this.name);
- a.newValue = this.newValue;
- return a
- }
- ;
- Blockly.Events.Change.prototype.fromJson = function (a) {
- Blockly.Events.Change.superClass_.fromJson.call(this, a);
- this.element = a.element;
- this.name = a.name;
- this.newValue = a.newValue
- }
- ;
- Blockly.Events.Change.prototype.isNull = function () {
- return this.oldValue == this.newValue
- }
- ;
- Blockly.Events.Change.prototype.run = function (a) {
- var b = Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId);
- if (b)
- switch (b.mutator && b.mutator.setVisible(!1),
- a = a ? this.newValue : this.oldValue,
- this.element) {
- case "field":
- (b = b.getField(this.name)) ? (b.callValidator(a),
- b.setValue(a)) : console.warn("Can't set non-existant field: " + this.name);
- break;
- case "comment":
- b.setCommentText(a || null);
- break;
- case "collapsed":
- b.setCollapsed(a);
- break;
- case "disabled":
- b.setDisabled(a);
- break;
- case "inline":
- b.setInputsInline(a);
- break;
- case "mutation":
- var c = "";
- b.mutationToDom && (c = (c = b.mutationToDom()) && Blockly.Xml.domToText(c));
- if (b.domToMutation) {
- a = a || "<mutation></mutation>";
- var d = Blockly.Xml.textToDom("<xml>" + a + "</xml>");
- b.domToMutation(d.firstChild)
- }
- Blockly.Events.fire(new Blockly.Events.Change(b, "mutation", null, c, a));
- break;
- default:
- console.warn("Unknown change type: " + this.element)
- }
- else
- console.warn("Can't change non-existant block: " + this.blockId)
- }
- ;
- Blockly.Events.Move = function (a) {
- a && (Blockly.Events.Move.superClass_.constructor.call(this, a),
- a = this.currentLocation_(),
- this.oldParentId = a.parentId,
- this.oldInputName = a.inputName,
- this.oldCoordinate = a.coordinate)
- }
- ;
- goog.inherits(Blockly.Events.Move, Blockly.Events.Abstract);
- Blockly.Events.Move.prototype.type = Blockly.Events.MOVE;
- Blockly.Events.Move.prototype.toJson = function () {
- var a = Blockly.Events.Move.superClass_.toJson.call(this);
- this.newParentId && (a.newParentId = this.newParentId);
- this.newInputName && (a.newInputName = this.newInputName);
- this.newCoordinate && (a.newCoordinate = Math.round(this.newCoordinate.x) + "," + Math.round(this.newCoordinate.y));
- return a
- }
- ;
- Blockly.Events.Move.prototype.fromJson = function (a) {
- Blockly.Events.Move.superClass_.fromJson.call(this, a);
- this.newParentId = a.newParentId;
- this.newInputName = a.newInputName;
- a.newCoordinate && (a = a.newCoordinate.split(","),
- this.newCoordinate = new goog.math.Coordinate(parseFloat(a[0]), parseFloat(a[1])))
- }
- ;
- Blockly.Events.Move.prototype.recordNew = function () {
- var a = this.currentLocation_();
- this.newParentId = a.parentId;
- this.newInputName = a.inputName;
- this.newCoordinate = a.coordinate
- }
- ;
- Blockly.Events.Move.prototype.currentLocation_ = function () {
- var a = Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId)
- , b = {}
- , c = a.getParent();
- if (c) {
- if (b.parentId = c.id,
- a = c.getInputWithBlock(a))
- b.inputName = a.name
- } else
- b.coordinate = a.getRelativeToSurfaceXY();
- return b
- }
- ;
- Blockly.Events.Move.prototype.isNull = function () {
- return this.oldParentId == this.newParentId && this.oldInputName == this.newInputName && goog.math.Coordinate.equals(this.oldCoordinate, this.newCoordinate)
- }
- ;
- Blockly.Events.Move.prototype.run = function (a) {
- var b = Blockly.Workspace.getById(this.workspaceId)
- , c = b.getBlockById(this.blockId);
- if (c) {
- var d = a ? this.newParentId : this.oldParentId
- , e = a ? this.newInputName : this.oldInputName;
- a = a ? this.newCoordinate : this.oldCoordinate;
- var f = null;
- if (d && (f = b.getBlockById(d),
- !f)) {
- console.warn("Can't connect to non-existant block: " + d);
- return
- }
- c.getParent() && c.unplug();
- if (a)
- e = c.getRelativeToSurfaceXY(),
- c.moveBy(a.x - e.x, a.y - e.y);
- else {
- c = c.outputConnection || c.previousConnection;
- if (e) {
- if (b = f.getInput(e))
- var g = b.connection
- } else
- c.type == Blockly.PREVIOUS_STATEMENT && (g = f.nextConnection);
- g ? c.connect(g) : console.warn("Can't connect to non-existant input: " + e)
- }
- } else
- console.warn("Can't move non-existant block: " + this.blockId)
- }
- ;
- Blockly.Events.Ui = function (a, b, c, d) {
- Blockly.Events.Ui.superClass_.constructor.call(this, a);
- this.element = b;
- this.oldValue = c;
- this.newValue = d;
- this.recordUndo = !1
- }
- ;
- goog.inherits(Blockly.Events.Ui, Blockly.Events.Abstract);
- Blockly.Events.Ui.prototype.type = Blockly.Events.UI;
- Blockly.Events.Ui.prototype.toJson = function () {
- var a = Blockly.Events.Ui.superClass_.toJson.call(this);
- a.element = this.element;
- void 0 !== this.newValue && (a.newValue = this.newValue);
- return a
- }
- ;
- Blockly.Events.Ui.prototype.fromJson = function (a) {
- Blockly.Events.Ui.superClass_.fromJson.call(this, a);
- this.element = a.element;
- this.newValue = a.newValue
- }
- ;
- Blockly.Events.disableOrphans = function (a) {
- if (a.type == Blockly.Events.MOVE || a.type == Blockly.Events.CREATE) {
- Blockly.Events.disable();
- if (a = Blockly.Workspace.getById(a.workspaceId).getBlockById(a.blockId))
- if (a.getParent() && !a.getParent().disabled) {
- a = a.getDescendants();
- for (var b = 0, c; c = a[b]; b++)
- c.setDisabled(!1)
- } else if ((a.outputConnection || a.previousConnection) && Blockly.dragMode_ == Blockly.DRAG_NONE) {
- do
- a.setDisabled(!0),
- a = a.getNextBlock();
- while (a)
- }
- Blockly.Events.enable()
- }
- }
- ;
- Blockly.Msg = {};
- goog.getMsgOrig = goog.getMsg;
- goog.getMsg = function (a, b) {
- var c = goog.getMsg.blocklyMsgMap[a];
- c && (a = Blockly.Msg[c]);
- return goog.getMsgOrig(a, b)
- }
- ;
- goog.getMsg.blocklyMsgMap = {
- Today: "TODAY"
- };
- Blockly.FieldTextInput = function (a, b) {
- Blockly.FieldTextInput.superClass_.constructor.call(this, a, b)
- }
- ;
- goog.inherits(Blockly.FieldTextInput, Blockly.Field);
- Blockly.FieldTextInput.FONTSIZE = 11;
- Blockly.FieldTextInput.prototype.CURSOR = "text";
- Blockly.FieldTextInput.prototype.spellcheck_ = !0;
- Blockly.FieldTextInput.prototype.dispose = function () {
- Blockly.WidgetDiv.hideIfOwner(this);
- Blockly.FieldTextInput.superClass_.dispose.call(this)
- }
- ;
- Blockly.FieldTextInput.prototype.setValue = function (a) {
- if (null !== a) {
- if (this.sourceBlock_) {
- var b = this.callValidator(a);
- null !== b && (a = b)
- }
- Blockly.Field.prototype.setValue.call(this, a)
- }
- }
- ;
- Blockly.FieldTextInput.prototype.setSpellcheck = function (a) {
- this.spellcheck_ = a
- }
- ;
- Blockly.FieldTextInput.prototype.showEditor_ = function (a) {
- this.workspace_ = this.sourceBlock_.workspace;
- a = a || !1;
- if (!a && (goog.userAgent.MOBILE || goog.userAgent.ANDROID || goog.userAgent.IPAD)) {
- var b = this;
- Blockly.prompt(Blockly.Msg.CHANGE_VALUE_TITLE, this.text_, function (a) {
- b.sourceBlock_ && (a = b.callValidator(a));
- b.setValue(a)
- })
- } else {
- Blockly.WidgetDiv.show(this, this.sourceBlock_.RTL, this.widgetDispose_());
- var c = Blockly.WidgetDiv.DIV
- , d = goog.dom.createDom("INPUT", "blocklyHtmlInput");
- d.setAttribute("spellcheck", this.spellcheck_);
- var e = Blockly.FieldTextInput.FONTSIZE * this.workspace_.scale + "pt";
- c.style.fontSize = e;
- d.style.fontSize = e;
- Blockly.FieldTextInput.htmlInput_ = d;
- c.appendChild(d);
- d.value = d.defaultValue = this.text_;
- d.oldValue_ = null;
- this.validate_();
- this.resizeEditor_();
- a || (d.focus(),
- d.select());
- d.onKeyDownWrapper_ = Blockly.bindEventWithChecks_(d, "keydown", this, this.onHtmlInputKeyDown_);
- d.onKeyUpWrapper_ = Blockly.bindEventWithChecks_(d, "keyup", this, this.onHtmlInputChange_);
- d.onKeyPressWrapper_ = Blockly.bindEventWithChecks_(d, "keypress", this, this.onHtmlInputChange_);
- d.onWorkspaceChangeWrapper_ = this.resizeEditor_.bind(this);
- this.workspace_.addChangeListener(d.onWorkspaceChangeWrapper_)
- }
- }
- ;
- Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_ = function (a) {
- var b = Blockly.FieldTextInput.htmlInput_;
- 13 == a.keyCode ? Blockly.WidgetDiv.hide() : 27 == a.keyCode ? (b.value = b.defaultValue,
- Blockly.WidgetDiv.hide()) : 9 == a.keyCode && (Blockly.WidgetDiv.hide(),
- this.sourceBlock_.tab(this, !a.shiftKey),
- a.preventDefault())
- }
- ;
- Blockly.FieldTextInput.prototype.onHtmlInputChange_ = function (a) {
- a = Blockly.FieldTextInput.htmlInput_;
- var b = a.value;
- b !== a.oldValue_ ? (a.oldValue_ = b,
- this.setValue(b),
- this.validate_()) : goog.userAgent.WEBKIT && this.sourceBlock_.render();
- this.resizeEditor_();
- Blockly.svgResize(this.sourceBlock_.workspace)
- }
- ;
- Blockly.FieldTextInput.prototype.validate_ = function () {
- var a = !0;
- goog.asserts.assertObject(Blockly.FieldTextInput.htmlInput_);
- var b = Blockly.FieldTextInput.htmlInput_;
- this.sourceBlock_ && (a = this.callValidator(b.value));
- null === a ? Blockly.addClass_(b, "blocklyInvalidInput") : Blockly.removeClass_(b, "blocklyInvalidInput")
- }
- ;
- Blockly.FieldTextInput.prototype.resizeEditor_ = function () {
- var a = Blockly.WidgetDiv.DIV
- , b = this.fieldGroup_.getBBox();
- a.style.width = b.width * this.workspace_.scale + "px";
- a.style.height = b.height * this.workspace_.scale + "px";
- b = this.getAbsoluteXY_();
- if (this.sourceBlock_.RTL) {
- var c = this.getScaledBBox_();
- b.x += c.width;
- b.x -= a.offsetWidth
- }
- b.y += 1;
- goog.userAgent.GECKO && Blockly.WidgetDiv.DIV.style.top && (--b.x,
- --b.y);
- goog.userAgent.WEBKIT && (b.y -= 3);
- a.style.left = b.x + "px";
- a.style.top = b.y + "px"
- }
- ;
- Blockly.FieldTextInput.prototype.widgetDispose_ = function () {
- var a = this;
- return function () {
- var b = Blockly.FieldTextInput.htmlInput_
- , c = b.value;
- if (a.sourceBlock_)
- if (c = a.callValidator(c),
- null === c)
- c = b.defaultValue;
- else if (a.onFinishEditing_)
- a.onFinishEditing_(c);
- a.setValue(c);
- a.sourceBlock_.rendered && a.sourceBlock_.render();
- Blockly.unbindEvent_(b.onKeyDownWrapper_);
- Blockly.unbindEvent_(b.onKeyUpWrapper_);
- Blockly.unbindEvent_(b.onKeyPressWrapper_);
- a.workspace_.removeChangeListener(b.onWorkspaceChangeWrapper_);
- Blockly.FieldTextInput.htmlInput_ = null;
- b = Blockly.WidgetDiv.DIV.style;
- b.width = "auto";
- b.height = "auto";
- b.fontSize = ""
- }
- }
- ;
- Blockly.FieldTextInput.numberValidator = function (a) {
- console.warn("Blockly.FieldTextInput.numberValidator is deprecated. Use Blockly.FieldNumber instead.");
- if (null === a)
- return null;
- a = String(a);
- a = a.replace(/O/ig, "0");
- a = a.replace(/,/g, "");
- a = parseFloat(a || 0);
- return isNaN(a) ? null : String(a)
- }
- ;
- Blockly.FieldTextInput.nonnegativeIntegerValidator = function (a) {
- (a = Blockly.FieldTextInput.numberValidator(a)) && (a = String(Math.max(0, Math.floor(a))));
- return a
- }
- ;
- Blockly.FieldAngle = function (a, b) {
- this.symbol_ = Blockly.createSvgElement("tspan", {}, null);
- this.symbol_.appendChild(document.createTextNode("\u00b0"));
- Blockly.FieldAngle.superClass_.constructor.call(this, a, b)
- }
- ;
- goog.inherits(Blockly.FieldAngle, Blockly.FieldTextInput);
- Blockly.FieldAngle.ROUND = 15;
- Blockly.FieldAngle.HALF = 50;
- Blockly.FieldAngle.CLOCKWISE = !1;
- Blockly.FieldAngle.OFFSET = 0;
- Blockly.FieldAngle.WRAP = 360;
- Blockly.FieldAngle.RADIUS = Blockly.FieldAngle.HALF - 1;
- Blockly.FieldAngle.prototype.dispose_ = function () {
- var a = this;
- return function () {
- Blockly.FieldAngle.superClass_.dispose_.call(a)();
- a.gauge_ = null;
- a.clickWrapper_ && Blockly.unbindEvent_(a.clickWrapper_);
- a.moveWrapper1_ && Blockly.unbindEvent_(a.moveWrapper1_);
- a.moveWrapper2_ && Blockly.unbindEvent_(a.moveWrapper2_)
- }
- }
- ;
- Blockly.FieldAngle.prototype.showEditor_ = function () {
- Blockly.FieldAngle.superClass_.showEditor_.call(this, goog.userAgent.MOBILE || goog.userAgent.ANDROID || goog.userAgent.IPAD);
- var a = Blockly.WidgetDiv.DIV;
- if (a.firstChild) {
- a = Blockly.createSvgElement("svg", {
- xmlns: "http://www.w3.org/2000/svg",
- "xmlns:html": "http://www.w3.org/1999/xhtml",
- "xmlns:xlink": "http://www.w3.org/1999/xlink",
- version: "1.1",
- height: 2 * Blockly.FieldAngle.HALF + "px",
- width: 2 * Blockly.FieldAngle.HALF + "px"
- }, a);
- var b = Blockly.createSvgElement("circle", {
- cx: Blockly.FieldAngle.HALF,
- cy: Blockly.FieldAngle.HALF,
- r: Blockly.FieldAngle.RADIUS,
- "class": "blocklyAngleCircle"
- }, a);
- this.gauge_ = Blockly.createSvgElement("path", {
- "class": "blocklyAngleGauge"
- }, a);
- this.line_ = Blockly.createSvgElement("line", {
- x1: Blockly.FieldAngle.HALF,
- y1: Blockly.FieldAngle.HALF,
- "class": "blocklyAngleLine"
- }, a);
- for (var c = 0; 360 > c; c += 15)
- Blockly.createSvgElement("line", {
- x1: Blockly.FieldAngle.HALF + Blockly.FieldAngle.RADIUS,
- y1: Blockly.FieldAngle.HALF,
- x2: Blockly.FieldAngle.HALF + Blockly.FieldAngle.RADIUS - (0 == c % 45 ? 10 : 5),
- y2: Blockly.FieldAngle.HALF,
- "class": "blocklyAngleMarks",
- transform: "rotate(" + c + "," + Blockly.FieldAngle.HALF + "," + Blockly.FieldAngle.HALF + ")"
- }, a);
- a.style.marginLeft = 15 - Blockly.FieldAngle.RADIUS + "px";
- this.clickWrapper_ = Blockly.bindEvent_(a, "click", this, Blockly.WidgetDiv.hide);
- this.moveWrapper1_ = Blockly.bindEvent_(b, "mousemove", this, this.onMouseMove);
- this.moveWrapper2_ = Blockly.bindEvent_(this.gauge_, "mousemove", this, this.onMouseMove);
- this.updateGraph_()
- }
- }
- ;
- Blockly.FieldAngle.prototype.onMouseMove = function (a) {
- var b = this.gauge_.ownerSVGElement.getBoundingClientRect()
- , c = a.clientX - b.left - Blockly.FieldAngle.HALF;
- a = a.clientY - b.top - Blockly.FieldAngle.HALF;
- b = Math.atan(-a / c);
- isNaN(b) || (b = goog.math.toDegrees(b),
- 0 > c ? b += 180 : 0 < a && (b += 360),
- b = Blockly.FieldAngle.CLOCKWISE ? Blockly.FieldAngle.OFFSET + 360 - b : b - Blockly.FieldAngle.OFFSET,
- Blockly.FieldAngle.ROUND && (b = Math.round(b / Blockly.FieldAngle.ROUND) * Blockly.FieldAngle.ROUND),
- b = this.callValidator(b),
- Blockly.FieldTextInput.htmlInput_.value = b,
- this.setValue(b),
- this.validate_(),
- this.resizeEditor_())
- }
- ;
- Blockly.FieldAngle.prototype.setText = function (a) {
- Blockly.FieldAngle.superClass_.setText.call(this, a);
- this.textElement_ && (this.updateGraph_(),
- this.sourceBlock_.RTL ? this.textElement_.insertBefore(this.symbol_, this.textElement_.firstChild) : this.textElement_.appendChild(this.symbol_),
- this.size_.width = 0)
- }
- ;
- Blockly.FieldAngle.prototype.updateGraph_ = function () {
- if (this.gauge_) {
- var a = Number(this.getText()) + Blockly.FieldAngle.OFFSET
- , b = goog.math.toRadians(a);
- a = ["M ", Blockly.FieldAngle.HALF, ",", Blockly.FieldAngle.HALF];
- var c = Blockly.FieldAngle.HALF
- , d = Blockly.FieldAngle.HALF;
- if (!isNaN(b)) {
- var e = goog.math.toRadians(Blockly.FieldAngle.OFFSET)
- , f = Math.cos(e) * Blockly.FieldAngle.RADIUS
- , g = Math.sin(e) * -Blockly.FieldAngle.RADIUS;
- Blockly.FieldAngle.CLOCKWISE && (b = 2 * e - b);
- c += Math.cos(b) * Blockly.FieldAngle.RADIUS;
- d -= Math.sin(b) * Blockly.FieldAngle.RADIUS;
- b = Math.abs(Math.floor((b - e) / Math.PI) % 2);
- Blockly.FieldAngle.CLOCKWISE && (b = 1 - b);
- a.push(" l ", f, ",", g, " A ", Blockly.FieldAngle.RADIUS, ",", Blockly.FieldAngle.RADIUS, " 0 ", b, " ", Number(Blockly.FieldAngle.CLOCKWISE), " ", c, ",", d, " z")
- }
- this.gauge_.setAttribute("d", a.join(""));
- this.line_.setAttribute("x2", c);
- this.line_.setAttribute("y2", d)
- }
- }
- ;
- Blockly.FieldAngle.prototype.classValidator = function (a) {
- if (null === a)
- return null;
- a = parseFloat(a || 0);
- if (isNaN(a))
- return null;
- a %= 360;
- 0 > a && (a += 360);
- a > Blockly.FieldAngle.WRAP && (a -= 360);
- return String(a)
- }
- ;
- Blockly.FieldCheckbox = function (a, b) {
- Blockly.FieldCheckbox.superClass_.constructor.call(this, "", b);
- this.setValue(a)
- }
- ;
- goog.inherits(Blockly.FieldCheckbox, Blockly.Field);
- Blockly.FieldCheckbox.CHECK_CHAR = "\u2713";
- Blockly.FieldCheckbox.prototype.CURSOR = "default";
- Blockly.FieldCheckbox.prototype.init = function () {
- if (!this.fieldGroup_) {
- Blockly.FieldCheckbox.superClass_.init.call(this);
- this.checkElement_ = Blockly.createSvgElement("text", {
- "class": "blocklyText blocklyCheckbox",
- x: -3,
- y: 14
- }, this.fieldGroup_);
- var a = document.createTextNode(Blockly.FieldCheckbox.CHECK_CHAR);
- this.checkElement_.appendChild(a);
- this.checkElement_.style.display = this.state_ ? "block" : "none"
- }
- }
- ;
- Blockly.FieldCheckbox.prototype.getValue = function () {
- return String(this.state_).toUpperCase()
- }
- ;
- Blockly.FieldCheckbox.prototype.setValue = function (a) {
- a = "TRUE" == a.toUpperCase();
- this.state_ !== a && (this.sourceBlock_ && Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_, "field", this.name, this.state_, a)),
- this.state_ = a,
- this.checkElement_ && (this.checkElement_.style.display = a ? "block" : "none"))
- }
- ;
- Blockly.FieldCheckbox.prototype.showEditor_ = function () {
- var a = !this.state_;
- this.sourceBlock_ && (a = this.callValidator(a));
- null !== a && this.setValue(String(a).toUpperCase())
- }
- ;
- Blockly.FieldColour = function (a, b) {
- Blockly.FieldColour.superClass_.constructor.call(this, a, b);
- this.setText(Blockly.Field.NBSP + Blockly.Field.NBSP + Blockly.Field.NBSP)
- }
- ;
- goog.inherits(Blockly.FieldColour, Blockly.Field);
- Blockly.FieldColour.prototype.colours_ = null;
- Blockly.FieldColour.prototype.columns_ = 0;
- Blockly.FieldColour.prototype.init = function () {
- Blockly.FieldColour.superClass_.init.call(this);
- this.borderRect_.style.fillOpacity = 1;
- this.setValue(this.getValue())
- }
- ;
- Blockly.FieldColour.prototype.CURSOR = "default";
- Blockly.FieldColour.prototype.dispose = function () {
- Blockly.WidgetDiv.hideIfOwner(this);
- Blockly.FieldColour.superClass_.dispose.call(this)
- }
- ;
- Blockly.FieldColour.prototype.getValue = function () {
- return this.colour_
- }
- ;
- Blockly.FieldColour.prototype.setValue = function (a) {
- this.sourceBlock_ && Blockly.Events.isEnabled() && this.colour_ != a && Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_, "field", this.name, this.colour_, a));
- this.colour_ = a;
- this.borderRect_ && (this.borderRect_.style.fill = a)
- }
- ;
- Blockly.FieldColour.prototype.getText = function () {
- var a = this.colour_
- , b = a.match(/^#(.)\1(.)\2(.)\3$/);
- b && (a = "#" + b[1] + b[2] + b[3]);
- return a
- }
- ;
- Blockly.FieldColour.COLOURS = goog.ui.ColorPicker.SIMPLE_GRID_COLORS;
- Blockly.FieldColour.COLUMNS = 7;
- Blockly.FieldColour.prototype.setColours = function (a) {
- this.colours_ = a;
- return this
- }
- ;
- Blockly.FieldColour.prototype.setColumns = function (a) {
- this.columns_ = a;
- return this
- }
- ;
- Blockly.FieldColour.prototype.showEditor_ = function () {
- Blockly.WidgetDiv.show(this, this.sourceBlock_.RTL, Blockly.FieldColour.widgetDispose_);
- var a = new goog.ui.ColorPicker;
- a.setSize(this.columns_ || Blockly.FieldColour.COLUMNS);
- a.setColors(this.colours_ || Blockly.FieldColour.COLOURS);
- var b = goog.dom.getViewportSize()
- , c = goog.style.getViewportPageOffset(document)
- , d = this.getAbsoluteXY_()
- , e = this.getScaledBBox_();
- a.render(Blockly.WidgetDiv.DIV);
- a.setSelectedColor(this.getValue());
- var f = goog.style.getSize(a.getElement());
- d.y = d.y + f.height + e.height >= b.height + c.y ? d.y - (f.height - 1) : d.y + (e.height - 1);
- this.sourceBlock_.RTL ? (d.x += e.width,
- d.x -= f.width,
- d.x < c.x && (d.x = c.x)) : d.x > b.width + c.x - f.width && (d.x = b.width + c.x - f.width);
- Blockly.WidgetDiv.position(d.x, d.y, b, c, this.sourceBlock_.RTL);
- var g = this;
- Blockly.FieldColour.changeEventKey_ = goog.events.listen(a, goog.ui.ColorPicker.EventType.CHANGE, function (a) {
- a = a.target.getSelectedColor() || "#000000";
- Blockly.WidgetDiv.hide();
- g.sourceBlock_ && (a = g.callValidator(a));
- null !== a && g.setValue(a)
- })
- }
- ;
- Blockly.FieldColour.widgetDispose_ = function () {
- Blockly.FieldColour.changeEventKey_ && goog.events.unlistenByKey(Blockly.FieldColour.changeEventKey_)
- }
- ;
- Blockly.FieldDropdown = function (a, b) {
- this.menuGenerator_ = a;
- this.trimOptions_();
- var c = this.getOptions_()[0];
- Blockly.FieldDropdown.superClass_.constructor.call(this, c[1], b)
- }
- ;
- goog.inherits(Blockly.FieldDropdown, Blockly.Field);
- Blockly.FieldDropdown.CHECKMARK_OVERHANG = 25;
- Blockly.FieldDropdown.ARROW_CHAR = goog.userAgent.ANDROID ? "\u25bc" : "\u25be";
- Blockly.FieldDropdown.prototype.CURSOR = "default";
- Blockly.FieldDropdown.prototype.value_ = "";
- Blockly.FieldDropdown.prototype.init = function () {
- if (!this.fieldGroup_) {
- this.arrow_ = Blockly.createSvgElement("tspan", {}, null);
- this.arrow_.appendChild(document.createTextNode(this.sourceBlock_.RTL ? Blockly.FieldDropdown.ARROW_CHAR + " " : " " + Blockly.FieldDropdown.ARROW_CHAR));
- Blockly.FieldDropdown.superClass_.init.call(this);
- var a = this.text_;
- this.text_ = null;
- this.setText(a)
- }
- }
- ;
- Blockly.FieldDropdown.prototype.showEditor_ = function () {
- Blockly.WidgetDiv.show(this, this.sourceBlock_.RTL, null);
- var a = this
- , b = new goog.ui.Menu;
- b.setRightToLeft(this.sourceBlock_.RTL);
- let isOptionId = false
- for (var c = this.getOptions_(), d = 0; d < c.length; d++) {
- console.log("c[d]", c[d])
- var e = c[d][1]
- , f = null
- if (c[d][2]) {
- isOptionId = true
- let m = document.createElement("div")
- m.innerHTML = `<span>${c[d][0]}</span>:<input type="text" id="${c[d][2]}" placeholder="${c[d][0]}" />`
- f = new goog.ui.MenuItem(m);
- } else {
- f = new goog.ui.MenuItem(c[d][0]);
- f.setRightToLeft(this.sourceBlock_.RTL);
- f.setValue(e);
- f.setCheckable(!0);
- f.setChecked(e == this.value_)
- }
- b.addChild(f, !0);
- }
- if (!isOptionId) {
- goog.events.listen(b, goog.ui.Component.EventType.ACTION, function (b) {
- if (b = b.target)
- a.onItemSelected(this, b);
- Blockly.WidgetDiv.hideIfOwner(a)
- });
- b.getHandler().listen(b.getElement(), goog.events.EventType.TOUCHSTART, function (a) {
- this.getOwnerControl(a.target).handleMouseDown(a)
- });
- b.getHandler().listen(b.getElement(), goog.events.EventType.TOUCHEND, function (a) {
- this.getOwnerControl(a.target).performActionInternal(a)
- });
- } else {
- goog.events.listen(b, goog.ui.Component.EventType.ACTION, function (b) {
- console.log("ACTION", b)
- console.log(document.getElementById("img"))
- document.getElementById("img").onchange = function (e) {
- console.log("e", e)
- }
- if (b = b.target)
- a.onItemSelected(this, b);
- // Blockly.WidgetDiv.hideIfOwner(a)
- });
- }
- c = goog.dom.getViewportSize();
- d = goog.style.getViewportPageOffset(document);
- e = this.getAbsoluteXY_();
- f = this.getScaledBBox_();
- b.render(Blockly.WidgetDiv.DIV);
- var g = b.getElement();
- Blockly.addClass_(g, "blocklyDropdownMenu");
- var h = goog.style.getSize(g);
- h.height = g.scrollHeight;
- e.y = e.y + h.height + f.height >= c.height + d.y ? e.y - (h.height + 2) : e.y + f.height;
- this.sourceBlock_.RTL ? (e.x += f.width,
- e.x += Blockly.FieldDropdown.CHECKMARK_OVERHANG,
- e.x < d.x + h.width && (e.x = d.x + h.width)) : (e.x -= Blockly.FieldDropdown.CHECKMARK_OVERHANG,
- e.x > c.width + d.x - h.width && (e.x = c.width + d.x - h.width));
- Blockly.WidgetDiv.position(e.x, e.y, c, d, this.sourceBlock_.RTL);
- b.setAllowAutoFocus(!0);
- g.focus()
- }
- ;
- Blockly.FieldDropdown.prototype.onItemSelected = function (a, b) {
- var c = b.getValue();
- this.sourceBlock_ && (c = this.callValidator(c));
- null !== c && this.setValue(c)
- }
- ;
- Blockly.FieldDropdown.prototype.trimOptions_ = function () {
- this.suffixField = this.prefixField = null;
- var a = this.menuGenerator_;
- if (goog.isArray(a) && !(2 > a.length)) {
- var b = a.map(function (a) {
- return a[0]
- })
- , c = Blockly.shortestStringLength(b)
- , d = Blockly.commonWordPrefix(b, c)
- , e = Blockly.commonWordSuffix(b, c);
- if ((d || e) && !(c <= d + e)) {
- d && (this.prefixField = b[0].substring(0, d - 1));
- e && (this.suffixField = b[0].substr(1 - e));
- b = [];
- for (c = 0; c < a.length; c++) {
- var f = a[c][0]
- , g = a[c][1];
- f = f.substring(d, f.length - e);
- b[c] = [f, g]
- }
- this.menuGenerator_ = b
- }
- }
- }
- ;
- Blockly.FieldDropdown.prototype.getOptions_ = function () {
- return goog.isFunction(this.menuGenerator_) ? this.menuGenerator_.call(this) : this.menuGenerator_
- }
- ;
- Blockly.FieldDropdown.prototype.getValue = function () {
- return this.value_
- }
- ;
- Blockly.FieldDropdown.prototype.setValue = function (a) {
- if (null !== a && a !== this.value_) {
- this.sourceBlock_ && Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_, "field", this.name, this.value_, a));
- this.value_ = a;
- for (var b = this.getOptions_(), c = 0; c < b.length; c++)
- if (b[c][1] == a) {
- this.setText(b[c][0]);
- return
- }
- this.setText(a)
- }
- }
- ;
- Blockly.FieldDropdown.prototype.setText = function (a) {
- this.sourceBlock_ && this.arrow_ && (this.arrow_.style.fill = this.sourceBlock_.getColour());
- null !== a && a !== this.text_ && (this.text_ = a,
- this.updateTextNode_(),
- this.textElement_ && (this.sourceBlock_.RTL ? this.textElement_.insertBefore(this.arrow_, this.textElement_.firstChild) : this.textElement_.appendChild(this.arrow_)),
- this.sourceBlock_ && this.sourceBlock_.rendered && (this.sourceBlock_.render(),
- this.sourceBlock_.bumpNeighbours_()))
- }
- ;
- Blockly.FieldDropdown.prototype.dispose = function () {
- Blockly.WidgetDiv.hideIfOwner(this);
- Blockly.FieldDropdown.superClass_.dispose.call(this)
- }
- ;
- Blockly.FieldImage = function (a, b, c, d) {
- this.sourceBlock_ = null;
- this.height_ = Number(c);
- this.width_ = Number(b);
- this.size_ = new goog.math.Size(this.width_, this.height_ + 2 * Blockly.BlockSvg.INLINE_PADDING_Y);
- this.text_ = d || "";
- this.setValue(a)
- }
- ;
- goog.inherits(Blockly.FieldImage, Blockly.Field);
- Blockly.FieldImage.prototype.rectElement_ = null;
- Blockly.FieldImage.prototype.EDITABLE = !1;
- Blockly.FieldImage.prototype.init = function () {
- if (!this.fieldGroup_) {
- this.fieldGroup_ = Blockly.createSvgElement("g", {}, null);
- this.visible_ || (this.fieldGroup_.style.display = "none");
- this.imageElement_ = Blockly.createSvgElement("image", {
- height: this.height_ + "px",
- width: this.width_ + "px"
- }, this.fieldGroup_);
- this.setValue(this.src_);
- goog.userAgent.GECKO && (this.rectElement_ = Blockly.createSvgElement("rect", {
- height: this.height_ + "px",
- width: this.width_ + "px",
- "fill-opacity": 0
- }, this.fieldGroup_));
- this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_);
- var a = this.rectElement_ || this.imageElement_;
- a.tooltip = this.sourceBlock_;
- Blockly.Tooltip.bindMouseEvents(a)
- }
- }
- ;
- Blockly.FieldImage.prototype.dispose = function () {
- goog.dom.removeNode(this.fieldGroup_);
- this.rectElement_ = this.imageElement_ = this.fieldGroup_ = null
- }
- ;
- Blockly.FieldImage.prototype.setTooltip = function (a) {
- (this.rectElement_ || this.imageElement_).tooltip = a
- }
- ;
- Blockly.FieldImage.prototype.getValue = function () {
- return this.src_
- }
- ;
- Blockly.FieldImage.prototype.setValue = function (a) {
- null !== a && (this.src_ = a,
- this.imageElement_ && this.imageElement_.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", goog.isString(a) ? a : ""))
- }
- ;
- Blockly.FieldImage.prototype.setText = function (a) {
- null !== a && (this.text_ = a)
- }
- ;
- Blockly.FieldImage.prototype.render_ = function () { }
- ;
- Blockly.FieldTextArea = function (a, b) {
- Blockly.FieldTextArea.superClass_.constructor.call(this, a, b)
- }
- ;
- goog.inherits(Blockly.FieldTextArea, Blockly.FieldTextInput);
- Blockly.FieldTextArea.prototype.updateTextNode_ = function () {
- if (this.textElement_) {
- var a = this.text_;
- goog.dom.removeChildren(this.textElement_);
- a = a.replace(/ /g, Blockly.Field.NBSP);
- this.sourceBlock_.RTL && a && (a += "\u200f");
- a || (a = Blockly.Field.NBSP);
- a = a.split("\n");
- for (var b = "0em", c = 0; c < a.length; c++) {
- var d = Blockly.createSvgElement("tspan", {
- dy: b,
- x: 0
- }, this.textElement_);
- b = "1em";
- "" == a[c] && (a[c] = "\u3000");
- var e = document.createTextNode(a[c]);
- d.appendChild(e)
- }
- this.size_.width = 0
- }
- }
- ;
- Blockly.FieldTextArea.prototype.render_ = function () {
- this.text_ = this.text_.replace(/\s+$/, "");
- this.size_.width = this.textElement_.getBBox().width + 5;
- this.size_.height = 20 * (this.text_.split(/\n/).length || 1) + (Blockly.BlockSvg.SEP_SPACE_Y + 5);
- this.minWidth_ && this.size_.width < this.minWidth_ && (this.size_.width = this.minWidth_);
- this.borderRect_ && (this.borderRect_.setAttribute("width", this.size_.width + Blockly.BlockSvg.SEP_SPACE_X),
- this.borderRect_.setAttribute("height", this.size_.height - (Blockly.BlockSvg.SEP_SPACE_Y + 5)))
- }
- ;
- Blockly.FieldTextArea.prototype.showEditor_ = function (a) {
- var b = a || !1;
- if (!b && (goog.userAgent.MOBILE || goog.userAgent.ANDROID || goog.userAgent.IPAD))
- a = window.prompt(Blockly.Msg.CHANGE_VALUE_TITLE, this.text_),
- this.changeHandler_ && (b = this.changeHandler_(a),
- void 0 !== b && (a = b)),
- null !== a && this.setText(a);
- else {
- Blockly.WidgetDiv.show(this, this.sourceBlock_.RTL, this.widgetDispose_());
- var c = Blockly.WidgetDiv.DIV;
- a = goog.dom.createDom("textarea", "blocklyHtmlInput");
- Blockly.FieldTextInput.htmlInput_ = a;
- a.style.resize = "none";
- a.style["line-height"] = "20px";
- a.style.height = "100%";
- c.appendChild(a);
- a.value = a.defaultValue = this.text_;
- a.oldValue_ = null;
- this.validate_();
- this.resizeEditor_();
- b || (a.focus(),
- a.select());
- a.onKeyDownWrapper_ = Blockly.bindEvent_(a, "keydown", this, this.onHtmlInputKeyDown_);
- a.onKeyUpWrapper_ = Blockly.bindEvent_(a, "keyup", this, this.onHtmlInputChange_);
- a.onKeyPressWrapper_ = Blockly.bindEvent_(a, "keypress", this, this.onHtmlInputChange_);
- b = this.sourceBlock_.workspace.getCanvas();
- a.onWorkspaceChangeWrapper_ = Blockly.bindEvent_(b, "blocklyWorkspaceChange", this, this.resizeEditor_)
- }
- }
- ;
- Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_ = function (a) {
- var b = Blockly.FieldTextInput.htmlInput_;
- a.keyCode == goog.events.KeyCodes.ESC && (this.setText(b.defaultValue),
- Blockly.WidgetDiv.hide())
- }
- ;
- Blockly.FieldTextArea.prototype.onHtmlInputChange_ = function (a) {
- Blockly.FieldTextInput.prototype.onHtmlInputChange_.call(this, a);
- var b = Blockly.FieldTextInput.htmlInput_;
- a.keyCode == goog.events.KeyCodes.ESC ? (this.setText(b.defaultValue),
- Blockly.WidgetDiv.hide()) : (Blockly.FieldTextInput.prototype.onHtmlInputChange_.call(this, a),
- this.resizeEditor_())
- }
- ;
- Blockly.FieldTextArea.prototype.resizeEditor_ = function () {
- var a = Blockly.WidgetDiv.DIV
- , b = this.fieldGroup_.getBBox();
- a.style.width = b.width + "px";
- a.style.height = b.height + "px";
- b = this.getAbsoluteXY_();
- if (this.RTL) {
- var c = this.borderRect_.getBBox();
- b.x += c.width;
- b.x -= a.offsetWidth
- }
- b.y += 1;
- goog.userAgent.WEBKIT && (b.y -= 3);
- a.style.left = b.x + "px";
- a.style.top = b.y + "px"
- }
- ;
- Blockly.FieldTextArea.prototype.widgetDispose_ = function () {
- var a = this;
- return function () {
- var b = Blockly.FieldTextInput.htmlInput_
- , c = b.value;
- a.changeHandler_ && (c = a.changeHandler_(c),
- null === c && (c = b.defaultValue));
- c = c.replace(/\s+$/, "");
- a.setText(c);
- a.sourceBlock_.rendered && a.sourceBlock_.render();
- Blockly.unbindEvent_(b.onKeyUpWrapper_);
- Blockly.unbindEvent_(b.onKeyPressWrapper_);
- try {
- a.sourceBlock_.workspace.removeChangeListener(b.onWorkspaceChangeWrapper_)
- } catch (d) { }
- Blockly.FieldTextInput.htmlInput_ = null;
- b = Blockly.WidgetDiv.DIV.style;
- b.width = "auto";
- b.height = "auto";
- b.fontSize = ""
- }
- }
- ;
- Blockly.FieldNumber = function (a, b, c, d, e) {
- a = String(a);
- Blockly.FieldNumber.superClass_.constructor.call(this, a, e);
- this.setConstraints(b, c, d)
- }
- ;
- goog.inherits(Blockly.FieldNumber, Blockly.FieldTextInput);
- Blockly.FieldNumber.prototype.setConstraints = function (a, b, c) {
- c = parseFloat(c);
- this.precision_ = isNaN(c) ? 0 : c;
- a = parseFloat(a);
- this.min_ = isNaN(a) ? -Infinity : a;
- b = parseFloat(b);
- this.max_ = isNaN(b) ? Infinity : b;
- this.setValue(this.callValidator(this.getValue()))
- }
- ;
- Blockly.FieldNumber.prototype.classValidator = function (a) {
- if (null === a)
- return null;
- a = String(a);
- a = a.replace(/O/ig, "0");
- a = a.replace(/,/g, "");
- a = parseFloat(a || 0);
- if (isNaN(a))
- return null;
- this.precision_ && isFinite(a) && (a = Math.round(a / this.precision_) * this.precision_);
- a = goog.math.clamp(a, this.min_, this.max_);
- return String(a)
- }
- ;
- Blockly.Variables = {};
- Blockly.Variables.NAME_TYPE = "VARIABLE";
- Blockly.Variables.allUsedVariables = function (a) {
- if (a instanceof Blockly.Block)
- var b = a.getDescendants();
- else if (a.getAllBlocks)
- b = a.getAllBlocks();
- else
- throw "Not Block or Workspace: " + a;
- a = Object.create(null);
- for (var c = 0; c < b.length; c++) {
- var d = b[c].getVars();
- if (d)
- for (var e = 0; e < d.length; e++) {
- var f = d[e];
- f && (a[f.toLowerCase()] = f)
- }
- }
- b = [];
- for (var g in a)
- b.push(a[g]);
- return b
- }
- ;
- Blockly.Variables.allVariables = function (a) {
- a instanceof Blockly.Block && console.warn("Deprecated call to Blockly.Variables.allVariables with a block instead of a workspace. You may want Blockly.Variables.allUsedVariables");
- return a.variableList
- }
- ;
- Blockly.Variables.flyoutCategory = function (a) {
- a = a.variableList;
- a.sort(goog.string.caseInsensitiveCompare);
- var b = []
- , c = goog.dom.createDom("button");
- c.setAttribute("text", Blockly.Msg.NEW_VARIABLE);
- c.setAttribute("callbackKey", "CREATE_VARIABLE");
- Blockly.registerButtonCallback("CREATE_VARIABLE", function (a) {
- Blockly.Variables.createVariable(a.getTargetWorkspace())
- });
- b.push(c);
- if (0 < a.length) {
- if (Blockly.Blocks.variables_set) {
- c = goog.dom.createDom("block");
- c.setAttribute("type", "variables_set");
- Blockly.Blocks.math_change ? c.setAttribute("gap", 8) : c.setAttribute("gap", 24);
- var d = goog.dom.createDom("field", null, a[0]);
- d.setAttribute("name", "VAR");
- c.appendChild(d);
- var e = goog.dom.createDom("value");
- e.setAttribute("name", "VALUE");
- c.appendChild(e);
- d = goog.dom.createDom("shadow");
- d.setAttribute("type", "math_number");
- e.appendChild(d);
- e = goog.dom.createDom("field", null, "0");
- e.setAttribute("name", "NUM");
- d.appendChild(e);
- b.push(c)
- }
- Blockly.Blocks.math_change && (c = goog.dom.createDom("block"),
- c.setAttribute("type", "math_change"),
- Blockly.Blocks.variables_get && c.setAttribute("gap", 20),
- e = goog.dom.createDom("value"),
- e.setAttribute("name", "DELTA"),
- c.appendChild(e),
- d = goog.dom.createDom("field", null, a[0]),
- d.setAttribute("name", "VAR"),
- c.appendChild(d),
- d = goog.dom.createDom("shadow"),
- d.setAttribute("type", "math_number"),
- e.appendChild(d),
- e = goog.dom.createDom("field", null, "1"),
- e.setAttribute("name", "NUM"),
- d.appendChild(e),
- b.push(c));
- for (e = 0; e < a.length; e++)
- Blockly.Blocks.variables_get && (c = goog.dom.createDom("block"),
- c.setAttribute("type", "variables_get"),
- Blockly.Blocks.variables_set && c.setAttribute("gap", 8),
- d = goog.dom.createDom("field", null, a[e]),
- d.setAttribute("name", "VAR"),
- c.appendChild(d),
- b.push(c))
- }
- return b
- }
- ;
- Blockly.Variables.generateUniqueName = function (a) {
- a = a.variableList;
- var b = "";
- if (a.length)
- for (var c = 1, d = 0, e = "ijkmnopqrstuvwxyzabcdefgh".charAt(d); !b;) {
- for (var f = !1, g = 0; g < a.length; g++)
- if (a[g].toLowerCase() == e) {
- f = !0;
- break
- }
- f ? (d++,
- 25 == d && (d = 0,
- c++),
- e = "ijkmnopqrstuvwxyzabcdefgh".charAt(d),
- 1 < c && (e += c)) : b = e
- }
- else
- b = "i";
- return b
- }
- ;
- Blockly.Variables.createVariable = function (a, b) {
- var c = function (d) {
- Blockly.Variables.promptName(Blockly.Msg.NEW_VARIABLE_TITLE, d, function (d) {
- d ? -1 != a.variableIndexOf(d) ? Blockly.alert(Blockly.Msg.VARIABLE_ALREADY_EXISTS.replace("%1", d.toLowerCase()), function () {
- c(d)
- }) : (a.createVariable(d),
- b && b(d)) : b && b(null)
- })
- };
- c("")
- }
- ;
- Blockly.Variables.promptName = function (a, b, c) {
- Blockly.prompt(a, b, function (a) {
- a && (a = a.replace(/[\s\xa0]+/g, " ").replace(/^ | $/g, ""),
- a == Blockly.Msg.RENAME_VARIABLE || a == Blockly.Msg.NEW_VARIABLE) && (a = null);
- c(a)
- })
- }
- ;
- Blockly.FieldVariable = function (a, b) {
- Blockly.FieldVariable.superClass_.constructor.call(this, Blockly.FieldVariable.dropdownCreate, b);
- this.setValue(a || "")
- }
- ;
- goog.inherits(Blockly.FieldVariable, Blockly.FieldDropdown);
- Blockly.FieldVariable.prototype.renameVarItemIndex_ = -1;
- Blockly.FieldVariable.prototype.deleteVarItemIndex_ = -1;
- Blockly.FieldVariable.prototype.init = function () {
- this.fieldGroup_ || (Blockly.FieldVariable.superClass_.init.call(this),
- this.getValue() || this.setValue(Blockly.Variables.generateUniqueName(this.sourceBlock_.isInFlyout ? this.sourceBlock_.workspace.targetWorkspace : this.sourceBlock_.workspace)),
- this.sourceBlock_.isInFlyout || this.sourceBlock_.workspace.createVariable(this.getValue()))
- }
- ;
- Blockly.FieldVariable.prototype.setSourceBlock = function (a) {
- goog.asserts.assert(!a.isShadow(), "Variable fields are not allowed to exist on shadow blocks.");
- Blockly.FieldVariable.superClass_.setSourceBlock.call(this, a)
- }
- ;
- Blockly.FieldVariable.prototype.getValue = function () {
- return this.getText()
- }
- ;
- Blockly.FieldVariable.prototype.setValue = function (a) {
- this.sourceBlock_ && Blockly.Events.isEnabled() && Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_, "field", this.name, this.value_, a));
- this.value_ = a;
- this.setText(a)
- }
- ;
- Blockly.FieldVariable.dropdownCreate = function () {
- var a = this.sourceBlock_ && this.sourceBlock_.workspace ? this.sourceBlock_.workspace.variableList.slice(0) : []
- , b = this.getText();
- b && -1 == a.indexOf(b) && a.push(b);
- a.sort(goog.string.caseInsensitiveCompare);
- this.renameVarItemIndex_ = a.length;
- a.push(Blockly.Msg.RENAME_VARIABLE);
- this.deleteVarItemIndex_ = a.length;
- a.push(Blockly.Msg.DELETE_VARIABLE.replace("%1", b));
- b = [];
- for (var c = 0; c < a.length; c++)
- b[c] = [a[c], a[c]];
- return b
- }
- ;
- Blockly.FieldVariable.prototype.onItemSelected = function (a, b) {
- a.getChildCount();
- var c = b.getValue();
- if (this.sourceBlock_) {
- var d = this.sourceBlock_.workspace;
- if (0 <= this.renameVarItemIndex_ && a.getChildAt(this.renameVarItemIndex_) === b) {
- var e = this.getText();
- Blockly.hideChaff();
- Blockly.Variables.promptName(Blockly.Msg.RENAME_VARIABLE_TITLE.replace("%1", e), e, function (a) {
- a && d.renameVariable(e, a)
- });
- return
- }
- if (0 <= this.deleteVarItemIndex_ && a.getChildAt(this.deleteVarItemIndex_) === b) {
- d.deleteVariable(this.getText());
- return
- }
- c = this.callValidator(c)
- }
- null !== c && this.setValue(c)
- }
- ;
- Blockly.Generator = function (a) {
- this.name_ = a;
- this.FUNCTION_NAME_PLACEHOLDER_REGEXP_ = new RegExp(this.FUNCTION_NAME_PLACEHOLDER_, "g")
- }
- ;
- Blockly.Generator.NAME_TYPE = "generated_function";
- Blockly.Generator.prototype.INFINITE_LOOP_TRAP = null;
- Blockly.Generator.prototype.STATEMENT_PREFIX = null;
- Blockly.Generator.prototype.INDENT = " ";
- Blockly.Generator.prototype.COMMENT_WRAP = 60;
- Blockly.Generator.prototype.ORDER_OVERRIDES = [];
- Blockly.Generator.prototype.workspaceToCode = function (a) {
- a || (console.warn("No workspace specified in workspaceToCode call. Guessing."),
- a = Blockly.getMainWorkspace());
- var b = [];
- this.init(a);
- a = a.getTopBlocks(!0);
- for (var c = 0, d; d = a[c]; c++) {
- var e = this.blockToCode(d);
- goog.isArray(e) && (e = e[0]);
- e && (d.outputConnection && this.scrubNakedValue && (e = this.scrubNakedValue(e)),
- b.push(e))
- }
- b = b.join("\n");
- b = this.finish(b);
- b = b.replace(/^\s+\n/, "");
- b = b.replace(/\n\s+$/, "\n");
- return b = b.replace(/[ \t]+\n/g, "\n")
- }
- ;
- Blockly.Generator.prototype.prefixLines = function (a, b) {
- return b + a.replace(/(?!\n$)\n/g, "\n" + b)
- }
- ;
- Blockly.Generator.prototype.allNestedComments = function (a) {
- var b = [];
- a = a.getDescendants();
- for (var c = 0; c < a.length; c++) {
- var d = a[c].getCommentText();
- d && b.push(d)
- }
- b.length && b.push("");
- return b.join("\n")
- }
- ;
- Blockly.Generator.prototype.blockToCode = function (a) {
- if (!a)
- return "";
- if (a.disabled)
- return this.blockToCode(a.getNextBlock());
- var b = this[a.type];
- goog.asserts.assertFunction(b, 'Language "%s" does not know how to generate code for block type "%s".', this.name_, a.type);
- b = b.call(a, a);
- if (goog.isArray(b))
- return goog.asserts.assert(a.outputConnection, 'Expecting string from statement block "%s".', a.type),
- [this.scrub_(a, b[0]), b[1]];
- if (goog.isString(b)) {
- var c = a.id.replace(/\$/g, "$$$$");
- this.STATEMENT_PREFIX && (b = this.STATEMENT_PREFIX.replace(/%1/g, "'" + c + "'") + b);
- return this.scrub_(a, b)
- }
- if (null === b)
- return "";
- goog.asserts.fail("Invalid code generated: %s", b)
- }
- ;
- Blockly.Generator.prototype.valueToCode = function (a, b, c) {
- isNaN(c) && goog.asserts.fail('Expecting valid order from block "%s".', a.type);
- var d = a.getInputTargetBlock(b);
- if (!d)
- return "";
- b = this.blockToCode(d);
- if ("" === b)
- return "";
- goog.asserts.assertArray(b, 'Expecting tuple from value block "%s".', d.type);
- a = b[0];
- b = b[1];
- isNaN(b) && goog.asserts.fail('Expecting valid order from value block "%s".', d.type);
- if (!a)
- return "";
- d = !1;
- var e = Math.floor(c)
- , f = Math.floor(b);
- if (e <= f && (e != f || 0 != e && 99 != e))
- for (d = !0,
- e = 0; e < this.ORDER_OVERRIDES.length; e++)
- if (this.ORDER_OVERRIDES[e][0] == c && this.ORDER_OVERRIDES[e][1] == b) {
- d = !1;
- break
- }
- d && (a = "(" + a + ")");
- return a
- }
- ;
- Blockly.Generator.prototype.statementToCode = function (a, b) {
- var c = a.getInputTargetBlock(b)
- , d = this.blockToCode(c);
- goog.asserts.assertString(d, 'Expecting code from statement block "%s".', c && c.type);
- d && (d = this.prefixLines(d, this.INDENT));
- return d
- }
- ;
- Blockly.Generator.prototype.addLoopTrap = function (a, b) {
- b = b.replace(/\$/g, "$$$$");
- this.INFINITE_LOOP_TRAP && (a = this.INFINITE_LOOP_TRAP.replace(/%1/g, "'" + b + "'") + a);
- this.STATEMENT_PREFIX && (a += this.prefixLines(this.STATEMENT_PREFIX.replace(/%1/g, "'" + b + "'"), this.INDENT));
- return a
- }
- ;
- Blockly.Generator.prototype.RESERVED_WORDS_ = "";
- Blockly.Generator.prototype.addReservedWords = function (a) {
- this.RESERVED_WORDS_ += a + ","
- }
- ;
- Blockly.Generator.prototype.FUNCTION_NAME_PLACEHOLDER_ = "{leCUI8hutHZI4480Dc}";
- Blockly.Generator.prototype.provideFunction_ = function (a, b) {
- if (!this.definitions_[a]) {
- var c = this.variableDB_.getDistinctName(a, Blockly.Procedures.NAME_TYPE);
- this.functionNames_[a] = c;
- c = b.join("\n").replace(this.FUNCTION_NAME_PLACEHOLDER_REGEXP_, c);
- for (var d; d != c;)
- d = c,
- c = c.replace(/^(( )*) /gm, "$1\x00");
- c = c.replace(/\0/g, this.INDENT);
- this.definitions_[a] = c
- }
- return this.functionNames_[a]
- }
- ;
- Blockly.Names = function (a, b) {
- this.variablePrefix_ = b || "";
- this.reservedDict_ = Object.create(null);
- if (a)
- for (var c = a.split(","), d = 0; d < c.length; d++)
- this.reservedDict_[c[d]] = !0;
- this.reset()
- }
- ;
- Blockly.Names.prototype.reset = function () {
- this.db_ = Object.create(null);
- this.dbReverse_ = Object.create(null)
- }
- ;
- Blockly.Names.prototype.getName = function (a, b) {
- var c = a.toLowerCase() + "_" + b
- , d = b == Blockly.Variables.NAME_TYPE ? this.variablePrefix_ : "";
- if (c in this.db_)
- return d + this.db_[c];
- var e = this.getDistinctName(a, b);
- this.db_[c] = e.substr(d.length);
- return e
- }
- ;
- Blockly.Names.prototype.getDistinctName = function (a, b) {
- var c = this.safeName_(a);
- this.dbReverse_[c] = !0;
- return (b == Blockly.Variables.NAME_TYPE ? this.variablePrefix_ : "") + c
- }
- ;
- Blockly.Names.prototype.safeName_ = function (a) {
- a ? (a = encodeURI(a.replace(/ /g, "_")).replace(/[^\w]/g, "_"),
- -1 != "0123456789".indexOf(a[0]) && (a = "my_" + a)) : a = "unnamed";
- return a
- }
- ;
- Blockly.Names.equals = function (a, b) {
- return a.toLowerCase() == b.toLowerCase()
- }
- ;
- Blockly.Procedures = {};
- Blockly.Procedures.NAME_TYPE = "PROCEDURE";
- Blockly.Procedures.allProcedures = function (a) {
- a = a.getAllBlocks()
- for (var b = [], c = [], f = [], d = 0; d < a.length; d++)
- if (a[d].getProcedureDef) {
- var e = a[d].getProcedureDef();
- console.log("11111111", e)
- e && (e[2] == 0 ? b.push(e) : e[2] == "1" ? c.push(e) : f.push(e))
- }
- c.sort(Blockly.Procedures.procTupleComparator_);
- b.sort(Blockly.Procedures.procTupleComparator_);
- f.sort(Blockly.Procedures.procTupleComparator_);
- return [c, b, f]
- }
- ;
- Blockly.Procedures.procTupleComparator_ = function (a, b) {
- return a[0].toLowerCase().localeCompare(b[0].toLowerCase())
- }
- ;
- Blockly.Procedures.findLegalName = function (a, b) {
- if (b.isInFlyout)
- return a;
- for (; !Blockly.Procedures.isLegalName_(a, b.workspace, b);) {
- var c = a.match(/^(.*?)(\d+)$/);
- a = c ? c[1] + (parseInt(c[2], 10) + 1) : a + "2"
- }
- return a
- }
- ;
- Blockly.Procedures.isLegalName_ = function (a, b, c) {
- b = b.getAllBlocks();
- for (var d = 0; d < b.length; d++)
- if (b[d] != c && b[d].getProcedureDef) {
- var e = b[d].getProcedureDef();
- if (Blockly.Names.equals(e[0], a))
- return !1
- }
- return !0
- }
- ;
- Blockly.Procedures.rename = function (a) {
- a = a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");
- var b = Blockly.Procedures.findLegalName(a, this.sourceBlock_)
- , c = this.text_;
- if (c != a && c != b) {
- a = this.sourceBlock_.workspace.getAllBlocks();
- for (var d = 0; d < a.length; d++)
- a[d].renameProcedure && a[d].renameProcedure(c, b)
- }
- return b
- }
- ;
- Blockly.Procedures.flyoutCategory = function (a) {
- function b(a, b) {
- for (var d = 0; d < a.length; d++) {
- var e = a[d][0]
- , f = a[d][1]
- , m = goog.dom.createDom("block");
- m.setAttribute("type", b);
- m.setAttribute("gap", 16);
- var p = goog.dom.createDom("mutation");
- p.setAttribute("name", e);
- m.appendChild(p);
- for (e = 0; e < f.length; e++) {
- var l = goog.dom.createDom("arg");
- l.setAttribute("name", f[e]);
- p.appendChild(l)
- }
- c.push(m)
- }
- }
- var c = [];
- if (Blockly.Blocks.procedures_defnoreturn) {
- var d = goog.dom.createDom("block");
- d.setAttribute("type", "procedures_defnoreturn");
- d.setAttribute("gap", 16);
- c.push(d)
- }
- Blockly.Blocks.procedures_defreturn && (d = goog.dom.createDom("block"),
- d.setAttribute("type", "procedures_defreturn"),
- d.setAttribute("gap", 16),
- c.push(d));
- Blockly.Blocks.procedures_ifreturn && (d = goog.dom.createDom("block"),
- d.setAttribute("type", "procedures_ifreturn"),
- d.setAttribute("gap", 16),
- c.push(d));
- c.length && c[c.length - 1].setAttribute("gap", 24);
- a = Blockly.Procedures.allProcedures(a);
- b(a[0], "procedures_callnoreturn");
- b(a[1], "procedures_callreturn");
- b(a[2], "procedures_callNothirdreturn");
- return c
- }
- ;
- Blockly.Procedures.getCallers = function (a, b) {
- for (var c = [], d = b.getAllBlocks(), e = 0; e < d.length; e++)
- if (d[e].getProcedureCall) {
- var f = d[e].getProcedureCall();
- f && Blockly.Names.equals(f, a) && c.push(d[e])
- }
- return c
- }
- ;
- Blockly.Procedures.mutateCallers = function (a) {
- var b = Blockly.Events.recordUndo
- , c = a.getProcedureDef()[0]
- , d = a.mutationToDom(!0);
- a = Blockly.Procedures.getCallers(c, a.workspace);
- c = 0;
- for (var e; e = a[c]; c++) {
- var f = e.mutationToDom();
- f = f && Blockly.Xml.domToText(f);
- e.domToMutation(d);
- var g = e.mutationToDom();
- g = g && Blockly.Xml.domToText(g);
- f != g && (Blockly.Events.recordUndo = !1,
- Blockly.Events.fire(new Blockly.Events.Change(e, "mutation", null, f, g)),
- Blockly.Events.recordUndo = b)
- }
- }
- ;
- Blockly.Procedures.getDefinition = function (a, b) {
- for (var c = b.getTopBlocks(!1), d = 0; d < c.length; d++)
- if (c[d].getProcedureDef) {
- var e = c[d].getProcedureDef();
- if (e && Blockly.Names.equals(e[0], a))
- return c[d]
- }
- return null
- }
- ;
- Blockly.FlyoutButton = function (a, b, c, d, e) {
- this.workspace_ = a;
- this.targetWorkspace_ = b;
- this.text_ = c;
- this.position_ = new goog.math.Coordinate(0, 0);
- this.callback_ = Blockly.flyoutButtonCallbacks_[d];
- this.isLabel_ = e
- }
- ;
- Blockly.FlyoutButton.MARGIN = 5;
- Blockly.FlyoutButton.prototype.width = 0;
- Blockly.FlyoutButton.prototype.height = 0;
- Blockly.FlyoutButton.prototype.createDom = function () {
- this.svgGroup_ = Blockly.createSvgElement("g", {
- "class": this.isLabel_ ? "blocklyFlyoutLabel" : "blocklyFlyoutButton"
- }, this.workspace_.getCanvas());
- if (!this.isLabel_)
- var a = Blockly.createSvgElement("rect", {
- "class": "blocklyFlyoutButtonShadow",
- rx: 4,
- ry: 4,
- x: 1,
- y: 1
- }, this.svgGroup_);
- var b = Blockly.createSvgElement("rect", {
- "class": this.isLabel_ ? "blocklyFlyoutLabelBackground" : "blocklyFlyoutButtonBackground",
- rx: 4,
- ry: 4
- }, this.svgGroup_)
- , c = Blockly.createSvgElement("text", {
- "class": this.isLabel_ ? "blocklyFlyoutLabelText" : "blocklyText",
- x: 0,
- y: 0,
- "text-anchor": "middle"
- }, this.svgGroup_);
- c.textContent = this.text_;
- this.width = c.getComputedTextLength() + 2 * Blockly.FlyoutButton.MARGIN;
- this.height = 20;
- this.isLabel_ || (a.setAttribute("width", this.width),
- a.setAttribute("height", this.height));
- b.setAttribute("width", this.width);
- b.setAttribute("height", this.height);
- c.setAttribute("x", this.width / 2);
- c.setAttribute("y", this.height - Blockly.FlyoutButton.MARGIN);
- this.updateTransform_();
- return this.svgGroup_
- }
- ;
- Blockly.FlyoutButton.prototype.show = function () {
- this.updateTransform_();
- this.svgGroup_.setAttribute("display", "block")
- }
- ;
- Blockly.FlyoutButton.prototype.updateTransform_ = function () {
- this.svgGroup_.setAttribute("transform", "translate(" + this.position_.x + "," + this.position_.y + ")")
- }
- ;
- Blockly.FlyoutButton.prototype.moveTo = function (a, b) {
- this.position_.x = a;
- this.position_.y = b;
- this.updateTransform_()
- }
- ;
- Blockly.FlyoutButton.prototype.getTargetWorkspace = function () {
- return this.targetWorkspace_
- }
- ;
- Blockly.FlyoutButton.prototype.dispose = function () {
- this.svgGroup_ && (goog.dom.removeNode(this.svgGroup_),
- this.svgGroup_ = null);
- this.targetWorkspace_ = this.workspace_ = null
- }
- ;
- Blockly.FlyoutButton.prototype.onMouseUp = function (a) {
- a.preventDefault();
- a.stopPropagation();
- Blockly.Flyout.terminateDrag_();
- this.callback_ && this.callback_(this)
- }
- ;
- Blockly.Flyout = function (a) {
- a.getMetrics = this.getMetrics_.bind(this);
- a.setMetrics = this.setMetrics_.bind(this);
- this.workspace_ = new Blockly.WorkspaceSvg(a);
- this.workspace_.isFlyout = !0;
- this.RTL = !!a.RTL;
- this.horizontalLayout_ = a.horizontalLayout;
- this.toolboxPosition_ = a.toolboxPosition;
- this.eventWrappers_ = [];
- this.backgroundButtons_ = [];
- this.buttons_ = [];
- this.listeners_ = [];
- this.permanentlyDisabled_ = [];
- this.startDragMouseX_ = this.startDragMouseY_ = 0
- }
- ;
- Blockly.Flyout.startFlyout_ = null;
- Blockly.Flyout.startDownEvent_ = null;
- Blockly.Flyout.startBlock_ = null;
- Blockly.Flyout.onMouseUpWrapper_ = null;
- Blockly.Flyout.onMouseMoveWrapper_ = null;
- Blockly.Flyout.onMouseMoveBlockWrapper_ = null;
- Blockly.Flyout.prototype.autoClose = !0;
- Blockly.Flyout.prototype.CORNER_RADIUS = 8;
- Blockly.Flyout.prototype.DRAG_RADIUS = 10;
- Blockly.Flyout.prototype.MARGIN = Blockly.Flyout.prototype.CORNER_RADIUS;
- Blockly.Flyout.prototype.GAP_X = 3 * Blockly.Flyout.prototype.MARGIN;
- Blockly.Flyout.prototype.GAP_Y = 3 * Blockly.Flyout.prototype.MARGIN;
- Blockly.Flyout.prototype.SCROLLBAR_PADDING = 2;
- Blockly.Flyout.prototype.width_ = 0;
- Blockly.Flyout.prototype.height_ = 0;
- Blockly.Flyout.prototype.dragMode_ = Blockly.DRAG_NONE;
- Blockly.Flyout.prototype.dragAngleRange_ = 70;
- Blockly.Flyout.prototype.createDom = function () {
- this.svgGroup_ = Blockly.createSvgElement("g", {
- "class": "blocklyFlyout"
- }, null);
- this.svgBackground_ = Blockly.createSvgElement("path", {
- "class": "blocklyFlyoutBackground"
- }, this.svgGroup_);
- this.svgGroup_.appendChild(this.workspace_.createDom());
- return this.svgGroup_
- }
- ;
- Blockly.Flyout.prototype.init = function (a) {
- this.targetWorkspace_ = a;
- this.workspace_.targetWorkspace = a;
- this.scrollbar_ = new Blockly.Scrollbar(this.workspace_, this.horizontalLayout_, !1);
- this.hide();
- Array.prototype.push.apply(this.eventWrappers_, Blockly.bindEventWithChecks_(this.svgGroup_, "wheel", this, this.wheel_));
- this.autoClose || (this.filterWrapper_ = this.filterForCapacity_.bind(this),
- this.targetWorkspace_.addChangeListener(this.filterWrapper_));
- Array.prototype.push.apply(this.eventWrappers_, Blockly.bindEventWithChecks_(this.svgGroup_, "mousedown", this, this.onMouseDown_))
- }
- ;
- Blockly.Flyout.prototype.dispose = function () {
- this.hide();
- Blockly.unbindEvent_(this.eventWrappers_);
- this.filterWrapper_ && (this.targetWorkspace_.removeChangeListener(this.filterWrapper_),
- this.filterWrapper_ = null);
- this.scrollbar_ && (this.scrollbar_.dispose(),
- this.scrollbar_ = null);
- this.workspace_ && (this.workspace_.targetWorkspace = null,
- this.workspace_.dispose(),
- this.workspace_ = null);
- this.svgGroup_ && (goog.dom.removeNode(this.svgGroup_),
- this.svgGroup_ = null);
- this.targetWorkspace_ = this.svgBackground_ = null
- }
- ;
- Blockly.Flyout.prototype.getWidth = function () {
- return this.width_
- }
- ;
- Blockly.Flyout.prototype.getHeight = function () {
- return this.height_
- }
- ;
- Blockly.Flyout.prototype.getMetrics_ = function () {
- if (!this.isVisible())
- return null;
- try {
- var a = this.workspace_.getCanvas().getBBox()
- } catch (f) {
- a = {
- height: 0,
- y: 0,
- width: 0,
- x: 0
- }
- }
- var b = this.SCROLLBAR_PADDING
- , c = this.SCROLLBAR_PADDING;
- if (this.horizontalLayout_) {
- this.toolboxPosition_ == Blockly.TOOLBOX_AT_BOTTOM && (b = 0);
- var d = this.height_;
- this.toolboxPosition_ == Blockly.TOOLBOX_AT_TOP && (d -= this.SCROLLBAR_PADDING);
- var e = this.width_ - 2 * this.SCROLLBAR_PADDING
- } else
- c = 0,
- d = this.height_ - 2 * this.SCROLLBAR_PADDING,
- e = this.width_,
- this.RTL || (e -= this.SCROLLBAR_PADDING);
- return {
- viewHeight: d,
- viewWidth: e,
- contentHeight: (a.height + 2 * this.MARGIN) * this.workspace_.scale,
- contentWidth: (a.width + 2 * this.MARGIN) * this.workspace_.scale,
- viewTop: -this.workspace_.scrollY,
- viewLeft: -this.workspace_.scrollX,
- contentTop: a.y,
- contentLeft: a.x,
- absoluteTop: b,
- absoluteLeft: c
- }
- }
- ;
- Blockly.Flyout.prototype.setMetrics_ = function (a) {
- var b = this.getMetrics_();
- b && (!this.horizontalLayout_ && goog.isNumber(a.y) ? this.workspace_.scrollY = -b.contentHeight * a.y : this.horizontalLayout_ && goog.isNumber(a.x) && (this.workspace_.scrollX = -b.contentWidth * a.x),
- this.workspace_.translate(this.workspace_.scrollX + b.absoluteLeft, this.workspace_.scrollY + b.absoluteTop))
- }
- ;
- Blockly.Flyout.prototype.position = function () {
- if (this.isVisible()) {
- var a = this.targetWorkspace_.getMetrics();
- if (a) {
- this.setBackgroundPath_(this.horizontalLayout_ ? a.viewWidth - 2 * this.CORNER_RADIUS : this.width_ - this.CORNER_RADIUS, this.horizontalLayout_ ? this.height_ - this.CORNER_RADIUS : a.viewHeight - 2 * this.CORNER_RADIUS);
- var b = a.absoluteLeft;
- this.toolboxPosition_ == Blockly.TOOLBOX_AT_RIGHT && (b += a.viewWidth,
- b -= this.width_);
- var c = a.absoluteTop;
- this.toolboxPosition_ == Blockly.TOOLBOX_AT_BOTTOM && (c += a.viewHeight,
- c -= this.height_);
- this.svgGroup_.setAttribute("transform", "translate(" + b + "," + c + ")");
- this.horizontalLayout_ ? this.width_ = a.viewWidth : this.height_ = a.viewHeight;
- this.scrollbar_ && this.scrollbar_.resize()
- }
- }
- }
- ;
- Blockly.Flyout.prototype.setBackgroundPath_ = function (a, b) {
- this.horizontalLayout_ ? this.setBackgroundPathHorizontal_(a, b) : this.setBackgroundPathVertical_(a, b)
- }
- ;
- Blockly.Flyout.prototype.setBackgroundPathVertical_ = function (a, b) {
- var c = this.toolboxPosition_ == Blockly.TOOLBOX_AT_RIGHT
- , d = a + this.CORNER_RADIUS;
- d = ["M " + (c ? d : 0) + ",0"];
- d.push("h", c ? -a : a);
- d.push("a", this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, c ? 0 : 1, c ? -this.CORNER_RADIUS : this.CORNER_RADIUS, this.CORNER_RADIUS);
- d.push("v", Math.max(0, b));
- d.push("a", this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, c ? 0 : 1, c ? this.CORNER_RADIUS : -this.CORNER_RADIUS, this.CORNER_RADIUS);
- d.push("h", c ? a : -a);
- d.push("z");
- this.svgBackground_.setAttribute("d", d.join(" "))
- }
- ;
- Blockly.Flyout.prototype.setBackgroundPathHorizontal_ = function (a, b) {
- var c = this.toolboxPosition_ == Blockly.TOOLBOX_AT_TOP
- , d = ["M 0," + (c ? 0 : this.CORNER_RADIUS)];
- c ? (d.push("h", a + 2 * this.CORNER_RADIUS),
- d.push("v", b),
- d.push("a", this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1, -this.CORNER_RADIUS, this.CORNER_RADIUS),
- d.push("h", -1 * a),
- d.push("a", this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1, -this.CORNER_RADIUS, -this.CORNER_RADIUS)) : (d.push("a", this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1, this.CORNER_RADIUS, -this.CORNER_RADIUS),
- d.push("h", a),
- d.push("a", this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1, this.CORNER_RADIUS, this.CORNER_RADIUS),
- d.push("v", b),
- d.push("h", -a - 2 * this.CORNER_RADIUS));
- d.push("z");
- this.svgBackground_.setAttribute("d", d.join(" "))
- }
- ;
- Blockly.Flyout.prototype.scrollToStart = function () {
- this.scrollbar_.set(this.horizontalLayout_ && this.RTL ? Infinity : 0)
- }
- ;
- Blockly.Flyout.prototype.wheel_ = function (a) {
- var b = this.horizontalLayout_ ? a.deltaX : a.deltaY;
- if (b) {
- goog.userAgent.GECKO && (b *= 10);
- var c = this.getMetrics_();
- b = this.horizontalLayout_ ? c.viewLeft + b : c.viewTop + b;
- b = Math.min(b, this.horizontalLayout_ ? c.contentWidth - c.viewWidth : c.contentHeight - c.viewHeight);
- b = Math.max(b, 0);
- this.scrollbar_.set(b)
- }
- a.preventDefault();
- a.stopPropagation()
- }
- ;
- Blockly.Flyout.prototype.isVisible = function () {
- return this.svgGroup_ && "block" == this.svgGroup_.style.display
- }
- ;
- Blockly.Flyout.prototype.hide = function () {
- if (this.isVisible()) {
- this.svgGroup_.style.display = "none";
- for (var a = 0, b; b = this.listeners_[a]; a++)
- Blockly.unbindEvent_(b);
- this.listeners_.length = 0;
- this.reflowWrapper_ && (this.workspace_.removeChangeListener(this.reflowWrapper_),
- this.reflowWrapper_ = null)
- }
- }
- ;
- Blockly.Flyout.prototype.show = function (a) {
- this.hide();
- this.clearOldBlocks_();
- a == Blockly.Variables.NAME_TYPE ? a = Blockly.Variables.flyoutCategory(this.workspace_.targetWorkspace) : a == Blockly.Procedures.NAME_TYPE && (a = Blockly.Procedures.flyoutCategory(this.workspace_.targetWorkspace));
- this.svgGroup_.style.display = "block";
- for (var b = [], c = [], d = this.permanentlyDisabled_.length = 0, e; e = a[d]; d++)
- if (e.tagName) {
- var f = e.tagName.toUpperCase()
- , g = this.horizontalLayout_ ? this.GAP_X : this.GAP_Y;
- if ("BLOCK" == f)
- f = Blockly.Xml.domToBlock(e, this.workspace_),
- f.disabled && this.permanentlyDisabled_.push(f),
- b.push({
- type: "block",
- block: f
- }),
- e = parseInt(e.getAttribute("gap"), 10),
- c.push(isNaN(e) ? g : e);
- else if ("SEP" == e.tagName.toUpperCase())
- e = parseInt(e.getAttribute("gap"), 10),
- !isNaN(e) && 0 < c.length ? c[c.length - 1] = e : c.push(g);
- else if ("BUTTON" == f || "LABEL" == f) {
- f = "LABEL" == f;
- var h = e.getAttribute("text");
- e = e.getAttribute("callbackKey");
- e = new Blockly.FlyoutButton(this.workspace_, this.targetWorkspace_, h, e, f);
- b.push({
- type: "button",
- button: e
- });
- c.push(g)
- }
- }
- this.layout_(b, c);
- this.listeners_.push(Blockly.bindEventWithChecks_(this.svgBackground_, "mouseover", this, function () {
- for (var a = this.workspace_.getTopBlocks(!1), b = 0, c; c = a[b]; b++)
- c.removeSelect()
- }));
- this.horizontalLayout_ ? this.height_ = 0 : this.width_ = 0;
- this.reflow();
- this.filterForCapacity_();
- this.position();
- this.reflowWrapper_ = this.reflow.bind(this);
- this.workspace_.addChangeListener(this.reflowWrapper_)
- }
- ;
- Blockly.Flyout.prototype.layout_ = function (a, b) {
- this.workspace_.scale = this.targetWorkspace_.scale;
- var c = this.MARGIN
- , d = this.RTL ? c : c + Blockly.BlockSvg.TAB_WIDTH;
- this.horizontalLayout_ && this.RTL && (a = a.reverse());
- for (var e = 0, f; f = a[e]; e++)
- if ("block" == f.type) {
- f = f.block;
- for (var g = f.getDescendants(), h = 0, k; k = g[h]; h++)
- k.isInFlyout = !0;
- f.render();
- g = f.getSvgRoot();
- h = f.getHeightWidth();
- k = f.outputConnection ? Blockly.BlockSvg.TAB_WIDTH : 0;
- this.horizontalLayout_ && (d += k);
- f.moveBy(this.horizontalLayout_ && this.RTL ? d + h.width - k : d, c);
- this.horizontalLayout_ ? d += h.width + b[e] - k : c += h.height + b[e];
- h = Blockly.createSvgElement("rect", {
- "fill-opacity": 0
- }, null);
- h.tooltip = f;
- Blockly.Tooltip.bindMouseEvents(h);
- this.workspace_.getCanvas().insertBefore(h, f.getSvgRoot());
- f.flyoutRect_ = h;
- this.backgroundButtons_[e] = h;
- this.addBlockListeners_(g, f, h)
- } else
- "button" == f.type && (f = f.button,
- g = f.createDom(),
- f.moveTo(d, c),
- f.show(),
- Blockly.bindEventWithChecks_(g, "mouseup", f, f.onMouseUp),
- this.buttons_.push(f),
- this.horizontalLayout_ ? d += f.width + b[e] : c += f.height + b[e])
- }
- ;
- Blockly.Flyout.prototype.clearOldBlocks_ = function () {
- for (var a = this.workspace_.getTopBlocks(!1), b = 0, c; c = a[b]; b++)
- c.workspace == this.workspace_ && c.dispose(!1, !1);
- for (b = 0; b < this.backgroundButtons_.length; b++) {
- if (a = this.backgroundButtons_[b]) {
- goog.dom.removeNode(a);
- }
- }
- for (b = this.backgroundButtons_.length = 0; b < this.buttons_.length; b++) {
- if (a = this.buttons_[b]) {
- a.dispose();
- }
- }
- this.buttons_.length = 0
- }
- ;
- Blockly.Flyout.prototype.addBlockListeners_ = function (a, b, c) {
- this.listeners_.push(Blockly.bindEventWithChecks_(a, "mousedown", null, this.blockMouseDown_(b)));
- this.listeners_.push(Blockly.bindEventWithChecks_(c, "mousedown", null, this.blockMouseDown_(b)));
- this.listeners_.push(Blockly.bindEvent_(a, "mouseover", b, b.addSelect));
- this.listeners_.push(Blockly.bindEvent_(a, "mouseout", b, b.removeSelect));
- this.listeners_.push(Blockly.bindEvent_(c, "mouseover", b, b.addSelect));
- this.listeners_.push(Blockly.bindEvent_(c, "mouseout", b, b.removeSelect))
- }
- ;
- Blockly.Flyout.blockRightClick_ = function (a, b) {
- Blockly.terminateDrag_();
- Blockly.hideChaff(!0);
- b.showContextMenu_(a);
- Blockly.Touch.clearTouchIdentifier()
- }
- ;
- Blockly.Flyout.prototype.blockMouseDown_ = function (a) {
- var b = this;
- return function (c) {
- Blockly.isRightButton(c) ? Blockly.Flyout.blockRightClick_(c, a) : (Blockly.terminateDrag_(),
- Blockly.hideChaff(!0),
- Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),
- b.startDragMouseY_ = c.clientY,
- b.startDragMouseX_ = c.clientX,
- Blockly.Flyout.startDownEvent_ = c,
- Blockly.Flyout.startBlock_ = a,
- Blockly.Flyout.startFlyout_ = b,
- Blockly.Flyout.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, "mouseup", b, b.onMouseUp_),
- Blockly.Flyout.onMouseMoveBlockWrapper_ = Blockly.bindEventWithChecks_(document, "mousemove", b, b.onMouseMoveBlock_));
- c.stopPropagation();
- c.preventDefault()
- }
- }
- ;
- Blockly.Flyout.prototype.onMouseDown_ = function (a) {
- Blockly.isRightButton(a) ? Blockly.Touch.clearTouchIdentifier() : (Blockly.hideChaff(!0),
- this.dragMode_ = Blockly.DRAG_FREE,
- this.startDragMouseY_ = a.clientY,
- this.startDragMouseX_ = a.clientX,
- Blockly.Flyout.startFlyout_ = this,
- Blockly.Flyout.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_(document, "mousemove", this, this.onMouseMove_),
- Blockly.Flyout.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, "mouseup", this, Blockly.Flyout.terminateDrag_),
- a.preventDefault(),
- a.stopPropagation())
- }
- ;
- Blockly.Flyout.prototype.onMouseUp_ = function (a) {
- this.workspace_.isDragging() || (Blockly.Touch.clearTouchIdentifier(),
- this.autoClose ? this.createBlockFunc_(Blockly.Flyout.startBlock_)(Blockly.Flyout.startDownEvent_) : Blockly.WidgetDiv.isVisible() || Blockly.Events.fire(new Blockly.Events.Ui(Blockly.Flyout.startBlock_, "click", void 0, void 0)));
- Blockly.terminateDrag_()
- }
- ;
- Blockly.Flyout.prototype.onMouseMove_ = function (a) {
- var b = this.getMetrics_();
- if (this.horizontalLayout_) {
- if (!(0 > b.contentWidth - b.viewWidth)) {
- var c = a.clientX - this.startDragMouseX_;
- this.startDragMouseX_ = a.clientX;
- a = b.viewLeft - c;
- a = goog.math.clamp(a, 0, b.contentWidth - b.viewWidth);
- this.scrollbar_.set(a)
- }
- } else
- 0 > b.contentHeight - b.viewHeight || (c = a.clientY - this.startDragMouseY_,
- this.startDragMouseY_ = a.clientY,
- a = b.viewTop - c,
- a = goog.math.clamp(a, 0, b.contentHeight - b.viewHeight),
- this.scrollbar_.set(a))
- }
- ;
- Blockly.Flyout.prototype.onMouseMoveBlock_ = function (a) {
- "mousemove" == a.type && 1 >= a.clientX && 0 == a.clientY && 0 == a.button || (this.determineDragIntention_(a.clientX - Blockly.Flyout.startDownEvent_.clientX, a.clientY - Blockly.Flyout.startDownEvent_.clientY) ? (Blockly.longStop_(),
- this.createBlockFunc_(Blockly.Flyout.startBlock_)(Blockly.Flyout.startDownEvent_)) : this.dragMode_ == Blockly.DRAG_FREE && (Blockly.longStop_(),
- this.onMouseMove_(a)));
- a.stopPropagation()
- }
- ;
- Blockly.Flyout.prototype.determineDragIntention_ = function (a, b) {
- if (this.dragMode_ == Blockly.DRAG_FREE)
- return !1;
- if (Math.sqrt(a * a + b * b) < this.DRAG_RADIUS)
- return this.dragMode_ = Blockly.DRAG_STICKY,
- !1;
- if (this.isDragTowardWorkspace_(a, b) || !this.scrollbar_.isVisible())
- return !0;
- this.dragMode_ = Blockly.DRAG_FREE;
- return !1
- }
- ;
- Blockly.Flyout.prototype.isDragTowardWorkspace_ = function (a, b) {
- var c = Math.atan2(b, a) / Math.PI * 180
- , d = this.dragAngleRange_;
- if (this.horizontalLayout_) {
- if (c < 90 + d && c > 90 - d || c > -90 - d && c < -90 + d)
- return !0
- } else if (c < d && c > -d || c < -180 + d || c > 180 - d)
- return !0;
- return !1
- }
- ;
- Blockly.Flyout.prototype.createBlockFunc_ = function (a) {
- var b = this;
- return function (c) {
- if (!Blockly.isRightButton(c) && !a.disabled) {
- Blockly.Events.disable();
- try {
- var d = b.placeNewBlock_(a)
- } finally {
- Blockly.Events.enable()
- }
- Blockly.Events.isEnabled() && (Blockly.Events.setGroup(!0),
- Blockly.Events.fire(new Blockly.Events.Create(d)));
- b.autoClose ? b.hide() : b.filterForCapacity_();
- d.onMouseDown_(c);
- Blockly.dragMode_ = Blockly.DRAG_FREE;
- d.setDragging_(!0);
- b.targetWorkspace_.setResizesEnabled(!1)
- }
- }
- }
- ;
- Blockly.Flyout.prototype.placeNewBlock_ = function (a) {
- var b = this.targetWorkspace_
- , c = a.getSvgRoot();
- if (!c)
- throw "originBlock is not rendered.";
- c = Blockly.getSvgXY_(c, b);
- var d = this.workspace_.scrollX
- , e = this.workspace_.scale;
- c.x += d / e - d;
- this.toolboxPosition_ == Blockly.TOOLBOX_AT_RIGHT && (d = b.getMetrics().viewWidth - this.width_,
- e = b.scale,
- c.x += d / e - d);
- d = this.workspace_.scrollY;
- e = this.workspace_.scale;
- c.y += d / e - d;
- this.toolboxPosition_ == Blockly.TOOLBOX_AT_BOTTOM && (d = b.getMetrics().viewHeight - this.height_,
- e = b.scale,
- c.y += d / e - d);
- a = Blockly.Xml.blockToDom(a);
- a = Blockly.Xml.domToBlock(a, b);
- e = a.getSvgRoot();
- if (!e)
- throw "block is not rendered.";
- e = Blockly.getSvgXY_(e, b);
- e.x += b.scrollX / b.scale - b.scrollX;
- e.y += b.scrollY / b.scale - b.scrollY;
- b.toolbox_ && !b.scrollbar && (e.x += b.toolbox_.getWidth() / b.scale,
- e.y += b.toolbox_.getHeight() / b.scale);
- a.moveBy(c.x - e.x, c.y - e.y);
- return a
- }
- ;
- Blockly.Flyout.prototype.filterForCapacity_ = function () {
- for (var a = this.targetWorkspace_.remainingCapacity(), b = this.workspace_.getTopBlocks(!1), c = 0, d; d = b[c]; c++)
- if (-1 == this.permanentlyDisabled_.indexOf(d)) {
- var e = d.getDescendants();
- d.setDisabled(e.length > a)
- }
- }
- ;
- Blockly.Flyout.prototype.getClientRect = function () {
- if (!this.svgGroup_)
- return null;
- var a = this.svgGroup_.getBoundingClientRect()
- , b = a.left
- , c = a.top
- , d = a.width;
- a = a.height;
- return this.toolboxPosition_ == Blockly.TOOLBOX_AT_TOP ? new goog.math.Rect(-1E9, c - 1E9, 2E9, 1E9 + a) : this.toolboxPosition_ == Blockly.TOOLBOX_AT_BOTTOM ? new goog.math.Rect(-1E9, c, 2E9, 1E9 + a) : this.toolboxPosition_ == Blockly.TOOLBOX_AT_LEFT ? new goog.math.Rect(b - 1E9, -1E9, 1E9 + d, 2E9) : new goog.math.Rect(b, -1E9, 1E9 + d, 2E9)
- }
- ;
- Blockly.Flyout.terminateDrag_ = function () {
- Blockly.Flyout.startFlyout_ && (Blockly.Flyout.startFlyout_.dragMode_ == Blockly.DRAG_FREE && Blockly.Touch.clearTouchIdentifier(),
- Blockly.Flyout.startFlyout_.dragMode_ = Blockly.DRAG_NONE,
- Blockly.Flyout.startFlyout_ = null);
- Blockly.Flyout.onMouseUpWrapper_ && (Blockly.unbindEvent_(Blockly.Flyout.onMouseUpWrapper_),
- Blockly.Flyout.onMouseUpWrapper_ = null);
- Blockly.Flyout.onMouseMoveBlockWrapper_ && (Blockly.unbindEvent_(Blockly.Flyout.onMouseMoveBlockWrapper_),
- Blockly.Flyout.onMouseMoveBlockWrapper_ = null);
- Blockly.Flyout.onMouseMoveWrapper_ && (Blockly.unbindEvent_(Blockly.Flyout.onMouseMoveWrapper_),
- Blockly.Flyout.onMouseMoveWrapper_ = null);
- Blockly.Flyout.startDownEvent_ = null;
- Blockly.Flyout.startBlock_ = null
- }
- ;
- Blockly.Flyout.prototype.reflowHorizontal = function (a) {
- this.workspace_.scale = this.targetWorkspace_.scale;
- for (var b = 0, c = 0, d; d = a[c]; c++)
- b = Math.max(b, d.getHeightWidth().height);
- b += 1.5 * this.MARGIN;
- b *= this.workspace_.scale;
- b += Blockly.Scrollbar.scrollbarThickness;
- if (this.height_ != b) {
- for (c = 0; d = a[c]; c++) {
- var e = d.getHeightWidth();
- if (d.flyoutRect_) {
- d.flyoutRect_.setAttribute("width", e.width);
- d.flyoutRect_.setAttribute("height", e.height);
- var f = d.outputConnection ? Blockly.BlockSvg.TAB_WIDTH : 0
- , g = d.getRelativeToSurfaceXY();
- d.flyoutRect_.setAttribute("y", g.y);
- d.flyoutRect_.setAttribute("x", this.RTL ? g.x - e.width + f : g.x - f);
- (e = d.startHat_ ? Blockly.BlockSvg.START_HAT_HEIGHT : 0) && d.moveBy(0, e);
- d.flyoutRect_.setAttribute("y", g.y)
- }
- }
- this.height_ = b;
- this.targetWorkspace_.resize()
- }
- }
- ;
- Blockly.Flyout.prototype.reflowVertical = function (a) {
- this.workspace_.scale = this.targetWorkspace_.scale;
- for (var b = 0, c = 0, d; d = a[c]; c++) {
- var e = d.getHeightWidth().width;
- d.outputConnection && (e -= Blockly.BlockSvg.TAB_WIDTH);
- b = Math.max(b, e)
- }
- for (c = 0; d = this.buttons_[c]; c++)
- b = Math.max(b, d.width);
- b += 1.5 * this.MARGIN + Blockly.BlockSvg.TAB_WIDTH;
- b *= this.workspace_.scale;
- b += Blockly.Scrollbar.scrollbarThickness;
- if (this.width_ != b) {
- for (c = 0; d = a[c]; c++) {
- e = d.getHeightWidth();
- if (this.RTL) {
- var f = d.getRelativeToSurfaceXY().x
- , g = b / this.workspace_.scale - this.MARGIN;
- g -= Blockly.BlockSvg.TAB_WIDTH;
- d.moveBy(g - f, 0)
- }
- d.flyoutRect_ && (d.flyoutRect_.setAttribute("width", e.width),
- d.flyoutRect_.setAttribute("height", e.height),
- g = d.outputConnection ? Blockly.BlockSvg.TAB_WIDTH : 0,
- f = d.getRelativeToSurfaceXY(),
- d.flyoutRect_.setAttribute("x", this.RTL ? f.x - e.width + g : f.x - g),
- (e = d.startHat_ ? Blockly.BlockSvg.START_HAT_HEIGHT : 0) && d.moveBy(0, e),
- d.flyoutRect_.setAttribute("y", f.y))
- }
- this.width_ = b;
- this.targetWorkspace_.resize()
- }
- }
- ;
- Blockly.Flyout.prototype.reflow = function () {
- this.reflowWrapper_ && this.workspace_.removeChangeListener(this.reflowWrapper_);
- var a = this.workspace_.getTopBlocks(!1);
- this.horizontalLayout_ ? this.reflowHorizontal(a) : this.reflowVertical(a);
- this.reflowWrapper_ && this.workspace_.addChangeListener(this.reflowWrapper_)
- }
- ;
- Blockly.Toolbox = function (a) {
- this.workspace_ = a;
- this.RTL = a.options.RTL;
- this.horizontalLayout_ = a.options.horizontalLayout;
- this.toolboxPosition = a.options.toolboxPosition;
- this.config_ = {
- indentWidth: 19,
- cssRoot: "blocklyTreeRoot",
- cssHideRoot: "blocklyHidden",
- cssItem: "",
- cssTreeRow: "blocklyTreeRow",
- cssItemLabel: "blocklyTreeLabel",
- cssTreeIcon: "blocklyTreeIcon",
- cssExpandedFolderIcon: "blocklyTreeIconOpen",
- cssFileIcon: "blocklyTreeIconNone",
- cssSelectedRow: "blocklyTreeSelected"
- };
- this.treeSeparatorConfig_ = {
- cssTreeRow: "blocklyTreeSeparator"
- };
- this.horizontalLayout_ && (this.config_.cssTreeRow += a.RTL ? " blocklyHorizontalTreeRtl" : " blocklyHorizontalTree",
- this.treeSeparatorConfig_.cssTreeRow = "blocklyTreeSeparatorHorizontal " + (a.RTL ? "blocklyHorizontalTreeRtl" : "blocklyHorizontalTree"),
- this.config_.cssTreeIcon = "")
- }
- ;
- Blockly.Toolbox.prototype.width = 0;
- Blockly.Toolbox.prototype.height = 0;
- Blockly.Toolbox.prototype.selectedOption_ = null;
- Blockly.Toolbox.prototype.lastCategory_ = null;
- Blockly.Toolbox.prototype.init = function () {
- var a = this.workspace_
- , b = this.workspace_.getParentSvg();
- this.HtmlDiv = goog.dom.createDom("DIV", "blocklyToolboxDiv");
- this.HtmlDiv.setAttribute("dir", a.RTL ? "RTL" : "LTR");
- b.parentNode.insertBefore(this.HtmlDiv, b);
- Blockly.bindEventWithChecks_(this.HtmlDiv, "mousedown", this, function (a) {
- Blockly.isRightButton(a) || a.target == this.HtmlDiv ? Blockly.hideChaff(!1) : Blockly.hideChaff(!0);
- Blockly.Touch.clearTouchIdentifier()
- });
- this.flyout_ = new Blockly.Flyout({
- disabledPatternId: a.options.disabledPatternId,
- parentWorkspace: a,
- RTL: a.RTL,
- oneBasedIndex: a.options.oneBasedIndex,
- horizontalLayout: a.horizontalLayout,
- toolboxPosition: a.options.toolboxPosition
- });
- goog.dom.insertSiblingAfter(this.flyout_.createDom(), a.svgGroup_);
- this.flyout_.init(a);
- this.config_.cleardotPath = a.options.pathToMedia + "1x1.gif";
- this.config_.cssCollapsedFolderIcon = "blocklyTreeIconClosed" + (a.RTL ? "Rtl" : "Ltr");
- this.tree_ = b = new Blockly.Toolbox.TreeControl(this, this.config_);
- b.setShowRootNode(!1);
- b.setShowLines(!1);
- b.setShowExpandIcons(!1);
- b.setSelectedItem(null);
- a = this.populate_(a.options.languageTree);
- b.render(this.HtmlDiv);
- a && b.setSelectedItem(a);
- this.addColour_();
- this.position()
- }
- ;
- Blockly.Toolbox.prototype.dispose = function () {
- this.flyout_.dispose();
- this.tree_.dispose();
- goog.dom.removeNode(this.HtmlDiv);
- this.lastCategory_ = this.workspace_ = null
- }
- ;
- Blockly.Toolbox.prototype.getWidth = function () {
- return this.width
- }
- ;
- Blockly.Toolbox.prototype.getHeight = function () {
- return this.height
- }
- ;
- Blockly.Toolbox.prototype.position = function () {
- var a = this.HtmlDiv;
- if (a) {
- var b = this.workspace_.getParentSvg();
- goog.style.getPageOffset(b);
- b = Blockly.svgSize(b);
- this.horizontalLayout_ ? (a.style.left = "0",
- a.style.height = "auto",
- a.style.width = b.width + "px",
- this.height = a.offsetHeight,
- this.toolboxPosition == Blockly.TOOLBOX_AT_TOP ? a.style.top = "0" : a.style.bottom = "0") : (this.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT ? a.style.right = "0" : a.style.left = "0",
- a.style.height = b.height + "px",
- this.width = a.offsetWidth);
- this.flyout_.position()
- }
- }
- ;
- Blockly.Toolbox.prototype.populate_ = function (a) {
- this.tree_.removeChildren();
- this.tree_.blocks = [];
- this.hasColours_ = !1;
- a = this.syncTrees_(a, this.tree_, this.workspace_.options.pathToMedia);
- if (this.tree_.blocks.length)
- throw "Toolbox cannot have both blocks and categories in the root level.";
- this.workspace_.resizeContents();
- return a
- }
- ;
- Blockly.Toolbox.prototype.syncTrees_ = function (a, b, c) {
- for (var d = null, e = null, f = 0, g; g = a.childNodes[f]; f++)
- if (g.tagName)
- switch (g.tagName.toUpperCase()) {
- case "CATEGORY":
- e = this.tree_.createNode(g.getAttribute("name"));
- e.blocks = [];
- var h = g.getAttribute("custom");
- h ? e.blocks = h : (h = this.syncTrees_(g, e, c)) && (d = h);
- h = g.getAttribute("colour");
- goog.isString(h) ? (h.match(/^#[0-9a-fA-F]{6}$/) ? e.hexColour = h : e.hexColour = Blockly.hueToRgb(h),
- this.hasColours_ = !0) : e.hexColour = "";
- "true" == g.getAttribute("expanded") ? (e.blocks.length && (d = e),
- e.setExpanded(!0)) : e.setExpanded(!1);
- b.add(e);
- e = g;
- break;
- case "SEP":
- e && ("CATEGORY" == e.tagName.toUpperCase() ? b.add(new Blockly.Toolbox.TreeSeparator(this.treeSeparatorConfig_)) : (g = parseFloat(g.getAttribute("gap")),
- !isNaN(g) && e && e.setAttribute("gap", g)));
- break;
- case "BLOCK":
- case "SHADOW":
- case "LABEL":
- case "BUTTON":
- b.blocks.push(g),
- e = g
- }
- return d
- }
- ;
- Blockly.Toolbox.prototype.addColour_ = function (a) {
- a = (a || this.tree_).getChildren();
- for (var b = 0, c; c = a[b]; b++) {
- var d = c.getRowElement();
- if (d) {
- var e = this.hasColours_ ? "8px solid " + (c.hexColour || "#ddd") : "none";
- this.workspace_.RTL ? d.style.borderRight = e : d.style.borderLeft = e
- }
- this.addColour_(c)
- }
- }
- ;
- Blockly.Toolbox.prototype.clearSelection = function () {
- this.tree_.setSelectedItem(null)
- }
- ;
- Blockly.Toolbox.prototype.getClientRect = function () {
- if (!this.HtmlDiv)
- return null;
- var a = this.HtmlDiv.getBoundingClientRect()
- , b = a.left
- , c = a.top
- , d = a.width;
- a = a.height;
- return this.toolboxPosition == Blockly.TOOLBOX_AT_LEFT ? new goog.math.Rect(-1E7, -1E7, 1E7 + b + d, 2E7) : this.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT ? new goog.math.Rect(b, -1E7, 1E7 + d, 2E7) : this.toolboxPosition == Blockly.TOOLBOX_AT_TOP ? new goog.math.Rect(-1E7, -1E7, 2E7, 1E7 + c + a) : new goog.math.Rect(0, c, 2E7, 1E7 + d)
- }
- ;
- Blockly.Toolbox.prototype.refreshSelection = function () {
- var a = this.tree_.getSelectedItem();
- a && a.blocks && this.flyout_.show(a.blocks)
- }
- ;
- Blockly.Toolbox.TreeControl = function (a, b) {
- this.toolbox_ = a;
- goog.ui.tree.TreeControl.call(this, goog.html.SafeHtml.EMPTY, b)
- }
- ;
- goog.inherits(Blockly.Toolbox.TreeControl, goog.ui.tree.TreeControl);
- Blockly.Toolbox.TreeControl.prototype.enterDocument = function () {
- Blockly.Toolbox.TreeControl.superClass_.enterDocument.call(this);
- var a = this.getElement();
- goog.events.BrowserFeature.TOUCH_ENABLED && Blockly.bindEventWithChecks_(a, goog.events.EventType.TOUCHSTART, this, this.handleTouchEvent_)
- }
- ;
- Blockly.Toolbox.TreeControl.prototype.handleTouchEvent_ = function (a) {
- a.preventDefault();
- var b = this.getNodeFromEvent_(a);
- b && a.type === goog.events.EventType.TOUCHSTART && setTimeout(function () {
- b.onMouseDown(a)
- }, 1)
- }
- ;
- Blockly.Toolbox.TreeControl.prototype.createNode = function (a) {
- return new Blockly.Toolbox.TreeNode(this.toolbox_, a ? goog.html.SafeHtml.htmlEscape(a) : goog.html.SafeHtml.EMPTY, this.getConfig(), this.getDomHelper())
- }
- ;
- Blockly.Toolbox.TreeControl.prototype.setSelectedItem = function (a) {
- var b = this.toolbox_;
- if (a != this.selectedItem_ && a != b.tree_) {
- b.lastCategory_ && (b.lastCategory_.children_ == null) && (b.lastCategory_.getRowElement().style.backgroundColor = "");
- if (a) {
- var c = a.hexColour || "#57e";
- a.getRowElement().style.backgroundColor = c;
- b.addColour_(a)
- }
- c = this.getSelectedItem();
- goog.ui.tree.TreeControl.prototype.setSelectedItem.call(this, a);
- a && a.blocks && a.blocks.length ? (b.flyout_.show(a.blocks),
- b.lastCategory_ != a && b.flyout_.scrollToStart()) : b.flyout_.hide();
- c != a && c != this && (c = new Blockly.Events.Ui(null, "category", c && c.getHtml(), a && a.getHtml()),
- c.workspaceId = b.workspace_.id,
- Blockly.Events.fire(c));
- a && (b.lastCategory_ = a)
- }
- }
- ;
- Blockly.Toolbox.TreeNode = function (a, b, c, d) {
- goog.ui.tree.TreeNode.call(this, b, c, d);
- a && (b = function () {
- Blockly.svgResize(a.workspace_)
- }
- ,
- goog.events.listen(a.tree_, goog.ui.tree.BaseNode.EventType.EXPAND, b),
- goog.events.listen(a.tree_, goog.ui.tree.BaseNode.EventType.COLLAPSE, b))
- }
- ;
- goog.inherits(Blockly.Toolbox.TreeNode, goog.ui.tree.TreeNode);
- Blockly.Toolbox.TreeNode.prototype.getExpandIconSafeHtml = function () {
- return goog.html.SafeHtml.create("span")
- }
- ;
- Blockly.Toolbox.TreeNode.prototype.onMouseDown = function (a) {
- this.hasChildren() && this.isUserCollapsible_ ? (this.toggle(),
- this.select()) : this.isSelected() ? this.getTree().setSelectedItem(null) : this.select();
- this.updateRow()
- }
- ;
- Blockly.Toolbox.TreeNode.prototype.onDoubleClick_ = function (a) { }
- ;
- Blockly.Toolbox.TreeNode.prototype.onKeyDown = function (a) {
- if (this.tree.toolbox_.horizontalLayout_) {
- var b = {}
- , c = goog.events.KeyCodes.DOWN
- , d = goog.events.KeyCodes.UP;
- b[goog.events.KeyCodes.RIGHT] = this.rightToLeft_ ? d : c;
- b[goog.events.KeyCodes.LEFT] = this.rightToLeft_ ? c : d;
- b[goog.events.KeyCodes.UP] = goog.events.KeyCodes.LEFT;
- b[goog.events.KeyCodes.DOWN] = goog.events.KeyCodes.RIGHT;
- a.keyCode = b[a.keyCode] || a.keyCode
- }
- return Blockly.Toolbox.TreeNode.superClass_.onKeyDown.call(this, a)
- }
- ;
- Blockly.Toolbox.TreeSeparator = function (a) {
- Blockly.Toolbox.TreeNode.call(this, null, "", a)
- }
- ;
- goog.inherits(Blockly.Toolbox.TreeSeparator, Blockly.Toolbox.TreeNode);
- Blockly.Css = {};
- Blockly.Css.Cursor = {
- OPEN: "handopen",
- CLOSED: "handclosed",
- DELETE: "handdelete"
- };
- Blockly.Css.currentCursor_ = "";
- Blockly.Css.styleSheet_ = null;
- Blockly.Css.mediaPath_ = "";
- Blockly.Css.inject = function (a, b) {
- if (!Blockly.Css.styleSheet_) {
- var c = ".blocklyDraggable {}\n";
- a && (c += Blockly.Css.CONTENT.join("\n"),
- Blockly.FieldDate && (c += Blockly.FieldDate.CSS.join("\n")));
- Blockly.Css.mediaPath_ = b.replace(/[\\\/]$/, "");
- c = c.replace(/<<<PATH>>>/g, Blockly.Css.mediaPath_);
- var d = document.createElement("style");
- document.head.insertBefore(d, document.head.firstChild);
- c = document.createTextNode(c);
- d.appendChild(c);
- Blockly.Css.styleSheet_ = d.sheet;
- Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN)
- }
- }
- ;
- Blockly.Css.setCursor = function (a) {
- if (Blockly.Css.currentCursor_ != a) {
- Blockly.Css.currentCursor_ = a;
- var b = "url(" + Blockly.Css.mediaPath_ + "/" + a + ".cur), auto"
- , c = ".blocklyDraggable {\n cursor: " + b + ";\n}\n";
- Blockly.Css.styleSheet_.deleteRule(0);
- Blockly.Css.styleSheet_.insertRule(c, 0);
- c = document.getElementsByClassName("blocklyToolboxDiv");
- for (var d = 0, e; e = c[d]; d++)
- e.style.cursor = a == Blockly.Css.Cursor.DELETE ? b : "";
- document.body.parentNode.style.cursor = a == Blockly.Css.Cursor.OPEN ? "" : b
- }
- }
- ;
- Blockly.Css.CONTENT = [".blocklySvg {", "background-color: #fff;", "outline: none;", "overflow: hidden;", "display: block;", "}", ".blocklyWidgetDiv {", "display: none;", "position: absolute;", "z-index: 99999;", "}", ".injectionDiv {", "height: 100%;", "position: relative;", "}", ".blocklyNonSelectable {", "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "-ms-user-select: none;", "}", ".blocklyTooltipDiv {", "background-color: #ffffc7;", "border: 1px solid #ddc;", "box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);", "color: #000;", "display: none;", "font-family: sans-serif;", "font-size: 9pt;", "opacity: 0.9;", "padding: 2px;", "position: absolute;", "z-index: 100000;", "}", ".blocklyResizeSE {", "cursor: se-resize;", "fill: #aaa;", "}", ".blocklyResizeSW {", "cursor: sw-resize;", "fill: #aaa;", "}", ".blocklyResizeLine {", "stroke: #888;", "stroke-width: 1;", "}", ".blocklyHighlightedConnectionPath {", "fill: none;", "stroke: #fc3;", "stroke-width: 4px;", "}", ".blocklyPathLight {", "fill: none;", "stroke-linecap: round;", "stroke-width: 1;", "}", ".blocklySelected>.blocklyPath {", "stroke: #fc3;", "stroke-width: 3px;", "}", ".blocklySelected>.blocklyPathLight {", "display: none;", "}", ".blocklyDragging>.blocklyPath,", ".blocklyDragging>.blocklyPathLight {", "fill-opacity: .8;", "stroke-opacity: .8;", "}", ".blocklyDragging>.blocklyPathDark {", "display: none;", "}", ".blocklyDisabled>.blocklyPath {", "fill-opacity: .5;", "stroke-opacity: .5;", "}", ".blocklyDisabled>.blocklyPathLight,", ".blocklyDisabled>.blocklyPathDark {", "display: none;", "}", ".blocklyText {", "cursor: default;", "fill: #fff;", "font-family: sans-serif;", "font-size: 11pt;", "}", ".blocklyNonEditableText>text {", "pointer-events: none;", "}", ".blocklyNonEditableText>rect,", ".blocklyEditableText>rect {", "fill: #fff;", "fill-opacity: .6;", "}", ".blocklyNonEditableText>text,", ".blocklyEditableText>text {", "fill: #000;", "}", ".blocklyEditableText:hover>rect {", "stroke: #fff;", "stroke-width: 2;", "}", ".blocklyBubbleText {", "fill: #000;", "}", ".blocklyFlyoutButton {", "fill: #888;", "cursor: default;", "}", ".blocklyFlyoutButtonShadow {", "fill: #666;", "}", ".blocklyFlyoutButton:hover {", "fill: #aaa;", "}", ".blocklyFlyoutLabel {", "cursor: default;", "}", ".blocklyFlyoutLabelBackground {", "opacity: 0;", "}", ".blocklyFlyoutLabelText {", "fill: #000;", "}", ".blocklyFlyoutLabelText:hover {", "fill: #aaa;", "}", ".blocklySvg text {", "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "cursor: inherit;", "}", ".blocklyHidden {", "display: none;", "}", ".blocklyFieldDropdown:not(.blocklyHidden) {", "display: block;", "}", ".blocklyIconGroup {", "cursor: default;", "}", ".blocklyIconGroup:not(:hover),", ".blocklyIconGroupReadonly {", "opacity: .6;", "}", ".blocklyIconShape {", "fill: #00f;", "stroke: #fff;", "stroke-width: 1px;", "}", ".blocklyIconSymbol {", "fill: #fff;", "}", ".blocklyMinimalBody {", "margin: 0;", "padding: 0;", "}", ".blocklyCommentTextarea {", "background-color: #ffc;", "border: 0;", "margin: 0;", "padding: 2px;", "resize: none;", "}", ".blocklyHtmlInput {", "border: none;", "border-radius: 4px;", "font-family: sans-serif;", "height: 100%;", "margin: 0;", "outline: none;", "padding: 0 1px;", "width: 100%", "}", ".blocklyMainBackground {", "stroke-width: 1;", "stroke: #c6c6c6;", "}", ".blocklyMutatorBackground {", "fill: #fff;", "stroke: #ddd;", "stroke-width: 1;", "}", ".blocklyFlyoutBackground {", "fill: #ddd;", "fill-opacity: .8;", "}", ".blocklyScrollbarBackground {", "opacity: 0;", "}", ".blocklyScrollbarHandle {", "fill: #ccc;", "}", ".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", ".blocklyScrollbarHandle:hover {", "fill: #bbb;", "}", ".blocklyZoom>image {", "opacity: .4;", "}", ".blocklyZoom>image:hover {", "opacity: .6;", "}", ".blocklyZoom>image:active {", "opacity: .8;", "}", ".blocklyFlyout .blocklyScrollbarHandle {", "fill: #bbb;", "}", ".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", ".blocklyFlyout .blocklyScrollbarHandle:hover {", "fill: #aaa;", "}", ".blocklyInvalidInput {", "background: #faa;", "}", ".blocklyAngleCircle {", "stroke: #444;", "stroke-width: 1;", "fill: #ddd;", "fill-opacity: .8;", "}", ".blocklyAngleMarks {", "stroke: #444;", "stroke-width: 1;", "}", ".blocklyAngleGauge {", "fill: #f88;", "fill-opacity: .8;", "}", ".blocklyAngleLine {", "stroke: #f00;", "stroke-width: 2;", "stroke-linecap: round;", "}", ".blocklyContextMenu {", "border-radius: 4px;", "}", ".blocklyDropdownMenu {", "padding: 0 !important;", "}", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {", "background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px !important;", "}", ".blocklyToolboxDiv {", "background-color: #ddd;", "overflow-x: visible;", "overflow-y: auto;", "position: absolute;", "}", ".blocklyTreeRoot {", "padding: 4px 0;", "}", ".blocklyTreeRoot:focus {", "outline: none;", "}", ".blocklyTreeRow {", "height: 22px;", "line-height: 22px;", "margin-bottom: 3px;", "padding-right: 8px;", "white-space: nowrap;", "}", ".blocklyHorizontalTree {", "float: left;", "margin: 1px 5px 8px 0;", "}", ".blocklyHorizontalTreeRtl {", "float: right;", "margin: 1px 0 8px 5px;", "}", '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {', "margin-left: 8px;", "}", ".blocklyTreeRow:not(.blocklyTreeSelected):hover {", "background-color: #e4e4e4;", "}", ".blocklyTreeSeparator {", "border-bottom: solid #e5e5e5 1px;", "height: 0;", "margin: 5px 0;", "}", ".blocklyTreeSeparatorHorizontal {", "border-right: solid #e5e5e5 1px;", "width: 0;", "padding: 5px 0;", "margin: 0 5px;", "}", ".blocklyTreeIcon {", "background-image: url(<<<PATH>>>/sprites.png);", "height: 16px;", "vertical-align: middle;", "width: 16px;", "}", ".blocklyTreeIconClosedLtr {", "background-position: -32px -1px;", "}", ".blocklyTreeIconClosedRtl {", "background-position: 0px -1px;", "}", ".blocklyTreeIconOpen {", "background-position: -16px -1px;", "}", ".blocklyTreeSelected>.blocklyTreeIconClosedLtr {", "background-position: -32px -17px;", "}", ".blocklyTreeSelected>.blocklyTreeIconClosedRtl {", "background-position: 0px -17px;", "}", ".blocklyTreeSelected>.blocklyTreeIconOpen {", "background-position: -16px -17px;", "}", ".blocklyTreeIconNone,", ".blocklyTreeSelected>.blocklyTreeIconNone {", "background-position: -48px -1px;", "}", ".blocklyTreeLabel {", "cursor: default;", "font-family: sans-serif;", "font-size: 16px;", "padding: 0 3px;", "vertical-align: middle;", "}", ".blocklyTreeSelected .blocklyTreeLabel {", "color: #fff;", "}", ".blocklyWidgetDiv .goog-palette {", "outline: none;", "cursor: default;", "}", ".blocklyWidgetDiv .goog-palette-table {", "border: 1px solid #666;", "border-collapse: collapse;", "}", ".blocklyWidgetDiv .goog-palette-cell {", "height: 13px;", "width: 15px;", "margin: 0;", "border: 0;", "text-align: center;", "vertical-align: middle;", "border-right: 1px solid #666;", "font-size: 1px;", "}", ".blocklyWidgetDiv .goog-palette-colorswatch {", "position: relative;", "height: 13px;", "width: 15px;", "border: 1px solid #666;", "}", ".blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {", "border: 1px solid #FFF;", "}", ".blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {", "border: 1px solid #000;", "color: #fff;", "}", ".blocklyWidgetDiv .goog-menu {", "background: #fff;", "border-color: #ccc #666 #666 #ccc;", "border-style: solid;", "border-width: 1px;", "cursor: default;", "font: normal 13px Arial, sans-serif;", "margin: 0;", "outline: none;", "padding: 4px 0;", "position: absolute;", "overflow-y: auto;", "overflow-x: hidden;", "max-height: 100%;", "z-index: 20000;", "}", ".blocklyWidgetDiv .goog-menuitem {", "color: #000;", "font: normal 13px Arial, sans-serif;", "list-style: none;", "margin: 0;", "padding: 4px 7em 4px 28px;", "white-space: nowrap;", "}", ".blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl {", "padding-left: 7em;", "padding-right: 28px;", "}", ".blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,", ".blocklyWidgetDiv .goog-menu-noicon .goog-menuitem {", "padding-left: 12px;", "}", ".blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem {", "padding-right: 20px;", "}", ".blocklyWidgetDiv .goog-menuitem-content {", "color: #000;", "font: normal 13px Arial, sans-serif;", "}", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {", "color: #ccc !important;", "}", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon {", "opacity: 0.3;", "-moz-opacity: 0.3;", "filter: alpha(opacity=30);", "}", ".blocklyWidgetDiv .goog-menuitem-highlight,", ".blocklyWidgetDiv .goog-menuitem-hover {", "background-color: #d6e9f8;", "border-color: #d6e9f8;", "border-style: dotted;", "border-width: 1px 0;", "padding-bottom: 3px;", "padding-top: 3px;", "}", ".blocklyWidgetDiv .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-menuitem-icon {", "background-repeat: no-repeat;", "height: 16px;", "left: 6px;", "position: absolute;", "right: auto;", "vertical-align: middle;", "width: 16px;", "}", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon {", "left: auto;", "right: 6px;", "}", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {", "background: url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0;", "}", ".blocklyWidgetDiv .goog-menuitem-accel {", "color: #999;", "direction: ltr;", "left: auto;", "padding: 0 6px;", "position: absolute;", "right: 0;", "text-align: right;", "}", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel {", "left: 0;", "right: auto;", "text-align: left;", "}", ".blocklyWidgetDiv .goog-menuitem-mnemonic-hint {", "text-decoration: underline;", "}", ".blocklyWidgetDiv .goog-menuitem-mnemonic-separator {", "color: #999;", "font-size: 12px;", "padding-left: 4px;", "}", ".blocklyWidgetDiv .goog-menuseparator {", "border-top: 1px solid #ccc;", "margin: 4px 0;", "padding: 0;", "}", ""];
- Blockly.Css.CONTENT = [".blocklySvg {", "background-color: #fff;", "outline: none;", "overflow: hidden;", "display: block;", "}", ".blocklyWidgetDiv {", "display: none;", "position: absolute;", "z-index: 99999;", "}", ".injectionDiv {", "height: 100%;", "position: relative;", "}", ".blocklyNonSelectable {", "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "-ms-user-select: none;", "}", ".blocklyTooltipDiv {", "background-color: #ffffc7;", "border: 1px solid #ddc;", "box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);",
- "color: #000;", "display: none;", "font-family: sans-serif;", "font-size: 9pt;", "opacity: 0.9;", "padding: 2px;", "position: absolute;", "z-index: 100000;", "}", ".blocklyResizeSE {", "cursor: se-resize;", "fill: #aaa;", "}", ".blocklyResizeSW {", "cursor: sw-resize;", "fill: #aaa;", "}", ".blocklyResizeLine {", "stroke: #888;", "stroke-width: 1;", "}", ".blocklyHighlightedConnectionPath {", "fill: none;", "stroke: #fc3;", "stroke-width: 4px;", "}", ".blocklyPathLight {", "fill: none;", "stroke-linecap: round;", "stroke-width: 1;",
- "}", ".blocklySelected>.blocklyPath {", "stroke: #fc3;", "stroke-width: 3px;", "}", ".blocklySelected>.blocklyPathLight {", "display: none;", "}", ".blocklyDragging>.blocklyPath,", ".blocklyDragging>.blocklyPathLight {", "fill-opacity: .8;", "stroke-opacity: .8;", "}", ".blocklyDragging>.blocklyPathDark {", "display: none;", "}", ".blocklyDisabled>.blocklyPath {", "fill-opacity: .5;", "stroke-opacity: .5;", "}", ".blocklyDisabled>.blocklyPathLight,", ".blocklyDisabled>.blocklyPathDark {", "display: none;", "}", ".blocklyText {",
- "cursor: default;", "fill: #fff;", "font-family: sans-serif;", "font-size: 11pt;", "}", ".blocklyTextCode {", " font-family: monospace;", "}", ".blocklyNonEditableText>text {", "pointer-events: none;", "}", ".blocklyNonEditableText>rect,", ".blocklyEditableText>rect {", "fill: #fff;", "fill-opacity: .6;", "}", ".blocklyNonEditableText>text,", ".blocklyEditableText>text {", "fill: #000;", "}", ".blocklyEditableText:hover>rect {", "stroke: #fff;", "stroke-width: 2;", "}", ".blocklyBubbleText {", "fill: #000;", "}", ".blocklyFlyoutButton {",
- "fill: #888;", "cursor: default;", "}", ".blocklyFlyoutButtonShadow {", "fill: #666;", "}", ".blocklyFlyoutButton:hover {", "fill: #aaa;", "}", ".blocklyFlyoutLabel {", "cursor: default;", "}", ".blocklyFlyoutLabelBackground {", "opacity: 0;", "}", ".blocklyFlyoutLabelText {", "fill: #000;", "}", ".blocklyFlyoutLabelText:hover {", "fill: #aaa;", "}", ".blocklySvg text {", "user-select: none;", "-moz-user-select: none;", "-webkit-user-select: none;", "cursor: inherit;", "}", ".blocklyHidden {", "display: none;", "}", ".blocklyFieldDropdown:not(.blocklyHidden) {",
- "display: block;", "}", ".blocklyIconGroup {", "cursor: default;", "}", ".blocklyIconGroup:not(:hover),", ".blocklyIconGroupReadonly {", "opacity: .6;", "}", ".blocklyIconShape {", "fill: #00f;", "stroke: #fff;", "stroke-width: 1px;", "}", ".blocklyIconSymbol {", "fill: #fff;", "}", ".blocklyMinimalBody {", "margin: 0;", "padding: 0;", "}", ".blocklyCommentTextarea {", "background-color: #ffc;", "border: 0;", "margin: 0;", "padding: 2px;", "resize: none;", "}", ".blocklyHtmlInput {", "border: none;", "border-radius: 4px;", "font-family: sans-serif;",
- "height: 100%;", "margin: 0;", "outline: none;", "padding: 0 1px;", "width: 100%", "}", ".blocklyMainBackground {", "stroke-width: 1;", "stroke: #c6c6c6;", "}", ".blocklyMutatorBackground {", "fill: #fff;", "stroke: #ddd;", "stroke-width: 1;", "}", ".blocklyFlyoutBackground {", "fill: #ddd;", "fill-opacity: .8;", "}", ".blocklyScrollbarBackground {", "opacity: 0;", "}", ".blocklyScrollbarHandle {", "fill: #ccc;", "}", ".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", ".blocklyScrollbarHandle:hover {", "fill: #bbb;",
- "}", ".blocklyZoom>image {", "opacity: .4;", "}", ".blocklyZoom>image:hover {", "opacity: .6;", "}", ".blocklyZoom>image:active {", "opacity: .8;", "}", ".blocklyFlyout .blocklyScrollbarHandle {", "fill: #bbb;", "}", ".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", ".blocklyFlyout .blocklyScrollbarHandle:hover {", "fill: #aaa;", "}", ".blocklyInvalidInput {", "background: #faa;", "}", ".blocklyAngleCircle {", "stroke: #444;", "stroke-width: 1;", "fill: #ddd;", "fill-opacity: .8;", "}", ".blocklyAngleMarks {",
- "stroke: #444;", "stroke-width: 1;", "}", ".blocklyAngleGauge {", "fill: #f88;", "fill-opacity: .8;", "}", ".blocklyAngleLine {", "stroke: #f00;", "stroke-width: 2;", "stroke-linecap: round;", "}", ".blocklyContextMenu {", "border-radius: 4px;", "}", ".blocklyDropdownMenu {", "padding: 0 !important;", "}", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {", "background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px !important;", "}",
- ".blocklyToolboxDiv {", "background-color: #ddd;", "overflow-x: visible;", "overflow-y: auto;", "position: absolute;", "}", ".blocklyTreeRoot {", "padding: 4px 0;", "}", ".blocklyTreeRoot:focus {", "outline: none;", "}", ".blocklyTreeRow {", "height: 22px;", "line-height: 22px;", "margin-bottom: 3px;", "padding-right: 8px;", "white-space: nowrap;", "}", ".blocklyHorizontalTree {", "float: left;", "margin: 1px 5px 8px 0;", "}", ".blocklyHorizontalTreeRtl {", "float: right;", "margin: 1px 0 8px 5px;", "}", '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {',
- "margin-left: 8px;", "}", ".blocklyTreeRow:not(.blocklyTreeSelected):hover {", "background-color: #e4e4e4;", "}", ".blocklyTreeSeparator {", "border-bottom: solid #e5e5e5 1px;", "height: 0;", "margin: 5px 0;", "}", ".blocklyTreeSeparatorHorizontal {", "border-right: solid #e5e5e5 1px;", "width: 0;", "padding: 5px 0;", "margin: 0 5px;", "}", ".blocklyTreeIcon {", "background-image: url(<<<PATH>>>/sprites.png);", "height: 16px;", "vertical-align: middle;", "width: 16px;", "}", ".blocklyTreeIconClosedLtr {", "background-position: -32px -1px;",
- "}", ".blocklyTreeIconClosedRtl {", "background-position: 0px -1px;", "}", ".blocklyTreeIconOpen {", "background-position: -16px -1px;", "}", ".blocklyTreeSelected>.blocklyTreeIconClosedLtr {", "background-position: -32px -17px;", "}", ".blocklyTreeSelected>.blocklyTreeIconClosedRtl {", "background-position: 0px -17px;", "}", ".blocklyTreeSelected>.blocklyTreeIconOpen {", "background-position: -16px -17px;", "}", ".blocklyTreeIconNone,", ".blocklyTreeSelected>.blocklyTreeIconNone {", "background-position: -48px -1px;",
- "}", ".blocklyTreeLabel {", "cursor: default;", "font-family: sans-serif;", "font-size: 16px;", "padding: 0 3px;", "vertical-align: middle;", "}", ".blocklyTreeSelected .blocklyTreeLabel {", "color: #fff;", "}", ".blocklyWidgetDiv .goog-palette {", "outline: none;", "cursor: default;", "}", ".blocklyWidgetDiv .goog-palette-table {", "border: 1px solid #666;", "border-collapse: collapse;", "}", ".blocklyWidgetDiv .goog-palette-cell {", "height: 13px;", "width: 15px;", "margin: 0;", "border: 0;", "text-align: center;", "vertical-align: middle;",
- "border-right: 1px solid #666;", "font-size: 1px;", "}", ".blocklyWidgetDiv .goog-palette-colorswatch {", "position: relative;", "height: 13px;", "width: 15px;", "border: 1px solid #666;", "}", ".blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {", "border: 1px solid #FFF;", "}", ".blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {", "border: 1px solid #000;", "color: #fff;", "}", ".blocklyWidgetDiv .goog-menu {", "background: #fff;", "border-color: #ccc #666 #666 #ccc;", "border-style: solid;",
- "border-width: 1px;", "cursor: default;", "font: normal 13px Arial, sans-serif;", "margin: 0;", "outline: none;", "padding: 4px 0;", "position: absolute;", "overflow-y: auto;", "overflow-x: hidden;", "max-height: 100%;", "z-index: 20000;", "}", ".blocklyWidgetDiv .goog-menuitem {", "color: #000;", "font: normal 13px Arial, sans-serif;", "list-style: none;", "margin: 0;", "padding: 4px 7em 4px 28px;", "white-space: nowrap;", "}", ".blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl {", "padding-left: 7em;", "padding-right: 28px;",
- "}", ".blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,", ".blocklyWidgetDiv .goog-menu-noicon .goog-menuitem {", "padding-left: 12px;", "}", ".blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem {", "padding-right: 20px;", "}", ".blocklyWidgetDiv .goog-menuitem-content {", "color: #000;", "font: normal 13px Arial, sans-serif;", "}", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {", "color: #ccc !important;", "}", ".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon {",
- "opacity: 0.3;", "-moz-opacity: 0.3;", "filter: alpha(opacity=30);", "}", ".blocklyWidgetDiv .goog-menuitem-highlight,", ".blocklyWidgetDiv .goog-menuitem-hover {", "background-color: #d6e9f8;", "border-color: #d6e9f8;", "border-style: dotted;", "border-width: 1px 0;", "padding-bottom: 3px;", "padding-top: 3px;", "}", ".blocklyWidgetDiv .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-menuitem-icon {", "background-repeat: no-repeat;", "height: 16px;", "left: 6px;", "position: absolute;", "right: auto;", "vertical-align: middle;",
- "width: 16px;", "}", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon {", "left: auto;", "right: 6px;", "}", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,", ".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {", "background: url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0;", "}", ".blocklyWidgetDiv .goog-menuitem-accel {", "color: #999;", "direction: ltr;", "left: auto;", "padding: 0 6px;",
- "position: absolute;", "right: 0;", "text-align: right;", "}", ".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel {", "left: 0;", "right: auto;", "text-align: left;", "}", ".blocklyWidgetDiv .goog-menuitem-mnemonic-hint {", "text-decoration: underline;", "}", ".blocklyWidgetDiv .goog-menuitem-mnemonic-separator {", "color: #999;", "font-size: 12px;", "padding-left: 4px;", "}", ".blocklyWidgetDiv .goog-menuseparator {", "border-top: 1px solid #ccc;", "margin: 4px 0;", "padding: 0;", "}", ""];
- Blockly.WidgetDiv = {};
- Blockly.WidgetDiv.DIV = null;
- Blockly.WidgetDiv.owner_ = null;
- Blockly.WidgetDiv.dispose_ = null;
- Blockly.WidgetDiv.createDom = function () {
- Blockly.WidgetDiv.DIV || (Blockly.WidgetDiv.DIV = goog.dom.createDom("DIV", "blocklyWidgetDiv"),
- document.body.appendChild(Blockly.WidgetDiv.DIV))
- }
- ;
- Blockly.WidgetDiv.show = function (a, b, c) {
- Blockly.WidgetDiv.hide();
- Blockly.WidgetDiv.owner_ = a;
- Blockly.WidgetDiv.dispose_ = c;
- a = goog.style.getViewportPageOffset(document);
- Blockly.WidgetDiv.DIV.style.top = a.y + "px";
- Blockly.WidgetDiv.DIV.style.direction = b ? "rtl" : "ltr";
- Blockly.WidgetDiv.DIV.style.display = "block"
- }
- ;
- Blockly.WidgetDiv.hide = function () {
- console.log(document.getElementById("img") && document.getElementById("img").value)
- Blockly.WidgetDiv.owner_ && (Blockly.WidgetDiv.owner_ = null,
- Blockly.WidgetDiv.DIV.style.display = "none",
- Blockly.WidgetDiv.DIV.style.left = "",
- Blockly.WidgetDiv.DIV.style.top = "",
- Blockly.WidgetDiv.dispose_ && Blockly.WidgetDiv.dispose_(),
- Blockly.WidgetDiv.dispose_ = null,
- goog.dom.removeChildren(Blockly.WidgetDiv.DIV))
- }
- ;
- Blockly.WidgetDiv.isVisible = function () {
- return !!Blockly.WidgetDiv.owner_
- }
- ;
- Blockly.WidgetDiv.hideIfOwner = function (a) {
- Blockly.WidgetDiv.owner_ == a && Blockly.WidgetDiv.hide()
- }
- ;
- Blockly.WidgetDiv.position = function (a, b, c, d, e) {
- b < d.y && (b = d.y);
- e ? a > c.width + d.x && (a = c.width + d.x) : a < d.x && (a = d.x);
- Blockly.WidgetDiv.DIV.style.left = a + "px";
- Blockly.WidgetDiv.DIV.style.top = b + "px";
- Blockly.WidgetDiv.DIV.style.height = c.height - b + "px"
- }
- ;
- Blockly.inject = function (a, b) {
- goog.isString(a) && (a = document.getElementById(a) || document.querySelector(a));
- if (!goog.dom.contains(document, a))
- throw "Error: container is not in current document.";
- var c = new Blockly.Options(b || {})
- , d = goog.dom.createDom("div", "injectionDiv");
- a.appendChild(d);
- d = Blockly.createDom_(d, c);
- c = Blockly.createMainWorkspace_(d, c);
- Blockly.init_(c);
- c.markFocused();
- Blockly.bindEventWithChecks_(d, "focus", c, c.markFocused);
- Blockly.svgResize(c);
- return c
- }
- ;
- Blockly.createDom_ = function (a, b) {
- a.setAttribute("dir", "LTR");
- goog.ui.Component.setDefaultRightToLeft(b.RTL);
- Blockly.Css.inject(b.hasCss, b.pathToMedia);
- var c = Blockly.createSvgElement("svg", {
- xmlns: "http://www.w3.org/2000/svg",
- "xmlns:html": "http://www.w3.org/1999/xhtml",
- "xmlns:xlink": "http://www.w3.org/1999/xlink",
- version: "1.1",
- "class": "blocklySvg"
- }, a)
- , d = Blockly.createSvgElement("defs", {}, c)
- , e = String(Math.random()).substring(2)
- , f = Blockly.createSvgElement("filter", {
- id: "blocklyEmbossFilter" + e
- }, d);
- Blockly.createSvgElement("feGaussianBlur", {
- "in": "SourceAlpha",
- stdDeviation: 1,
- result: "blur"
- }, f);
- var g = Blockly.createSvgElement("feSpecularLighting", {
- "in": "blur",
- surfaceScale: 1,
- specularConstant: .5,
- specularExponent: 10,
- "lighting-color": "white",
- result: "specOut"
- }, f);
- Blockly.createSvgElement("fePointLight", {
- x: -5E3,
- y: -1E4,
- z: 2E4
- }, g);
- Blockly.createSvgElement("feComposite", {
- "in": "specOut",
- in2: "SourceAlpha",
- operator: "in",
- result: "specOut"
- }, f);
- Blockly.createSvgElement("feComposite", {
- "in": "SourceGraphic",
- in2: "specOut",
- operator: "arithmetic",
- k1: 0,
- k2: 1,
- k3: 1,
- k4: 0
- }, f);
- b.embossFilterId = f.id;
- f = Blockly.createSvgElement("pattern", {
- id: "blocklyDisabledPattern" + e,
- patternUnits: "userSpaceOnUse",
- width: 10,
- height: 10
- }, d);
- Blockly.createSvgElement("rect", {
- width: 10,
- height: 10,
- fill: "#aaa"
- }, f);
- Blockly.createSvgElement("path", {
- d: "M 0 0 L 10 10 M 10 0 L 0 10",
- stroke: "#cc0"
- }, f);
- b.disabledPatternId = f.id;
- d = Blockly.createSvgElement("pattern", {
- id: "blocklyGridPattern" + e,
- patternUnits: "userSpaceOnUse"
- }, d);
- 0 < b.gridOptions.length && 0 < b.gridOptions.spacing && (Blockly.createSvgElement("line", {
- stroke: b.gridOptions.colour
- }, d),
- 1 < b.gridOptions.length && Blockly.createSvgElement("line", {
- stroke: b.gridOptions.colour
- }, d));
- b.gridPattern = d;
- return c
- }
- ;
- Blockly.createMainWorkspace_ = function (a, b) {
- b.parentWorkspace = null;
- var c = new Blockly.WorkspaceSvg(b);
- c.scale = b.zoomOptions.startScale;
- a.appendChild(c.createDom("blocklyMainBackground"));
- c.translate(0, 0);
- c.markFocused();
- b.readOnly || b.hasScrollbars || c.addChangeListener(function () {
- if (Blockly.dragMode_ == Blockly.DRAG_NONE) {
- var a = c.getMetrics()
- , e = a.viewLeft + a.absoluteLeft
- , f = a.viewTop + a.absoluteTop;
- if (a.contentTop < f || a.contentTop + a.contentHeight > a.viewHeight + f || a.contentLeft < (b.RTL ? a.viewLeft : e) || a.contentLeft + a.contentWidth > (b.RTL ? a.viewWidth : a.viewWidth + e))
- for (var g = c.getTopBlocks(!1), h = 0, k; k = g[h]; h++) {
- var m = k.getRelativeToSurfaceXY()
- , p = k.getHeightWidth()
- , l = f + 25 - p.height - m.y;
- 0 < l && k.moveBy(0, l);
- l = f + a.viewHeight - 25 - m.y;
- 0 > l && k.moveBy(0, l);
- l = 25 + e - m.x - (b.RTL ? 0 : p.width);
- 0 < l && k.moveBy(l, 0);
- m = e + a.viewWidth - 25 - m.x + (b.RTL ? p.width : 0);
- 0 > m && k.moveBy(m, 0)
- }
- }
- });
- Blockly.svgResize(c);
- Blockly.WidgetDiv.createDom();
- Blockly.Tooltip.createDom();
- return c
- }
- ;
- Blockly.init_ = function (a) {
- var b = a.options
- , c = a.getParentSvg();
- Blockly.bindEventWithChecks_(c, "contextmenu", null, function (a) {
- Blockly.isTargetInput_(a) || a.preventDefault()
- });
- c = Blockly.bindEventWithChecks_(window, "resize", null, function () {
- Blockly.hideChaff(!0);
- Blockly.svgResize(a)
- });
- a.setResizeHandlerWrapper(c);
- Blockly.inject.bindDocumentEvents_();
- b.languageTree && (a.toolbox_ ? a.toolbox_.init(a) : a.flyout_ && (a.flyout_.init(a),
- a.flyout_.show(b.languageTree.childNodes),
- a.flyout_.scrollToStart(),
- a.scrollX = a.flyout_.width_,
- b.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT && (a.scrollX *= -1),
- a.translate(a.scrollX, 0)));
- b.hasScrollbars && (a.scrollbar = new Blockly.ScrollbarPair(a),
- a.scrollbar.resize());
- b.hasSounds && Blockly.inject.loadSounds_(b.pathToMedia, a)
- }
- ;
- Blockly.inject.bindDocumentEvents_ = function () {
- Blockly.documentEventsBound_ || (Blockly.bindEventWithChecks_(document, "keydown", null, Blockly.onKeyDown_),
- Blockly.bindEventWithChecks_(document, "touchend", null, Blockly.longStop_),
- Blockly.bindEventWithChecks_(document, "touchcancel", null, Blockly.longStop_),
- document.addEventListener("mouseup", Blockly.onMouseUp_, !1),
- goog.userAgent.IPAD && Blockly.bindEventWithChecks_(window, "orientationchange", document, function () {
- Blockly.svgResize(Blockly.getMainWorkspace())
- }));
- Blockly.documentEventsBound_ = !0
- }
- ;
- Blockly.inject.loadSounds_ = function (a, b) {
- b.loadAudio_([a + "click.mp3", a + "click.wav", a + "click.ogg"], "click");
- b.loadAudio_([a + "disconnect.wav", a + "disconnect.mp3", a + "disconnect.ogg"], "disconnect");
- b.loadAudio_([a + "delete.mp3", a + "delete.ogg", a + "delete.wav"], "delete");
- var c = []
- , d = function () {
- for (; c.length;)
- Blockly.unbindEvent_(c.pop());
- b.preloadAudio_()
- };
- c.push(Blockly.bindEventWithChecks_(document, "mousemove", null, d, !0));
- c.push(Blockly.bindEventWithChecks_(document, "touchstart", null, d, !0))
- }
- ;
- Blockly.updateToolbox = function (a) {
- console.warn("Deprecated call to Blockly.updateToolbox, use workspace.updateToolbox instead.");
- Blockly.getMainWorkspace().updateToolbox(a)
- }
- ;
- Blockly.utils = {};
- Blockly.addClass_ = function (a, b) {
- var c = a.getAttribute("class") || "";
- -1 == (" " + c + " ").indexOf(" " + b + " ") && (c && (c += " "),
- a.setAttribute("class", c + b))
- }
- ;
- Blockly.removeClass_ = function (a, b) {
- var c = a.getAttribute("class");
- if (-1 != (" " + c + " ").indexOf(" " + b + " ")) {
- c = c.split(/\s+/);
- for (var d = 0; d < c.length; d++)
- c[d] && c[d] != b || (c.splice(d, 1),
- d--);
- c.length ? a.setAttribute("class", c.join(" ")) : a.removeAttribute("class")
- }
- }
- ;
- Blockly.hasClass_ = function (a, b) {
- return -1 != (" " + a.getAttribute("class") + " ").indexOf(" " + b + " ")
- }
- ;
- Blockly.bindEventWithChecks_ = function (a, b, c, d, e) {
- var f = !1
- , g = function (a) {
- var b = !e;
- a = Blockly.Touch.splitEventByTouches(a);
- for (var g = 0, h; h = a[g]; g++)
- if (!b || Blockly.Touch.shouldHandleEvent(h))
- Blockly.Touch.setClientFromTouch(h),
- c ? d.call(c, h) : d(h),
- f = !0
- };
- a.addEventListener(b, g, !1);
- var h = [[a, b, g]];
- if (b in Blockly.Touch.TOUCH_MAP)
- for (var k = function (a) {
- g(a);
- f && a.preventDefault()
- }, m = 0, p; p = Blockly.Touch.TOUCH_MAP[b][m]; m++)
- a.addEventListener(p, k, !1),
- h.push([a, p, k]);
- return h
- }
- ;
- Blockly.bindEvent_ = function (a, b, c, d) {
- var e = function (a) {
- c ? d.call(c, a) : d(a)
- };
- a.addEventListener(b, e, !1);
- var f = [[a, b, e]];
- if (b in Blockly.Touch.TOUCH_MAP)
- for (var g = function (a) {
- if (1 == a.changedTouches.length) {
- var b = a.changedTouches[0];
- a.clientX = b.clientX;
- a.clientY = b.clientY
- }
- e(a);
- a.preventDefault()
- }, h = 0, k; k = Blockly.Touch.TOUCH_MAP[b][h]; h++)
- a.addEventListener(k, g, !1),
- f.push([a, k, g]);
- return f
- }
- ;
- Blockly.unbindEvent_ = function (a) {
- for (; a.length;) {
- var b = a.pop()
- , c = b[2];
- b[0].removeEventListener(b[1], c, !1)
- }
- return c
- }
- ;
- Blockly.noEvent = function (a) {
- a.preventDefault();
- a.stopPropagation()
- }
- ;
- Blockly.isTargetInput_ = function (a) {
- return "textarea" == a.target.type || "text" == a.target.type || "number" == a.target.type || "email" == a.target.type || "password" == a.target.type || "search" == a.target.type || "tel" == a.target.type || "url" == a.target.type || a.target.isContentEditable
- }
- ;
- Blockly.getRelativeXY_ = function (a) {
- var b = new goog.math.Coordinate(0, 0)
- , c = a.getAttribute("x");
- c && (b.x = parseInt(c, 10));
- if (c = a.getAttribute("y"))
- b.y = parseInt(c, 10);
- if (a = (a = a.getAttribute("transform")) && a.match(Blockly.getRelativeXY_.XY_REGEXP_))
- b.x += parseFloat(a[1]),
- a[3] && (b.y += parseFloat(a[3]));
- return b
- }
- ;
- Blockly.getRelativeXY_.XY_REGEXP_ = /translate\(\s*([-+\d.e]+)([ ,]\s*([-+\d.e]+)\s*\))?/;
- Blockly.getSvgXY_ = function (a, b) {
- var c = 0
- , d = 0
- , e = 1;
- if (goog.dom.contains(b.getCanvas(), a) || goog.dom.contains(b.getBubbleCanvas(), a))
- e = b.scale;
- do {
- var f = Blockly.getRelativeXY_(a);
- if (a == b.getCanvas() || a == b.getBubbleCanvas())
- e = 1;
- c += f.x * e;
- d += f.y * e;
- a = a.parentNode
- } while (a && a != b.getParentSvg()); return new goog.math.Coordinate(c, d)
- }
- ;
- Blockly.createSvgElement = function (a, b, c, d) {
- a = document.createElementNS(Blockly.SVG_NS, a);
- for (var e in b)
- a.setAttribute(e, b[e]);
- document.body.runtimeStyle && (a.runtimeStyle = a.currentStyle = a.style);
- c && c.appendChild(a);
- return a
- }
- ;
- Blockly.isRightButton = function (a) {
- return a.ctrlKey && goog.userAgent.MAC ? !0 : 2 == a.button
- }
- ;
- Blockly.mouseToSvg = function (a, b, c) {
- var d = b.createSVGPoint();
- d.x = a.clientX;
- d.y = a.clientY;
- c || (c = b.getScreenCTM().inverse());
- return d.matrixTransform(c)
- }
- ;
- Blockly.shortestStringLength = function (a) {
- if (!a.length)
- return 0;
- for (var b = a[0].length, c = 1; c < a.length; c++)
- b = Math.min(b, a[c].length);
- return b
- }
- ;
- Blockly.commonWordPrefix = function (a, b) {
- if (!a.length)
- return 0;
- if (1 == a.length)
- return a[0].length;
- for (var c = 0, d = b || Blockly.shortestStringLength(a), e = 0; e < d; e++) {
- for (var f = a[0][e], g = 1; g < a.length; g++)
- if (f != a[g][e])
- return c;
- " " == f && (c = e + 1)
- }
- for (g = 1; g < a.length; g++)
- if ((f = a[g][e]) && " " != f)
- return c;
- return d
- }
- ;
- Blockly.commonWordSuffix = function (a, b) {
- if (!a.length)
- return 0;
- if (1 == a.length)
- return a[0].length;
- for (var c = 0, d = b || Blockly.shortestStringLength(a), e = 0; e < d; e++) {
- for (var f = a[0].substr(-e - 1, 1), g = 1; g < a.length; g++)
- if (f != a[g].substr(-e - 1, 1))
- return c;
- " " == f && (c = e + 1)
- }
- for (g = 1; g < a.length; g++)
- if ((f = a[g].charAt(a[g].length - e - 1)) && " " != f)
- return c;
- return d
- }
- ;
- Blockly.isNumber = function (a) {
- return !!a.match(/^\s*-?\d+(\.\d+)?\s*$/)
- }
- ;
- Blockly.utils.tokenizeInterpolation = function (a) {
- var b = [];
- a = a.split("");
- a.push("");
- for (var c = 0, d = [], e = null, f = 0; f < a.length; f++) {
- var g = a[f];
- 0 == c ? "%" == g ? c = 1 : d.push(g) : 1 == c ? "%" == g ? (d.push(g),
- c = 0) : "0" <= g && "9" >= g ? (c = 2,
- e = g,
- (g = d.join("")) && b.push(g),
- d.length = 0) : (d.push("%", g),
- c = 0) : 2 == c && ("0" <= g && "9" >= g ? e += g : (b.push(parseInt(e, 10)),
- f--,
- c = 0))
- }
- (g = d.join("")) && b.push(g);
- return b
- }
- ;
- Blockly.genUid = function () {
- for (var a = Blockly.genUid.soup_.length, b = [], c = 0; 20 > c; c++)
- b[c] = Blockly.genUid.soup_.charAt(Math.random() * a);
- return b.join("")
- }
- ;
- Blockly.genUid.soup_ = "!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- Blockly.utils.wrap = function (a, b) {
- for (var c = a.split("\n"), d = 0; d < c.length; d++)
- c[d] = Blockly.utils.wrap_line_(c[d], b);
- return c.join("\n")
- }
- ;
- Blockly.utils.wrap_line_ = function (a, b) {
- if (a.length <= b)
- return a;
- for (var c = a.trim().split(/\s+/), d = 0; d < c.length; d++)
- c[d].length > b && (b = c[d].length);
- d = -Infinity;
- var e = 1;
- do {
- var f = d;
- var g = a;
- var h = []
- , k = c.length / e
- , m = 1;
- for (d = 0; d < c.length - 1; d++)
- m < (d + 1.5) / k ? (m++,
- h[d] = !0) : h[d] = !1;
- h = Blockly.utils.wrapMutate_(c, h, b);
- d = Blockly.utils.wrapScore_(c, h, b);
- a = Blockly.utils.wrapToText_(c, h);
- e++
- } while (d > f); return g
- }
- ;
- Blockly.utils.wrapScore_ = function (a, b, c) {
- for (var d = [0], e = [], f = 0; f < a.length; f++)
- d[d.length - 1] += a[f].length,
- !0 === b[f] ? (d.push(0),
- e.push(a[f].charAt(a[f].length - 1))) : !1 === b[f] && d[d.length - 1]++;
- a = Math.max.apply(Math, d);
- for (f = b = 0; f < d.length; f++)
- b -= 2 * Math.pow(Math.abs(c - d[f]), 1.5),
- b -= Math.pow(a - d[f], 1.5),
- -1 != ".?!".indexOf(e[f]) ? b += c / 3 : -1 != ",;)]}".indexOf(e[f]) && (b += c / 4);
- 1 < d.length && d[d.length - 1] <= d[d.length - 2] && (b += .5);
- return b
- }
- ;
- Blockly.utils.wrapMutate_ = function (a, b, c) {
- for (var d = Blockly.utils.wrapScore_(a, b, c), e, f = 0; f < b.length - 1; f++)
- if (b[f] != b[f + 1]) {
- var g = [].concat(b);
- g[f] = !g[f];
- g[f + 1] = !g[f + 1];
- var h = Blockly.utils.wrapScore_(a, g, c);
- h > d && (d = h,
- e = g)
- }
- return e ? Blockly.utils.wrapMutate_(a, e, c) : b
- }
- ;
- Blockly.utils.wrapToText_ = function (a, b) {
- for (var c = [], d = 0; d < a.length; d++)
- c.push(a[d]),
- void 0 !== b[d] && c.push(b[d] ? "\n" : " ");
- return c.join("")
- }
- ;
- var CLOSURE_DEFINES = {
- "goog.DEBUG": !1
- };
- Blockly.mainWorkspace = null;
- Blockly.selected = null;
- Blockly.highlightedConnection_ = null;
- Blockly.localConnection_ = null;
- Blockly.draggingConnections_ = [];
- Blockly.clipboardXml_ = null;
- Blockly.clipboardSource_ = null;
- Blockly.dragMode_ = Blockly.DRAG_NONE;
- Blockly.flyoutButtonCallbacks_ = {};
- Blockly.registerButtonCallback = function (a, b) {
- Blockly.flyoutButtonCallbacks_[a] = b
- }
- ;
- Blockly.hueToRgb = function (a) {
- return goog.color.hsvToHex(a, Blockly.HSV_SATURATION, 255 * Blockly.HSV_VALUE)
- }
- ;
- Blockly.svgSize = function (a) {
- return {
- width: a.cachedWidth_,
- height: a.cachedHeight_
- }
- }
- ;
- Blockly.resizeSvgContents = function (a) {
- a.resizeContents()
- }
- ;
- Blockly.svgResize = function (a) {
- for (; a.options.parentWorkspace;)
- a = a.options.parentWorkspace;
- var b = a.getParentSvg()
- , c = b.parentNode;
- if (c) {
- var d = c.offsetWidth;
- c = c.offsetHeight;
- b.cachedWidth_ != d && (b.setAttribute("width", d + "px"),
- b.cachedWidth_ = d);
- b.cachedHeight_ != c && (b.setAttribute("height", c + "px"),
- b.cachedHeight_ = c);
- a.resize()
- }
- }
- ;
- Blockly.onKeyDown_ = function (a) {
- if (!Blockly.mainWorkspace.options.readOnly && !Blockly.isTargetInput_(a)) {
- var b = !1;
- if (27 == a.keyCode)
- Blockly.hideChaff();
- else if (8 == a.keyCode || 46 == a.keyCode)
- a.preventDefault(),
- Blockly.selected && Blockly.selected.isDeletable() && (b = !0);
- else if (a.altKey || a.ctrlKey || a.metaKey)
- Blockly.selected && Blockly.selected.isDeletable() && Blockly.selected.isMovable() && (67 == a.keyCode ? (Blockly.hideChaff(),
- Blockly.copy_(Blockly.selected)) : 88 == a.keyCode && (Blockly.copy_(Blockly.selected),
- b = !0)),
- // 86 == a.keyCode ? Blockly.clipboardXml_ && (Blockly.Events.setGroup(!0),
- // Blockly.clipboardSource_.paste(Blockly.clipboardXml_),
- // Blockly.Events.setGroup(!1)) :
- 90 == a.keyCode && (Blockly.hideChaff(),
- Blockly.mainWorkspace.undo(a.shiftKey));
- b && (Blockly.Events.setGroup(!0),
- Blockly.hideChaff(),
- Blockly.selected.dispose(Blockly.dragMode_ != Blockly.DRAG_FREE, !0),
- Blockly.highlightedConnection_ && (Blockly.highlightedConnection_.unhighlight(),
- Blockly.highlightedConnection_ = null),
- Blockly.Events.setGroup(!1))
- }
- };
- Blockly.terminateDrag_ = function () {
- Blockly.BlockSvg.terminateDrag();
- Blockly.Flyout.terminateDrag_()
- };
- Blockly.copy_ = function (a) {
- copyText('')
- var b = Blockly.Xml.blockToDom(a);
- Blockly.dragMode_ != Blockly.DRAG_FREE && Blockly.Xml.deleteNext(b);
- var c = a.getRelativeToSurfaceXY();
- b.setAttribute("x", a.RTL ? -c.x : c.x);
- b.setAttribute("y", c.y);
- copyText(Blockly.Xml.domToText(b))
- Blockly.clipboardXml_ = b;
- Blockly.clipboardSource_ = a.workspace
- };
- Blockly.duplicate_ = function (a) {
- var b = Blockly.clipboardXml_
- , c = Blockly.clipboardSource_;
- Blockly.copy_(a);
- a.workspace.paste(Blockly.clipboardXml_);
- Blockly.clipboardXml_ = b;
- Blockly.clipboardSource_ = c
- }
- ;
- Blockly.onContextMenu_ = function (a) {
- Blockly.isTargetInput_(a) || a.preventDefault()
- }
- ;
- Blockly.hideChaff = function (a) {
- Blockly.Tooltip.hide();
- Blockly.WidgetDiv.hide();
- a || (a = Blockly.getMainWorkspace(),
- a.toolbox_ && a.toolbox_.flyout_ && a.toolbox_.flyout_.autoClose && a.toolbox_.clearSelection())
- }
- ;
- Blockly.addChangeListener = function (a) {
- console.warn("Deprecated call to Blockly.addChangeListener, use workspace.addChangeListener instead.");
- return Blockly.getMainWorkspace().addChangeListener(a)
- }
- ;
- Blockly.getMainWorkspace = function () {
- return Blockly.mainWorkspace
- }
- ;
- Blockly.alert = function (a, b) {
- window.alert(a);
- b && b()
- }
- ;
- Blockly.confirm = function (a, b) {
- b(window.confirm(a))
- }
- ;
- Blockly.prompt = function (a, b, c) {
- c(window.prompt(a, b))
- }
- ;
- /**
- * @license
- * Copyright 2016 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
- /**
- * An example implementation of how one might replace Blockly's browser
- * dialogs. This is just an example, and applications are not encouraged to use
- * it verbatim.
- *
- * @namespace
- */
- var CustomDialog = {};
- /** Override Blockly.alert() with custom implementation. */
- Blockly.alert = function (message, callback) {
- console.log('Alert: ' + message);
- CustomDialog.show('Alert', message, {
- onCancel: callback
- });
- };
- /** Override Blockly.confirm() with custom implementation. */
- Blockly.confirm = function (message, callback) {
- console.log('Confirm: ' + message);
- CustomDialog.show('Confirm', message, {
- showOkay: true,
- onOkay: function () {
- callback(true);
- },
- showCancel: true,
- onCancel: function () {
- callback(false);
- }
- });
- };
- /** Override Blockly.prompt() with custom implementation. */
- Blockly.prompt = function (message, defaultValue, callback) {
- console.log('Prompt: ' + message);
- CustomDialog.show('Prompt', message, {
- showInput: true,
- showOkay: true,
- onOkay: function () {
- callback(CustomDialog.inputField.value);
- },
- showCancel: true,
- onCancel: function () {
- callback(null);
- }
- });
- CustomDialog.inputField.value = defaultValue;
- };
- /** Hides any currently visible dialog. */
- CustomDialog.hide = function () {
- if (CustomDialog.backdropDiv_) {
- CustomDialog.backdropDiv_.style.display = 'none';
- CustomDialog.dialogDiv_.style.display = 'none';
- }
- };
- /**
- * Shows the dialog.
- * Allowed options:
- * - showOkay: Whether to show the OK button.
- * - showCancel: Whether to show the Cancel button.
- * - showInput: Whether to show the text input field.
- * - onOkay: Callback to handle the okay button.
- * - onCancel: Callback to handle the cancel button and backdrop clicks.
- */
- CustomDialog.show = function (title, message, options) {
- var backdropDiv = CustomDialog.backdropDiv_;
- var dialogDiv = CustomDialog.dialogDiv_;
- if (!dialogDiv) {
- // Generate HTML
- backdropDiv = document.createElement('div');
- backdropDiv.id = 'customDialogBackdrop';
- backdropDiv.style.cssText =
- 'position: absolute;' +
- 'top: 0; left: 0; right: 0; bottom: 0;' +
- 'background-color: rgba(0, 0, 0, .7);' +
- 'z-index: 100;';
- document.body.appendChild(backdropDiv);
- dialogDiv = document.createElement('div');
- dialogDiv.id = 'customDialog';
- dialogDiv.style.cssText =
- 'background-color: #fff;' +
- 'width: 400px;' +
- 'margin: 20px auto 0;' +
- 'border-radius: 5px;' +
- 'padding: 10px;';
- backdropDiv.appendChild(dialogDiv);
- dialogDiv.onclick = function (event) {
- event.stopPropagation();
- };
- CustomDialog.backdropDiv_ = backdropDiv;
- CustomDialog.dialogDiv_ = dialogDiv;
- }
- backdropDiv.style.display = 'block';
- dialogDiv.style.display = 'block';
- var cancelText = localStorage.getItem("handPyLanguage") == "zh-hans" ? "取消" : (localStorage.getItem("handPyLanguage") == "zh-hant" ? "取消" : 'Cancel')
- var okText = localStorage.getItem("handPyLanguage") == "zh-hans" ? "确定" : (localStorage.getItem("handPyLanguage") == "zh-hant" ? "確定" : 'OK')
- var zhuyi = localStorage.getItem("handPyLanguage") == "zh-hans" ? "<b>注意:<br/>1.变量名由英文字母、下划线_、中文或数字组成,并且第一个字符必须是英文字母或下划线。<br/>2.变量名不能是 Python 关键字,如True,False,and等。</b>" :
- (localStorage.getItem("handPyLanguage") == "zh-hant" ? "<b>注意:<br/>1.變量名由英文字母、下劃線_、中文或數字組成,並且第一個字符必須是英文字母或下劃線。<br/>2.變量名不能是 Python 關鍵字,如True,False,and等。</b>" : "<b>Note:<br/>1. The variable name consists of English letters, underscore _,ChineseCX or numbers, and the first character must be an English letter or underscore.<br/>2. The variable name cannot be a Python keyword, such as True, False, and.</b>")
- dialogDiv.innerHTML =
- // '<header class="customDialogTitle"></header>' +
- '<p class="customDialogMessage"></p>' +
- (options.showInput ? '<div style="width:100%;"><input id="customDialogInput"></div>' : '') +
- '<div style="font-size:8px;color:red;">' + zhuyi + '</div>' +
- '<div class="customDialogButtons" style="text-align:right;margin-top:10px;">' +
- (options.showOkay ? '<button id="customDialogOkay" class="customOkayButton" style="margin-right:10px;">' + okText + '</button>' : '') +
- (options.showCancel ? '<button id="customDialogCancel" class="customCancelButton">' + cancelText + '</button>' : '') +
- '</div>';
- // dialogDiv.getElementsByClassName('customDialogTitle')[0]
- // .appendChild(document.createTextNode(title));
- dialogDiv.getElementsByClassName('customDialogMessage')[0]
- .appendChild(document.createTextNode(message));
- var onOkay = function (event) {
- CustomDialog.hide();
- options.onOkay && options.onOkay();
- event && event.stopPropagation();
- };
- var onCancel = function (event) {
- CustomDialog.hide();
- options.onCancel && options.onCancel();
- event && event.stopPropagation();
- };
- var dialogInput = document.getElementById('customDialogInput');
- CustomDialog.inputField = dialogInput;
- if (dialogInput) {
- dialogInput.focus();
- dialogInput.onkeyup = function (event) {
- if (event.keyCode == 13) {
- // Process as OK when user hits enter.
- onOkay();
- return false;
- } else if (event.keyCode == 27) {
- // Process as cancel when user hits esc.
- onCancel();
- return false;
- }
- };
- } else {
- var okay = document.getElementById('customDialogOkay');
- okay && okay.focus();
- }
- if (options.showOkay) {
- document.getElementById('customDialogOkay')
- .addEventListener('click', onOkay);
- }
- if (options.showCancel) {
- document.getElementById('customDialogCancel')
- .addEventListener('click', onCancel);
- }
- backdropDiv.onclick = onCancel;
- };
- Blockly.jsonInitFactory_ = function (a) {
- return function () {
- this.jsonInit(a)
- }
- }
- ;
- Blockly.defineBlocksWithJsonArray = function (a) {
- for (var b = 0, c; c = a[b]; b++)
- Blockly.Blocks[c.type] = {
- init: Blockly.jsonInitFactory_(c)
- }
- }
- ;
- goog.global.console || (goog.global.console = {
- log: function () { },
- warn: function () { }
- });
- goog.global.Blockly || (goog.global.Blockly = {});
- goog.global.Blockly.getMainWorkspace = Blockly.getMainWorkspace;
- goog.global.Blockly.addChangeListener = Blockly.addChangeListener;
|