1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164 |
- /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, {
- /******/ configurable: false,
- /******/ enumerable: true,
- /******/ get: getter
- /******/ });
- /******/ }
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = 85);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports) {
- // shim for using process in browser
- var process = module.exports = {};
- // cached from whatever global is present so that test runners that stub it
- // don't break things. But we need to wrap it in a try catch in case it is
- // wrapped in strict mode code which doesn't define any globals. It's inside a
- // function because try/catches deoptimize in certain engines.
- var cachedSetTimeout;
- var cachedClearTimeout;
- function defaultSetTimout() {
- throw new Error('setTimeout has not been defined');
- }
- function defaultClearTimeout () {
- throw new Error('clearTimeout has not been defined');
- }
- (function () {
- try {
- if (typeof setTimeout === 'function') {
- cachedSetTimeout = setTimeout;
- } else {
- cachedSetTimeout = defaultSetTimout;
- }
- } catch (e) {
- cachedSetTimeout = defaultSetTimout;
- }
- try {
- if (typeof clearTimeout === 'function') {
- cachedClearTimeout = clearTimeout;
- } else {
- cachedClearTimeout = defaultClearTimeout;
- }
- } catch (e) {
- cachedClearTimeout = defaultClearTimeout;
- }
- } ())
- function runTimeout(fun) {
- if (cachedSetTimeout === setTimeout) {
- //normal enviroments in sane situations
- return setTimeout(fun, 0);
- }
- // if setTimeout wasn't available but was latter defined
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
- cachedSetTimeout = setTimeout;
- return setTimeout(fun, 0);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedSetTimeout(fun, 0);
- } catch(e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedSetTimeout.call(null, fun, 0);
- } catch(e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
- return cachedSetTimeout.call(this, fun, 0);
- }
- }
- }
- function runClearTimeout(marker) {
- if (cachedClearTimeout === clearTimeout) {
- //normal enviroments in sane situations
- return clearTimeout(marker);
- }
- // if clearTimeout wasn't available but was latter defined
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
- cachedClearTimeout = clearTimeout;
- return clearTimeout(marker);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedClearTimeout(marker);
- } catch (e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedClearTimeout.call(null, marker);
- } catch (e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
- return cachedClearTimeout.call(this, marker);
- }
- }
- }
- var queue = [];
- var draining = false;
- var currentQueue;
- var queueIndex = -1;
- function cleanUpNextTick() {
- if (!draining || !currentQueue) {
- return;
- }
- draining = false;
- if (currentQueue.length) {
- queue = currentQueue.concat(queue);
- } else {
- queueIndex = -1;
- }
- if (queue.length) {
- drainQueue();
- }
- }
- function drainQueue() {
- if (draining) {
- return;
- }
- var timeout = runTimeout(cleanUpNextTick);
- draining = true;
- var len = queue.length;
- while(len) {
- currentQueue = queue;
- queue = [];
- while (++queueIndex < len) {
- if (currentQueue) {
- currentQueue[queueIndex].run();
- }
- }
- queueIndex = -1;
- len = queue.length;
- }
- currentQueue = null;
- draining = false;
- runClearTimeout(timeout);
- }
- process.nextTick = function (fun) {
- var args = new Array(arguments.length - 1);
- if (arguments.length > 1) {
- for (var i = 1; i < arguments.length; i++) {
- args[i - 1] = arguments[i];
- }
- }
- queue.push(new Item(fun, args));
- if (queue.length === 1 && !draining) {
- runTimeout(drainQueue);
- }
- };
- // v8 likes predictible objects
- function Item(fun, array) {
- this.fun = fun;
- this.array = array;
- }
- Item.prototype.run = function () {
- this.fun.apply(null, this.array);
- };
- process.title = 'browser';
- process.browser = true;
- process.env = {};
- process.argv = [];
- process.version = ''; // empty string to avoid regexp issues
- process.versions = {};
- function noop() {}
- process.on = noop;
- process.addListener = noop;
- process.once = noop;
- process.off = noop;
- process.removeListener = noop;
- process.removeAllListeners = noop;
- process.emit = noop;
- process.prependListener = noop;
- process.prependOnceListener = noop;
- process.listeners = function (name) { return [] }
- process.binding = function (name) {
- throw new Error('process.binding is not supported');
- };
- process.cwd = function () { return '/' };
- process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
- };
- process.umask = function() { return 0; };
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
- /**
- * Use invariant() to assert state which your program assumes to be true.
- *
- * Provide sprintf-style format (only %s is supported) and arguments
- * to provide information about what broke and what you were
- * expecting.
- *
- * The invariant message will be stripped in production, but the invariant
- * will remain to ensure logic does not differ in production.
- */
- var validateFormat = function validateFormat(format) {};
- if (process.env.NODE_ENV !== 'production') {
- validateFormat = function validateFormat(format) {
- if (format === undefined) {
- throw new Error('invariant requires an error message argument');
- }
- };
- }
- function invariant(condition, format, a, b, c, d, e, f) {
- validateFormat(format);
- if (!condition) {
- var error;
- if (format === undefined) {
- error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
- } else {
- var args = [a, b, c, d, e, f];
- var argIndex = 0;
- error = new Error(format.replace(/%s/g, function () {
- return args[argIndex++];
- }));
- error.name = 'Invariant Violation';
- }
- error.framesToPop = 1; // we don't care about invariant's own frame
- throw error;
- }
- }
- module.exports = invariant;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 2 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright (c) 2014-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
- var emptyFunction = __webpack_require__(8);
- /**
- * Similar to invariant but only logs a warning if the condition is not met.
- * This can be used to log issues in development environments in critical
- * paths. Removing the logging code for production environments will keep the
- * same logic and follow the same code paths.
- */
- var warning = emptyFunction;
- if (process.env.NODE_ENV !== 'production') {
- var printWarning = function printWarning(format) {
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
- var argIndex = 0;
- var message = 'Warning: ' + format.replace(/%s/g, function () {
- return args[argIndex++];
- });
- if (typeof console !== 'undefined') {
- console.error(message);
- }
- try {
- // --- Welcome to debugging React ---
- // This error was thrown as a convenience so that you can use this stack
- // to find the callsite that caused this warning to fire.
- throw new Error(message);
- } catch (x) {}
- };
- warning = function warning(condition, format) {
- if (format === undefined) {
- throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
- }
- if (format.indexOf('Failed Composite propType: ') === 0) {
- return; // Ignore CompositeComponent proptype check.
- }
- if (!condition) {
- for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
- args[_key2 - 2] = arguments[_key2];
- }
- printWarning.apply(undefined, [format].concat(args));
- }
- };
- }
- module.exports = warning;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 3 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * WARNING: DO NOT manually require this module.
- * This is a replacement for `invariant(...)` used by the error code system
- * and will _only_ be required by the corresponding babel pass.
- * It always throws.
- */
- function reactProdInvariant(code) {
- var argCount = arguments.length - 1;
- var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
- for (var argIdx = 0; argIdx < argCount; argIdx++) {
- message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
- }
- message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
- var error = new Error(message);
- error.name = 'Invariant Violation';
- error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
- throw error;
- }
- module.exports = reactProdInvariant;
- /***/ }),
- /* 4 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /*
- object-assign
- (c) Sindre Sorhus
- @license MIT
- */
- /* eslint-disable no-unused-vars */
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- var propIsEnumerable = Object.prototype.propertyIsEnumerable;
- function toObject(val) {
- if (val === null || val === undefined) {
- throw new TypeError('Object.assign cannot be called with null or undefined');
- }
- return Object(val);
- }
- function shouldUseNative() {
- try {
- if (!Object.assign) {
- return false;
- }
- // Detect buggy property enumeration order in older V8 versions.
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
- var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
- test1[5] = 'de';
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
- return false;
- }
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
- var test2 = {};
- for (var i = 0; i < 10; i++) {
- test2['_' + String.fromCharCode(i)] = i;
- }
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
- return test2[n];
- });
- if (order2.join('') !== '0123456789') {
- return false;
- }
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
- var test3 = {};
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
- test3[letter] = letter;
- });
- if (Object.keys(Object.assign({}, test3)).join('') !==
- 'abcdefghijklmnopqrst') {
- return false;
- }
- return true;
- } catch (err) {
- // We don't expect any of the above to throw, but better to be safe.
- return false;
- }
- }
- module.exports = shouldUseNative() ? Object.assign : function (target, source) {
- var from;
- var to = toObject(target);
- var symbols;
- for (var s = 1; s < arguments.length; s++) {
- from = Object(arguments[s]);
- for (var key in from) {
- if (hasOwnProperty.call(from, key)) {
- to[key] = from[key];
- }
- }
- if (getOwnPropertySymbols) {
- symbols = getOwnPropertySymbols(from);
- for (var i = 0; i < symbols.length; i++) {
- if (propIsEnumerable.call(from, symbols[i])) {
- to[symbols[i]] = from[symbols[i]];
- }
- }
- }
- }
- return to;
- };
- /***/ }),
- /* 5 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var DOMProperty = __webpack_require__(13);
- var ReactDOMComponentFlags = __webpack_require__(56);
- var invariant = __webpack_require__(1);
- var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
- var Flags = ReactDOMComponentFlags;
- var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);
- /**
- * Check if a given node should be cached.
- */
- function shouldPrecacheNode(node, nodeID) {
- return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';
- }
- /**
- * Drill down (through composites and empty components) until we get a host or
- * host text component.
- *
- * This is pretty polymorphic but unavoidable with the current structure we have
- * for `_renderedChildren`.
- */
- function getRenderedHostOrTextFromComponent(component) {
- var rendered;
- while (rendered = component._renderedComponent) {
- component = rendered;
- }
- return component;
- }
- /**
- * Populate `_hostNode` on the rendered host/text component with the given
- * DOM node. The passed `inst` can be a composite.
- */
- function precacheNode(inst, node) {
- var hostInst = getRenderedHostOrTextFromComponent(inst);
- hostInst._hostNode = node;
- node[internalInstanceKey] = hostInst;
- }
- function uncacheNode(inst) {
- var node = inst._hostNode;
- if (node) {
- delete node[internalInstanceKey];
- inst._hostNode = null;
- }
- }
- /**
- * Populate `_hostNode` on each child of `inst`, assuming that the children
- * match up with the DOM (element) children of `node`.
- *
- * We cache entire levels at once to avoid an n^2 problem where we access the
- * children of a node sequentially and have to walk from the start to our target
- * node every time.
- *
- * Since we update `_renderedChildren` and the actual DOM at (slightly)
- * different times, we could race here and see a newer `_renderedChildren` than
- * the DOM nodes we see. To avoid this, ReactMultiChild calls
- * `prepareToManageChildren` before we change `_renderedChildren`, at which
- * time the container's child nodes are always cached (until it unmounts).
- */
- function precacheChildNodes(inst, node) {
- if (inst._flags & Flags.hasCachedChildNodes) {
- return;
- }
- var children = inst._renderedChildren;
- var childNode = node.firstChild;
- outer: for (var name in children) {
- if (!children.hasOwnProperty(name)) {
- continue;
- }
- var childInst = children[name];
- var childID = getRenderedHostOrTextFromComponent(childInst)._domID;
- if (childID === 0) {
- // We're currently unmounting this child in ReactMultiChild; skip it.
- continue;
- }
- // We assume the child nodes are in the same order as the child instances.
- for (; childNode !== null; childNode = childNode.nextSibling) {
- if (shouldPrecacheNode(childNode, childID)) {
- precacheNode(childInst, childNode);
- continue outer;
- }
- }
- // We reached the end of the DOM children without finding an ID match.
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;
- }
- inst._flags |= Flags.hasCachedChildNodes;
- }
- /**
- * Given a DOM node, return the closest ReactDOMComponent or
- * ReactDOMTextComponent instance ancestor.
- */
- function getClosestInstanceFromNode(node) {
- if (node[internalInstanceKey]) {
- return node[internalInstanceKey];
- }
- // Walk up the tree until we find an ancestor whose instance we have cached.
- var parents = [];
- while (!node[internalInstanceKey]) {
- parents.push(node);
- if (node.parentNode) {
- node = node.parentNode;
- } else {
- // Top of the tree. This node must not be part of a React tree (or is
- // unmounted, potentially).
- return null;
- }
- }
- var closest;
- var inst;
- for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {
- closest = inst;
- if (parents.length) {
- precacheChildNodes(inst, node);
- }
- }
- return closest;
- }
- /**
- * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
- * instance, or null if the node was not rendered by this React.
- */
- function getInstanceFromNode(node) {
- var inst = getClosestInstanceFromNode(node);
- if (inst != null && inst._hostNode === node) {
- return inst;
- } else {
- return null;
- }
- }
- /**
- * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
- * DOM node.
- */
- function getNodeFromInstance(inst) {
- // Without this first invariant, passing a non-DOM-component triggers the next
- // invariant for a missing parent, which is super confusing.
- !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
- if (inst._hostNode) {
- return inst._hostNode;
- }
- // Walk up the tree until we find an ancestor whose DOM node we have cached.
- var parents = [];
- while (!inst._hostNode) {
- parents.push(inst);
- !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;
- inst = inst._hostParent;
- }
- // Now parents contains each ancestor that does *not* have a cached native
- // node, and `inst` is the deepest ancestor that does.
- for (; parents.length; inst = parents.pop()) {
- precacheChildNodes(inst, inst._hostNode);
- }
- return inst._hostNode;
- }
- var ReactDOMComponentTree = {
- getClosestInstanceFromNode: getClosestInstanceFromNode,
- getInstanceFromNode: getInstanceFromNode,
- getNodeFromInstance: getNodeFromInstance,
- precacheChildNodes: precacheChildNodes,
- precacheNode: precacheNode,
- uncacheNode: uncacheNode
- };
- module.exports = ReactDOMComponentTree;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 6 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
- var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
- /**
- * Simple, lightweight module assisting with the detection and context of
- * Worker. Helps avoid circular dependencies and allows code to reason about
- * whether or not they are in a Worker, even if they never include the main
- * `ReactWorker` dependency.
- */
- var ExecutionEnvironment = {
- canUseDOM: canUseDOM,
- canUseWorkers: typeof Worker !== 'undefined',
- canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),
- canUseViewport: canUseDOM && !!window.screen,
- isInWorker: !canUseDOM // For now, this is true - might change in the future.
- };
- module.exports = ExecutionEnvironment;
- /***/ }),
- /* 7 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(14);
- var ReactCurrentOwner = __webpack_require__(10);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- function isNative(fn) {
- // Based on isNative() from Lodash
- var funcToString = Function.prototype.toString;
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- var reIsNative = RegExp('^' + funcToString
- // Take an example native function source for comparison
- .call(hasOwnProperty)
- // Strip regex characters so we can use it for regex
- .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
- // Remove hasOwnProperty from the template to make it generic
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
- try {
- var source = funcToString.call(fn);
- return reIsNative.test(source);
- } catch (err) {
- return false;
- }
- }
- var canUseCollections =
- // Array.from
- typeof Array.from === 'function' &&
- // Map
- typeof Map === 'function' && isNative(Map) &&
- // Map.prototype.keys
- Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&
- // Set
- typeof Set === 'function' && isNative(Set) &&
- // Set.prototype.keys
- Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);
- var setItem;
- var getItem;
- var removeItem;
- var getItemIDs;
- var addRoot;
- var removeRoot;
- var getRootIDs;
- if (canUseCollections) {
- var itemMap = new Map();
- var rootIDSet = new Set();
- setItem = function (id, item) {
- itemMap.set(id, item);
- };
- getItem = function (id) {
- return itemMap.get(id);
- };
- removeItem = function (id) {
- itemMap['delete'](id);
- };
- getItemIDs = function () {
- return Array.from(itemMap.keys());
- };
- addRoot = function (id) {
- rootIDSet.add(id);
- };
- removeRoot = function (id) {
- rootIDSet['delete'](id);
- };
- getRootIDs = function () {
- return Array.from(rootIDSet.keys());
- };
- } else {
- var itemByKey = {};
- var rootByKey = {};
- // Use non-numeric keys to prevent V8 performance issues:
- // https://github.com/facebook/react/pull/7232
- var getKeyFromID = function (id) {
- return '.' + id;
- };
- var getIDFromKey = function (key) {
- return parseInt(key.substr(1), 10);
- };
- setItem = function (id, item) {
- var key = getKeyFromID(id);
- itemByKey[key] = item;
- };
- getItem = function (id) {
- var key = getKeyFromID(id);
- return itemByKey[key];
- };
- removeItem = function (id) {
- var key = getKeyFromID(id);
- delete itemByKey[key];
- };
- getItemIDs = function () {
- return Object.keys(itemByKey).map(getIDFromKey);
- };
- addRoot = function (id) {
- var key = getKeyFromID(id);
- rootByKey[key] = true;
- };
- removeRoot = function (id) {
- var key = getKeyFromID(id);
- delete rootByKey[key];
- };
- getRootIDs = function () {
- return Object.keys(rootByKey).map(getIDFromKey);
- };
- }
- var unmountedIDs = [];
- function purgeDeep(id) {
- var item = getItem(id);
- if (item) {
- var childIDs = item.childIDs;
- removeItem(id);
- childIDs.forEach(purgeDeep);
- }
- }
- function describeComponentFrame(name, source, ownerName) {
- return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');
- }
- function getDisplayName(element) {
- if (element == null) {
- return '#empty';
- } else if (typeof element === 'string' || typeof element === 'number') {
- return '#text';
- } else if (typeof element.type === 'string') {
- return element.type;
- } else {
- return element.type.displayName || element.type.name || 'Unknown';
- }
- }
- function describeID(id) {
- var name = ReactComponentTreeHook.getDisplayName(id);
- var element = ReactComponentTreeHook.getElement(id);
- var ownerID = ReactComponentTreeHook.getOwnerID(id);
- var ownerName;
- if (ownerID) {
- ownerName = ReactComponentTreeHook.getDisplayName(ownerID);
- }
- process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;
- return describeComponentFrame(name, element && element._source, ownerName);
- }
- var ReactComponentTreeHook = {
- onSetChildren: function (id, nextChildIDs) {
- var item = getItem(id);
- !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;
- item.childIDs = nextChildIDs;
- for (var i = 0; i < nextChildIDs.length; i++) {
- var nextChildID = nextChildIDs[i];
- var nextChild = getItem(nextChildID);
- !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;
- !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;
- !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;
- if (nextChild.parentID == null) {
- nextChild.parentID = id;
- // TODO: This shouldn't be necessary but mounting a new root during in
- // componentWillMount currently causes not-yet-mounted components to
- // be purged from our tree data so their parent id is missing.
- }
- !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;
- }
- },
- onBeforeMountComponent: function (id, element, parentID) {
- var item = {
- element: element,
- parentID: parentID,
- text: null,
- childIDs: [],
- isMounted: false,
- updateCount: 0
- };
- setItem(id, item);
- },
- onBeforeUpdateComponent: function (id, element) {
- var item = getItem(id);
- if (!item || !item.isMounted) {
- // We may end up here as a result of setState() in componentWillUnmount().
- // In this case, ignore the element.
- return;
- }
- item.element = element;
- },
- onMountComponent: function (id) {
- var item = getItem(id);
- !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;
- item.isMounted = true;
- var isRoot = item.parentID === 0;
- if (isRoot) {
- addRoot(id);
- }
- },
- onUpdateComponent: function (id) {
- var item = getItem(id);
- if (!item || !item.isMounted) {
- // We may end up here as a result of setState() in componentWillUnmount().
- // In this case, ignore the element.
- return;
- }
- item.updateCount++;
- },
- onUnmountComponent: function (id) {
- var item = getItem(id);
- if (item) {
- // We need to check if it exists.
- // `item` might not exist if it is inside an error boundary, and a sibling
- // error boundary child threw while mounting. Then this instance never
- // got a chance to mount, but it still gets an unmounting event during
- // the error boundary cleanup.
- item.isMounted = false;
- var isRoot = item.parentID === 0;
- if (isRoot) {
- removeRoot(id);
- }
- }
- unmountedIDs.push(id);
- },
- purgeUnmountedComponents: function () {
- if (ReactComponentTreeHook._preventPurging) {
- // Should only be used for testing.
- return;
- }
- for (var i = 0; i < unmountedIDs.length; i++) {
- var id = unmountedIDs[i];
- purgeDeep(id);
- }
- unmountedIDs.length = 0;
- },
- isMounted: function (id) {
- var item = getItem(id);
- return item ? item.isMounted : false;
- },
- getCurrentStackAddendum: function (topElement) {
- var info = '';
- if (topElement) {
- var name = getDisplayName(topElement);
- var owner = topElement._owner;
- info += describeComponentFrame(name, topElement._source, owner && owner.getName());
- }
- var currentOwner = ReactCurrentOwner.current;
- var id = currentOwner && currentOwner._debugID;
- info += ReactComponentTreeHook.getStackAddendumByID(id);
- return info;
- },
- getStackAddendumByID: function (id) {
- var info = '';
- while (id) {
- info += describeID(id);
- id = ReactComponentTreeHook.getParentID(id);
- }
- return info;
- },
- getChildIDs: function (id) {
- var item = getItem(id);
- return item ? item.childIDs : [];
- },
- getDisplayName: function (id) {
- var element = ReactComponentTreeHook.getElement(id);
- if (!element) {
- return null;
- }
- return getDisplayName(element);
- },
- getElement: function (id) {
- var item = getItem(id);
- return item ? item.element : null;
- },
- getOwnerID: function (id) {
- var element = ReactComponentTreeHook.getElement(id);
- if (!element || !element._owner) {
- return null;
- }
- return element._owner._debugID;
- },
- getParentID: function (id) {
- var item = getItem(id);
- return item ? item.parentID : null;
- },
- getSource: function (id) {
- var item = getItem(id);
- var element = item ? item.element : null;
- var source = element != null ? element._source : null;
- return source;
- },
- getText: function (id) {
- var element = ReactComponentTreeHook.getElement(id);
- if (typeof element === 'string') {
- return element;
- } else if (typeof element === 'number') {
- return '' + element;
- } else {
- return null;
- }
- },
- getUpdateCount: function (id) {
- var item = getItem(id);
- return item ? item.updateCount : 0;
- },
- getRootIDs: getRootIDs,
- getRegisteredIDs: getItemIDs
- };
- module.exports = ReactComponentTreeHook;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 8 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- *
- */
- function makeEmptyFunction(arg) {
- return function () {
- return arg;
- };
- }
- /**
- * This function accepts and discards inputs; it has no side effects. This is
- * primarily useful idiomatically for overridable function endpoints which
- * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
- */
- var emptyFunction = function emptyFunction() {};
- emptyFunction.thatReturns = makeEmptyFunction;
- emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
- emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
- emptyFunction.thatReturnsNull = makeEmptyFunction(null);
- emptyFunction.thatReturnsThis = function () {
- return this;
- };
- emptyFunction.thatReturnsArgument = function (arg) {
- return arg;
- };
- module.exports = emptyFunction;
- /***/ }),
- /* 9 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- // Trust the developer to only use ReactInstrumentation with a __DEV__ check
- var debugTool = null;
- if (process.env.NODE_ENV !== 'production') {
- var ReactDebugTool = __webpack_require__(112);
- debugTool = ReactDebugTool;
- }
- module.exports = { debugTool: debugTool };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 10 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * Keeps track of the current owner.
- *
- * The current owner is the component who should own any components that are
- * currently being constructed.
- */
- var ReactCurrentOwner = {
- /**
- * @internal
- * @type {ReactComponent}
- */
- current: null
- };
- module.exports = ReactCurrentOwner;
- /***/ }),
- /* 11 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var CallbackQueue = __webpack_require__(60);
- var PooledClass = __webpack_require__(16);
- var ReactFeatureFlags = __webpack_require__(61);
- var ReactReconciler = __webpack_require__(18);
- var Transaction = __webpack_require__(28);
- var invariant = __webpack_require__(1);
- var dirtyComponents = [];
- var updateBatchNumber = 0;
- var asapCallbackQueue = CallbackQueue.getPooled();
- var asapEnqueued = false;
- var batchingStrategy = null;
- function ensureInjected() {
- !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;
- }
- var NESTED_UPDATES = {
- initialize: function () {
- this.dirtyComponentsLength = dirtyComponents.length;
- },
- close: function () {
- if (this.dirtyComponentsLength !== dirtyComponents.length) {
- // Additional updates were enqueued by componentDidUpdate handlers or
- // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run
- // these new updates so that if A's componentDidUpdate calls setState on
- // B, B will update before the callback A's updater provided when calling
- // setState.
- dirtyComponents.splice(0, this.dirtyComponentsLength);
- flushBatchedUpdates();
- } else {
- dirtyComponents.length = 0;
- }
- }
- };
- var UPDATE_QUEUEING = {
- initialize: function () {
- this.callbackQueue.reset();
- },
- close: function () {
- this.callbackQueue.notifyAll();
- }
- };
- var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];
- function ReactUpdatesFlushTransaction() {
- this.reinitializeTransaction();
- this.dirtyComponentsLength = null;
- this.callbackQueue = CallbackQueue.getPooled();
- this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(
- /* useCreateElement */true);
- }
- _assign(ReactUpdatesFlushTransaction.prototype, Transaction, {
- getTransactionWrappers: function () {
- return TRANSACTION_WRAPPERS;
- },
- destructor: function () {
- this.dirtyComponentsLength = null;
- CallbackQueue.release(this.callbackQueue);
- this.callbackQueue = null;
- ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);
- this.reconcileTransaction = null;
- },
- perform: function (method, scope, a) {
- // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`
- // with this transaction's wrappers around it.
- return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);
- }
- });
- PooledClass.addPoolingTo(ReactUpdatesFlushTransaction);
- function batchedUpdates(callback, a, b, c, d, e) {
- ensureInjected();
- return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);
- }
- /**
- * Array comparator for ReactComponents by mount ordering.
- *
- * @param {ReactComponent} c1 first component you're comparing
- * @param {ReactComponent} c2 second component you're comparing
- * @return {number} Return value usable by Array.prototype.sort().
- */
- function mountOrderComparator(c1, c2) {
- return c1._mountOrder - c2._mountOrder;
- }
- function runBatchedUpdates(transaction) {
- var len = transaction.dirtyComponentsLength;
- !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;
- // Since reconciling a component higher in the owner hierarchy usually (not
- // always -- see shouldComponentUpdate()) will reconcile children, reconcile
- // them before their children by sorting the array.
- dirtyComponents.sort(mountOrderComparator);
- // Any updates enqueued while reconciling must be performed after this entire
- // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and
- // C, B could update twice in a single batch if C's render enqueues an update
- // to B (since B would have already updated, we should skip it, and the only
- // way we can know to do so is by checking the batch counter).
- updateBatchNumber++;
- for (var i = 0; i < len; i++) {
- // If a component is unmounted before pending changes apply, it will still
- // be here, but we assume that it has cleared its _pendingCallbacks and
- // that performUpdateIfNecessary is a noop.
- var component = dirtyComponents[i];
- // If performUpdateIfNecessary happens to enqueue any new updates, we
- // shouldn't execute the callbacks until the next render happens, so
- // stash the callbacks first
- var callbacks = component._pendingCallbacks;
- component._pendingCallbacks = null;
- var markerName;
- if (ReactFeatureFlags.logTopLevelRenders) {
- var namedComponent = component;
- // Duck type TopLevelWrapper. This is probably always true.
- if (component._currentElement.type.isReactTopLevelWrapper) {
- namedComponent = component._renderedComponent;
- }
- markerName = 'React update: ' + namedComponent.getName();
- console.time(markerName);
- }
- ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);
- if (markerName) {
- console.timeEnd(markerName);
- }
- if (callbacks) {
- for (var j = 0; j < callbacks.length; j++) {
- transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());
- }
- }
- }
- }
- var flushBatchedUpdates = function () {
- // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents
- // array and perform any updates enqueued by mount-ready handlers (i.e.,
- // componentDidUpdate) but we need to check here too in order to catch
- // updates enqueued by setState callbacks and asap calls.
- while (dirtyComponents.length || asapEnqueued) {
- if (dirtyComponents.length) {
- var transaction = ReactUpdatesFlushTransaction.getPooled();
- transaction.perform(runBatchedUpdates, null, transaction);
- ReactUpdatesFlushTransaction.release(transaction);
- }
- if (asapEnqueued) {
- asapEnqueued = false;
- var queue = asapCallbackQueue;
- asapCallbackQueue = CallbackQueue.getPooled();
- queue.notifyAll();
- CallbackQueue.release(queue);
- }
- }
- };
- /**
- * Mark a component as needing a rerender, adding an optional callback to a
- * list of functions which will be executed once the rerender occurs.
- */
- function enqueueUpdate(component) {
- ensureInjected();
- // Various parts of our code (such as ReactCompositeComponent's
- // _renderValidatedComponent) assume that calls to render aren't nested;
- // verify that that's the case. (This is called by each top-level update
- // function, like setState, forceUpdate, etc.; creation and
- // destruction of top-level components is guarded in ReactMount.)
- if (!batchingStrategy.isBatchingUpdates) {
- batchingStrategy.batchedUpdates(enqueueUpdate, component);
- return;
- }
- dirtyComponents.push(component);
- if (component._updateBatchNumber == null) {
- component._updateBatchNumber = updateBatchNumber + 1;
- }
- }
- /**
- * Enqueue a callback to be run at the end of the current batching cycle. Throws
- * if no updates are currently being performed.
- */
- function asap(callback, context) {
- !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;
- asapCallbackQueue.enqueue(callback, context);
- asapEnqueued = true;
- }
- var ReactUpdatesInjection = {
- injectReconcileTransaction: function (ReconcileTransaction) {
- !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;
- ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;
- },
- injectBatchingStrategy: function (_batchingStrategy) {
- !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;
- !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;
- !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;
- batchingStrategy = _batchingStrategy;
- }
- };
- var ReactUpdates = {
- /**
- * React references `ReactReconcileTransaction` using this property in order
- * to allow dependency injection.
- *
- * @internal
- */
- ReactReconcileTransaction: null,
- batchedUpdates: batchedUpdates,
- enqueueUpdate: enqueueUpdate,
- flushBatchedUpdates: flushBatchedUpdates,
- injection: ReactUpdatesInjection,
- asap: asap
- };
- module.exports = ReactUpdates;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 12 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var PooledClass = __webpack_require__(16);
- var emptyFunction = __webpack_require__(8);
- var warning = __webpack_require__(2);
- var didWarnForAddedNewProperty = false;
- var isProxySupported = typeof Proxy === 'function';
- var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];
- /**
- * @interface Event
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var EventInterface = {
- type: null,
- target: null,
- // currentTarget is set when dispatching; no use in copying it here
- currentTarget: emptyFunction.thatReturnsNull,
- eventPhase: null,
- bubbles: null,
- cancelable: null,
- timeStamp: function (event) {
- return event.timeStamp || Date.now();
- },
- defaultPrevented: null,
- isTrusted: null
- };
- /**
- * Synthetic events are dispatched by event plugins, typically in response to a
- * top-level event delegation handler.
- *
- * These systems should generally use pooling to reduce the frequency of garbage
- * collection. The system should check `isPersistent` to determine whether the
- * event should be released into the pool after being dispatched. Users that
- * need a persisted event should invoke `persist`.
- *
- * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
- * normalizing browser quirks. Subclasses do not necessarily have to implement a
- * DOM interface; custom application-specific events can also subclass this.
- *
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {*} targetInst Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @param {DOMEventTarget} nativeEventTarget Target node.
- */
- function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {
- if (process.env.NODE_ENV !== 'production') {
- // these have a getter/setter for warnings
- delete this.nativeEvent;
- delete this.preventDefault;
- delete this.stopPropagation;
- }
- this.dispatchConfig = dispatchConfig;
- this._targetInst = targetInst;
- this.nativeEvent = nativeEvent;
- var Interface = this.constructor.Interface;
- for (var propName in Interface) {
- if (!Interface.hasOwnProperty(propName)) {
- continue;
- }
- if (process.env.NODE_ENV !== 'production') {
- delete this[propName]; // this has a getter/setter for warnings
- }
- var normalize = Interface[propName];
- if (normalize) {
- this[propName] = normalize(nativeEvent);
- } else {
- if (propName === 'target') {
- this.target = nativeEventTarget;
- } else {
- this[propName] = nativeEvent[propName];
- }
- }
- }
- var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
- if (defaultPrevented) {
- this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
- } else {
- this.isDefaultPrevented = emptyFunction.thatReturnsFalse;
- }
- this.isPropagationStopped = emptyFunction.thatReturnsFalse;
- return this;
- }
- _assign(SyntheticEvent.prototype, {
- preventDefault: function () {
- this.defaultPrevented = true;
- var event = this.nativeEvent;
- if (!event) {
- return;
- }
- if (event.preventDefault) {
- event.preventDefault();
- } else if (typeof event.returnValue !== 'unknown') {
- // eslint-disable-line valid-typeof
- event.returnValue = false;
- }
- this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
- },
- stopPropagation: function () {
- var event = this.nativeEvent;
- if (!event) {
- return;
- }
- if (event.stopPropagation) {
- event.stopPropagation();
- } else if (typeof event.cancelBubble !== 'unknown') {
- // eslint-disable-line valid-typeof
- // The ChangeEventPlugin registers a "propertychange" event for
- // IE. This event does not support bubbling or cancelling, and
- // any references to cancelBubble throw "Member not found". A
- // typeof check of "unknown" circumvents this issue (and is also
- // IE specific).
- event.cancelBubble = true;
- }
- this.isPropagationStopped = emptyFunction.thatReturnsTrue;
- },
- /**
- * We release all dispatched `SyntheticEvent`s after each event loop, adding
- * them back into the pool. This allows a way to hold onto a reference that
- * won't be added back into the pool.
- */
- persist: function () {
- this.isPersistent = emptyFunction.thatReturnsTrue;
- },
- /**
- * Checks if this event should be released back into the pool.
- *
- * @return {boolean} True if this should not be released, false otherwise.
- */
- isPersistent: emptyFunction.thatReturnsFalse,
- /**
- * `PooledClass` looks for `destructor` on each instance it releases.
- */
- destructor: function () {
- var Interface = this.constructor.Interface;
- for (var propName in Interface) {
- if (process.env.NODE_ENV !== 'production') {
- Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));
- } else {
- this[propName] = null;
- }
- }
- for (var i = 0; i < shouldBeReleasedProperties.length; i++) {
- this[shouldBeReleasedProperties[i]] = null;
- }
- if (process.env.NODE_ENV !== 'production') {
- Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));
- Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));
- Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));
- }
- }
- });
- SyntheticEvent.Interface = EventInterface;
- if (process.env.NODE_ENV !== 'production') {
- if (isProxySupported) {
- /*eslint-disable no-func-assign */
- SyntheticEvent = new Proxy(SyntheticEvent, {
- construct: function (target, args) {
- return this.apply(target, Object.create(target.prototype), args);
- },
- apply: function (constructor, that, args) {
- return new Proxy(constructor.apply(that, args), {
- set: function (target, prop, value) {
- if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {
- process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\'re ' + 'seeing this, you\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;
- didWarnForAddedNewProperty = true;
- }
- target[prop] = value;
- return true;
- }
- });
- }
- });
- /*eslint-enable no-func-assign */
- }
- }
- /**
- * Helper to reduce boilerplate when creating subclasses.
- *
- * @param {function} Class
- * @param {?object} Interface
- */
- SyntheticEvent.augmentClass = function (Class, Interface) {
- var Super = this;
- var E = function () {};
- E.prototype = Super.prototype;
- var prototype = new E();
- _assign(prototype, Class.prototype);
- Class.prototype = prototype;
- Class.prototype.constructor = Class;
- Class.Interface = _assign({}, Super.Interface, Interface);
- Class.augmentClass = Super.augmentClass;
- PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);
- };
- PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
- module.exports = SyntheticEvent;
- /**
- * Helper to nullify syntheticEvent instance properties when destructing
- *
- * @param {object} SyntheticEvent
- * @param {String} propName
- * @return {object} defineProperty object
- */
- function getPooledWarningPropertyDefinition(propName, getVal) {
- var isFunction = typeof getVal === 'function';
- return {
- configurable: true,
- set: set,
- get: get
- };
- function set(val) {
- var action = isFunction ? 'setting the method' : 'setting the property';
- warn(action, 'This is effectively a no-op');
- return val;
- }
- function get() {
- var action = isFunction ? 'accessing the method' : 'accessing the property';
- var result = isFunction ? 'This is a no-op function' : 'This is set to null';
- warn(action, result);
- return getVal;
- }
- function warn(action, result) {
- var warningCondition = false;
- process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\'re seeing this, ' + 'you\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;
- }
- }
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 13 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- function checkMask(value, bitmask) {
- return (value & bitmask) === bitmask;
- }
- var DOMPropertyInjection = {
- /**
- * Mapping from normalized, camelcased property names to a configuration that
- * specifies how the associated DOM property should be accessed or rendered.
- */
- MUST_USE_PROPERTY: 0x1,
- HAS_BOOLEAN_VALUE: 0x4,
- HAS_NUMERIC_VALUE: 0x8,
- HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,
- HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,
- /**
- * Inject some specialized knowledge about the DOM. This takes a config object
- * with the following properties:
- *
- * isCustomAttribute: function that given an attribute name will return true
- * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*
- * attributes where it's impossible to enumerate all of the possible
- * attribute names,
- *
- * Properties: object mapping DOM property name to one of the
- * DOMPropertyInjection constants or null. If your attribute isn't in here,
- * it won't get written to the DOM.
- *
- * DOMAttributeNames: object mapping React attribute name to the DOM
- * attribute name. Attribute names not specified use the **lowercase**
- * normalized name.
- *
- * DOMAttributeNamespaces: object mapping React attribute name to the DOM
- * attribute namespace URL. (Attribute names not specified use no namespace.)
- *
- * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.
- * Property names not specified use the normalized name.
- *
- * DOMMutationMethods: Properties that require special mutation methods. If
- * `value` is undefined, the mutation method should unset the property.
- *
- * @param {object} domPropertyConfig the config as described above.
- */
- injectDOMPropertyConfig: function (domPropertyConfig) {
- var Injection = DOMPropertyInjection;
- var Properties = domPropertyConfig.Properties || {};
- var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};
- var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};
- var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};
- var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
- if (domPropertyConfig.isCustomAttribute) {
- DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);
- }
- for (var propName in Properties) {
- !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property \'%s\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;
- var lowerCased = propName.toLowerCase();
- var propConfig = Properties[propName];
- var propertyInfo = {
- attributeName: lowerCased,
- attributeNamespace: null,
- propertyName: propName,
- mutationMethod: null,
- mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),
- hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),
- hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),
- hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),
- hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)
- };
- !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;
- if (process.env.NODE_ENV !== 'production') {
- DOMProperty.getPossibleStandardName[lowerCased] = propName;
- }
- if (DOMAttributeNames.hasOwnProperty(propName)) {
- var attributeName = DOMAttributeNames[propName];
- propertyInfo.attributeName = attributeName;
- if (process.env.NODE_ENV !== 'production') {
- DOMProperty.getPossibleStandardName[attributeName] = propName;
- }
- }
- if (DOMAttributeNamespaces.hasOwnProperty(propName)) {
- propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];
- }
- if (DOMPropertyNames.hasOwnProperty(propName)) {
- propertyInfo.propertyName = DOMPropertyNames[propName];
- }
- if (DOMMutationMethods.hasOwnProperty(propName)) {
- propertyInfo.mutationMethod = DOMMutationMethods[propName];
- }
- DOMProperty.properties[propName] = propertyInfo;
- }
- }
- };
- /* eslint-disable max-len */
- var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
- /* eslint-enable max-len */
- /**
- * DOMProperty exports lookup objects that can be used like functions:
- *
- * > DOMProperty.isValid['id']
- * true
- * > DOMProperty.isValid['foobar']
- * undefined
- *
- * Although this may be confusing, it performs better in general.
- *
- * @see http://jsperf.com/key-exists
- * @see http://jsperf.com/key-missing
- */
- var DOMProperty = {
- ID_ATTRIBUTE_NAME: 'data-reactid',
- ROOT_ATTRIBUTE_NAME: 'data-reactroot',
- ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
- ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040',
- /**
- * Map from property "standard name" to an object with info about how to set
- * the property in the DOM. Each object contains:
- *
- * attributeName:
- * Used when rendering markup or with `*Attribute()`.
- * attributeNamespace
- * propertyName:
- * Used on DOM node instances. (This includes properties that mutate due to
- * external factors.)
- * mutationMethod:
- * If non-null, used instead of the property or `setAttribute()` after
- * initial render.
- * mustUseProperty:
- * Whether the property must be accessed and mutated as an object property.
- * hasBooleanValue:
- * Whether the property should be removed when set to a falsey value.
- * hasNumericValue:
- * Whether the property must be numeric or parse as a numeric and should be
- * removed when set to a falsey value.
- * hasPositiveNumericValue:
- * Whether the property must be positive numeric or parse as a positive
- * numeric and should be removed when set to a falsey value.
- * hasOverloadedBooleanValue:
- * Whether the property can be used as a flag as well as with a value.
- * Removed when strictly equal to false; present without a value when
- * strictly equal to true; present with a value otherwise.
- */
- properties: {},
- /**
- * Mapping from lowercase property names to the properly cased version, used
- * to warn in the case of missing properties. Available only in __DEV__.
- *
- * autofocus is predefined, because adding it to the property whitelist
- * causes unintended side effects.
- *
- * @type {Object}
- */
- getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,
- /**
- * All of the isCustomAttribute() functions that have been injected.
- */
- _isCustomAttributeFunctions: [],
- /**
- * Checks whether a property name is a custom attribute.
- * @method
- */
- isCustomAttribute: function (attributeName) {
- for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {
- var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];
- if (isCustomAttributeFn(attributeName)) {
- return true;
- }
- }
- return false;
- },
- injection: DOMPropertyInjection
- };
- module.exports = DOMProperty;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 14 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * WARNING: DO NOT manually require this module.
- * This is a replacement for `invariant(...)` used by the error code system
- * and will _only_ be required by the corresponding babel pass.
- * It always throws.
- */
- function reactProdInvariant(code) {
- var argCount = arguments.length - 1;
- var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
- for (var argIdx = 0; argIdx < argCount; argIdx++) {
- message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
- }
- message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
- var error = new Error(message);
- error.name = 'Invariant Violation';
- error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
- throw error;
- }
- module.exports = reactProdInvariant;
- /***/ }),
- /* 15 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var ReactCurrentOwner = __webpack_require__(10);
- var warning = __webpack_require__(2);
- var canDefineProperty = __webpack_require__(26);
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- var REACT_ELEMENT_TYPE = __webpack_require__(51);
- var RESERVED_PROPS = {
- key: true,
- ref: true,
- __self: true,
- __source: true
- };
- var specialPropKeyWarningShown, specialPropRefWarningShown;
- function hasValidRef(config) {
- if (process.env.NODE_ENV !== 'production') {
- if (hasOwnProperty.call(config, 'ref')) {
- var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
- if (getter && getter.isReactWarning) {
- return false;
- }
- }
- }
- return config.ref !== undefined;
- }
- function hasValidKey(config) {
- if (process.env.NODE_ENV !== 'production') {
- if (hasOwnProperty.call(config, 'key')) {
- var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
- if (getter && getter.isReactWarning) {
- return false;
- }
- }
- }
- return config.key !== undefined;
- }
- function defineKeyPropWarningGetter(props, displayName) {
- var warnAboutAccessingKey = function () {
- if (!specialPropKeyWarningShown) {
- specialPropKeyWarningShown = true;
- process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;
- }
- };
- warnAboutAccessingKey.isReactWarning = true;
- Object.defineProperty(props, 'key', {
- get: warnAboutAccessingKey,
- configurable: true
- });
- }
- function defineRefPropWarningGetter(props, displayName) {
- var warnAboutAccessingRef = function () {
- if (!specialPropRefWarningShown) {
- specialPropRefWarningShown = true;
- process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;
- }
- };
- warnAboutAccessingRef.isReactWarning = true;
- Object.defineProperty(props, 'ref', {
- get: warnAboutAccessingRef,
- configurable: true
- });
- }
- /**
- * Factory method to create a new React element. This no longer adheres to
- * the class pattern, so do not use new to call it. Also, no instanceof check
- * will work. Instead test $$typeof field against Symbol.for('react.element') to check
- * if something is a React Element.
- *
- * @param {*} type
- * @param {*} key
- * @param {string|object} ref
- * @param {*} self A *temporary* helper to detect places where `this` is
- * different from the `owner` when React.createElement is called, so that we
- * can warn. We want to get rid of owner and replace string `ref`s with arrow
- * functions, and as long as `this` and owner are the same, there will be no
- * change in behavior.
- * @param {*} source An annotation object (added by a transpiler or otherwise)
- * indicating filename, line number, and/or other information.
- * @param {*} owner
- * @param {*} props
- * @internal
- */
- var ReactElement = function (type, key, ref, self, source, owner, props) {
- var element = {
- // This tag allow us to uniquely identify this as a React Element
- $$typeof: REACT_ELEMENT_TYPE,
- // Built-in properties that belong on the element
- type: type,
- key: key,
- ref: ref,
- props: props,
- // Record the component responsible for creating this element.
- _owner: owner
- };
- if (process.env.NODE_ENV !== 'production') {
- // The validation flag is currently mutative. We put it on
- // an external backing store so that we can freeze the whole object.
- // This can be replaced with a WeakMap once they are implemented in
- // commonly used development environments.
- element._store = {};
- // To make comparing ReactElements easier for testing purposes, we make
- // the validation flag non-enumerable (where possible, which should
- // include every environment we run tests in), so the test framework
- // ignores it.
- if (canDefineProperty) {
- Object.defineProperty(element._store, 'validated', {
- configurable: false,
- enumerable: false,
- writable: true,
- value: false
- });
- // self and source are DEV only properties.
- Object.defineProperty(element, '_self', {
- configurable: false,
- enumerable: false,
- writable: false,
- value: self
- });
- // Two elements created in two different places should be considered
- // equal for testing purposes and therefore we hide it from enumeration.
- Object.defineProperty(element, '_source', {
- configurable: false,
- enumerable: false,
- writable: false,
- value: source
- });
- } else {
- element._store.validated = false;
- element._self = self;
- element._source = source;
- }
- if (Object.freeze) {
- Object.freeze(element.props);
- Object.freeze(element);
- }
- }
- return element;
- };
- /**
- * Create and return a new ReactElement of the given type.
- * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement
- */
- ReactElement.createElement = function (type, config, children) {
- var propName;
- // Reserved names are extracted
- var props = {};
- var key = null;
- var ref = null;
- var self = null;
- var source = null;
- if (config != null) {
- if (hasValidRef(config)) {
- ref = config.ref;
- }
- if (hasValidKey(config)) {
- key = '' + config.key;
- }
- self = config.__self === undefined ? null : config.__self;
- source = config.__source === undefined ? null : config.__source;
- // Remaining properties are added to a new props object
- for (propName in config) {
- if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
- props[propName] = config[propName];
- }
- }
- }
- // Children can be more than one argument, and those are transferred onto
- // the newly allocated props object.
- var childrenLength = arguments.length - 2;
- if (childrenLength === 1) {
- props.children = children;
- } else if (childrenLength > 1) {
- var childArray = Array(childrenLength);
- for (var i = 0; i < childrenLength; i++) {
- childArray[i] = arguments[i + 2];
- }
- if (process.env.NODE_ENV !== 'production') {
- if (Object.freeze) {
- Object.freeze(childArray);
- }
- }
- props.children = childArray;
- }
- // Resolve default props
- if (type && type.defaultProps) {
- var defaultProps = type.defaultProps;
- for (propName in defaultProps) {
- if (props[propName] === undefined) {
- props[propName] = defaultProps[propName];
- }
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- if (key || ref) {
- if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {
- var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
- if (key) {
- defineKeyPropWarningGetter(props, displayName);
- }
- if (ref) {
- defineRefPropWarningGetter(props, displayName);
- }
- }
- }
- }
- return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
- };
- /**
- * Return a function that produces ReactElements of a given type.
- * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory
- */
- ReactElement.createFactory = function (type) {
- var factory = ReactElement.createElement.bind(null, type);
- // Expose the type on the factory and the prototype so that it can be
- // easily accessed on elements. E.g. `<Foo />.type === Foo`.
- // This should not be named `constructor` since this may not be the function
- // that created the element, and it may not even be a constructor.
- // Legacy hook TODO: Warn if this is accessed
- factory.type = type;
- return factory;
- };
- ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {
- var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
- return newElement;
- };
- /**
- * Clone and return a new ReactElement using element as the starting point.
- * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement
- */
- ReactElement.cloneElement = function (element, config, children) {
- var propName;
- // Original props are copied
- var props = _assign({}, element.props);
- // Reserved names are extracted
- var key = element.key;
- var ref = element.ref;
- // Self is preserved since the owner is preserved.
- var self = element._self;
- // Source is preserved since cloneElement is unlikely to be targeted by a
- // transpiler, and the original source is probably a better indicator of the
- // true owner.
- var source = element._source;
- // Owner will be preserved, unless ref is overridden
- var owner = element._owner;
- if (config != null) {
- if (hasValidRef(config)) {
- // Silently steal the ref from the parent.
- ref = config.ref;
- owner = ReactCurrentOwner.current;
- }
- if (hasValidKey(config)) {
- key = '' + config.key;
- }
- // Remaining properties override existing props
- var defaultProps;
- if (element.type && element.type.defaultProps) {
- defaultProps = element.type.defaultProps;
- }
- for (propName in config) {
- if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
- if (config[propName] === undefined && defaultProps !== undefined) {
- // Resolve default props
- props[propName] = defaultProps[propName];
- } else {
- props[propName] = config[propName];
- }
- }
- }
- }
- // Children can be more than one argument, and those are transferred onto
- // the newly allocated props object.
- var childrenLength = arguments.length - 2;
- if (childrenLength === 1) {
- props.children = children;
- } else if (childrenLength > 1) {
- var childArray = Array(childrenLength);
- for (var i = 0; i < childrenLength; i++) {
- childArray[i] = arguments[i + 2];
- }
- props.children = childArray;
- }
- return ReactElement(element.type, key, ref, self, source, owner, props);
- };
- /**
- * Verifies the object is a ReactElement.
- * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement
- * @param {?object} object
- * @return {boolean} True if `object` is a valid component.
- * @final
- */
- ReactElement.isValidElement = function (object) {
- return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
- };
- module.exports = ReactElement;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 16 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- /**
- * Static poolers. Several custom versions for each potential number of
- * arguments. A completely generic pooler is easy to implement, but would
- * require accessing the `arguments` object. In each of these, `this` refers to
- * the Class itself, not an instance. If any others are needed, simply add them
- * here, or in their own files.
- */
- var oneArgumentPooler = function (copyFieldsFrom) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, copyFieldsFrom);
- return instance;
- } else {
- return new Klass(copyFieldsFrom);
- }
- };
- var twoArgumentPooler = function (a1, a2) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, a1, a2);
- return instance;
- } else {
- return new Klass(a1, a2);
- }
- };
- var threeArgumentPooler = function (a1, a2, a3) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, a1, a2, a3);
- return instance;
- } else {
- return new Klass(a1, a2, a3);
- }
- };
- var fourArgumentPooler = function (a1, a2, a3, a4) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, a1, a2, a3, a4);
- return instance;
- } else {
- return new Klass(a1, a2, a3, a4);
- }
- };
- var standardReleaser = function (instance) {
- var Klass = this;
- !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
- instance.destructor();
- if (Klass.instancePool.length < Klass.poolSize) {
- Klass.instancePool.push(instance);
- }
- };
- var DEFAULT_POOL_SIZE = 10;
- var DEFAULT_POOLER = oneArgumentPooler;
- /**
- * Augments `CopyConstructor` to be a poolable class, augmenting only the class
- * itself (statically) not adding any prototypical fields. Any CopyConstructor
- * you give this may have a `poolSize` property, and will look for a
- * prototypical `destructor` on instances.
- *
- * @param {Function} CopyConstructor Constructor that can be used to reset.
- * @param {Function} pooler Customizable pooler.
- */
- var addPoolingTo = function (CopyConstructor, pooler) {
- // Casting as any so that flow ignores the actual implementation and trusts
- // it to match the type we declared
- var NewKlass = CopyConstructor;
- NewKlass.instancePool = [];
- NewKlass.getPooled = pooler || DEFAULT_POOLER;
- if (!NewKlass.poolSize) {
- NewKlass.poolSize = DEFAULT_POOL_SIZE;
- }
- NewKlass.release = standardReleaser;
- return NewKlass;
- };
- var PooledClass = {
- addPoolingTo: addPoolingTo,
- oneArgumentPooler: oneArgumentPooler,
- twoArgumentPooler: twoArgumentPooler,
- threeArgumentPooler: threeArgumentPooler,
- fourArgumentPooler: fourArgumentPooler
- };
- module.exports = PooledClass;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 17 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var ReactChildren = __webpack_require__(86);
- var ReactComponent = __webpack_require__(33);
- var ReactPureComponent = __webpack_require__(90);
- var ReactClass = __webpack_require__(91);
- var ReactDOMFactories = __webpack_require__(92);
- var ReactElement = __webpack_require__(15);
- var ReactPropTypes = __webpack_require__(95);
- var ReactVersion = __webpack_require__(99);
- var onlyChild = __webpack_require__(100);
- var warning = __webpack_require__(2);
- var createElement = ReactElement.createElement;
- var createFactory = ReactElement.createFactory;
- var cloneElement = ReactElement.cloneElement;
- if (process.env.NODE_ENV !== 'production') {
- var canDefineProperty = __webpack_require__(26);
- var ReactElementValidator = __webpack_require__(54);
- var didWarnPropTypesDeprecated = false;
- createElement = ReactElementValidator.createElement;
- createFactory = ReactElementValidator.createFactory;
- cloneElement = ReactElementValidator.cloneElement;
- }
- var __spread = _assign;
- if (process.env.NODE_ENV !== 'production') {
- var warned = false;
- __spread = function () {
- process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;
- warned = true;
- return _assign.apply(null, arguments);
- };
- }
- var React = {
- // Modern
- Children: {
- map: ReactChildren.map,
- forEach: ReactChildren.forEach,
- count: ReactChildren.count,
- toArray: ReactChildren.toArray,
- only: onlyChild
- },
- Component: ReactComponent,
- PureComponent: ReactPureComponent,
- createElement: createElement,
- cloneElement: cloneElement,
- isValidElement: ReactElement.isValidElement,
- // Classic
- PropTypes: ReactPropTypes,
- createClass: ReactClass.createClass,
- createFactory: createFactory,
- createMixin: function (mixin) {
- // Currently a noop. Will be used to validate and trace mixins.
- return mixin;
- },
- // This looks DOM specific but these are actually isomorphic helpers
- // since they are just generating DOM strings.
- DOM: ReactDOMFactories,
- version: ReactVersion,
- // Deprecated hook for JSX spread, don't use this for anything.
- __spread: __spread
- };
- // TODO: Fix tests so that this deprecation warning doesn't cause failures.
- if (process.env.NODE_ENV !== 'production') {
- if (canDefineProperty) {
- Object.defineProperty(React, 'PropTypes', {
- get: function () {
- process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0;
- didWarnPropTypesDeprecated = true;
- return ReactPropTypes;
- }
- });
- }
- }
- module.exports = React;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 18 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactRef = __webpack_require__(110);
- var ReactInstrumentation = __webpack_require__(9);
- var warning = __webpack_require__(2);
- /**
- * Helper to call ReactRef.attachRefs with this composite component, split out
- * to avoid allocations in the transaction mount-ready queue.
- */
- function attachRefs() {
- ReactRef.attachRefs(this, this._currentElement);
- }
- var ReactReconciler = {
- /**
- * Initializes the component, renders markup, and registers event listeners.
- *
- * @param {ReactComponent} internalInstance
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {?object} the containing host component instance
- * @param {?object} info about the host container
- * @return {?string} Rendered markup to be inserted into the DOM.
- * @final
- * @internal
- */
- mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots
- ) {
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);
- }
- }
- var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);
- if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {
- transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
- }
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);
- }
- }
- return markup;
- },
- /**
- * Returns a value that can be passed to
- * ReactComponentEnvironment.replaceNodeWithMarkup.
- */
- getHostNode: function (internalInstance) {
- return internalInstance.getHostNode();
- },
- /**
- * Releases any resources allocated by `mountComponent`.
- *
- * @final
- * @internal
- */
- unmountComponent: function (internalInstance, safely) {
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);
- }
- }
- ReactRef.detachRefs(internalInstance, internalInstance._currentElement);
- internalInstance.unmountComponent(safely);
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);
- }
- }
- },
- /**
- * Update a component using a new element.
- *
- * @param {ReactComponent} internalInstance
- * @param {ReactElement} nextElement
- * @param {ReactReconcileTransaction} transaction
- * @param {object} context
- * @internal
- */
- receiveComponent: function (internalInstance, nextElement, transaction, context) {
- var prevElement = internalInstance._currentElement;
- if (nextElement === prevElement && context === internalInstance._context) {
- // Since elements are immutable after the owner is rendered,
- // we can do a cheap identity compare here to determine if this is a
- // superfluous reconcile. It's possible for state to be mutable but such
- // change should trigger an update of the owner which would recreate
- // the element. We explicitly check for the existence of an owner since
- // it's possible for an element created outside a composite to be
- // deeply mutated and reused.
- // TODO: Bailing out early is just a perf optimization right?
- // TODO: Removing the return statement should affect correctness?
- return;
- }
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);
- }
- }
- var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
- if (refsChanged) {
- ReactRef.detachRefs(internalInstance, prevElement);
- }
- internalInstance.receiveComponent(nextElement, transaction, context);
- if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {
- transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
- }
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
- }
- }
- },
- /**
- * Flush any dirty changes in a component.
- *
- * @param {ReactComponent} internalInstance
- * @param {ReactReconcileTransaction} transaction
- * @internal
- */
- performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {
- if (internalInstance._updateBatchNumber !== updateBatchNumber) {
- // The component's enqueued batch number should always be the current
- // batch or the following one.
- process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;
- return;
- }
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);
- }
- }
- internalInstance.performUpdateIfNecessary(transaction);
- if (process.env.NODE_ENV !== 'production') {
- if (internalInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
- }
- }
- }
- };
- module.exports = ReactReconciler;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 19 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMNamespaces = __webpack_require__(41);
- var setInnerHTML = __webpack_require__(30);
- var createMicrosoftUnsafeLocalFunction = __webpack_require__(42);
- var setTextContent = __webpack_require__(64);
- var ELEMENT_NODE_TYPE = 1;
- var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
- /**
- * In IE (8-11) and Edge, appending nodes with no children is dramatically
- * faster than appending a full subtree, so we essentially queue up the
- * .appendChild calls here and apply them so each node is added to its parent
- * before any children are added.
- *
- * In other browsers, doing so is slower or neutral compared to the other order
- * (in Firefox, twice as slow) so we only do this inversion in IE.
- *
- * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.
- */
- var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent);
- function insertTreeChildren(tree) {
- if (!enableLazy) {
- return;
- }
- var node = tree.node;
- var children = tree.children;
- if (children.length) {
- for (var i = 0; i < children.length; i++) {
- insertTreeBefore(node, children[i], null);
- }
- } else if (tree.html != null) {
- setInnerHTML(node, tree.html);
- } else if (tree.text != null) {
- setTextContent(node, tree.text);
- }
- }
- var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {
- // DocumentFragments aren't actually part of the DOM after insertion so
- // appending children won't update the DOM. We need to ensure the fragment
- // is properly populated first, breaking out of our lazy approach for just
- // this level. Also, some <object> plugins (like Flash Player) will read
- // <param> nodes immediately upon insertion into the DOM, so <object>
- // must also be populated prior to insertion into the DOM.
- if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {
- insertTreeChildren(tree);
- parentNode.insertBefore(tree.node, referenceNode);
- } else {
- parentNode.insertBefore(tree.node, referenceNode);
- insertTreeChildren(tree);
- }
- });
- function replaceChildWithTree(oldNode, newTree) {
- oldNode.parentNode.replaceChild(newTree.node, oldNode);
- insertTreeChildren(newTree);
- }
- function queueChild(parentTree, childTree) {
- if (enableLazy) {
- parentTree.children.push(childTree);
- } else {
- parentTree.node.appendChild(childTree.node);
- }
- }
- function queueHTML(tree, html) {
- if (enableLazy) {
- tree.html = html;
- } else {
- setInnerHTML(tree.node, html);
- }
- }
- function queueText(tree, text) {
- if (enableLazy) {
- tree.text = text;
- } else {
- setTextContent(tree.node, text);
- }
- }
- function toString() {
- return this.node.nodeName;
- }
- function DOMLazyTree(node) {
- return {
- node: node,
- children: [],
- html: null,
- text: null,
- toString: toString
- };
- }
- DOMLazyTree.insertTreeBefore = insertTreeBefore;
- DOMLazyTree.replaceChildWithTree = replaceChildWithTree;
- DOMLazyTree.queueChild = queueChild;
- DOMLazyTree.queueHTML = queueHTML;
- DOMLazyTree.queueText = queueText;
- module.exports = DOMLazyTree;
- /***/ }),
- /* 20 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
- var emptyObject = {};
- if (process.env.NODE_ENV !== 'production') {
- Object.freeze(emptyObject);
- }
- module.exports = emptyObject;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 21 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var EventPluginHub = __webpack_require__(22);
- var EventPluginUtils = __webpack_require__(35);
- var accumulateInto = __webpack_require__(57);
- var forEachAccumulated = __webpack_require__(58);
- var warning = __webpack_require__(2);
- var getListener = EventPluginHub.getListener;
- /**
- * Some event types have a notion of different registration names for different
- * "phases" of propagation. This finds listeners by a given phase.
- */
- function listenerAtPhase(inst, event, propagationPhase) {
- var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
- return getListener(inst, registrationName);
- }
- /**
- * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
- * here, allows us to not have to bind or create functions for each event.
- * Mutating the event's members allows us to not have to create a wrapping
- * "dispatch" object that pairs the event with the listener.
- */
- function accumulateDirectionalDispatches(inst, phase, event) {
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;
- }
- var listener = listenerAtPhase(inst, event, phase);
- if (listener) {
- event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
- event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
- }
- }
- /**
- * Collect dispatches (must be entirely collected before dispatching - see unit
- * tests). Lazily allocate the array to conserve memory. We must loop through
- * each event and perform the traversal for each one. We cannot perform a
- * single traversal for the entire collection of events because each event may
- * have a different target.
- */
- function accumulateTwoPhaseDispatchesSingle(event) {
- if (event && event.dispatchConfig.phasedRegistrationNames) {
- EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);
- }
- }
- /**
- * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.
- */
- function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
- if (event && event.dispatchConfig.phasedRegistrationNames) {
- var targetInst = event._targetInst;
- var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;
- EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);
- }
- }
- /**
- * Accumulates without regard to direction, does not look for phased
- * registration names. Same as `accumulateDirectDispatchesSingle` but without
- * requiring that the `dispatchMarker` be the same as the dispatched ID.
- */
- function accumulateDispatches(inst, ignoredDirection, event) {
- if (event && event.dispatchConfig.registrationName) {
- var registrationName = event.dispatchConfig.registrationName;
- var listener = getListener(inst, registrationName);
- if (listener) {
- event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
- event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
- }
- }
- }
- /**
- * Accumulates dispatches on an `SyntheticEvent`, but only for the
- * `dispatchMarker`.
- * @param {SyntheticEvent} event
- */
- function accumulateDirectDispatchesSingle(event) {
- if (event && event.dispatchConfig.registrationName) {
- accumulateDispatches(event._targetInst, null, event);
- }
- }
- function accumulateTwoPhaseDispatches(events) {
- forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
- }
- function accumulateTwoPhaseDispatchesSkipTarget(events) {
- forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);
- }
- function accumulateEnterLeaveDispatches(leave, enter, from, to) {
- EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);
- }
- function accumulateDirectDispatches(events) {
- forEachAccumulated(events, accumulateDirectDispatchesSingle);
- }
- /**
- * A small set of propagation patterns, each of which will accept a small amount
- * of information, and generate a set of "dispatch ready event objects" - which
- * are sets of events that have already been annotated with a set of dispatched
- * listener functions/ids. The API is designed this way to discourage these
- * propagation strategies from actually executing the dispatches, since we
- * always want to collect the entire set of dispatches before executing event a
- * single one.
- *
- * @constructor EventPropagators
- */
- var EventPropagators = {
- accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,
- accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,
- accumulateDirectDispatches: accumulateDirectDispatches,
- accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches
- };
- module.exports = EventPropagators;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 22 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var EventPluginRegistry = __webpack_require__(27);
- var EventPluginUtils = __webpack_require__(35);
- var ReactErrorUtils = __webpack_require__(36);
- var accumulateInto = __webpack_require__(57);
- var forEachAccumulated = __webpack_require__(58);
- var invariant = __webpack_require__(1);
- /**
- * Internal store for event listeners
- */
- var listenerBank = {};
- /**
- * Internal queue of events that have accumulated their dispatches and are
- * waiting to have their dispatches executed.
- */
- var eventQueue = null;
- /**
- * Dispatches an event and releases it back into the pool, unless persistent.
- *
- * @param {?object} event Synthetic event to be dispatched.
- * @param {boolean} simulated If the event is simulated (changes exn behavior)
- * @private
- */
- var executeDispatchesAndRelease = function (event, simulated) {
- if (event) {
- EventPluginUtils.executeDispatchesInOrder(event, simulated);
- if (!event.isPersistent()) {
- event.constructor.release(event);
- }
- }
- };
- var executeDispatchesAndReleaseSimulated = function (e) {
- return executeDispatchesAndRelease(e, true);
- };
- var executeDispatchesAndReleaseTopLevel = function (e) {
- return executeDispatchesAndRelease(e, false);
- };
- var getDictionaryKey = function (inst) {
- // Prevents V8 performance issue:
- // https://github.com/facebook/react/pull/7232
- return '.' + inst._rootNodeID;
- };
- function isInteractive(tag) {
- return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
- }
- function shouldPreventMouseEvent(name, type, props) {
- switch (name) {
- case 'onClick':
- case 'onClickCapture':
- case 'onDoubleClick':
- case 'onDoubleClickCapture':
- case 'onMouseDown':
- case 'onMouseDownCapture':
- case 'onMouseMove':
- case 'onMouseMoveCapture':
- case 'onMouseUp':
- case 'onMouseUpCapture':
- return !!(props.disabled && isInteractive(type));
- default:
- return false;
- }
- }
- /**
- * This is a unified interface for event plugins to be installed and configured.
- *
- * Event plugins can implement the following properties:
- *
- * `extractEvents` {function(string, DOMEventTarget, string, object): *}
- * Required. When a top-level event is fired, this method is expected to
- * extract synthetic events that will in turn be queued and dispatched.
- *
- * `eventTypes` {object}
- * Optional, plugins that fire events must publish a mapping of registration
- * names that are used to register listeners. Values of this mapping must
- * be objects that contain `registrationName` or `phasedRegistrationNames`.
- *
- * `executeDispatch` {function(object, function, string)}
- * Optional, allows plugins to override how an event gets dispatched. By
- * default, the listener is simply invoked.
- *
- * Each plugin that is injected into `EventsPluginHub` is immediately operable.
- *
- * @public
- */
- var EventPluginHub = {
- /**
- * Methods for injecting dependencies.
- */
- injection: {
- /**
- * @param {array} InjectedEventPluginOrder
- * @public
- */
- injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,
- /**
- * @param {object} injectedNamesToPlugins Map from names to plugin modules.
- */
- injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName
- },
- /**
- * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.
- *
- * @param {object} inst The instance, which is the source of events.
- * @param {string} registrationName Name of listener (e.g. `onClick`).
- * @param {function} listener The callback to store.
- */
- putListener: function (inst, registrationName, listener) {
- !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;
- var key = getDictionaryKey(inst);
- var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});
- bankForRegistrationName[key] = listener;
- var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
- if (PluginModule && PluginModule.didPutListener) {
- PluginModule.didPutListener(inst, registrationName, listener);
- }
- },
- /**
- * @param {object} inst The instance, which is the source of events.
- * @param {string} registrationName Name of listener (e.g. `onClick`).
- * @return {?function} The stored callback.
- */
- getListener: function (inst, registrationName) {
- // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
- // live here; needs to be moved to a better place soon
- var bankForRegistrationName = listenerBank[registrationName];
- if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {
- return null;
- }
- var key = getDictionaryKey(inst);
- return bankForRegistrationName && bankForRegistrationName[key];
- },
- /**
- * Deletes a listener from the registration bank.
- *
- * @param {object} inst The instance, which is the source of events.
- * @param {string} registrationName Name of listener (e.g. `onClick`).
- */
- deleteListener: function (inst, registrationName) {
- var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
- if (PluginModule && PluginModule.willDeleteListener) {
- PluginModule.willDeleteListener(inst, registrationName);
- }
- var bankForRegistrationName = listenerBank[registrationName];
- // TODO: This should never be null -- when is it?
- if (bankForRegistrationName) {
- var key = getDictionaryKey(inst);
- delete bankForRegistrationName[key];
- }
- },
- /**
- * Deletes all listeners for the DOM element with the supplied ID.
- *
- * @param {object} inst The instance, which is the source of events.
- */
- deleteAllListeners: function (inst) {
- var key = getDictionaryKey(inst);
- for (var registrationName in listenerBank) {
- if (!listenerBank.hasOwnProperty(registrationName)) {
- continue;
- }
- if (!listenerBank[registrationName][key]) {
- continue;
- }
- var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
- if (PluginModule && PluginModule.willDeleteListener) {
- PluginModule.willDeleteListener(inst, registrationName);
- }
- delete listenerBank[registrationName][key];
- }
- },
- /**
- * Allows registered plugins an opportunity to extract events from top-level
- * native browser events.
- *
- * @return {*} An accumulation of synthetic events.
- * @internal
- */
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- var events;
- var plugins = EventPluginRegistry.plugins;
- for (var i = 0; i < plugins.length; i++) {
- // Not every plugin in the ordering may be loaded at runtime.
- var possiblePlugin = plugins[i];
- if (possiblePlugin) {
- var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
- if (extractedEvents) {
- events = accumulateInto(events, extractedEvents);
- }
- }
- }
- return events;
- },
- /**
- * Enqueues a synthetic event that should be dispatched when
- * `processEventQueue` is invoked.
- *
- * @param {*} events An accumulation of synthetic events.
- * @internal
- */
- enqueueEvents: function (events) {
- if (events) {
- eventQueue = accumulateInto(eventQueue, events);
- }
- },
- /**
- * Dispatches all synthetic events on the event queue.
- *
- * @internal
- */
- processEventQueue: function (simulated) {
- // Set `eventQueue` to null before processing it so that we can tell if more
- // events get enqueued while processing.
- var processingEventQueue = eventQueue;
- eventQueue = null;
- if (simulated) {
- forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
- } else {
- forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
- }
- !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;
- // This would be a good time to rethrow if any of the event handlers threw.
- ReactErrorUtils.rethrowCaughtError();
- },
- /**
- * These are needed for tests only. Do not use!
- */
- __purge: function () {
- listenerBank = {};
- },
- __getListenerBank: function () {
- return listenerBank;
- }
- };
- module.exports = EventPluginHub;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 23 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticEvent = __webpack_require__(12);
- var getEventTarget = __webpack_require__(37);
- /**
- * @interface UIEvent
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var UIEventInterface = {
- view: function (event) {
- if (event.view) {
- return event.view;
- }
- var target = getEventTarget(event);
- if (target.window === target) {
- // target is a window object
- return target;
- }
- var doc = target.ownerDocument;
- // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
- if (doc) {
- return doc.defaultView || doc.parentWindow;
- } else {
- return window;
- }
- },
- detail: function (event) {
- return event.detail || 0;
- }
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticEvent}
- */
- function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
- module.exports = SyntheticUIEvent;
- /***/ }),
- /* 24 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * `ReactInstanceMap` maintains a mapping from a public facing stateful
- * instance (key) and the internal representation (value). This allows public
- * methods to accept the user facing instance as an argument and map them back
- * to internal methods.
- */
- // TODO: Replace this with ES6: var ReactInstanceMap = new Map();
- var ReactInstanceMap = {
- /**
- * This API should be called `delete` but we'd have to make sure to always
- * transform these to strings for IE support. When this transform is fully
- * supported we can rename it.
- */
- remove: function (key) {
- key._reactInternalInstance = undefined;
- },
- get: function (key) {
- return key._reactInternalInstance;
- },
- has: function (key) {
- return key._reactInternalInstance !== undefined;
- },
- set: function (key, value) {
- key._reactInternalInstance = value;
- }
- };
- module.exports = ReactInstanceMap;
- /***/ }),
- /* 25 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = __webpack_require__(17);
- /***/ }),
- /* 26 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var canDefineProperty = false;
- if (process.env.NODE_ENV !== 'production') {
- try {
- // $FlowFixMe https://github.com/facebook/flow/issues/285
- Object.defineProperty({}, 'x', { get: function () {} });
- canDefineProperty = true;
- } catch (x) {
- // IE will fail on defineProperty
- }
- }
- module.exports = canDefineProperty;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 27 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- /**
- * Injectable ordering of event plugins.
- */
- var eventPluginOrder = null;
- /**
- * Injectable mapping from names to event plugin modules.
- */
- var namesToPlugins = {};
- /**
- * Recomputes the plugin list using the injected plugins and plugin ordering.
- *
- * @private
- */
- function recomputePluginOrdering() {
- if (!eventPluginOrder) {
- // Wait until an `eventPluginOrder` is injected.
- return;
- }
- for (var pluginName in namesToPlugins) {
- var pluginModule = namesToPlugins[pluginName];
- var pluginIndex = eventPluginOrder.indexOf(pluginName);
- !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;
- if (EventPluginRegistry.plugins[pluginIndex]) {
- continue;
- }
- !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;
- EventPluginRegistry.plugins[pluginIndex] = pluginModule;
- var publishedEvents = pluginModule.eventTypes;
- for (var eventName in publishedEvents) {
- !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;
- }
- }
- }
- /**
- * Publishes an event so that it can be dispatched by the supplied plugin.
- *
- * @param {object} dispatchConfig Dispatch configuration for the event.
- * @param {object} PluginModule Plugin publishing the event.
- * @return {boolean} True if the event was successfully published.
- * @private
- */
- function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
- !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;
- EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
- var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
- if (phasedRegistrationNames) {
- for (var phaseName in phasedRegistrationNames) {
- if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
- var phasedRegistrationName = phasedRegistrationNames[phaseName];
- publishRegistrationName(phasedRegistrationName, pluginModule, eventName);
- }
- }
- return true;
- } else if (dispatchConfig.registrationName) {
- publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);
- return true;
- }
- return false;
- }
- /**
- * Publishes a registration name that is used to identify dispatched events and
- * can be used with `EventPluginHub.putListener` to register listeners.
- *
- * @param {string} registrationName Registration name to add.
- * @param {object} PluginModule Plugin publishing the event.
- * @private
- */
- function publishRegistrationName(registrationName, pluginModule, eventName) {
- !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;
- EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;
- EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;
- if (process.env.NODE_ENV !== 'production') {
- var lowerCasedName = registrationName.toLowerCase();
- EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;
- if (registrationName === 'onDoubleClick') {
- EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;
- }
- }
- }
- /**
- * Registers plugins so that they can extract and dispatch events.
- *
- * @see {EventPluginHub}
- */
- var EventPluginRegistry = {
- /**
- * Ordered list of injected plugins.
- */
- plugins: [],
- /**
- * Mapping from event name to dispatch config
- */
- eventNameDispatchConfigs: {},
- /**
- * Mapping from registration name to plugin module
- */
- registrationNameModules: {},
- /**
- * Mapping from registration name to event name
- */
- registrationNameDependencies: {},
- /**
- * Mapping from lowercase registration names to the properly cased version,
- * used to warn in the case of missing event handlers. Available
- * only in __DEV__.
- * @type {Object}
- */
- possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,
- // Trust the developer to only use possibleRegistrationNames in __DEV__
- /**
- * Injects an ordering of plugins (by plugin name). This allows the ordering
- * to be decoupled from injection of the actual plugins so that ordering is
- * always deterministic regardless of packaging, on-the-fly injection, etc.
- *
- * @param {array} InjectedEventPluginOrder
- * @internal
- * @see {EventPluginHub.injection.injectEventPluginOrder}
- */
- injectEventPluginOrder: function (injectedEventPluginOrder) {
- !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;
- // Clone the ordering so it cannot be dynamically mutated.
- eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);
- recomputePluginOrdering();
- },
- /**
- * Injects plugins to be used by `EventPluginHub`. The plugin names must be
- * in the ordering injected by `injectEventPluginOrder`.
- *
- * Plugins can be injected as part of page initialization or on-the-fly.
- *
- * @param {object} injectedNamesToPlugins Map from names to plugin modules.
- * @internal
- * @see {EventPluginHub.injection.injectEventPluginsByName}
- */
- injectEventPluginsByName: function (injectedNamesToPlugins) {
- var isOrderingDirty = false;
- for (var pluginName in injectedNamesToPlugins) {
- if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {
- continue;
- }
- var pluginModule = injectedNamesToPlugins[pluginName];
- if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {
- !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;
- namesToPlugins[pluginName] = pluginModule;
- isOrderingDirty = true;
- }
- }
- if (isOrderingDirty) {
- recomputePluginOrdering();
- }
- },
- /**
- * Looks up the plugin for the supplied event.
- *
- * @param {object} event A synthetic event.
- * @return {?object} The plugin that created the supplied event.
- * @internal
- */
- getPluginModuleForEvent: function (event) {
- var dispatchConfig = event.dispatchConfig;
- if (dispatchConfig.registrationName) {
- return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;
- }
- if (dispatchConfig.phasedRegistrationNames !== undefined) {
- // pulling phasedRegistrationNames out of dispatchConfig helps Flow see
- // that it is not undefined.
- var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
- for (var phase in phasedRegistrationNames) {
- if (!phasedRegistrationNames.hasOwnProperty(phase)) {
- continue;
- }
- var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];
- if (pluginModule) {
- return pluginModule;
- }
- }
- }
- return null;
- },
- /**
- * Exposed for unit testing.
- * @private
- */
- _resetEventPlugins: function () {
- eventPluginOrder = null;
- for (var pluginName in namesToPlugins) {
- if (namesToPlugins.hasOwnProperty(pluginName)) {
- delete namesToPlugins[pluginName];
- }
- }
- EventPluginRegistry.plugins.length = 0;
- var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;
- for (var eventName in eventNameDispatchConfigs) {
- if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {
- delete eventNameDispatchConfigs[eventName];
- }
- }
- var registrationNameModules = EventPluginRegistry.registrationNameModules;
- for (var registrationName in registrationNameModules) {
- if (registrationNameModules.hasOwnProperty(registrationName)) {
- delete registrationNameModules[registrationName];
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;
- for (var lowerCasedName in possibleRegistrationNames) {
- if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {
- delete possibleRegistrationNames[lowerCasedName];
- }
- }
- }
- }
- };
- module.exports = EventPluginRegistry;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 28 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- var OBSERVED_ERROR = {};
- /**
- * `Transaction` creates a black box that is able to wrap any method such that
- * certain invariants are maintained before and after the method is invoked
- * (Even if an exception is thrown while invoking the wrapped method). Whoever
- * instantiates a transaction can provide enforcers of the invariants at
- * creation time. The `Transaction` class itself will supply one additional
- * automatic invariant for you - the invariant that any transaction instance
- * should not be run while it is already being run. You would typically create a
- * single instance of a `Transaction` for reuse multiple times, that potentially
- * is used to wrap several different methods. Wrappers are extremely simple -
- * they only require implementing two methods.
- *
- * <pre>
- * wrappers (injected at creation time)
- * + +
- * | |
- * +-----------------|--------|--------------+
- * | v | |
- * | +---------------+ | |
- * | +--| wrapper1 |---|----+ |
- * | | +---------------+ v | |
- * | | +-------------+ | |
- * | | +----| wrapper2 |--------+ |
- * | | | +-------------+ | | |
- * | | | | | |
- * | v v v v | wrapper
- * | +---+ +---+ +---------+ +---+ +---+ | invariants
- * perform(anyMethod) | | | | | | | | | | | | maintained
- * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->
- * | | | | | | | | | | | |
- * | | | | | | | | | | | |
- * | | | | | | | | | | | |
- * | +---+ +---+ +---------+ +---+ +---+ |
- * | initialize close |
- * +-----------------------------------------+
- * </pre>
- *
- * Use cases:
- * - Preserving the input selection ranges before/after reconciliation.
- * Restoring selection even in the event of an unexpected error.
- * - Deactivating events while rearranging the DOM, preventing blurs/focuses,
- * while guaranteeing that afterwards, the event system is reactivated.
- * - Flushing a queue of collected DOM mutations to the main UI thread after a
- * reconciliation takes place in a worker thread.
- * - Invoking any collected `componentDidUpdate` callbacks after rendering new
- * content.
- * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue
- * to preserve the `scrollTop` (an automatic scroll aware DOM).
- * - (Future use case): Layout calculations before and after DOM updates.
- *
- * Transactional plugin API:
- * - A module that has an `initialize` method that returns any precomputation.
- * - and a `close` method that accepts the precomputation. `close` is invoked
- * when the wrapped process is completed, or has failed.
- *
- * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules
- * that implement `initialize` and `close`.
- * @return {Transaction} Single transaction for reuse in thread.
- *
- * @class Transaction
- */
- var TransactionImpl = {
- /**
- * Sets up this instance so that it is prepared for collecting metrics. Does
- * so such that this setup method may be used on an instance that is already
- * initialized, in a way that does not consume additional memory upon reuse.
- * That can be useful if you decide to make your subclass of this mixin a
- * "PooledClass".
- */
- reinitializeTransaction: function () {
- this.transactionWrappers = this.getTransactionWrappers();
- if (this.wrapperInitData) {
- this.wrapperInitData.length = 0;
- } else {
- this.wrapperInitData = [];
- }
- this._isInTransaction = false;
- },
- _isInTransaction: false,
- /**
- * @abstract
- * @return {Array<TransactionWrapper>} Array of transaction wrappers.
- */
- getTransactionWrappers: null,
- isInTransaction: function () {
- return !!this._isInTransaction;
- },
- /**
- * Executes the function within a safety window. Use this for the top level
- * methods that result in large amounts of computation/mutations that would
- * need to be safety checked. The optional arguments helps prevent the need
- * to bind in many cases.
- *
- * @param {function} method Member of scope to call.
- * @param {Object} scope Scope to invoke from.
- * @param {Object?=} a Argument to pass to the method.
- * @param {Object?=} b Argument to pass to the method.
- * @param {Object?=} c Argument to pass to the method.
- * @param {Object?=} d Argument to pass to the method.
- * @param {Object?=} e Argument to pass to the method.
- * @param {Object?=} f Argument to pass to the method.
- *
- * @return {*} Return value from `method`.
- */
- perform: function (method, scope, a, b, c, d, e, f) {
- !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;
- var errorThrown;
- var ret;
- try {
- this._isInTransaction = true;
- // Catching errors makes debugging more difficult, so we start with
- // errorThrown set to true before setting it to false after calling
- // close -- if it's still set to true in the finally block, it means
- // one of these calls threw.
- errorThrown = true;
- this.initializeAll(0);
- ret = method.call(scope, a, b, c, d, e, f);
- errorThrown = false;
- } finally {
- try {
- if (errorThrown) {
- // If `method` throws, prefer to show that stack trace over any thrown
- // by invoking `closeAll`.
- try {
- this.closeAll(0);
- } catch (err) {}
- } else {
- // Since `method` didn't throw, we don't want to silence the exception
- // here.
- this.closeAll(0);
- }
- } finally {
- this._isInTransaction = false;
- }
- }
- return ret;
- },
- initializeAll: function (startIndex) {
- var transactionWrappers = this.transactionWrappers;
- for (var i = startIndex; i < transactionWrappers.length; i++) {
- var wrapper = transactionWrappers[i];
- try {
- // Catching errors makes debugging more difficult, so we start with the
- // OBSERVED_ERROR state before overwriting it with the real return value
- // of initialize -- if it's still set to OBSERVED_ERROR in the finally
- // block, it means wrapper.initialize threw.
- this.wrapperInitData[i] = OBSERVED_ERROR;
- this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;
- } finally {
- if (this.wrapperInitData[i] === OBSERVED_ERROR) {
- // The initializer for wrapper i threw an error; initialize the
- // remaining wrappers but silence any exceptions from them to ensure
- // that the first error is the one to bubble up.
- try {
- this.initializeAll(i + 1);
- } catch (err) {}
- }
- }
- }
- },
- /**
- * Invokes each of `this.transactionWrappers.close[i]` functions, passing into
- * them the respective return values of `this.transactionWrappers.init[i]`
- * (`close`rs that correspond to initializers that failed will not be
- * invoked).
- */
- closeAll: function (startIndex) {
- !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;
- var transactionWrappers = this.transactionWrappers;
- for (var i = startIndex; i < transactionWrappers.length; i++) {
- var wrapper = transactionWrappers[i];
- var initData = this.wrapperInitData[i];
- var errorThrown;
- try {
- // Catching errors makes debugging more difficult, so we start with
- // errorThrown set to true before setting it to false after calling
- // close -- if it's still set to true in the finally block, it means
- // wrapper.close threw.
- errorThrown = true;
- if (initData !== OBSERVED_ERROR && wrapper.close) {
- wrapper.close.call(this, initData);
- }
- errorThrown = false;
- } finally {
- if (errorThrown) {
- // The closer for wrapper i threw an error; close the remaining
- // wrappers but silence any exceptions from them to ensure that the
- // first error is the one to bubble up.
- try {
- this.closeAll(i + 1);
- } catch (e) {}
- }
- }
- }
- this.wrapperInitData.length = 0;
- }
- };
- module.exports = TransactionImpl;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 29 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticUIEvent = __webpack_require__(23);
- var ViewportMetrics = __webpack_require__(63);
- var getEventModifierState = __webpack_require__(39);
- /**
- * @interface MouseEvent
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var MouseEventInterface = {
- screenX: null,
- screenY: null,
- clientX: null,
- clientY: null,
- ctrlKey: null,
- shiftKey: null,
- altKey: null,
- metaKey: null,
- getModifierState: getEventModifierState,
- button: function (event) {
- // Webkit, Firefox, IE9+
- // which: 1 2 3
- // button: 0 1 2 (standard)
- var button = event.button;
- if ('which' in event) {
- return button;
- }
- // IE<9
- // which: undefined
- // button: 0 0 0
- // button: 1 4 2 (onmouseup)
- return button === 2 ? 2 : button === 4 ? 1 : 0;
- },
- buttons: null,
- relatedTarget: function (event) {
- return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);
- },
- // "Proprietary" Interface.
- pageX: function (event) {
- return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;
- },
- pageY: function (event) {
- return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;
- }
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
- module.exports = SyntheticMouseEvent;
- /***/ }),
- /* 30 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ExecutionEnvironment = __webpack_require__(6);
- var DOMNamespaces = __webpack_require__(41);
- var WHITESPACE_TEST = /^[ \r\n\t\f]/;
- var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/;
- var createMicrosoftUnsafeLocalFunction = __webpack_require__(42);
- // SVG temp container for IE lacking innerHTML
- var reusableSVGContainer;
- /**
- * Set the innerHTML property of a node, ensuring that whitespace is preserved
- * even in IE8.
- *
- * @param {DOMElement} node
- * @param {string} html
- * @internal
- */
- var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
- // IE does not have innerHTML for SVG nodes, so instead we inject the
- // new markup in a temp node and then move the child nodes across into
- // the target node
- if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {
- reusableSVGContainer = reusableSVGContainer || document.createElement('div');
- reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';
- var svgNode = reusableSVGContainer.firstChild;
- while (svgNode.firstChild) {
- node.appendChild(svgNode.firstChild);
- }
- } else {
- node.innerHTML = html;
- }
- });
- if (ExecutionEnvironment.canUseDOM) {
- // IE8: When updating a just created node with innerHTML only leading
- // whitespace is removed. When updating an existing node with innerHTML
- // whitespace in root TextNodes is also collapsed.
- // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html
- // Feature detection; only IE8 is known to behave improperly like this.
- var testElement = document.createElement('div');
- testElement.innerHTML = ' ';
- if (testElement.innerHTML === '') {
- setInnerHTML = function (node, html) {
- // Magic theory: IE8 supposedly differentiates between added and updated
- // nodes when processing innerHTML, innerHTML on updated nodes suffers
- // from worse whitespace behavior. Re-adding a node like this triggers
- // the initial and more favorable whitespace behavior.
- // TODO: What to do on a detached node?
- if (node.parentNode) {
- node.parentNode.replaceChild(node, node);
- }
- // We also implement a workaround for non-visible tags disappearing into
- // thin air on IE8, this only happens if there is no visible text
- // in-front of the non-visible tags. Piggyback on the whitespace fix
- // and simply check if any non-visible tags appear in the source.
- if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {
- // Recover leading whitespace by temporarily prepending any character.
- // \uFEFF has the potential advantage of being zero-width/invisible.
- // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode
- // in hopes that this is preserved even if "\uFEFF" is transformed to
- // the actual Unicode character (by Babel, for example).
- // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216
- node.innerHTML = String.fromCharCode(0xFEFF) + html;
- // deleteData leaves an empty `TextNode` which offsets the index of all
- // children. Definitely want to avoid this.
- var textNode = node.firstChild;
- if (textNode.data.length === 1) {
- node.removeChild(textNode);
- } else {
- textNode.deleteData(0, 1);
- }
- } else {
- node.innerHTML = html;
- }
- };
- }
- testElement = null;
- }
- module.exports = setInnerHTML;
- /***/ }),
- /* 31 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- * Based on the escape-html library, which is used under the MIT License below:
- *
- * Copyright (c) 2012-2013 TJ Holowaychuk
- * Copyright (c) 2015 Andreas Lubbe
- * Copyright (c) 2015 Tiancheng "Timothy" Gu
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * 'Software'), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
- // code copied and modified from escape-html
- /**
- * Module variables.
- * @private
- */
- var matchHtmlRegExp = /["'&<>]/;
- /**
- * Escape special characters in the given string of html.
- *
- * @param {string} string The string to escape for inserting into HTML
- * @return {string}
- * @public
- */
- function escapeHtml(string) {
- var str = '' + string;
- var match = matchHtmlRegExp.exec(str);
- if (!match) {
- return str;
- }
- var escape;
- var html = '';
- var index = 0;
- var lastIndex = 0;
- for (index = match.index; index < str.length; index++) {
- switch (str.charCodeAt(index)) {
- case 34:
- // "
- escape = '"';
- break;
- case 38:
- // &
- escape = '&';
- break;
- case 39:
- // '
- escape = '''; // modified from escape-html; used to be '''
- break;
- case 60:
- // <
- escape = '<';
- break;
- case 62:
- // >
- escape = '>';
- break;
- default:
- continue;
- }
- if (lastIndex !== index) {
- html += str.substring(lastIndex, index);
- }
- lastIndex = index + 1;
- html += escape;
- }
- return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
- }
- // end code copied and modified from escape-html
- /**
- * Escapes text to prevent scripting attacks.
- *
- * @param {*} text Text value to escape.
- * @return {string} An escaped string.
- */
- function escapeTextContentForBrowser(text) {
- if (typeof text === 'boolean' || typeof text === 'number') {
- // this shortcircuit helps perf for types that we know will never have
- // special characters, especially given that this function is used often
- // for numeric dom ids.
- return '' + text;
- }
- return escapeHtml(text);
- }
- module.exports = escapeTextContentForBrowser;
- /***/ }),
- /* 32 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var EventPluginRegistry = __webpack_require__(27);
- var ReactEventEmitterMixin = __webpack_require__(136);
- var ViewportMetrics = __webpack_require__(63);
- var getVendorPrefixedEventName = __webpack_require__(137);
- var isEventSupported = __webpack_require__(38);
- /**
- * Summary of `ReactBrowserEventEmitter` event handling:
- *
- * - Top-level delegation is used to trap most native browser events. This
- * may only occur in the main thread and is the responsibility of
- * ReactEventListener, which is injected and can therefore support pluggable
- * event sources. This is the only work that occurs in the main thread.
- *
- * - We normalize and de-duplicate events to account for browser quirks. This
- * may be done in the worker thread.
- *
- * - Forward these native events (with the associated top-level type used to
- * trap it) to `EventPluginHub`, which in turn will ask plugins if they want
- * to extract any synthetic events.
- *
- * - The `EventPluginHub` will then process each event by annotating them with
- * "dispatches", a sequence of listeners and IDs that care about that event.
- *
- * - The `EventPluginHub` then dispatches the events.
- *
- * Overview of React and the event system:
- *
- * +------------+ .
- * | DOM | .
- * +------------+ .
- * | .
- * v .
- * +------------+ .
- * | ReactEvent | .
- * | Listener | .
- * +------------+ . +-----------+
- * | . +--------+|SimpleEvent|
- * | . | |Plugin |
- * +-----|------+ . v +-----------+
- * | | | . +--------------+ +------------+
- * | +-----------.--->|EventPluginHub| | Event |
- * | | . | | +-----------+ | Propagators|
- * | ReactEvent | . | | |TapEvent | |------------|
- * | Emitter | . | |<---+|Plugin | |other plugin|
- * | | . | | +-----------+ | utilities |
- * | +-----------.--->| | +------------+
- * | | | . +--------------+
- * +-----|------+ . ^ +-----------+
- * | . | |Enter/Leave|
- * + . +-------+|Plugin |
- * +-------------+ . +-----------+
- * | application | .
- * |-------------| .
- * | | .
- * | | .
- * +-------------+ .
- * .
- * React Core . General Purpose Event Plugin System
- */
- var hasEventPageXY;
- var alreadyListeningTo = {};
- var isMonitoringScrollValue = false;
- var reactTopListenersCounter = 0;
- // For events like 'submit' which don't consistently bubble (which we trap at a
- // lower node than `document`), binding at `document` would cause duplicate
- // events so we don't include them here
- var topEventMapping = {
- topAbort: 'abort',
- topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',
- topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',
- topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',
- topBlur: 'blur',
- topCanPlay: 'canplay',
- topCanPlayThrough: 'canplaythrough',
- topChange: 'change',
- topClick: 'click',
- topCompositionEnd: 'compositionend',
- topCompositionStart: 'compositionstart',
- topCompositionUpdate: 'compositionupdate',
- topContextMenu: 'contextmenu',
- topCopy: 'copy',
- topCut: 'cut',
- topDoubleClick: 'dblclick',
- topDrag: 'drag',
- topDragEnd: 'dragend',
- topDragEnter: 'dragenter',
- topDragExit: 'dragexit',
- topDragLeave: 'dragleave',
- topDragOver: 'dragover',
- topDragStart: 'dragstart',
- topDrop: 'drop',
- topDurationChange: 'durationchange',
- topEmptied: 'emptied',
- topEncrypted: 'encrypted',
- topEnded: 'ended',
- topError: 'error',
- topFocus: 'focus',
- topInput: 'input',
- topKeyDown: 'keydown',
- topKeyPress: 'keypress',
- topKeyUp: 'keyup',
- topLoadedData: 'loadeddata',
- topLoadedMetadata: 'loadedmetadata',
- topLoadStart: 'loadstart',
- topMouseDown: 'mousedown',
- topMouseMove: 'mousemove',
- topMouseOut: 'mouseout',
- topMouseOver: 'mouseover',
- topMouseUp: 'mouseup',
- topPaste: 'paste',
- topPause: 'pause',
- topPlay: 'play',
- topPlaying: 'playing',
- topProgress: 'progress',
- topRateChange: 'ratechange',
- topScroll: 'scroll',
- topSeeked: 'seeked',
- topSeeking: 'seeking',
- topSelectionChange: 'selectionchange',
- topStalled: 'stalled',
- topSuspend: 'suspend',
- topTextInput: 'textInput',
- topTimeUpdate: 'timeupdate',
- topTouchCancel: 'touchcancel',
- topTouchEnd: 'touchend',
- topTouchMove: 'touchmove',
- topTouchStart: 'touchstart',
- topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',
- topVolumeChange: 'volumechange',
- topWaiting: 'waiting',
- topWheel: 'wheel'
- };
- /**
- * To ensure no conflicts with other potential React instances on the page
- */
- var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);
- function getListeningForDocument(mountAt) {
- // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`
- // directly.
- if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {
- mountAt[topListenersIDKey] = reactTopListenersCounter++;
- alreadyListeningTo[mountAt[topListenersIDKey]] = {};
- }
- return alreadyListeningTo[mountAt[topListenersIDKey]];
- }
- /**
- * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For
- * example:
- *
- * EventPluginHub.putListener('myID', 'onClick', myFunction);
- *
- * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'.
- *
- * @internal
- */
- var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
- /**
- * Injectable event backend
- */
- ReactEventListener: null,
- injection: {
- /**
- * @param {object} ReactEventListener
- */
- injectReactEventListener: function (ReactEventListener) {
- ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);
- ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;
- }
- },
- /**
- * Sets whether or not any created callbacks should be enabled.
- *
- * @param {boolean} enabled True if callbacks should be enabled.
- */
- setEnabled: function (enabled) {
- if (ReactBrowserEventEmitter.ReactEventListener) {
- ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);
- }
- },
- /**
- * @return {boolean} True if callbacks are enabled.
- */
- isEnabled: function () {
- return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());
- },
- /**
- * We listen for bubbled touch events on the document object.
- *
- * Firefox v8.01 (and possibly others) exhibited strange behavior when
- * mounting `onmousemove` events at some node that was not the document
- * element. The symptoms were that if your mouse is not moving over something
- * contained within that mount point (for example on the background) the
- * top-level listeners for `onmousemove` won't be called. However, if you
- * register the `mousemove` on the document object, then it will of course
- * catch all `mousemove`s. This along with iOS quirks, justifies restricting
- * top-level listeners to the document object only, at least for these
- * movement types of events and possibly all events.
- *
- * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
- *
- * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
- * they bubble to document.
- *
- * @param {string} registrationName Name of listener (e.g. `onClick`).
- * @param {object} contentDocumentHandle Document which owns the container
- */
- listenTo: function (registrationName, contentDocumentHandle) {
- var mountAt = contentDocumentHandle;
- var isListening = getListeningForDocument(mountAt);
- var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];
- for (var i = 0; i < dependencies.length; i++) {
- var dependency = dependencies[i];
- if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
- if (dependency === 'topWheel') {
- if (isEventSupported('wheel')) {
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);
- } else if (isEventSupported('mousewheel')) {
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);
- } else {
- // Firefox needs to capture a different mouse scroll event.
- // @see http://www.quirksmode.org/dom/events/tests/scroll.html
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);
- }
- } else if (dependency === 'topScroll') {
- if (isEventSupported('scroll', true)) {
- ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);
- } else {
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);
- }
- } else if (dependency === 'topFocus' || dependency === 'topBlur') {
- if (isEventSupported('focus', true)) {
- ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);
- ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);
- } else if (isEventSupported('focusin')) {
- // IE has `focusin` and `focusout` events which bubble.
- // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);
- }
- // to make sure blur and focus event listeners are only attached once
- isListening.topBlur = true;
- isListening.topFocus = true;
- } else if (topEventMapping.hasOwnProperty(dependency)) {
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);
- }
- isListening[dependency] = true;
- }
- }
- },
- trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {
- return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);
- },
- trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {
- return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);
- },
- /**
- * Protect against document.createEvent() returning null
- * Some popup blocker extensions appear to do this:
- * https://github.com/facebook/react/issues/6887
- */
- supportsEventPageXY: function () {
- if (!document.createEvent) {
- return false;
- }
- var ev = document.createEvent('MouseEvent');
- return ev != null && 'pageX' in ev;
- },
- /**
- * Listens to window scroll and resize events. We cache scroll values so that
- * application code can access them without triggering reflows.
- *
- * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
- * pageX/pageY isn't supported (legacy browsers).
- *
- * NOTE: Scroll events do not bubble.
- *
- * @see http://www.quirksmode.org/dom/events/scroll.html
- */
- ensureScrollValueMonitoring: function () {
- if (hasEventPageXY === undefined) {
- hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
- }
- if (!hasEventPageXY && !isMonitoringScrollValue) {
- var refresh = ViewportMetrics.refreshScrollValues;
- ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
- isMonitoringScrollValue = true;
- }
- }
- });
- module.exports = ReactBrowserEventEmitter;
- /***/ }),
- /* 33 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(14);
- var ReactNoopUpdateQueue = __webpack_require__(34);
- var canDefineProperty = __webpack_require__(26);
- var emptyObject = __webpack_require__(20);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- /**
- * Base class helpers for the updating state of a component.
- */
- function ReactComponent(props, context, updater) {
- this.props = props;
- this.context = context;
- this.refs = emptyObject;
- // We initialize the default updater but the real one gets injected by the
- // renderer.
- this.updater = updater || ReactNoopUpdateQueue;
- }
- ReactComponent.prototype.isReactComponent = {};
- /**
- * Sets a subset of the state. Always use this to mutate
- * state. You should treat `this.state` as immutable.
- *
- * There is no guarantee that `this.state` will be immediately updated, so
- * accessing `this.state` after calling this method may return the old value.
- *
- * There is no guarantee that calls to `setState` will run synchronously,
- * as they may eventually be batched together. You can provide an optional
- * callback that will be executed when the call to setState is actually
- * completed.
- *
- * When a function is provided to setState, it will be called at some point in
- * the future (not synchronously). It will be called with the up to date
- * component arguments (state, props, context). These values can be different
- * from this.* because your function may be called after receiveProps but before
- * shouldComponentUpdate, and this new state, props, and context will not yet be
- * assigned to this.
- *
- * @param {object|function} partialState Next partial state or function to
- * produce next partial state to be merged with current state.
- * @param {?function} callback Called after state is updated.
- * @final
- * @protected
- */
- ReactComponent.prototype.setState = function (partialState, callback) {
- !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;
- this.updater.enqueueSetState(this, partialState);
- if (callback) {
- this.updater.enqueueCallback(this, callback, 'setState');
- }
- };
- /**
- * Forces an update. This should only be invoked when it is known with
- * certainty that we are **not** in a DOM transaction.
- *
- * You may want to call this when you know that some deeper aspect of the
- * component's state has changed but `setState` was not called.
- *
- * This will not invoke `shouldComponentUpdate`, but it will invoke
- * `componentWillUpdate` and `componentDidUpdate`.
- *
- * @param {?function} callback Called after update is complete.
- * @final
- * @protected
- */
- ReactComponent.prototype.forceUpdate = function (callback) {
- this.updater.enqueueForceUpdate(this);
- if (callback) {
- this.updater.enqueueCallback(this, callback, 'forceUpdate');
- }
- };
- /**
- * Deprecated APIs. These APIs used to exist on classic React classes but since
- * we would like to deprecate them, we're not going to move them over to this
- * modern base class. Instead, we define a getter that warns if it's accessed.
- */
- if (process.env.NODE_ENV !== 'production') {
- var deprecatedAPIs = {
- isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
- replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
- };
- var defineDeprecationWarning = function (methodName, info) {
- if (canDefineProperty) {
- Object.defineProperty(ReactComponent.prototype, methodName, {
- get: function () {
- process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;
- return undefined;
- }
- });
- }
- };
- for (var fnName in deprecatedAPIs) {
- if (deprecatedAPIs.hasOwnProperty(fnName)) {
- defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
- }
- }
- }
- module.exports = ReactComponent;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 34 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var warning = __webpack_require__(2);
- function warnNoop(publicInstance, callerName) {
- if (process.env.NODE_ENV !== 'production') {
- var constructor = publicInstance.constructor;
- process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;
- }
- }
- /**
- * This is the abstract API for an update queue.
- */
- var ReactNoopUpdateQueue = {
- /**
- * Checks whether or not this composite component is mounted.
- * @param {ReactClass} publicInstance The instance we want to test.
- * @return {boolean} True if mounted, false otherwise.
- * @protected
- * @final
- */
- isMounted: function (publicInstance) {
- return false;
- },
- /**
- * Enqueue a callback that will be executed after all the pending updates
- * have processed.
- *
- * @param {ReactClass} publicInstance The instance to use as `this` context.
- * @param {?function} callback Called after state is updated.
- * @internal
- */
- enqueueCallback: function (publicInstance, callback) {},
- /**
- * Forces an update. This should only be invoked when it is known with
- * certainty that we are **not** in a DOM transaction.
- *
- * You may want to call this when you know that some deeper aspect of the
- * component's state has changed but `setState` was not called.
- *
- * This will not invoke `shouldComponentUpdate`, but it will invoke
- * `componentWillUpdate` and `componentDidUpdate`.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @internal
- */
- enqueueForceUpdate: function (publicInstance) {
- warnNoop(publicInstance, 'forceUpdate');
- },
- /**
- * Replaces all of the state. Always use this or `setState` to mutate state.
- * You should treat `this.state` as immutable.
- *
- * There is no guarantee that `this.state` will be immediately updated, so
- * accessing `this.state` after calling this method may return the old value.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object} completeState Next state.
- * @internal
- */
- enqueueReplaceState: function (publicInstance, completeState) {
- warnNoop(publicInstance, 'replaceState');
- },
- /**
- * Sets a subset of the state. This only exists because _pendingState is
- * internal. This provides a merging strategy that is not available to deep
- * properties which is confusing. TODO: Expose pendingState or don't use it
- * during the merge.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object} partialState Next partial state to be merged with state.
- * @internal
- */
- enqueueSetState: function (publicInstance, partialState) {
- warnNoop(publicInstance, 'setState');
- }
- };
- module.exports = ReactNoopUpdateQueue;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 35 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactErrorUtils = __webpack_require__(36);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- /**
- * Injected dependencies:
- */
- /**
- * - `ComponentTree`: [required] Module that can convert between React instances
- * and actual node references.
- */
- var ComponentTree;
- var TreeTraversal;
- var injection = {
- injectComponentTree: function (Injected) {
- ComponentTree = Injected;
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;
- }
- },
- injectTreeTraversal: function (Injected) {
- TreeTraversal = Injected;
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;
- }
- }
- };
- function isEndish(topLevelType) {
- return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';
- }
- function isMoveish(topLevelType) {
- return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';
- }
- function isStartish(topLevelType) {
- return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';
- }
- var validateEventDispatches;
- if (process.env.NODE_ENV !== 'production') {
- validateEventDispatches = function (event) {
- var dispatchListeners = event._dispatchListeners;
- var dispatchInstances = event._dispatchInstances;
- var listenersIsArr = Array.isArray(dispatchListeners);
- var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
- var instancesIsArr = Array.isArray(dispatchInstances);
- var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
- process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;
- };
- }
- /**
- * Dispatch the event to the listener.
- * @param {SyntheticEvent} event SyntheticEvent to handle
- * @param {boolean} simulated If the event is simulated (changes exn behavior)
- * @param {function} listener Application-level callback
- * @param {*} inst Internal component instance
- */
- function executeDispatch(event, simulated, listener, inst) {
- var type = event.type || 'unknown-event';
- event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);
- if (simulated) {
- ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);
- } else {
- ReactErrorUtils.invokeGuardedCallback(type, listener, event);
- }
- event.currentTarget = null;
- }
- /**
- * Standard/simple iteration through an event's collected dispatches.
- */
- function executeDispatchesInOrder(event, simulated) {
- var dispatchListeners = event._dispatchListeners;
- var dispatchInstances = event._dispatchInstances;
- if (process.env.NODE_ENV !== 'production') {
- validateEventDispatches(event);
- }
- if (Array.isArray(dispatchListeners)) {
- for (var i = 0; i < dispatchListeners.length; i++) {
- if (event.isPropagationStopped()) {
- break;
- }
- // Listeners and Instances are two parallel arrays that are always in sync.
- executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);
- }
- } else if (dispatchListeners) {
- executeDispatch(event, simulated, dispatchListeners, dispatchInstances);
- }
- event._dispatchListeners = null;
- event._dispatchInstances = null;
- }
- /**
- * Standard/simple iteration through an event's collected dispatches, but stops
- * at the first dispatch execution returning true, and returns that id.
- *
- * @return {?string} id of the first dispatch execution who's listener returns
- * true, or null if no listener returned true.
- */
- function executeDispatchesInOrderStopAtTrueImpl(event) {
- var dispatchListeners = event._dispatchListeners;
- var dispatchInstances = event._dispatchInstances;
- if (process.env.NODE_ENV !== 'production') {
- validateEventDispatches(event);
- }
- if (Array.isArray(dispatchListeners)) {
- for (var i = 0; i < dispatchListeners.length; i++) {
- if (event.isPropagationStopped()) {
- break;
- }
- // Listeners and Instances are two parallel arrays that are always in sync.
- if (dispatchListeners[i](event, dispatchInstances[i])) {
- return dispatchInstances[i];
- }
- }
- } else if (dispatchListeners) {
- if (dispatchListeners(event, dispatchInstances)) {
- return dispatchInstances;
- }
- }
- return null;
- }
- /**
- * @see executeDispatchesInOrderStopAtTrueImpl
- */
- function executeDispatchesInOrderStopAtTrue(event) {
- var ret = executeDispatchesInOrderStopAtTrueImpl(event);
- event._dispatchInstances = null;
- event._dispatchListeners = null;
- return ret;
- }
- /**
- * Execution of a "direct" dispatch - there must be at most one dispatch
- * accumulated on the event or it is considered an error. It doesn't really make
- * sense for an event with multiple dispatches (bubbled) to keep track of the
- * return values at each dispatch execution, but it does tend to make sense when
- * dealing with "direct" dispatches.
- *
- * @return {*} The return value of executing the single dispatch.
- */
- function executeDirectDispatch(event) {
- if (process.env.NODE_ENV !== 'production') {
- validateEventDispatches(event);
- }
- var dispatchListener = event._dispatchListeners;
- var dispatchInstance = event._dispatchInstances;
- !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;
- event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
- var res = dispatchListener ? dispatchListener(event) : null;
- event.currentTarget = null;
- event._dispatchListeners = null;
- event._dispatchInstances = null;
- return res;
- }
- /**
- * @param {SyntheticEvent} event
- * @return {boolean} True iff number of dispatches accumulated is greater than 0.
- */
- function hasDispatches(event) {
- return !!event._dispatchListeners;
- }
- /**
- * General utilities that are useful in creating custom Event Plugins.
- */
- var EventPluginUtils = {
- isEndish: isEndish,
- isMoveish: isMoveish,
- isStartish: isStartish,
- executeDirectDispatch: executeDirectDispatch,
- executeDispatchesInOrder: executeDispatchesInOrder,
- executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
- hasDispatches: hasDispatches,
- getInstanceFromNode: function (node) {
- return ComponentTree.getInstanceFromNode(node);
- },
- getNodeFromInstance: function (node) {
- return ComponentTree.getNodeFromInstance(node);
- },
- isAncestor: function (a, b) {
- return TreeTraversal.isAncestor(a, b);
- },
- getLowestCommonAncestor: function (a, b) {
- return TreeTraversal.getLowestCommonAncestor(a, b);
- },
- getParentInstance: function (inst) {
- return TreeTraversal.getParentInstance(inst);
- },
- traverseTwoPhase: function (target, fn, arg) {
- return TreeTraversal.traverseTwoPhase(target, fn, arg);
- },
- traverseEnterLeave: function (from, to, fn, argFrom, argTo) {
- return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);
- },
- injection: injection
- };
- module.exports = EventPluginUtils;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 36 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var caughtError = null;
- /**
- * Call a function while guarding against errors that happens within it.
- *
- * @param {String} name of the guard to use for logging or debugging
- * @param {Function} func The function to invoke
- * @param {*} a First argument
- * @param {*} b Second argument
- */
- function invokeGuardedCallback(name, func, a) {
- try {
- func(a);
- } catch (x) {
- if (caughtError === null) {
- caughtError = x;
- }
- }
- }
- var ReactErrorUtils = {
- invokeGuardedCallback: invokeGuardedCallback,
- /**
- * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event
- * handler are sure to be rethrown by rethrowCaughtError.
- */
- invokeGuardedCallbackWithCatch: invokeGuardedCallback,
- /**
- * During execution of guarded functions we will capture the first error which
- * we will rethrow to be handled by the top level error handler.
- */
- rethrowCaughtError: function () {
- if (caughtError) {
- var error = caughtError;
- caughtError = null;
- throw error;
- }
- }
- };
- if (process.env.NODE_ENV !== 'production') {
- /**
- * To help development we can get better devtools integration by simulating a
- * real browser event.
- */
- if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
- var fakeNode = document.createElement('react');
- ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {
- var boundFunc = func.bind(null, a);
- var evtType = 'react-' + name;
- fakeNode.addEventListener(evtType, boundFunc, false);
- var evt = document.createEvent('Event');
- evt.initEvent(evtType, false, false);
- fakeNode.dispatchEvent(evt);
- fakeNode.removeEventListener(evtType, boundFunc, false);
- };
- }
- }
- module.exports = ReactErrorUtils;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 37 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * Gets the target node from a native browser event by accounting for
- * inconsistencies in browser DOM APIs.
- *
- * @param {object} nativeEvent Native browser event.
- * @return {DOMEventTarget} Target node.
- */
- function getEventTarget(nativeEvent) {
- var target = nativeEvent.target || nativeEvent.srcElement || window;
- // Normalize SVG <use> element events #4963
- if (target.correspondingUseElement) {
- target = target.correspondingUseElement;
- }
- // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
- // @see http://www.quirksmode.org/js/events_properties.html
- return target.nodeType === 3 ? target.parentNode : target;
- }
- module.exports = getEventTarget;
- /***/ }),
- /* 38 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ExecutionEnvironment = __webpack_require__(6);
- var useHasFeature;
- if (ExecutionEnvironment.canUseDOM) {
- useHasFeature = document.implementation && document.implementation.hasFeature &&
- // always returns true in newer browsers as per the standard.
- // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
- document.implementation.hasFeature('', '') !== true;
- }
- /**
- * Checks if an event is supported in the current execution environment.
- *
- * NOTE: This will not work correctly for non-generic events such as `change`,
- * `reset`, `load`, `error`, and `select`.
- *
- * Borrows from Modernizr.
- *
- * @param {string} eventNameSuffix Event name, e.g. "click".
- * @param {?boolean} capture Check if the capture phase is supported.
- * @return {boolean} True if the event is supported.
- * @internal
- * @license Modernizr 3.0.0pre (Custom Build) | MIT
- */
- function isEventSupported(eventNameSuffix, capture) {
- if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {
- return false;
- }
- var eventName = 'on' + eventNameSuffix;
- var isSupported = eventName in document;
- if (!isSupported) {
- var element = document.createElement('div');
- element.setAttribute(eventName, 'return;');
- isSupported = typeof element[eventName] === 'function';
- }
- if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {
- // This is the only way to test support for the `wheel` event in IE9+.
- isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
- }
- return isSupported;
- }
- module.exports = isEventSupported;
- /***/ }),
- /* 39 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * Translation from modifier key to the associated property in the event.
- * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
- */
- var modifierKeyToProp = {
- 'Alt': 'altKey',
- 'Control': 'ctrlKey',
- 'Meta': 'metaKey',
- 'Shift': 'shiftKey'
- };
- // IE8 does not implement getModifierState so we simply map it to the only
- // modifier keys exposed by the event itself, does not support Lock-keys.
- // Currently, all major browsers except Chrome seems to support Lock-keys.
- function modifierStateGetter(keyArg) {
- var syntheticEvent = this;
- var nativeEvent = syntheticEvent.nativeEvent;
- if (nativeEvent.getModifierState) {
- return nativeEvent.getModifierState(keyArg);
- }
- var keyProp = modifierKeyToProp[keyArg];
- return keyProp ? !!nativeEvent[keyProp] : false;
- }
- function getEventModifierState(nativeEvent) {
- return modifierStateGetter;
- }
- module.exports = getEventModifierState;
- /***/ }),
- /* 40 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMLazyTree = __webpack_require__(19);
- var Danger = __webpack_require__(121);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactInstrumentation = __webpack_require__(9);
- var createMicrosoftUnsafeLocalFunction = __webpack_require__(42);
- var setInnerHTML = __webpack_require__(30);
- var setTextContent = __webpack_require__(64);
- function getNodeAfter(parentNode, node) {
- // Special case for text components, which return [open, close] comments
- // from getHostNode.
- if (Array.isArray(node)) {
- node = node[1];
- }
- return node ? node.nextSibling : parentNode.firstChild;
- }
- /**
- * Inserts `childNode` as a child of `parentNode` at the `index`.
- *
- * @param {DOMElement} parentNode Parent node in which to insert.
- * @param {DOMElement} childNode Child node to insert.
- * @param {number} index Index at which to insert the child.
- * @internal
- */
- var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {
- // We rely exclusively on `insertBefore(node, null)` instead of also using
- // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so
- // we are careful to use `null`.)
- parentNode.insertBefore(childNode, referenceNode);
- });
- function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {
- DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);
- }
- function moveChild(parentNode, childNode, referenceNode) {
- if (Array.isArray(childNode)) {
- moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);
- } else {
- insertChildAt(parentNode, childNode, referenceNode);
- }
- }
- function removeChild(parentNode, childNode) {
- if (Array.isArray(childNode)) {
- var closingComment = childNode[1];
- childNode = childNode[0];
- removeDelimitedText(parentNode, childNode, closingComment);
- parentNode.removeChild(closingComment);
- }
- parentNode.removeChild(childNode);
- }
- function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {
- var node = openingComment;
- while (true) {
- var nextNode = node.nextSibling;
- insertChildAt(parentNode, node, referenceNode);
- if (node === closingComment) {
- break;
- }
- node = nextNode;
- }
- }
- function removeDelimitedText(parentNode, startNode, closingComment) {
- while (true) {
- var node = startNode.nextSibling;
- if (node === closingComment) {
- // The closing comment is removed by ReactMultiChild.
- break;
- } else {
- parentNode.removeChild(node);
- }
- }
- }
- function replaceDelimitedText(openingComment, closingComment, stringText) {
- var parentNode = openingComment.parentNode;
- var nodeAfterComment = openingComment.nextSibling;
- if (nodeAfterComment === closingComment) {
- // There are no text nodes between the opening and closing comments; insert
- // a new one if stringText isn't empty.
- if (stringText) {
- insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);
- }
- } else {
- if (stringText) {
- // Set the text content of the first node after the opening comment, and
- // remove all following nodes up until the closing comment.
- setTextContent(nodeAfterComment, stringText);
- removeDelimitedText(parentNode, nodeAfterComment, closingComment);
- } else {
- removeDelimitedText(parentNode, openingComment, closingComment);
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,
- type: 'replace text',
- payload: stringText
- });
- }
- }
- var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;
- if (process.env.NODE_ENV !== 'production') {
- dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {
- Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);
- if (prevInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: prevInstance._debugID,
- type: 'replace with',
- payload: markup.toString()
- });
- } else {
- var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);
- if (nextInstance._debugID !== 0) {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: nextInstance._debugID,
- type: 'mount',
- payload: markup.toString()
- });
- }
- }
- };
- }
- /**
- * Operations for updating with DOM children.
- */
- var DOMChildrenOperations = {
- dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
- replaceDelimitedText: replaceDelimitedText,
- /**
- * Updates a component's children by processing a series of updates. The
- * update configurations are each expected to have a `parentNode` property.
- *
- * @param {array<object>} updates List of update configurations.
- * @internal
- */
- processUpdates: function (parentNode, updates) {
- if (process.env.NODE_ENV !== 'production') {
- var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;
- }
- for (var k = 0; k < updates.length; k++) {
- var update = updates[k];
- switch (update.type) {
- case 'INSERT_MARKUP':
- insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: parentNodeDebugID,
- type: 'insert child',
- payload: { toIndex: update.toIndex, content: update.content.toString() }
- });
- }
- break;
- case 'MOVE_EXISTING':
- moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: parentNodeDebugID,
- type: 'move child',
- payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }
- });
- }
- break;
- case 'SET_MARKUP':
- setInnerHTML(parentNode, update.content);
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: parentNodeDebugID,
- type: 'replace children',
- payload: update.content.toString()
- });
- }
- break;
- case 'TEXT_CONTENT':
- setTextContent(parentNode, update.content);
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: parentNodeDebugID,
- type: 'replace text',
- payload: update.content.toString()
- });
- }
- break;
- case 'REMOVE_NODE':
- removeChild(parentNode, update.fromNode);
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: parentNodeDebugID,
- type: 'remove child',
- payload: { fromIndex: update.fromIndex }
- });
- }
- break;
- }
- }
- }
- };
- module.exports = DOMChildrenOperations;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 41 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMNamespaces = {
- html: 'http://www.w3.org/1999/xhtml',
- mathml: 'http://www.w3.org/1998/Math/MathML',
- svg: 'http://www.w3.org/2000/svg'
- };
- module.exports = DOMNamespaces;
- /***/ }),
- /* 42 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /* globals MSApp */
- /**
- * Create a function which has 'unsafe' privileges (required by windows8 apps)
- */
- var createMicrosoftUnsafeLocalFunction = function (func) {
- if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
- return function (arg0, arg1, arg2, arg3) {
- MSApp.execUnsafeLocalFunction(function () {
- return func(arg0, arg1, arg2, arg3);
- });
- };
- } else {
- return func;
- }
- };
- module.exports = createMicrosoftUnsafeLocalFunction;
- /***/ }),
- /* 43 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactPropTypesSecret = __webpack_require__(68);
- var propTypesFactory = __webpack_require__(139);
- var React = __webpack_require__(17);
- var PropTypes = propTypesFactory(React.isValidElement);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var hasReadOnlyValue = {
- 'button': true,
- 'checkbox': true,
- 'image': true,
- 'hidden': true,
- 'radio': true,
- 'reset': true,
- 'submit': true
- };
- function _assertSingleLink(inputProps) {
- !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;
- }
- function _assertValueLink(inputProps) {
- _assertSingleLink(inputProps);
- !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\'t want to use valueLink.') : _prodInvariant('88') : void 0;
- }
- function _assertCheckedLink(inputProps) {
- _assertSingleLink(inputProps);
- !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\'t want to use checkedLink') : _prodInvariant('89') : void 0;
- }
- var propTypes = {
- value: function (props, propName, componentName) {
- if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {
- return null;
- }
- return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
- },
- checked: function (props, propName, componentName) {
- if (!props[propName] || props.onChange || props.readOnly || props.disabled) {
- return null;
- }
- return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
- },
- onChange: PropTypes.func
- };
- var loggedTypeFailures = {};
- function getDeclarationErrorAddendum(owner) {
- if (owner) {
- var name = owner.getName();
- if (name) {
- return ' Check the render method of `' + name + '`.';
- }
- }
- return '';
- }
- /**
- * Provide a linked `value` attribute for controlled forms. You should not use
- * this outside of the ReactDOM controlled form components.
- */
- var LinkedValueUtils = {
- checkPropTypes: function (tagName, props, owner) {
- for (var propName in propTypes) {
- if (propTypes.hasOwnProperty(propName)) {
- var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);
- }
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error.message] = true;
- var addendum = getDeclarationErrorAddendum(owner);
- process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;
- }
- }
- },
- /**
- * @param {object} inputProps Props for form component
- * @return {*} current value of the input either from value prop or link.
- */
- getValue: function (inputProps) {
- if (inputProps.valueLink) {
- _assertValueLink(inputProps);
- return inputProps.valueLink.value;
- }
- return inputProps.value;
- },
- /**
- * @param {object} inputProps Props for form component
- * @return {*} current checked status of the input either from checked prop
- * or link.
- */
- getChecked: function (inputProps) {
- if (inputProps.checkedLink) {
- _assertCheckedLink(inputProps);
- return inputProps.checkedLink.value;
- }
- return inputProps.checked;
- },
- /**
- * @param {object} inputProps Props for form component
- * @param {SyntheticEvent} event change event to handle
- */
- executeOnChange: function (inputProps, event) {
- if (inputProps.valueLink) {
- _assertValueLink(inputProps);
- return inputProps.valueLink.requestChange(event.target.value);
- } else if (inputProps.checkedLink) {
- _assertCheckedLink(inputProps);
- return inputProps.checkedLink.requestChange(event.target.checked);
- } else if (inputProps.onChange) {
- return inputProps.onChange.call(undefined, event);
- }
- }
- };
- module.exports = LinkedValueUtils;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 44 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- var injected = false;
- var ReactComponentEnvironment = {
- /**
- * Optionally injectable hook for swapping out mount images in the middle of
- * the tree.
- */
- replaceNodeWithMarkup: null,
- /**
- * Optionally injectable hook for processing a queue of child updates. Will
- * later move into MultiChildComponents.
- */
- processChildrenUpdates: null,
- injection: {
- injectEnvironment: function (environment) {
- !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;
- ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;
- ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;
- injected = true;
- }
- }
- };
- module.exports = ReactComponentEnvironment;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 45 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- *
- */
- /*eslint-disable no-self-compare */
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- /**
- * inlined Object.is polyfill to avoid requiring consumers ship their own
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
- */
- function is(x, y) {
- // SameValue algorithm
- if (x === y) {
- // Steps 1-5, 7-10
- // Steps 6.b-6.e: +0 != -0
- // Added the nonzero y check to make Flow happy, but it is redundant
- return x !== 0 || y !== 0 || 1 / x === 1 / y;
- } else {
- // Step 6.a: NaN == NaN
- return x !== x && y !== y;
- }
- }
- /**
- * Performs equality by iterating through keys on an object and returning false
- * when any key has values which are not strictly equal between the arguments.
- * Returns true when the values of all keys are strictly equal.
- */
- function shallowEqual(objA, objB) {
- if (is(objA, objB)) {
- return true;
- }
- if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
- return false;
- }
- var keysA = Object.keys(objA);
- var keysB = Object.keys(objB);
- if (keysA.length !== keysB.length) {
- return false;
- }
- // Test for A's keys different from B.
- for (var i = 0; i < keysA.length; i++) {
- if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
- return false;
- }
- }
- return true;
- }
- module.exports = shallowEqual;
- /***/ }),
- /* 46 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * Given a `prevElement` and `nextElement`, determines if the existing
- * instance should be updated as opposed to being destroyed or replaced by a new
- * instance. Both arguments are elements. This ensures that this logic can
- * operate on stateless trees without any backing instance.
- *
- * @param {?object} prevElement
- * @param {?object} nextElement
- * @return {boolean} True if the existing instance should be updated.
- * @protected
- */
- function shouldUpdateReactComponent(prevElement, nextElement) {
- var prevEmpty = prevElement === null || prevElement === false;
- var nextEmpty = nextElement === null || nextElement === false;
- if (prevEmpty || nextEmpty) {
- return prevEmpty === nextEmpty;
- }
- var prevType = typeof prevElement;
- var nextType = typeof nextElement;
- if (prevType === 'string' || prevType === 'number') {
- return nextType === 'string' || nextType === 'number';
- } else {
- return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;
- }
- }
- module.exports = shouldUpdateReactComponent;
- /***/ }),
- /* 47 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * Escape and wrap key so it is safe to use as a reactid
- *
- * @param {string} key to be escaped.
- * @return {string} the escaped key.
- */
- function escape(key) {
- var escapeRegex = /[=:]/g;
- var escaperLookup = {
- '=': '=0',
- ':': '=2'
- };
- var escapedString = ('' + key).replace(escapeRegex, function (match) {
- return escaperLookup[match];
- });
- return '$' + escapedString;
- }
- /**
- * Unescape and unwrap key for human-readable display
- *
- * @param {string} key to unescape.
- * @return {string} the unescaped key.
- */
- function unescape(key) {
- var unescapeRegex = /(=0|=2)/g;
- var unescaperLookup = {
- '=0': '=',
- '=2': ':'
- };
- var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
- return ('' + keySubstring).replace(unescapeRegex, function (match) {
- return unescaperLookup[match];
- });
- }
- var KeyEscapeUtils = {
- escape: escape,
- unescape: unescape
- };
- module.exports = KeyEscapeUtils;
- /***/ }),
- /* 48 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactCurrentOwner = __webpack_require__(10);
- var ReactInstanceMap = __webpack_require__(24);
- var ReactInstrumentation = __webpack_require__(9);
- var ReactUpdates = __webpack_require__(11);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- function enqueueUpdate(internalInstance) {
- ReactUpdates.enqueueUpdate(internalInstance);
- }
- function formatUnexpectedArgument(arg) {
- var type = typeof arg;
- if (type !== 'object') {
- return type;
- }
- var displayName = arg.constructor && arg.constructor.name || type;
- var keys = Object.keys(arg);
- if (keys.length > 0 && keys.length < 20) {
- return displayName + ' (keys: ' + keys.join(', ') + ')';
- }
- return displayName;
- }
- function getInternalInstanceReadyForUpdate(publicInstance, callerName) {
- var internalInstance = ReactInstanceMap.get(publicInstance);
- if (!internalInstance) {
- if (process.env.NODE_ENV !== 'production') {
- var ctor = publicInstance.constructor;
- // Only warn when we have a callerName. Otherwise we should be silent.
- // We're probably calling from enqueueCallback. We don't want to warn
- // there because we already warned for the corresponding lifecycle method.
- process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;
- }
- return null;
- }
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;
- }
- return internalInstance;
- }
- /**
- * ReactUpdateQueue allows for state updates to be scheduled into a later
- * reconciliation step.
- */
- var ReactUpdateQueue = {
- /**
- * Checks whether or not this composite component is mounted.
- * @param {ReactClass} publicInstance The instance we want to test.
- * @return {boolean} True if mounted, false otherwise.
- * @protected
- * @final
- */
- isMounted: function (publicInstance) {
- if (process.env.NODE_ENV !== 'production') {
- var owner = ReactCurrentOwner.current;
- if (owner !== null) {
- process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;
- owner._warnedAboutRefsInRender = true;
- }
- }
- var internalInstance = ReactInstanceMap.get(publicInstance);
- if (internalInstance) {
- // During componentWillMount and render this will still be null but after
- // that will always render to something. At least for now. So we can use
- // this hack.
- return !!internalInstance._renderedComponent;
- } else {
- return false;
- }
- },
- /**
- * Enqueue a callback that will be executed after all the pending updates
- * have processed.
- *
- * @param {ReactClass} publicInstance The instance to use as `this` context.
- * @param {?function} callback Called after state is updated.
- * @param {string} callerName Name of the calling function in the public API.
- * @internal
- */
- enqueueCallback: function (publicInstance, callback, callerName) {
- ReactUpdateQueue.validateCallback(callback, callerName);
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);
- // Previously we would throw an error if we didn't have an internal
- // instance. Since we want to make it a no-op instead, we mirror the same
- // behavior we have in other enqueue* methods.
- // We also need to ignore callbacks in componentWillMount. See
- // enqueueUpdates.
- if (!internalInstance) {
- return null;
- }
- if (internalInstance._pendingCallbacks) {
- internalInstance._pendingCallbacks.push(callback);
- } else {
- internalInstance._pendingCallbacks = [callback];
- }
- // TODO: The callback here is ignored when setState is called from
- // componentWillMount. Either fix it or disallow doing so completely in
- // favor of getInitialState. Alternatively, we can disallow
- // componentWillMount during server-side rendering.
- enqueueUpdate(internalInstance);
- },
- enqueueCallbackInternal: function (internalInstance, callback) {
- if (internalInstance._pendingCallbacks) {
- internalInstance._pendingCallbacks.push(callback);
- } else {
- internalInstance._pendingCallbacks = [callback];
- }
- enqueueUpdate(internalInstance);
- },
- /**
- * Forces an update. This should only be invoked when it is known with
- * certainty that we are **not** in a DOM transaction.
- *
- * You may want to call this when you know that some deeper aspect of the
- * component's state has changed but `setState` was not called.
- *
- * This will not invoke `shouldComponentUpdate`, but it will invoke
- * `componentWillUpdate` and `componentDidUpdate`.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @internal
- */
- enqueueForceUpdate: function (publicInstance) {
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');
- if (!internalInstance) {
- return;
- }
- internalInstance._pendingForceUpdate = true;
- enqueueUpdate(internalInstance);
- },
- /**
- * Replaces all of the state. Always use this or `setState` to mutate state.
- * You should treat `this.state` as immutable.
- *
- * There is no guarantee that `this.state` will be immediately updated, so
- * accessing `this.state` after calling this method may return the old value.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object} completeState Next state.
- * @internal
- */
- enqueueReplaceState: function (publicInstance, completeState, callback) {
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');
- if (!internalInstance) {
- return;
- }
- internalInstance._pendingStateQueue = [completeState];
- internalInstance._pendingReplaceState = true;
- // Future-proof 15.5
- if (callback !== undefined && callback !== null) {
- ReactUpdateQueue.validateCallback(callback, 'replaceState');
- if (internalInstance._pendingCallbacks) {
- internalInstance._pendingCallbacks.push(callback);
- } else {
- internalInstance._pendingCallbacks = [callback];
- }
- }
- enqueueUpdate(internalInstance);
- },
- /**
- * Sets a subset of the state. This only exists because _pendingState is
- * internal. This provides a merging strategy that is not available to deep
- * properties which is confusing. TODO: Expose pendingState or don't use it
- * during the merge.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object} partialState Next partial state to be merged with state.
- * @internal
- */
- enqueueSetState: function (publicInstance, partialState) {
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onSetState();
- process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;
- }
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');
- if (!internalInstance) {
- return;
- }
- var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);
- queue.push(partialState);
- enqueueUpdate(internalInstance);
- },
- enqueueElementInternal: function (internalInstance, nextElement, nextContext) {
- internalInstance._pendingElement = nextElement;
- // TODO: introduce _pendingContext instead of setting it directly.
- internalInstance._context = nextContext;
- enqueueUpdate(internalInstance);
- },
- validateCallback: function (callback, callerName) {
- !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;
- }
- };
- module.exports = ReactUpdateQueue;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 49 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var emptyFunction = __webpack_require__(8);
- var warning = __webpack_require__(2);
- var validateDOMNesting = emptyFunction;
- if (process.env.NODE_ENV !== 'production') {
- // This validation code was written based on the HTML5 parsing spec:
- // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
- //
- // Note: this does not catch all invalid nesting, nor does it try to (as it's
- // not clear what practical benefit doing so provides); instead, we warn only
- // for cases where the parser will give a parse tree differing from what React
- // intended. For example, <b><div></div></b> is invalid but we don't warn
- // because it still parses correctly; we do warn for other cases like nested
- // <p> tags where the beginning of the second element implicitly closes the
- // first, causing a confusing mess.
- // https://html.spec.whatwg.org/multipage/syntax.html#special
- var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];
- // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
- var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',
- // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
- // TODO: Distinguish by namespace here -- for <title>, including it here
- // errs on the side of fewer warnings
- 'foreignObject', 'desc', 'title'];
- // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope
- var buttonScopeTags = inScopeTags.concat(['button']);
- // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags
- var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];
- var emptyAncestorInfo = {
- current: null,
- formTag: null,
- aTagInScope: null,
- buttonTagInScope: null,
- nobrTagInScope: null,
- pTagInButtonScope: null,
- listItemTagAutoclosing: null,
- dlItemTagAutoclosing: null
- };
- var updatedAncestorInfo = function (oldInfo, tag, instance) {
- var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);
- var info = { tag: tag, instance: instance };
- if (inScopeTags.indexOf(tag) !== -1) {
- ancestorInfo.aTagInScope = null;
- ancestorInfo.buttonTagInScope = null;
- ancestorInfo.nobrTagInScope = null;
- }
- if (buttonScopeTags.indexOf(tag) !== -1) {
- ancestorInfo.pTagInButtonScope = null;
- }
- // See rules for 'li', 'dd', 'dt' start tags in
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
- if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {
- ancestorInfo.listItemTagAutoclosing = null;
- ancestorInfo.dlItemTagAutoclosing = null;
- }
- ancestorInfo.current = info;
- if (tag === 'form') {
- ancestorInfo.formTag = info;
- }
- if (tag === 'a') {
- ancestorInfo.aTagInScope = info;
- }
- if (tag === 'button') {
- ancestorInfo.buttonTagInScope = info;
- }
- if (tag === 'nobr') {
- ancestorInfo.nobrTagInScope = info;
- }
- if (tag === 'p') {
- ancestorInfo.pTagInButtonScope = info;
- }
- if (tag === 'li') {
- ancestorInfo.listItemTagAutoclosing = info;
- }
- if (tag === 'dd' || tag === 'dt') {
- ancestorInfo.dlItemTagAutoclosing = info;
- }
- return ancestorInfo;
- };
- /**
- * Returns whether
- */
- var isTagValidWithParent = function (tag, parentTag) {
- // First, let's check if we're in an unusual parsing mode...
- switch (parentTag) {
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
- case 'select':
- return tag === 'option' || tag === 'optgroup' || tag === '#text';
- case 'optgroup':
- return tag === 'option' || tag === '#text';
- // Strictly speaking, seeing an <option> doesn't mean we're in a <select>
- // but
- case 'option':
- return tag === '#text';
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
- // No special behavior since these rules fall back to "in body" mode for
- // all except special table nodes which cause bad parsing behavior anyway.
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
- case 'tr':
- return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
- case 'tbody':
- case 'thead':
- case 'tfoot':
- return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
- case 'colgroup':
- return tag === 'col' || tag === 'template';
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
- case 'table':
- return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
- case 'head':
- return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';
- // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
- case 'html':
- return tag === 'head' || tag === 'body';
- case '#document':
- return tag === 'html';
- }
- // Probably in the "in body" parsing mode, so we outlaw only tag combos
- // where the parsing rules cause implicit opens or closes to be added.
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
- switch (tag) {
- case 'h1':
- case 'h2':
- case 'h3':
- case 'h4':
- case 'h5':
- case 'h6':
- return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';
- case 'rp':
- case 'rt':
- return impliedEndTags.indexOf(parentTag) === -1;
- case 'body':
- case 'caption':
- case 'col':
- case 'colgroup':
- case 'frame':
- case 'head':
- case 'html':
- case 'tbody':
- case 'td':
- case 'tfoot':
- case 'th':
- case 'thead':
- case 'tr':
- // These tags are only valid with a few parents that have special child
- // parsing rules -- if we're down here, then none of those matched and
- // so we allow it only if we don't know what the parent is, as all other
- // cases are invalid.
- return parentTag == null;
- }
- return true;
- };
- /**
- * Returns whether
- */
- var findInvalidAncestorForTag = function (tag, ancestorInfo) {
- switch (tag) {
- case 'address':
- case 'article':
- case 'aside':
- case 'blockquote':
- case 'center':
- case 'details':
- case 'dialog':
- case 'dir':
- case 'div':
- case 'dl':
- case 'fieldset':
- case 'figcaption':
- case 'figure':
- case 'footer':
- case 'header':
- case 'hgroup':
- case 'main':
- case 'menu':
- case 'nav':
- case 'ol':
- case 'p':
- case 'section':
- case 'summary':
- case 'ul':
- case 'pre':
- case 'listing':
- case 'table':
- case 'hr':
- case 'xmp':
- case 'h1':
- case 'h2':
- case 'h3':
- case 'h4':
- case 'h5':
- case 'h6':
- return ancestorInfo.pTagInButtonScope;
- case 'form':
- return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
- case 'li':
- return ancestorInfo.listItemTagAutoclosing;
- case 'dd':
- case 'dt':
- return ancestorInfo.dlItemTagAutoclosing;
- case 'button':
- return ancestorInfo.buttonTagInScope;
- case 'a':
- // Spec says something about storing a list of markers, but it sounds
- // equivalent to this check.
- return ancestorInfo.aTagInScope;
- case 'nobr':
- return ancestorInfo.nobrTagInScope;
- }
- return null;
- };
- /**
- * Given a ReactCompositeComponent instance, return a list of its recursive
- * owners, starting at the root and ending with the instance itself.
- */
- var findOwnerStack = function (instance) {
- if (!instance) {
- return [];
- }
- var stack = [];
- do {
- stack.push(instance);
- } while (instance = instance._currentElement._owner);
- stack.reverse();
- return stack;
- };
- var didWarn = {};
- validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {
- ancestorInfo = ancestorInfo || emptyAncestorInfo;
- var parentInfo = ancestorInfo.current;
- var parentTag = parentInfo && parentInfo.tag;
- if (childText != null) {
- process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;
- childTag = '#text';
- }
- var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;
- var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
- var problematic = invalidParent || invalidAncestor;
- if (problematic) {
- var ancestorTag = problematic.tag;
- var ancestorInstance = problematic.instance;
- var childOwner = childInstance && childInstance._currentElement._owner;
- var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;
- var childOwners = findOwnerStack(childOwner);
- var ancestorOwners = findOwnerStack(ancestorOwner);
- var minStackLen = Math.min(childOwners.length, ancestorOwners.length);
- var i;
- var deepestCommon = -1;
- for (i = 0; i < minStackLen; i++) {
- if (childOwners[i] === ancestorOwners[i]) {
- deepestCommon = i;
- } else {
- break;
- }
- }
- var UNKNOWN = '(unknown)';
- var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {
- return inst.getName() || UNKNOWN;
- });
- var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {
- return inst.getName() || UNKNOWN;
- });
- var ownerInfo = [].concat(
- // If the parent and child instances have a common owner ancestor, start
- // with that -- otherwise we just start with the parent's owners.
- deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,
- // If we're warning about an invalid (non-parent) ancestry, add '...'
- invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');
- var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;
- if (didWarn[warnKey]) {
- return;
- }
- didWarn[warnKey] = true;
- var tagDisplayName = childTag;
- var whitespaceInfo = '';
- if (childTag === '#text') {
- if (/\S/.test(childText)) {
- tagDisplayName = 'Text nodes';
- } else {
- tagDisplayName = 'Whitespace text nodes';
- whitespaceInfo = ' Make sure you don\'t have any extra whitespace between tags on ' + 'each line of your source code.';
- }
- } else {
- tagDisplayName = '<' + childTag + '>';
- }
- if (invalidParent) {
- var info = '';
- if (ancestorTag === 'table' && childTag === 'tr') {
- info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';
- }
- process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;
- } else {
- process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;
- }
- }
- };
- validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;
- // For testing
- validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {
- ancestorInfo = ancestorInfo || emptyAncestorInfo;
- var parentInfo = ancestorInfo.current;
- var parentTag = parentInfo && parentInfo.tag;
- return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);
- };
- }
- module.exports = validateDOMNesting;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 50 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * `charCode` represents the actual "character code" and is safe to use with
- * `String.fromCharCode`. As such, only keys that correspond to printable
- * characters produce a valid `charCode`, the only exception to this is Enter.
- * The Tab-key is considered non-printable and does not have a `charCode`,
- * presumably because it does not produce a tab-character in browsers.
- *
- * @param {object} nativeEvent Native browser event.
- * @return {number} Normalized `charCode` property.
- */
- function getEventCharCode(nativeEvent) {
- var charCode;
- var keyCode = nativeEvent.keyCode;
- if ('charCode' in nativeEvent) {
- charCode = nativeEvent.charCode;
- // FF does not set `charCode` for the Enter-key, check against `keyCode`.
- if (charCode === 0 && keyCode === 13) {
- charCode = 13;
- }
- } else {
- // IE8 does not implement `charCode`, but `keyCode` has the correct value.
- charCode = keyCode;
- }
- // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.
- // Must not discard the (non-)printable Enter-key.
- if (charCode >= 32 || charCode === 13) {
- return charCode;
- }
- return 0;
- }
- module.exports = getEventCharCode;
- /***/ }),
- /* 51 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- // The Symbol used to tag the ReactElement type. If there is no native Symbol
- // nor polyfill, then a plain number is used for performance.
- var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
- module.exports = REACT_ELEMENT_TYPE;
- /***/ }),
- /* 52 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /* global Symbol */
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
- /**
- * Returns the iterator method function contained on the iterable object.
- *
- * Be sure to invoke the function with the iterable as context:
- *
- * var iteratorFn = getIteratorFn(myIterable);
- * if (iteratorFn) {
- * var iterator = iteratorFn.call(myIterable);
- * ...
- * }
- *
- * @param {?object} maybeIterable
- * @return {?function}
- */
- function getIteratorFn(maybeIterable) {
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
- if (typeof iteratorFn === 'function') {
- return iteratorFn;
- }
- }
- module.exports = getIteratorFn;
- /***/ }),
- /* 53 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactPropTypeLocationNames = {};
- if (process.env.NODE_ENV !== 'production') {
- ReactPropTypeLocationNames = {
- prop: 'prop',
- context: 'context',
- childContext: 'child context'
- };
- }
- module.exports = ReactPropTypeLocationNames;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 54 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * ReactElementValidator provides a wrapper around a element factory
- * which validates the props passed to the element. This is intended to be
- * used only in DEV and could be replaced by a static type checker for languages
- * that support it.
- */
- var ReactCurrentOwner = __webpack_require__(10);
- var ReactComponentTreeHook = __webpack_require__(7);
- var ReactElement = __webpack_require__(15);
- var checkReactTypeSpec = __webpack_require__(93);
- var canDefineProperty = __webpack_require__(26);
- var getIteratorFn = __webpack_require__(52);
- var warning = __webpack_require__(2);
- function getDeclarationErrorAddendum() {
- if (ReactCurrentOwner.current) {
- var name = ReactCurrentOwner.current.getName();
- if (name) {
- return ' Check the render method of `' + name + '`.';
- }
- }
- return '';
- }
- function getSourceInfoErrorAddendum(elementProps) {
- if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {
- var source = elementProps.__source;
- var fileName = source.fileName.replace(/^.*[\\\/]/, '');
- var lineNumber = source.lineNumber;
- return ' Check your code at ' + fileName + ':' + lineNumber + '.';
- }
- return '';
- }
- /**
- * Warn if there's no key explicitly set on dynamic arrays of children or
- * object keys are not valid. This allows us to keep track of children between
- * updates.
- */
- var ownerHasKeyUseWarning = {};
- function getCurrentComponentErrorInfo(parentType) {
- var info = getDeclarationErrorAddendum();
- if (!info) {
- var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
- if (parentName) {
- info = ' Check the top-level render call using <' + parentName + '>.';
- }
- }
- return info;
- }
- /**
- * Warn if the element doesn't have an explicit key assigned to it.
- * This element is in an array. The array could grow and shrink or be
- * reordered. All children that haven't already been validated are required to
- * have a "key" property assigned to it. Error statuses are cached so a warning
- * will only be shown once.
- *
- * @internal
- * @param {ReactElement} element Element that requires a key.
- * @param {*} parentType element's parent's type.
- */
- function validateExplicitKey(element, parentType) {
- if (!element._store || element._store.validated || element.key != null) {
- return;
- }
- element._store.validated = true;
- var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});
- var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
- if (memoizer[currentComponentErrorInfo]) {
- return;
- }
- memoizer[currentComponentErrorInfo] = true;
- // Usually the current owner is the offender, but if it accepts children as a
- // property, it may be the creator of the child that's responsible for
- // assigning it a key.
- var childOwner = '';
- if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
- // Give the component that originally created this child.
- childOwner = ' It was passed a child from ' + element._owner.getName() + '.';
- }
- process.env.NODE_ENV !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0;
- }
- /**
- * Ensure that every element either is passed in a static location, in an
- * array with an explicit keys property defined, or in an object literal
- * with valid key property.
- *
- * @internal
- * @param {ReactNode} node Statically passed child of any type.
- * @param {*} parentType node's parent's type.
- */
- function validateChildKeys(node, parentType) {
- if (typeof node !== 'object') {
- return;
- }
- if (Array.isArray(node)) {
- for (var i = 0; i < node.length; i++) {
- var child = node[i];
- if (ReactElement.isValidElement(child)) {
- validateExplicitKey(child, parentType);
- }
- }
- } else if (ReactElement.isValidElement(node)) {
- // This element was passed in a valid location.
- if (node._store) {
- node._store.validated = true;
- }
- } else if (node) {
- var iteratorFn = getIteratorFn(node);
- // Entry iterators provide implicit keys.
- if (iteratorFn) {
- if (iteratorFn !== node.entries) {
- var iterator = iteratorFn.call(node);
- var step;
- while (!(step = iterator.next()).done) {
- if (ReactElement.isValidElement(step.value)) {
- validateExplicitKey(step.value, parentType);
- }
- }
- }
- }
- }
- }
- /**
- * Given an element, validate that its props follow the propTypes definition,
- * provided by the type.
- *
- * @param {ReactElement} element
- */
- function validatePropTypes(element) {
- var componentClass = element.type;
- if (typeof componentClass !== 'function') {
- return;
- }
- var name = componentClass.displayName || componentClass.name;
- if (componentClass.propTypes) {
- checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null);
- }
- if (typeof componentClass.getDefaultProps === 'function') {
- process.env.NODE_ENV !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;
- }
- }
- var ReactElementValidator = {
- createElement: function (type, props, children) {
- var validType = typeof type === 'string' || typeof type === 'function';
- // We warn in this case but don't throw. We expect the element creation to
- // succeed and there will likely be errors in render.
- if (!validType) {
- if (typeof type !== 'function' && typeof type !== 'string') {
- var info = '';
- if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
- info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.';
- }
- var sourceInfo = getSourceInfoErrorAddendum(props);
- if (sourceInfo) {
- info += sourceInfo;
- } else {
- info += getDeclarationErrorAddendum();
- }
- info += ReactComponentTreeHook.getCurrentStackAddendum();
- process.env.NODE_ENV !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0;
- }
- }
- var element = ReactElement.createElement.apply(this, arguments);
- // The result can be nullish if a mock or a custom function is used.
- // TODO: Drop this when these are no longer allowed as the type argument.
- if (element == null) {
- return element;
- }
- // Skip key warning if the type isn't valid since our key validation logic
- // doesn't expect a non-string/function type and can throw confusing errors.
- // We don't want exception behavior to differ between dev and prod.
- // (Rendering will throw with a helpful message and as soon as the type is
- // fixed, the key warnings will appear.)
- if (validType) {
- for (var i = 2; i < arguments.length; i++) {
- validateChildKeys(arguments[i], type);
- }
- }
- validatePropTypes(element);
- return element;
- },
- createFactory: function (type) {
- var validatedFactory = ReactElementValidator.createElement.bind(null, type);
- // Legacy hook TODO: Warn if this is accessed
- validatedFactory.type = type;
- if (process.env.NODE_ENV !== 'production') {
- if (canDefineProperty) {
- Object.defineProperty(validatedFactory, 'type', {
- enumerable: false,
- get: function () {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;
- Object.defineProperty(this, 'type', {
- value: type
- });
- return type;
- }
- });
- }
- }
- return validatedFactory;
- },
- cloneElement: function (element, props, children) {
- var newElement = ReactElement.cloneElement.apply(this, arguments);
- for (var i = 2; i < arguments.length; i++) {
- validateChildKeys(arguments[i], newElement.type);
- }
- validatePropTypes(newElement);
- return newElement;
- }
- };
- module.exports = ReactElementValidator;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 55 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- module.exports = ReactPropTypesSecret;
- /***/ }),
- /* 56 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactDOMComponentFlags = {
- hasCachedChildNodes: 1 << 0
- };
- module.exports = ReactDOMComponentFlags;
- /***/ }),
- /* 57 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- /**
- * Accumulates items that must not be null or undefined into the first one. This
- * is used to conserve memory by avoiding array allocations, and thus sacrifices
- * API cleanness. Since `current` can be null before being passed in and not
- * null after this function, make sure to assign it back to `current`:
- *
- * `a = accumulateInto(a, b);`
- *
- * This API should be sparingly used. Try `accumulate` for something cleaner.
- *
- * @return {*|array<*>} An accumulation of items.
- */
- function accumulateInto(current, next) {
- !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;
- if (current == null) {
- return next;
- }
- // Both are not empty. Warning: Never call x.concat(y) when you are not
- // certain that x is an Array (x could be a string with concat method).
- if (Array.isArray(current)) {
- if (Array.isArray(next)) {
- current.push.apply(current, next);
- return current;
- }
- current.push(next);
- return current;
- }
- if (Array.isArray(next)) {
- // A bit too dangerous to mutate `next`.
- return [current].concat(next);
- }
- return [current, next];
- }
- module.exports = accumulateInto;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 58 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * @param {array} arr an "accumulation" of items which is either an Array or
- * a single item. Useful when paired with the `accumulate` module. This is a
- * simple utility that allows us to reason about a collection of items, but
- * handling the case when there is exactly one item (and we do not need to
- * allocate an array).
- */
- function forEachAccumulated(arr, cb, scope) {
- if (Array.isArray(arr)) {
- arr.forEach(cb, scope);
- } else if (arr) {
- cb.call(scope, arr);
- }
- }
- module.exports = forEachAccumulated;
- /***/ }),
- /* 59 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ExecutionEnvironment = __webpack_require__(6);
- var contentKey = null;
- /**
- * Gets the key used to access text content on a DOM node.
- *
- * @return {?string} Key used to access text content.
- * @internal
- */
- function getTextContentAccessor() {
- if (!contentKey && ExecutionEnvironment.canUseDOM) {
- // Prefer textContent to innerText because many browsers support both but
- // SVG <text> elements don't support innerText even when <div> does.
- contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';
- }
- return contentKey;
- }
- module.exports = getTextContentAccessor;
- /***/ }),
- /* 60 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var PooledClass = __webpack_require__(16);
- var invariant = __webpack_require__(1);
- /**
- * A specialized pseudo-event module to help keep track of components waiting to
- * be notified when their DOM representations are available for use.
- *
- * This implements `PooledClass`, so you should never need to instantiate this.
- * Instead, use `CallbackQueue.getPooled()`.
- *
- * @class ReactMountReady
- * @implements PooledClass
- * @internal
- */
- var CallbackQueue = function () {
- function CallbackQueue(arg) {
- _classCallCheck(this, CallbackQueue);
- this._callbacks = null;
- this._contexts = null;
- this._arg = arg;
- }
- /**
- * Enqueues a callback to be invoked when `notifyAll` is invoked.
- *
- * @param {function} callback Invoked when `notifyAll` is invoked.
- * @param {?object} context Context to call `callback` with.
- * @internal
- */
- CallbackQueue.prototype.enqueue = function enqueue(callback, context) {
- this._callbacks = this._callbacks || [];
- this._callbacks.push(callback);
- this._contexts = this._contexts || [];
- this._contexts.push(context);
- };
- /**
- * Invokes all enqueued callbacks and clears the queue. This is invoked after
- * the DOM representation of a component has been created or updated.
- *
- * @internal
- */
- CallbackQueue.prototype.notifyAll = function notifyAll() {
- var callbacks = this._callbacks;
- var contexts = this._contexts;
- var arg = this._arg;
- if (callbacks && contexts) {
- !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;
- this._callbacks = null;
- this._contexts = null;
- for (var i = 0; i < callbacks.length; i++) {
- callbacks[i].call(contexts[i], arg);
- }
- callbacks.length = 0;
- contexts.length = 0;
- }
- };
- CallbackQueue.prototype.checkpoint = function checkpoint() {
- return this._callbacks ? this._callbacks.length : 0;
- };
- CallbackQueue.prototype.rollback = function rollback(len) {
- if (this._callbacks && this._contexts) {
- this._callbacks.length = len;
- this._contexts.length = len;
- }
- };
- /**
- * Resets the internal queue.
- *
- * @internal
- */
- CallbackQueue.prototype.reset = function reset() {
- this._callbacks = null;
- this._contexts = null;
- };
- /**
- * `PooledClass` looks for this.
- */
- CallbackQueue.prototype.destructor = function destructor() {
- this.reset();
- };
- return CallbackQueue;
- }();
- module.exports = PooledClass.addPoolingTo(CallbackQueue);
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 61 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactFeatureFlags = {
- // When true, call console.time() before and .timeEnd() after each top-level
- // render (both initial renders and updates). Useful when looking at prod-mode
- // timeline profiles in Chrome, for example.
- logTopLevelRenders: false
- };
- module.exports = ReactFeatureFlags;
- /***/ }),
- /* 62 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
- */
- var supportedInputTypes = {
- 'color': true,
- 'date': true,
- 'datetime': true,
- 'datetime-local': true,
- 'email': true,
- 'month': true,
- 'number': true,
- 'password': true,
- 'range': true,
- 'search': true,
- 'tel': true,
- 'text': true,
- 'time': true,
- 'url': true,
- 'week': true
- };
- function isTextInputElement(elem) {
- var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
- if (nodeName === 'input') {
- return !!supportedInputTypes[elem.type];
- }
- if (nodeName === 'textarea') {
- return true;
- }
- return false;
- }
- module.exports = isTextInputElement;
- /***/ }),
- /* 63 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ViewportMetrics = {
- currentScrollLeft: 0,
- currentScrollTop: 0,
- refreshScrollValues: function (scrollPosition) {
- ViewportMetrics.currentScrollLeft = scrollPosition.x;
- ViewportMetrics.currentScrollTop = scrollPosition.y;
- }
- };
- module.exports = ViewportMetrics;
- /***/ }),
- /* 64 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ExecutionEnvironment = __webpack_require__(6);
- var escapeTextContentForBrowser = __webpack_require__(31);
- var setInnerHTML = __webpack_require__(30);
- /**
- * Set the textContent property of a node, ensuring that whitespace is preserved
- * even in IE8. innerText is a poor substitute for textContent and, among many
- * issues, inserts <br> instead of the literal newline chars. innerHTML behaves
- * as it should.
- *
- * @param {DOMElement} node
- * @param {string} text
- * @internal
- */
- var setTextContent = function (node, text) {
- if (text) {
- var firstChild = node.firstChild;
- if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {
- firstChild.nodeValue = text;
- return;
- }
- }
- node.textContent = text;
- };
- if (ExecutionEnvironment.canUseDOM) {
- if (!('textContent' in document.documentElement)) {
- setTextContent = function (node, text) {
- if (node.nodeType === 3) {
- node.nodeValue = text;
- return;
- }
- setInnerHTML(node, escapeTextContentForBrowser(text));
- };
- }
- }
- module.exports = setTextContent;
- /***/ }),
- /* 65 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
- /**
- * @param {DOMElement} node input/textarea to focus
- */
- function focusNode(node) {
- // IE8 can throw "Can't move focus to the control because it is invisible,
- // not enabled, or of a type that does not accept the focus." for all kinds of
- // reasons that are too expensive and fragile to test.
- try {
- node.focus();
- } catch (e) {}
- }
- module.exports = focusNode;
- /***/ }),
- /* 66 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * CSS properties which accept numbers but are not in units of "px".
- */
- var isUnitlessNumber = {
- animationIterationCount: true,
- borderImageOutset: true,
- borderImageSlice: true,
- borderImageWidth: true,
- boxFlex: true,
- boxFlexGroup: true,
- boxOrdinalGroup: true,
- columnCount: true,
- flex: true,
- flexGrow: true,
- flexPositive: true,
- flexShrink: true,
- flexNegative: true,
- flexOrder: true,
- gridRow: true,
- gridColumn: true,
- fontWeight: true,
- lineClamp: true,
- lineHeight: true,
- opacity: true,
- order: true,
- orphans: true,
- tabSize: true,
- widows: true,
- zIndex: true,
- zoom: true,
- // SVG-related properties
- fillOpacity: true,
- floodOpacity: true,
- stopOpacity: true,
- strokeDasharray: true,
- strokeDashoffset: true,
- strokeMiterlimit: true,
- strokeOpacity: true,
- strokeWidth: true
- };
- /**
- * @param {string} prefix vendor-specific prefix, eg: Webkit
- * @param {string} key style name, eg: transitionDuration
- * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
- * WebkitTransitionDuration
- */
- function prefixKey(prefix, key) {
- return prefix + key.charAt(0).toUpperCase() + key.substring(1);
- }
- /**
- * Support style names that may come passed in prefixed by adding permutations
- * of vendor prefixes.
- */
- var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
- // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
- // infinite loop, because it iterates over the newly added props too.
- Object.keys(isUnitlessNumber).forEach(function (prop) {
- prefixes.forEach(function (prefix) {
- isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
- });
- });
- /**
- * Most style properties can be unset by doing .style[prop] = '' but IE8
- * doesn't like doing that with shorthand properties so for the properties that
- * IE8 breaks on, which are listed here, we instead unset each of the
- * individual properties. See http://bugs.jquery.com/ticket/12385.
- * The 4-value 'clock' properties like margin, padding, border-width seem to
- * behave without any problems. Curiously, list-style works too without any
- * special prodding.
- */
- var shorthandPropertyExpansions = {
- background: {
- backgroundAttachment: true,
- backgroundColor: true,
- backgroundImage: true,
- backgroundPositionX: true,
- backgroundPositionY: true,
- backgroundRepeat: true
- },
- backgroundPosition: {
- backgroundPositionX: true,
- backgroundPositionY: true
- },
- border: {
- borderWidth: true,
- borderStyle: true,
- borderColor: true
- },
- borderBottom: {
- borderBottomWidth: true,
- borderBottomStyle: true,
- borderBottomColor: true
- },
- borderLeft: {
- borderLeftWidth: true,
- borderLeftStyle: true,
- borderLeftColor: true
- },
- borderRight: {
- borderRightWidth: true,
- borderRightStyle: true,
- borderRightColor: true
- },
- borderTop: {
- borderTopWidth: true,
- borderTopStyle: true,
- borderTopColor: true
- },
- font: {
- fontStyle: true,
- fontVariant: true,
- fontWeight: true,
- fontSize: true,
- lineHeight: true,
- fontFamily: true
- },
- outline: {
- outlineWidth: true,
- outlineStyle: true,
- outlineColor: true
- }
- };
- var CSSProperty = {
- isUnitlessNumber: isUnitlessNumber,
- shorthandPropertyExpansions: shorthandPropertyExpansions
- };
- module.exports = CSSProperty;
- /***/ }),
- /* 67 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMProperty = __webpack_require__(13);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactInstrumentation = __webpack_require__(9);
- var quoteAttributeValueForBrowser = __webpack_require__(135);
- var warning = __webpack_require__(2);
- var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
- var illegalAttributeNameCache = {};
- var validatedAttributeNameCache = {};
- function isAttributeNameSafe(attributeName) {
- if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
- return true;
- }
- if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
- return false;
- }
- if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
- validatedAttributeNameCache[attributeName] = true;
- return true;
- }
- illegalAttributeNameCache[attributeName] = true;
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;
- return false;
- }
- function shouldIgnoreValue(propertyInfo, value) {
- return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;
- }
- /**
- * Operations for dealing with DOM properties.
- */
- var DOMPropertyOperations = {
- /**
- * Creates markup for the ID property.
- *
- * @param {string} id Unescaped ID.
- * @return {string} Markup string.
- */
- createMarkupForID: function (id) {
- return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);
- },
- setAttributeForID: function (node, id) {
- node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);
- },
- createMarkupForRoot: function () {
- return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""';
- },
- setAttributeForRoot: function (node) {
- node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');
- },
- /**
- * Creates markup for a property.
- *
- * @param {string} name
- * @param {*} value
- * @return {?string} Markup string, or null if the property was invalid.
- */
- createMarkupForProperty: function (name, value) {
- var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
- if (propertyInfo) {
- if (shouldIgnoreValue(propertyInfo, value)) {
- return '';
- }
- var attributeName = propertyInfo.attributeName;
- if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
- return attributeName + '=""';
- }
- return attributeName + '=' + quoteAttributeValueForBrowser(value);
- } else if (DOMProperty.isCustomAttribute(name)) {
- if (value == null) {
- return '';
- }
- return name + '=' + quoteAttributeValueForBrowser(value);
- }
- return null;
- },
- /**
- * Creates markup for a custom property.
- *
- * @param {string} name
- * @param {*} value
- * @return {string} Markup string, or empty string if the property was invalid.
- */
- createMarkupForCustomAttribute: function (name, value) {
- if (!isAttributeNameSafe(name) || value == null) {
- return '';
- }
- return name + '=' + quoteAttributeValueForBrowser(value);
- },
- /**
- * Sets the value for a property on a node.
- *
- * @param {DOMElement} node
- * @param {string} name
- * @param {*} value
- */
- setValueForProperty: function (node, name, value) {
- var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
- if (propertyInfo) {
- var mutationMethod = propertyInfo.mutationMethod;
- if (mutationMethod) {
- mutationMethod(node, value);
- } else if (shouldIgnoreValue(propertyInfo, value)) {
- this.deleteValueForProperty(node, name);
- return;
- } else if (propertyInfo.mustUseProperty) {
- // Contrary to `setAttribute`, object properties are properly
- // `toString`ed by IE8/9.
- node[propertyInfo.propertyName] = value;
- } else {
- var attributeName = propertyInfo.attributeName;
- var namespace = propertyInfo.attributeNamespace;
- // `setAttribute` with objects becomes only `[object]` in IE8/9,
- // ('' + value) makes it output the correct toString()-value.
- if (namespace) {
- node.setAttributeNS(namespace, attributeName, '' + value);
- } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
- node.setAttribute(attributeName, '');
- } else {
- node.setAttribute(attributeName, '' + value);
- }
- }
- } else if (DOMProperty.isCustomAttribute(name)) {
- DOMPropertyOperations.setValueForAttribute(node, name, value);
- return;
- }
- if (process.env.NODE_ENV !== 'production') {
- var payload = {};
- payload[name] = value;
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
- type: 'update attribute',
- payload: payload
- });
- }
- },
- setValueForAttribute: function (node, name, value) {
- if (!isAttributeNameSafe(name)) {
- return;
- }
- if (value == null) {
- node.removeAttribute(name);
- } else {
- node.setAttribute(name, '' + value);
- }
- if (process.env.NODE_ENV !== 'production') {
- var payload = {};
- payload[name] = value;
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
- type: 'update attribute',
- payload: payload
- });
- }
- },
- /**
- * Deletes an attributes from a node.
- *
- * @param {DOMElement} node
- * @param {string} name
- */
- deleteValueForAttribute: function (node, name) {
- node.removeAttribute(name);
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
- type: 'remove attribute',
- payload: name
- });
- }
- },
- /**
- * Deletes the value for a property on a node.
- *
- * @param {DOMElement} node
- * @param {string} name
- */
- deleteValueForProperty: function (node, name) {
- var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
- if (propertyInfo) {
- var mutationMethod = propertyInfo.mutationMethod;
- if (mutationMethod) {
- mutationMethod(node, undefined);
- } else if (propertyInfo.mustUseProperty) {
- var propName = propertyInfo.propertyName;
- if (propertyInfo.hasBooleanValue) {
- node[propName] = false;
- } else {
- node[propName] = '';
- }
- } else {
- node.removeAttribute(propertyInfo.attributeName);
- }
- } else if (DOMProperty.isCustomAttribute(name)) {
- node.removeAttribute(name);
- }
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
- type: 'remove attribute',
- payload: name
- });
- }
- }
- };
- module.exports = DOMPropertyOperations;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 68 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- module.exports = ReactPropTypesSecret;
- /***/ }),
- /* 69 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- module.exports = ReactPropTypesSecret;
- /***/ }),
- /* 70 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var LinkedValueUtils = __webpack_require__(43);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactUpdates = __webpack_require__(11);
- var warning = __webpack_require__(2);
- var didWarnValueLink = false;
- var didWarnValueDefaultValue = false;
- function updateOptionsIfPendingUpdateAndMounted() {
- if (this._rootNodeID && this._wrapperState.pendingUpdate) {
- this._wrapperState.pendingUpdate = false;
- var props = this._currentElement.props;
- var value = LinkedValueUtils.getValue(props);
- if (value != null) {
- updateOptions(this, Boolean(props.multiple), value);
- }
- }
- }
- function getDeclarationErrorAddendum(owner) {
- if (owner) {
- var name = owner.getName();
- if (name) {
- return ' Check the render method of `' + name + '`.';
- }
- }
- return '';
- }
- var valuePropNames = ['value', 'defaultValue'];
- /**
- * Validation function for `value` and `defaultValue`.
- * @private
- */
- function checkSelectPropTypes(inst, props) {
- var owner = inst._currentElement._owner;
- LinkedValueUtils.checkPropTypes('select', props, owner);
- if (props.valueLink !== undefined && !didWarnValueLink) {
- process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;
- didWarnValueLink = true;
- }
- for (var i = 0; i < valuePropNames.length; i++) {
- var propName = valuePropNames[i];
- if (props[propName] == null) {
- continue;
- }
- var isArray = Array.isArray(props[propName]);
- if (props.multiple && !isArray) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;
- } else if (!props.multiple && isArray) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;
- }
- }
- }
- /**
- * @param {ReactDOMComponent} inst
- * @param {boolean} multiple
- * @param {*} propValue A stringable (with `multiple`, a list of stringables).
- * @private
- */
- function updateOptions(inst, multiple, propValue) {
- var selectedValue, i;
- var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;
- if (multiple) {
- selectedValue = {};
- for (i = 0; i < propValue.length; i++) {
- selectedValue['' + propValue[i]] = true;
- }
- for (i = 0; i < options.length; i++) {
- var selected = selectedValue.hasOwnProperty(options[i].value);
- if (options[i].selected !== selected) {
- options[i].selected = selected;
- }
- }
- } else {
- // Do not set `select.value` as exact behavior isn't consistent across all
- // browsers for all cases.
- selectedValue = '' + propValue;
- for (i = 0; i < options.length; i++) {
- if (options[i].value === selectedValue) {
- options[i].selected = true;
- return;
- }
- }
- if (options.length) {
- options[0].selected = true;
- }
- }
- }
- /**
- * Implements a <select> host component that allows optionally setting the
- * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
- * stringable. If `multiple` is true, the prop must be an array of stringables.
- *
- * If `value` is not supplied (or null/undefined), user actions that change the
- * selected option will trigger updates to the rendered options.
- *
- * If it is supplied (and not null/undefined), the rendered options will not
- * update in response to user actions. Instead, the `value` prop must change in
- * order for the rendered options to update.
- *
- * If `defaultValue` is provided, any options with the supplied values will be
- * selected.
- */
- var ReactDOMSelect = {
- getHostProps: function (inst, props) {
- return _assign({}, props, {
- onChange: inst._wrapperState.onChange,
- value: undefined
- });
- },
- mountWrapper: function (inst, props) {
- if (process.env.NODE_ENV !== 'production') {
- checkSelectPropTypes(inst, props);
- }
- var value = LinkedValueUtils.getValue(props);
- inst._wrapperState = {
- pendingUpdate: false,
- initialValue: value != null ? value : props.defaultValue,
- listeners: null,
- onChange: _handleChange.bind(inst),
- wasMultiple: Boolean(props.multiple)
- };
- if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;
- didWarnValueDefaultValue = true;
- }
- },
- getSelectValueContext: function (inst) {
- // ReactDOMOption looks at this initial value so the initial generated
- // markup has correct `selected` attributes
- return inst._wrapperState.initialValue;
- },
- postUpdateWrapper: function (inst) {
- var props = inst._currentElement.props;
- // After the initial mount, we control selected-ness manually so don't pass
- // this value down
- inst._wrapperState.initialValue = undefined;
- var wasMultiple = inst._wrapperState.wasMultiple;
- inst._wrapperState.wasMultiple = Boolean(props.multiple);
- var value = LinkedValueUtils.getValue(props);
- if (value != null) {
- inst._wrapperState.pendingUpdate = false;
- updateOptions(inst, Boolean(props.multiple), value);
- } else if (wasMultiple !== Boolean(props.multiple)) {
- // For simplicity, reapply `defaultValue` if `multiple` is toggled.
- if (props.defaultValue != null) {
- updateOptions(inst, Boolean(props.multiple), props.defaultValue);
- } else {
- // Revert the select back to its default unselected state.
- updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');
- }
- }
- }
- };
- function _handleChange(event) {
- var props = this._currentElement.props;
- var returnValue = LinkedValueUtils.executeOnChange(props, event);
- if (this._rootNodeID) {
- this._wrapperState.pendingUpdate = true;
- }
- ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);
- return returnValue;
- }
- module.exports = ReactDOMSelect;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 71 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var ReactCompositeComponent = __webpack_require__(146);
- var ReactEmptyComponent = __webpack_require__(73);
- var ReactHostComponent = __webpack_require__(74);
- var getNextDebugID = __webpack_require__(149);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- // To avoid a cyclic dependency, we create the final class in this module
- var ReactCompositeComponentWrapper = function (element) {
- this.construct(element);
- };
- function getDeclarationErrorAddendum(owner) {
- if (owner) {
- var name = owner.getName();
- if (name) {
- return ' Check the render method of `' + name + '`.';
- }
- }
- return '';
- }
- /**
- * Check if the type reference is a known internal type. I.e. not a user
- * provided composite type.
- *
- * @param {function} type
- * @return {boolean} Returns true if this is a valid internal type.
- */
- function isInternalComponentType(type) {
- return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';
- }
- /**
- * Given a ReactNode, create an instance that will actually be mounted.
- *
- * @param {ReactNode} node
- * @param {boolean} shouldHaveDebugID
- * @return {object} A new instance of the element's constructor.
- * @protected
- */
- function instantiateReactComponent(node, shouldHaveDebugID) {
- var instance;
- if (node === null || node === false) {
- instance = ReactEmptyComponent.create(instantiateReactComponent);
- } else if (typeof node === 'object') {
- var element = node;
- var type = element.type;
- if (typeof type !== 'function' && typeof type !== 'string') {
- var info = '';
- if (process.env.NODE_ENV !== 'production') {
- if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
- info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.';
- }
- }
- info += getDeclarationErrorAddendum(element._owner);
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;
- }
- // Special case string values
- if (typeof element.type === 'string') {
- instance = ReactHostComponent.createInternalComponent(element);
- } else if (isInternalComponentType(element.type)) {
- // This is temporarily available for custom components that are not string
- // representations. I.e. ART. Once those are updated to use the string
- // representation, we can drop this code path.
- instance = new element.type(element);
- // We renamed this. Allow the old name for compat. :(
- if (!instance.getHostNode) {
- instance.getHostNode = instance.getNativeNode;
- }
- } else {
- instance = new ReactCompositeComponentWrapper(element);
- }
- } else if (typeof node === 'string' || typeof node === 'number') {
- instance = ReactHostComponent.createInstanceForText(node);
- } else {
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;
- }
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;
- }
- // These two fields are used by the DOM and ART diffing algorithms
- // respectively. Instead of using expandos on components, we should be
- // storing the state needed by the diffing algorithms elsewhere.
- instance._mountIndex = 0;
- instance._mountImage = null;
- if (process.env.NODE_ENV !== 'production') {
- instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;
- }
- // Internal instances should fully constructed at this point, so they should
- // not get any new fields added to them at this point.
- if (process.env.NODE_ENV !== 'production') {
- if (Object.preventExtensions) {
- Object.preventExtensions(instance);
- }
- }
- return instance;
- }
- _assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {
- _instantiateReactComponent: instantiateReactComponent
- });
- module.exports = instantiateReactComponent;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 72 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var React = __webpack_require__(17);
- var invariant = __webpack_require__(1);
- var ReactNodeTypes = {
- HOST: 0,
- COMPOSITE: 1,
- EMPTY: 2,
- getType: function (node) {
- if (node === null || node === false) {
- return ReactNodeTypes.EMPTY;
- } else if (React.isValidElement(node)) {
- if (typeof node.type === 'function') {
- return ReactNodeTypes.COMPOSITE;
- } else {
- return ReactNodeTypes.HOST;
- }
- }
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;
- }
- };
- module.exports = ReactNodeTypes;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 73 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var emptyComponentFactory;
- var ReactEmptyComponentInjection = {
- injectEmptyComponentFactory: function (factory) {
- emptyComponentFactory = factory;
- }
- };
- var ReactEmptyComponent = {
- create: function (instantiate) {
- return emptyComponentFactory(instantiate);
- }
- };
- ReactEmptyComponent.injection = ReactEmptyComponentInjection;
- module.exports = ReactEmptyComponent;
- /***/ }),
- /* 74 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- var genericComponentClass = null;
- var textComponentClass = null;
- var ReactHostComponentInjection = {
- // This accepts a class that receives the tag string. This is a catch all
- // that can render any kind of tag.
- injectGenericComponentClass: function (componentClass) {
- genericComponentClass = componentClass;
- },
- // This accepts a text component class that takes the text string to be
- // rendered as props.
- injectTextComponentClass: function (componentClass) {
- textComponentClass = componentClass;
- }
- };
- /**
- * Get a host internal component class for a specific tag.
- *
- * @param {ReactElement} element The element to create.
- * @return {function} The internal class constructor function.
- */
- function createInternalComponent(element) {
- !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;
- return new genericComponentClass(element);
- }
- /**
- * @param {ReactText} text
- * @return {ReactComponent}
- */
- function createInstanceForText(text) {
- return new textComponentClass(text);
- }
- /**
- * @param {ReactComponent} component
- * @return {boolean}
- */
- function isTextComponent(component) {
- return component instanceof textComponentClass;
- }
- var ReactHostComponent = {
- createInternalComponent: createInternalComponent,
- createInstanceForText: createInstanceForText,
- isTextComponent: isTextComponent,
- injection: ReactHostComponentInjection
- };
- module.exports = ReactHostComponent;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 75 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactCurrentOwner = __webpack_require__(10);
- var REACT_ELEMENT_TYPE = __webpack_require__(150);
- var getIteratorFn = __webpack_require__(151);
- var invariant = __webpack_require__(1);
- var KeyEscapeUtils = __webpack_require__(47);
- var warning = __webpack_require__(2);
- var SEPARATOR = '.';
- var SUBSEPARATOR = ':';
- /**
- * This is inlined from ReactElement since this file is shared between
- * isomorphic and renderers. We could extract this to a
- *
- */
- /**
- * TODO: Test that a single child and an array with one item have the same key
- * pattern.
- */
- var didWarnAboutMaps = false;
- /**
- * Generate a key string that identifies a component within a set.
- *
- * @param {*} component A component that could contain a manual key.
- * @param {number} index Index that is used if a manual key is not provided.
- * @return {string}
- */
- function getComponentKey(component, index) {
- // Do some typechecking here since we call this blindly. We want to ensure
- // that we don't block potential future ES APIs.
- if (component && typeof component === 'object' && component.key != null) {
- // Explicit key
- return KeyEscapeUtils.escape(component.key);
- }
- // Implicit key determined by the index in the set
- return index.toString(36);
- }
- /**
- * @param {?*} children Children tree container.
- * @param {!string} nameSoFar Name of the key path so far.
- * @param {!function} callback Callback to invoke with each child found.
- * @param {?*} traverseContext Used to pass information throughout the traversal
- * process.
- * @return {!number} The number of children in this subtree.
- */
- function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
- var type = typeof children;
- if (type === 'undefined' || type === 'boolean') {
- // All of the above are perceived as null.
- children = null;
- }
- if (children === null || type === 'string' || type === 'number' ||
- // The following is inlined from ReactElement. This means we can optimize
- // some checks. React Fiber also inlines this logic for similar purposes.
- type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
- callback(traverseContext, children,
- // If it's the only child, treat the name as if it was wrapped in an array
- // so that it's consistent if the number of children grows.
- nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
- return 1;
- }
- var child;
- var nextName;
- var subtreeCount = 0; // Count of children found in the current subtree.
- var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
- if (Array.isArray(children)) {
- for (var i = 0; i < children.length; i++) {
- child = children[i];
- nextName = nextNamePrefix + getComponentKey(child, i);
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
- }
- } else {
- var iteratorFn = getIteratorFn(children);
- if (iteratorFn) {
- var iterator = iteratorFn.call(children);
- var step;
- if (iteratorFn !== children.entries) {
- var ii = 0;
- while (!(step = iterator.next()).done) {
- child = step.value;
- nextName = nextNamePrefix + getComponentKey(child, ii++);
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
- }
- } else {
- if (process.env.NODE_ENV !== 'production') {
- var mapsAsChildrenAddendum = '';
- if (ReactCurrentOwner.current) {
- var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
- if (mapsAsChildrenOwnerName) {
- mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
- }
- }
- process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;
- didWarnAboutMaps = true;
- }
- // Iterator will provide entry [k,v] tuples rather than values.
- while (!(step = iterator.next()).done) {
- var entry = step.value;
- if (entry) {
- child = entry[1];
- nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
- }
- }
- }
- } else if (type === 'object') {
- var addendum = '';
- if (process.env.NODE_ENV !== 'production') {
- addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';
- if (children._isReactElement) {
- addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';
- }
- if (ReactCurrentOwner.current) {
- var name = ReactCurrentOwner.current.getName();
- if (name) {
- addendum += ' Check the render method of `' + name + '`.';
- }
- }
- }
- var childrenString = String(children);
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;
- }
- }
- return subtreeCount;
- }
- /**
- * Traverses children that are typically specified as `props.children`, but
- * might also be specified through attributes:
- *
- * - `traverseAllChildren(this.props.children, ...)`
- * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
- *
- * The `traverseContext` is an optional argument that is passed through the
- * entire traversal. It can be used to store accumulations or anything else that
- * the callback might find relevant.
- *
- * @param {?*} children Children tree object.
- * @param {!function} callback To invoke upon traversing each child.
- * @param {?*} traverseContext Context for traversal.
- * @return {!number} The number of children in this subtree.
- */
- function traverseAllChildren(children, callback, traverseContext) {
- if (children == null) {
- return 0;
- }
- return traverseAllChildrenImpl(children, '', callback, traverseContext);
- }
- module.exports = traverseAllChildren;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 76 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var emptyFunction = __webpack_require__(8);
- /**
- * Upstream version of event listener. Does not take into account specific
- * nature of platform.
- */
- var EventListener = {
- /**
- * Listen to DOM events during the bubble phase.
- *
- * @param {DOMEventTarget} target DOM element to register listener on.
- * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
- * @param {function} callback Callback function.
- * @return {object} Object with a `remove` method.
- */
- listen: function listen(target, eventType, callback) {
- if (target.addEventListener) {
- target.addEventListener(eventType, callback, false);
- return {
- remove: function remove() {
- target.removeEventListener(eventType, callback, false);
- }
- };
- } else if (target.attachEvent) {
- target.attachEvent('on' + eventType, callback);
- return {
- remove: function remove() {
- target.detachEvent('on' + eventType, callback);
- }
- };
- }
- },
- /**
- * Listen to DOM events during the capture phase.
- *
- * @param {DOMEventTarget} target DOM element to register listener on.
- * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
- * @param {function} callback Callback function.
- * @return {object} Object with a `remove` method.
- */
- capture: function capture(target, eventType, callback) {
- if (target.addEventListener) {
- target.addEventListener(eventType, callback, true);
- return {
- remove: function remove() {
- target.removeEventListener(eventType, callback, true);
- }
- };
- } else {
- if (process.env.NODE_ENV !== 'production') {
- console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');
- }
- return {
- remove: emptyFunction
- };
- }
- },
- registerDefault: function registerDefault() {}
- };
- module.exports = EventListener;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 77 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactDOMSelection = __webpack_require__(163);
- var containsNode = __webpack_require__(165);
- var focusNode = __webpack_require__(65);
- var getActiveElement = __webpack_require__(78);
- function isInDocument(node) {
- return containsNode(document.documentElement, node);
- }
- /**
- * @ReactInputSelection: React input selection module. Based on Selection.js,
- * but modified to be suitable for react and has a couple of bug fixes (doesn't
- * assume buttons have range selections allowed).
- * Input selection module for React.
- */
- var ReactInputSelection = {
- hasSelectionCapabilities: function (elem) {
- var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
- return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');
- },
- getSelectionInformation: function () {
- var focusedElem = getActiveElement();
- return {
- focusedElem: focusedElem,
- selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null
- };
- },
- /**
- * @restoreSelection: If any selection information was potentially lost,
- * restore it. This is useful when performing operations that could remove dom
- * nodes and place them back in, resulting in focus being lost.
- */
- restoreSelection: function (priorSelectionInformation) {
- var curFocusedElem = getActiveElement();
- var priorFocusedElem = priorSelectionInformation.focusedElem;
- var priorSelectionRange = priorSelectionInformation.selectionRange;
- if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
- if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {
- ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);
- }
- focusNode(priorFocusedElem);
- }
- },
- /**
- * @getSelection: Gets the selection bounds of a focused textarea, input or
- * contentEditable node.
- * -@input: Look up selection bounds of this input
- * -@return {start: selectionStart, end: selectionEnd}
- */
- getSelection: function (input) {
- var selection;
- if ('selectionStart' in input) {
- // Modern browser with input or textarea.
- selection = {
- start: input.selectionStart,
- end: input.selectionEnd
- };
- } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {
- // IE8 input.
- var range = document.selection.createRange();
- // There can only be one selection per document in IE, so it must
- // be in our element.
- if (range.parentElement() === input) {
- selection = {
- start: -range.moveStart('character', -input.value.length),
- end: -range.moveEnd('character', -input.value.length)
- };
- }
- } else {
- // Content editable or old IE textarea.
- selection = ReactDOMSelection.getOffsets(input);
- }
- return selection || { start: 0, end: 0 };
- },
- /**
- * @setSelection: Sets the selection bounds of a textarea or input and focuses
- * the input.
- * -@input Set selection bounds of this input or textarea
- * -@offsets Object of same form that is returned from get*
- */
- setSelection: function (input, offsets) {
- var start = offsets.start;
- var end = offsets.end;
- if (end === undefined) {
- end = start;
- }
- if ('selectionStart' in input) {
- input.selectionStart = start;
- input.selectionEnd = Math.min(end, input.value.length);
- } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {
- var range = input.createTextRange();
- range.collapse(true);
- range.moveStart('character', start);
- range.moveEnd('character', end - start);
- range.select();
- } else {
- ReactDOMSelection.setOffsets(input, offsets);
- }
- }
- };
- module.exports = ReactInputSelection;
- /***/ }),
- /* 78 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- /* eslint-disable fb-www/typeof-undefined */
- /**
- * Same as document.activeElement but wraps in a try-catch block. In IE it is
- * not safe to call document.activeElement if there is nothing focused.
- *
- * The activeElement will be null only if the document or document body is not
- * yet defined.
- *
- * @param {?DOMDocument} doc Defaults to current document.
- * @return {?DOMElement}
- */
- function getActiveElement(doc) /*?DOMElement*/{
- doc = doc || (typeof document !== 'undefined' ? document : undefined);
- if (typeof doc === 'undefined') {
- return null;
- }
- try {
- return doc.activeElement || doc.body;
- } catch (e) {
- return doc.body;
- }
- }
- module.exports = getActiveElement;
- /***/ }),
- /* 79 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var DOMLazyTree = __webpack_require__(19);
- var DOMProperty = __webpack_require__(13);
- var React = __webpack_require__(17);
- var ReactBrowserEventEmitter = __webpack_require__(32);
- var ReactCurrentOwner = __webpack_require__(10);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactDOMContainerInfo = __webpack_require__(180);
- var ReactDOMFeatureFlags = __webpack_require__(181);
- var ReactFeatureFlags = __webpack_require__(61);
- var ReactInstanceMap = __webpack_require__(24);
- var ReactInstrumentation = __webpack_require__(9);
- var ReactMarkupChecksum = __webpack_require__(182);
- var ReactReconciler = __webpack_require__(18);
- var ReactUpdateQueue = __webpack_require__(48);
- var ReactUpdates = __webpack_require__(11);
- var emptyObject = __webpack_require__(20);
- var instantiateReactComponent = __webpack_require__(71);
- var invariant = __webpack_require__(1);
- var setInnerHTML = __webpack_require__(30);
- var shouldUpdateReactComponent = __webpack_require__(46);
- var warning = __webpack_require__(2);
- var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
- var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;
- var ELEMENT_NODE_TYPE = 1;
- var DOC_NODE_TYPE = 9;
- var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
- var instancesByReactRootID = {};
- /**
- * Finds the index of the first character
- * that's not common between the two given strings.
- *
- * @return {number} the index of the character where the strings diverge
- */
- function firstDifferenceIndex(string1, string2) {
- var minLen = Math.min(string1.length, string2.length);
- for (var i = 0; i < minLen; i++) {
- if (string1.charAt(i) !== string2.charAt(i)) {
- return i;
- }
- }
- return string1.length === string2.length ? -1 : minLen;
- }
- /**
- * @param {DOMElement|DOMDocument} container DOM element that may contain
- * a React component
- * @return {?*} DOM element that may have the reactRoot ID, or null.
- */
- function getReactRootElementInContainer(container) {
- if (!container) {
- return null;
- }
- if (container.nodeType === DOC_NODE_TYPE) {
- return container.documentElement;
- } else {
- return container.firstChild;
- }
- }
- function internalGetID(node) {
- // If node is something like a window, document, or text node, none of
- // which support attributes or a .getAttribute method, gracefully return
- // the empty string, as if the attribute were missing.
- return node.getAttribute && node.getAttribute(ATTR_NAME) || '';
- }
- /**
- * Mounts this component and inserts it into the DOM.
- *
- * @param {ReactComponent} componentInstance The instance to mount.
- * @param {DOMElement} container DOM element to mount into.
- * @param {ReactReconcileTransaction} transaction
- * @param {boolean} shouldReuseMarkup If true, do not insert markup
- */
- function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {
- var markerName;
- if (ReactFeatureFlags.logTopLevelRenders) {
- var wrappedElement = wrapperInstance._currentElement.props.child;
- var type = wrappedElement.type;
- markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);
- console.time(markerName);
- }
- var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */
- );
- if (markerName) {
- console.timeEnd(markerName);
- }
- wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;
- ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);
- }
- /**
- * Batched mount.
- *
- * @param {ReactComponent} componentInstance The instance to mount.
- * @param {DOMElement} container DOM element to mount into.
- * @param {boolean} shouldReuseMarkup If true, do not insert markup
- */
- function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {
- var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(
- /* useCreateElement */
- !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);
- transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);
- ReactUpdates.ReactReconcileTransaction.release(transaction);
- }
- /**
- * Unmounts a component and removes it from the DOM.
- *
- * @param {ReactComponent} instance React component instance.
- * @param {DOMElement} container DOM element to unmount from.
- * @final
- * @internal
- * @see {ReactMount.unmountComponentAtNode}
- */
- function unmountComponentFromNode(instance, container, safely) {
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onBeginFlush();
- }
- ReactReconciler.unmountComponent(instance, safely);
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onEndFlush();
- }
- if (container.nodeType === DOC_NODE_TYPE) {
- container = container.documentElement;
- }
- // http://jsperf.com/emptying-a-node
- while (container.lastChild) {
- container.removeChild(container.lastChild);
- }
- }
- /**
- * True if the supplied DOM node has a direct React-rendered child that is
- * not a React root element. Useful for warning in `render`,
- * `unmountComponentAtNode`, etc.
- *
- * @param {?DOMElement} node The candidate DOM node.
- * @return {boolean} True if the DOM element contains a direct child that was
- * rendered by React but is not a root element.
- * @internal
- */
- function hasNonRootReactChild(container) {
- var rootEl = getReactRootElementInContainer(container);
- if (rootEl) {
- var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);
- return !!(inst && inst._hostParent);
- }
- }
- /**
- * True if the supplied DOM node is a React DOM element and
- * it has been rendered by another copy of React.
- *
- * @param {?DOMElement} node The candidate DOM node.
- * @return {boolean} True if the DOM has been rendered by another copy of React
- * @internal
- */
- function nodeIsRenderedByOtherInstance(container) {
- var rootEl = getReactRootElementInContainer(container);
- return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));
- }
- /**
- * True if the supplied DOM node is a valid node element.
- *
- * @param {?DOMElement} node The candidate DOM node.
- * @return {boolean} True if the DOM is a valid DOM node.
- * @internal
- */
- function isValidContainer(node) {
- return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));
- }
- /**
- * True if the supplied DOM node is a valid React node element.
- *
- * @param {?DOMElement} node The candidate DOM node.
- * @return {boolean} True if the DOM is a valid React DOM node.
- * @internal
- */
- function isReactNode(node) {
- return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));
- }
- function getHostRootInstanceInContainer(container) {
- var rootEl = getReactRootElementInContainer(container);
- var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);
- return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;
- }
- function getTopLevelWrapperInContainer(container) {
- var root = getHostRootInstanceInContainer(container);
- return root ? root._hostContainerInfo._topLevelWrapper : null;
- }
- /**
- * Temporary (?) hack so that we can store all top-level pending updates on
- * composites instead of having to worry about different types of components
- * here.
- */
- var topLevelRootCounter = 1;
- var TopLevelWrapper = function () {
- this.rootID = topLevelRootCounter++;
- };
- TopLevelWrapper.prototype.isReactComponent = {};
- if (process.env.NODE_ENV !== 'production') {
- TopLevelWrapper.displayName = 'TopLevelWrapper';
- }
- TopLevelWrapper.prototype.render = function () {
- return this.props.child;
- };
- TopLevelWrapper.isReactTopLevelWrapper = true;
- /**
- * Mounting is the process of initializing a React component by creating its
- * representative DOM elements and inserting them into a supplied `container`.
- * Any prior content inside `container` is destroyed in the process.
- *
- * ReactMount.render(
- * component,
- * document.getElementById('container')
- * );
- *
- * <div id="container"> <-- Supplied `container`.
- * <div data-reactid=".3"> <-- Rendered reactRoot of React
- * // ... component.
- * </div>
- * </div>
- *
- * Inside of `container`, the first element rendered is the "reactRoot".
- */
- var ReactMount = {
- TopLevelWrapper: TopLevelWrapper,
- /**
- * Used by devtools. The keys are not important.
- */
- _instancesByReactRootID: instancesByReactRootID,
- /**
- * This is a hook provided to support rendering React components while
- * ensuring that the apparent scroll position of its `container` does not
- * change.
- *
- * @param {DOMElement} container The `container` being rendered into.
- * @param {function} renderCallback This must be called once to do the render.
- */
- scrollMonitor: function (container, renderCallback) {
- renderCallback();
- },
- /**
- * Take a component that's already mounted into the DOM and replace its props
- * @param {ReactComponent} prevComponent component instance already in the DOM
- * @param {ReactElement} nextElement component instance to render
- * @param {DOMElement} container container to render into
- * @param {?function} callback function triggered on completion
- */
- _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {
- ReactMount.scrollMonitor(container, function () {
- ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);
- if (callback) {
- ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);
- }
- });
- return prevComponent;
- },
- /**
- * Render a new component into the DOM. Hooked by hooks!
- *
- * @param {ReactElement} nextElement element to render
- * @param {DOMElement} container container to render into
- * @param {boolean} shouldReuseMarkup if we should skip the markup insertion
- * @return {ReactComponent} nextComponent
- */
- _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {
- // Various parts of our code (such as ReactCompositeComponent's
- // _renderValidatedComponent) assume that calls to render aren't nested;
- // verify that that's the case.
- process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;
- !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;
- ReactBrowserEventEmitter.ensureScrollValueMonitoring();
- var componentInstance = instantiateReactComponent(nextElement, false);
- // The initial render is synchronous but any updates that happen during
- // rendering, in componentWillMount or componentDidMount, will be batched
- // according to the current batching strategy.
- ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);
- var wrapperID = componentInstance._instance.rootID;
- instancesByReactRootID[wrapperID] = componentInstance;
- return componentInstance;
- },
- /**
- * Renders a React component into the DOM in the supplied `container`.
- *
- * If the React component was previously rendered into `container`, this will
- * perform an update on it and only mutate the DOM as necessary to reflect the
- * latest React component.
- *
- * @param {ReactComponent} parentComponent The conceptual parent of this render tree.
- * @param {ReactElement} nextElement Component element to render.
- * @param {DOMElement} container DOM element to render into.
- * @param {?function} callback function triggered on completion
- * @return {ReactComponent} Component instance rendered in `container`.
- */
- renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {
- !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;
- return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);
- },
- _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {
- ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');
- !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :
- // Check if it quacks like an element
- nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;
- var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });
- var nextContext;
- if (parentComponent) {
- var parentInst = ReactInstanceMap.get(parentComponent);
- nextContext = parentInst._processChildContext(parentInst._context);
- } else {
- nextContext = emptyObject;
- }
- var prevComponent = getTopLevelWrapperInContainer(container);
- if (prevComponent) {
- var prevWrappedElement = prevComponent._currentElement;
- var prevElement = prevWrappedElement.props.child;
- if (shouldUpdateReactComponent(prevElement, nextElement)) {
- var publicInst = prevComponent._renderedComponent.getPublicInstance();
- var updatedCallback = callback && function () {
- callback.call(publicInst);
- };
- ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);
- return publicInst;
- } else {
- ReactMount.unmountComponentAtNode(container);
- }
- }
- var reactRootElement = getReactRootElementInContainer(container);
- var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);
- var containerHasNonRootReactChild = hasNonRootReactChild(container);
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;
- if (!containerHasReactMarkup || reactRootElement.nextSibling) {
- var rootElementSibling = reactRootElement;
- while (rootElementSibling) {
- if (internalGetID(rootElementSibling)) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;
- break;
- }
- rootElementSibling = rootElementSibling.nextSibling;
- }
- }
- }
- var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;
- var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();
- if (callback) {
- callback.call(component);
- }
- return component;
- },
- /**
- * Renders a React component into the DOM in the supplied `container`.
- * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render
- *
- * If the React component was previously rendered into `container`, this will
- * perform an update on it and only mutate the DOM as necessary to reflect the
- * latest React component.
- *
- * @param {ReactElement} nextElement Component element to render.
- * @param {DOMElement} container DOM element to render into.
- * @param {?function} callback function triggered on completion
- * @return {ReactComponent} Component instance rendered in `container`.
- */
- render: function (nextElement, container, callback) {
- return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);
- },
- /**
- * Unmounts and destroys the React component rendered in the `container`.
- * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode
- *
- * @param {DOMElement} container DOM element containing a React component.
- * @return {boolean} True if a component was found in and unmounted from
- * `container`
- */
- unmountComponentAtNode: function (container) {
- // Various parts of our code (such as ReactCompositeComponent's
- // _renderValidatedComponent) assume that calls to render aren't nested;
- // verify that that's the case. (Strictly speaking, unmounting won't cause a
- // render but we still don't expect to be in a render call here.)
- process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;
- !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;
- }
- var prevComponent = getTopLevelWrapperInContainer(container);
- if (!prevComponent) {
- // Check if the node being unmounted was rendered by React, but isn't a
- // root node.
- var containerHasNonRootReactChild = hasNonRootReactChild(container);
- // Check if the container itself is a React root node.
- var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;
- }
- return false;
- }
- delete instancesByReactRootID[prevComponent._instance.rootID];
- ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);
- return true;
- },
- _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {
- !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;
- if (shouldReuseMarkup) {
- var rootElement = getReactRootElementInContainer(container);
- if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {
- ReactDOMComponentTree.precacheNode(instance, rootElement);
- return;
- } else {
- var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
- rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
- var rootMarkup = rootElement.outerHTML;
- rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);
- var normalizedMarkup = markup;
- if (process.env.NODE_ENV !== 'production') {
- // because rootMarkup is retrieved from the DOM, various normalizations
- // will have occurred which will not be present in `markup`. Here,
- // insert markup into a <div> or <iframe> depending on the container
- // type to perform the same normalizations before comparing.
- var normalizer;
- if (container.nodeType === ELEMENT_NODE_TYPE) {
- normalizer = document.createElement('div');
- normalizer.innerHTML = markup;
- normalizedMarkup = normalizer.innerHTML;
- } else {
- normalizer = document.createElement('iframe');
- document.body.appendChild(normalizer);
- normalizer.contentDocument.write(markup);
- normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;
- document.body.removeChild(normalizer);
- }
- }
- var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);
- var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);
- !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s', difference) : _prodInvariant('42', difference) : void 0;
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\n%s', difference) : void 0;
- }
- }
- }
- !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\'re trying to render a component to the document but you didn\'t use server rendering. We can\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;
- if (transaction.useCreateElement) {
- while (container.lastChild) {
- container.removeChild(container.lastChild);
- }
- DOMLazyTree.insertTreeBefore(container, markup, null);
- } else {
- setInnerHTML(container, markup);
- ReactDOMComponentTree.precacheNode(instance, container.firstChild);
- }
- if (process.env.NODE_ENV !== 'production') {
- var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);
- if (hostNode._debugID !== 0) {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: hostNode._debugID,
- type: 'mount',
- payload: markup.toString()
- });
- }
- }
- }
- };
- module.exports = ReactMount;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 80 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactNodeTypes = __webpack_require__(72);
- function getHostComponentFromComposite(inst) {
- var type;
- while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {
- inst = inst._renderedComponent;
- }
- if (type === ReactNodeTypes.HOST) {
- return inst._renderedComponent;
- } else if (type === ReactNodeTypes.EMPTY) {
- return null;
- }
- }
- module.exports = getHostComponentFromComposite;
- /***/ }),
- /* 81 */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {(function (global, factory) {
- true ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global.BrowserSpriteSymbol = factory());
- }(this, (function () { 'use strict';
- var SpriteSymbol = function SpriteSymbol(ref) {
- var id = ref.id;
- var viewBox = ref.viewBox;
- var content = ref.content;
- this.id = id;
- this.viewBox = viewBox;
- this.content = content;
- };
- /**
- * @return {string}
- */
- SpriteSymbol.prototype.stringify = function stringify () {
- return this.content;
- };
- /**
- * @return {string}
- */
- SpriteSymbol.prototype.toString = function toString () {
- return this.stringify();
- };
- SpriteSymbol.prototype.destroy = function destroy () {
- var this$1 = this;
- ['id', 'viewBox', 'content'].forEach(function (prop) { return delete this$1[prop]; });
- };
- /**
- * @param {string} content
- * @return {Element}
- */
- var parse = function (content) {
- var hasImportNode = !!document.importNode;
- var doc = new DOMParser().parseFromString(content, 'image/svg+xml').documentElement;
- /**
- * Fix for browser which are throwing WrongDocumentError
- * if you insert an element which is not part of the document
- * @see http://stackoverflow.com/a/7986519/4624403
- */
- if (hasImportNode) {
- return document.importNode(doc, true);
- }
- return doc;
- };
- var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
- function createCommonjsModule(fn, module) {
- return module = { exports: {} }, fn(module, module.exports), module.exports;
- }
- var index = createCommonjsModule(function (module, exports) {
- (function (root, factory) {
- if (false) {
- undefined(factory);
- } else {
- module.exports = factory();
- }
- }(commonjsGlobal, function () {
- function isMergeableObject(val) {
- var nonNullObject = val && typeof val === 'object';
- return nonNullObject
- && Object.prototype.toString.call(val) !== '[object RegExp]'
- && Object.prototype.toString.call(val) !== '[object Date]'
- }
- function emptyTarget(val) {
- return Array.isArray(val) ? [] : {}
- }
- function cloneIfNecessary(value, optionsArgument) {
- var clone = optionsArgument && optionsArgument.clone === true;
- return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value
- }
- function defaultArrayMerge(target, source, optionsArgument) {
- var destination = target.slice();
- source.forEach(function(e, i) {
- if (typeof destination[i] === 'undefined') {
- destination[i] = cloneIfNecessary(e, optionsArgument);
- } else if (isMergeableObject(e)) {
- destination[i] = deepmerge(target[i], e, optionsArgument);
- } else if (target.indexOf(e) === -1) {
- destination.push(cloneIfNecessary(e, optionsArgument));
- }
- });
- return destination
- }
- function mergeObject(target, source, optionsArgument) {
- var destination = {};
- if (isMergeableObject(target)) {
- Object.keys(target).forEach(function (key) {
- destination[key] = cloneIfNecessary(target[key], optionsArgument);
- });
- }
- Object.keys(source).forEach(function (key) {
- if (!isMergeableObject(source[key]) || !target[key]) {
- destination[key] = cloneIfNecessary(source[key], optionsArgument);
- } else {
- destination[key] = deepmerge(target[key], source[key], optionsArgument);
- }
- });
- return destination
- }
- function deepmerge(target, source, optionsArgument) {
- var array = Array.isArray(source);
- var options = optionsArgument || { arrayMerge: defaultArrayMerge };
- var arrayMerge = options.arrayMerge || defaultArrayMerge;
- if (array) {
- return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument)
- } else {
- return mergeObject(target, source, optionsArgument)
- }
- }
- deepmerge.all = function deepmergeAll(array, optionsArgument) {
- if (!Array.isArray(array) || array.length < 2) {
- throw new Error('first argument should be an array with at least two elements')
- }
- // we are sure there are at least 2 values, so it is safe to have no initial value
- return array.reduce(function(prev, next) {
- return deepmerge(prev, next, optionsArgument)
- })
- };
- return deepmerge
- }));
- });
- var namespaces_1 = createCommonjsModule(function (module, exports) {
- var namespaces = {
- svg: {
- name: 'xmlns',
- uri: 'http://www.w3.org/2000/svg'
- },
- xlink: {
- name: 'xmlns:xlink',
- uri: 'http://www.w3.org/1999/xlink'
- }
- };
- exports.default = namespaces;
- module.exports = exports.default;
- });
- /**
- * @param {Object} attrs
- * @return {string}
- */
- var objectToAttrsString = function (attrs) {
- return Object.keys(attrs).map(function (attr) {
- var value = attrs[attr].toString().replace(/"/g, '"');
- return (attr + "=\"" + value + "\"");
- }).join(' ');
- };
- var svg = namespaces_1.svg;
- var xlink = namespaces_1.xlink;
- var defaultAttrs = {};
- defaultAttrs[svg.name] = svg.uri;
- defaultAttrs[xlink.name] = xlink.uri;
- /**
- * @param {string} [content]
- * @param {Object} [attributes]
- * @return {string}
- */
- var wrapInSvgString = function (content, attributes) {
- if ( content === void 0 ) content = '';
- var attrs = index(defaultAttrs, attributes || {});
- var attrsRendered = objectToAttrsString(attrs);
- return ("<svg " + attrsRendered + ">" + content + "</svg>");
- };
- var BrowserSpriteSymbol = (function (SpriteSymbol$$1) {
- function BrowserSpriteSymbol () {
- SpriteSymbol$$1.apply(this, arguments);
- }
- if ( SpriteSymbol$$1 ) BrowserSpriteSymbol.__proto__ = SpriteSymbol$$1;
- BrowserSpriteSymbol.prototype = Object.create( SpriteSymbol$$1 && SpriteSymbol$$1.prototype );
- BrowserSpriteSymbol.prototype.constructor = BrowserSpriteSymbol;
- var prototypeAccessors = { isMounted: {} };
- prototypeAccessors.isMounted.get = function () {
- return !!this.node;
- };
- /**
- * @param {Element} node
- * @return {BrowserSpriteSymbol}
- */
- BrowserSpriteSymbol.createFromExistingNode = function createFromExistingNode (node) {
- return new BrowserSpriteSymbol({
- id: node.getAttribute('id'),
- viewBox: node.getAttribute('viewBox'),
- content: node.outerHTML
- });
- };
- BrowserSpriteSymbol.prototype.destroy = function destroy () {
- if (this.isMounted) {
- this.unmount();
- }
- SpriteSymbol$$1.prototype.destroy.call(this);
- };
- /**
- * @param {Element|string} target
- * @return {Element}
- */
- BrowserSpriteSymbol.prototype.mount = function mount (target) {
- if (this.isMounted) {
- return this.node;
- }
- var mountTarget = typeof target === 'string' ? document.querySelector(target) : target;
- var node = this.render();
- this.node = node;
- mountTarget.appendChild(node);
- return node;
- };
- /**
- * @return {Element}
- */
- BrowserSpriteSymbol.prototype.render = function render () {
- var content = this.stringify();
- return parse(wrapInSvgString(content)).childNodes[0];
- };
- BrowserSpriteSymbol.prototype.unmount = function unmount () {
- this.node.parentNode.removeChild(this.node);
- };
- Object.defineProperties( BrowserSpriteSymbol.prototype, prototypeAccessors );
- return BrowserSpriteSymbol;
- }(SpriteSymbol));
- return BrowserSpriteSymbol;
- })));
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(82)))
- /***/ }),
- /* 82 */
- /***/ (function(module, exports) {
- var g;
- // This works in non-strict mode
- g = (function() {
- return this;
- })();
- try {
- // This works if eval is allowed (see CSP)
- g = g || Function("return this")() || (1,eval)("this");
- } catch(e) {
- // This works if the window reference is available
- if(typeof window === "object")
- g = window;
- }
- // g can still be undefined, but nothing to do about it...
- // We return undefined, instead of nothing here, so it's
- // easier to handle this case. if(!global) { ...}
- module.exports = g;
- /***/ }),
- /* 83 */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {(function (global, factory) {
- true ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global.BrowserSprite = factory());
- }(this, (function () { 'use strict';
- var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
- function createCommonjsModule(fn, module) {
- return module = { exports: {} }, fn(module, module.exports), module.exports;
- }
- var deepmerge = createCommonjsModule(function (module, exports) {
- (function (root, factory) {
- if (false) {
- undefined(factory);
- } else {
- module.exports = factory();
- }
- }(commonjsGlobal, function () {
- function isMergeableObject(val) {
- var nonNullObject = val && typeof val === 'object';
- return nonNullObject
- && Object.prototype.toString.call(val) !== '[object RegExp]'
- && Object.prototype.toString.call(val) !== '[object Date]'
- }
- function emptyTarget(val) {
- return Array.isArray(val) ? [] : {}
- }
- function cloneIfNecessary(value, optionsArgument) {
- var clone = optionsArgument && optionsArgument.clone === true;
- return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value
- }
- function defaultArrayMerge(target, source, optionsArgument) {
- var destination = target.slice();
- source.forEach(function(e, i) {
- if (typeof destination[i] === 'undefined') {
- destination[i] = cloneIfNecessary(e, optionsArgument);
- } else if (isMergeableObject(e)) {
- destination[i] = deepmerge(target[i], e, optionsArgument);
- } else if (target.indexOf(e) === -1) {
- destination.push(cloneIfNecessary(e, optionsArgument));
- }
- });
- return destination
- }
- function mergeObject(target, source, optionsArgument) {
- var destination = {};
- if (isMergeableObject(target)) {
- Object.keys(target).forEach(function (key) {
- destination[key] = cloneIfNecessary(target[key], optionsArgument);
- });
- }
- Object.keys(source).forEach(function (key) {
- if (!isMergeableObject(source[key]) || !target[key]) {
- destination[key] = cloneIfNecessary(source[key], optionsArgument);
- } else {
- destination[key] = deepmerge(target[key], source[key], optionsArgument);
- }
- });
- return destination
- }
- function deepmerge(target, source, optionsArgument) {
- var array = Array.isArray(source);
- var options = optionsArgument || { arrayMerge: defaultArrayMerge };
- var arrayMerge = options.arrayMerge || defaultArrayMerge;
- if (array) {
- return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument)
- } else {
- return mergeObject(target, source, optionsArgument)
- }
- }
- deepmerge.all = function deepmergeAll(array, optionsArgument) {
- if (!Array.isArray(array) || array.length < 2) {
- throw new Error('first argument should be an array with at least two elements')
- }
- // we are sure there are at least 2 values, so it is safe to have no initial value
- return array.reduce(function(prev, next) {
- return deepmerge(prev, next, optionsArgument)
- })
- };
- return deepmerge
- }));
- });
- //
- // An event handler can take an optional event argument
- // and should not return a value
-
- // An array of all currently registered event handlers for a type
-
- // A map of event types and their corresponding event handlers.
-
-
-
- /** Mitt: Tiny (~200b) functional event emitter / pubsub.
- * @name mitt
- * @returns {Mitt}
- */
- function mitt(all ) {
- all = all || Object.create(null);
- return {
- /**
- * Register an event handler for the given type.
- *
- * @param {String} type Type of event to listen for, or `"*"` for all events
- * @param {Function} handler Function to call in response to given event
- * @memberOf mitt
- */
- on: function on(type , handler ) {
- (all[type] || (all[type] = [])).push(handler);
- },
- /**
- * Remove an event handler for the given type.
- *
- * @param {String} type Type of event to unregister `handler` from, or `"*"`
- * @param {Function} handler Handler function to remove
- * @memberOf mitt
- */
- off: function off(type , handler ) {
- if (all[type]) {
- all[type].splice(all[type].indexOf(handler) >>> 0, 1);
- }
- },
- /**
- * Invoke all handlers for the given type.
- * If present, `"*"` handlers are invoked after type-matched handlers.
- *
- * @param {String} type The event type to invoke
- * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler
- * @memberof mitt
- */
- emit: function emit(type , evt ) {
- (all[type] || []).map(function (handler) { handler(evt); });
- (all['*'] || []).map(function (handler) { handler(type, evt); });
- }
- };
- }
- var namespaces_1 = createCommonjsModule(function (module, exports) {
- var namespaces = {
- svg: {
- name: 'xmlns',
- uri: 'http://www.w3.org/2000/svg'
- },
- xlink: {
- name: 'xmlns:xlink',
- uri: 'http://www.w3.org/1999/xlink'
- }
- };
- exports.default = namespaces;
- module.exports = exports.default;
- });
- /**
- * @param {Object} attrs
- * @return {string}
- */
- var objectToAttrsString = function (attrs) {
- return Object.keys(attrs).map(function (attr) {
- var value = attrs[attr].toString().replace(/"/g, '"');
- return (attr + "=\"" + value + "\"");
- }).join(' ');
- };
- var svg = namespaces_1.svg;
- var xlink = namespaces_1.xlink;
- var defaultAttrs = {};
- defaultAttrs[svg.name] = svg.uri;
- defaultAttrs[xlink.name] = xlink.uri;
- /**
- * @param {string} [content]
- * @param {Object} [attributes]
- * @return {string}
- */
- var wrapInSvgString = function (content, attributes) {
- if ( content === void 0 ) content = '';
- var attrs = deepmerge(defaultAttrs, attributes || {});
- var attrsRendered = objectToAttrsString(attrs);
- return ("<svg " + attrsRendered + ">" + content + "</svg>");
- };
- var svg$1 = namespaces_1.svg;
- var xlink$1 = namespaces_1.xlink;
- var defaultConfig = {
- attrs: ( obj = {
- style: ['position: absolute', 'width: 0', 'height: 0'].join('; ')
- }, obj[svg$1.name] = svg$1.uri, obj[xlink$1.name] = xlink$1.uri, obj )
- };
- var obj;
- var Sprite = function Sprite(config) {
- this.config = deepmerge(defaultConfig, config || {});
- this.symbols = [];
- };
- /**
- * Add new symbol. If symbol with the same id exists it will be replaced.
- * @param {SpriteSymbol} symbol
- * @return {boolean} `true` - symbol was added, `false` - replaced
- */
- Sprite.prototype.add = function add (symbol) {
- var ref = this;
- var symbols = ref.symbols;
- var existing = this.find(symbol.id);
- if (existing) {
- symbols[symbols.indexOf(existing)] = symbol;
- return false;
- }
- symbols.push(symbol);
- return true;
- };
- /**
- * Remove symbol & destroy it
- * @param {string} id
- * @return {boolean} `true` - symbol was found & successfully destroyed, `false` - otherwise
- */
- Sprite.prototype.remove = function remove (id) {
- var ref = this;
- var symbols = ref.symbols;
- var symbol = this.find(id);
- if (symbol) {
- symbols.splice(symbols.indexOf(symbol), 1);
- symbol.destroy();
- return true;
- }
- return false;
- };
- /**
- * @param {string} id
- * @return {SpriteSymbol|null}
- */
- Sprite.prototype.find = function find (id) {
- return this.symbols.filter(function (s) { return s.id === id; })[0] || null;
- };
- /**
- * @param {string} id
- * @return {boolean}
- */
- Sprite.prototype.has = function has (id) {
- return this.find(id) !== null;
- };
- /**
- * @return {string}
- */
- Sprite.prototype.stringify = function stringify () {
- var ref = this.config;
- var attrs = ref.attrs;
- var stringifiedSymbols = this.symbols.map(function (s) { return s.stringify(); }).join('');
- return wrapInSvgString(stringifiedSymbols, attrs);
- };
- /**
- * @return {string}
- */
- Sprite.prototype.toString = function toString () {
- return this.stringify();
- };
- Sprite.prototype.destroy = function destroy () {
- this.symbols.forEach(function (s) { return s.destroy(); });
- };
- var SpriteSymbol = function SpriteSymbol(ref) {
- var id = ref.id;
- var viewBox = ref.viewBox;
- var content = ref.content;
- this.id = id;
- this.viewBox = viewBox;
- this.content = content;
- };
- /**
- * @return {string}
- */
- SpriteSymbol.prototype.stringify = function stringify () {
- return this.content;
- };
- /**
- * @return {string}
- */
- SpriteSymbol.prototype.toString = function toString () {
- return this.stringify();
- };
- SpriteSymbol.prototype.destroy = function destroy () {
- var this$1 = this;
- ['id', 'viewBox', 'content'].forEach(function (prop) { return delete this$1[prop]; });
- };
- /**
- * @param {string} content
- * @return {Element}
- */
- var parse = function (content) {
- var hasImportNode = !!document.importNode;
- var doc = new DOMParser().parseFromString(content, 'image/svg+xml').documentElement;
- /**
- * Fix for browser which are throwing WrongDocumentError
- * if you insert an element which is not part of the document
- * @see http://stackoverflow.com/a/7986519/4624403
- */
- if (hasImportNode) {
- return document.importNode(doc, true);
- }
- return doc;
- };
- var BrowserSpriteSymbol = (function (SpriteSymbol$$1) {
- function BrowserSpriteSymbol () {
- SpriteSymbol$$1.apply(this, arguments);
- }
- if ( SpriteSymbol$$1 ) BrowserSpriteSymbol.__proto__ = SpriteSymbol$$1;
- BrowserSpriteSymbol.prototype = Object.create( SpriteSymbol$$1 && SpriteSymbol$$1.prototype );
- BrowserSpriteSymbol.prototype.constructor = BrowserSpriteSymbol;
- var prototypeAccessors = { isMounted: {} };
- prototypeAccessors.isMounted.get = function () {
- return !!this.node;
- };
- /**
- * @param {Element} node
- * @return {BrowserSpriteSymbol}
- */
- BrowserSpriteSymbol.createFromExistingNode = function createFromExistingNode (node) {
- return new BrowserSpriteSymbol({
- id: node.getAttribute('id'),
- viewBox: node.getAttribute('viewBox'),
- content: node.outerHTML
- });
- };
- BrowserSpriteSymbol.prototype.destroy = function destroy () {
- if (this.isMounted) {
- this.unmount();
- }
- SpriteSymbol$$1.prototype.destroy.call(this);
- };
- /**
- * @param {Element|string} target
- * @return {Element}
- */
- BrowserSpriteSymbol.prototype.mount = function mount (target) {
- if (this.isMounted) {
- return this.node;
- }
- var mountTarget = typeof target === 'string' ? document.querySelector(target) : target;
- var node = this.render();
- this.node = node;
- mountTarget.appendChild(node);
- return node;
- };
- /**
- * @return {Element}
- */
- BrowserSpriteSymbol.prototype.render = function render () {
- var content = this.stringify();
- return parse(wrapInSvgString(content)).childNodes[0];
- };
- BrowserSpriteSymbol.prototype.unmount = function unmount () {
- this.node.parentNode.removeChild(this.node);
- };
- Object.defineProperties( BrowserSpriteSymbol.prototype, prototypeAccessors );
- return BrowserSpriteSymbol;
- }(SpriteSymbol));
- var defaultConfig$1 = {
- /**
- * Should following options be automatically configured:
- * - `syncUrlsWithBaseTag`
- * - `locationChangeAngularEmitter`
- * - `moveGradientsOutsideSymbol`
- * @type {boolean}
- */
- autoConfigure: true,
- /**
- * Default mounting selector
- * @type {string}
- */
- mountTo: 'body',
- /**
- * Fix disappearing SVG elements when <base href> exists.
- * Executes when sprite mounted.
- * @see http://stackoverflow.com/a/18265336/796152
- * @see https://github.com/everdimension/angular-svg-base-fix
- * @see https://github.com/angular/angular.js/issues/8934#issuecomment-56568466
- * @type {boolean}
- */
- syncUrlsWithBaseTag: false,
- /**
- * Should sprite listen custom location change event
- * @type {boolean}
- */
- listenLocationChangeEvent: true,
- /**
- * Custom window event name which should be emitted to update sprite urls
- * @type {string}
- */
- locationChangeEvent: 'locationChange',
- /**
- * Emit location change event in Angular automatically
- * @type {boolean}
- */
- locationChangeAngularEmitter: false,
- /**
- * Selector to find symbols usages when updating sprite urls
- * @type {string}
- */
- usagesToUpdate: 'use[*|href]',
- /**
- * Fix Firefox bug when gradients and patterns don't work if they are within a symbol.
- * Executes when sprite is rendered, but not mounted.
- * @see https://bugzilla.mozilla.org/show_bug.cgi?id=306674
- * @see https://bugzilla.mozilla.org/show_bug.cgi?id=353575
- * @see https://bugzilla.mozilla.org/show_bug.cgi?id=1235364
- * @type {boolean}
- */
- moveGradientsOutsideSymbol: false
- };
- /**
- * @param {*} arrayLike
- * @return {Array}
- */
- var arrayFrom = function (arrayLike) {
- return Array.prototype.slice.call(arrayLike, 0);
- };
- var ua = navigator.userAgent;
- var browser = {
- isChrome: /chrome/i.test(ua),
- isFirefox: /firefox/i.test(ua),
- // https://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
- isIE: /msie/i.test(ua) || /trident/i.test(ua),
- isEdge: /edge/i.test(ua)
- };
- /**
- * @param {string} name
- * @param {*} data
- */
- var dispatchEvent = function (name, data) {
- var event = document.createEvent('CustomEvent');
- event.initCustomEvent(name, false, false, data);
- window.dispatchEvent(event);
- };
- /**
- * IE doesn't evaluate <style> tags in SVGs that are dynamically added to the page.
- * This trick will trigger IE to read and use any existing SVG <style> tags.
- * @see https://github.com/iconic/SVGInjector/issues/23
- * @see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/
- *
- * @param {Element} node DOM Element to search <style> tags in
- * @return {Array<HTMLStyleElement>}
- */
- var evalStylesIEWorkaround = function (node) {
- var updatedNodes = [];
- arrayFrom(node.querySelectorAll('style'))
- .forEach(function (style) {
- style.textContent += '';
- updatedNodes.push(style);
- });
- return updatedNodes;
- };
- /**
- * @param {string} [url] If not provided - current URL will be used
- * @return {string}
- */
- var getUrlWithoutFragment = function (url) {
- return (url || window.location.href).split('#')[0];
- };
- /* global angular */
- /**
- * @param {string} eventName
- */
- var locationChangeAngularEmitter = function (eventName) {
- angular.module('ng').run(['$rootScope', function ($rootScope) {
- $rootScope.$on('$locationChangeSuccess', function (e, newUrl, oldUrl) {
- dispatchEvent(eventName, { oldUrl: oldUrl, newUrl: newUrl });
- });
- }]);
- };
- var defaultSelector = 'linearGradient, radialGradient, pattern';
- /**
- * @param {Element} svg
- * @param {string} [selector]
- * @return {Element}
- */
- var moveGradientsOutsideSymbol = function (svg, selector) {
- if ( selector === void 0 ) selector = defaultSelector;
- arrayFrom(svg.querySelectorAll('symbol')).forEach(function (symbol) {
- arrayFrom(symbol.querySelectorAll(selector)).forEach(function (node) {
- symbol.parentNode.insertBefore(node, symbol);
- });
- });
- return svg;
- };
- /**
- * @param {NodeList} nodes
- * @param {Function} [matcher]
- * @return {Attr[]}
- */
- function selectAttributes(nodes, matcher) {
- var attrs = arrayFrom(nodes).reduce(function (acc, node) {
- if (!node.attributes) {
- return acc;
- }
- var arrayfied = arrayFrom(node.attributes);
- var matched = matcher ? arrayfied.filter(matcher) : arrayfied;
- return acc.concat(matched);
- }, []);
- return attrs;
- }
- /**
- * @param {NodeList|Node} nodes
- * @param {boolean} [clone=true]
- * @return {string}
- */
- var xLinkNS = namespaces_1.xlink.uri;
- var xLinkAttrName = 'xlink:href';
- // eslint-disable-next-line no-useless-escape
- var specialUrlCharsPattern = /[{}|\\\^\[\]`"<>]/g;
- function encoder(url) {
- return url.replace(specialUrlCharsPattern, function (match) {
- return ("%" + (match[0].charCodeAt(0).toString(16).toUpperCase()));
- });
- }
- /**
- * @param {NodeList} nodes
- * @param {string} startsWith
- * @param {string} replaceWith
- * @return {NodeList}
- */
- function updateReferences(nodes, startsWith, replaceWith) {
- arrayFrom(nodes).forEach(function (node) {
- var href = node.getAttribute(xLinkAttrName);
- if (href && href.indexOf(startsWith) === 0) {
- var newUrl = href.replace(startsWith, replaceWith);
- node.setAttributeNS(xLinkNS, xLinkAttrName, newUrl);
- }
- });
- return nodes;
- }
- /**
- * List of SVG attributes to update url() target in them
- */
- var attList = [
- 'clipPath',
- 'colorProfile',
- 'src',
- 'cursor',
- 'fill',
- 'filter',
- 'marker',
- 'markerStart',
- 'markerMid',
- 'markerEnd',
- 'mask',
- 'stroke',
- 'style'
- ];
- var attSelector = attList.map(function (attr) { return ("[" + attr + "]"); }).join(',');
- /**
- * Update URLs in svg image (like `fill="url(...)"`) and update referencing elements
- * @param {Element} svg
- * @param {NodeList} references
- * @param {string|RegExp} startsWith
- * @param {string} replaceWith
- * @return {void}
- *
- * @example
- * const sprite = document.querySelector('svg.sprite');
- * const usages = document.querySelectorAll('use');
- * updateUrls(sprite, usages, '#', 'prefix#');
- */
- var updateUrls = function (svg, references, startsWith, replaceWith) {
- var startsWithEncoded = encoder(startsWith);
- var replaceWithEncoded = encoder(replaceWith);
- var nodes = svg.querySelectorAll(attSelector);
- var attrs = selectAttributes(nodes, function (ref) {
- var localName = ref.localName;
- var value = ref.value;
- return attList.indexOf(localName) !== -1 && value.indexOf(("url(" + startsWithEncoded)) !== -1;
- });
- attrs.forEach(function (attr) { return attr.value = attr.value.replace(startsWithEncoded, replaceWithEncoded); });
- updateReferences(references, startsWithEncoded, replaceWithEncoded);
- };
- /**
- * Internal emitter events
- * @enum
- * @private
- */
- var Events = {
- MOUNT: 'mount',
- SYMBOL_MOUNT: 'symbol_mount'
- };
- var BrowserSprite = (function (Sprite$$1) {
- function BrowserSprite(cfg) {
- var this$1 = this;
- if ( cfg === void 0 ) cfg = {};
- Sprite$$1.call(this, deepmerge(defaultConfig$1, cfg));
- var emitter = mitt();
- this._emitter = emitter;
- this.node = null;
- var ref = this;
- var config = ref.config;
- if (config.autoConfigure) {
- this._autoConfigure(cfg);
- }
- if (config.syncUrlsWithBaseTag) {
- var baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');
- emitter.on(Events.MOUNT, function () { return this$1.updateUrls('#', baseUrl); });
- }
- var handleLocationChange = this._handleLocationChange.bind(this);
- this._handleLocationChange = handleLocationChange;
- // Provide way to update sprite urls externally via dispatching custom window event
- if (config.listenLocationChangeEvent) {
- window.addEventListener(config.locationChangeEvent, handleLocationChange);
- }
- // Emit location change event in Angular automatically
- if (config.locationChangeAngularEmitter) {
- locationChangeAngularEmitter(config.locationChangeEvent);
- }
- // After sprite mounted
- emitter.on(Events.MOUNT, function (spriteNode) {
- if (config.moveGradientsOutsideSymbol) {
- moveGradientsOutsideSymbol(spriteNode);
- }
- });
- // After symbol mounted into sprite
- emitter.on(Events.SYMBOL_MOUNT, function (symbolNode) {
- if (config.moveGradientsOutsideSymbol) {
- moveGradientsOutsideSymbol(symbolNode.parentNode);
- }
- if (browser.isIE || browser.isEdge) {
- evalStylesIEWorkaround(symbolNode);
- }
- });
- }
- if ( Sprite$$1 ) BrowserSprite.__proto__ = Sprite$$1;
- BrowserSprite.prototype = Object.create( Sprite$$1 && Sprite$$1.prototype );
- BrowserSprite.prototype.constructor = BrowserSprite;
- var prototypeAccessors = { isMounted: {} };
- /**
- * @return {boolean}
- */
- prototypeAccessors.isMounted.get = function () {
- return !!this.node;
- };
- /**
- * Automatically configure following options
- * - `syncUrlsWithBaseTag`
- * - `locationChangeAngularEmitter`
- * - `moveGradientsOutsideSymbol`
- * @param {Object} cfg
- * @private
- */
- BrowserSprite.prototype._autoConfigure = function _autoConfigure (cfg) {
- var ref = this;
- var config = ref.config;
- if (typeof cfg.syncUrlsWithBaseTag === 'undefined') {
- config.syncUrlsWithBaseTag = typeof document.getElementsByTagName('base')[0] !== 'undefined';
- }
- if (typeof cfg.locationChangeAngularEmitter === 'undefined') {
- config.locationChangeAngularEmitter = 'angular' in window;
- }
- if (typeof cfg.moveGradientsOutsideSymbol === 'undefined') {
- config.moveGradientsOutsideSymbol = browser.isFirefox;
- }
- };
- /**
- * @param {Event} event
- * @param {Object} event.detail
- * @param {string} event.detail.oldUrl
- * @param {string} event.detail.newUrl
- * @private
- */
- BrowserSprite.prototype._handleLocationChange = function _handleLocationChange (event) {
- var ref = event.detail;
- var oldUrl = ref.oldUrl;
- var newUrl = ref.newUrl;
- this.updateUrls(oldUrl, newUrl);
- };
- /**
- * Add new symbol. If symbol with the same id exists it will be replaced.
- * If sprite already mounted - `symbol.mount(sprite.node)` will be called.
- * @fires Events#SYMBOL_MOUNT
- * @param {BrowserSpriteSymbol} symbol
- * @return {boolean} `true` - symbol was added, `false` - replaced
- */
- BrowserSprite.prototype.add = function add (symbol) {
- var sprite = this;
- var isNewSymbol = Sprite$$1.prototype.add.call(this, symbol);
- if (this.isMounted && isNewSymbol) {
- symbol.mount(sprite.node);
- this._emitter.emit(Events.SYMBOL_MOUNT, symbol.node);
- }
- return isNewSymbol;
- };
- /**
- * Attach to existing DOM node
- * @param {string|Element} target
- * @return {Element|null} attached DOM Element. null if node to attach not found.
- */
- BrowserSprite.prototype.attach = function attach (target) {
- var this$1 = this;
- var sprite = this;
- if (sprite.isMounted) {
- return sprite.node;
- }
- /** @type Element */
- var node = typeof target === 'string' ? document.querySelector(target) : target;
- sprite.node = node;
- // Already added symbols needs to be mounted
- this.symbols.forEach(function (symbol) {
- symbol.mount(sprite.node);
- this$1._emitter.emit(Events.SYMBOL_MOUNT, symbol.node);
- });
- // Create symbols from existing DOM nodes, add and mount them
- arrayFrom(node.querySelectorAll('symbol'))
- .forEach(function (symbolNode) {
- var symbol = BrowserSpriteSymbol.createFromExistingNode(symbolNode);
- symbol.node = symbolNode; // hack to prevent symbol mounting to sprite when adding
- sprite.add(symbol);
- });
- this._emitter.emit(Events.MOUNT, node);
- return node;
- };
- BrowserSprite.prototype.destroy = function destroy () {
- var ref = this;
- var config = ref.config;
- var symbols = ref.symbols;
- var _emitter = ref._emitter;
- symbols.forEach(function (s) { return s.destroy(); });
- _emitter.off('*');
- window.removeEventListener(config.locationChangeEvent, this._handleLocationChange);
- if (this.isMounted) {
- this.unmount();
- }
- };
- /**
- * @fires Events#MOUNT
- * @param {string|Element} [target]
- * @param {boolean} [prepend=false]
- * @return {Element|null} rendered sprite node. null if mount node not found.
- */
- BrowserSprite.prototype.mount = function mount (target, prepend) {
- if ( target === void 0 ) target = this.config.mountTo;
- if ( prepend === void 0 ) prepend = false;
- var sprite = this;
- if (sprite.isMounted) {
- return sprite.node;
- }
- var mountNode = typeof target === 'string' ? document.querySelector(target) : target;
- var node = sprite.render();
- this.node = node;
- if (prepend && mountNode.childNodes[0]) {
- mountNode.insertBefore(node, mountNode.childNodes[0]);
- } else {
- mountNode.appendChild(node);
- }
- this._emitter.emit(Events.MOUNT, node);
- return node;
- };
- /**
- * @return {Element}
- */
- BrowserSprite.prototype.render = function render () {
- return parse(this.stringify());
- };
- /**
- * Detach sprite from the DOM
- */
- BrowserSprite.prototype.unmount = function unmount () {
- this.node.parentNode.removeChild(this.node);
- };
- /**
- * Update URLs in sprite and usage elements
- * @param {string} oldUrl
- * @param {string} newUrl
- * @return {boolean} `true` - URLs was updated, `false` - sprite is not mounted
- */
- BrowserSprite.prototype.updateUrls = function updateUrls$1 (oldUrl, newUrl) {
- if (!this.isMounted) {
- return false;
- }
- var usages = document.querySelectorAll(this.config.usagesToUpdate);
- updateUrls(
- this.node,
- usages,
- ((getUrlWithoutFragment(oldUrl)) + "#"),
- ((getUrlWithoutFragment(newUrl)) + "#")
- );
- return true;
- };
- Object.defineProperties( BrowserSprite.prototype, prototypeAccessors );
- return BrowserSprite;
- }(Sprite));
- var ready$1 = createCommonjsModule(function (module) {
- /*!
- * domready (c) Dustin Diaz 2014 - License MIT
- */
- !function (name, definition) {
- { module.exports = definition(); }
- }('domready', function () {
- var fns = [], listener
- , doc = document
- , hack = doc.documentElement.doScroll
- , domContentLoaded = 'DOMContentLoaded'
- , loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);
- if (!loaded)
- { doc.addEventListener(domContentLoaded, listener = function () {
- doc.removeEventListener(domContentLoaded, listener);
- loaded = 1;
- while (listener = fns.shift()) { listener(); }
- }); }
- return function (fn) {
- loaded ? setTimeout(fn, 0) : fns.push(fn);
- }
- });
- });
- var spriteNodeId = '__SVG_SPRITE_NODE__';
- var spriteGlobalVarName = '__SVG_SPRITE__';
- var isSpriteExists = !!window[spriteGlobalVarName];
- // eslint-disable-next-line import/no-mutable-exports
- var sprite;
- if (isSpriteExists) {
- sprite = window[spriteGlobalVarName];
- } else {
- sprite = new BrowserSprite({ attrs: { id: spriteNodeId } });
- window[spriteGlobalVarName] = sprite;
- }
- var loadSprite = function () {
- /**
- * Check for page already contains sprite node
- * If found - attach to and reuse it's content
- * If not - render and mount the new sprite
- */
- var existing = document.getElementById(spriteNodeId);
- if (existing) {
- sprite.attach(existing);
- } else {
- sprite.mount(document.body, true);
- }
- };
- if (document.body) {
- loadSprite();
- } else {
- ready$1(loadSprite);
- }
- var sprite$1 = sprite;
- return sprite$1;
- })));
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(82)))
- /***/ }),
- /* 84 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _react = __webpack_require__(25);
- var _react2 = _interopRequireDefault(_react);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- var Icon = function (_PureComponent) {
- _inherits(Icon, _PureComponent);
- function Icon() {
- _classCallCheck(this, Icon);
- return _possibleConstructorReturn(this, (Icon.__proto__ || Object.getPrototypeOf(Icon)).apply(this, arguments));
- }
- _createClass(Icon, [{
- key: 'render',
- value: function render() {
- var _props = this.props,
- className = _props.className,
- glyph = _props.glyph,
- restProps = _objectWithoutProperties(_props, ['className', 'glyph']);
- return _react2.default.createElement(
- 'svg',
- _extends({ className: className }, restProps),
- _react2.default.createElement('use', { xlinkHref: '#' + glyph })
- );
- }
- }]);
- return Icon;
- }(_react.PureComponent);
- exports.default = Icon;
- Icon.defaultProps = {
- glyph: '',
- className: 'icon'
- };
- /***/ }),
- /* 85 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _react = __webpack_require__(25);
- var _react2 = _interopRequireDefault(_react);
- var _reactDom = __webpack_require__(101);
- var _twitter = __webpack_require__(190);
- var _twitter2 = _interopRequireDefault(_twitter);
- var _wikipedia = __webpack_require__(191);
- var _wikipedia2 = _interopRequireDefault(_wikipedia);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- document.addEventListener('DOMContentLoaded', function () {
- (0, _reactDom.render)(_react2.default.createElement(
- 'div',
- null,
- _react2.default.createElement(_twitter2.default, { width: '100' }),
- _react2.default.createElement(_wikipedia2.default, { width: '200' })
- ), document.querySelector('.app'));
- });
- /***/ }),
- /* 86 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var PooledClass = __webpack_require__(87);
- var ReactElement = __webpack_require__(15);
- var emptyFunction = __webpack_require__(8);
- var traverseAllChildren = __webpack_require__(88);
- var twoArgumentPooler = PooledClass.twoArgumentPooler;
- var fourArgumentPooler = PooledClass.fourArgumentPooler;
- var userProvidedKeyEscapeRegex = /\/+/g;
- function escapeUserProvidedKey(text) {
- return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
- }
- /**
- * PooledClass representing the bookkeeping associated with performing a child
- * traversal. Allows avoiding binding callbacks.
- *
- * @constructor ForEachBookKeeping
- * @param {!function} forEachFunction Function to perform traversal with.
- * @param {?*} forEachContext Context to perform context with.
- */
- function ForEachBookKeeping(forEachFunction, forEachContext) {
- this.func = forEachFunction;
- this.context = forEachContext;
- this.count = 0;
- }
- ForEachBookKeeping.prototype.destructor = function () {
- this.func = null;
- this.context = null;
- this.count = 0;
- };
- PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);
- function forEachSingleChild(bookKeeping, child, name) {
- var func = bookKeeping.func,
- context = bookKeeping.context;
- func.call(context, child, bookKeeping.count++);
- }
- /**
- * Iterates through children that are typically specified as `props.children`.
- *
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach
- *
- * The provided forEachFunc(child, index) will be called for each
- * leaf child.
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} forEachFunc
- * @param {*} forEachContext Context for forEachContext.
- */
- function forEachChildren(children, forEachFunc, forEachContext) {
- if (children == null) {
- return children;
- }
- var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);
- traverseAllChildren(children, forEachSingleChild, traverseContext);
- ForEachBookKeeping.release(traverseContext);
- }
- /**
- * PooledClass representing the bookkeeping associated with performing a child
- * mapping. Allows avoiding binding callbacks.
- *
- * @constructor MapBookKeeping
- * @param {!*} mapResult Object containing the ordered map of results.
- * @param {!function} mapFunction Function to perform mapping with.
- * @param {?*} mapContext Context to perform mapping with.
- */
- function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {
- this.result = mapResult;
- this.keyPrefix = keyPrefix;
- this.func = mapFunction;
- this.context = mapContext;
- this.count = 0;
- }
- MapBookKeeping.prototype.destructor = function () {
- this.result = null;
- this.keyPrefix = null;
- this.func = null;
- this.context = null;
- this.count = 0;
- };
- PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);
- function mapSingleChildIntoContext(bookKeeping, child, childKey) {
- var result = bookKeeping.result,
- keyPrefix = bookKeeping.keyPrefix,
- func = bookKeeping.func,
- context = bookKeeping.context;
- var mappedChild = func.call(context, child, bookKeeping.count++);
- if (Array.isArray(mappedChild)) {
- mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);
- } else if (mappedChild != null) {
- if (ReactElement.isValidElement(mappedChild)) {
- mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,
- // Keep both the (mapped) and old keys if they differ, just as
- // traverseAllChildren used to do for objects as children
- keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
- }
- result.push(mappedChild);
- }
- }
- function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
- var escapedPrefix = '';
- if (prefix != null) {
- escapedPrefix = escapeUserProvidedKey(prefix) + '/';
- }
- var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);
- traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
- MapBookKeeping.release(traverseContext);
- }
- /**
- * Maps children that are typically specified as `props.children`.
- *
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map
- *
- * The provided mapFunction(child, key, index) will be called for each
- * leaf child.
- *
- * @param {?*} children Children tree container.
- * @param {function(*, int)} func The map function.
- * @param {*} context Context for mapFunction.
- * @return {object} Object containing the ordered map of results.
- */
- function mapChildren(children, func, context) {
- if (children == null) {
- return children;
- }
- var result = [];
- mapIntoWithKeyPrefixInternal(children, result, null, func, context);
- return result;
- }
- function forEachSingleChildDummy(traverseContext, child, name) {
- return null;
- }
- /**
- * Count the number of children that are typically specified as
- * `props.children`.
- *
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count
- *
- * @param {?*} children Children tree container.
- * @return {number} The number of children.
- */
- function countChildren(children, context) {
- return traverseAllChildren(children, forEachSingleChildDummy, null);
- }
- /**
- * Flatten a children object (typically specified as `props.children`) and
- * return an array with appropriately re-keyed children.
- *
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray
- */
- function toArray(children) {
- var result = [];
- mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);
- return result;
- }
- var ReactChildren = {
- forEach: forEachChildren,
- map: mapChildren,
- mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,
- count: countChildren,
- toArray: toArray
- };
- module.exports = ReactChildren;
- /***/ }),
- /* 87 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(14);
- var invariant = __webpack_require__(1);
- /**
- * Static poolers. Several custom versions for each potential number of
- * arguments. A completely generic pooler is easy to implement, but would
- * require accessing the `arguments` object. In each of these, `this` refers to
- * the Class itself, not an instance. If any others are needed, simply add them
- * here, or in their own files.
- */
- var oneArgumentPooler = function (copyFieldsFrom) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, copyFieldsFrom);
- return instance;
- } else {
- return new Klass(copyFieldsFrom);
- }
- };
- var twoArgumentPooler = function (a1, a2) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, a1, a2);
- return instance;
- } else {
- return new Klass(a1, a2);
- }
- };
- var threeArgumentPooler = function (a1, a2, a3) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, a1, a2, a3);
- return instance;
- } else {
- return new Klass(a1, a2, a3);
- }
- };
- var fourArgumentPooler = function (a1, a2, a3, a4) {
- var Klass = this;
- if (Klass.instancePool.length) {
- var instance = Klass.instancePool.pop();
- Klass.call(instance, a1, a2, a3, a4);
- return instance;
- } else {
- return new Klass(a1, a2, a3, a4);
- }
- };
- var standardReleaser = function (instance) {
- var Klass = this;
- !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
- instance.destructor();
- if (Klass.instancePool.length < Klass.poolSize) {
- Klass.instancePool.push(instance);
- }
- };
- var DEFAULT_POOL_SIZE = 10;
- var DEFAULT_POOLER = oneArgumentPooler;
- /**
- * Augments `CopyConstructor` to be a poolable class, augmenting only the class
- * itself (statically) not adding any prototypical fields. Any CopyConstructor
- * you give this may have a `poolSize` property, and will look for a
- * prototypical `destructor` on instances.
- *
- * @param {Function} CopyConstructor Constructor that can be used to reset.
- * @param {Function} pooler Customizable pooler.
- */
- var addPoolingTo = function (CopyConstructor, pooler) {
- // Casting as any so that flow ignores the actual implementation and trusts
- // it to match the type we declared
- var NewKlass = CopyConstructor;
- NewKlass.instancePool = [];
- NewKlass.getPooled = pooler || DEFAULT_POOLER;
- if (!NewKlass.poolSize) {
- NewKlass.poolSize = DEFAULT_POOL_SIZE;
- }
- NewKlass.release = standardReleaser;
- return NewKlass;
- };
- var PooledClass = {
- addPoolingTo: addPoolingTo,
- oneArgumentPooler: oneArgumentPooler,
- twoArgumentPooler: twoArgumentPooler,
- threeArgumentPooler: threeArgumentPooler,
- fourArgumentPooler: fourArgumentPooler
- };
- module.exports = PooledClass;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 88 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(14);
- var ReactCurrentOwner = __webpack_require__(10);
- var REACT_ELEMENT_TYPE = __webpack_require__(51);
- var getIteratorFn = __webpack_require__(52);
- var invariant = __webpack_require__(1);
- var KeyEscapeUtils = __webpack_require__(89);
- var warning = __webpack_require__(2);
- var SEPARATOR = '.';
- var SUBSEPARATOR = ':';
- /**
- * This is inlined from ReactElement since this file is shared between
- * isomorphic and renderers. We could extract this to a
- *
- */
- /**
- * TODO: Test that a single child and an array with one item have the same key
- * pattern.
- */
- var didWarnAboutMaps = false;
- /**
- * Generate a key string that identifies a component within a set.
- *
- * @param {*} component A component that could contain a manual key.
- * @param {number} index Index that is used if a manual key is not provided.
- * @return {string}
- */
- function getComponentKey(component, index) {
- // Do some typechecking here since we call this blindly. We want to ensure
- // that we don't block potential future ES APIs.
- if (component && typeof component === 'object' && component.key != null) {
- // Explicit key
- return KeyEscapeUtils.escape(component.key);
- }
- // Implicit key determined by the index in the set
- return index.toString(36);
- }
- /**
- * @param {?*} children Children tree container.
- * @param {!string} nameSoFar Name of the key path so far.
- * @param {!function} callback Callback to invoke with each child found.
- * @param {?*} traverseContext Used to pass information throughout the traversal
- * process.
- * @return {!number} The number of children in this subtree.
- */
- function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
- var type = typeof children;
- if (type === 'undefined' || type === 'boolean') {
- // All of the above are perceived as null.
- children = null;
- }
- if (children === null || type === 'string' || type === 'number' ||
- // The following is inlined from ReactElement. This means we can optimize
- // some checks. React Fiber also inlines this logic for similar purposes.
- type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
- callback(traverseContext, children,
- // If it's the only child, treat the name as if it was wrapped in an array
- // so that it's consistent if the number of children grows.
- nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
- return 1;
- }
- var child;
- var nextName;
- var subtreeCount = 0; // Count of children found in the current subtree.
- var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
- if (Array.isArray(children)) {
- for (var i = 0; i < children.length; i++) {
- child = children[i];
- nextName = nextNamePrefix + getComponentKey(child, i);
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
- }
- } else {
- var iteratorFn = getIteratorFn(children);
- if (iteratorFn) {
- var iterator = iteratorFn.call(children);
- var step;
- if (iteratorFn !== children.entries) {
- var ii = 0;
- while (!(step = iterator.next()).done) {
- child = step.value;
- nextName = nextNamePrefix + getComponentKey(child, ii++);
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
- }
- } else {
- if (process.env.NODE_ENV !== 'production') {
- var mapsAsChildrenAddendum = '';
- if (ReactCurrentOwner.current) {
- var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
- if (mapsAsChildrenOwnerName) {
- mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
- }
- }
- process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;
- didWarnAboutMaps = true;
- }
- // Iterator will provide entry [k,v] tuples rather than values.
- while (!(step = iterator.next()).done) {
- var entry = step.value;
- if (entry) {
- child = entry[1];
- nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
- }
- }
- }
- } else if (type === 'object') {
- var addendum = '';
- if (process.env.NODE_ENV !== 'production') {
- addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';
- if (children._isReactElement) {
- addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';
- }
- if (ReactCurrentOwner.current) {
- var name = ReactCurrentOwner.current.getName();
- if (name) {
- addendum += ' Check the render method of `' + name + '`.';
- }
- }
- }
- var childrenString = String(children);
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;
- }
- }
- return subtreeCount;
- }
- /**
- * Traverses children that are typically specified as `props.children`, but
- * might also be specified through attributes:
- *
- * - `traverseAllChildren(this.props.children, ...)`
- * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
- *
- * The `traverseContext` is an optional argument that is passed through the
- * entire traversal. It can be used to store accumulations or anything else that
- * the callback might find relevant.
- *
- * @param {?*} children Children tree object.
- * @param {!function} callback To invoke upon traversing each child.
- * @param {?*} traverseContext Context for traversal.
- * @return {!number} The number of children in this subtree.
- */
- function traverseAllChildren(children, callback, traverseContext) {
- if (children == null) {
- return 0;
- }
- return traverseAllChildrenImpl(children, '', callback, traverseContext);
- }
- module.exports = traverseAllChildren;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 89 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /**
- * Escape and wrap key so it is safe to use as a reactid
- *
- * @param {string} key to be escaped.
- * @return {string} the escaped key.
- */
- function escape(key) {
- var escapeRegex = /[=:]/g;
- var escaperLookup = {
- '=': '=0',
- ':': '=2'
- };
- var escapedString = ('' + key).replace(escapeRegex, function (match) {
- return escaperLookup[match];
- });
- return '$' + escapedString;
- }
- /**
- * Unescape and unwrap key for human-readable display
- *
- * @param {string} key to unescape.
- * @return {string} the unescaped key.
- */
- function unescape(key) {
- var unescapeRegex = /(=0|=2)/g;
- var unescaperLookup = {
- '=0': '=',
- '=2': ':'
- };
- var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
- return ('' + keySubstring).replace(unescapeRegex, function (match) {
- return unescaperLookup[match];
- });
- }
- var KeyEscapeUtils = {
- escape: escape,
- unescape: unescape
- };
- module.exports = KeyEscapeUtils;
- /***/ }),
- /* 90 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var ReactComponent = __webpack_require__(33);
- var ReactNoopUpdateQueue = __webpack_require__(34);
- var emptyObject = __webpack_require__(20);
- /**
- * Base class helpers for the updating state of a component.
- */
- function ReactPureComponent(props, context, updater) {
- // Duplicated from ReactComponent.
- this.props = props;
- this.context = context;
- this.refs = emptyObject;
- // We initialize the default updater but the real one gets injected by the
- // renderer.
- this.updater = updater || ReactNoopUpdateQueue;
- }
- function ComponentDummy() {}
- ComponentDummy.prototype = ReactComponent.prototype;
- ReactPureComponent.prototype = new ComponentDummy();
- ReactPureComponent.prototype.constructor = ReactPureComponent;
- // Avoid an extra prototype jump for these methods.
- _assign(ReactPureComponent.prototype, ReactComponent.prototype);
- ReactPureComponent.prototype.isPureReactComponent = true;
- module.exports = ReactPureComponent;
- /***/ }),
- /* 91 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(14),
- _assign = __webpack_require__(4);
- var ReactComponent = __webpack_require__(33);
- var ReactElement = __webpack_require__(15);
- var ReactPropTypeLocationNames = __webpack_require__(53);
- var ReactNoopUpdateQueue = __webpack_require__(34);
- var emptyObject = __webpack_require__(20);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var MIXINS_KEY = 'mixins';
- // Helper function to allow the creation of anonymous functions which do not
- // have .name set to the name of the variable being assigned to.
- function identity(fn) {
- return fn;
- }
- /**
- * Policies that describe methods in `ReactClassInterface`.
- */
- var injectedMixins = [];
- /**
- * Composite components are higher-level components that compose other composite
- * or host components.
- *
- * To create a new type of `ReactClass`, pass a specification of
- * your new class to `React.createClass`. The only requirement of your class
- * specification is that you implement a `render` method.
- *
- * var MyComponent = React.createClass({
- * render: function() {
- * return <div>Hello World</div>;
- * }
- * });
- *
- * The class specification supports a specific protocol of methods that have
- * special meaning (e.g. `render`). See `ReactClassInterface` for
- * more the comprehensive protocol. Any other properties and methods in the
- * class specification will be available on the prototype.
- *
- * @interface ReactClassInterface
- * @internal
- */
- var ReactClassInterface = {
- /**
- * An array of Mixin objects to include when defining your component.
- *
- * @type {array}
- * @optional
- */
- mixins: 'DEFINE_MANY',
- /**
- * An object containing properties and methods that should be defined on
- * the component's constructor instead of its prototype (static methods).
- *
- * @type {object}
- * @optional
- */
- statics: 'DEFINE_MANY',
- /**
- * Definition of prop types for this component.
- *
- * @type {object}
- * @optional
- */
- propTypes: 'DEFINE_MANY',
- /**
- * Definition of context types for this component.
- *
- * @type {object}
- * @optional
- */
- contextTypes: 'DEFINE_MANY',
- /**
- * Definition of context types this component sets for its children.
- *
- * @type {object}
- * @optional
- */
- childContextTypes: 'DEFINE_MANY',
- // ==== Definition methods ====
- /**
- * Invoked when the component is mounted. Values in the mapping will be set on
- * `this.props` if that prop is not specified (i.e. using an `in` check).
- *
- * This method is invoked before `getInitialState` and therefore cannot rely
- * on `this.state` or use `this.setState`.
- *
- * @return {object}
- * @optional
- */
- getDefaultProps: 'DEFINE_MANY_MERGED',
- /**
- * Invoked once before the component is mounted. The return value will be used
- * as the initial value of `this.state`.
- *
- * getInitialState: function() {
- * return {
- * isOn: false,
- * fooBaz: new BazFoo()
- * }
- * }
- *
- * @return {object}
- * @optional
- */
- getInitialState: 'DEFINE_MANY_MERGED',
- /**
- * @return {object}
- * @optional
- */
- getChildContext: 'DEFINE_MANY_MERGED',
- /**
- * Uses props from `this.props` and state from `this.state` to render the
- * structure of the component.
- *
- * No guarantees are made about when or how often this method is invoked, so
- * it must not have side effects.
- *
- * render: function() {
- * var name = this.props.name;
- * return <div>Hello, {name}!</div>;
- * }
- *
- * @return {ReactComponent}
- * @required
- */
- render: 'DEFINE_ONCE',
- // ==== Delegate methods ====
- /**
- * Invoked when the component is initially created and about to be mounted.
- * This may have side effects, but any external subscriptions or data created
- * by this method must be cleaned up in `componentWillUnmount`.
- *
- * @optional
- */
- componentWillMount: 'DEFINE_MANY',
- /**
- * Invoked when the component has been mounted and has a DOM representation.
- * However, there is no guarantee that the DOM node is in the document.
- *
- * Use this as an opportunity to operate on the DOM when the component has
- * been mounted (initialized and rendered) for the first time.
- *
- * @param {DOMElement} rootNode DOM element representing the component.
- * @optional
- */
- componentDidMount: 'DEFINE_MANY',
- /**
- * Invoked before the component receives new props.
- *
- * Use this as an opportunity to react to a prop transition by updating the
- * state using `this.setState`. Current props are accessed via `this.props`.
- *
- * componentWillReceiveProps: function(nextProps, nextContext) {
- * this.setState({
- * likesIncreasing: nextProps.likeCount > this.props.likeCount
- * });
- * }
- *
- * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
- * transition may cause a state change, but the opposite is not true. If you
- * need it, you are probably looking for `componentWillUpdate`.
- *
- * @param {object} nextProps
- * @optional
- */
- componentWillReceiveProps: 'DEFINE_MANY',
- /**
- * Invoked while deciding if the component should be updated as a result of
- * receiving new props, state and/or context.
- *
- * Use this as an opportunity to `return false` when you're certain that the
- * transition to the new props/state/context will not require a component
- * update.
- *
- * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
- * return !equal(nextProps, this.props) ||
- * !equal(nextState, this.state) ||
- * !equal(nextContext, this.context);
- * }
- *
- * @param {object} nextProps
- * @param {?object} nextState
- * @param {?object} nextContext
- * @return {boolean} True if the component should update.
- * @optional
- */
- shouldComponentUpdate: 'DEFINE_ONCE',
- /**
- * Invoked when the component is about to update due to a transition from
- * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
- * and `nextContext`.
- *
- * Use this as an opportunity to perform preparation before an update occurs.
- *
- * NOTE: You **cannot** use `this.setState()` in this method.
- *
- * @param {object} nextProps
- * @param {?object} nextState
- * @param {?object} nextContext
- * @param {ReactReconcileTransaction} transaction
- * @optional
- */
- componentWillUpdate: 'DEFINE_MANY',
- /**
- * Invoked when the component's DOM representation has been updated.
- *
- * Use this as an opportunity to operate on the DOM when the component has
- * been updated.
- *
- * @param {object} prevProps
- * @param {?object} prevState
- * @param {?object} prevContext
- * @param {DOMElement} rootNode DOM element representing the component.
- * @optional
- */
- componentDidUpdate: 'DEFINE_MANY',
- /**
- * Invoked when the component is about to be removed from its parent and have
- * its DOM representation destroyed.
- *
- * Use this as an opportunity to deallocate any external resources.
- *
- * NOTE: There is no `componentDidUnmount` since your component will have been
- * destroyed by that point.
- *
- * @optional
- */
- componentWillUnmount: 'DEFINE_MANY',
- // ==== Advanced methods ====
- /**
- * Updates the component's currently mounted DOM representation.
- *
- * By default, this implements React's rendering and reconciliation algorithm.
- * Sophisticated clients may wish to override this.
- *
- * @param {ReactReconcileTransaction} transaction
- * @internal
- * @overridable
- */
- updateComponent: 'OVERRIDE_BASE'
- };
- /**
- * Mapping from class specification keys to special processing functions.
- *
- * Although these are declared like instance properties in the specification
- * when defining classes using `React.createClass`, they are actually static
- * and are accessible on the constructor instead of the prototype. Despite
- * being static, they must be defined outside of the "statics" key under
- * which all other static methods are defined.
- */
- var RESERVED_SPEC_KEYS = {
- displayName: function (Constructor, displayName) {
- Constructor.displayName = displayName;
- },
- mixins: function (Constructor, mixins) {
- if (mixins) {
- for (var i = 0; i < mixins.length; i++) {
- mixSpecIntoComponent(Constructor, mixins[i]);
- }
- }
- },
- childContextTypes: function (Constructor, childContextTypes) {
- if (process.env.NODE_ENV !== 'production') {
- validateTypeDef(Constructor, childContextTypes, 'childContext');
- }
- Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
- },
- contextTypes: function (Constructor, contextTypes) {
- if (process.env.NODE_ENV !== 'production') {
- validateTypeDef(Constructor, contextTypes, 'context');
- }
- Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
- },
- /**
- * Special case getDefaultProps which should move into statics but requires
- * automatic merging.
- */
- getDefaultProps: function (Constructor, getDefaultProps) {
- if (Constructor.getDefaultProps) {
- Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
- } else {
- Constructor.getDefaultProps = getDefaultProps;
- }
- },
- propTypes: function (Constructor, propTypes) {
- if (process.env.NODE_ENV !== 'production') {
- validateTypeDef(Constructor, propTypes, 'prop');
- }
- Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
- },
- statics: function (Constructor, statics) {
- mixStaticSpecIntoComponent(Constructor, statics);
- },
- autobind: function () {} };
- function validateTypeDef(Constructor, typeDef, location) {
- for (var propName in typeDef) {
- if (typeDef.hasOwnProperty(propName)) {
- // use a warning instead of an invariant so components
- // don't show up in prod but only in __DEV__
- process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;
- }
- }
- }
- function validateMethodOverride(isAlreadyDefined, name) {
- var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;
- // Disallow overriding of base class methods unless explicitly allowed.
- if (ReactClassMixin.hasOwnProperty(name)) {
- !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;
- }
- // Disallow defining methods more than once unless explicitly allowed.
- if (isAlreadyDefined) {
- !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;
- }
- }
- /**
- * Mixin helper which handles policy validation and reserved
- * specification keys when building React classes.
- */
- function mixSpecIntoComponent(Constructor, spec) {
- if (!spec) {
- if (process.env.NODE_ENV !== 'production') {
- var typeofSpec = typeof spec;
- var isMixinValid = typeofSpec === 'object' && spec !== null;
- process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;
- }
- return;
- }
- !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;
- !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;
- var proto = Constructor.prototype;
- var autoBindPairs = proto.__reactAutoBindPairs;
- // By handling mixins before any other properties, we ensure the same
- // chaining order is applied to methods with DEFINE_MANY policy, whether
- // mixins are listed before or after these methods in the spec.
- if (spec.hasOwnProperty(MIXINS_KEY)) {
- RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
- }
- for (var name in spec) {
- if (!spec.hasOwnProperty(name)) {
- continue;
- }
- if (name === MIXINS_KEY) {
- // We have already handled mixins in a special case above.
- continue;
- }
- var property = spec[name];
- var isAlreadyDefined = proto.hasOwnProperty(name);
- validateMethodOverride(isAlreadyDefined, name);
- if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
- RESERVED_SPEC_KEYS[name](Constructor, property);
- } else {
- // Setup methods on prototype:
- // The following member methods should not be automatically bound:
- // 1. Expected ReactClass methods (in the "interface").
- // 2. Overridden methods (that were mixed in).
- var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
- var isFunction = typeof property === 'function';
- var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
- if (shouldAutoBind) {
- autoBindPairs.push(name, property);
- proto[name] = property;
- } else {
- if (isAlreadyDefined) {
- var specPolicy = ReactClassInterface[name];
- // These cases should already be caught by validateMethodOverride.
- !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;
- // For methods which are defined more than once, call the existing
- // methods before calling the new property, merging if appropriate.
- if (specPolicy === 'DEFINE_MANY_MERGED') {
- proto[name] = createMergedResultFunction(proto[name], property);
- } else if (specPolicy === 'DEFINE_MANY') {
- proto[name] = createChainedFunction(proto[name], property);
- }
- } else {
- proto[name] = property;
- if (process.env.NODE_ENV !== 'production') {
- // Add verbose displayName to the function, which helps when looking
- // at profiling tools.
- if (typeof property === 'function' && spec.displayName) {
- proto[name].displayName = spec.displayName + '_' + name;
- }
- }
- }
- }
- }
- }
- }
- function mixStaticSpecIntoComponent(Constructor, statics) {
- if (!statics) {
- return;
- }
- for (var name in statics) {
- var property = statics[name];
- if (!statics.hasOwnProperty(name)) {
- continue;
- }
- var isReserved = name in RESERVED_SPEC_KEYS;
- !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;
- var isInherited = name in Constructor;
- !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;
- Constructor[name] = property;
- }
- }
- /**
- * Merge two objects, but throw if both contain the same key.
- *
- * @param {object} one The first object, which is mutated.
- * @param {object} two The second object
- * @return {object} one after it has been mutated to contain everything in two.
- */
- function mergeIntoWithNoDuplicateKeys(one, two) {
- !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;
- for (var key in two) {
- if (two.hasOwnProperty(key)) {
- !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;
- one[key] = two[key];
- }
- }
- return one;
- }
- /**
- * Creates a function that invokes two functions and merges their return values.
- *
- * @param {function} one Function to invoke first.
- * @param {function} two Function to invoke second.
- * @return {function} Function that invokes the two argument functions.
- * @private
- */
- function createMergedResultFunction(one, two) {
- return function mergedResult() {
- var a = one.apply(this, arguments);
- var b = two.apply(this, arguments);
- if (a == null) {
- return b;
- } else if (b == null) {
- return a;
- }
- var c = {};
- mergeIntoWithNoDuplicateKeys(c, a);
- mergeIntoWithNoDuplicateKeys(c, b);
- return c;
- };
- }
- /**
- * Creates a function that invokes two functions and ignores their return vales.
- *
- * @param {function} one Function to invoke first.
- * @param {function} two Function to invoke second.
- * @return {function} Function that invokes the two argument functions.
- * @private
- */
- function createChainedFunction(one, two) {
- return function chainedFunction() {
- one.apply(this, arguments);
- two.apply(this, arguments);
- };
- }
- /**
- * Binds a method to the component.
- *
- * @param {object} component Component whose method is going to be bound.
- * @param {function} method Method to be bound.
- * @return {function} The bound method.
- */
- function bindAutoBindMethod(component, method) {
- var boundMethod = method.bind(component);
- if (process.env.NODE_ENV !== 'production') {
- boundMethod.__reactBoundContext = component;
- boundMethod.__reactBoundMethod = method;
- boundMethod.__reactBoundArguments = null;
- var componentName = component.constructor.displayName;
- var _bind = boundMethod.bind;
- boundMethod.bind = function (newThis) {
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
- // User is trying to bind() an autobound method; we effectively will
- // ignore the value of "this" that the user is trying to use, so
- // let's warn.
- if (newThis !== component && newThis !== null) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;
- } else if (!args.length) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;
- return boundMethod;
- }
- var reboundMethod = _bind.apply(boundMethod, arguments);
- reboundMethod.__reactBoundContext = component;
- reboundMethod.__reactBoundMethod = method;
- reboundMethod.__reactBoundArguments = args;
- return reboundMethod;
- };
- }
- return boundMethod;
- }
- /**
- * Binds all auto-bound methods in a component.
- *
- * @param {object} component Component whose method is going to be bound.
- */
- function bindAutoBindMethods(component) {
- var pairs = component.__reactAutoBindPairs;
- for (var i = 0; i < pairs.length; i += 2) {
- var autoBindKey = pairs[i];
- var method = pairs[i + 1];
- component[autoBindKey] = bindAutoBindMethod(component, method);
- }
- }
- /**
- * Add more to the ReactClass base class. These are all legacy features and
- * therefore not already part of the modern ReactComponent.
- */
- var ReactClassMixin = {
- /**
- * TODO: This will be deprecated because state should always keep a consistent
- * type signature and the only use case for this, is to avoid that.
- */
- replaceState: function (newState, callback) {
- this.updater.enqueueReplaceState(this, newState);
- if (callback) {
- this.updater.enqueueCallback(this, callback, 'replaceState');
- }
- },
- /**
- * Checks whether or not this composite component is mounted.
- * @return {boolean} True if mounted, false otherwise.
- * @protected
- * @final
- */
- isMounted: function () {
- return this.updater.isMounted(this);
- }
- };
- var ReactClassComponent = function () {};
- _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
- var didWarnDeprecated = false;
- /**
- * Module for creating composite components.
- *
- * @class ReactClass
- */
- var ReactClass = {
- /**
- * Creates a composite component class given a class specification.
- * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
- *
- * @param {object} spec Class specification (which must define `render`).
- * @return {function} Component constructor function.
- * @public
- */
- createClass: function (spec) {
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0;
- didWarnDeprecated = true;
- }
- // To keep our warnings more understandable, we'll use a little hack here to
- // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
- // unnecessarily identify a class without displayName as 'Constructor'.
- var Constructor = identity(function (props, context, updater) {
- // This constructor gets overridden by mocks. The argument is used
- // by mocks to assert on what gets mounted.
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;
- }
- // Wire up auto-binding
- if (this.__reactAutoBindPairs.length) {
- bindAutoBindMethods(this);
- }
- this.props = props;
- this.context = context;
- this.refs = emptyObject;
- this.updater = updater || ReactNoopUpdateQueue;
- this.state = null;
- // ReactClasses doesn't have constructors. Instead, they use the
- // getInitialState and componentWillMount methods for initialization.
- var initialState = this.getInitialState ? this.getInitialState() : null;
- if (process.env.NODE_ENV !== 'production') {
- // We allow auto-mocks to proceed as if they're returning null.
- if (initialState === undefined && this.getInitialState._isMockFunction) {
- // This is probably bad practice. Consider warning here and
- // deprecating this convenience.
- initialState = null;
- }
- }
- !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;
- this.state = initialState;
- });
- Constructor.prototype = new ReactClassComponent();
- Constructor.prototype.constructor = Constructor;
- Constructor.prototype.__reactAutoBindPairs = [];
- injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
- mixSpecIntoComponent(Constructor, spec);
- // Initialize the defaultProps property after all mixins have been merged.
- if (Constructor.getDefaultProps) {
- Constructor.defaultProps = Constructor.getDefaultProps();
- }
- if (process.env.NODE_ENV !== 'production') {
- // This is a tag to indicate that the use of these method names is ok,
- // since it's used with createClass. If it's not, then it's likely a
- // mistake so we'll warn you to use the static property, property
- // initializer or constructor respectively.
- if (Constructor.getDefaultProps) {
- Constructor.getDefaultProps.isReactClassApproved = {};
- }
- if (Constructor.prototype.getInitialState) {
- Constructor.prototype.getInitialState.isReactClassApproved = {};
- }
- }
- !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;
- }
- // Reduce time spent doing lookups by setting these on the prototype.
- for (var methodName in ReactClassInterface) {
- if (!Constructor.prototype[methodName]) {
- Constructor.prototype[methodName] = null;
- }
- }
- return Constructor;
- },
- injection: {
- injectMixin: function (mixin) {
- injectedMixins.push(mixin);
- }
- }
- };
- module.exports = ReactClass;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 92 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactElement = __webpack_require__(15);
- /**
- * Create a factory that creates HTML tag elements.
- *
- * @private
- */
- var createDOMFactory = ReactElement.createFactory;
- if (process.env.NODE_ENV !== 'production') {
- var ReactElementValidator = __webpack_require__(54);
- createDOMFactory = ReactElementValidator.createFactory;
- }
- /**
- * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.
- * This is also accessible via `React.DOM`.
- *
- * @public
- */
- var ReactDOMFactories = {
- a: createDOMFactory('a'),
- abbr: createDOMFactory('abbr'),
- address: createDOMFactory('address'),
- area: createDOMFactory('area'),
- article: createDOMFactory('article'),
- aside: createDOMFactory('aside'),
- audio: createDOMFactory('audio'),
- b: createDOMFactory('b'),
- base: createDOMFactory('base'),
- bdi: createDOMFactory('bdi'),
- bdo: createDOMFactory('bdo'),
- big: createDOMFactory('big'),
- blockquote: createDOMFactory('blockquote'),
- body: createDOMFactory('body'),
- br: createDOMFactory('br'),
- button: createDOMFactory('button'),
- canvas: createDOMFactory('canvas'),
- caption: createDOMFactory('caption'),
- cite: createDOMFactory('cite'),
- code: createDOMFactory('code'),
- col: createDOMFactory('col'),
- colgroup: createDOMFactory('colgroup'),
- data: createDOMFactory('data'),
- datalist: createDOMFactory('datalist'),
- dd: createDOMFactory('dd'),
- del: createDOMFactory('del'),
- details: createDOMFactory('details'),
- dfn: createDOMFactory('dfn'),
- dialog: createDOMFactory('dialog'),
- div: createDOMFactory('div'),
- dl: createDOMFactory('dl'),
- dt: createDOMFactory('dt'),
- em: createDOMFactory('em'),
- embed: createDOMFactory('embed'),
- fieldset: createDOMFactory('fieldset'),
- figcaption: createDOMFactory('figcaption'),
- figure: createDOMFactory('figure'),
- footer: createDOMFactory('footer'),
- form: createDOMFactory('form'),
- h1: createDOMFactory('h1'),
- h2: createDOMFactory('h2'),
- h3: createDOMFactory('h3'),
- h4: createDOMFactory('h4'),
- h5: createDOMFactory('h5'),
- h6: createDOMFactory('h6'),
- head: createDOMFactory('head'),
- header: createDOMFactory('header'),
- hgroup: createDOMFactory('hgroup'),
- hr: createDOMFactory('hr'),
- html: createDOMFactory('html'),
- i: createDOMFactory('i'),
- iframe: createDOMFactory('iframe'),
- img: createDOMFactory('img'),
- input: createDOMFactory('input'),
- ins: createDOMFactory('ins'),
- kbd: createDOMFactory('kbd'),
- keygen: createDOMFactory('keygen'),
- label: createDOMFactory('label'),
- legend: createDOMFactory('legend'),
- li: createDOMFactory('li'),
- link: createDOMFactory('link'),
- main: createDOMFactory('main'),
- map: createDOMFactory('map'),
- mark: createDOMFactory('mark'),
- menu: createDOMFactory('menu'),
- menuitem: createDOMFactory('menuitem'),
- meta: createDOMFactory('meta'),
- meter: createDOMFactory('meter'),
- nav: createDOMFactory('nav'),
- noscript: createDOMFactory('noscript'),
- object: createDOMFactory('object'),
- ol: createDOMFactory('ol'),
- optgroup: createDOMFactory('optgroup'),
- option: createDOMFactory('option'),
- output: createDOMFactory('output'),
- p: createDOMFactory('p'),
- param: createDOMFactory('param'),
- picture: createDOMFactory('picture'),
- pre: createDOMFactory('pre'),
- progress: createDOMFactory('progress'),
- q: createDOMFactory('q'),
- rp: createDOMFactory('rp'),
- rt: createDOMFactory('rt'),
- ruby: createDOMFactory('ruby'),
- s: createDOMFactory('s'),
- samp: createDOMFactory('samp'),
- script: createDOMFactory('script'),
- section: createDOMFactory('section'),
- select: createDOMFactory('select'),
- small: createDOMFactory('small'),
- source: createDOMFactory('source'),
- span: createDOMFactory('span'),
- strong: createDOMFactory('strong'),
- style: createDOMFactory('style'),
- sub: createDOMFactory('sub'),
- summary: createDOMFactory('summary'),
- sup: createDOMFactory('sup'),
- table: createDOMFactory('table'),
- tbody: createDOMFactory('tbody'),
- td: createDOMFactory('td'),
- textarea: createDOMFactory('textarea'),
- tfoot: createDOMFactory('tfoot'),
- th: createDOMFactory('th'),
- thead: createDOMFactory('thead'),
- time: createDOMFactory('time'),
- title: createDOMFactory('title'),
- tr: createDOMFactory('tr'),
- track: createDOMFactory('track'),
- u: createDOMFactory('u'),
- ul: createDOMFactory('ul'),
- 'var': createDOMFactory('var'),
- video: createDOMFactory('video'),
- wbr: createDOMFactory('wbr'),
- // SVG
- circle: createDOMFactory('circle'),
- clipPath: createDOMFactory('clipPath'),
- defs: createDOMFactory('defs'),
- ellipse: createDOMFactory('ellipse'),
- g: createDOMFactory('g'),
- image: createDOMFactory('image'),
- line: createDOMFactory('line'),
- linearGradient: createDOMFactory('linearGradient'),
- mask: createDOMFactory('mask'),
- path: createDOMFactory('path'),
- pattern: createDOMFactory('pattern'),
- polygon: createDOMFactory('polygon'),
- polyline: createDOMFactory('polyline'),
- radialGradient: createDOMFactory('radialGradient'),
- rect: createDOMFactory('rect'),
- stop: createDOMFactory('stop'),
- svg: createDOMFactory('svg'),
- text: createDOMFactory('text'),
- tspan: createDOMFactory('tspan')
- };
- module.exports = ReactDOMFactories;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 93 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(14);
- var ReactPropTypeLocationNames = __webpack_require__(53);
- var ReactPropTypesSecret = __webpack_require__(94);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var ReactComponentTreeHook;
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
- // Temporary hack.
- // Inline requires don't work well with Jest:
- // https://github.com/facebook/react/issues/7240
- // Remove the inline requires when we don't need them anymore:
- // https://github.com/facebook/react/pull/7178
- ReactComponentTreeHook = __webpack_require__(7);
- }
- var loggedTypeFailures = {};
- /**
- * Assert that the values match with the type specs.
- * Error messages are memorized and will only be shown once.
- *
- * @param {object} typeSpecs Map of name to a ReactPropType
- * @param {object} values Runtime values that need to be type-checked
- * @param {string} location e.g. "prop", "context", "child context"
- * @param {string} componentName Name of the component for error messages.
- * @param {?object} element The React element that is being type-checked
- * @param {?number} debugID The React component instance that is being type-checked
- * @private
- */
- function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
- for (var typeSpecName in typeSpecs) {
- if (typeSpecs.hasOwnProperty(typeSpecName)) {
- var error;
- // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0;
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
- } catch (ex) {
- error = ex;
- }
- process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error.message] = true;
- var componentStackInfo = '';
- if (process.env.NODE_ENV !== 'production') {
- if (!ReactComponentTreeHook) {
- ReactComponentTreeHook = __webpack_require__(7);
- }
- if (debugID !== null) {
- componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
- } else if (element !== null) {
- componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
- }
- }
- process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
- }
- }
- }
- }
- module.exports = checkReactTypeSpec;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 94 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- module.exports = ReactPropTypesSecret;
- /***/ }),
- /* 95 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _require = __webpack_require__(15),
- isValidElement = _require.isValidElement;
- var factory = __webpack_require__(96);
- module.exports = factory(isValidElement);
- /***/ }),
- /* 96 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- // React 15.5 references this module, and assumes PropTypes are still callable in production.
- // Therefore we re-export development-only version with all the PropTypes checks here.
- // However if one is migrating to the `prop-types` npm library, they will go through the
- // `index.js` entry point, and it will branch depending on the environment.
- var factory = __webpack_require__(97);
- module.exports = function(isValidElement) {
- // It is still allowed in 15.5.
- var throwOnDirectAccess = false;
- return factory(isValidElement, throwOnDirectAccess);
- };
- /***/ }),
- /* 97 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var emptyFunction = __webpack_require__(8);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var assign = __webpack_require__(4);
- var ReactPropTypesSecret = __webpack_require__(55);
- var checkPropTypes = __webpack_require__(98);
- module.exports = function(isValidElement, throwOnDirectAccess) {
- /* global Symbol */
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
- /**
- * Returns the iterator method function contained on the iterable object.
- *
- * Be sure to invoke the function with the iterable as context:
- *
- * var iteratorFn = getIteratorFn(myIterable);
- * if (iteratorFn) {
- * var iterator = iteratorFn.call(myIterable);
- * ...
- * }
- *
- * @param {?object} maybeIterable
- * @return {?function}
- */
- function getIteratorFn(maybeIterable) {
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
- if (typeof iteratorFn === 'function') {
- return iteratorFn;
- }
- }
- /**
- * Collection of methods that allow declaration and validation of props that are
- * supplied to React components. Example usage:
- *
- * var Props = require('ReactPropTypes');
- * var MyArticle = React.createClass({
- * propTypes: {
- * // An optional string prop named "description".
- * description: Props.string,
- *
- * // A required enum prop named "category".
- * category: Props.oneOf(['News','Photos']).isRequired,
- *
- * // A prop named "dialog" that requires an instance of Dialog.
- * dialog: Props.instanceOf(Dialog).isRequired
- * },
- * render: function() { ... }
- * });
- *
- * A more formal specification of how these methods are used:
- *
- * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
- * decl := ReactPropTypes.{type}(.isRequired)?
- *
- * Each and every declaration produces a function with the same signature. This
- * allows the creation of custom validation functions. For example:
- *
- * var MyLink = React.createClass({
- * propTypes: {
- * // An optional string or URI prop named "href".
- * href: function(props, propName, componentName) {
- * var propValue = props[propName];
- * if (propValue != null && typeof propValue !== 'string' &&
- * !(propValue instanceof URI)) {
- * return new Error(
- * 'Expected a string or an URI for ' + propName + ' in ' +
- * componentName
- * );
- * }
- * }
- * },
- * render: function() {...}
- * });
- *
- * @internal
- */
- var ANONYMOUS = '<<anonymous>>';
- // Important!
- // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
- var ReactPropTypes = {
- array: createPrimitiveTypeChecker('array'),
- bool: createPrimitiveTypeChecker('boolean'),
- func: createPrimitiveTypeChecker('function'),
- number: createPrimitiveTypeChecker('number'),
- object: createPrimitiveTypeChecker('object'),
- string: createPrimitiveTypeChecker('string'),
- symbol: createPrimitiveTypeChecker('symbol'),
- any: createAnyTypeChecker(),
- arrayOf: createArrayOfTypeChecker,
- element: createElementTypeChecker(),
- instanceOf: createInstanceTypeChecker,
- node: createNodeChecker(),
- objectOf: createObjectOfTypeChecker,
- oneOf: createEnumTypeChecker,
- oneOfType: createUnionTypeChecker,
- shape: createShapeTypeChecker,
- exact: createStrictShapeTypeChecker,
- };
- /**
- * inlined Object.is polyfill to avoid requiring consumers ship their own
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
- */
- /*eslint-disable no-self-compare*/
- function is(x, y) {
- // SameValue algorithm
- if (x === y) {
- // Steps 1-5, 7-10
- // Steps 6.b-6.e: +0 != -0
- return x !== 0 || 1 / x === 1 / y;
- } else {
- // Step 6.a: NaN == NaN
- return x !== x && y !== y;
- }
- }
- /*eslint-enable no-self-compare*/
- /**
- * We use an Error-like object for backward compatibility as people may call
- * PropTypes directly and inspect their output. However, we don't use real
- * Errors anymore. We don't inspect their stack anyway, and creating them
- * is prohibitively expensive if they are created too often, such as what
- * happens in oneOfType() for any type before the one that matched.
- */
- function PropTypeError(message) {
- this.message = message;
- this.stack = '';
- }
- // Make `instanceof Error` still work for returned errors.
- PropTypeError.prototype = Error.prototype;
- function createChainableTypeChecker(validate) {
- if (process.env.NODE_ENV !== 'production') {
- var manualPropTypeCallCache = {};
- var manualPropTypeWarningCount = 0;
- }
- function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
- componentName = componentName || ANONYMOUS;
- propFullName = propFullName || propName;
- if (secret !== ReactPropTypesSecret) {
- if (throwOnDirectAccess) {
- // New behavior only for users of `prop-types` package
- invariant(
- false,
- 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
- 'Use `PropTypes.checkPropTypes()` to call them. ' +
- 'Read more at http://fb.me/use-check-prop-types'
- );
- } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
- // Old behavior for people using React.PropTypes
- var cacheKey = componentName + ':' + propName;
- if (
- !manualPropTypeCallCache[cacheKey] &&
- // Avoid spamming the console because they are often not actionable except for lib authors
- manualPropTypeWarningCount < 3
- ) {
- warning(
- false,
- 'You are manually calling a React.PropTypes validation ' +
- 'function for the `%s` prop on `%s`. This is deprecated ' +
- 'and will throw in the standalone `prop-types` package. ' +
- 'You may be seeing this warning due to a third-party PropTypes ' +
- 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',
- propFullName,
- componentName
- );
- manualPropTypeCallCache[cacheKey] = true;
- manualPropTypeWarningCount++;
- }
- }
- }
- if (props[propName] == null) {
- if (isRequired) {
- if (props[propName] === null) {
- return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
- }
- return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
- }
- return null;
- } else {
- return validate(props, propName, componentName, location, propFullName);
- }
- }
- var chainedCheckType = checkType.bind(null, false);
- chainedCheckType.isRequired = checkType.bind(null, true);
- return chainedCheckType;
- }
- function createPrimitiveTypeChecker(expectedType) {
- function validate(props, propName, componentName, location, propFullName, secret) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== expectedType) {
- // `propValue` being instance of, say, date/regexp, pass the 'object'
- // check, but we can offer a more precise error message here rather than
- // 'of type `object`'.
- var preciseType = getPreciseType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createAnyTypeChecker() {
- return createChainableTypeChecker(emptyFunction.thatReturnsNull);
- }
- function createArrayOfTypeChecker(typeChecker) {
- function validate(props, propName, componentName, location, propFullName) {
- if (typeof typeChecker !== 'function') {
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
- }
- var propValue = props[propName];
- if (!Array.isArray(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
- }
- for (var i = 0; i < propValue.length; i++) {
- var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
- if (error instanceof Error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createElementTypeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- if (!isValidElement(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createInstanceTypeChecker(expectedClass) {
- function validate(props, propName, componentName, location, propFullName) {
- if (!(props[propName] instanceof expectedClass)) {
- var expectedClassName = expectedClass.name || ANONYMOUS;
- var actualClassName = getClassName(props[propName]);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createEnumTypeChecker(expectedValues) {
- if (!Array.isArray(expectedValues)) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
- return emptyFunction.thatReturnsNull;
- }
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- for (var i = 0; i < expectedValues.length; i++) {
- if (is(propValue, expectedValues[i])) {
- return null;
- }
- }
- var valuesString = JSON.stringify(expectedValues);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
- }
- return createChainableTypeChecker(validate);
- }
- function createObjectOfTypeChecker(typeChecker) {
- function validate(props, propName, componentName, location, propFullName) {
- if (typeof typeChecker !== 'function') {
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
- }
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
- }
- for (var key in propValue) {
- if (propValue.hasOwnProperty(key)) {
- var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error instanceof Error) {
- return error;
- }
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createUnionTypeChecker(arrayOfTypeCheckers) {
- if (!Array.isArray(arrayOfTypeCheckers)) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
- return emptyFunction.thatReturnsNull;
- }
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
- var checker = arrayOfTypeCheckers[i];
- if (typeof checker !== 'function') {
- warning(
- false,
- 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
- 'received %s at index %s.',
- getPostfixForTypeWarning(checker),
- i
- );
- return emptyFunction.thatReturnsNull;
- }
- }
- function validate(props, propName, componentName, location, propFullName) {
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
- var checker = arrayOfTypeCheckers[i];
- if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
- return null;
- }
- }
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
- }
- return createChainableTypeChecker(validate);
- }
- function createNodeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- if (!isNode(props[propName])) {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createShapeTypeChecker(shapeTypes) {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
- }
- for (var key in shapeTypes) {
- var checker = shapeTypes[key];
- if (!checker) {
- continue;
- }
- var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createStrictShapeTypeChecker(shapeTypes) {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
- }
- // We need to check all keys in case some are required but missing from
- // props.
- var allKeys = assign({}, props[propName], shapeTypes);
- for (var key in allKeys) {
- var checker = shapeTypes[key];
- if (!checker) {
- return new PropTypeError(
- 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
- '\nBad object: ' + JSON.stringify(props[propName], null, ' ') +
- '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')
- );
- }
- var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function isNode(propValue) {
- switch (typeof propValue) {
- case 'number':
- case 'string':
- case 'undefined':
- return true;
- case 'boolean':
- return !propValue;
- case 'object':
- if (Array.isArray(propValue)) {
- return propValue.every(isNode);
- }
- if (propValue === null || isValidElement(propValue)) {
- return true;
- }
- var iteratorFn = getIteratorFn(propValue);
- if (iteratorFn) {
- var iterator = iteratorFn.call(propValue);
- var step;
- if (iteratorFn !== propValue.entries) {
- while (!(step = iterator.next()).done) {
- if (!isNode(step.value)) {
- return false;
- }
- }
- } else {
- // Iterator will provide entry [k,v] tuples rather than values.
- while (!(step = iterator.next()).done) {
- var entry = step.value;
- if (entry) {
- if (!isNode(entry[1])) {
- return false;
- }
- }
- }
- }
- } else {
- return false;
- }
- return true;
- default:
- return false;
- }
- }
- function isSymbol(propType, propValue) {
- // Native Symbol.
- if (propType === 'symbol') {
- return true;
- }
- // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
- if (propValue['@@toStringTag'] === 'Symbol') {
- return true;
- }
- // Fallback for non-spec compliant Symbols which are polyfilled.
- if (typeof Symbol === 'function' && propValue instanceof Symbol) {
- return true;
- }
- return false;
- }
- // Equivalent of `typeof` but with special handling for array and regexp.
- function getPropType(propValue) {
- var propType = typeof propValue;
- if (Array.isArray(propValue)) {
- return 'array';
- }
- if (propValue instanceof RegExp) {
- // Old webkits (at least until Android 4.0) return 'function' rather than
- // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
- // passes PropTypes.object.
- return 'object';
- }
- if (isSymbol(propType, propValue)) {
- return 'symbol';
- }
- return propType;
- }
- // This handles more types than `getPropType`. Only used for error messages.
- // See `createPrimitiveTypeChecker`.
- function getPreciseType(propValue) {
- if (typeof propValue === 'undefined' || propValue === null) {
- return '' + propValue;
- }
- var propType = getPropType(propValue);
- if (propType === 'object') {
- if (propValue instanceof Date) {
- return 'date';
- } else if (propValue instanceof RegExp) {
- return 'regexp';
- }
- }
- return propType;
- }
- // Returns a string that is postfixed to a warning about an invalid type.
- // For example, "undefined" or "of type array"
- function getPostfixForTypeWarning(value) {
- var type = getPreciseType(value);
- switch (type) {
- case 'array':
- case 'object':
- return 'an ' + type;
- case 'boolean':
- case 'date':
- case 'regexp':
- return 'a ' + type;
- default:
- return type;
- }
- }
- // Returns class name of the object, if any.
- function getClassName(propValue) {
- if (!propValue.constructor || !propValue.constructor.name) {
- return ANONYMOUS;
- }
- return propValue.constructor.name;
- }
- ReactPropTypes.checkPropTypes = checkPropTypes;
- ReactPropTypes.PropTypes = ReactPropTypes;
- return ReactPropTypes;
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 98 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- if (process.env.NODE_ENV !== 'production') {
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var ReactPropTypesSecret = __webpack_require__(55);
- var loggedTypeFailures = {};
- }
- /**
- * Assert that the values match with the type specs.
- * Error messages are memorized and will only be shown once.
- *
- * @param {object} typeSpecs Map of name to a ReactPropType
- * @param {object} values Runtime values that need to be type-checked
- * @param {string} location e.g. "prop", "context", "child context"
- * @param {string} componentName Name of the component for error messages.
- * @param {?Function} getStack Returns the component stack.
- * @private
- */
- function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
- if (process.env.NODE_ENV !== 'production') {
- for (var typeSpecName in typeSpecs) {
- if (typeSpecs.hasOwnProperty(typeSpecName)) {
- var error;
- // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
- } catch (ex) {
- error = ex;
- }
- warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error.message] = true;
- var stack = getStack ? getStack() : '';
- warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
- }
- }
- }
- }
- }
- module.exports = checkPropTypes;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 99 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- module.exports = '15.5.4';
- /***/ }),
- /* 100 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(14);
- var ReactElement = __webpack_require__(15);
- var invariant = __webpack_require__(1);
- /**
- * Returns the first child in a collection of children and verifies that there
- * is only one child in the collection.
- *
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only
- *
- * The current implementation of this function assumes that a single child gets
- * passed without a wrapper, but the purpose of this helper function is to
- * abstract away the particular structure of children.
- *
- * @param {?object} children Child collection structure.
- * @return {ReactElement} The first and only `ReactElement` contained in the
- * structure.
- */
- function onlyChild(children) {
- !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;
- return children;
- }
- module.exports = onlyChild;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 101 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = __webpack_require__(102);
- /***/ }),
- /* 102 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactDefaultInjection = __webpack_require__(103);
- var ReactMount = __webpack_require__(79);
- var ReactReconciler = __webpack_require__(18);
- var ReactUpdates = __webpack_require__(11);
- var ReactVersion = __webpack_require__(184);
- var findDOMNode = __webpack_require__(185);
- var getHostComponentFromComposite = __webpack_require__(80);
- var renderSubtreeIntoContainer = __webpack_require__(186);
- var warning = __webpack_require__(2);
- ReactDefaultInjection.inject();
- var ReactDOM = {
- findDOMNode: findDOMNode,
- render: ReactMount.render,
- unmountComponentAtNode: ReactMount.unmountComponentAtNode,
- version: ReactVersion,
- /* eslint-disable camelcase */
- unstable_batchedUpdates: ReactUpdates.batchedUpdates,
- unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer
- };
- // Inject the runtime into a devtools global hook regardless of browser.
- // Allows for debugging when the hook is injected on the page.
- if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
- __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
- ComponentTree: {
- getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,
- getNodeFromInstance: function (inst) {
- // inst is an internal instance (but could be a composite)
- if (inst._renderedComponent) {
- inst = getHostComponentFromComposite(inst);
- }
- if (inst) {
- return ReactDOMComponentTree.getNodeFromInstance(inst);
- } else {
- return null;
- }
- }
- },
- Mount: ReactMount,
- Reconciler: ReactReconciler
- });
- }
- if (process.env.NODE_ENV !== 'production') {
- var ExecutionEnvironment = __webpack_require__(6);
- if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
- // First check if devtools is not installed
- if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
- // If we're in Chrome or Firefox, provide a download link if not installed.
- if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
- // Firefox does not have the issue with devtools loaded over file://
- var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;
- console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');
- }
- }
- var testFunc = function testFn() {};
- process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;
- // If we're in IE8, check to see if we are in compatibility mode and provide
- // information on preventing compatibility mode
- var ieCompatibilityMode = document.documentMode && document.documentMode < 8;
- process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv="X-UA-Compatible" content="IE=edge" />') : void 0;
- var expectedFeatures = [
- // shims
- Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];
- for (var i = 0; i < expectedFeatures.length; i++) {
- if (!expectedFeatures[i]) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;
- break;
- }
- }
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- var ReactInstrumentation = __webpack_require__(9);
- var ReactDOMUnknownPropertyHook = __webpack_require__(187);
- var ReactDOMNullInputValuePropHook = __webpack_require__(188);
- var ReactDOMInvalidARIAHook = __webpack_require__(189);
- ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);
- ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);
- ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);
- }
- module.exports = ReactDOM;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 103 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ARIADOMPropertyConfig = __webpack_require__(104);
- var BeforeInputEventPlugin = __webpack_require__(105);
- var ChangeEventPlugin = __webpack_require__(109);
- var DefaultEventPluginOrder = __webpack_require__(117);
- var EnterLeaveEventPlugin = __webpack_require__(118);
- var HTMLDOMPropertyConfig = __webpack_require__(119);
- var ReactComponentBrowserEnvironment = __webpack_require__(120);
- var ReactDOMComponent = __webpack_require__(126);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactDOMEmptyComponent = __webpack_require__(155);
- var ReactDOMTreeTraversal = __webpack_require__(156);
- var ReactDOMTextComponent = __webpack_require__(157);
- var ReactDefaultBatchingStrategy = __webpack_require__(158);
- var ReactEventListener = __webpack_require__(159);
- var ReactInjection = __webpack_require__(161);
- var ReactReconcileTransaction = __webpack_require__(162);
- var SVGDOMPropertyConfig = __webpack_require__(168);
- var SelectEventPlugin = __webpack_require__(169);
- var SimpleEventPlugin = __webpack_require__(170);
- var alreadyInjected = false;
- function inject() {
- if (alreadyInjected) {
- // TODO: This is currently true because these injections are shared between
- // the client and the server package. They should be built independently
- // and not share any injection state. Then this problem will be solved.
- return;
- }
- alreadyInjected = true;
- ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
- /**
- * Inject modules for resolving DOM hierarchy and plugin ordering.
- */
- ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
- ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
- ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
- /**
- * Some important event plugins included by default (without having to require
- * them).
- */
- ReactInjection.EventPluginHub.injectEventPluginsByName({
- SimpleEventPlugin: SimpleEventPlugin,
- EnterLeaveEventPlugin: EnterLeaveEventPlugin,
- ChangeEventPlugin: ChangeEventPlugin,
- SelectEventPlugin: SelectEventPlugin,
- BeforeInputEventPlugin: BeforeInputEventPlugin
- });
- ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);
- ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);
- ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);
- ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
- ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
- ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
- return new ReactDOMEmptyComponent(instantiate);
- });
- ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
- ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
- ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
- }
- module.exports = {
- inject: inject
- };
- /***/ }),
- /* 104 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ARIADOMPropertyConfig = {
- Properties: {
- // Global States and Properties
- 'aria-current': 0, // state
- 'aria-details': 0,
- 'aria-disabled': 0, // state
- 'aria-hidden': 0, // state
- 'aria-invalid': 0, // state
- 'aria-keyshortcuts': 0,
- 'aria-label': 0,
- 'aria-roledescription': 0,
- // Widget Attributes
- 'aria-autocomplete': 0,
- 'aria-checked': 0,
- 'aria-expanded': 0,
- 'aria-haspopup': 0,
- 'aria-level': 0,
- 'aria-modal': 0,
- 'aria-multiline': 0,
- 'aria-multiselectable': 0,
- 'aria-orientation': 0,
- 'aria-placeholder': 0,
- 'aria-pressed': 0,
- 'aria-readonly': 0,
- 'aria-required': 0,
- 'aria-selected': 0,
- 'aria-sort': 0,
- 'aria-valuemax': 0,
- 'aria-valuemin': 0,
- 'aria-valuenow': 0,
- 'aria-valuetext': 0,
- // Live Region Attributes
- 'aria-atomic': 0,
- 'aria-busy': 0,
- 'aria-live': 0,
- 'aria-relevant': 0,
- // Drag-and-Drop Attributes
- 'aria-dropeffect': 0,
- 'aria-grabbed': 0,
- // Relationship Attributes
- 'aria-activedescendant': 0,
- 'aria-colcount': 0,
- 'aria-colindex': 0,
- 'aria-colspan': 0,
- 'aria-controls': 0,
- 'aria-describedby': 0,
- 'aria-errormessage': 0,
- 'aria-flowto': 0,
- 'aria-labelledby': 0,
- 'aria-owns': 0,
- 'aria-posinset': 0,
- 'aria-rowcount': 0,
- 'aria-rowindex': 0,
- 'aria-rowspan': 0,
- 'aria-setsize': 0
- },
- DOMAttributeNames: {},
- DOMPropertyNames: {}
- };
- module.exports = ARIADOMPropertyConfig;
- /***/ }),
- /* 105 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var EventPropagators = __webpack_require__(21);
- var ExecutionEnvironment = __webpack_require__(6);
- var FallbackCompositionState = __webpack_require__(106);
- var SyntheticCompositionEvent = __webpack_require__(107);
- var SyntheticInputEvent = __webpack_require__(108);
- var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
- var START_KEYCODE = 229;
- var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;
- var documentMode = null;
- if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
- documentMode = document.documentMode;
- }
- // Webkit offers a very useful `textInput` event that can be used to
- // directly represent `beforeInput`. The IE `textinput` event is not as
- // useful, so we don't use it.
- var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();
- // In IE9+, we have access to composition events, but the data supplied
- // by the native compositionend event may be incorrect. Japanese ideographic
- // spaces, for instance (\u3000) are not recorded correctly.
- var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
- /**
- * Opera <= 12 includes TextEvent in window, but does not fire
- * text input events. Rely on keypress instead.
- */
- function isPresto() {
- var opera = window.opera;
- return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;
- }
- var SPACEBAR_CODE = 32;
- var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
- // Events and their corresponding property names.
- var eventTypes = {
- beforeInput: {
- phasedRegistrationNames: {
- bubbled: 'onBeforeInput',
- captured: 'onBeforeInputCapture'
- },
- dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']
- },
- compositionEnd: {
- phasedRegistrationNames: {
- bubbled: 'onCompositionEnd',
- captured: 'onCompositionEndCapture'
- },
- dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
- },
- compositionStart: {
- phasedRegistrationNames: {
- bubbled: 'onCompositionStart',
- captured: 'onCompositionStartCapture'
- },
- dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
- },
- compositionUpdate: {
- phasedRegistrationNames: {
- bubbled: 'onCompositionUpdate',
- captured: 'onCompositionUpdateCapture'
- },
- dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
- }
- };
- // Track whether we've ever handled a keypress on the space key.
- var hasSpaceKeypress = false;
- /**
- * Return whether a native keypress event is assumed to be a command.
- * This is required because Firefox fires `keypress` events for key commands
- * (cut, copy, select-all, etc.) even though no character is inserted.
- */
- function isKeypressCommand(nativeEvent) {
- return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
- // ctrlKey && altKey is equivalent to AltGr, and is not a command.
- !(nativeEvent.ctrlKey && nativeEvent.altKey);
- }
- /**
- * Translate native top level events into event types.
- *
- * @param {string} topLevelType
- * @return {object}
- */
- function getCompositionEventType(topLevelType) {
- switch (topLevelType) {
- case 'topCompositionStart':
- return eventTypes.compositionStart;
- case 'topCompositionEnd':
- return eventTypes.compositionEnd;
- case 'topCompositionUpdate':
- return eventTypes.compositionUpdate;
- }
- }
- /**
- * Does our fallback best-guess model think this event signifies that
- * composition has begun?
- *
- * @param {string} topLevelType
- * @param {object} nativeEvent
- * @return {boolean}
- */
- function isFallbackCompositionStart(topLevelType, nativeEvent) {
- return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;
- }
- /**
- * Does our fallback mode think that this event is the end of composition?
- *
- * @param {string} topLevelType
- * @param {object} nativeEvent
- * @return {boolean}
- */
- function isFallbackCompositionEnd(topLevelType, nativeEvent) {
- switch (topLevelType) {
- case 'topKeyUp':
- // Command keys insert or clear IME input.
- return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
- case 'topKeyDown':
- // Expect IME keyCode on each keydown. If we get any other
- // code we must have exited earlier.
- return nativeEvent.keyCode !== START_KEYCODE;
- case 'topKeyPress':
- case 'topMouseDown':
- case 'topBlur':
- // Events are not possible without cancelling IME.
- return true;
- default:
- return false;
- }
- }
- /**
- * Google Input Tools provides composition data via a CustomEvent,
- * with the `data` property populated in the `detail` object. If this
- * is available on the event object, use it. If not, this is a plain
- * composition event and we have nothing special to extract.
- *
- * @param {object} nativeEvent
- * @return {?string}
- */
- function getDataFromCustomEvent(nativeEvent) {
- var detail = nativeEvent.detail;
- if (typeof detail === 'object' && 'data' in detail) {
- return detail.data;
- }
- return null;
- }
- // Track the current IME composition fallback object, if any.
- var currentComposition = null;
- /**
- * @return {?object} A SyntheticCompositionEvent.
- */
- function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- var eventType;
- var fallbackData;
- if (canUseCompositionEvent) {
- eventType = getCompositionEventType(topLevelType);
- } else if (!currentComposition) {
- if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
- eventType = eventTypes.compositionStart;
- }
- } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
- eventType = eventTypes.compositionEnd;
- }
- if (!eventType) {
- return null;
- }
- if (useFallbackCompositionData) {
- // The current composition is stored statically and must not be
- // overwritten while composition continues.
- if (!currentComposition && eventType === eventTypes.compositionStart) {
- currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);
- } else if (eventType === eventTypes.compositionEnd) {
- if (currentComposition) {
- fallbackData = currentComposition.getData();
- }
- }
- }
- var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);
- if (fallbackData) {
- // Inject data generated from fallback path into the synthetic event.
- // This matches the property of native CompositionEventInterface.
- event.data = fallbackData;
- } else {
- var customData = getDataFromCustomEvent(nativeEvent);
- if (customData !== null) {
- event.data = customData;
- }
- }
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
- }
- /**
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {object} nativeEvent Native browser event.
- * @return {?string} The string corresponding to this `beforeInput` event.
- */
- function getNativeBeforeInputChars(topLevelType, nativeEvent) {
- switch (topLevelType) {
- case 'topCompositionEnd':
- return getDataFromCustomEvent(nativeEvent);
- case 'topKeyPress':
- /**
- * If native `textInput` events are available, our goal is to make
- * use of them. However, there is a special case: the spacebar key.
- * In Webkit, preventing default on a spacebar `textInput` event
- * cancels character insertion, but it *also* causes the browser
- * to fall back to its default spacebar behavior of scrolling the
- * page.
- *
- * Tracking at:
- * https://code.google.com/p/chromium/issues/detail?id=355103
- *
- * To avoid this issue, use the keypress event as if no `textInput`
- * event is available.
- */
- var which = nativeEvent.which;
- if (which !== SPACEBAR_CODE) {
- return null;
- }
- hasSpaceKeypress = true;
- return SPACEBAR_CHAR;
- case 'topTextInput':
- // Record the characters to be added to the DOM.
- var chars = nativeEvent.data;
- // If it's a spacebar character, assume that we have already handled
- // it at the keypress level and bail immediately. Android Chrome
- // doesn't give us keycodes, so we need to blacklist it.
- if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
- return null;
- }
- return chars;
- default:
- // For other native event types, do nothing.
- return null;
- }
- }
- /**
- * For browsers that do not provide the `textInput` event, extract the
- * appropriate string to use for SyntheticInputEvent.
- *
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {object} nativeEvent Native browser event.
- * @return {?string} The fallback string for this `beforeInput` event.
- */
- function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
- // If we are currently composing (IME) and using a fallback to do so,
- // try to extract the composed characters from the fallback object.
- // If composition event is available, we extract a string only at
- // compositionevent, otherwise extract it at fallback events.
- if (currentComposition) {
- if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {
- var chars = currentComposition.getData();
- FallbackCompositionState.release(currentComposition);
- currentComposition = null;
- return chars;
- }
- return null;
- }
- switch (topLevelType) {
- case 'topPaste':
- // If a paste event occurs after a keypress, throw out the input
- // chars. Paste events should not lead to BeforeInput events.
- return null;
- case 'topKeyPress':
- /**
- * As of v27, Firefox may fire keypress events even when no character
- * will be inserted. A few possibilities:
- *
- * - `which` is `0`. Arrow keys, Esc key, etc.
- *
- * - `which` is the pressed key code, but no char is available.
- * Ex: 'AltGr + d` in Polish. There is no modified character for
- * this key combination and no character is inserted into the
- * document, but FF fires the keypress for char code `100` anyway.
- * No `input` event will occur.
- *
- * - `which` is the pressed key code, but a command combination is
- * being used. Ex: `Cmd+C`. No character is inserted, and no
- * `input` event will occur.
- */
- if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
- return String.fromCharCode(nativeEvent.which);
- }
- return null;
- case 'topCompositionEnd':
- return useFallbackCompositionData ? null : nativeEvent.data;
- default:
- return null;
- }
- }
- /**
- * Extract a SyntheticInputEvent for `beforeInput`, based on either native
- * `textInput` or fallback behavior.
- *
- * @return {?object} A SyntheticInputEvent.
- */
- function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- var chars;
- if (canUseTextInputEvent) {
- chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
- } else {
- chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
- }
- // If no characters are being inserted, no BeforeInput event should
- // be fired.
- if (!chars) {
- return null;
- }
- var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);
- event.data = chars;
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
- }
- /**
- * Create an `onBeforeInput` event to match
- * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
- *
- * This event plugin is based on the native `textInput` event
- * available in Chrome, Safari, Opera, and IE. This event fires after
- * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
- *
- * `beforeInput` is spec'd but not implemented in any browsers, and
- * the `input` event does not provide any useful information about what has
- * actually been added, contrary to the spec. Thus, `textInput` is the best
- * available event to identify the characters that have actually been inserted
- * into the target node.
- *
- * This plugin is also responsible for emitting `composition` events, thus
- * allowing us to share composition fallback code for both `beforeInput` and
- * `composition` event types.
- */
- var BeforeInputEventPlugin = {
- eventTypes: eventTypes,
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];
- }
- };
- module.exports = BeforeInputEventPlugin;
- /***/ }),
- /* 106 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var PooledClass = __webpack_require__(16);
- var getTextContentAccessor = __webpack_require__(59);
- /**
- * This helper class stores information about text content of a target node,
- * allowing comparison of content before and after a given event.
- *
- * Identify the node where selection currently begins, then observe
- * both its text content and its current position in the DOM. Since the
- * browser may natively replace the target node during composition, we can
- * use its position to find its replacement.
- *
- * @param {DOMEventTarget} root
- */
- function FallbackCompositionState(root) {
- this._root = root;
- this._startText = this.getText();
- this._fallbackText = null;
- }
- _assign(FallbackCompositionState.prototype, {
- destructor: function () {
- this._root = null;
- this._startText = null;
- this._fallbackText = null;
- },
- /**
- * Get current text of input.
- *
- * @return {string}
- */
- getText: function () {
- if ('value' in this._root) {
- return this._root.value;
- }
- return this._root[getTextContentAccessor()];
- },
- /**
- * Determine the differing substring between the initially stored
- * text content and the current content.
- *
- * @return {string}
- */
- getData: function () {
- if (this._fallbackText) {
- return this._fallbackText;
- }
- var start;
- var startValue = this._startText;
- var startLength = startValue.length;
- var end;
- var endValue = this.getText();
- var endLength = endValue.length;
- for (start = 0; start < startLength; start++) {
- if (startValue[start] !== endValue[start]) {
- break;
- }
- }
- var minEnd = startLength - start;
- for (end = 1; end <= minEnd; end++) {
- if (startValue[startLength - end] !== endValue[endLength - end]) {
- break;
- }
- }
- var sliceTail = end > 1 ? 1 - end : undefined;
- this._fallbackText = endValue.slice(start, sliceTail);
- return this._fallbackText;
- }
- });
- PooledClass.addPoolingTo(FallbackCompositionState);
- module.exports = FallbackCompositionState;
- /***/ }),
- /* 107 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticEvent = __webpack_require__(12);
- /**
- * @interface Event
- * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
- */
- var CompositionEventInterface = {
- data: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
- module.exports = SyntheticCompositionEvent;
- /***/ }),
- /* 108 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticEvent = __webpack_require__(12);
- /**
- * @interface Event
- * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
- * /#events-inputevents
- */
- var InputEventInterface = {
- data: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
- module.exports = SyntheticInputEvent;
- /***/ }),
- /* 109 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var EventPluginHub = __webpack_require__(22);
- var EventPropagators = __webpack_require__(21);
- var ExecutionEnvironment = __webpack_require__(6);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactUpdates = __webpack_require__(11);
- var SyntheticEvent = __webpack_require__(12);
- var getEventTarget = __webpack_require__(37);
- var isEventSupported = __webpack_require__(38);
- var isTextInputElement = __webpack_require__(62);
- var eventTypes = {
- change: {
- phasedRegistrationNames: {
- bubbled: 'onChange',
- captured: 'onChangeCapture'
- },
- dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']
- }
- };
- /**
- * For IE shims
- */
- var activeElement = null;
- var activeElementInst = null;
- var activeElementValue = null;
- var activeElementValueProp = null;
- /**
- * SECTION: handle `change` event
- */
- function shouldUseChangeEvent(elem) {
- var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
- return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
- }
- var doesChangeEventBubble = false;
- if (ExecutionEnvironment.canUseDOM) {
- // See `handleChange` comment below
- doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);
- }
- function manualDispatchChangeEvent(nativeEvent) {
- var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));
- EventPropagators.accumulateTwoPhaseDispatches(event);
- // If change and propertychange bubbled, we'd just bind to it like all the
- // other events and have it go through ReactBrowserEventEmitter. Since it
- // doesn't, we manually listen for the events and so we have to enqueue and
- // process the abstract event manually.
- //
- // Batching is necessary here in order to ensure that all event handlers run
- // before the next rerender (including event handlers attached to ancestor
- // elements instead of directly on the input). Without this, controlled
- // components don't work properly in conjunction with event bubbling because
- // the component is rerendered and the value reverted before all the event
- // handlers can run. See https://github.com/facebook/react/issues/708.
- ReactUpdates.batchedUpdates(runEventInBatch, event);
- }
- function runEventInBatch(event) {
- EventPluginHub.enqueueEvents(event);
- EventPluginHub.processEventQueue(false);
- }
- function startWatchingForChangeEventIE8(target, targetInst) {
- activeElement = target;
- activeElementInst = targetInst;
- activeElement.attachEvent('onchange', manualDispatchChangeEvent);
- }
- function stopWatchingForChangeEventIE8() {
- if (!activeElement) {
- return;
- }
- activeElement.detachEvent('onchange', manualDispatchChangeEvent);
- activeElement = null;
- activeElementInst = null;
- }
- function getTargetInstForChangeEvent(topLevelType, targetInst) {
- if (topLevelType === 'topChange') {
- return targetInst;
- }
- }
- function handleEventsForChangeEventIE8(topLevelType, target, targetInst) {
- if (topLevelType === 'topFocus') {
- // stopWatching() should be a noop here but we call it just in case we
- // missed a blur event somehow.
- stopWatchingForChangeEventIE8();
- startWatchingForChangeEventIE8(target, targetInst);
- } else if (topLevelType === 'topBlur') {
- stopWatchingForChangeEventIE8();
- }
- }
- /**
- * SECTION: handle `input` event
- */
- var isInputEventSupported = false;
- if (ExecutionEnvironment.canUseDOM) {
- // IE9 claims to support the input event but fails to trigger it when
- // deleting text, so we ignore its input events.
- // IE10+ fire input events to often, such when a placeholder
- // changes or when an input with a placeholder is focused.
- isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);
- }
- /**
- * (For IE <=11) Replacement getter/setter for the `value` property that gets
- * set on the active element.
- */
- var newValueProp = {
- get: function () {
- return activeElementValueProp.get.call(this);
- },
- set: function (val) {
- // Cast to a string so we can do equality checks.
- activeElementValue = '' + val;
- activeElementValueProp.set.call(this, val);
- }
- };
- /**
- * (For IE <=11) Starts tracking propertychange events on the passed-in element
- * and override the value property so that we can distinguish user events from
- * value changes in JS.
- */
- function startWatchingForValueChange(target, targetInst) {
- activeElement = target;
- activeElementInst = targetInst;
- activeElementValue = target.value;
- activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');
- // Not guarded in a canDefineProperty check: IE8 supports defineProperty only
- // on DOM elements
- Object.defineProperty(activeElement, 'value', newValueProp);
- if (activeElement.attachEvent) {
- activeElement.attachEvent('onpropertychange', handlePropertyChange);
- } else {
- activeElement.addEventListener('propertychange', handlePropertyChange, false);
- }
- }
- /**
- * (For IE <=11) Removes the event listeners from the currently-tracked element,
- * if any exists.
- */
- function stopWatchingForValueChange() {
- if (!activeElement) {
- return;
- }
- // delete restores the original property definition
- delete activeElement.value;
- if (activeElement.detachEvent) {
- activeElement.detachEvent('onpropertychange', handlePropertyChange);
- } else {
- activeElement.removeEventListener('propertychange', handlePropertyChange, false);
- }
- activeElement = null;
- activeElementInst = null;
- activeElementValue = null;
- activeElementValueProp = null;
- }
- /**
- * (For IE <=11) Handles a propertychange event, sending a `change` event if
- * the value of the active element has changed.
- */
- function handlePropertyChange(nativeEvent) {
- if (nativeEvent.propertyName !== 'value') {
- return;
- }
- var value = nativeEvent.srcElement.value;
- if (value === activeElementValue) {
- return;
- }
- activeElementValue = value;
- manualDispatchChangeEvent(nativeEvent);
- }
- /**
- * If a `change` event should be fired, returns the target's ID.
- */
- function getTargetInstForInputEvent(topLevelType, targetInst) {
- if (topLevelType === 'topInput') {
- // In modern browsers (i.e., not IE8 or IE9), the input event is exactly
- // what we want so fall through here and trigger an abstract event
- return targetInst;
- }
- }
- function handleEventsForInputEventIE(topLevelType, target, targetInst) {
- if (topLevelType === 'topFocus') {
- // In IE8, we can capture almost all .value changes by adding a
- // propertychange handler and looking for events with propertyName
- // equal to 'value'
- // In IE9-11, propertychange fires for most input events but is buggy and
- // doesn't fire when text is deleted, but conveniently, selectionchange
- // appears to fire in all of the remaining cases so we catch those and
- // forward the event if the value has changed
- // In either case, we don't want to call the event handler if the value
- // is changed from JS so we redefine a setter for `.value` that updates
- // our activeElementValue variable, allowing us to ignore those changes
- //
- // stopWatching() should be a noop here but we call it just in case we
- // missed a blur event somehow.
- stopWatchingForValueChange();
- startWatchingForValueChange(target, targetInst);
- } else if (topLevelType === 'topBlur') {
- stopWatchingForValueChange();
- }
- }
- // For IE8 and IE9.
- function getTargetInstForInputEventIE(topLevelType, targetInst) {
- if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {
- // On the selectionchange event, the target is just document which isn't
- // helpful for us so just check activeElement instead.
- //
- // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
- // propertychange on the first input event after setting `value` from a
- // script and fires only keydown, keypress, keyup. Catching keyup usually
- // gets it and catching keydown lets us fire an event for the first
- // keystroke if user does a key repeat (it'll be a little delayed: right
- // before the second keystroke). Other input methods (e.g., paste) seem to
- // fire selectionchange normally.
- if (activeElement && activeElement.value !== activeElementValue) {
- activeElementValue = activeElement.value;
- return activeElementInst;
- }
- }
- }
- /**
- * SECTION: handle `click` event
- */
- function shouldUseClickEvent(elem) {
- // Use the `click` event to detect changes to checkbox and radio inputs.
- // This approach works across all browsers, whereas `change` does not fire
- // until `blur` in IE8.
- return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
- }
- function getTargetInstForClickEvent(topLevelType, targetInst) {
- if (topLevelType === 'topClick') {
- return targetInst;
- }
- }
- function handleControlledInputBlur(inst, node) {
- // TODO: In IE, inst is occasionally null. Why?
- if (inst == null) {
- return;
- }
- // Fiber and ReactDOM keep wrapper state in separate places
- var state = inst._wrapperState || node._wrapperState;
- if (!state || !state.controlled || node.type !== 'number') {
- return;
- }
- // If controlled, assign the value attribute to the current value on blur
- var value = '' + node.value;
- if (node.getAttribute('value') !== value) {
- node.setAttribute('value', value);
- }
- }
- /**
- * This plugin creates an `onChange` event that normalizes change events
- * across form elements. This event fires at a time when it's possible to
- * change the element's value without seeing a flicker.
- *
- * Supported elements are:
- * - input (see `isTextInputElement`)
- * - textarea
- * - select
- */
- var ChangeEventPlugin = {
- eventTypes: eventTypes,
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
- var getTargetInstFunc, handleEventFunc;
- if (shouldUseChangeEvent(targetNode)) {
- if (doesChangeEventBubble) {
- getTargetInstFunc = getTargetInstForChangeEvent;
- } else {
- handleEventFunc = handleEventsForChangeEventIE8;
- }
- } else if (isTextInputElement(targetNode)) {
- if (isInputEventSupported) {
- getTargetInstFunc = getTargetInstForInputEvent;
- } else {
- getTargetInstFunc = getTargetInstForInputEventIE;
- handleEventFunc = handleEventsForInputEventIE;
- }
- } else if (shouldUseClickEvent(targetNode)) {
- getTargetInstFunc = getTargetInstForClickEvent;
- }
- if (getTargetInstFunc) {
- var inst = getTargetInstFunc(topLevelType, targetInst);
- if (inst) {
- var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);
- event.type = 'change';
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
- }
- }
- if (handleEventFunc) {
- handleEventFunc(topLevelType, targetNode, targetInst);
- }
- // When blurring, set the value attribute for number inputs
- if (topLevelType === 'topBlur') {
- handleControlledInputBlur(targetInst, targetNode);
- }
- }
- };
- module.exports = ChangeEventPlugin;
- /***/ }),
- /* 110 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactOwner = __webpack_require__(111);
- var ReactRef = {};
- function attachRef(ref, component, owner) {
- if (typeof ref === 'function') {
- ref(component.getPublicInstance());
- } else {
- // Legacy ref
- ReactOwner.addComponentAsRefTo(component, ref, owner);
- }
- }
- function detachRef(ref, component, owner) {
- if (typeof ref === 'function') {
- ref(null);
- } else {
- // Legacy ref
- ReactOwner.removeComponentAsRefFrom(component, ref, owner);
- }
- }
- ReactRef.attachRefs = function (instance, element) {
- if (element === null || typeof element !== 'object') {
- return;
- }
- var ref = element.ref;
- if (ref != null) {
- attachRef(ref, instance, element._owner);
- }
- };
- ReactRef.shouldUpdateRefs = function (prevElement, nextElement) {
- // If either the owner or a `ref` has changed, make sure the newest owner
- // has stored a reference to `this`, and the previous owner (if different)
- // has forgotten the reference to `this`. We use the element instead
- // of the public this.props because the post processing cannot determine
- // a ref. The ref conceptually lives on the element.
- // TODO: Should this even be possible? The owner cannot change because
- // it's forbidden by shouldUpdateReactComponent. The ref can change
- // if you swap the keys of but not the refs. Reconsider where this check
- // is made. It probably belongs where the key checking and
- // instantiateReactComponent is done.
- var prevRef = null;
- var prevOwner = null;
- if (prevElement !== null && typeof prevElement === 'object') {
- prevRef = prevElement.ref;
- prevOwner = prevElement._owner;
- }
- var nextRef = null;
- var nextOwner = null;
- if (nextElement !== null && typeof nextElement === 'object') {
- nextRef = nextElement.ref;
- nextOwner = nextElement._owner;
- }
- return prevRef !== nextRef ||
- // If owner changes but we have an unchanged function ref, don't update refs
- typeof nextRef === 'string' && nextOwner !== prevOwner;
- };
- ReactRef.detachRefs = function (instance, element) {
- if (element === null || typeof element !== 'object') {
- return;
- }
- var ref = element.ref;
- if (ref != null) {
- detachRef(ref, instance, element._owner);
- }
- };
- module.exports = ReactRef;
- /***/ }),
- /* 111 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- /**
- * @param {?object} object
- * @return {boolean} True if `object` is a valid owner.
- * @final
- */
- function isValidOwner(object) {
- return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');
- }
- /**
- * ReactOwners are capable of storing references to owned components.
- *
- * All components are capable of //being// referenced by owner components, but
- * only ReactOwner components are capable of //referencing// owned components.
- * The named reference is known as a "ref".
- *
- * Refs are available when mounted and updated during reconciliation.
- *
- * var MyComponent = React.createClass({
- * render: function() {
- * return (
- * <div onClick={this.handleClick}>
- * <CustomComponent ref="custom" />
- * </div>
- * );
- * },
- * handleClick: function() {
- * this.refs.custom.handleClick();
- * },
- * componentDidMount: function() {
- * this.refs.custom.initialize();
- * }
- * });
- *
- * Refs should rarely be used. When refs are used, they should only be done to
- * control data that is not handled by React's data flow.
- *
- * @class ReactOwner
- */
- var ReactOwner = {
- /**
- * Adds a component by ref to an owner component.
- *
- * @param {ReactComponent} component Component to reference.
- * @param {string} ref Name by which to refer to the component.
- * @param {ReactOwner} owner Component on which to record the ref.
- * @final
- * @internal
- */
- addComponentAsRefTo: function (component, ref, owner) {
- !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;
- owner.attachRef(ref, component);
- },
- /**
- * Removes a component by ref from an owner component.
- *
- * @param {ReactComponent} component Component to dereference.
- * @param {string} ref Name of the ref to remove.
- * @param {ReactOwner} owner Component on which the ref is recorded.
- * @final
- * @internal
- */
- removeComponentAsRefFrom: function (component, ref, owner) {
- !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;
- var ownerPublicInstance = owner.getPublicInstance();
- // Check that `component`'s owner is still alive and that `component` is still the current ref
- // because we do not want to detach the ref if another component stole it.
- if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {
- owner.detachRef(ref);
- }
- }
- };
- module.exports = ReactOwner;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 112 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactInvalidSetStateWarningHook = __webpack_require__(113);
- var ReactHostOperationHistoryHook = __webpack_require__(114);
- var ReactComponentTreeHook = __webpack_require__(7);
- var ExecutionEnvironment = __webpack_require__(6);
- var performanceNow = __webpack_require__(115);
- var warning = __webpack_require__(2);
- var hooks = [];
- var didHookThrowForEvent = {};
- function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {
- try {
- fn.call(context, arg1, arg2, arg3, arg4, arg5);
- } catch (e) {
- process.env.NODE_ENV !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0;
- didHookThrowForEvent[event] = true;
- }
- }
- function emitEvent(event, arg1, arg2, arg3, arg4, arg5) {
- for (var i = 0; i < hooks.length; i++) {
- var hook = hooks[i];
- var fn = hook[event];
- if (fn) {
- callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);
- }
- }
- }
- var isProfiling = false;
- var flushHistory = [];
- var lifeCycleTimerStack = [];
- var currentFlushNesting = 0;
- var currentFlushMeasurements = [];
- var currentFlushStartTime = 0;
- var currentTimerDebugID = null;
- var currentTimerStartTime = 0;
- var currentTimerNestedFlushDuration = 0;
- var currentTimerType = null;
- var lifeCycleTimerHasWarned = false;
- function clearHistory() {
- ReactComponentTreeHook.purgeUnmountedComponents();
- ReactHostOperationHistoryHook.clearHistory();
- }
- function getTreeSnapshot(registeredIDs) {
- return registeredIDs.reduce(function (tree, id) {
- var ownerID = ReactComponentTreeHook.getOwnerID(id);
- var parentID = ReactComponentTreeHook.getParentID(id);
- tree[id] = {
- displayName: ReactComponentTreeHook.getDisplayName(id),
- text: ReactComponentTreeHook.getText(id),
- updateCount: ReactComponentTreeHook.getUpdateCount(id),
- childIDs: ReactComponentTreeHook.getChildIDs(id),
- // Text nodes don't have owners but this is close enough.
- ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0,
- parentID: parentID
- };
- return tree;
- }, {});
- }
- function resetMeasurements() {
- var previousStartTime = currentFlushStartTime;
- var previousMeasurements = currentFlushMeasurements;
- var previousOperations = ReactHostOperationHistoryHook.getHistory();
- if (currentFlushNesting === 0) {
- currentFlushStartTime = 0;
- currentFlushMeasurements = [];
- clearHistory();
- return;
- }
- if (previousMeasurements.length || previousOperations.length) {
- var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();
- flushHistory.push({
- duration: performanceNow() - previousStartTime,
- measurements: previousMeasurements || [],
- operations: previousOperations || [],
- treeSnapshot: getTreeSnapshot(registeredIDs)
- });
- }
- clearHistory();
- currentFlushStartTime = performanceNow();
- currentFlushMeasurements = [];
- }
- function checkDebugID(debugID) {
- var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
- if (allowRoot && debugID === 0) {
- return;
- }
- if (!debugID) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0;
- }
- }
- function beginLifeCycleTimer(debugID, timerType) {
- if (currentFlushNesting === 0) {
- return;
- }
- if (currentTimerType && !lifeCycleTimerHasWarned) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;
- lifeCycleTimerHasWarned = true;
- }
- currentTimerStartTime = performanceNow();
- currentTimerNestedFlushDuration = 0;
- currentTimerDebugID = debugID;
- currentTimerType = timerType;
- }
- function endLifeCycleTimer(debugID, timerType) {
- if (currentFlushNesting === 0) {
- return;
- }
- if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;
- lifeCycleTimerHasWarned = true;
- }
- if (isProfiling) {
- currentFlushMeasurements.push({
- timerType: timerType,
- instanceID: debugID,
- duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration
- });
- }
- currentTimerStartTime = 0;
- currentTimerNestedFlushDuration = 0;
- currentTimerDebugID = null;
- currentTimerType = null;
- }
- function pauseCurrentLifeCycleTimer() {
- var currentTimer = {
- startTime: currentTimerStartTime,
- nestedFlushStartTime: performanceNow(),
- debugID: currentTimerDebugID,
- timerType: currentTimerType
- };
- lifeCycleTimerStack.push(currentTimer);
- currentTimerStartTime = 0;
- currentTimerNestedFlushDuration = 0;
- currentTimerDebugID = null;
- currentTimerType = null;
- }
- function resumeCurrentLifeCycleTimer() {
- var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),
- startTime = _lifeCycleTimerStack$.startTime,
- nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,
- debugID = _lifeCycleTimerStack$.debugID,
- timerType = _lifeCycleTimerStack$.timerType;
- var nestedFlushDuration = performanceNow() - nestedFlushStartTime;
- currentTimerStartTime = startTime;
- currentTimerNestedFlushDuration += nestedFlushDuration;
- currentTimerDebugID = debugID;
- currentTimerType = timerType;
- }
- var lastMarkTimeStamp = 0;
- var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';
- function shouldMark(debugID) {
- if (!isProfiling || !canUsePerformanceMeasure) {
- return false;
- }
- var element = ReactComponentTreeHook.getElement(debugID);
- if (element == null || typeof element !== 'object') {
- return false;
- }
- var isHostElement = typeof element.type === 'string';
- if (isHostElement) {
- return false;
- }
- return true;
- }
- function markBegin(debugID, markType) {
- if (!shouldMark(debugID)) {
- return;
- }
- var markName = debugID + '::' + markType;
- lastMarkTimeStamp = performanceNow();
- performance.mark(markName);
- }
- function markEnd(debugID, markType) {
- if (!shouldMark(debugID)) {
- return;
- }
- var markName = debugID + '::' + markType;
- var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';
- // Chrome has an issue of dropping markers recorded too fast:
- // https://bugs.chromium.org/p/chromium/issues/detail?id=640652
- // To work around this, we will not report very small measurements.
- // I determined the magic number by tweaking it back and forth.
- // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.
- // When the bug is fixed, we can `measure()` unconditionally if we want to.
- var timeStamp = performanceNow();
- if (timeStamp - lastMarkTimeStamp > 0.1) {
- var measurementName = displayName + ' [' + markType + ']';
- performance.measure(measurementName, markName);
- }
- performance.clearMarks(markName);
- performance.clearMeasures(measurementName);
- }
- var ReactDebugTool = {
- addHook: function (hook) {
- hooks.push(hook);
- },
- removeHook: function (hook) {
- for (var i = 0; i < hooks.length; i++) {
- if (hooks[i] === hook) {
- hooks.splice(i, 1);
- i--;
- }
- }
- },
- isProfiling: function () {
- return isProfiling;
- },
- beginProfiling: function () {
- if (isProfiling) {
- return;
- }
- isProfiling = true;
- flushHistory.length = 0;
- resetMeasurements();
- ReactDebugTool.addHook(ReactHostOperationHistoryHook);
- },
- endProfiling: function () {
- if (!isProfiling) {
- return;
- }
- isProfiling = false;
- resetMeasurements();
- ReactDebugTool.removeHook(ReactHostOperationHistoryHook);
- },
- getFlushHistory: function () {
- return flushHistory;
- },
- onBeginFlush: function () {
- currentFlushNesting++;
- resetMeasurements();
- pauseCurrentLifeCycleTimer();
- emitEvent('onBeginFlush');
- },
- onEndFlush: function () {
- resetMeasurements();
- currentFlushNesting--;
- resumeCurrentLifeCycleTimer();
- emitEvent('onEndFlush');
- },
- onBeginLifeCycleTimer: function (debugID, timerType) {
- checkDebugID(debugID);
- emitEvent('onBeginLifeCycleTimer', debugID, timerType);
- markBegin(debugID, timerType);
- beginLifeCycleTimer(debugID, timerType);
- },
- onEndLifeCycleTimer: function (debugID, timerType) {
- checkDebugID(debugID);
- endLifeCycleTimer(debugID, timerType);
- markEnd(debugID, timerType);
- emitEvent('onEndLifeCycleTimer', debugID, timerType);
- },
- onBeginProcessingChildContext: function () {
- emitEvent('onBeginProcessingChildContext');
- },
- onEndProcessingChildContext: function () {
- emitEvent('onEndProcessingChildContext');
- },
- onHostOperation: function (operation) {
- checkDebugID(operation.instanceID);
- emitEvent('onHostOperation', operation);
- },
- onSetState: function () {
- emitEvent('onSetState');
- },
- onSetChildren: function (debugID, childDebugIDs) {
- checkDebugID(debugID);
- childDebugIDs.forEach(checkDebugID);
- emitEvent('onSetChildren', debugID, childDebugIDs);
- },
- onBeforeMountComponent: function (debugID, element, parentDebugID) {
- checkDebugID(debugID);
- checkDebugID(parentDebugID, true);
- emitEvent('onBeforeMountComponent', debugID, element, parentDebugID);
- markBegin(debugID, 'mount');
- },
- onMountComponent: function (debugID) {
- checkDebugID(debugID);
- markEnd(debugID, 'mount');
- emitEvent('onMountComponent', debugID);
- },
- onBeforeUpdateComponent: function (debugID, element) {
- checkDebugID(debugID);
- emitEvent('onBeforeUpdateComponent', debugID, element);
- markBegin(debugID, 'update');
- },
- onUpdateComponent: function (debugID) {
- checkDebugID(debugID);
- markEnd(debugID, 'update');
- emitEvent('onUpdateComponent', debugID);
- },
- onBeforeUnmountComponent: function (debugID) {
- checkDebugID(debugID);
- emitEvent('onBeforeUnmountComponent', debugID);
- markBegin(debugID, 'unmount');
- },
- onUnmountComponent: function (debugID) {
- checkDebugID(debugID);
- markEnd(debugID, 'unmount');
- emitEvent('onUnmountComponent', debugID);
- },
- onTestEvent: function () {
- emitEvent('onTestEvent');
- }
- };
- // TODO remove these when RN/www gets updated
- ReactDebugTool.addDevtool = ReactDebugTool.addHook;
- ReactDebugTool.removeDevtool = ReactDebugTool.removeHook;
- ReactDebugTool.addHook(ReactInvalidSetStateWarningHook);
- ReactDebugTool.addHook(ReactComponentTreeHook);
- var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
- if (/[?&]react_perf\b/.test(url)) {
- ReactDebugTool.beginProfiling();
- }
- module.exports = ReactDebugTool;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 113 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var warning = __webpack_require__(2);
- if (process.env.NODE_ENV !== 'production') {
- var processingChildContext = false;
- var warnInvalidSetState = function () {
- process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0;
- };
- }
- var ReactInvalidSetStateWarningHook = {
- onBeginProcessingChildContext: function () {
- processingChildContext = true;
- },
- onEndProcessingChildContext: function () {
- processingChildContext = false;
- },
- onSetState: function () {
- warnInvalidSetState();
- }
- };
- module.exports = ReactInvalidSetStateWarningHook;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 114 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var history = [];
- var ReactHostOperationHistoryHook = {
- onHostOperation: function (operation) {
- history.push(operation);
- },
- clearHistory: function () {
- if (ReactHostOperationHistoryHook._preventClearing) {
- // Should only be used for tests.
- return;
- }
- history = [];
- },
- getHistory: function () {
- return history;
- }
- };
- module.exports = ReactHostOperationHistoryHook;
- /***/ }),
- /* 115 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var performance = __webpack_require__(116);
- var performanceNow;
- /**
- * Detect if we can use `window.performance.now()` and gracefully fallback to
- * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now
- * because of Facebook's testing infrastructure.
- */
- if (performance.now) {
- performanceNow = function performanceNow() {
- return performance.now();
- };
- } else {
- performanceNow = function performanceNow() {
- return Date.now();
- };
- }
- module.exports = performanceNow;
- /***/ }),
- /* 116 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var ExecutionEnvironment = __webpack_require__(6);
- var performance;
- if (ExecutionEnvironment.canUseDOM) {
- performance = window.performance || window.msPerformance || window.webkitPerformance;
- }
- module.exports = performance || {};
- /***/ }),
- /* 117 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * Module that is injectable into `EventPluginHub`, that specifies a
- * deterministic ordering of `EventPlugin`s. A convenient way to reason about
- * plugins, without having to package every one of them. This is better than
- * having plugins be ordered in the same order that they are injected because
- * that ordering would be influenced by the packaging order.
- * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
- * preventing default on events is convenient in `SimpleEventPlugin` handlers.
- */
- var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];
- module.exports = DefaultEventPluginOrder;
- /***/ }),
- /* 118 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var EventPropagators = __webpack_require__(21);
- var ReactDOMComponentTree = __webpack_require__(5);
- var SyntheticMouseEvent = __webpack_require__(29);
- var eventTypes = {
- mouseEnter: {
- registrationName: 'onMouseEnter',
- dependencies: ['topMouseOut', 'topMouseOver']
- },
- mouseLeave: {
- registrationName: 'onMouseLeave',
- dependencies: ['topMouseOut', 'topMouseOver']
- }
- };
- var EnterLeaveEventPlugin = {
- eventTypes: eventTypes,
- /**
- * For almost every interaction we care about, there will be both a top-level
- * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
- * we do not extract duplicate events. However, moving the mouse into the
- * browser from outside will not fire a `mouseout` event. In this case, we use
- * the `mouseover` top-level event.
- */
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {
- return null;
- }
- if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {
- // Must not be a mouse in or mouse out - ignoring.
- return null;
- }
- var win;
- if (nativeEventTarget.window === nativeEventTarget) {
- // `nativeEventTarget` is probably a window object.
- win = nativeEventTarget;
- } else {
- // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
- var doc = nativeEventTarget.ownerDocument;
- if (doc) {
- win = doc.defaultView || doc.parentWindow;
- } else {
- win = window;
- }
- }
- var from;
- var to;
- if (topLevelType === 'topMouseOut') {
- from = targetInst;
- var related = nativeEvent.relatedTarget || nativeEvent.toElement;
- to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;
- } else {
- // Moving to a node from outside the window.
- from = null;
- to = targetInst;
- }
- if (from === to) {
- // Nothing pertains to our managed components.
- return null;
- }
- var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);
- var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);
- var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);
- leave.type = 'mouseleave';
- leave.target = fromNode;
- leave.relatedTarget = toNode;
- var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);
- enter.type = 'mouseenter';
- enter.target = toNode;
- enter.relatedTarget = fromNode;
- EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);
- return [leave, enter];
- }
- };
- module.exports = EnterLeaveEventPlugin;
- /***/ }),
- /* 119 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMProperty = __webpack_require__(13);
- var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
- var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
- var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
- var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
- var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
- var HTMLDOMPropertyConfig = {
- isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),
- Properties: {
- /**
- * Standard Properties
- */
- accept: 0,
- acceptCharset: 0,
- accessKey: 0,
- action: 0,
- allowFullScreen: HAS_BOOLEAN_VALUE,
- allowTransparency: 0,
- alt: 0,
- // specifies target context for links with `preload` type
- as: 0,
- async: HAS_BOOLEAN_VALUE,
- autoComplete: 0,
- // autoFocus is polyfilled/normalized by AutoFocusUtils
- // autoFocus: HAS_BOOLEAN_VALUE,
- autoPlay: HAS_BOOLEAN_VALUE,
- capture: HAS_BOOLEAN_VALUE,
- cellPadding: 0,
- cellSpacing: 0,
- charSet: 0,
- challenge: 0,
- checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
- cite: 0,
- classID: 0,
- className: 0,
- cols: HAS_POSITIVE_NUMERIC_VALUE,
- colSpan: 0,
- content: 0,
- contentEditable: 0,
- contextMenu: 0,
- controls: HAS_BOOLEAN_VALUE,
- coords: 0,
- crossOrigin: 0,
- data: 0, // For `<object />` acts as `src`.
- dateTime: 0,
- 'default': HAS_BOOLEAN_VALUE,
- defer: HAS_BOOLEAN_VALUE,
- dir: 0,
- disabled: HAS_BOOLEAN_VALUE,
- download: HAS_OVERLOADED_BOOLEAN_VALUE,
- draggable: 0,
- encType: 0,
- form: 0,
- formAction: 0,
- formEncType: 0,
- formMethod: 0,
- formNoValidate: HAS_BOOLEAN_VALUE,
- formTarget: 0,
- frameBorder: 0,
- headers: 0,
- height: 0,
- hidden: HAS_BOOLEAN_VALUE,
- high: 0,
- href: 0,
- hrefLang: 0,
- htmlFor: 0,
- httpEquiv: 0,
- icon: 0,
- id: 0,
- inputMode: 0,
- integrity: 0,
- is: 0,
- keyParams: 0,
- keyType: 0,
- kind: 0,
- label: 0,
- lang: 0,
- list: 0,
- loop: HAS_BOOLEAN_VALUE,
- low: 0,
- manifest: 0,
- marginHeight: 0,
- marginWidth: 0,
- max: 0,
- maxLength: 0,
- media: 0,
- mediaGroup: 0,
- method: 0,
- min: 0,
- minLength: 0,
- // Caution; `option.selected` is not updated if `select.multiple` is
- // disabled with `removeAttribute`.
- multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
- muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
- name: 0,
- nonce: 0,
- noValidate: HAS_BOOLEAN_VALUE,
- open: HAS_BOOLEAN_VALUE,
- optimum: 0,
- pattern: 0,
- placeholder: 0,
- playsInline: HAS_BOOLEAN_VALUE,
- poster: 0,
- preload: 0,
- profile: 0,
- radioGroup: 0,
- readOnly: HAS_BOOLEAN_VALUE,
- referrerPolicy: 0,
- rel: 0,
- required: HAS_BOOLEAN_VALUE,
- reversed: HAS_BOOLEAN_VALUE,
- role: 0,
- rows: HAS_POSITIVE_NUMERIC_VALUE,
- rowSpan: HAS_NUMERIC_VALUE,
- sandbox: 0,
- scope: 0,
- scoped: HAS_BOOLEAN_VALUE,
- scrolling: 0,
- seamless: HAS_BOOLEAN_VALUE,
- selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
- shape: 0,
- size: HAS_POSITIVE_NUMERIC_VALUE,
- sizes: 0,
- span: HAS_POSITIVE_NUMERIC_VALUE,
- spellCheck: 0,
- src: 0,
- srcDoc: 0,
- srcLang: 0,
- srcSet: 0,
- start: HAS_NUMERIC_VALUE,
- step: 0,
- style: 0,
- summary: 0,
- tabIndex: 0,
- target: 0,
- title: 0,
- // Setting .type throws on non-<input> tags
- type: 0,
- useMap: 0,
- value: 0,
- width: 0,
- wmode: 0,
- wrap: 0,
- /**
- * RDFa Properties
- */
- about: 0,
- datatype: 0,
- inlist: 0,
- prefix: 0,
- // property is also supported for OpenGraph in meta tags.
- property: 0,
- resource: 0,
- 'typeof': 0,
- vocab: 0,
- /**
- * Non-standard Properties
- */
- // autoCapitalize and autoCorrect are supported in Mobile Safari for
- // keyboard hints.
- autoCapitalize: 0,
- autoCorrect: 0,
- // autoSave allows WebKit/Blink to persist values of input fields on page reloads
- autoSave: 0,
- // color is for Safari mask-icon link
- color: 0,
- // itemProp, itemScope, itemType are for
- // Microdata support. See http://schema.org/docs/gs.html
- itemProp: 0,
- itemScope: HAS_BOOLEAN_VALUE,
- itemType: 0,
- // itemID and itemRef are for Microdata support as well but
- // only specified in the WHATWG spec document. See
- // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
- itemID: 0,
- itemRef: 0,
- // results show looking glass icon and recent searches on input
- // search fields in WebKit/Blink
- results: 0,
- // IE-only attribute that specifies security restrictions on an iframe
- // as an alternative to the sandbox attribute on IE<10
- security: 0,
- // IE-only attribute that controls focus behavior
- unselectable: 0
- },
- DOMAttributeNames: {
- acceptCharset: 'accept-charset',
- className: 'class',
- htmlFor: 'for',
- httpEquiv: 'http-equiv'
- },
- DOMPropertyNames: {},
- DOMMutationMethods: {
- value: function (node, value) {
- if (value == null) {
- return node.removeAttribute('value');
- }
- // Number inputs get special treatment due to some edge cases in
- // Chrome. Let everything else assign the value attribute as normal.
- // https://github.com/facebook/react/issues/7253#issuecomment-236074326
- if (node.type !== 'number' || node.hasAttribute('value') === false) {
- node.setAttribute('value', '' + value);
- } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {
- // Don't assign an attribute if validation reports bad
- // input. Chrome will clear the value. Additionally, don't
- // operate on inputs that have focus, otherwise Chrome might
- // strip off trailing decimal places and cause the user's
- // cursor position to jump to the beginning of the input.
- //
- // In ReactDOMInput, we have an onBlur event that will trigger
- // this function again when focus is lost.
- node.setAttribute('value', '' + value);
- }
- }
- }
- };
- module.exports = HTMLDOMPropertyConfig;
- /***/ }),
- /* 120 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMChildrenOperations = __webpack_require__(40);
- var ReactDOMIDOperations = __webpack_require__(125);
- /**
- * Abstracts away all functionality of the reconciler that requires knowledge of
- * the browser context. TODO: These callers should be refactored to avoid the
- * need for this injection.
- */
- var ReactComponentBrowserEnvironment = {
- processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,
- replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup
- };
- module.exports = ReactComponentBrowserEnvironment;
- /***/ }),
- /* 121 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var DOMLazyTree = __webpack_require__(19);
- var ExecutionEnvironment = __webpack_require__(6);
- var createNodesFromMarkup = __webpack_require__(122);
- var emptyFunction = __webpack_require__(8);
- var invariant = __webpack_require__(1);
- var Danger = {
- /**
- * Replaces a node with a string of markup at its current position within its
- * parent. The markup must render into a single root node.
- *
- * @param {DOMElement} oldChild Child node to replace.
- * @param {string} markup Markup to render in place of the child node.
- * @internal
- */
- dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {
- !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;
- !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;
- !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;
- if (typeof markup === 'string') {
- var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
- oldChild.parentNode.replaceChild(newChild, oldChild);
- } else {
- DOMLazyTree.replaceChildWithTree(oldChild, markup);
- }
- }
- };
- module.exports = Danger;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 122 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- /*eslint-disable fb-www/unsafe-html*/
- var ExecutionEnvironment = __webpack_require__(6);
- var createArrayFromMixed = __webpack_require__(123);
- var getMarkupWrap = __webpack_require__(124);
- var invariant = __webpack_require__(1);
- /**
- * Dummy container used to render all markup.
- */
- var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
- /**
- * Pattern used by `getNodeName`.
- */
- var nodeNamePattern = /^\s*<(\w+)/;
- /**
- * Extracts the `nodeName` of the first element in a string of markup.
- *
- * @param {string} markup String of markup.
- * @return {?string} Node name of the supplied markup.
- */
- function getNodeName(markup) {
- var nodeNameMatch = markup.match(nodeNamePattern);
- return nodeNameMatch && nodeNameMatch[1].toLowerCase();
- }
- /**
- * Creates an array containing the nodes rendered from the supplied markup. The
- * optionally supplied `handleScript` function will be invoked once for each
- * <script> element that is rendered. If no `handleScript` function is supplied,
- * an exception is thrown if any <script> elements are rendered.
- *
- * @param {string} markup A string of valid HTML markup.
- * @param {?function} handleScript Invoked once for each rendered <script>.
- * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.
- */
- function createNodesFromMarkup(markup, handleScript) {
- var node = dummyNode;
- !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;
- var nodeName = getNodeName(markup);
- var wrap = nodeName && getMarkupWrap(nodeName);
- if (wrap) {
- node.innerHTML = wrap[1] + markup + wrap[2];
- var wrapDepth = wrap[0];
- while (wrapDepth--) {
- node = node.lastChild;
- }
- } else {
- node.innerHTML = markup;
- }
- var scripts = node.getElementsByTagName('script');
- if (scripts.length) {
- !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;
- createArrayFromMixed(scripts).forEach(handleScript);
- }
- var nodes = Array.from(node.childNodes);
- while (node.lastChild) {
- node.removeChild(node.lastChild);
- }
- return nodes;
- }
- module.exports = createNodesFromMarkup;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 123 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var invariant = __webpack_require__(1);
- /**
- * Convert array-like objects to arrays.
- *
- * This API assumes the caller knows the contents of the data type. For less
- * well defined inputs use createArrayFromMixed.
- *
- * @param {object|function|filelist} obj
- * @return {array}
- */
- function toArray(obj) {
- var length = obj.length;
- // Some browsers builtin objects can report typeof 'function' (e.g. NodeList
- // in old versions of Safari).
- !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;
- !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;
- !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;
- !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;
- // Old IE doesn't give collections access to hasOwnProperty. Assume inputs
- // without method will throw during the slice call and skip straight to the
- // fallback.
- if (obj.hasOwnProperty) {
- try {
- return Array.prototype.slice.call(obj);
- } catch (e) {
- // IE < 9 does not support Array#slice on collections objects
- }
- }
- // Fall back to copying key by key. This assumes all keys have a value,
- // so will not preserve sparsely populated inputs.
- var ret = Array(length);
- for (var ii = 0; ii < length; ii++) {
- ret[ii] = obj[ii];
- }
- return ret;
- }
- /**
- * Perform a heuristic test to determine if an object is "array-like".
- *
- * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"
- * Joshu replied: "Mu."
- *
- * This function determines if its argument has "array nature": it returns
- * true if the argument is an actual array, an `arguments' object, or an
- * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).
- *
- * It will return false for other array-like objects like Filelist.
- *
- * @param {*} obj
- * @return {boolean}
- */
- function hasArrayNature(obj) {
- return (
- // not null/false
- !!obj && (
- // arrays are objects, NodeLists are functions in Safari
- typeof obj == 'object' || typeof obj == 'function') &&
- // quacks like an array
- 'length' in obj &&
- // not window
- !('setInterval' in obj) &&
- // no DOM node should be considered an array-like
- // a 'select' element has 'length' and 'item' properties on IE8
- typeof obj.nodeType != 'number' && (
- // a real array
- Array.isArray(obj) ||
- // arguments
- 'callee' in obj ||
- // HTMLCollection/NodeList
- 'item' in obj)
- );
- }
- /**
- * Ensure that the argument is an array by wrapping it in an array if it is not.
- * Creates a copy of the argument if it is already an array.
- *
- * This is mostly useful idiomatically:
- *
- * var createArrayFromMixed = require('createArrayFromMixed');
- *
- * function takesOneOrMoreThings(things) {
- * things = createArrayFromMixed(things);
- * ...
- * }
- *
- * This allows you to treat `things' as an array, but accept scalars in the API.
- *
- * If you need to convert an array-like object, like `arguments`, into an array
- * use toArray instead.
- *
- * @param {*} obj
- * @return {array}
- */
- function createArrayFromMixed(obj) {
- if (!hasArrayNature(obj)) {
- return [obj];
- } else if (Array.isArray(obj)) {
- return obj.slice();
- } else {
- return toArray(obj);
- }
- }
- module.exports = createArrayFromMixed;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 124 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- */
- /*eslint-disable fb-www/unsafe-html */
- var ExecutionEnvironment = __webpack_require__(6);
- var invariant = __webpack_require__(1);
- /**
- * Dummy container used to detect which wraps are necessary.
- */
- var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
- /**
- * Some browsers cannot use `innerHTML` to render certain elements standalone,
- * so we wrap them, render the wrapped nodes, then extract the desired node.
- *
- * In IE8, certain elements cannot render alone, so wrap all elements ('*').
- */
- var shouldWrap = {};
- var selectWrap = [1, '<select multiple="true">', '</select>'];
- var tableWrap = [1, '<table>', '</table>'];
- var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];
- var svgWrap = [1, '<svg xmlns="http://www.w3.org/2000/svg">', '</svg>'];
- var markupWrap = {
- '*': [1, '?<div>', '</div>'],
- 'area': [1, '<map>', '</map>'],
- 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],
- 'legend': [1, '<fieldset>', '</fieldset>'],
- 'param': [1, '<object>', '</object>'],
- 'tr': [2, '<table><tbody>', '</tbody></table>'],
- 'optgroup': selectWrap,
- 'option': selectWrap,
- 'caption': tableWrap,
- 'colgroup': tableWrap,
- 'tbody': tableWrap,
- 'tfoot': tableWrap,
- 'thead': tableWrap,
- 'td': trWrap,
- 'th': trWrap
- };
- // Initialize the SVG elements since we know they'll always need to be wrapped
- // consistently. If they are created inside a <div> they will be initialized in
- // the wrong namespace (and will not display).
- var svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];
- svgElements.forEach(function (nodeName) {
- markupWrap[nodeName] = svgWrap;
- shouldWrap[nodeName] = true;
- });
- /**
- * Gets the markup wrap configuration for the supplied `nodeName`.
- *
- * NOTE: This lazily detects which wraps are necessary for the current browser.
- *
- * @param {string} nodeName Lowercase `nodeName`.
- * @return {?array} Markup wrap configuration, if applicable.
- */
- function getMarkupWrap(nodeName) {
- !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;
- if (!markupWrap.hasOwnProperty(nodeName)) {
- nodeName = '*';
- }
- if (!shouldWrap.hasOwnProperty(nodeName)) {
- if (nodeName === '*') {
- dummyNode.innerHTML = '<link />';
- } else {
- dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';
- }
- shouldWrap[nodeName] = !dummyNode.firstChild;
- }
- return shouldWrap[nodeName] ? markupWrap[nodeName] : null;
- }
- module.exports = getMarkupWrap;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 125 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMChildrenOperations = __webpack_require__(40);
- var ReactDOMComponentTree = __webpack_require__(5);
- /**
- * Operations used to process updates to DOM nodes.
- */
- var ReactDOMIDOperations = {
- /**
- * Updates a component's children by processing a series of updates.
- *
- * @param {array<object>} updates List of update configurations.
- * @internal
- */
- dangerouslyProcessChildrenUpdates: function (parentInst, updates) {
- var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);
- DOMChildrenOperations.processUpdates(node, updates);
- }
- };
- module.exports = ReactDOMIDOperations;
- /***/ }),
- /* 126 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /* global hasOwnProperty:true */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var AutoFocusUtils = __webpack_require__(127);
- var CSSPropertyOperations = __webpack_require__(128);
- var DOMLazyTree = __webpack_require__(19);
- var DOMNamespaces = __webpack_require__(41);
- var DOMProperty = __webpack_require__(13);
- var DOMPropertyOperations = __webpack_require__(67);
- var EventPluginHub = __webpack_require__(22);
- var EventPluginRegistry = __webpack_require__(27);
- var ReactBrowserEventEmitter = __webpack_require__(32);
- var ReactDOMComponentFlags = __webpack_require__(56);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactDOMInput = __webpack_require__(138);
- var ReactDOMOption = __webpack_require__(142);
- var ReactDOMSelect = __webpack_require__(70);
- var ReactDOMTextarea = __webpack_require__(143);
- var ReactInstrumentation = __webpack_require__(9);
- var ReactMultiChild = __webpack_require__(144);
- var ReactServerRenderingTransaction = __webpack_require__(153);
- var emptyFunction = __webpack_require__(8);
- var escapeTextContentForBrowser = __webpack_require__(31);
- var invariant = __webpack_require__(1);
- var isEventSupported = __webpack_require__(38);
- var shallowEqual = __webpack_require__(45);
- var validateDOMNesting = __webpack_require__(49);
- var warning = __webpack_require__(2);
- var Flags = ReactDOMComponentFlags;
- var deleteListener = EventPluginHub.deleteListener;
- var getNode = ReactDOMComponentTree.getNodeFromInstance;
- var listenTo = ReactBrowserEventEmitter.listenTo;
- var registrationNameModules = EventPluginRegistry.registrationNameModules;
- // For quickly matching children type, to test if can be treated as content.
- var CONTENT_TYPES = { 'string': true, 'number': true };
- var STYLE = 'style';
- var HTML = '__html';
- var RESERVED_PROPS = {
- children: null,
- dangerouslySetInnerHTML: null,
- suppressContentEditableWarning: null
- };
- // Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).
- var DOC_FRAGMENT_TYPE = 11;
- function getDeclarationErrorAddendum(internalInstance) {
- if (internalInstance) {
- var owner = internalInstance._currentElement._owner || null;
- if (owner) {
- var name = owner.getName();
- if (name) {
- return ' This DOM node was rendered by `' + name + '`.';
- }
- }
- }
- return '';
- }
- function friendlyStringify(obj) {
- if (typeof obj === 'object') {
- if (Array.isArray(obj)) {
- return '[' + obj.map(friendlyStringify).join(', ') + ']';
- } else {
- var pairs = [];
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key);
- pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));
- }
- }
- return '{' + pairs.join(', ') + '}';
- }
- } else if (typeof obj === 'string') {
- return JSON.stringify(obj);
- } else if (typeof obj === 'function') {
- return '[function object]';
- }
- // Differs from JSON.stringify in that undefined because undefined and that
- // inf and nan don't become null
- return String(obj);
- }
- var styleMutationWarning = {};
- function checkAndWarnForMutatedStyle(style1, style2, component) {
- if (style1 == null || style2 == null) {
- return;
- }
- if (shallowEqual(style1, style2)) {
- return;
- }
- var componentName = component._tag;
- var owner = component._currentElement._owner;
- var ownerName;
- if (owner) {
- ownerName = owner.getName();
- }
- var hash = ownerName + '|' + componentName;
- if (styleMutationWarning.hasOwnProperty(hash)) {
- return;
- }
- styleMutationWarning[hash] = true;
- process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;
- }
- /**
- * @param {object} component
- * @param {?object} props
- */
- function assertValidProps(component, props) {
- if (!props) {
- return;
- }
- // Note the use of `==` which checks for null or undefined.
- if (voidElementTags[component._tag]) {
- !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;
- }
- if (props.dangerouslySetInnerHTML != null) {
- !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;
- !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;
- }
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;
- }
- !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;
- }
- function enqueuePutListener(inst, registrationName, listener, transaction) {
- if (transaction instanceof ReactServerRenderingTransaction) {
- return;
- }
- if (process.env.NODE_ENV !== 'production') {
- // IE8 has no API for event capturing and the `onScroll` event doesn't
- // bubble.
- process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\'t support the `onScroll` event') : void 0;
- }
- var containerInfo = inst._hostContainerInfo;
- var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;
- var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;
- listenTo(registrationName, doc);
- transaction.getReactMountReady().enqueue(putListener, {
- inst: inst,
- registrationName: registrationName,
- listener: listener
- });
- }
- function putListener() {
- var listenerToPut = this;
- EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);
- }
- function inputPostMount() {
- var inst = this;
- ReactDOMInput.postMountWrapper(inst);
- }
- function textareaPostMount() {
- var inst = this;
- ReactDOMTextarea.postMountWrapper(inst);
- }
- function optionPostMount() {
- var inst = this;
- ReactDOMOption.postMountWrapper(inst);
- }
- var setAndValidateContentChildDev = emptyFunction;
- if (process.env.NODE_ENV !== 'production') {
- setAndValidateContentChildDev = function (content) {
- var hasExistingContent = this._contentDebugID != null;
- var debugID = this._debugID;
- // This ID represents the inlined child that has no backing instance:
- var contentDebugID = -debugID;
- if (content == null) {
- if (hasExistingContent) {
- ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);
- }
- this._contentDebugID = null;
- return;
- }
- validateDOMNesting(null, String(content), this, this._ancestorInfo);
- this._contentDebugID = contentDebugID;
- if (hasExistingContent) {
- ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);
- ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);
- } else {
- ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);
- ReactInstrumentation.debugTool.onMountComponent(contentDebugID);
- ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);
- }
- };
- }
- // There are so many media events, it makes sense to just
- // maintain a list rather than create a `trapBubbledEvent` for each
- var mediaEvents = {
- topAbort: 'abort',
- topCanPlay: 'canplay',
- topCanPlayThrough: 'canplaythrough',
- topDurationChange: 'durationchange',
- topEmptied: 'emptied',
- topEncrypted: 'encrypted',
- topEnded: 'ended',
- topError: 'error',
- topLoadedData: 'loadeddata',
- topLoadedMetadata: 'loadedmetadata',
- topLoadStart: 'loadstart',
- topPause: 'pause',
- topPlay: 'play',
- topPlaying: 'playing',
- topProgress: 'progress',
- topRateChange: 'ratechange',
- topSeeked: 'seeked',
- topSeeking: 'seeking',
- topStalled: 'stalled',
- topSuspend: 'suspend',
- topTimeUpdate: 'timeupdate',
- topVolumeChange: 'volumechange',
- topWaiting: 'waiting'
- };
- function trapBubbledEventsLocal() {
- var inst = this;
- // If a component renders to null or if another component fatals and causes
- // the state of the tree to be corrupted, `node` here can be null.
- !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;
- var node = getNode(inst);
- !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;
- switch (inst._tag) {
- case 'iframe':
- case 'object':
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];
- break;
- case 'video':
- case 'audio':
- inst._wrapperState.listeners = [];
- // Create listener for each media event
- for (var event in mediaEvents) {
- if (mediaEvents.hasOwnProperty(event)) {
- inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));
- }
- }
- break;
- case 'source':
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];
- break;
- case 'img':
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];
- break;
- case 'form':
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];
- break;
- case 'input':
- case 'select':
- case 'textarea':
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];
- break;
- }
- }
- function postUpdateSelectWrapper() {
- ReactDOMSelect.postUpdateWrapper(this);
- }
- // For HTML, certain tags should omit their close tag. We keep a whitelist for
- // those special-case tags.
- var omittedCloseTags = {
- 'area': true,
- 'base': true,
- 'br': true,
- 'col': true,
- 'embed': true,
- 'hr': true,
- 'img': true,
- 'input': true,
- 'keygen': true,
- 'link': true,
- 'meta': true,
- 'param': true,
- 'source': true,
- 'track': true,
- 'wbr': true
- };
- var newlineEatingTags = {
- 'listing': true,
- 'pre': true,
- 'textarea': true
- };
- // For HTML, certain tags cannot have children. This has the same purpose as
- // `omittedCloseTags` except that `menuitem` should still have its closing tag.
- var voidElementTags = _assign({
- 'menuitem': true
- }, omittedCloseTags);
- // We accept any tag to be rendered but since this gets injected into arbitrary
- // HTML, we want to make sure that it's a safe tag.
- // http://www.w3.org/TR/REC-xml/#NT-Name
- var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset
- var validatedTagCache = {};
- var hasOwnProperty = {}.hasOwnProperty;
- function validateDangerousTag(tag) {
- if (!hasOwnProperty.call(validatedTagCache, tag)) {
- !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;
- validatedTagCache[tag] = true;
- }
- }
- function isCustomComponent(tagName, props) {
- return tagName.indexOf('-') >= 0 || props.is != null;
- }
- var globalIdCounter = 1;
- /**
- * Creates a new React class that is idempotent and capable of containing other
- * React components. It accepts event listeners and DOM properties that are
- * valid according to `DOMProperty`.
- *
- * - Event listeners: `onClick`, `onMouseDown`, etc.
- * - DOM properties: `className`, `name`, `title`, etc.
- *
- * The `style` property functions differently from the DOM API. It accepts an
- * object mapping of style properties to values.
- *
- * @constructor ReactDOMComponent
- * @extends ReactMultiChild
- */
- function ReactDOMComponent(element) {
- var tag = element.type;
- validateDangerousTag(tag);
- this._currentElement = element;
- this._tag = tag.toLowerCase();
- this._namespaceURI = null;
- this._renderedChildren = null;
- this._previousStyle = null;
- this._previousStyleCopy = null;
- this._hostNode = null;
- this._hostParent = null;
- this._rootNodeID = 0;
- this._domID = 0;
- this._hostContainerInfo = null;
- this._wrapperState = null;
- this._topLevelWrapper = null;
- this._flags = 0;
- if (process.env.NODE_ENV !== 'production') {
- this._ancestorInfo = null;
- setAndValidateContentChildDev.call(this, null);
- }
- }
- ReactDOMComponent.displayName = 'ReactDOMComponent';
- ReactDOMComponent.Mixin = {
- /**
- * Generates root tag markup then recurses. This method has side effects and
- * is not idempotent.
- *
- * @internal
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {?ReactDOMComponent} the parent component instance
- * @param {?object} info about the host container
- * @param {object} context
- * @return {string} The computed markup.
- */
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
- this._rootNodeID = globalIdCounter++;
- this._domID = hostContainerInfo._idCounter++;
- this._hostParent = hostParent;
- this._hostContainerInfo = hostContainerInfo;
- var props = this._currentElement.props;
- switch (this._tag) {
- case 'audio':
- case 'form':
- case 'iframe':
- case 'img':
- case 'link':
- case 'object':
- case 'source':
- case 'video':
- this._wrapperState = {
- listeners: null
- };
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
- break;
- case 'input':
- ReactDOMInput.mountWrapper(this, props, hostParent);
- props = ReactDOMInput.getHostProps(this, props);
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
- break;
- case 'option':
- ReactDOMOption.mountWrapper(this, props, hostParent);
- props = ReactDOMOption.getHostProps(this, props);
- break;
- case 'select':
- ReactDOMSelect.mountWrapper(this, props, hostParent);
- props = ReactDOMSelect.getHostProps(this, props);
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
- break;
- case 'textarea':
- ReactDOMTextarea.mountWrapper(this, props, hostParent);
- props = ReactDOMTextarea.getHostProps(this, props);
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
- break;
- }
- assertValidProps(this, props);
- // We create tags in the namespace of their parent container, except HTML
- // tags get no namespace.
- var namespaceURI;
- var parentTag;
- if (hostParent != null) {
- namespaceURI = hostParent._namespaceURI;
- parentTag = hostParent._tag;
- } else if (hostContainerInfo._tag) {
- namespaceURI = hostContainerInfo._namespaceURI;
- parentTag = hostContainerInfo._tag;
- }
- if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {
- namespaceURI = DOMNamespaces.html;
- }
- if (namespaceURI === DOMNamespaces.html) {
- if (this._tag === 'svg') {
- namespaceURI = DOMNamespaces.svg;
- } else if (this._tag === 'math') {
- namespaceURI = DOMNamespaces.mathml;
- }
- }
- this._namespaceURI = namespaceURI;
- if (process.env.NODE_ENV !== 'production') {
- var parentInfo;
- if (hostParent != null) {
- parentInfo = hostParent._ancestorInfo;
- } else if (hostContainerInfo._tag) {
- parentInfo = hostContainerInfo._ancestorInfo;
- }
- if (parentInfo) {
- // parentInfo should always be present except for the top-level
- // component when server rendering
- validateDOMNesting(this._tag, null, this, parentInfo);
- }
- this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);
- }
- var mountImage;
- if (transaction.useCreateElement) {
- var ownerDocument = hostContainerInfo._ownerDocument;
- var el;
- if (namespaceURI === DOMNamespaces.html) {
- if (this._tag === 'script') {
- // Create the script via .innerHTML so its "parser-inserted" flag is
- // set to true and it does not execute
- var div = ownerDocument.createElement('div');
- var type = this._currentElement.type;
- div.innerHTML = '<' + type + '></' + type + '>';
- el = div.removeChild(div.firstChild);
- } else if (props.is) {
- el = ownerDocument.createElement(this._currentElement.type, props.is);
- } else {
- // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.
- // See discussion in https://github.com/facebook/react/pull/6896
- // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
- el = ownerDocument.createElement(this._currentElement.type);
- }
- } else {
- el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);
- }
- ReactDOMComponentTree.precacheNode(this, el);
- this._flags |= Flags.hasCachedChildNodes;
- if (!this._hostParent) {
- DOMPropertyOperations.setAttributeForRoot(el);
- }
- this._updateDOMProperties(null, props, transaction);
- var lazyTree = DOMLazyTree(el);
- this._createInitialChildren(transaction, props, context, lazyTree);
- mountImage = lazyTree;
- } else {
- var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);
- var tagContent = this._createContentMarkup(transaction, props, context);
- if (!tagContent && omittedCloseTags[this._tag]) {
- mountImage = tagOpen + '/>';
- } else {
- mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';
- }
- }
- switch (this._tag) {
- case 'input':
- transaction.getReactMountReady().enqueue(inputPostMount, this);
- if (props.autoFocus) {
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
- }
- break;
- case 'textarea':
- transaction.getReactMountReady().enqueue(textareaPostMount, this);
- if (props.autoFocus) {
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
- }
- break;
- case 'select':
- if (props.autoFocus) {
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
- }
- break;
- case 'button':
- if (props.autoFocus) {
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
- }
- break;
- case 'option':
- transaction.getReactMountReady().enqueue(optionPostMount, this);
- break;
- }
- return mountImage;
- },
- /**
- * Creates markup for the open tag and all attributes.
- *
- * This method has side effects because events get registered.
- *
- * Iterating over object properties is faster than iterating over arrays.
- * @see http://jsperf.com/obj-vs-arr-iteration
- *
- * @private
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {object} props
- * @return {string} Markup of opening tag.
- */
- _createOpenTagMarkupAndPutListeners: function (transaction, props) {
- var ret = '<' + this._currentElement.type;
- for (var propKey in props) {
- if (!props.hasOwnProperty(propKey)) {
- continue;
- }
- var propValue = props[propKey];
- if (propValue == null) {
- continue;
- }
- if (registrationNameModules.hasOwnProperty(propKey)) {
- if (propValue) {
- enqueuePutListener(this, propKey, propValue, transaction);
- }
- } else {
- if (propKey === STYLE) {
- if (propValue) {
- if (process.env.NODE_ENV !== 'production') {
- // See `_updateDOMProperties`. style block
- this._previousStyle = propValue;
- }
- propValue = this._previousStyleCopy = _assign({}, props.style);
- }
- propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);
- }
- var markup = null;
- if (this._tag != null && isCustomComponent(this._tag, props)) {
- if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
- markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);
- }
- } else {
- markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);
- }
- if (markup) {
- ret += ' ' + markup;
- }
- }
- }
- // For static pages, no need to put React ID and checksum. Saves lots of
- // bytes.
- if (transaction.renderToStaticMarkup) {
- return ret;
- }
- if (!this._hostParent) {
- ret += ' ' + DOMPropertyOperations.createMarkupForRoot();
- }
- ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);
- return ret;
- },
- /**
- * Creates markup for the content between the tags.
- *
- * @private
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {object} props
- * @param {object} context
- * @return {string} Content markup.
- */
- _createContentMarkup: function (transaction, props, context) {
- var ret = '';
- // Intentional use of != to avoid catching zero/false.
- var innerHTML = props.dangerouslySetInnerHTML;
- if (innerHTML != null) {
- if (innerHTML.__html != null) {
- ret = innerHTML.__html;
- }
- } else {
- var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
- var childrenToUse = contentToUse != null ? null : props.children;
- if (contentToUse != null) {
- // TODO: Validate that text is allowed as a child of this node
- ret = escapeTextContentForBrowser(contentToUse);
- if (process.env.NODE_ENV !== 'production') {
- setAndValidateContentChildDev.call(this, contentToUse);
- }
- } else if (childrenToUse != null) {
- var mountImages = this.mountChildren(childrenToUse, transaction, context);
- ret = mountImages.join('');
- }
- }
- if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') {
- // text/html ignores the first character in these tags if it's a newline
- // Prefer to break application/xml over text/html (for now) by adding
- // a newline specifically to get eaten by the parser. (Alternately for
- // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first
- // \r is normalized out by HTMLTextAreaElement#value.)
- // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>
- // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>
- // See: <http://www.w3.org/TR/html5/syntax.html#newlines>
- // See: Parsing of "textarea" "listing" and "pre" elements
- // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>
- return '\n' + ret;
- } else {
- return ret;
- }
- },
- _createInitialChildren: function (transaction, props, context, lazyTree) {
- // Intentional use of != to avoid catching zero/false.
- var innerHTML = props.dangerouslySetInnerHTML;
- if (innerHTML != null) {
- if (innerHTML.__html != null) {
- DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);
- }
- } else {
- var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
- var childrenToUse = contentToUse != null ? null : props.children;
- // TODO: Validate that text is allowed as a child of this node
- if (contentToUse != null) {
- // Avoid setting textContent when the text is empty. In IE11 setting
- // textContent on a text area will cause the placeholder to not
- // show within the textarea until it has been focused and blurred again.
- // https://github.com/facebook/react/issues/6731#issuecomment-254874553
- if (contentToUse !== '') {
- if (process.env.NODE_ENV !== 'production') {
- setAndValidateContentChildDev.call(this, contentToUse);
- }
- DOMLazyTree.queueText(lazyTree, contentToUse);
- }
- } else if (childrenToUse != null) {
- var mountImages = this.mountChildren(childrenToUse, transaction, context);
- for (var i = 0; i < mountImages.length; i++) {
- DOMLazyTree.queueChild(lazyTree, mountImages[i]);
- }
- }
- }
- },
- /**
- * Receives a next element and updates the component.
- *
- * @internal
- * @param {ReactElement} nextElement
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {object} context
- */
- receiveComponent: function (nextElement, transaction, context) {
- var prevElement = this._currentElement;
- this._currentElement = nextElement;
- this.updateComponent(transaction, prevElement, nextElement, context);
- },
- /**
- * Updates a DOM component after it has already been allocated and
- * attached to the DOM. Reconciles the root DOM node, then recurses.
- *
- * @param {ReactReconcileTransaction} transaction
- * @param {ReactElement} prevElement
- * @param {ReactElement} nextElement
- * @internal
- * @overridable
- */
- updateComponent: function (transaction, prevElement, nextElement, context) {
- var lastProps = prevElement.props;
- var nextProps = this._currentElement.props;
- switch (this._tag) {
- case 'input':
- lastProps = ReactDOMInput.getHostProps(this, lastProps);
- nextProps = ReactDOMInput.getHostProps(this, nextProps);
- break;
- case 'option':
- lastProps = ReactDOMOption.getHostProps(this, lastProps);
- nextProps = ReactDOMOption.getHostProps(this, nextProps);
- break;
- case 'select':
- lastProps = ReactDOMSelect.getHostProps(this, lastProps);
- nextProps = ReactDOMSelect.getHostProps(this, nextProps);
- break;
- case 'textarea':
- lastProps = ReactDOMTextarea.getHostProps(this, lastProps);
- nextProps = ReactDOMTextarea.getHostProps(this, nextProps);
- break;
- }
- assertValidProps(this, nextProps);
- this._updateDOMProperties(lastProps, nextProps, transaction);
- this._updateDOMChildren(lastProps, nextProps, transaction, context);
- switch (this._tag) {
- case 'input':
- // Update the wrapper around inputs *after* updating props. This has to
- // happen after `_updateDOMProperties`. Otherwise HTML5 input validations
- // raise warnings and prevent the new value from being assigned.
- ReactDOMInput.updateWrapper(this);
- break;
- case 'textarea':
- ReactDOMTextarea.updateWrapper(this);
- break;
- case 'select':
- // <select> value update needs to occur after <option> children
- // reconciliation
- transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);
- break;
- }
- },
- /**
- * Reconciles the properties by detecting differences in property values and
- * updating the DOM as necessary. This function is probably the single most
- * critical path for performance optimization.
- *
- * TODO: Benchmark whether checking for changed values in memory actually
- * improves performance (especially statically positioned elements).
- * TODO: Benchmark the effects of putting this at the top since 99% of props
- * do not change for a given reconciliation.
- * TODO: Benchmark areas that can be improved with caching.
- *
- * @private
- * @param {object} lastProps
- * @param {object} nextProps
- * @param {?DOMElement} node
- */
- _updateDOMProperties: function (lastProps, nextProps, transaction) {
- var propKey;
- var styleName;
- var styleUpdates;
- for (propKey in lastProps) {
- if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
- continue;
- }
- if (propKey === STYLE) {
- var lastStyle = this._previousStyleCopy;
- for (styleName in lastStyle) {
- if (lastStyle.hasOwnProperty(styleName)) {
- styleUpdates = styleUpdates || {};
- styleUpdates[styleName] = '';
- }
- }
- this._previousStyleCopy = null;
- } else if (registrationNameModules.hasOwnProperty(propKey)) {
- if (lastProps[propKey]) {
- // Only call deleteListener if there was a listener previously or
- // else willDeleteListener gets called when there wasn't actually a
- // listener (e.g., onClick={null})
- deleteListener(this, propKey);
- }
- } else if (isCustomComponent(this._tag, lastProps)) {
- if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
- DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);
- }
- } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
- DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);
- }
- }
- for (propKey in nextProps) {
- var nextProp = nextProps[propKey];
- var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;
- if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
- continue;
- }
- if (propKey === STYLE) {
- if (nextProp) {
- if (process.env.NODE_ENV !== 'production') {
- checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);
- this._previousStyle = nextProp;
- }
- nextProp = this._previousStyleCopy = _assign({}, nextProp);
- } else {
- this._previousStyleCopy = null;
- }
- if (lastProp) {
- // Unset styles on `lastProp` but not on `nextProp`.
- for (styleName in lastProp) {
- if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
- styleUpdates = styleUpdates || {};
- styleUpdates[styleName] = '';
- }
- }
- // Update styles that changed since `lastProp`.
- for (styleName in nextProp) {
- if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
- styleUpdates = styleUpdates || {};
- styleUpdates[styleName] = nextProp[styleName];
- }
- }
- } else {
- // Relies on `updateStylesByID` not mutating `styleUpdates`.
- styleUpdates = nextProp;
- }
- } else if (registrationNameModules.hasOwnProperty(propKey)) {
- if (nextProp) {
- enqueuePutListener(this, propKey, nextProp, transaction);
- } else if (lastProp) {
- deleteListener(this, propKey);
- }
- } else if (isCustomComponent(this._tag, nextProps)) {
- if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
- DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);
- }
- } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
- var node = getNode(this);
- // If we're updating to null or undefined, we should remove the property
- // from the DOM node instead of inadvertently setting to a string. This
- // brings us in line with the same behavior we have on initial render.
- if (nextProp != null) {
- DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);
- } else {
- DOMPropertyOperations.deleteValueForProperty(node, propKey);
- }
- }
- }
- if (styleUpdates) {
- CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);
- }
- },
- /**
- * Reconciles the children with the various properties that affect the
- * children content.
- *
- * @param {object} lastProps
- * @param {object} nextProps
- * @param {ReactReconcileTransaction} transaction
- * @param {object} context
- */
- _updateDOMChildren: function (lastProps, nextProps, transaction, context) {
- var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;
- var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;
- var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;
- var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;
- // Note the use of `!=` which checks for null or undefined.
- var lastChildren = lastContent != null ? null : lastProps.children;
- var nextChildren = nextContent != null ? null : nextProps.children;
- // If we're switching from children to content/html or vice versa, remove
- // the old content
- var lastHasContentOrHtml = lastContent != null || lastHtml != null;
- var nextHasContentOrHtml = nextContent != null || nextHtml != null;
- if (lastChildren != null && nextChildren == null) {
- this.updateChildren(null, transaction, context);
- } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {
- this.updateTextContent('');
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
- }
- }
- if (nextContent != null) {
- if (lastContent !== nextContent) {
- this.updateTextContent('' + nextContent);
- if (process.env.NODE_ENV !== 'production') {
- setAndValidateContentChildDev.call(this, nextContent);
- }
- }
- } else if (nextHtml != null) {
- if (lastHtml !== nextHtml) {
- this.updateMarkup('' + nextHtml);
- }
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
- }
- } else if (nextChildren != null) {
- if (process.env.NODE_ENV !== 'production') {
- setAndValidateContentChildDev.call(this, null);
- }
- this.updateChildren(nextChildren, transaction, context);
- }
- },
- getHostNode: function () {
- return getNode(this);
- },
- /**
- * Destroys all event registrations for this instance. Does not remove from
- * the DOM. That must be done by the parent.
- *
- * @internal
- */
- unmountComponent: function (safely) {
- switch (this._tag) {
- case 'audio':
- case 'form':
- case 'iframe':
- case 'img':
- case 'link':
- case 'object':
- case 'source':
- case 'video':
- var listeners = this._wrapperState.listeners;
- if (listeners) {
- for (var i = 0; i < listeners.length; i++) {
- listeners[i].remove();
- }
- }
- break;
- case 'html':
- case 'head':
- case 'body':
- /**
- * Components like <html> <head> and <body> can't be removed or added
- * easily in a cross-browser way, however it's valuable to be able to
- * take advantage of React's reconciliation for styling and <title>
- * management. So we just document it and throw in dangerous cases.
- */
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;
- break;
- }
- this.unmountChildren(safely);
- ReactDOMComponentTree.uncacheNode(this);
- EventPluginHub.deleteAllListeners(this);
- this._rootNodeID = 0;
- this._domID = 0;
- this._wrapperState = null;
- if (process.env.NODE_ENV !== 'production') {
- setAndValidateContentChildDev.call(this, null);
- }
- },
- getPublicInstance: function () {
- return getNode(this);
- }
- };
- _assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
- module.exports = ReactDOMComponent;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 127 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactDOMComponentTree = __webpack_require__(5);
- var focusNode = __webpack_require__(65);
- var AutoFocusUtils = {
- focusDOMComponent: function () {
- focusNode(ReactDOMComponentTree.getNodeFromInstance(this));
- }
- };
- module.exports = AutoFocusUtils;
- /***/ }),
- /* 128 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var CSSProperty = __webpack_require__(66);
- var ExecutionEnvironment = __webpack_require__(6);
- var ReactInstrumentation = __webpack_require__(9);
- var camelizeStyleName = __webpack_require__(129);
- var dangerousStyleValue = __webpack_require__(131);
- var hyphenateStyleName = __webpack_require__(132);
- var memoizeStringOnly = __webpack_require__(134);
- var warning = __webpack_require__(2);
- var processStyleName = memoizeStringOnly(function (styleName) {
- return hyphenateStyleName(styleName);
- });
- var hasShorthandPropertyBug = false;
- var styleFloatAccessor = 'cssFloat';
- if (ExecutionEnvironment.canUseDOM) {
- var tempStyle = document.createElement('div').style;
- try {
- // IE8 throws "Invalid argument." if resetting shorthand style properties.
- tempStyle.font = '';
- } catch (e) {
- hasShorthandPropertyBug = true;
- }
- // IE8 only supports accessing cssFloat (standard) as styleFloat
- if (document.documentElement.style.cssFloat === undefined) {
- styleFloatAccessor = 'styleFloat';
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- // 'msTransform' is correct, but the other prefixes should be capitalized
- var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
- // style values shouldn't contain a semicolon
- var badStyleValueWithSemicolonPattern = /;\s*$/;
- var warnedStyleNames = {};
- var warnedStyleValues = {};
- var warnedForNaNValue = false;
- var warnHyphenatedStyleName = function (name, owner) {
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
- return;
- }
- warnedStyleNames[name] = true;
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;
- };
- var warnBadVendoredStyleName = function (name, owner) {
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
- return;
- }
- warnedStyleNames[name] = true;
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;
- };
- var warnStyleValueWithSemicolon = function (name, value, owner) {
- if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
- return;
- }
- warnedStyleValues[value] = true;
- process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon.%s ' + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;
- };
- var warnStyleValueIsNaN = function (name, value, owner) {
- if (warnedForNaNValue) {
- return;
- }
- warnedForNaNValue = true;
- process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;
- };
- var checkRenderMessage = function (owner) {
- if (owner) {
- var name = owner.getName();
- if (name) {
- return ' Check the render method of `' + name + '`.';
- }
- }
- return '';
- };
- /**
- * @param {string} name
- * @param {*} value
- * @param {ReactDOMComponent} component
- */
- var warnValidStyle = function (name, value, component) {
- var owner;
- if (component) {
- owner = component._currentElement._owner;
- }
- if (name.indexOf('-') > -1) {
- warnHyphenatedStyleName(name, owner);
- } else if (badVendoredStyleNamePattern.test(name)) {
- warnBadVendoredStyleName(name, owner);
- } else if (badStyleValueWithSemicolonPattern.test(value)) {
- warnStyleValueWithSemicolon(name, value, owner);
- }
- if (typeof value === 'number' && isNaN(value)) {
- warnStyleValueIsNaN(name, value, owner);
- }
- };
- }
- /**
- * Operations for dealing with CSS properties.
- */
- var CSSPropertyOperations = {
- /**
- * Serializes a mapping of style properties for use as inline styles:
- *
- * > createMarkupForStyles({width: '200px', height: 0})
- * "width:200px;height:0;"
- *
- * Undefined values are ignored so that declarative programming is easier.
- * The result should be HTML-escaped before insertion into the DOM.
- *
- * @param {object} styles
- * @param {ReactDOMComponent} component
- * @return {?string}
- */
- createMarkupForStyles: function (styles, component) {
- var serialized = '';
- for (var styleName in styles) {
- if (!styles.hasOwnProperty(styleName)) {
- continue;
- }
- var styleValue = styles[styleName];
- if (process.env.NODE_ENV !== 'production') {
- warnValidStyle(styleName, styleValue, component);
- }
- if (styleValue != null) {
- serialized += processStyleName(styleName) + ':';
- serialized += dangerousStyleValue(styleName, styleValue, component) + ';';
- }
- }
- return serialized || null;
- },
- /**
- * Sets the value for multiple styles on a node. If a value is specified as
- * '' (empty string), the corresponding style property will be unset.
- *
- * @param {DOMElement} node
- * @param {object} styles
- * @param {ReactDOMComponent} component
- */
- setValueForStyles: function (node, styles, component) {
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onHostOperation({
- instanceID: component._debugID,
- type: 'update styles',
- payload: styles
- });
- }
- var style = node.style;
- for (var styleName in styles) {
- if (!styles.hasOwnProperty(styleName)) {
- continue;
- }
- if (process.env.NODE_ENV !== 'production') {
- warnValidStyle(styleName, styles[styleName], component);
- }
- var styleValue = dangerousStyleValue(styleName, styles[styleName], component);
- if (styleName === 'float' || styleName === 'cssFloat') {
- styleName = styleFloatAccessor;
- }
- if (styleValue) {
- style[styleName] = styleValue;
- } else {
- var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];
- if (expansion) {
- // Shorthand property that IE8 won't like unsetting, so unset each
- // component to placate it
- for (var individualStyleName in expansion) {
- style[individualStyleName] = '';
- }
- } else {
- style[styleName] = '';
- }
- }
- }
- }
- };
- module.exports = CSSPropertyOperations;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 129 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var camelize = __webpack_require__(130);
- var msPattern = /^-ms-/;
- /**
- * Camelcases a hyphenated CSS property name, for example:
- *
- * > camelizeStyleName('background-color')
- * < "backgroundColor"
- * > camelizeStyleName('-moz-transition')
- * < "MozTransition"
- * > camelizeStyleName('-ms-transition')
- * < "msTransition"
- *
- * As Andi Smith suggests
- * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
- * is converted to lowercase `ms`.
- *
- * @param {string} string
- * @return {string}
- */
- function camelizeStyleName(string) {
- return camelize(string.replace(msPattern, 'ms-'));
- }
- module.exports = camelizeStyleName;
- /***/ }),
- /* 130 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var _hyphenPattern = /-(.)/g;
- /**
- * Camelcases a hyphenated string, for example:
- *
- * > camelize('background-color')
- * < "backgroundColor"
- *
- * @param {string} string
- * @return {string}
- */
- function camelize(string) {
- return string.replace(_hyphenPattern, function (_, character) {
- return character.toUpperCase();
- });
- }
- module.exports = camelize;
- /***/ }),
- /* 131 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var CSSProperty = __webpack_require__(66);
- var warning = __webpack_require__(2);
- var isUnitlessNumber = CSSProperty.isUnitlessNumber;
- var styleWarnings = {};
- /**
- * Convert a value into the proper css writable value. The style name `name`
- * should be logical (no hyphens), as specified
- * in `CSSProperty.isUnitlessNumber`.
- *
- * @param {string} name CSS property name such as `topMargin`.
- * @param {*} value CSS property value such as `10px`.
- * @param {ReactDOMComponent} component
- * @return {string} Normalized style value with dimensions applied.
- */
- function dangerousStyleValue(name, value, component) {
- // Note that we've removed escapeTextForBrowser() calls here since the
- // whole string will be escaped when the attribute is injected into
- // the markup. If you provide unsafe user data here they can inject
- // arbitrary CSS which may be problematic (I couldn't repro this):
- // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
- // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
- // This is not an XSS hole but instead a potential CSS injection issue
- // which has lead to a greater discussion about how we're going to
- // trust URLs moving forward. See #2115901
- var isEmpty = value == null || typeof value === 'boolean' || value === '';
- if (isEmpty) {
- return '';
- }
- var isNonNumeric = isNaN(value);
- if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {
- return '' + value; // cast to string
- }
- if (typeof value === 'string') {
- if (process.env.NODE_ENV !== 'production') {
- // Allow '0' to pass through without warning. 0 is already special and
- // doesn't require units, so we don't need to warn about it.
- if (component && value !== '0') {
- var owner = component._currentElement._owner;
- var ownerName = owner ? owner.getName() : null;
- if (ownerName && !styleWarnings[ownerName]) {
- styleWarnings[ownerName] = {};
- }
- var warned = false;
- if (ownerName) {
- var warnings = styleWarnings[ownerName];
- warned = warnings[name];
- if (!warned) {
- warnings[name] = true;
- }
- }
- if (!warned) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;
- }
- }
- }
- value = value.trim();
- }
- return value + 'px';
- }
- module.exports = dangerousStyleValue;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 132 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var hyphenate = __webpack_require__(133);
- var msPattern = /^ms-/;
- /**
- * Hyphenates a camelcased CSS property name, for example:
- *
- * > hyphenateStyleName('backgroundColor')
- * < "background-color"
- * > hyphenateStyleName('MozTransition')
- * < "-moz-transition"
- * > hyphenateStyleName('msTransition')
- * < "-ms-transition"
- *
- * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
- * is converted to `-ms-`.
- *
- * @param {string} string
- * @return {string}
- */
- function hyphenateStyleName(string) {
- return hyphenate(string).replace(msPattern, '-ms-');
- }
- module.exports = hyphenateStyleName;
- /***/ }),
- /* 133 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var _uppercasePattern = /([A-Z])/g;
- /**
- * Hyphenates a camelcased string, for example:
- *
- * > hyphenate('backgroundColor')
- * < "background-color"
- *
- * For CSS style names, use `hyphenateStyleName` instead which works properly
- * with all vendor prefixes, including `ms`.
- *
- * @param {string} string
- * @return {string}
- */
- function hyphenate(string) {
- return string.replace(_uppercasePattern, '-$1').toLowerCase();
- }
- module.exports = hyphenate;
- /***/ }),
- /* 134 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- *
- * @typechecks static-only
- */
- /**
- * Memoizes the return value of a function that accepts one string argument.
- */
- function memoizeStringOnly(callback) {
- var cache = {};
- return function (string) {
- if (!cache.hasOwnProperty(string)) {
- cache[string] = callback.call(this, string);
- }
- return cache[string];
- };
- }
- module.exports = memoizeStringOnly;
- /***/ }),
- /* 135 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var escapeTextContentForBrowser = __webpack_require__(31);
- /**
- * Escapes attribute value to prevent scripting attacks.
- *
- * @param {*} value Value to escape.
- * @return {string} An escaped string.
- */
- function quoteAttributeValueForBrowser(value) {
- return '"' + escapeTextContentForBrowser(value) + '"';
- }
- module.exports = quoteAttributeValueForBrowser;
- /***/ }),
- /* 136 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var EventPluginHub = __webpack_require__(22);
- function runEventQueueInBatch(events) {
- EventPluginHub.enqueueEvents(events);
- EventPluginHub.processEventQueue(false);
- }
- var ReactEventEmitterMixin = {
- /**
- * Streams a fired top-level event to `EventPluginHub` where plugins have the
- * opportunity to create `ReactEvent`s to be dispatched.
- */
- handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
- runEventQueueInBatch(events);
- }
- };
- module.exports = ReactEventEmitterMixin;
- /***/ }),
- /* 137 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ExecutionEnvironment = __webpack_require__(6);
- /**
- * Generate a mapping of standard vendor prefixes using the defined style property and event name.
- *
- * @param {string} styleProp
- * @param {string} eventName
- * @returns {object}
- */
- function makePrefixMap(styleProp, eventName) {
- var prefixes = {};
- prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
- prefixes['Webkit' + styleProp] = 'webkit' + eventName;
- prefixes['Moz' + styleProp] = 'moz' + eventName;
- prefixes['ms' + styleProp] = 'MS' + eventName;
- prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();
- return prefixes;
- }
- /**
- * A list of event names to a configurable list of vendor prefixes.
- */
- var vendorPrefixes = {
- animationend: makePrefixMap('Animation', 'AnimationEnd'),
- animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
- animationstart: makePrefixMap('Animation', 'AnimationStart'),
- transitionend: makePrefixMap('Transition', 'TransitionEnd')
- };
- /**
- * Event names that have already been detected and prefixed (if applicable).
- */
- var prefixedEventNames = {};
- /**
- * Element to check for prefixes on.
- */
- var style = {};
- /**
- * Bootstrap if a DOM exists.
- */
- if (ExecutionEnvironment.canUseDOM) {
- style = document.createElement('div').style;
- // On some platforms, in particular some releases of Android 4.x,
- // the un-prefixed "animation" and "transition" properties are defined on the
- // style object but the events that fire will still be prefixed, so we need
- // to check if the un-prefixed events are usable, and if not remove them from the map.
- if (!('AnimationEvent' in window)) {
- delete vendorPrefixes.animationend.animation;
- delete vendorPrefixes.animationiteration.animation;
- delete vendorPrefixes.animationstart.animation;
- }
- // Same as above
- if (!('TransitionEvent' in window)) {
- delete vendorPrefixes.transitionend.transition;
- }
- }
- /**
- * Attempts to determine the correct vendor prefixed event name.
- *
- * @param {string} eventName
- * @returns {string}
- */
- function getVendorPrefixedEventName(eventName) {
- if (prefixedEventNames[eventName]) {
- return prefixedEventNames[eventName];
- } else if (!vendorPrefixes[eventName]) {
- return eventName;
- }
- var prefixMap = vendorPrefixes[eventName];
- for (var styleProp in prefixMap) {
- if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
- return prefixedEventNames[eventName] = prefixMap[styleProp];
- }
- }
- return '';
- }
- module.exports = getVendorPrefixedEventName;
- /***/ }),
- /* 138 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var DOMPropertyOperations = __webpack_require__(67);
- var LinkedValueUtils = __webpack_require__(43);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactUpdates = __webpack_require__(11);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var didWarnValueLink = false;
- var didWarnCheckedLink = false;
- var didWarnValueDefaultValue = false;
- var didWarnCheckedDefaultChecked = false;
- var didWarnControlledToUncontrolled = false;
- var didWarnUncontrolledToControlled = false;
- function forceUpdateIfMounted() {
- if (this._rootNodeID) {
- // DOM component is still mounted; update
- ReactDOMInput.updateWrapper(this);
- }
- }
- function isControlled(props) {
- var usesChecked = props.type === 'checkbox' || props.type === 'radio';
- return usesChecked ? props.checked != null : props.value != null;
- }
- /**
- * Implements an <input> host component that allows setting these optional
- * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
- *
- * If `checked` or `value` are not supplied (or null/undefined), user actions
- * that affect the checked state or value will trigger updates to the element.
- *
- * If they are supplied (and not null/undefined), the rendered element will not
- * trigger updates to the element. Instead, the props must change in order for
- * the rendered element to be updated.
- *
- * The rendered element will be initialized as unchecked (or `defaultChecked`)
- * with an empty value (or `defaultValue`).
- *
- * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
- */
- var ReactDOMInput = {
- getHostProps: function (inst, props) {
- var value = LinkedValueUtils.getValue(props);
- var checked = LinkedValueUtils.getChecked(props);
- var hostProps = _assign({
- // Make sure we set .type before any other properties (setting .value
- // before .type means .value is lost in IE11 and below)
- type: undefined,
- // Make sure we set .step before .value (setting .value before .step
- // means .value is rounded on mount, based upon step precision)
- step: undefined,
- // Make sure we set .min & .max before .value (to ensure proper order
- // in corner cases such as min or max deriving from value, e.g. Issue #7170)
- min: undefined,
- max: undefined
- }, props, {
- defaultChecked: undefined,
- defaultValue: undefined,
- value: value != null ? value : inst._wrapperState.initialValue,
- checked: checked != null ? checked : inst._wrapperState.initialChecked,
- onChange: inst._wrapperState.onChange
- });
- return hostProps;
- },
- mountWrapper: function (inst, props) {
- if (process.env.NODE_ENV !== 'production') {
- LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
- var owner = inst._currentElement._owner;
- if (props.valueLink !== undefined && !didWarnValueLink) {
- process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
- didWarnValueLink = true;
- }
- if (props.checkedLink !== undefined && !didWarnCheckedLink) {
- process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
- didWarnCheckedLink = true;
- }
- if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
- process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
- didWarnCheckedDefaultChecked = true;
- }
- if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
- process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
- didWarnValueDefaultValue = true;
- }
- }
- var defaultValue = props.defaultValue;
- inst._wrapperState = {
- initialChecked: props.checked != null ? props.checked : props.defaultChecked,
- initialValue: props.value != null ? props.value : defaultValue,
- listeners: null,
- onChange: _handleChange.bind(inst),
- controlled: isControlled(props)
- };
- },
- updateWrapper: function (inst) {
- var props = inst._currentElement.props;
- if (process.env.NODE_ENV !== 'production') {
- var controlled = isControlled(props);
- var owner = inst._currentElement._owner;
- if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
- process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
- didWarnUncontrolledToControlled = true;
- }
- if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
- process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
- didWarnControlledToUncontrolled = true;
- }
- }
- // TODO: Shouldn't this be getChecked(props)?
- var checked = props.checked;
- if (checked != null) {
- DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);
- }
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
- var value = LinkedValueUtils.getValue(props);
- if (value != null) {
- if (value === 0 && node.value === '') {
- node.value = '0';
- // Note: IE9 reports a number inputs as 'text', so check props instead.
- } else if (props.type === 'number') {
- // Simulate `input.valueAsNumber`. IE9 does not support it
- var valueAsNumber = parseFloat(node.value, 10) || 0;
- // eslint-disable-next-line
- if (value != valueAsNumber) {
- // Cast `value` to a string to ensure the value is set correctly. While
- // browsers typically do this as necessary, jsdom doesn't.
- node.value = '' + value;
- }
- // eslint-disable-next-line
- } else if (value != node.value) {
- // Cast `value` to a string to ensure the value is set correctly. While
- // browsers typically do this as necessary, jsdom doesn't.
- node.value = '' + value;
- }
- } else {
- if (props.value == null && props.defaultValue != null) {
- // In Chrome, assigning defaultValue to certain input types triggers input validation.
- // For number inputs, the display value loses trailing decimal points. For email inputs,
- // Chrome raises "The specified value <x> is not a valid email address".
- //
- // Here we check to see if the defaultValue has actually changed, avoiding these problems
- // when the user is inputting text
- //
- // https://github.com/facebook/react/issues/7253
- if (node.defaultValue !== '' + props.defaultValue) {
- node.defaultValue = '' + props.defaultValue;
- }
- }
- if (props.checked == null && props.defaultChecked != null) {
- node.defaultChecked = !!props.defaultChecked;
- }
- }
- },
- postMountWrapper: function (inst) {
- var props = inst._currentElement.props;
- // This is in postMount because we need access to the DOM node, which is not
- // available until after the component has mounted.
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
- // Detach value from defaultValue. We won't do anything if we're working on
- // submit or reset inputs as those values & defaultValues are linked. They
- // are not resetable nodes so this operation doesn't matter and actually
- // removes browser-default values (eg "Submit Query") when no value is
- // provided.
- switch (props.type) {
- case 'submit':
- case 'reset':
- break;
- case 'color':
- case 'date':
- case 'datetime':
- case 'datetime-local':
- case 'month':
- case 'time':
- case 'week':
- // This fixes the no-show issue on iOS Safari and Android Chrome:
- // https://github.com/facebook/react/issues/7233
- node.value = '';
- node.value = node.defaultValue;
- break;
- default:
- node.value = node.value;
- break;
- }
- // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
- // this is needed to work around a chrome bug where setting defaultChecked
- // will sometimes influence the value of checked (even after detachment).
- // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
- // We need to temporarily unset name to avoid disrupting radio button groups.
- var name = node.name;
- if (name !== '') {
- node.name = '';
- }
- node.defaultChecked = !node.defaultChecked;
- node.defaultChecked = !node.defaultChecked;
- if (name !== '') {
- node.name = name;
- }
- }
- };
- function _handleChange(event) {
- var props = this._currentElement.props;
- var returnValue = LinkedValueUtils.executeOnChange(props, event);
- // Here we use asap to wait until all updates have propagated, which
- // is important when using controlled components within layers:
- // https://github.com/facebook/react/issues/1698
- ReactUpdates.asap(forceUpdateIfMounted, this);
- var name = props.name;
- if (props.type === 'radio' && name != null) {
- var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);
- var queryRoot = rootNode;
- while (queryRoot.parentNode) {
- queryRoot = queryRoot.parentNode;
- }
- // If `rootNode.form` was non-null, then we could try `form.elements`,
- // but that sometimes behaves strangely in IE8. We could also try using
- // `form.getElementsByName`, but that will only return direct children
- // and won't include inputs that use the HTML5 `form=` attribute. Since
- // the input might not even be in a form, let's just use the global
- // `querySelectorAll` to ensure we don't miss anything.
- var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]');
- for (var i = 0; i < group.length; i++) {
- var otherNode = group[i];
- if (otherNode === rootNode || otherNode.form !== rootNode.form) {
- continue;
- }
- // This will throw if radio buttons rendered by different copies of React
- // and the same name are rendered into the same form (same as #1939).
- // That's probably okay; we don't support it just as we don't support
- // mixing React radio buttons with non-React ones.
- var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);
- !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;
- // If this is a controlled radio button group, forcing the input that
- // was previously checked to update will cause it to be come re-checked
- // as appropriate.
- ReactUpdates.asap(forceUpdateIfMounted, otherInstance);
- }
- }
- return returnValue;
- }
- module.exports = ReactDOMInput;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 139 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- // React 15.5 references this module, and assumes PropTypes are still callable in production.
- // Therefore we re-export development-only version with all the PropTypes checks here.
- // However if one is migrating to the `prop-types` npm library, they will go through the
- // `index.js` entry point, and it will branch depending on the environment.
- var factory = __webpack_require__(140);
- module.exports = function(isValidElement) {
- // It is still allowed in 15.5.
- var throwOnDirectAccess = false;
- return factory(isValidElement, throwOnDirectAccess);
- };
- /***/ }),
- /* 140 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- var emptyFunction = __webpack_require__(8);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var ReactPropTypesSecret = __webpack_require__(69);
- var checkPropTypes = __webpack_require__(141);
- module.exports = function(isValidElement, throwOnDirectAccess) {
- /* global Symbol */
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
- /**
- * Returns the iterator method function contained on the iterable object.
- *
- * Be sure to invoke the function with the iterable as context:
- *
- * var iteratorFn = getIteratorFn(myIterable);
- * if (iteratorFn) {
- * var iterator = iteratorFn.call(myIterable);
- * ...
- * }
- *
- * @param {?object} maybeIterable
- * @return {?function}
- */
- function getIteratorFn(maybeIterable) {
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
- if (typeof iteratorFn === 'function') {
- return iteratorFn;
- }
- }
- /**
- * Collection of methods that allow declaration and validation of props that are
- * supplied to React components. Example usage:
- *
- * var Props = require('ReactPropTypes');
- * var MyArticle = React.createClass({
- * propTypes: {
- * // An optional string prop named "description".
- * description: Props.string,
- *
- * // A required enum prop named "category".
- * category: Props.oneOf(['News','Photos']).isRequired,
- *
- * // A prop named "dialog" that requires an instance of Dialog.
- * dialog: Props.instanceOf(Dialog).isRequired
- * },
- * render: function() { ... }
- * });
- *
- * A more formal specification of how these methods are used:
- *
- * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
- * decl := ReactPropTypes.{type}(.isRequired)?
- *
- * Each and every declaration produces a function with the same signature. This
- * allows the creation of custom validation functions. For example:
- *
- * var MyLink = React.createClass({
- * propTypes: {
- * // An optional string or URI prop named "href".
- * href: function(props, propName, componentName) {
- * var propValue = props[propName];
- * if (propValue != null && typeof propValue !== 'string' &&
- * !(propValue instanceof URI)) {
- * return new Error(
- * 'Expected a string or an URI for ' + propName + ' in ' +
- * componentName
- * );
- * }
- * }
- * },
- * render: function() {...}
- * });
- *
- * @internal
- */
- var ANONYMOUS = '<<anonymous>>';
- // Important!
- // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
- var ReactPropTypes = {
- array: createPrimitiveTypeChecker('array'),
- bool: createPrimitiveTypeChecker('boolean'),
- func: createPrimitiveTypeChecker('function'),
- number: createPrimitiveTypeChecker('number'),
- object: createPrimitiveTypeChecker('object'),
- string: createPrimitiveTypeChecker('string'),
- symbol: createPrimitiveTypeChecker('symbol'),
- any: createAnyTypeChecker(),
- arrayOf: createArrayOfTypeChecker,
- element: createElementTypeChecker(),
- instanceOf: createInstanceTypeChecker,
- node: createNodeChecker(),
- objectOf: createObjectOfTypeChecker,
- oneOf: createEnumTypeChecker,
- oneOfType: createUnionTypeChecker,
- shape: createShapeTypeChecker
- };
- /**
- * inlined Object.is polyfill to avoid requiring consumers ship their own
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
- */
- /*eslint-disable no-self-compare*/
- function is(x, y) {
- // SameValue algorithm
- if (x === y) {
- // Steps 1-5, 7-10
- // Steps 6.b-6.e: +0 != -0
- return x !== 0 || 1 / x === 1 / y;
- } else {
- // Step 6.a: NaN == NaN
- return x !== x && y !== y;
- }
- }
- /*eslint-enable no-self-compare*/
- /**
- * We use an Error-like object for backward compatibility as people may call
- * PropTypes directly and inspect their output. However, we don't use real
- * Errors anymore. We don't inspect their stack anyway, and creating them
- * is prohibitively expensive if they are created too often, such as what
- * happens in oneOfType() for any type before the one that matched.
- */
- function PropTypeError(message) {
- this.message = message;
- this.stack = '';
- }
- // Make `instanceof Error` still work for returned errors.
- PropTypeError.prototype = Error.prototype;
- function createChainableTypeChecker(validate) {
- if (process.env.NODE_ENV !== 'production') {
- var manualPropTypeCallCache = {};
- var manualPropTypeWarningCount = 0;
- }
- function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
- componentName = componentName || ANONYMOUS;
- propFullName = propFullName || propName;
- if (secret !== ReactPropTypesSecret) {
- if (throwOnDirectAccess) {
- // New behavior only for users of `prop-types` package
- invariant(
- false,
- 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
- 'Use `PropTypes.checkPropTypes()` to call them. ' +
- 'Read more at http://fb.me/use-check-prop-types'
- );
- } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
- // Old behavior for people using React.PropTypes
- var cacheKey = componentName + ':' + propName;
- if (
- !manualPropTypeCallCache[cacheKey] &&
- // Avoid spamming the console because they are often not actionable except for lib authors
- manualPropTypeWarningCount < 3
- ) {
- warning(
- false,
- 'You are manually calling a React.PropTypes validation ' +
- 'function for the `%s` prop on `%s`. This is deprecated ' +
- 'and will throw in the standalone `prop-types` package. ' +
- 'You may be seeing this warning due to a third-party PropTypes ' +
- 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',
- propFullName,
- componentName
- );
- manualPropTypeCallCache[cacheKey] = true;
- manualPropTypeWarningCount++;
- }
- }
- }
- if (props[propName] == null) {
- if (isRequired) {
- if (props[propName] === null) {
- return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
- }
- return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
- }
- return null;
- } else {
- return validate(props, propName, componentName, location, propFullName);
- }
- }
- var chainedCheckType = checkType.bind(null, false);
- chainedCheckType.isRequired = checkType.bind(null, true);
- return chainedCheckType;
- }
- function createPrimitiveTypeChecker(expectedType) {
- function validate(props, propName, componentName, location, propFullName, secret) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== expectedType) {
- // `propValue` being instance of, say, date/regexp, pass the 'object'
- // check, but we can offer a more precise error message here rather than
- // 'of type `object`'.
- var preciseType = getPreciseType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createAnyTypeChecker() {
- return createChainableTypeChecker(emptyFunction.thatReturnsNull);
- }
- function createArrayOfTypeChecker(typeChecker) {
- function validate(props, propName, componentName, location, propFullName) {
- if (typeof typeChecker !== 'function') {
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
- }
- var propValue = props[propName];
- if (!Array.isArray(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
- }
- for (var i = 0; i < propValue.length; i++) {
- var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
- if (error instanceof Error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createElementTypeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- if (!isValidElement(propValue)) {
- var propType = getPropType(propValue);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createInstanceTypeChecker(expectedClass) {
- function validate(props, propName, componentName, location, propFullName) {
- if (!(props[propName] instanceof expectedClass)) {
- var expectedClassName = expectedClass.name || ANONYMOUS;
- var actualClassName = getClassName(props[propName]);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createEnumTypeChecker(expectedValues) {
- if (!Array.isArray(expectedValues)) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
- return emptyFunction.thatReturnsNull;
- }
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- for (var i = 0; i < expectedValues.length; i++) {
- if (is(propValue, expectedValues[i])) {
- return null;
- }
- }
- var valuesString = JSON.stringify(expectedValues);
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
- }
- return createChainableTypeChecker(validate);
- }
- function createObjectOfTypeChecker(typeChecker) {
- function validate(props, propName, componentName, location, propFullName) {
- if (typeof typeChecker !== 'function') {
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
- }
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
- }
- for (var key in propValue) {
- if (propValue.hasOwnProperty(key)) {
- var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error instanceof Error) {
- return error;
- }
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createUnionTypeChecker(arrayOfTypeCheckers) {
- if (!Array.isArray(arrayOfTypeCheckers)) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
- return emptyFunction.thatReturnsNull;
- }
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
- var checker = arrayOfTypeCheckers[i];
- if (typeof checker !== 'function') {
- warning(
- false,
- 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +
- 'received %s at index %s.',
- getPostfixForTypeWarning(checker),
- i
- );
- return emptyFunction.thatReturnsNull;
- }
- }
- function validate(props, propName, componentName, location, propFullName) {
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
- var checker = arrayOfTypeCheckers[i];
- if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
- return null;
- }
- }
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
- }
- return createChainableTypeChecker(validate);
- }
- function createNodeChecker() {
- function validate(props, propName, componentName, location, propFullName) {
- if (!isNode(props[propName])) {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function createShapeTypeChecker(shapeTypes) {
- function validate(props, propName, componentName, location, propFullName) {
- var propValue = props[propName];
- var propType = getPropType(propValue);
- if (propType !== 'object') {
- return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
- }
- for (var key in shapeTypes) {
- var checker = shapeTypes[key];
- if (!checker) {
- continue;
- }
- var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
- if (error) {
- return error;
- }
- }
- return null;
- }
- return createChainableTypeChecker(validate);
- }
- function isNode(propValue) {
- switch (typeof propValue) {
- case 'number':
- case 'string':
- case 'undefined':
- return true;
- case 'boolean':
- return !propValue;
- case 'object':
- if (Array.isArray(propValue)) {
- return propValue.every(isNode);
- }
- if (propValue === null || isValidElement(propValue)) {
- return true;
- }
- var iteratorFn = getIteratorFn(propValue);
- if (iteratorFn) {
- var iterator = iteratorFn.call(propValue);
- var step;
- if (iteratorFn !== propValue.entries) {
- while (!(step = iterator.next()).done) {
- if (!isNode(step.value)) {
- return false;
- }
- }
- } else {
- // Iterator will provide entry [k,v] tuples rather than values.
- while (!(step = iterator.next()).done) {
- var entry = step.value;
- if (entry) {
- if (!isNode(entry[1])) {
- return false;
- }
- }
- }
- }
- } else {
- return false;
- }
- return true;
- default:
- return false;
- }
- }
- function isSymbol(propType, propValue) {
- // Native Symbol.
- if (propType === 'symbol') {
- return true;
- }
- // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
- if (propValue['@@toStringTag'] === 'Symbol') {
- return true;
- }
- // Fallback for non-spec compliant Symbols which are polyfilled.
- if (typeof Symbol === 'function' && propValue instanceof Symbol) {
- return true;
- }
- return false;
- }
- // Equivalent of `typeof` but with special handling for array and regexp.
- function getPropType(propValue) {
- var propType = typeof propValue;
- if (Array.isArray(propValue)) {
- return 'array';
- }
- if (propValue instanceof RegExp) {
- // Old webkits (at least until Android 4.0) return 'function' rather than
- // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
- // passes PropTypes.object.
- return 'object';
- }
- if (isSymbol(propType, propValue)) {
- return 'symbol';
- }
- return propType;
- }
- // This handles more types than `getPropType`. Only used for error messages.
- // See `createPrimitiveTypeChecker`.
- function getPreciseType(propValue) {
- if (typeof propValue === 'undefined' || propValue === null) {
- return '' + propValue;
- }
- var propType = getPropType(propValue);
- if (propType === 'object') {
- if (propValue instanceof Date) {
- return 'date';
- } else if (propValue instanceof RegExp) {
- return 'regexp';
- }
- }
- return propType;
- }
- // Returns a string that is postfixed to a warning about an invalid type.
- // For example, "undefined" or "of type array"
- function getPostfixForTypeWarning(value) {
- var type = getPreciseType(value);
- switch (type) {
- case 'array':
- case 'object':
- return 'an ' + type;
- case 'boolean':
- case 'date':
- case 'regexp':
- return 'a ' + type;
- default:
- return type;
- }
- }
- // Returns class name of the object, if any.
- function getClassName(propValue) {
- if (!propValue.constructor || !propValue.constructor.name) {
- return ANONYMOUS;
- }
- return propValue.constructor.name;
- }
- ReactPropTypes.checkPropTypes = checkPropTypes;
- ReactPropTypes.PropTypes = ReactPropTypes;
- return ReactPropTypes;
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 141 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- if (process.env.NODE_ENV !== 'production') {
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var ReactPropTypesSecret = __webpack_require__(69);
- var loggedTypeFailures = {};
- }
- /**
- * Assert that the values match with the type specs.
- * Error messages are memorized and will only be shown once.
- *
- * @param {object} typeSpecs Map of name to a ReactPropType
- * @param {object} values Runtime values that need to be type-checked
- * @param {string} location e.g. "prop", "context", "child context"
- * @param {string} componentName Name of the component for error messages.
- * @param {?Function} getStack Returns the component stack.
- * @private
- */
- function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
- if (process.env.NODE_ENV !== 'production') {
- for (var typeSpecName in typeSpecs) {
- if (typeSpecs.hasOwnProperty(typeSpecName)) {
- var error;
- // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
- } catch (ex) {
- error = ex;
- }
- warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error.message] = true;
- var stack = getStack ? getStack() : '';
- warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
- }
- }
- }
- }
- }
- module.exports = checkPropTypes;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 142 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var React = __webpack_require__(17);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactDOMSelect = __webpack_require__(70);
- var warning = __webpack_require__(2);
- var didWarnInvalidOptionChildren = false;
- function flattenChildren(children) {
- var content = '';
- // Flatten children and warn if they aren't strings or numbers;
- // invalid types are ignored.
- React.Children.forEach(children, function (child) {
- if (child == null) {
- return;
- }
- if (typeof child === 'string' || typeof child === 'number') {
- content += child;
- } else if (!didWarnInvalidOptionChildren) {
- didWarnInvalidOptionChildren = true;
- process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;
- }
- });
- return content;
- }
- /**
- * Implements an <option> host component that warns when `selected` is set.
- */
- var ReactDOMOption = {
- mountWrapper: function (inst, props, hostParent) {
- // TODO (yungsters): Remove support for `selected` in <option>.
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;
- }
- // Look up whether this option is 'selected'
- var selectValue = null;
- if (hostParent != null) {
- var selectParent = hostParent;
- if (selectParent._tag === 'optgroup') {
- selectParent = selectParent._hostParent;
- }
- if (selectParent != null && selectParent._tag === 'select') {
- selectValue = ReactDOMSelect.getSelectValueContext(selectParent);
- }
- }
- // If the value is null (e.g., no specified value or after initial mount)
- // or missing (e.g., for <datalist>), we don't change props.selected
- var selected = null;
- if (selectValue != null) {
- var value;
- if (props.value != null) {
- value = props.value + '';
- } else {
- value = flattenChildren(props.children);
- }
- selected = false;
- if (Array.isArray(selectValue)) {
- // multiple
- for (var i = 0; i < selectValue.length; i++) {
- if ('' + selectValue[i] === value) {
- selected = true;
- break;
- }
- }
- } else {
- selected = '' + selectValue === value;
- }
- }
- inst._wrapperState = { selected: selected };
- },
- postMountWrapper: function (inst) {
- // value="" should make a value attribute (#6219)
- var props = inst._currentElement.props;
- if (props.value != null) {
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
- node.setAttribute('value', props.value);
- }
- },
- getHostProps: function (inst, props) {
- var hostProps = _assign({ selected: undefined, children: undefined }, props);
- // Read state only from initial mount because <select> updates value
- // manually; we need the initial state only for server rendering
- if (inst._wrapperState.selected != null) {
- hostProps.selected = inst._wrapperState.selected;
- }
- var content = flattenChildren(props.children);
- if (content) {
- hostProps.children = content;
- }
- return hostProps;
- }
- };
- module.exports = ReactDOMOption;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 143 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var LinkedValueUtils = __webpack_require__(43);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactUpdates = __webpack_require__(11);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var didWarnValueLink = false;
- var didWarnValDefaultVal = false;
- function forceUpdateIfMounted() {
- if (this._rootNodeID) {
- // DOM component is still mounted; update
- ReactDOMTextarea.updateWrapper(this);
- }
- }
- /**
- * Implements a <textarea> host component that allows setting `value`, and
- * `defaultValue`. This differs from the traditional DOM API because value is
- * usually set as PCDATA children.
- *
- * If `value` is not supplied (or null/undefined), user actions that affect the
- * value will trigger updates to the element.
- *
- * If `value` is supplied (and not null/undefined), the rendered element will
- * not trigger updates to the element. Instead, the `value` prop must change in
- * order for the rendered element to be updated.
- *
- * The rendered element will be initialized with an empty value, the prop
- * `defaultValue` if specified, or the children content (deprecated).
- */
- var ReactDOMTextarea = {
- getHostProps: function (inst, props) {
- !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;
- // Always set children to the same thing. In IE9, the selection range will
- // get reset if `textContent` is mutated. We could add a check in setTextContent
- // to only set the value if/when the value differs from the node value (which would
- // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.
- // The value can be a boolean or object so that's why it's forced to be a string.
- var hostProps = _assign({}, props, {
- value: undefined,
- defaultValue: undefined,
- children: '' + inst._wrapperState.initialValue,
- onChange: inst._wrapperState.onChange
- });
- return hostProps;
- },
- mountWrapper: function (inst, props) {
- if (process.env.NODE_ENV !== 'production') {
- LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);
- if (props.valueLink !== undefined && !didWarnValueLink) {
- process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;
- didWarnValueLink = true;
- }
- if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;
- didWarnValDefaultVal = true;
- }
- }
- var value = LinkedValueUtils.getValue(props);
- var initialValue = value;
- // Only bother fetching default value if we're going to use it
- if (value == null) {
- var defaultValue = props.defaultValue;
- // TODO (yungsters): Remove support for children content in <textarea>.
- var children = props.children;
- if (children != null) {
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;
- }
- !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;
- if (Array.isArray(children)) {
- !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;
- children = children[0];
- }
- defaultValue = '' + children;
- }
- if (defaultValue == null) {
- defaultValue = '';
- }
- initialValue = defaultValue;
- }
- inst._wrapperState = {
- initialValue: '' + initialValue,
- listeners: null,
- onChange: _handleChange.bind(inst)
- };
- },
- updateWrapper: function (inst) {
- var props = inst._currentElement.props;
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
- var value = LinkedValueUtils.getValue(props);
- if (value != null) {
- // Cast `value` to a string to ensure the value is set correctly. While
- // browsers typically do this as necessary, jsdom doesn't.
- var newValue = '' + value;
- // To avoid side effects (such as losing text selection), only set value if changed
- if (newValue !== node.value) {
- node.value = newValue;
- }
- if (props.defaultValue == null) {
- node.defaultValue = newValue;
- }
- }
- if (props.defaultValue != null) {
- node.defaultValue = props.defaultValue;
- }
- },
- postMountWrapper: function (inst) {
- // This is in postMount because we need access to the DOM node, which is not
- // available until after the component has mounted.
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
- var textContent = node.textContent;
- // Only set node.value if textContent is equal to the expected
- // initial value. In IE10/IE11 there is a bug where the placeholder attribute
- // will populate textContent as well.
- // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/
- if (textContent === inst._wrapperState.initialValue) {
- node.value = textContent;
- }
- }
- };
- function _handleChange(event) {
- var props = this._currentElement.props;
- var returnValue = LinkedValueUtils.executeOnChange(props, event);
- ReactUpdates.asap(forceUpdateIfMounted, this);
- return returnValue;
- }
- module.exports = ReactDOMTextarea;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 144 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactComponentEnvironment = __webpack_require__(44);
- var ReactInstanceMap = __webpack_require__(24);
- var ReactInstrumentation = __webpack_require__(9);
- var ReactCurrentOwner = __webpack_require__(10);
- var ReactReconciler = __webpack_require__(18);
- var ReactChildReconciler = __webpack_require__(145);
- var emptyFunction = __webpack_require__(8);
- var flattenChildren = __webpack_require__(152);
- var invariant = __webpack_require__(1);
- /**
- * Make an update for markup to be rendered and inserted at a supplied index.
- *
- * @param {string} markup Markup that renders into an element.
- * @param {number} toIndex Destination index.
- * @private
- */
- function makeInsertMarkup(markup, afterNode, toIndex) {
- // NOTE: Null values reduce hidden classes.
- return {
- type: 'INSERT_MARKUP',
- content: markup,
- fromIndex: null,
- fromNode: null,
- toIndex: toIndex,
- afterNode: afterNode
- };
- }
- /**
- * Make an update for moving an existing element to another index.
- *
- * @param {number} fromIndex Source index of the existing element.
- * @param {number} toIndex Destination index of the element.
- * @private
- */
- function makeMove(child, afterNode, toIndex) {
- // NOTE: Null values reduce hidden classes.
- return {
- type: 'MOVE_EXISTING',
- content: null,
- fromIndex: child._mountIndex,
- fromNode: ReactReconciler.getHostNode(child),
- toIndex: toIndex,
- afterNode: afterNode
- };
- }
- /**
- * Make an update for removing an element at an index.
- *
- * @param {number} fromIndex Index of the element to remove.
- * @private
- */
- function makeRemove(child, node) {
- // NOTE: Null values reduce hidden classes.
- return {
- type: 'REMOVE_NODE',
- content: null,
- fromIndex: child._mountIndex,
- fromNode: node,
- toIndex: null,
- afterNode: null
- };
- }
- /**
- * Make an update for setting the markup of a node.
- *
- * @param {string} markup Markup that renders into an element.
- * @private
- */
- function makeSetMarkup(markup) {
- // NOTE: Null values reduce hidden classes.
- return {
- type: 'SET_MARKUP',
- content: markup,
- fromIndex: null,
- fromNode: null,
- toIndex: null,
- afterNode: null
- };
- }
- /**
- * Make an update for setting the text content.
- *
- * @param {string} textContent Text content to set.
- * @private
- */
- function makeTextContent(textContent) {
- // NOTE: Null values reduce hidden classes.
- return {
- type: 'TEXT_CONTENT',
- content: textContent,
- fromIndex: null,
- fromNode: null,
- toIndex: null,
- afterNode: null
- };
- }
- /**
- * Push an update, if any, onto the queue. Creates a new queue if none is
- * passed and always returns the queue. Mutative.
- */
- function enqueue(queue, update) {
- if (update) {
- queue = queue || [];
- queue.push(update);
- }
- return queue;
- }
- /**
- * Processes any enqueued updates.
- *
- * @private
- */
- function processQueue(inst, updateQueue) {
- ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);
- }
- var setChildrenForInstrumentation = emptyFunction;
- if (process.env.NODE_ENV !== 'production') {
- var getDebugID = function (inst) {
- if (!inst._debugID) {
- // Check for ART-like instances. TODO: This is silly/gross.
- var internal;
- if (internal = ReactInstanceMap.get(inst)) {
- inst = internal;
- }
- }
- return inst._debugID;
- };
- setChildrenForInstrumentation = function (children) {
- var debugID = getDebugID(this);
- // TODO: React Native empty components are also multichild.
- // This means they still get into this method but don't have _debugID.
- if (debugID !== 0) {
- ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {
- return children[key]._debugID;
- }) : []);
- }
- };
- }
- /**
- * ReactMultiChild are capable of reconciling multiple children.
- *
- * @class ReactMultiChild
- * @internal
- */
- var ReactMultiChild = {
- /**
- * Provides common functionality for components that must reconcile multiple
- * children. This is used by `ReactDOMComponent` to mount, update, and
- * unmount child components.
- *
- * @lends {ReactMultiChild.prototype}
- */
- Mixin: {
- _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {
- if (process.env.NODE_ENV !== 'production') {
- var selfDebugID = getDebugID(this);
- if (this._currentElement) {
- try {
- ReactCurrentOwner.current = this._currentElement._owner;
- return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);
- } finally {
- ReactCurrentOwner.current = null;
- }
- }
- }
- return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);
- },
- _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {
- var nextChildren;
- var selfDebugID = 0;
- if (process.env.NODE_ENV !== 'production') {
- selfDebugID = getDebugID(this);
- if (this._currentElement) {
- try {
- ReactCurrentOwner.current = this._currentElement._owner;
- nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
- } finally {
- ReactCurrentOwner.current = null;
- }
- ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
- return nextChildren;
- }
- }
- nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
- ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
- return nextChildren;
- },
- /**
- * Generates a "mount image" for each of the supplied children. In the case
- * of `ReactDOMComponent`, a mount image is a string of markup.
- *
- * @param {?object} nestedChildren Nested child maps.
- * @return {array} An array of mounted representations.
- * @internal
- */
- mountChildren: function (nestedChildren, transaction, context) {
- var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);
- this._renderedChildren = children;
- var mountImages = [];
- var index = 0;
- for (var name in children) {
- if (children.hasOwnProperty(name)) {
- var child = children[name];
- var selfDebugID = 0;
- if (process.env.NODE_ENV !== 'production') {
- selfDebugID = getDebugID(this);
- }
- var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);
- child._mountIndex = index++;
- mountImages.push(mountImage);
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- setChildrenForInstrumentation.call(this, children);
- }
- return mountImages;
- },
- /**
- * Replaces any rendered children with a text content string.
- *
- * @param {string} nextContent String of content.
- * @internal
- */
- updateTextContent: function (nextContent) {
- var prevChildren = this._renderedChildren;
- // Remove any rendered children.
- ReactChildReconciler.unmountChildren(prevChildren, false);
- for (var name in prevChildren) {
- if (prevChildren.hasOwnProperty(name)) {
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
- }
- }
- // Set new text content.
- var updates = [makeTextContent(nextContent)];
- processQueue(this, updates);
- },
- /**
- * Replaces any rendered children with a markup string.
- *
- * @param {string} nextMarkup String of markup.
- * @internal
- */
- updateMarkup: function (nextMarkup) {
- var prevChildren = this._renderedChildren;
- // Remove any rendered children.
- ReactChildReconciler.unmountChildren(prevChildren, false);
- for (var name in prevChildren) {
- if (prevChildren.hasOwnProperty(name)) {
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
- }
- }
- var updates = [makeSetMarkup(nextMarkup)];
- processQueue(this, updates);
- },
- /**
- * Updates the rendered children with new children.
- *
- * @param {?object} nextNestedChildrenElements Nested child element maps.
- * @param {ReactReconcileTransaction} transaction
- * @internal
- */
- updateChildren: function (nextNestedChildrenElements, transaction, context) {
- // Hook used by React ART
- this._updateChildren(nextNestedChildrenElements, transaction, context);
- },
- /**
- * @param {?object} nextNestedChildrenElements Nested child element maps.
- * @param {ReactReconcileTransaction} transaction
- * @final
- * @protected
- */
- _updateChildren: function (nextNestedChildrenElements, transaction, context) {
- var prevChildren = this._renderedChildren;
- var removedNodes = {};
- var mountImages = [];
- var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);
- if (!nextChildren && !prevChildren) {
- return;
- }
- var updates = null;
- var name;
- // `nextIndex` will increment for each child in `nextChildren`, but
- // `lastIndex` will be the last index visited in `prevChildren`.
- var nextIndex = 0;
- var lastIndex = 0;
- // `nextMountIndex` will increment for each newly mounted child.
- var nextMountIndex = 0;
- var lastPlacedNode = null;
- for (name in nextChildren) {
- if (!nextChildren.hasOwnProperty(name)) {
- continue;
- }
- var prevChild = prevChildren && prevChildren[name];
- var nextChild = nextChildren[name];
- if (prevChild === nextChild) {
- updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));
- lastIndex = Math.max(prevChild._mountIndex, lastIndex);
- prevChild._mountIndex = nextIndex;
- } else {
- if (prevChild) {
- // Update `lastIndex` before `_mountIndex` gets unset by unmounting.
- lastIndex = Math.max(prevChild._mountIndex, lastIndex);
- // The `removedNodes` loop below will actually remove the child.
- }
- // The child must be instantiated before it's mounted.
- updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));
- nextMountIndex++;
- }
- nextIndex++;
- lastPlacedNode = ReactReconciler.getHostNode(nextChild);
- }
- // Remove children that are no longer present.
- for (name in removedNodes) {
- if (removedNodes.hasOwnProperty(name)) {
- updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));
- }
- }
- if (updates) {
- processQueue(this, updates);
- }
- this._renderedChildren = nextChildren;
- if (process.env.NODE_ENV !== 'production') {
- setChildrenForInstrumentation.call(this, nextChildren);
- }
- },
- /**
- * Unmounts all rendered children. This should be used to clean up children
- * when this component is unmounted. It does not actually perform any
- * backend operations.
- *
- * @internal
- */
- unmountChildren: function (safely) {
- var renderedChildren = this._renderedChildren;
- ReactChildReconciler.unmountChildren(renderedChildren, safely);
- this._renderedChildren = null;
- },
- /**
- * Moves a child component to the supplied index.
- *
- * @param {ReactComponent} child Component to move.
- * @param {number} toIndex Destination index of the element.
- * @param {number} lastIndex Last index visited of the siblings of `child`.
- * @protected
- */
- moveChild: function (child, afterNode, toIndex, lastIndex) {
- // If the index of `child` is less than `lastIndex`, then it needs to
- // be moved. Otherwise, we do not need to move it because a child will be
- // inserted or moved before `child`.
- if (child._mountIndex < lastIndex) {
- return makeMove(child, afterNode, toIndex);
- }
- },
- /**
- * Creates a child component.
- *
- * @param {ReactComponent} child Component to create.
- * @param {string} mountImage Markup to insert.
- * @protected
- */
- createChild: function (child, afterNode, mountImage) {
- return makeInsertMarkup(mountImage, afterNode, child._mountIndex);
- },
- /**
- * Removes a child component.
- *
- * @param {ReactComponent} child Child to remove.
- * @protected
- */
- removeChild: function (child, node) {
- return makeRemove(child, node);
- },
- /**
- * Mounts a child with the supplied name.
- *
- * NOTE: This is part of `updateChildren` and is here for readability.
- *
- * @param {ReactComponent} child Component to mount.
- * @param {string} name Name of the child.
- * @param {number} index Index at which to insert the child.
- * @param {ReactReconcileTransaction} transaction
- * @private
- */
- _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {
- child._mountIndex = index;
- return this.createChild(child, afterNode, mountImage);
- },
- /**
- * Unmounts a rendered child.
- *
- * NOTE: This is part of `updateChildren` and is here for readability.
- *
- * @param {ReactComponent} child Component to unmount.
- * @private
- */
- _unmountChild: function (child, node) {
- var update = this.removeChild(child, node);
- child._mountIndex = null;
- return update;
- }
- }
- };
- module.exports = ReactMultiChild;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 145 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactReconciler = __webpack_require__(18);
- var instantiateReactComponent = __webpack_require__(71);
- var KeyEscapeUtils = __webpack_require__(47);
- var shouldUpdateReactComponent = __webpack_require__(46);
- var traverseAllChildren = __webpack_require__(75);
- var warning = __webpack_require__(2);
- var ReactComponentTreeHook;
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
- // Temporary hack.
- // Inline requires don't work well with Jest:
- // https://github.com/facebook/react/issues/7240
- // Remove the inline requires when we don't need them anymore:
- // https://github.com/facebook/react/pull/7178
- ReactComponentTreeHook = __webpack_require__(7);
- }
- function instantiateChild(childInstances, child, name, selfDebugID) {
- // We found a component instance.
- var keyUnique = childInstances[name] === undefined;
- if (process.env.NODE_ENV !== 'production') {
- if (!ReactComponentTreeHook) {
- ReactComponentTreeHook = __webpack_require__(7);
- }
- if (!keyUnique) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;
- }
- }
- if (child != null && keyUnique) {
- childInstances[name] = instantiateReactComponent(child, true);
- }
- }
- /**
- * ReactChildReconciler provides helpers for initializing or updating a set of
- * children. Its output is suitable for passing it onto ReactMultiChild which
- * does diffed reordering and insertion.
- */
- var ReactChildReconciler = {
- /**
- * Generates a "mount image" for each of the supplied children. In the case
- * of `ReactDOMComponent`, a mount image is a string of markup.
- *
- * @param {?object} nestedChildNodes Nested child maps.
- * @return {?object} A set of child instances.
- * @internal
- */
- instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots
- ) {
- if (nestedChildNodes == null) {
- return null;
- }
- var childInstances = {};
- if (process.env.NODE_ENV !== 'production') {
- traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {
- return instantiateChild(childInsts, child, name, selfDebugID);
- }, childInstances);
- } else {
- traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
- }
- return childInstances;
- },
- /**
- * Updates the rendered children and returns a new set of children.
- *
- * @param {?object} prevChildren Previously initialized set of children.
- * @param {?object} nextChildren Flat child element maps.
- * @param {ReactReconcileTransaction} transaction
- * @param {object} context
- * @return {?object} A new set of child instances.
- * @internal
- */
- updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots
- ) {
- // We currently don't have a way to track moves here but if we use iterators
- // instead of for..in we can zip the iterators and check if an item has
- // moved.
- // TODO: If nothing has changed, return the prevChildren object so that we
- // can quickly bailout if nothing has changed.
- if (!nextChildren && !prevChildren) {
- return;
- }
- var name;
- var prevChild;
- for (name in nextChildren) {
- if (!nextChildren.hasOwnProperty(name)) {
- continue;
- }
- prevChild = prevChildren && prevChildren[name];
- var prevElement = prevChild && prevChild._currentElement;
- var nextElement = nextChildren[name];
- if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {
- ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);
- nextChildren[name] = prevChild;
- } else {
- if (prevChild) {
- removedNodes[name] = ReactReconciler.getHostNode(prevChild);
- ReactReconciler.unmountComponent(prevChild, false);
- }
- // The child must be instantiated before it's mounted.
- var nextChildInstance = instantiateReactComponent(nextElement, true);
- nextChildren[name] = nextChildInstance;
- // Creating mount image now ensures refs are resolved in right order
- // (see https://github.com/facebook/react/pull/7101 for explanation).
- var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);
- mountImages.push(nextChildMountImage);
- }
- }
- // Unmount children that are no longer present.
- for (name in prevChildren) {
- if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {
- prevChild = prevChildren[name];
- removedNodes[name] = ReactReconciler.getHostNode(prevChild);
- ReactReconciler.unmountComponent(prevChild, false);
- }
- }
- },
- /**
- * Unmounts all rendered children. This should be used to clean up children
- * when this component is unmounted.
- *
- * @param {?object} renderedChildren Previously initialized set of children.
- * @internal
- */
- unmountChildren: function (renderedChildren, safely) {
- for (var name in renderedChildren) {
- if (renderedChildren.hasOwnProperty(name)) {
- var renderedChild = renderedChildren[name];
- ReactReconciler.unmountComponent(renderedChild, safely);
- }
- }
- }
- };
- module.exports = ReactChildReconciler;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 146 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var React = __webpack_require__(17);
- var ReactComponentEnvironment = __webpack_require__(44);
- var ReactCurrentOwner = __webpack_require__(10);
- var ReactErrorUtils = __webpack_require__(36);
- var ReactInstanceMap = __webpack_require__(24);
- var ReactInstrumentation = __webpack_require__(9);
- var ReactNodeTypes = __webpack_require__(72);
- var ReactReconciler = __webpack_require__(18);
- if (process.env.NODE_ENV !== 'production') {
- var checkReactTypeSpec = __webpack_require__(147);
- }
- var emptyObject = __webpack_require__(20);
- var invariant = __webpack_require__(1);
- var shallowEqual = __webpack_require__(45);
- var shouldUpdateReactComponent = __webpack_require__(46);
- var warning = __webpack_require__(2);
- var CompositeTypes = {
- ImpureClass: 0,
- PureClass: 1,
- StatelessFunctional: 2
- };
- function StatelessComponent(Component) {}
- StatelessComponent.prototype.render = function () {
- var Component = ReactInstanceMap.get(this)._currentElement.type;
- var element = Component(this.props, this.context, this.updater);
- warnIfInvalidElement(Component, element);
- return element;
- };
- function warnIfInvalidElement(Component, element) {
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;
- }
- }
- function shouldConstruct(Component) {
- return !!(Component.prototype && Component.prototype.isReactComponent);
- }
- function isPureComponent(Component) {
- return !!(Component.prototype && Component.prototype.isPureReactComponent);
- }
- // Separated into a function to contain deoptimizations caused by try/finally.
- function measureLifeCyclePerf(fn, debugID, timerType) {
- if (debugID === 0) {
- // Top-level wrappers (see ReactMount) and empty components (see
- // ReactDOMEmptyComponent) are invisible to hooks and devtools.
- // Both are implementation details that should go away in the future.
- return fn();
- }
- ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);
- try {
- return fn();
- } finally {
- ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);
- }
- }
- /**
- * ------------------ The Life-Cycle of a Composite Component ------------------
- *
- * - constructor: Initialization of state. The instance is now retained.
- * - componentWillMount
- * - render
- * - [children's constructors]
- * - [children's componentWillMount and render]
- * - [children's componentDidMount]
- * - componentDidMount
- *
- * Update Phases:
- * - componentWillReceiveProps (only called if parent updated)
- * - shouldComponentUpdate
- * - componentWillUpdate
- * - render
- * - [children's constructors or receive props phases]
- * - componentDidUpdate
- *
- * - componentWillUnmount
- * - [children's componentWillUnmount]
- * - [children destroyed]
- * - (destroyed): The instance is now blank, released by React and ready for GC.
- *
- * -----------------------------------------------------------------------------
- */
- /**
- * An incrementing ID assigned to each component when it is mounted. This is
- * used to enforce the order in which `ReactUpdates` updates dirty components.
- *
- * @private
- */
- var nextMountID = 1;
- /**
- * @lends {ReactCompositeComponent.prototype}
- */
- var ReactCompositeComponent = {
- /**
- * Base constructor for all composite component.
- *
- * @param {ReactElement} element
- * @final
- * @internal
- */
- construct: function (element) {
- this._currentElement = element;
- this._rootNodeID = 0;
- this._compositeType = null;
- this._instance = null;
- this._hostParent = null;
- this._hostContainerInfo = null;
- // See ReactUpdateQueue
- this._updateBatchNumber = null;
- this._pendingElement = null;
- this._pendingStateQueue = null;
- this._pendingReplaceState = false;
- this._pendingForceUpdate = false;
- this._renderedNodeType = null;
- this._renderedComponent = null;
- this._context = null;
- this._mountOrder = 0;
- this._topLevelWrapper = null;
- // See ReactUpdates and ReactUpdateQueue.
- this._pendingCallbacks = null;
- // ComponentWillUnmount shall only be called once
- this._calledComponentWillUnmount = false;
- if (process.env.NODE_ENV !== 'production') {
- this._warnedAboutRefsInRender = false;
- }
- },
- /**
- * Initializes the component, renders markup, and registers event listeners.
- *
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {?object} hostParent
- * @param {?object} hostContainerInfo
- * @param {?object} context
- * @return {?string} Rendered markup to be inserted into the DOM.
- * @final
- * @internal
- */
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
- var _this = this;
- this._context = context;
- this._mountOrder = nextMountID++;
- this._hostParent = hostParent;
- this._hostContainerInfo = hostContainerInfo;
- var publicProps = this._currentElement.props;
- var publicContext = this._processContext(context);
- var Component = this._currentElement.type;
- var updateQueue = transaction.getUpdateQueue();
- // Initialize the public class
- var doConstruct = shouldConstruct(Component);
- var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);
- var renderedElement;
- // Support functional components
- if (!doConstruct && (inst == null || inst.render == null)) {
- renderedElement = inst;
- warnIfInvalidElement(Component, renderedElement);
- !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;
- inst = new StatelessComponent(Component);
- this._compositeType = CompositeTypes.StatelessFunctional;
- } else {
- if (isPureComponent(Component)) {
- this._compositeType = CompositeTypes.PureClass;
- } else {
- this._compositeType = CompositeTypes.ImpureClass;
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- // This will throw later in _renderValidatedComponent, but add an early
- // warning now to help debugging
- if (inst.render == null) {
- process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;
- }
- var propsMutated = inst.props !== publicProps;
- var componentName = Component.displayName || Component.name || 'Component';
- process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.', componentName, componentName) : void 0;
- }
- // These should be set up in the constructor, but as a convenience for
- // simpler class abstractions, we set them up after the fact.
- inst.props = publicProps;
- inst.context = publicContext;
- inst.refs = emptyObject;
- inst.updater = updateQueue;
- this._instance = inst;
- // Store a reference from the instance back to the internal representation
- ReactInstanceMap.set(inst, this);
- if (process.env.NODE_ENV !== 'production') {
- // Since plain JS classes are defined without any special initialization
- // logic, we can not catch common errors early. Therefore, we have to
- // catch them here, at initialization time, instead.
- process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;
- process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;
- }
- var initialState = inst.state;
- if (initialState === undefined) {
- inst.state = initialState = null;
- }
- !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;
- this._pendingStateQueue = null;
- this._pendingReplaceState = false;
- this._pendingForceUpdate = false;
- var markup;
- if (inst.unstable_handleError) {
- markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);
- } else {
- markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
- }
- if (inst.componentDidMount) {
- if (process.env.NODE_ENV !== 'production') {
- transaction.getReactMountReady().enqueue(function () {
- measureLifeCyclePerf(function () {
- return inst.componentDidMount();
- }, _this._debugID, 'componentDidMount');
- });
- } else {
- transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
- }
- }
- return markup;
- },
- _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {
- if (process.env.NODE_ENV !== 'production') {
- ReactCurrentOwner.current = this;
- try {
- return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
- } finally {
- ReactCurrentOwner.current = null;
- }
- } else {
- return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
- }
- },
- _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {
- var Component = this._currentElement.type;
- if (doConstruct) {
- if (process.env.NODE_ENV !== 'production') {
- return measureLifeCyclePerf(function () {
- return new Component(publicProps, publicContext, updateQueue);
- }, this._debugID, 'ctor');
- } else {
- return new Component(publicProps, publicContext, updateQueue);
- }
- }
- // This can still be an instance in case of factory components
- // but we'll count this as time spent rendering as the more common case.
- if (process.env.NODE_ENV !== 'production') {
- return measureLifeCyclePerf(function () {
- return Component(publicProps, publicContext, updateQueue);
- }, this._debugID, 'render');
- } else {
- return Component(publicProps, publicContext, updateQueue);
- }
- },
- performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
- var markup;
- var checkpoint = transaction.checkpoint();
- try {
- markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
- } catch (e) {
- // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint
- transaction.rollback(checkpoint);
- this._instance.unstable_handleError(e);
- if (this._pendingStateQueue) {
- this._instance.state = this._processPendingState(this._instance.props, this._instance.context);
- }
- checkpoint = transaction.checkpoint();
- this._renderedComponent.unmountComponent(true);
- transaction.rollback(checkpoint);
- // Try again - we've informed the component about the error, so they can render an error message this time.
- // If this throws again, the error will bubble up (and can be caught by a higher error boundary).
- markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
- }
- return markup;
- },
- performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
- var inst = this._instance;
- var debugID = 0;
- if (process.env.NODE_ENV !== 'production') {
- debugID = this._debugID;
- }
- if (inst.componentWillMount) {
- if (process.env.NODE_ENV !== 'production') {
- measureLifeCyclePerf(function () {
- return inst.componentWillMount();
- }, debugID, 'componentWillMount');
- } else {
- inst.componentWillMount();
- }
- // When mounting, calls to `setState` by `componentWillMount` will set
- // `this._pendingStateQueue` without triggering a re-render.
- if (this._pendingStateQueue) {
- inst.state = this._processPendingState(inst.props, inst.context);
- }
- }
- // If not a stateless component, we now render
- if (renderedElement === undefined) {
- renderedElement = this._renderValidatedComponent();
- }
- var nodeType = ReactNodeTypes.getType(renderedElement);
- this._renderedNodeType = nodeType;
- var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
- );
- this._renderedComponent = child;
- var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);
- if (process.env.NODE_ENV !== 'production') {
- if (debugID !== 0) {
- var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
- ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
- }
- }
- return markup;
- },
- getHostNode: function () {
- return ReactReconciler.getHostNode(this._renderedComponent);
- },
- /**
- * Releases any resources allocated by `mountComponent`.
- *
- * @final
- * @internal
- */
- unmountComponent: function (safely) {
- if (!this._renderedComponent) {
- return;
- }
- var inst = this._instance;
- if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
- inst._calledComponentWillUnmount = true;
- if (safely) {
- var name = this.getName() + '.componentWillUnmount()';
- ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
- } else {
- if (process.env.NODE_ENV !== 'production') {
- measureLifeCyclePerf(function () {
- return inst.componentWillUnmount();
- }, this._debugID, 'componentWillUnmount');
- } else {
- inst.componentWillUnmount();
- }
- }
- }
- if (this._renderedComponent) {
- ReactReconciler.unmountComponent(this._renderedComponent, safely);
- this._renderedNodeType = null;
- this._renderedComponent = null;
- this._instance = null;
- }
- // Reset pending fields
- // Even if this component is scheduled for another update in ReactUpdates,
- // it would still be ignored because these fields are reset.
- this._pendingStateQueue = null;
- this._pendingReplaceState = false;
- this._pendingForceUpdate = false;
- this._pendingCallbacks = null;
- this._pendingElement = null;
- // These fields do not really need to be reset since this object is no
- // longer accessible.
- this._context = null;
- this._rootNodeID = 0;
- this._topLevelWrapper = null;
- // Delete the reference from the instance to this internal representation
- // which allow the internals to be properly cleaned up even if the user
- // leaks a reference to the public instance.
- ReactInstanceMap.remove(inst);
- // Some existing components rely on inst.props even after they've been
- // destroyed (in event handlers).
- // TODO: inst.props = null;
- // TODO: inst.state = null;
- // TODO: inst.context = null;
- },
- /**
- * Filters the context object to only contain keys specified in
- * `contextTypes`
- *
- * @param {object} context
- * @return {?object}
- * @private
- */
- _maskContext: function (context) {
- var Component = this._currentElement.type;
- var contextTypes = Component.contextTypes;
- if (!contextTypes) {
- return emptyObject;
- }
- var maskedContext = {};
- for (var contextName in contextTypes) {
- maskedContext[contextName] = context[contextName];
- }
- return maskedContext;
- },
- /**
- * Filters the context object to only contain keys specified in
- * `contextTypes`, and asserts that they are valid.
- *
- * @param {object} context
- * @return {?object}
- * @private
- */
- _processContext: function (context) {
- var maskedContext = this._maskContext(context);
- if (process.env.NODE_ENV !== 'production') {
- var Component = this._currentElement.type;
- if (Component.contextTypes) {
- this._checkContextTypes(Component.contextTypes, maskedContext, 'context');
- }
- }
- return maskedContext;
- },
- /**
- * @param {object} currentContext
- * @return {object}
- * @private
- */
- _processChildContext: function (currentContext) {
- var Component = this._currentElement.type;
- var inst = this._instance;
- var childContext;
- if (inst.getChildContext) {
- if (process.env.NODE_ENV !== 'production') {
- ReactInstrumentation.debugTool.onBeginProcessingChildContext();
- try {
- childContext = inst.getChildContext();
- } finally {
- ReactInstrumentation.debugTool.onEndProcessingChildContext();
- }
- } else {
- childContext = inst.getChildContext();
- }
- }
- if (childContext) {
- !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;
- if (process.env.NODE_ENV !== 'production') {
- this._checkContextTypes(Component.childContextTypes, childContext, 'child context');
- }
- for (var name in childContext) {
- !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;
- }
- return _assign({}, currentContext, childContext);
- }
- return currentContext;
- },
- /**
- * Assert that the context types are valid
- *
- * @param {object} typeSpecs Map of context field to a ReactPropType
- * @param {object} values Runtime values that need to be type-checked
- * @param {string} location e.g. "prop", "context", "child context"
- * @private
- */
- _checkContextTypes: function (typeSpecs, values, location) {
- if (process.env.NODE_ENV !== 'production') {
- checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);
- }
- },
- receiveComponent: function (nextElement, transaction, nextContext) {
- var prevElement = this._currentElement;
- var prevContext = this._context;
- this._pendingElement = null;
- this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);
- },
- /**
- * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`
- * is set, update the component.
- *
- * @param {ReactReconcileTransaction} transaction
- * @internal
- */
- performUpdateIfNecessary: function (transaction) {
- if (this._pendingElement != null) {
- ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);
- } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
- this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);
- } else {
- this._updateBatchNumber = null;
- }
- },
- /**
- * Perform an update to a mounted component. The componentWillReceiveProps and
- * shouldComponentUpdate methods are called, then (assuming the update isn't
- * skipped) the remaining update lifecycle methods are called and the DOM
- * representation is updated.
- *
- * By default, this implements React's rendering and reconciliation algorithm.
- * Sophisticated clients may wish to override this.
- *
- * @param {ReactReconcileTransaction} transaction
- * @param {ReactElement} prevParentElement
- * @param {ReactElement} nextParentElement
- * @internal
- * @overridable
- */
- updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {
- var inst = this._instance;
- !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;
- var willReceive = false;
- var nextContext;
- // Determine if the context has changed or not
- if (this._context === nextUnmaskedContext) {
- nextContext = inst.context;
- } else {
- nextContext = this._processContext(nextUnmaskedContext);
- willReceive = true;
- }
- var prevProps = prevParentElement.props;
- var nextProps = nextParentElement.props;
- // Not a simple state update but a props update
- if (prevParentElement !== nextParentElement) {
- willReceive = true;
- }
- // An update here will schedule an update but immediately set
- // _pendingStateQueue which will ensure that any state updates gets
- // immediately reconciled instead of waiting for the next batch.
- if (willReceive && inst.componentWillReceiveProps) {
- if (process.env.NODE_ENV !== 'production') {
- measureLifeCyclePerf(function () {
- return inst.componentWillReceiveProps(nextProps, nextContext);
- }, this._debugID, 'componentWillReceiveProps');
- } else {
- inst.componentWillReceiveProps(nextProps, nextContext);
- }
- }
- var nextState = this._processPendingState(nextProps, nextContext);
- var shouldUpdate = true;
- if (!this._pendingForceUpdate) {
- if (inst.shouldComponentUpdate) {
- if (process.env.NODE_ENV !== 'production') {
- shouldUpdate = measureLifeCyclePerf(function () {
- return inst.shouldComponentUpdate(nextProps, nextState, nextContext);
- }, this._debugID, 'shouldComponentUpdate');
- } else {
- shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);
- }
- } else {
- if (this._compositeType === CompositeTypes.PureClass) {
- shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);
- }
- }
- }
- if (process.env.NODE_ENV !== 'production') {
- process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;
- }
- this._updateBatchNumber = null;
- if (shouldUpdate) {
- this._pendingForceUpdate = false;
- // Will set `this.props`, `this.state` and `this.context`.
- this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);
- } else {
- // If it's determined that a component should not update, we still want
- // to set props and state but we shortcut the rest of the update.
- this._currentElement = nextParentElement;
- this._context = nextUnmaskedContext;
- inst.props = nextProps;
- inst.state = nextState;
- inst.context = nextContext;
- }
- },
- _processPendingState: function (props, context) {
- var inst = this._instance;
- var queue = this._pendingStateQueue;
- var replace = this._pendingReplaceState;
- this._pendingReplaceState = false;
- this._pendingStateQueue = null;
- if (!queue) {
- return inst.state;
- }
- if (replace && queue.length === 1) {
- return queue[0];
- }
- var nextState = _assign({}, replace ? queue[0] : inst.state);
- for (var i = replace ? 1 : 0; i < queue.length; i++) {
- var partial = queue[i];
- _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);
- }
- return nextState;
- },
- /**
- * Merges new props and state, notifies delegate methods of update and
- * performs update.
- *
- * @param {ReactElement} nextElement Next element
- * @param {object} nextProps Next public object to set as properties.
- * @param {?object} nextState Next object to set as state.
- * @param {?object} nextContext Next public object to set as context.
- * @param {ReactReconcileTransaction} transaction
- * @param {?object} unmaskedContext
- * @private
- */
- _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {
- var _this2 = this;
- var inst = this._instance;
- var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);
- var prevProps;
- var prevState;
- var prevContext;
- if (hasComponentDidUpdate) {
- prevProps = inst.props;
- prevState = inst.state;
- prevContext = inst.context;
- }
- if (inst.componentWillUpdate) {
- if (process.env.NODE_ENV !== 'production') {
- measureLifeCyclePerf(function () {
- return inst.componentWillUpdate(nextProps, nextState, nextContext);
- }, this._debugID, 'componentWillUpdate');
- } else {
- inst.componentWillUpdate(nextProps, nextState, nextContext);
- }
- }
- this._currentElement = nextElement;
- this._context = unmaskedContext;
- inst.props = nextProps;
- inst.state = nextState;
- inst.context = nextContext;
- this._updateRenderedComponent(transaction, unmaskedContext);
- if (hasComponentDidUpdate) {
- if (process.env.NODE_ENV !== 'production') {
- transaction.getReactMountReady().enqueue(function () {
- measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');
- });
- } else {
- transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);
- }
- }
- },
- /**
- * Call the component's `render` method and update the DOM accordingly.
- *
- * @param {ReactReconcileTransaction} transaction
- * @internal
- */
- _updateRenderedComponent: function (transaction, context) {
- var prevComponentInstance = this._renderedComponent;
- var prevRenderedElement = prevComponentInstance._currentElement;
- var nextRenderedElement = this._renderValidatedComponent();
- var debugID = 0;
- if (process.env.NODE_ENV !== 'production') {
- debugID = this._debugID;
- }
- if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
- ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));
- } else {
- var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);
- ReactReconciler.unmountComponent(prevComponentInstance, false);
- var nodeType = ReactNodeTypes.getType(nextRenderedElement);
- this._renderedNodeType = nodeType;
- var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
- );
- this._renderedComponent = child;
- var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);
- if (process.env.NODE_ENV !== 'production') {
- if (debugID !== 0) {
- var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
- ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
- }
- }
- this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);
- }
- },
- /**
- * Overridden in shallow rendering.
- *
- * @protected
- */
- _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {
- ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);
- },
- /**
- * @protected
- */
- _renderValidatedComponentWithoutOwnerOrContext: function () {
- var inst = this._instance;
- var renderedElement;
- if (process.env.NODE_ENV !== 'production') {
- renderedElement = measureLifeCyclePerf(function () {
- return inst.render();
- }, this._debugID, 'render');
- } else {
- renderedElement = inst.render();
- }
- if (process.env.NODE_ENV !== 'production') {
- // We allow auto-mocks to proceed as if they're returning null.
- if (renderedElement === undefined && inst.render._isMockFunction) {
- // This is probably bad practice. Consider warning here and
- // deprecating this convenience.
- renderedElement = null;
- }
- }
- return renderedElement;
- },
- /**
- * @private
- */
- _renderValidatedComponent: function () {
- var renderedElement;
- if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {
- ReactCurrentOwner.current = this;
- try {
- renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();
- } finally {
- ReactCurrentOwner.current = null;
- }
- } else {
- renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();
- }
- !(
- // TODO: An `isValidNode` function would probably be more appropriate
- renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;
- return renderedElement;
- },
- /**
- * Lazily allocates the refs object and stores `component` as `ref`.
- *
- * @param {string} ref Reference name.
- * @param {component} component Component to store as `ref`.
- * @final
- * @private
- */
- attachRef: function (ref, component) {
- var inst = this.getPublicInstance();
- !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;
- var publicComponentInstance = component.getPublicInstance();
- if (process.env.NODE_ENV !== 'production') {
- var componentName = component && component.getName ? component.getName() : 'a component';
- process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;
- }
- var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;
- refs[ref] = publicComponentInstance;
- },
- /**
- * Detaches a reference name.
- *
- * @param {string} ref Name to dereference.
- * @final
- * @private
- */
- detachRef: function (ref) {
- var refs = this.getPublicInstance().refs;
- delete refs[ref];
- },
- /**
- * Get a text description of the component that can be used to identify it
- * in error messages.
- * @return {string} The name or null.
- * @internal
- */
- getName: function () {
- var type = this._currentElement.type;
- var constructor = this._instance && this._instance.constructor;
- return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;
- },
- /**
- * Get the publicly accessible representation of this component - i.e. what
- * is exposed by refs and returned by render. Can be null for stateless
- * components.
- *
- * @return {ReactComponent} the public component instance.
- * @internal
- */
- getPublicInstance: function () {
- var inst = this._instance;
- if (this._compositeType === CompositeTypes.StatelessFunctional) {
- return null;
- }
- return inst;
- },
- // Stub
- _instantiateReactComponent: null
- };
- module.exports = ReactCompositeComponent;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 147 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactPropTypeLocationNames = __webpack_require__(148);
- var ReactPropTypesSecret = __webpack_require__(68);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- var ReactComponentTreeHook;
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
- // Temporary hack.
- // Inline requires don't work well with Jest:
- // https://github.com/facebook/react/issues/7240
- // Remove the inline requires when we don't need them anymore:
- // https://github.com/facebook/react/pull/7178
- ReactComponentTreeHook = __webpack_require__(7);
- }
- var loggedTypeFailures = {};
- /**
- * Assert that the values match with the type specs.
- * Error messages are memorized and will only be shown once.
- *
- * @param {object} typeSpecs Map of name to a ReactPropType
- * @param {object} values Runtime values that need to be type-checked
- * @param {string} location e.g. "prop", "context", "child context"
- * @param {string} componentName Name of the component for error messages.
- * @param {?object} element The React element that is being type-checked
- * @param {?number} debugID The React component instance that is being type-checked
- * @private
- */
- function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
- for (var typeSpecName in typeSpecs) {
- if (typeSpecs.hasOwnProperty(typeSpecName)) {
- var error;
- // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0;
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
- } catch (ex) {
- error = ex;
- }
- process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error.message] = true;
- var componentStackInfo = '';
- if (process.env.NODE_ENV !== 'production') {
- if (!ReactComponentTreeHook) {
- ReactComponentTreeHook = __webpack_require__(7);
- }
- if (debugID !== null) {
- componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
- } else if (element !== null) {
- componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
- }
- }
- process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
- }
- }
- }
- }
- module.exports = checkReactTypeSpec;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 148 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var ReactPropTypeLocationNames = {};
- if (process.env.NODE_ENV !== 'production') {
- ReactPropTypeLocationNames = {
- prop: 'prop',
- context: 'context',
- childContext: 'child context'
- };
- }
- module.exports = ReactPropTypeLocationNames;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 149 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var nextDebugID = 1;
- function getNextDebugID() {
- return nextDebugID++;
- }
- module.exports = getNextDebugID;
- /***/ }),
- /* 150 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- // The Symbol used to tag the ReactElement type. If there is no native Symbol
- // nor polyfill, then a plain number is used for performance.
- var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
- module.exports = REACT_ELEMENT_TYPE;
- /***/ }),
- /* 151 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- /* global Symbol */
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
- /**
- * Returns the iterator method function contained on the iterable object.
- *
- * Be sure to invoke the function with the iterable as context:
- *
- * var iteratorFn = getIteratorFn(myIterable);
- * if (iteratorFn) {
- * var iterator = iteratorFn.call(myIterable);
- * ...
- * }
- *
- * @param {?object} maybeIterable
- * @return {?function}
- */
- function getIteratorFn(maybeIterable) {
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
- if (typeof iteratorFn === 'function') {
- return iteratorFn;
- }
- }
- module.exports = getIteratorFn;
- /***/ }),
- /* 152 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var KeyEscapeUtils = __webpack_require__(47);
- var traverseAllChildren = __webpack_require__(75);
- var warning = __webpack_require__(2);
- var ReactComponentTreeHook;
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
- // Temporary hack.
- // Inline requires don't work well with Jest:
- // https://github.com/facebook/react/issues/7240
- // Remove the inline requires when we don't need them anymore:
- // https://github.com/facebook/react/pull/7178
- ReactComponentTreeHook = __webpack_require__(7);
- }
- /**
- * @param {function} traverseContext Context passed through traversal.
- * @param {?ReactComponent} child React child component.
- * @param {!string} name String name of key path to child.
- * @param {number=} selfDebugID Optional debugID of the current internal instance.
- */
- function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {
- // We found a component instance.
- if (traverseContext && typeof traverseContext === 'object') {
- var result = traverseContext;
- var keyUnique = result[name] === undefined;
- if (process.env.NODE_ENV !== 'production') {
- if (!ReactComponentTreeHook) {
- ReactComponentTreeHook = __webpack_require__(7);
- }
- if (!keyUnique) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;
- }
- }
- if (keyUnique && child != null) {
- result[name] = child;
- }
- }
- }
- /**
- * Flattens children that are typically specified as `props.children`. Any null
- * children will not be included in the resulting object.
- * @return {!object} flattened children keyed by name.
- */
- function flattenChildren(children, selfDebugID) {
- if (children == null) {
- return children;
- }
- var result = {};
- if (process.env.NODE_ENV !== 'production') {
- traverseAllChildren(children, function (traverseContext, child, name) {
- return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);
- }, result);
- } else {
- traverseAllChildren(children, flattenSingleChildIntoContext, result);
- }
- return result;
- }
- module.exports = flattenChildren;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 153 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var PooledClass = __webpack_require__(16);
- var Transaction = __webpack_require__(28);
- var ReactInstrumentation = __webpack_require__(9);
- var ReactServerUpdateQueue = __webpack_require__(154);
- /**
- * Executed within the scope of the `Transaction` instance. Consider these as
- * being member methods, but with an implied ordering while being isolated from
- * each other.
- */
- var TRANSACTION_WRAPPERS = [];
- if (process.env.NODE_ENV !== 'production') {
- TRANSACTION_WRAPPERS.push({
- initialize: ReactInstrumentation.debugTool.onBeginFlush,
- close: ReactInstrumentation.debugTool.onEndFlush
- });
- }
- var noopCallbackQueue = {
- enqueue: function () {}
- };
- /**
- * @class ReactServerRenderingTransaction
- * @param {boolean} renderToStaticMarkup
- */
- function ReactServerRenderingTransaction(renderToStaticMarkup) {
- this.reinitializeTransaction();
- this.renderToStaticMarkup = renderToStaticMarkup;
- this.useCreateElement = false;
- this.updateQueue = new ReactServerUpdateQueue(this);
- }
- var Mixin = {
- /**
- * @see Transaction
- * @abstract
- * @final
- * @return {array} Empty list of operation wrap procedures.
- */
- getTransactionWrappers: function () {
- return TRANSACTION_WRAPPERS;
- },
- /**
- * @return {object} The queue to collect `onDOMReady` callbacks with.
- */
- getReactMountReady: function () {
- return noopCallbackQueue;
- },
- /**
- * @return {object} The queue to collect React async events.
- */
- getUpdateQueue: function () {
- return this.updateQueue;
- },
- /**
- * `PooledClass` looks for this, and will invoke this before allowing this
- * instance to be reused.
- */
- destructor: function () {},
- checkpoint: function () {},
- rollback: function () {}
- };
- _assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);
- PooledClass.addPoolingTo(ReactServerRenderingTransaction);
- module.exports = ReactServerRenderingTransaction;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 154 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var ReactUpdateQueue = __webpack_require__(48);
- var warning = __webpack_require__(2);
- function warnNoop(publicInstance, callerName) {
- if (process.env.NODE_ENV !== 'production') {
- var constructor = publicInstance.constructor;
- process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;
- }
- }
- /**
- * This is the update queue used for server rendering.
- * It delegates to ReactUpdateQueue while server rendering is in progress and
- * switches to ReactNoopUpdateQueue after the transaction has completed.
- * @class ReactServerUpdateQueue
- * @param {Transaction} transaction
- */
- var ReactServerUpdateQueue = function () {
- function ReactServerUpdateQueue(transaction) {
- _classCallCheck(this, ReactServerUpdateQueue);
- this.transaction = transaction;
- }
- /**
- * Checks whether or not this composite component is mounted.
- * @param {ReactClass} publicInstance The instance we want to test.
- * @return {boolean} True if mounted, false otherwise.
- * @protected
- * @final
- */
- ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {
- return false;
- };
- /**
- * Enqueue a callback that will be executed after all the pending updates
- * have processed.
- *
- * @param {ReactClass} publicInstance The instance to use as `this` context.
- * @param {?function} callback Called after state is updated.
- * @internal
- */
- ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {
- if (this.transaction.isInTransaction()) {
- ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);
- }
- };
- /**
- * Forces an update. This should only be invoked when it is known with
- * certainty that we are **not** in a DOM transaction.
- *
- * You may want to call this when you know that some deeper aspect of the
- * component's state has changed but `setState` was not called.
- *
- * This will not invoke `shouldComponentUpdate`, but it will invoke
- * `componentWillUpdate` and `componentDidUpdate`.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @internal
- */
- ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {
- if (this.transaction.isInTransaction()) {
- ReactUpdateQueue.enqueueForceUpdate(publicInstance);
- } else {
- warnNoop(publicInstance, 'forceUpdate');
- }
- };
- /**
- * Replaces all of the state. Always use this or `setState` to mutate state.
- * You should treat `this.state` as immutable.
- *
- * There is no guarantee that `this.state` will be immediately updated, so
- * accessing `this.state` after calling this method may return the old value.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object|function} completeState Next state.
- * @internal
- */
- ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {
- if (this.transaction.isInTransaction()) {
- ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);
- } else {
- warnNoop(publicInstance, 'replaceState');
- }
- };
- /**
- * Sets a subset of the state. This only exists because _pendingState is
- * internal. This provides a merging strategy that is not available to deep
- * properties which is confusing. TODO: Expose pendingState or don't use it
- * during the merge.
- *
- * @param {ReactClass} publicInstance The instance that should rerender.
- * @param {object|function} partialState Next partial state to be merged with state.
- * @internal
- */
- ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {
- if (this.transaction.isInTransaction()) {
- ReactUpdateQueue.enqueueSetState(publicInstance, partialState);
- } else {
- warnNoop(publicInstance, 'setState');
- }
- };
- return ReactServerUpdateQueue;
- }();
- module.exports = ReactServerUpdateQueue;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 155 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2014-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var DOMLazyTree = __webpack_require__(19);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactDOMEmptyComponent = function (instantiate) {
- // ReactCompositeComponent uses this:
- this._currentElement = null;
- // ReactDOMComponentTree uses these:
- this._hostNode = null;
- this._hostParent = null;
- this._hostContainerInfo = null;
- this._domID = 0;
- };
- _assign(ReactDOMEmptyComponent.prototype, {
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
- var domID = hostContainerInfo._idCounter++;
- this._domID = domID;
- this._hostParent = hostParent;
- this._hostContainerInfo = hostContainerInfo;
- var nodeValue = ' react-empty: ' + this._domID + ' ';
- if (transaction.useCreateElement) {
- var ownerDocument = hostContainerInfo._ownerDocument;
- var node = ownerDocument.createComment(nodeValue);
- ReactDOMComponentTree.precacheNode(this, node);
- return DOMLazyTree(node);
- } else {
- if (transaction.renderToStaticMarkup) {
- // Normally we'd insert a comment node, but since this is a situation
- // where React won't take over (static pages), we can simply return
- // nothing.
- return '';
- }
- return '<!--' + nodeValue + '-->';
- }
- },
- receiveComponent: function () {},
- getHostNode: function () {
- return ReactDOMComponentTree.getNodeFromInstance(this);
- },
- unmountComponent: function () {
- ReactDOMComponentTree.uncacheNode(this);
- }
- });
- module.exports = ReactDOMEmptyComponent;
- /***/ }),
- /* 156 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var invariant = __webpack_require__(1);
- /**
- * Return the lowest common ancestor of A and B, or null if they are in
- * different trees.
- */
- function getLowestCommonAncestor(instA, instB) {
- !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
- !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
- var depthA = 0;
- for (var tempA = instA; tempA; tempA = tempA._hostParent) {
- depthA++;
- }
- var depthB = 0;
- for (var tempB = instB; tempB; tempB = tempB._hostParent) {
- depthB++;
- }
- // If A is deeper, crawl up.
- while (depthA - depthB > 0) {
- instA = instA._hostParent;
- depthA--;
- }
- // If B is deeper, crawl up.
- while (depthB - depthA > 0) {
- instB = instB._hostParent;
- depthB--;
- }
- // Walk in lockstep until we find a match.
- var depth = depthA;
- while (depth--) {
- if (instA === instB) {
- return instA;
- }
- instA = instA._hostParent;
- instB = instB._hostParent;
- }
- return null;
- }
- /**
- * Return if A is an ancestor of B.
- */
- function isAncestor(instA, instB) {
- !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;
- !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;
- while (instB) {
- if (instB === instA) {
- return true;
- }
- instB = instB._hostParent;
- }
- return false;
- }
- /**
- * Return the parent instance of the passed-in instance.
- */
- function getParentInstance(inst) {
- !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;
- return inst._hostParent;
- }
- /**
- * Simulates the traversal of a two-phase, capture/bubble event dispatch.
- */
- function traverseTwoPhase(inst, fn, arg) {
- var path = [];
- while (inst) {
- path.push(inst);
- inst = inst._hostParent;
- }
- var i;
- for (i = path.length; i-- > 0;) {
- fn(path[i], 'captured', arg);
- }
- for (i = 0; i < path.length; i++) {
- fn(path[i], 'bubbled', arg);
- }
- }
- /**
- * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that
- * should would receive a `mouseEnter` or `mouseLeave` event.
- *
- * Does not invoke the callback on the nearest common ancestor because nothing
- * "entered" or "left" that element.
- */
- function traverseEnterLeave(from, to, fn, argFrom, argTo) {
- var common = from && to ? getLowestCommonAncestor(from, to) : null;
- var pathFrom = [];
- while (from && from !== common) {
- pathFrom.push(from);
- from = from._hostParent;
- }
- var pathTo = [];
- while (to && to !== common) {
- pathTo.push(to);
- to = to._hostParent;
- }
- var i;
- for (i = 0; i < pathFrom.length; i++) {
- fn(pathFrom[i], 'bubbled', argFrom);
- }
- for (i = pathTo.length; i-- > 0;) {
- fn(pathTo[i], 'captured', argTo);
- }
- }
- module.exports = {
- isAncestor: isAncestor,
- getLowestCommonAncestor: getLowestCommonAncestor,
- getParentInstance: getParentInstance,
- traverseTwoPhase: traverseTwoPhase,
- traverseEnterLeave: traverseEnterLeave
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 157 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3),
- _assign = __webpack_require__(4);
- var DOMChildrenOperations = __webpack_require__(40);
- var DOMLazyTree = __webpack_require__(19);
- var ReactDOMComponentTree = __webpack_require__(5);
- var escapeTextContentForBrowser = __webpack_require__(31);
- var invariant = __webpack_require__(1);
- var validateDOMNesting = __webpack_require__(49);
- /**
- * Text nodes violate a couple assumptions that React makes about components:
- *
- * - When mounting text into the DOM, adjacent text nodes are merged.
- * - Text nodes cannot be assigned a React root ID.
- *
- * This component is used to wrap strings between comment nodes so that they
- * can undergo the same reconciliation that is applied to elements.
- *
- * TODO: Investigate representing React components in the DOM with text nodes.
- *
- * @class ReactDOMTextComponent
- * @extends ReactComponent
- * @internal
- */
- var ReactDOMTextComponent = function (text) {
- // TODO: This is really a ReactText (ReactNode), not a ReactElement
- this._currentElement = text;
- this._stringText = '' + text;
- // ReactDOMComponentTree uses these:
- this._hostNode = null;
- this._hostParent = null;
- // Properties
- this._domID = 0;
- this._mountIndex = 0;
- this._closingComment = null;
- this._commentNodes = null;
- };
- _assign(ReactDOMTextComponent.prototype, {
- /**
- * Creates the markup for this text node. This node is not intended to have
- * any features besides containing text content.
- *
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @return {string} Markup for this text node.
- * @internal
- */
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
- if (process.env.NODE_ENV !== 'production') {
- var parentInfo;
- if (hostParent != null) {
- parentInfo = hostParent._ancestorInfo;
- } else if (hostContainerInfo != null) {
- parentInfo = hostContainerInfo._ancestorInfo;
- }
- if (parentInfo) {
- // parentInfo should always be present except for the top-level
- // component when server rendering
- validateDOMNesting(null, this._stringText, this, parentInfo);
- }
- }
- var domID = hostContainerInfo._idCounter++;
- var openingValue = ' react-text: ' + domID + ' ';
- var closingValue = ' /react-text ';
- this._domID = domID;
- this._hostParent = hostParent;
- if (transaction.useCreateElement) {
- var ownerDocument = hostContainerInfo._ownerDocument;
- var openingComment = ownerDocument.createComment(openingValue);
- var closingComment = ownerDocument.createComment(closingValue);
- var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());
- DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));
- if (this._stringText) {
- DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));
- }
- DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));
- ReactDOMComponentTree.precacheNode(this, openingComment);
- this._closingComment = closingComment;
- return lazyTree;
- } else {
- var escapedText = escapeTextContentForBrowser(this._stringText);
- if (transaction.renderToStaticMarkup) {
- // Normally we'd wrap this between comment nodes for the reasons stated
- // above, but since this is a situation where React won't take over
- // (static pages), we can simply return the text as it is.
- return escapedText;
- }
- return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';
- }
- },
- /**
- * Updates this component by updating the text content.
- *
- * @param {ReactText} nextText The next text content
- * @param {ReactReconcileTransaction} transaction
- * @internal
- */
- receiveComponent: function (nextText, transaction) {
- if (nextText !== this._currentElement) {
- this._currentElement = nextText;
- var nextStringText = '' + nextText;
- if (nextStringText !== this._stringText) {
- // TODO: Save this as pending props and use performUpdateIfNecessary
- // and/or updateComponent to do the actual update for consistency with
- // other component types?
- this._stringText = nextStringText;
- var commentNodes = this.getHostNode();
- DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);
- }
- }
- },
- getHostNode: function () {
- var hostNode = this._commentNodes;
- if (hostNode) {
- return hostNode;
- }
- if (!this._closingComment) {
- var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);
- var node = openingComment.nextSibling;
- while (true) {
- !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;
- if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {
- this._closingComment = node;
- break;
- }
- node = node.nextSibling;
- }
- }
- hostNode = [this._hostNode, this._closingComment];
- this._commentNodes = hostNode;
- return hostNode;
- },
- unmountComponent: function () {
- this._closingComment = null;
- this._commentNodes = null;
- ReactDOMComponentTree.uncacheNode(this);
- }
- });
- module.exports = ReactDOMTextComponent;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 158 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var ReactUpdates = __webpack_require__(11);
- var Transaction = __webpack_require__(28);
- var emptyFunction = __webpack_require__(8);
- var RESET_BATCHED_UPDATES = {
- initialize: emptyFunction,
- close: function () {
- ReactDefaultBatchingStrategy.isBatchingUpdates = false;
- }
- };
- var FLUSH_BATCHED_UPDATES = {
- initialize: emptyFunction,
- close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)
- };
- var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];
- function ReactDefaultBatchingStrategyTransaction() {
- this.reinitializeTransaction();
- }
- _assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {
- getTransactionWrappers: function () {
- return TRANSACTION_WRAPPERS;
- }
- });
- var transaction = new ReactDefaultBatchingStrategyTransaction();
- var ReactDefaultBatchingStrategy = {
- isBatchingUpdates: false,
- /**
- * Call the provided function in a context within which calls to `setState`
- * and friends are batched such that components aren't updated unnecessarily.
- */
- batchedUpdates: function (callback, a, b, c, d, e) {
- var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;
- ReactDefaultBatchingStrategy.isBatchingUpdates = true;
- // The code is written this way to avoid extra allocations
- if (alreadyBatchingUpdates) {
- return callback(a, b, c, d, e);
- } else {
- return transaction.perform(callback, null, a, b, c, d, e);
- }
- }
- };
- module.exports = ReactDefaultBatchingStrategy;
- /***/ }),
- /* 159 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var EventListener = __webpack_require__(76);
- var ExecutionEnvironment = __webpack_require__(6);
- var PooledClass = __webpack_require__(16);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactUpdates = __webpack_require__(11);
- var getEventTarget = __webpack_require__(37);
- var getUnboundedScrollPosition = __webpack_require__(160);
- /**
- * Find the deepest React component completely containing the root of the
- * passed-in instance (for use when entire React trees are nested within each
- * other). If React trees are not nested, returns null.
- */
- function findParent(inst) {
- // TODO: It may be a good idea to cache this to prevent unnecessary DOM
- // traversal, but caching is difficult to do correctly without using a
- // mutation observer to listen for all DOM changes.
- while (inst._hostParent) {
- inst = inst._hostParent;
- }
- var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);
- var container = rootNode.parentNode;
- return ReactDOMComponentTree.getClosestInstanceFromNode(container);
- }
- // Used to store ancestor hierarchy in top level callback
- function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {
- this.topLevelType = topLevelType;
- this.nativeEvent = nativeEvent;
- this.ancestors = [];
- }
- _assign(TopLevelCallbackBookKeeping.prototype, {
- destructor: function () {
- this.topLevelType = null;
- this.nativeEvent = null;
- this.ancestors.length = 0;
- }
- });
- PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);
- function handleTopLevelImpl(bookKeeping) {
- var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);
- var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);
- // Loop through the hierarchy, in case there's any nested components.
- // It's important that we build the array of ancestors before calling any
- // event handlers, because event handlers can modify the DOM, leading to
- // inconsistencies with ReactMount's node cache. See #1105.
- var ancestor = targetInst;
- do {
- bookKeeping.ancestors.push(ancestor);
- ancestor = ancestor && findParent(ancestor);
- } while (ancestor);
- for (var i = 0; i < bookKeeping.ancestors.length; i++) {
- targetInst = bookKeeping.ancestors[i];
- ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));
- }
- }
- function scrollValueMonitor(cb) {
- var scrollPosition = getUnboundedScrollPosition(window);
- cb(scrollPosition);
- }
- var ReactEventListener = {
- _enabled: true,
- _handleTopLevel: null,
- WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,
- setHandleTopLevel: function (handleTopLevel) {
- ReactEventListener._handleTopLevel = handleTopLevel;
- },
- setEnabled: function (enabled) {
- ReactEventListener._enabled = !!enabled;
- },
- isEnabled: function () {
- return ReactEventListener._enabled;
- },
- /**
- * Traps top-level events by using event bubbling.
- *
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {string} handlerBaseName Event name (e.g. "click").
- * @param {object} element Element on which to attach listener.
- * @return {?object} An object with a remove function which will forcefully
- * remove the listener.
- * @internal
- */
- trapBubbledEvent: function (topLevelType, handlerBaseName, element) {
- if (!element) {
- return null;
- }
- return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
- },
- /**
- * Traps a top-level event by using event capturing.
- *
- * @param {string} topLevelType Record from `EventConstants`.
- * @param {string} handlerBaseName Event name (e.g. "click").
- * @param {object} element Element on which to attach listener.
- * @return {?object} An object with a remove function which will forcefully
- * remove the listener.
- * @internal
- */
- trapCapturedEvent: function (topLevelType, handlerBaseName, element) {
- if (!element) {
- return null;
- }
- return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
- },
- monitorScrollValue: function (refresh) {
- var callback = scrollValueMonitor.bind(null, refresh);
- EventListener.listen(window, 'scroll', callback);
- },
- dispatchEvent: function (topLevelType, nativeEvent) {
- if (!ReactEventListener._enabled) {
- return;
- }
- var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);
- try {
- // Event queue being processed in the same cycle allows
- // `preventDefault`.
- ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);
- } finally {
- TopLevelCallbackBookKeeping.release(bookKeeping);
- }
- }
- };
- module.exports = ReactEventListener;
- /***/ }),
- /* 160 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- /**
- * Gets the scroll position of the supplied element or window.
- *
- * The return values are unbounded, unlike `getScrollPosition`. This means they
- * may be negative or exceed the element boundaries (which is possible using
- * inertial scrolling).
- *
- * @param {DOMWindow|DOMElement} scrollable
- * @return {object} Map with `x` and `y` keys.
- */
- function getUnboundedScrollPosition(scrollable) {
- if (scrollable.Window && scrollable instanceof scrollable.Window) {
- return {
- x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,
- y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop
- };
- }
- return {
- x: scrollable.scrollLeft,
- y: scrollable.scrollTop
- };
- }
- module.exports = getUnboundedScrollPosition;
- /***/ }),
- /* 161 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMProperty = __webpack_require__(13);
- var EventPluginHub = __webpack_require__(22);
- var EventPluginUtils = __webpack_require__(35);
- var ReactComponentEnvironment = __webpack_require__(44);
- var ReactEmptyComponent = __webpack_require__(73);
- var ReactBrowserEventEmitter = __webpack_require__(32);
- var ReactHostComponent = __webpack_require__(74);
- var ReactUpdates = __webpack_require__(11);
- var ReactInjection = {
- Component: ReactComponentEnvironment.injection,
- DOMProperty: DOMProperty.injection,
- EmptyComponent: ReactEmptyComponent.injection,
- EventPluginHub: EventPluginHub.injection,
- EventPluginUtils: EventPluginUtils.injection,
- EventEmitter: ReactBrowserEventEmitter.injection,
- HostComponent: ReactHostComponent.injection,
- Updates: ReactUpdates.injection
- };
- module.exports = ReactInjection;
- /***/ }),
- /* 162 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _assign = __webpack_require__(4);
- var CallbackQueue = __webpack_require__(60);
- var PooledClass = __webpack_require__(16);
- var ReactBrowserEventEmitter = __webpack_require__(32);
- var ReactInputSelection = __webpack_require__(77);
- var ReactInstrumentation = __webpack_require__(9);
- var Transaction = __webpack_require__(28);
- var ReactUpdateQueue = __webpack_require__(48);
- /**
- * Ensures that, when possible, the selection range (currently selected text
- * input) is not disturbed by performing the transaction.
- */
- var SELECTION_RESTORATION = {
- /**
- * @return {Selection} Selection information.
- */
- initialize: ReactInputSelection.getSelectionInformation,
- /**
- * @param {Selection} sel Selection information returned from `initialize`.
- */
- close: ReactInputSelection.restoreSelection
- };
- /**
- * Suppresses events (blur/focus) that could be inadvertently dispatched due to
- * high level DOM manipulations (like temporarily removing a text input from the
- * DOM).
- */
- var EVENT_SUPPRESSION = {
- /**
- * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before
- * the reconciliation.
- */
- initialize: function () {
- var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();
- ReactBrowserEventEmitter.setEnabled(false);
- return currentlyEnabled;
- },
- /**
- * @param {boolean} previouslyEnabled Enabled status of
- * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`
- * restores the previous value.
- */
- close: function (previouslyEnabled) {
- ReactBrowserEventEmitter.setEnabled(previouslyEnabled);
- }
- };
- /**
- * Provides a queue for collecting `componentDidMount` and
- * `componentDidUpdate` callbacks during the transaction.
- */
- var ON_DOM_READY_QUEUEING = {
- /**
- * Initializes the internal `onDOMReady` queue.
- */
- initialize: function () {
- this.reactMountReady.reset();
- },
- /**
- * After DOM is flushed, invoke all registered `onDOMReady` callbacks.
- */
- close: function () {
- this.reactMountReady.notifyAll();
- }
- };
- /**
- * Executed within the scope of the `Transaction` instance. Consider these as
- * being member methods, but with an implied ordering while being isolated from
- * each other.
- */
- var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];
- if (process.env.NODE_ENV !== 'production') {
- TRANSACTION_WRAPPERS.push({
- initialize: ReactInstrumentation.debugTool.onBeginFlush,
- close: ReactInstrumentation.debugTool.onEndFlush
- });
- }
- /**
- * Currently:
- * - The order that these are listed in the transaction is critical:
- * - Suppresses events.
- * - Restores selection range.
- *
- * Future:
- * - Restore document/overflow scroll positions that were unintentionally
- * modified via DOM insertions above the top viewport boundary.
- * - Implement/integrate with customized constraint based layout system and keep
- * track of which dimensions must be remeasured.
- *
- * @class ReactReconcileTransaction
- */
- function ReactReconcileTransaction(useCreateElement) {
- this.reinitializeTransaction();
- // Only server-side rendering really needs this option (see
- // `ReactServerRendering`), but server-side uses
- // `ReactServerRenderingTransaction` instead. This option is here so that it's
- // accessible and defaults to false when `ReactDOMComponent` and
- // `ReactDOMTextComponent` checks it in `mountComponent`.`
- this.renderToStaticMarkup = false;
- this.reactMountReady = CallbackQueue.getPooled(null);
- this.useCreateElement = useCreateElement;
- }
- var Mixin = {
- /**
- * @see Transaction
- * @abstract
- * @final
- * @return {array<object>} List of operation wrap procedures.
- * TODO: convert to array<TransactionWrapper>
- */
- getTransactionWrappers: function () {
- return TRANSACTION_WRAPPERS;
- },
- /**
- * @return {object} The queue to collect `onDOMReady` callbacks with.
- */
- getReactMountReady: function () {
- return this.reactMountReady;
- },
- /**
- * @return {object} The queue to collect React async events.
- */
- getUpdateQueue: function () {
- return ReactUpdateQueue;
- },
- /**
- * Save current transaction state -- if the return value from this method is
- * passed to `rollback`, the transaction will be reset to that state.
- */
- checkpoint: function () {
- // reactMountReady is the our only stateful wrapper
- return this.reactMountReady.checkpoint();
- },
- rollback: function (checkpoint) {
- this.reactMountReady.rollback(checkpoint);
- },
- /**
- * `PooledClass` looks for this, and will invoke this before allowing this
- * instance to be reused.
- */
- destructor: function () {
- CallbackQueue.release(this.reactMountReady);
- this.reactMountReady = null;
- }
- };
- _assign(ReactReconcileTransaction.prototype, Transaction, Mixin);
- PooledClass.addPoolingTo(ReactReconcileTransaction);
- module.exports = ReactReconcileTransaction;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 163 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ExecutionEnvironment = __webpack_require__(6);
- var getNodeForCharacterOffset = __webpack_require__(164);
- var getTextContentAccessor = __webpack_require__(59);
- /**
- * While `isCollapsed` is available on the Selection object and `collapsed`
- * is available on the Range object, IE11 sometimes gets them wrong.
- * If the anchor/focus nodes and offsets are the same, the range is collapsed.
- */
- function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {
- return anchorNode === focusNode && anchorOffset === focusOffset;
- }
- /**
- * Get the appropriate anchor and focus node/offset pairs for IE.
- *
- * The catch here is that IE's selection API doesn't provide information
- * about whether the selection is forward or backward, so we have to
- * behave as though it's always forward.
- *
- * IE text differs from modern selection in that it behaves as though
- * block elements end with a new line. This means character offsets will
- * differ between the two APIs.
- *
- * @param {DOMElement} node
- * @return {object}
- */
- function getIEOffsets(node) {
- var selection = document.selection;
- var selectedRange = selection.createRange();
- var selectedLength = selectedRange.text.length;
- // Duplicate selection so we can move range without breaking user selection.
- var fromStart = selectedRange.duplicate();
- fromStart.moveToElementText(node);
- fromStart.setEndPoint('EndToStart', selectedRange);
- var startOffset = fromStart.text.length;
- var endOffset = startOffset + selectedLength;
- return {
- start: startOffset,
- end: endOffset
- };
- }
- /**
- * @param {DOMElement} node
- * @return {?object}
- */
- function getModernOffsets(node) {
- var selection = window.getSelection && window.getSelection();
- if (!selection || selection.rangeCount === 0) {
- return null;
- }
- var anchorNode = selection.anchorNode;
- var anchorOffset = selection.anchorOffset;
- var focusNode = selection.focusNode;
- var focusOffset = selection.focusOffset;
- var currentRange = selection.getRangeAt(0);
- // In Firefox, range.startContainer and range.endContainer can be "anonymous
- // divs", e.g. the up/down buttons on an <input type="number">. Anonymous
- // divs do not seem to expose properties, triggering a "Permission denied
- // error" if any of its properties are accessed. The only seemingly possible
- // way to avoid erroring is to access a property that typically works for
- // non-anonymous divs and catch any error that may otherwise arise. See
- // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
- try {
- /* eslint-disable no-unused-expressions */
- currentRange.startContainer.nodeType;
- currentRange.endContainer.nodeType;
- /* eslint-enable no-unused-expressions */
- } catch (e) {
- return null;
- }
- // If the node and offset values are the same, the selection is collapsed.
- // `Selection.isCollapsed` is available natively, but IE sometimes gets
- // this value wrong.
- var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);
- var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;
- var tempRange = currentRange.cloneRange();
- tempRange.selectNodeContents(node);
- tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);
- var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);
- var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;
- var end = start + rangeLength;
- // Detect whether the selection is backward.
- var detectionRange = document.createRange();
- detectionRange.setStart(anchorNode, anchorOffset);
- detectionRange.setEnd(focusNode, focusOffset);
- var isBackward = detectionRange.collapsed;
- return {
- start: isBackward ? end : start,
- end: isBackward ? start : end
- };
- }
- /**
- * @param {DOMElement|DOMTextNode} node
- * @param {object} offsets
- */
- function setIEOffsets(node, offsets) {
- var range = document.selection.createRange().duplicate();
- var start, end;
- if (offsets.end === undefined) {
- start = offsets.start;
- end = start;
- } else if (offsets.start > offsets.end) {
- start = offsets.end;
- end = offsets.start;
- } else {
- start = offsets.start;
- end = offsets.end;
- }
- range.moveToElementText(node);
- range.moveStart('character', start);
- range.setEndPoint('EndToStart', range);
- range.moveEnd('character', end - start);
- range.select();
- }
- /**
- * In modern non-IE browsers, we can support both forward and backward
- * selections.
- *
- * Note: IE10+ supports the Selection object, but it does not support
- * the `extend` method, which means that even in modern IE, it's not possible
- * to programmatically create a backward selection. Thus, for all IE
- * versions, we use the old IE API to create our selections.
- *
- * @param {DOMElement|DOMTextNode} node
- * @param {object} offsets
- */
- function setModernOffsets(node, offsets) {
- if (!window.getSelection) {
- return;
- }
- var selection = window.getSelection();
- var length = node[getTextContentAccessor()].length;
- var start = Math.min(offsets.start, length);
- var end = offsets.end === undefined ? start : Math.min(offsets.end, length);
- // IE 11 uses modern selection, but doesn't support the extend method.
- // Flip backward selections, so we can set with a single range.
- if (!selection.extend && start > end) {
- var temp = end;
- end = start;
- start = temp;
- }
- var startMarker = getNodeForCharacterOffset(node, start);
- var endMarker = getNodeForCharacterOffset(node, end);
- if (startMarker && endMarker) {
- var range = document.createRange();
- range.setStart(startMarker.node, startMarker.offset);
- selection.removeAllRanges();
- if (start > end) {
- selection.addRange(range);
- selection.extend(endMarker.node, endMarker.offset);
- } else {
- range.setEnd(endMarker.node, endMarker.offset);
- selection.addRange(range);
- }
- }
- }
- var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);
- var ReactDOMSelection = {
- /**
- * @param {DOMElement} node
- */
- getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,
- /**
- * @param {DOMElement|DOMTextNode} node
- * @param {object} offsets
- */
- setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets
- };
- module.exports = ReactDOMSelection;
- /***/ }),
- /* 164 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- /**
- * Given any node return the first leaf node without children.
- *
- * @param {DOMElement|DOMTextNode} node
- * @return {DOMElement|DOMTextNode}
- */
- function getLeafNode(node) {
- while (node && node.firstChild) {
- node = node.firstChild;
- }
- return node;
- }
- /**
- * Get the next sibling within a container. This will walk up the
- * DOM if a node's siblings have been exhausted.
- *
- * @param {DOMElement|DOMTextNode} node
- * @return {?DOMElement|DOMTextNode}
- */
- function getSiblingNode(node) {
- while (node) {
- if (node.nextSibling) {
- return node.nextSibling;
- }
- node = node.parentNode;
- }
- }
- /**
- * Get object describing the nodes which contain characters at offset.
- *
- * @param {DOMElement|DOMTextNode} root
- * @param {number} offset
- * @return {?object}
- */
- function getNodeForCharacterOffset(root, offset) {
- var node = getLeafNode(root);
- var nodeStart = 0;
- var nodeEnd = 0;
- while (node) {
- if (node.nodeType === 3) {
- nodeEnd = nodeStart + node.textContent.length;
- if (nodeStart <= offset && nodeEnd >= offset) {
- return {
- node: node,
- offset: offset - nodeStart
- };
- }
- nodeStart = nodeEnd;
- }
- node = getLeafNode(getSiblingNode(node));
- }
- }
- module.exports = getNodeForCharacterOffset;
- /***/ }),
- /* 165 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- *
- */
- var isTextNode = __webpack_require__(166);
- /*eslint-disable no-bitwise */
- /**
- * Checks if a given DOM node contains or is another DOM node.
- */
- function containsNode(outerNode, innerNode) {
- if (!outerNode || !innerNode) {
- return false;
- } else if (outerNode === innerNode) {
- return true;
- } else if (isTextNode(outerNode)) {
- return false;
- } else if (isTextNode(innerNode)) {
- return containsNode(outerNode, innerNode.parentNode);
- } else if ('contains' in outerNode) {
- return outerNode.contains(innerNode);
- } else if (outerNode.compareDocumentPosition) {
- return !!(outerNode.compareDocumentPosition(innerNode) & 16);
- } else {
- return false;
- }
- }
- module.exports = containsNode;
- /***/ }),
- /* 166 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var isNode = __webpack_require__(167);
- /**
- * @param {*} object The object to check.
- * @return {boolean} Whether or not the object is a DOM text node.
- */
- function isTextNode(object) {
- return isNode(object) && object.nodeType == 3;
- }
- module.exports = isTextNode;
- /***/ }),
- /* 167 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- /**
- * @param {*} object The object to check.
- * @return {boolean} Whether or not the object is a DOM node.
- */
- function isNode(object) {
- var doc = object ? object.ownerDocument || object : document;
- var defaultView = doc.defaultView || window;
- return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));
- }
- module.exports = isNode;
- /***/ }),
- /* 168 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var NS = {
- xlink: 'http://www.w3.org/1999/xlink',
- xml: 'http://www.w3.org/XML/1998/namespace'
- };
- // We use attributes for everything SVG so let's avoid some duplication and run
- // code instead.
- // The following are all specified in the HTML config already so we exclude here.
- // - class (as className)
- // - color
- // - height
- // - id
- // - lang
- // - max
- // - media
- // - method
- // - min
- // - name
- // - style
- // - target
- // - type
- // - width
- var ATTRS = {
- accentHeight: 'accent-height',
- accumulate: 0,
- additive: 0,
- alignmentBaseline: 'alignment-baseline',
- allowReorder: 'allowReorder',
- alphabetic: 0,
- amplitude: 0,
- arabicForm: 'arabic-form',
- ascent: 0,
- attributeName: 'attributeName',
- attributeType: 'attributeType',
- autoReverse: 'autoReverse',
- azimuth: 0,
- baseFrequency: 'baseFrequency',
- baseProfile: 'baseProfile',
- baselineShift: 'baseline-shift',
- bbox: 0,
- begin: 0,
- bias: 0,
- by: 0,
- calcMode: 'calcMode',
- capHeight: 'cap-height',
- clip: 0,
- clipPath: 'clip-path',
- clipRule: 'clip-rule',
- clipPathUnits: 'clipPathUnits',
- colorInterpolation: 'color-interpolation',
- colorInterpolationFilters: 'color-interpolation-filters',
- colorProfile: 'color-profile',
- colorRendering: 'color-rendering',
- contentScriptType: 'contentScriptType',
- contentStyleType: 'contentStyleType',
- cursor: 0,
- cx: 0,
- cy: 0,
- d: 0,
- decelerate: 0,
- descent: 0,
- diffuseConstant: 'diffuseConstant',
- direction: 0,
- display: 0,
- divisor: 0,
- dominantBaseline: 'dominant-baseline',
- dur: 0,
- dx: 0,
- dy: 0,
- edgeMode: 'edgeMode',
- elevation: 0,
- enableBackground: 'enable-background',
- end: 0,
- exponent: 0,
- externalResourcesRequired: 'externalResourcesRequired',
- fill: 0,
- fillOpacity: 'fill-opacity',
- fillRule: 'fill-rule',
- filter: 0,
- filterRes: 'filterRes',
- filterUnits: 'filterUnits',
- floodColor: 'flood-color',
- floodOpacity: 'flood-opacity',
- focusable: 0,
- fontFamily: 'font-family',
- fontSize: 'font-size',
- fontSizeAdjust: 'font-size-adjust',
- fontStretch: 'font-stretch',
- fontStyle: 'font-style',
- fontVariant: 'font-variant',
- fontWeight: 'font-weight',
- format: 0,
- from: 0,
- fx: 0,
- fy: 0,
- g1: 0,
- g2: 0,
- glyphName: 'glyph-name',
- glyphOrientationHorizontal: 'glyph-orientation-horizontal',
- glyphOrientationVertical: 'glyph-orientation-vertical',
- glyphRef: 'glyphRef',
- gradientTransform: 'gradientTransform',
- gradientUnits: 'gradientUnits',
- hanging: 0,
- horizAdvX: 'horiz-adv-x',
- horizOriginX: 'horiz-origin-x',
- ideographic: 0,
- imageRendering: 'image-rendering',
- 'in': 0,
- in2: 0,
- intercept: 0,
- k: 0,
- k1: 0,
- k2: 0,
- k3: 0,
- k4: 0,
- kernelMatrix: 'kernelMatrix',
- kernelUnitLength: 'kernelUnitLength',
- kerning: 0,
- keyPoints: 'keyPoints',
- keySplines: 'keySplines',
- keyTimes: 'keyTimes',
- lengthAdjust: 'lengthAdjust',
- letterSpacing: 'letter-spacing',
- lightingColor: 'lighting-color',
- limitingConeAngle: 'limitingConeAngle',
- local: 0,
- markerEnd: 'marker-end',
- markerMid: 'marker-mid',
- markerStart: 'marker-start',
- markerHeight: 'markerHeight',
- markerUnits: 'markerUnits',
- markerWidth: 'markerWidth',
- mask: 0,
- maskContentUnits: 'maskContentUnits',
- maskUnits: 'maskUnits',
- mathematical: 0,
- mode: 0,
- numOctaves: 'numOctaves',
- offset: 0,
- opacity: 0,
- operator: 0,
- order: 0,
- orient: 0,
- orientation: 0,
- origin: 0,
- overflow: 0,
- overlinePosition: 'overline-position',
- overlineThickness: 'overline-thickness',
- paintOrder: 'paint-order',
- panose1: 'panose-1',
- pathLength: 'pathLength',
- patternContentUnits: 'patternContentUnits',
- patternTransform: 'patternTransform',
- patternUnits: 'patternUnits',
- pointerEvents: 'pointer-events',
- points: 0,
- pointsAtX: 'pointsAtX',
- pointsAtY: 'pointsAtY',
- pointsAtZ: 'pointsAtZ',
- preserveAlpha: 'preserveAlpha',
- preserveAspectRatio: 'preserveAspectRatio',
- primitiveUnits: 'primitiveUnits',
- r: 0,
- radius: 0,
- refX: 'refX',
- refY: 'refY',
- renderingIntent: 'rendering-intent',
- repeatCount: 'repeatCount',
- repeatDur: 'repeatDur',
- requiredExtensions: 'requiredExtensions',
- requiredFeatures: 'requiredFeatures',
- restart: 0,
- result: 0,
- rotate: 0,
- rx: 0,
- ry: 0,
- scale: 0,
- seed: 0,
- shapeRendering: 'shape-rendering',
- slope: 0,
- spacing: 0,
- specularConstant: 'specularConstant',
- specularExponent: 'specularExponent',
- speed: 0,
- spreadMethod: 'spreadMethod',
- startOffset: 'startOffset',
- stdDeviation: 'stdDeviation',
- stemh: 0,
- stemv: 0,
- stitchTiles: 'stitchTiles',
- stopColor: 'stop-color',
- stopOpacity: 'stop-opacity',
- strikethroughPosition: 'strikethrough-position',
- strikethroughThickness: 'strikethrough-thickness',
- string: 0,
- stroke: 0,
- strokeDasharray: 'stroke-dasharray',
- strokeDashoffset: 'stroke-dashoffset',
- strokeLinecap: 'stroke-linecap',
- strokeLinejoin: 'stroke-linejoin',
- strokeMiterlimit: 'stroke-miterlimit',
- strokeOpacity: 'stroke-opacity',
- strokeWidth: 'stroke-width',
- surfaceScale: 'surfaceScale',
- systemLanguage: 'systemLanguage',
- tableValues: 'tableValues',
- targetX: 'targetX',
- targetY: 'targetY',
- textAnchor: 'text-anchor',
- textDecoration: 'text-decoration',
- textRendering: 'text-rendering',
- textLength: 'textLength',
- to: 0,
- transform: 0,
- u1: 0,
- u2: 0,
- underlinePosition: 'underline-position',
- underlineThickness: 'underline-thickness',
- unicode: 0,
- unicodeBidi: 'unicode-bidi',
- unicodeRange: 'unicode-range',
- unitsPerEm: 'units-per-em',
- vAlphabetic: 'v-alphabetic',
- vHanging: 'v-hanging',
- vIdeographic: 'v-ideographic',
- vMathematical: 'v-mathematical',
- values: 0,
- vectorEffect: 'vector-effect',
- version: 0,
- vertAdvY: 'vert-adv-y',
- vertOriginX: 'vert-origin-x',
- vertOriginY: 'vert-origin-y',
- viewBox: 'viewBox',
- viewTarget: 'viewTarget',
- visibility: 0,
- widths: 0,
- wordSpacing: 'word-spacing',
- writingMode: 'writing-mode',
- x: 0,
- xHeight: 'x-height',
- x1: 0,
- x2: 0,
- xChannelSelector: 'xChannelSelector',
- xlinkActuate: 'xlink:actuate',
- xlinkArcrole: 'xlink:arcrole',
- xlinkHref: 'xlink:href',
- xlinkRole: 'xlink:role',
- xlinkShow: 'xlink:show',
- xlinkTitle: 'xlink:title',
- xlinkType: 'xlink:type',
- xmlBase: 'xml:base',
- xmlns: 0,
- xmlnsXlink: 'xmlns:xlink',
- xmlLang: 'xml:lang',
- xmlSpace: 'xml:space',
- y: 0,
- y1: 0,
- y2: 0,
- yChannelSelector: 'yChannelSelector',
- z: 0,
- zoomAndPan: 'zoomAndPan'
- };
- var SVGDOMPropertyConfig = {
- Properties: {},
- DOMAttributeNamespaces: {
- xlinkActuate: NS.xlink,
- xlinkArcrole: NS.xlink,
- xlinkHref: NS.xlink,
- xlinkRole: NS.xlink,
- xlinkShow: NS.xlink,
- xlinkTitle: NS.xlink,
- xlinkType: NS.xlink,
- xmlBase: NS.xml,
- xmlLang: NS.xml,
- xmlSpace: NS.xml
- },
- DOMAttributeNames: {}
- };
- Object.keys(ATTRS).forEach(function (key) {
- SVGDOMPropertyConfig.Properties[key] = 0;
- if (ATTRS[key]) {
- SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];
- }
- });
- module.exports = SVGDOMPropertyConfig;
- /***/ }),
- /* 169 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var EventPropagators = __webpack_require__(21);
- var ExecutionEnvironment = __webpack_require__(6);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactInputSelection = __webpack_require__(77);
- var SyntheticEvent = __webpack_require__(12);
- var getActiveElement = __webpack_require__(78);
- var isTextInputElement = __webpack_require__(62);
- var shallowEqual = __webpack_require__(45);
- var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;
- var eventTypes = {
- select: {
- phasedRegistrationNames: {
- bubbled: 'onSelect',
- captured: 'onSelectCapture'
- },
- dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']
- }
- };
- var activeElement = null;
- var activeElementInst = null;
- var lastSelection = null;
- var mouseDown = false;
- // Track whether a listener exists for this plugin. If none exist, we do
- // not extract events. See #3639.
- var hasListener = false;
- /**
- * Get an object which is a unique representation of the current selection.
- *
- * The return value will not be consistent across nodes or browsers, but
- * two identical selections on the same node will return identical objects.
- *
- * @param {DOMElement} node
- * @return {object}
- */
- function getSelection(node) {
- if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {
- return {
- start: node.selectionStart,
- end: node.selectionEnd
- };
- } else if (window.getSelection) {
- var selection = window.getSelection();
- return {
- anchorNode: selection.anchorNode,
- anchorOffset: selection.anchorOffset,
- focusNode: selection.focusNode,
- focusOffset: selection.focusOffset
- };
- } else if (document.selection) {
- var range = document.selection.createRange();
- return {
- parentElement: range.parentElement(),
- text: range.text,
- top: range.boundingTop,
- left: range.boundingLeft
- };
- }
- }
- /**
- * Poll selection to see whether it's changed.
- *
- * @param {object} nativeEvent
- * @return {?SyntheticEvent}
- */
- function constructSelectEvent(nativeEvent, nativeEventTarget) {
- // Ensure we have the right element, and that the user is not dragging a
- // selection (this matches native `select` event behavior). In HTML5, select
- // fires only on input and textarea thus if there's no focused element we
- // won't dispatch.
- if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {
- return null;
- }
- // Only fire when selection has actually changed.
- var currentSelection = getSelection(activeElement);
- if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
- lastSelection = currentSelection;
- var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);
- syntheticEvent.type = 'select';
- syntheticEvent.target = activeElement;
- EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);
- return syntheticEvent;
- }
- return null;
- }
- /**
- * This plugin creates an `onSelect` event that normalizes select events
- * across form elements.
- *
- * Supported elements are:
- * - input (see `isTextInputElement`)
- * - textarea
- * - contentEditable
- *
- * This differs from native browser implementations in the following ways:
- * - Fires on contentEditable fields as well as inputs.
- * - Fires for collapsed selection.
- * - Fires after user input.
- */
- var SelectEventPlugin = {
- eventTypes: eventTypes,
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- if (!hasListener) {
- return null;
- }
- var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
- switch (topLevelType) {
- // Track the input node that has focus.
- case 'topFocus':
- if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {
- activeElement = targetNode;
- activeElementInst = targetInst;
- lastSelection = null;
- }
- break;
- case 'topBlur':
- activeElement = null;
- activeElementInst = null;
- lastSelection = null;
- break;
- // Don't fire the event while the user is dragging. This matches the
- // semantics of the native select event.
- case 'topMouseDown':
- mouseDown = true;
- break;
- case 'topContextMenu':
- case 'topMouseUp':
- mouseDown = false;
- return constructSelectEvent(nativeEvent, nativeEventTarget);
- // Chrome and IE fire non-standard event when selection is changed (and
- // sometimes when it hasn't). IE's event fires out of order with respect
- // to key and input events on deletion, so we discard it.
- //
- // Firefox doesn't support selectionchange, so check selection status
- // after each key entry. The selection changes after keydown and before
- // keyup, but we check on keydown as well in the case of holding down a
- // key, when multiple keydown events are fired but only one keyup is.
- // This is also our approach for IE handling, for the reason above.
- case 'topSelectionChange':
- if (skipSelectionChangeEvent) {
- break;
- }
- // falls through
- case 'topKeyDown':
- case 'topKeyUp':
- return constructSelectEvent(nativeEvent, nativeEventTarget);
- }
- return null;
- },
- didPutListener: function (inst, registrationName, listener) {
- if (registrationName === 'onSelect') {
- hasListener = true;
- }
- }
- };
- module.exports = SelectEventPlugin;
- /***/ }),
- /* 170 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var EventListener = __webpack_require__(76);
- var EventPropagators = __webpack_require__(21);
- var ReactDOMComponentTree = __webpack_require__(5);
- var SyntheticAnimationEvent = __webpack_require__(171);
- var SyntheticClipboardEvent = __webpack_require__(172);
- var SyntheticEvent = __webpack_require__(12);
- var SyntheticFocusEvent = __webpack_require__(173);
- var SyntheticKeyboardEvent = __webpack_require__(174);
- var SyntheticMouseEvent = __webpack_require__(29);
- var SyntheticDragEvent = __webpack_require__(176);
- var SyntheticTouchEvent = __webpack_require__(177);
- var SyntheticTransitionEvent = __webpack_require__(178);
- var SyntheticUIEvent = __webpack_require__(23);
- var SyntheticWheelEvent = __webpack_require__(179);
- var emptyFunction = __webpack_require__(8);
- var getEventCharCode = __webpack_require__(50);
- var invariant = __webpack_require__(1);
- /**
- * Turns
- * ['abort', ...]
- * into
- * eventTypes = {
- * 'abort': {
- * phasedRegistrationNames: {
- * bubbled: 'onAbort',
- * captured: 'onAbortCapture',
- * },
- * dependencies: ['topAbort'],
- * },
- * ...
- * };
- * topLevelEventsToDispatchConfig = {
- * 'topAbort': { sameConfig }
- * };
- */
- var eventTypes = {};
- var topLevelEventsToDispatchConfig = {};
- ['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {
- var capitalizedEvent = event[0].toUpperCase() + event.slice(1);
- var onEvent = 'on' + capitalizedEvent;
- var topEvent = 'top' + capitalizedEvent;
- var type = {
- phasedRegistrationNames: {
- bubbled: onEvent,
- captured: onEvent + 'Capture'
- },
- dependencies: [topEvent]
- };
- eventTypes[event] = type;
- topLevelEventsToDispatchConfig[topEvent] = type;
- });
- var onClickListeners = {};
- function getDictionaryKey(inst) {
- // Prevents V8 performance issue:
- // https://github.com/facebook/react/pull/7232
- return '.' + inst._rootNodeID;
- }
- function isInteractive(tag) {
- return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
- }
- var SimpleEventPlugin = {
- eventTypes: eventTypes,
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
- var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];
- if (!dispatchConfig) {
- return null;
- }
- var EventConstructor;
- switch (topLevelType) {
- case 'topAbort':
- case 'topCanPlay':
- case 'topCanPlayThrough':
- case 'topDurationChange':
- case 'topEmptied':
- case 'topEncrypted':
- case 'topEnded':
- case 'topError':
- case 'topInput':
- case 'topInvalid':
- case 'topLoad':
- case 'topLoadedData':
- case 'topLoadedMetadata':
- case 'topLoadStart':
- case 'topPause':
- case 'topPlay':
- case 'topPlaying':
- case 'topProgress':
- case 'topRateChange':
- case 'topReset':
- case 'topSeeked':
- case 'topSeeking':
- case 'topStalled':
- case 'topSubmit':
- case 'topSuspend':
- case 'topTimeUpdate':
- case 'topVolumeChange':
- case 'topWaiting':
- // HTML Events
- // @see http://www.w3.org/TR/html5/index.html#events-0
- EventConstructor = SyntheticEvent;
- break;
- case 'topKeyPress':
- // Firefox creates a keypress event for function keys too. This removes
- // the unwanted keypress events. Enter is however both printable and
- // non-printable. One would expect Tab to be as well (but it isn't).
- if (getEventCharCode(nativeEvent) === 0) {
- return null;
- }
- /* falls through */
- case 'topKeyDown':
- case 'topKeyUp':
- EventConstructor = SyntheticKeyboardEvent;
- break;
- case 'topBlur':
- case 'topFocus':
- EventConstructor = SyntheticFocusEvent;
- break;
- case 'topClick':
- // Firefox creates a click event on right mouse clicks. This removes the
- // unwanted click events.
- if (nativeEvent.button === 2) {
- return null;
- }
- /* falls through */
- case 'topDoubleClick':
- case 'topMouseDown':
- case 'topMouseMove':
- case 'topMouseUp':
- // TODO: Disabled elements should not respond to mouse events
- /* falls through */
- case 'topMouseOut':
- case 'topMouseOver':
- case 'topContextMenu':
- EventConstructor = SyntheticMouseEvent;
- break;
- case 'topDrag':
- case 'topDragEnd':
- case 'topDragEnter':
- case 'topDragExit':
- case 'topDragLeave':
- case 'topDragOver':
- case 'topDragStart':
- case 'topDrop':
- EventConstructor = SyntheticDragEvent;
- break;
- case 'topTouchCancel':
- case 'topTouchEnd':
- case 'topTouchMove':
- case 'topTouchStart':
- EventConstructor = SyntheticTouchEvent;
- break;
- case 'topAnimationEnd':
- case 'topAnimationIteration':
- case 'topAnimationStart':
- EventConstructor = SyntheticAnimationEvent;
- break;
- case 'topTransitionEnd':
- EventConstructor = SyntheticTransitionEvent;
- break;
- case 'topScroll':
- EventConstructor = SyntheticUIEvent;
- break;
- case 'topWheel':
- EventConstructor = SyntheticWheelEvent;
- break;
- case 'topCopy':
- case 'topCut':
- case 'topPaste':
- EventConstructor = SyntheticClipboardEvent;
- break;
- }
- !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;
- var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);
- EventPropagators.accumulateTwoPhaseDispatches(event);
- return event;
- },
- didPutListener: function (inst, registrationName, listener) {
- // Mobile Safari does not fire properly bubble click events on
- // non-interactive elements, which means delegated click listeners do not
- // fire. The workaround for this bug involves attaching an empty click
- // listener on the target node.
- // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
- if (registrationName === 'onClick' && !isInteractive(inst._tag)) {
- var key = getDictionaryKey(inst);
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
- if (!onClickListeners[key]) {
- onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);
- }
- }
- },
- willDeleteListener: function (inst, registrationName) {
- if (registrationName === 'onClick' && !isInteractive(inst._tag)) {
- var key = getDictionaryKey(inst);
- onClickListeners[key].remove();
- delete onClickListeners[key];
- }
- }
- };
- module.exports = SimpleEventPlugin;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 171 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticEvent = __webpack_require__(12);
- /**
- * @interface Event
- * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface
- * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent
- */
- var AnimationEventInterface = {
- animationName: null,
- elapsedTime: null,
- pseudoElement: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticEvent}
- */
- function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);
- module.exports = SyntheticAnimationEvent;
- /***/ }),
- /* 172 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticEvent = __webpack_require__(12);
- /**
- * @interface Event
- * @see http://www.w3.org/TR/clipboard-apis/
- */
- var ClipboardEventInterface = {
- clipboardData: function (event) {
- return 'clipboardData' in event ? event.clipboardData : window.clipboardData;
- }
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
- module.exports = SyntheticClipboardEvent;
- /***/ }),
- /* 173 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticUIEvent = __webpack_require__(23);
- /**
- * @interface FocusEvent
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var FocusEventInterface = {
- relatedTarget: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
- module.exports = SyntheticFocusEvent;
- /***/ }),
- /* 174 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticUIEvent = __webpack_require__(23);
- var getEventCharCode = __webpack_require__(50);
- var getEventKey = __webpack_require__(175);
- var getEventModifierState = __webpack_require__(39);
- /**
- * @interface KeyboardEvent
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var KeyboardEventInterface = {
- key: getEventKey,
- location: null,
- ctrlKey: null,
- shiftKey: null,
- altKey: null,
- metaKey: null,
- repeat: null,
- locale: null,
- getModifierState: getEventModifierState,
- // Legacy Interface
- charCode: function (event) {
- // `charCode` is the result of a KeyPress event and represents the value of
- // the actual printable character.
- // KeyPress is deprecated, but its replacement is not yet final and not
- // implemented in any major browser. Only KeyPress has charCode.
- if (event.type === 'keypress') {
- return getEventCharCode(event);
- }
- return 0;
- },
- keyCode: function (event) {
- // `keyCode` is the result of a KeyDown/Up event and represents the value of
- // physical keyboard key.
- // The actual meaning of the value depends on the users' keyboard layout
- // which cannot be detected. Assuming that it is a US keyboard layout
- // provides a surprisingly accurate mapping for US and European users.
- // Due to this, it is left to the user to implement at this time.
- if (event.type === 'keydown' || event.type === 'keyup') {
- return event.keyCode;
- }
- return 0;
- },
- which: function (event) {
- // `which` is an alias for either `keyCode` or `charCode` depending on the
- // type of the event.
- if (event.type === 'keypress') {
- return getEventCharCode(event);
- }
- if (event.type === 'keydown' || event.type === 'keyup') {
- return event.keyCode;
- }
- return 0;
- }
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
- module.exports = SyntheticKeyboardEvent;
- /***/ }),
- /* 175 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var getEventCharCode = __webpack_require__(50);
- /**
- * Normalization of deprecated HTML5 `key` values
- * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
- */
- var normalizeKey = {
- 'Esc': 'Escape',
- 'Spacebar': ' ',
- 'Left': 'ArrowLeft',
- 'Up': 'ArrowUp',
- 'Right': 'ArrowRight',
- 'Down': 'ArrowDown',
- 'Del': 'Delete',
- 'Win': 'OS',
- 'Menu': 'ContextMenu',
- 'Apps': 'ContextMenu',
- 'Scroll': 'ScrollLock',
- 'MozPrintableKey': 'Unidentified'
- };
- /**
- * Translation from legacy `keyCode` to HTML5 `key`
- * Only special keys supported, all others depend on keyboard layout or browser
- * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
- */
- var translateToKey = {
- 8: 'Backspace',
- 9: 'Tab',
- 12: 'Clear',
- 13: 'Enter',
- 16: 'Shift',
- 17: 'Control',
- 18: 'Alt',
- 19: 'Pause',
- 20: 'CapsLock',
- 27: 'Escape',
- 32: ' ',
- 33: 'PageUp',
- 34: 'PageDown',
- 35: 'End',
- 36: 'Home',
- 37: 'ArrowLeft',
- 38: 'ArrowUp',
- 39: 'ArrowRight',
- 40: 'ArrowDown',
- 45: 'Insert',
- 46: 'Delete',
- 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',
- 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',
- 144: 'NumLock',
- 145: 'ScrollLock',
- 224: 'Meta'
- };
- /**
- * @param {object} nativeEvent Native browser event.
- * @return {string} Normalized `key` property.
- */
- function getEventKey(nativeEvent) {
- if (nativeEvent.key) {
- // Normalize inconsistent values reported by browsers due to
- // implementations of a working draft specification.
- // FireFox implements `key` but returns `MozPrintableKey` for all
- // printable characters (normalized to `Unidentified`), ignore it.
- var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
- if (key !== 'Unidentified') {
- return key;
- }
- }
- // Browser does not implement `key`, polyfill as much of it as we can.
- if (nativeEvent.type === 'keypress') {
- var charCode = getEventCharCode(nativeEvent);
- // The enter-key is technically both printable and non-printable and can
- // thus be captured by `keypress`, no other non-printable key should.
- return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);
- }
- if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {
- // While user keyboard layout determines the actual meaning of each
- // `keyCode` value, almost all function keys have a universal value.
- return translateToKey[nativeEvent.keyCode] || 'Unidentified';
- }
- return '';
- }
- module.exports = getEventKey;
- /***/ }),
- /* 176 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticMouseEvent = __webpack_require__(29);
- /**
- * @interface DragEvent
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var DragEventInterface = {
- dataTransfer: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
- module.exports = SyntheticDragEvent;
- /***/ }),
- /* 177 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticUIEvent = __webpack_require__(23);
- var getEventModifierState = __webpack_require__(39);
- /**
- * @interface TouchEvent
- * @see http://www.w3.org/TR/touch-events/
- */
- var TouchEventInterface = {
- touches: null,
- targetTouches: null,
- changedTouches: null,
- altKey: null,
- metaKey: null,
- ctrlKey: null,
- shiftKey: null,
- getModifierState: getEventModifierState
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticUIEvent}
- */
- function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
- module.exports = SyntheticTouchEvent;
- /***/ }),
- /* 178 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticEvent = __webpack_require__(12);
- /**
- * @interface Event
- * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-
- * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent
- */
- var TransitionEventInterface = {
- propertyName: null,
- elapsedTime: null,
- pseudoElement: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticEvent}
- */
- function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);
- module.exports = SyntheticTransitionEvent;
- /***/ }),
- /* 179 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var SyntheticMouseEvent = __webpack_require__(29);
- /**
- * @interface WheelEvent
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
- */
- var WheelEventInterface = {
- deltaX: function (event) {
- return 'deltaX' in event ? event.deltaX :
- // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
- 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;
- },
- deltaY: function (event) {
- return 'deltaY' in event ? event.deltaY :
- // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
- 'wheelDeltaY' in event ? -event.wheelDeltaY :
- // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
- 'wheelDelta' in event ? -event.wheelDelta : 0;
- },
- deltaZ: null,
- // Browsers without "deltaMode" is reporting in raw wheel delta where one
- // notch on the scroll is always +/- 120, roughly equivalent to pixels.
- // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
- // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
- deltaMode: null
- };
- /**
- * @param {object} dispatchConfig Configuration used to dispatch this event.
- * @param {string} dispatchMarker Marker identifying the event target.
- * @param {object} nativeEvent Native browser event.
- * @extends {SyntheticMouseEvent}
- */
- function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
- return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
- }
- SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
- module.exports = SyntheticWheelEvent;
- /***/ }),
- /* 180 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var validateDOMNesting = __webpack_require__(49);
- var DOC_NODE_TYPE = 9;
- function ReactDOMContainerInfo(topLevelWrapper, node) {
- var info = {
- _topLevelWrapper: topLevelWrapper,
- _idCounter: 1,
- _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,
- _node: node,
- _tag: node ? node.nodeName.toLowerCase() : null,
- _namespaceURI: node ? node.namespaceURI : null
- };
- if (process.env.NODE_ENV !== 'production') {
- info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;
- }
- return info;
- }
- module.exports = ReactDOMContainerInfo;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 181 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactDOMFeatureFlags = {
- useCreateElement: true,
- useFiber: false
- };
- module.exports = ReactDOMFeatureFlags;
- /***/ }),
- /* 182 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var adler32 = __webpack_require__(183);
- var TAG_END = /\/?>/;
- var COMMENT_START = /^<\!\-\-/;
- var ReactMarkupChecksum = {
- CHECKSUM_ATTR_NAME: 'data-react-checksum',
- /**
- * @param {string} markup Markup string
- * @return {string} Markup string with checksum attribute attached
- */
- addChecksumToMarkup: function (markup) {
- var checksum = adler32(markup);
- // Add checksum (handle both parent tags, comments and self-closing tags)
- if (COMMENT_START.test(markup)) {
- return markup;
- } else {
- return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&');
- }
- },
- /**
- * @param {string} markup to use
- * @param {DOMElement} element root React element
- * @returns {boolean} whether or not the markup is the same
- */
- canReuseMarkup: function (markup, element) {
- var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
- existingChecksum = existingChecksum && parseInt(existingChecksum, 10);
- var markupChecksum = adler32(markup);
- return markupChecksum === existingChecksum;
- }
- };
- module.exports = ReactMarkupChecksum;
- /***/ }),
- /* 183 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
- var MOD = 65521;
- // adler32 is not cryptographically strong, and is only used to sanity check that
- // markup generated on the server matches the markup generated on the client.
- // This implementation (a modified version of the SheetJS version) has been optimized
- // for our use case, at the expense of conforming to the adler32 specification
- // for non-ascii inputs.
- function adler32(data) {
- var a = 1;
- var b = 0;
- var i = 0;
- var l = data.length;
- var m = l & ~0x3;
- while (i < m) {
- var n = Math.min(i + 4096, m);
- for (; i < n; i += 4) {
- b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));
- }
- a %= MOD;
- b %= MOD;
- }
- for (; i < l; i++) {
- b += a += data.charCodeAt(i);
- }
- a %= MOD;
- b %= MOD;
- return a | b << 16;
- }
- module.exports = adler32;
- /***/ }),
- /* 184 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- module.exports = '15.5.4';
- /***/ }),
- /* 185 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var _prodInvariant = __webpack_require__(3);
- var ReactCurrentOwner = __webpack_require__(10);
- var ReactDOMComponentTree = __webpack_require__(5);
- var ReactInstanceMap = __webpack_require__(24);
- var getHostComponentFromComposite = __webpack_require__(80);
- var invariant = __webpack_require__(1);
- var warning = __webpack_require__(2);
- /**
- * Returns the DOM node rendered by this element.
- *
- * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode
- *
- * @param {ReactComponent|DOMElement} componentOrElement
- * @return {?DOMElement} The root node of this element.
- */
- function findDOMNode(componentOrElement) {
- if (process.env.NODE_ENV !== 'production') {
- var owner = ReactCurrentOwner.current;
- if (owner !== null) {
- process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;
- owner._warnedAboutRefsInRender = true;
- }
- }
- if (componentOrElement == null) {
- return null;
- }
- if (componentOrElement.nodeType === 1) {
- return componentOrElement;
- }
- var inst = ReactInstanceMap.get(componentOrElement);
- if (inst) {
- inst = getHostComponentFromComposite(inst);
- return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;
- }
- if (typeof componentOrElement.render === 'function') {
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;
- } else {
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;
- }
- }
- module.exports = findDOMNode;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 186 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactMount = __webpack_require__(79);
- module.exports = ReactMount.renderSubtreeIntoContainer;
- /***/ }),
- /* 187 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMProperty = __webpack_require__(13);
- var EventPluginRegistry = __webpack_require__(27);
- var ReactComponentTreeHook = __webpack_require__(7);
- var warning = __webpack_require__(2);
- if (process.env.NODE_ENV !== 'production') {
- var reactProps = {
- children: true,
- dangerouslySetInnerHTML: true,
- key: true,
- ref: true,
- autoFocus: true,
- defaultValue: true,
- valueLink: true,
- defaultChecked: true,
- checkedLink: true,
- innerHTML: true,
- suppressContentEditableWarning: true,
- onFocusIn: true,
- onFocusOut: true
- };
- var warnedProperties = {};
- var validateProperty = function (tagName, name, debugID) {
- if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {
- return true;
- }
- if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {
- return true;
- }
- if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) {
- return true;
- }
- warnedProperties[name] = true;
- var lowerCasedName = name.toLowerCase();
- // data-* attributes should be lowercase; suggest the lowercase version
- var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;
- var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;
- if (standardName != null) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- return true;
- } else if (registrationName != null) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- return true;
- } else {
- // We were unable to guess which prop the user intended.
- // It is likely that the user was just blindly spreading/forwarding props
- // Components should be careful to only render valid props/attributes.
- // Warning will be invoked in warnUnknownProperties to allow grouping.
- return false;
- }
- };
- }
- var warnUnknownProperties = function (debugID, element) {
- var unknownProps = [];
- for (var key in element.props) {
- var isValid = validateProperty(element.type, key, debugID);
- if (!isValid) {
- unknownProps.push(key);
- }
- }
- var unknownPropString = unknownProps.map(function (prop) {
- return '`' + prop + '`';
- }).join(', ');
- if (unknownProps.length === 1) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown prop %s on <%s> tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- } else if (unknownProps.length > 1) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown props %s on <%s> tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- }
- };
- function handleElement(debugID, element) {
- if (element == null || typeof element.type !== 'string') {
- return;
- }
- if (element.type.indexOf('-') >= 0 || element.props.is) {
- return;
- }
- warnUnknownProperties(debugID, element);
- }
- var ReactDOMUnknownPropertyHook = {
- onBeforeMountComponent: function (debugID, element) {
- handleElement(debugID, element);
- },
- onBeforeUpdateComponent: function (debugID, element) {
- handleElement(debugID, element);
- }
- };
- module.exports = ReactDOMUnknownPropertyHook;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 188 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var ReactComponentTreeHook = __webpack_require__(7);
- var warning = __webpack_require__(2);
- var didWarnValueNull = false;
- function handleElement(debugID, element) {
- if (element == null) {
- return;
- }
- if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') {
- return;
- }
- if (element.props != null && element.props.value === null && !didWarnValueNull) {
- process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- didWarnValueNull = true;
- }
- }
- var ReactDOMNullInputValuePropHook = {
- onBeforeMountComponent: function (debugID, element) {
- handleElement(debugID, element);
- },
- onBeforeUpdateComponent: function (debugID, element) {
- handleElement(debugID, element);
- }
- };
- module.exports = ReactDOMNullInputValuePropHook;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 189 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * Copyright 2013-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- var DOMProperty = __webpack_require__(13);
- var ReactComponentTreeHook = __webpack_require__(7);
- var warning = __webpack_require__(2);
- var warnedProperties = {};
- var rARIA = new RegExp('^(aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
- function validateProperty(tagName, name, debugID) {
- if (warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {
- return true;
- }
- if (rARIA.test(name)) {
- var lowerCasedName = name.toLowerCase();
- var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;
- // If this is an aria-* attribute, but is not listed in the known DOM
- // DOM properties, then it is an invalid aria-* attribute.
- if (standardName == null) {
- warnedProperties[name] = true;
- return false;
- }
- // aria-* attributes should be lowercase; suggest the lowercase version.
- if (name !== standardName) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown ARIA attribute %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- warnedProperties[name] = true;
- return true;
- }
- }
- return true;
- }
- function warnInvalidARIAProps(debugID, element) {
- var invalidProps = [];
- for (var key in element.props) {
- var isValid = validateProperty(element.type, key, debugID);
- if (!isValid) {
- invalidProps.push(key);
- }
- }
- var unknownPropString = invalidProps.map(function (prop) {
- return '`' + prop + '`';
- }).join(', ');
- if (invalidProps.length === 1) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- } else if (invalidProps.length > 1) {
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
- }
- }
- function handleElement(debugID, element) {
- if (element == null || typeof element.type !== 'string') {
- return;
- }
- if (element.type.indexOf('-') >= 0 || element.props.is) {
- return;
- }
- warnInvalidARIAProps(debugID, element);
- }
- var ReactDOMInvalidARIAHook = {
- onBeforeMountComponent: function (debugID, element) {
- if (process.env.NODE_ENV !== 'production') {
- handleElement(debugID, element);
- }
- },
- onBeforeUpdateComponent: function (debugID, element) {
- if (process.env.NODE_ENV !== 'production') {
- handleElement(debugID, element);
- }
- }
- };
- module.exports = ReactDOMInvalidARIAHook;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
- /***/ }),
- /* 190 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _react = __webpack_require__(25);
- var _react2 = _interopRequireDefault(_react);
- var _browserSymbol = __webpack_require__(81);
- var _browserSymbol2 = _interopRequireDefault(_browserSymbol);
- var _browserSprite = __webpack_require__(83);
- var _browserSprite2 = _interopRequireDefault(_browserSprite);
- var _icon = __webpack_require__(84);
- var _icon2 = _interopRequireDefault(_icon);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- var symbol = new _browserSymbol2.default({
- "id": "twitter",
- "use": "twitter-usage",
- "viewBox": "0 0 273.4 222.2",
- "content": "<symbol viewBox=\"0 0 273.4 222.2\" id=\"twitter\">\n<path d=\"M273.4,26.3c-10.1,4.5-20.9,7.5-32.2,8.8c11.6-6.9,20.5-17.9,24.7-31C255,10.5,243,15.2,230.2,17.7\n\tC220,6.8,205.4,0,189.3,0c-31,0-56.1,25.1-56.1,56.1c0,4.4,0.5,8.7,1.5,12.8C88,66.5,46.7,44.2,19,10.3c-4.8,8.3-7.6,17.9-7.6,28.2\n\tc0,19.5,9.9,36.6,25,46.7c-9.2-0.3-17.8-2.8-25.4-7c0,0.2,0,0.5,0,0.7c0,27.2,19.3,49.8,45,55c-4.7,1.3-9.7,2-14.8,2\n\tc-3.6,0-7.1-0.4-10.6-1c7.1,22.3,27.9,38.5,52.4,39c-19.2,15-43.4,24-69.7,24c-4.5,0-9-0.3-13.4-0.8c24.8,15.9,54.3,25.2,86,25.2\n\tc103.2,0,159.6-85.5,159.6-159.6c0-2.4-0.1-4.9-0.2-7.3C256.4,47.4,265.9,37.5,273.4,26.3z\" />\n</symbol>"
- });
- _browserSprite2.default.add(symbol);
- var TwitterSpriteSymbolComponent = function (_React$Component) {
- _inherits(TwitterSpriteSymbolComponent, _React$Component);
- function TwitterSpriteSymbolComponent() {
- _classCallCheck(this, TwitterSpriteSymbolComponent);
- return _possibleConstructorReturn(this, (TwitterSpriteSymbolComponent.__proto__ || Object.getPrototypeOf(TwitterSpriteSymbolComponent)).apply(this, arguments));
- }
- _createClass(TwitterSpriteSymbolComponent, [{
- key: "render",
- value: function render() {
- return _react2.default.createElement(_icon2.default, _extends({ glyph: "twitter" }, this.props));
- }
- }]);
- return TwitterSpriteSymbolComponent;
- }(_react2.default.Component);
- exports.default = TwitterSpriteSymbolComponent;
- /***/ }),
- /* 191 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _react = __webpack_require__(25);
- var _react2 = _interopRequireDefault(_react);
- var _browserSymbol = __webpack_require__(81);
- var _browserSymbol2 = _interopRequireDefault(_browserSymbol);
- var _browserSprite = __webpack_require__(83);
- var _browserSprite2 = _interopRequireDefault(_browserSprite);
- var _icon = __webpack_require__(84);
- var _icon2 = _interopRequireDefault(_icon);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- var symbol = new _browserSymbol2.default({
- "id": "wikipedia",
- "use": "wikipedia-usage",
- "viewBox": "-254 350 103 94",
- "content": "<symbol viewBox=\"-254 350 103 94\" id=\"wikipedia\"><title>Wikipedia logo version 2</title><radialGradient id=\"wikipedia_a\" cx=\"-9.429\" cy=\"1569.139\" r=\"68.687\" gradientTransform=\"translate(-213.764 -1178.502)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".483\" stop-color=\"#EAEAEB\" /><stop offset=\".945\" stop-color=\"#A9ABAE\" /><stop offset=\"1\" stop-color=\"#999B9E\" /></radialGradient><path d=\"M-204.1 367c0-.6-.4-1.3-.4-1.3v-.1s-.5-.9-1.3-1.2c-.8-.3-1.5.3-1.5.3s-.1.1-.4.5c-.3.4-.5.7-1.2.9-.7.3-1.4.2-1.7 0-.4-.2-.5-.5-.5-.5s-.2-.7-.3-1c-.1-.3-.3-1.7-.3-1.7s-.5-2.7-.5-3.3c0 0 1.5-.1 3.7-.8 2.3-.7 3-1.2 3-1.2s-.4-.2-.5-.7c-.1-.5-.1-1.2-.1-1.2s-.1-.5.5-1.1c.6-.6 1.4-.9 1.8-1 .4-.1 1.3-.2 2.1-.1.8 0 1.3.1 1.6.3.3.2.4.6.4.6v1.1s0 .4.3.5c0 0 .5.3 2.2.1 0 0 .7-.1 1.8-.5 1.1-.3 4.1-1.2 4.6-1.3.4-.1 1-.3 1.6-.5.7-.2 2-.6 2.3-.7.3-.1 1.8-.6 2.9-.8 1.1-.2 2.2-.2 2.8.1 0 0 .4.3.5.7.2.4.5.9.9 1.1.5.2.8.4 1.9.3 0 0 0-.1-.4-.4-.4-.3-1-.7-1-.7s-.3-.2-.4-.4c-.1-.2 0-.3 0-.3l.9-1.4s0-.2.5-.2c.5-.1 1.1-.1 1.7-.3.7-.2.8-.3.8-.3l.6.2s3.5 2.9 4.7 3.6l.2-.2s.4 0 .8.2 1 .6 1 .6 1.6 1.3 2.1 2.2l.2.7-.1.2s.9 1.3 2.1 2.6c0 0 1.2 1.7 1.7 2.1l-.2-.8.3-.2.2-.1.6.3c3.6 4.8 6.4 10.4 8.1 16.3l-.1.5.4.5c1.1 4.2 1.7 8.6 1.7 13.2 0 1.1 0 2.2-.1 3.3l-.3.5.2.6c-2.2 26.1-24.1 46.6-50.8 46.6-18.5 0-34.7-9.9-43.6-24.6l-.1-.4-.2-.2c-3.4-5.7-5.7-12.2-6.6-19.1l.2-.5-.3-.5c-.2-1.9-.3-3.8-.3-5.8 0-3 .3-5.9.7-8.8l.3-.6-.1-.3c1.2-6.1 3.4-11.7 6.5-16.8l.7-.4h.1s.2-.2.4-.2h.1s1.2-2 1.6-2.6c0 0 .5-.3.7-.4 0 0 .1 0 .2.1 0 0 .5-.4 1.7-2.1 0 0-.1-.1-.1-.2s.1-.6.2-.7c.1-.1.1-.2.1-.2s1.7-2 3.2-3.2c0 0 .3-.2.7-.3 0 0 1.5-.6 3.3-2.2 0 0 .1-.3.5-.9.4-.6 1.5-1.2 2.2-1.3.8-.2.9 0 .9 0l.1.1.5.8s.6-.3 1.4-.6c.8-.3 1-.3 1-.3l.8 1.3-1 2s-.6 1.4-1.7 2.2c0 0-.5.3-1.1.1-.6-.2-1.1.3-1.1.3l-.2.1s.1 0 .3-.1c0 0 .2.1.3.2.1.2.9 1.2.9 1.2s0 .8-.4 1.9c-.4 1.1-1.5 2.9-1.5 2.9s-.7 1.4-1.1 2.3-.5 1.8-.5 2.3c0 0 .2.1.7-.2.7-.3 1.1 0 1.1 0s.7.5 1 .9c.3.3.8 1.8.2 3.2 0 0-.4 1-1.4 1.7 0 0-.2.3-1.5.2-.4 0-.6-.3-1.4-.2-.8.1-1.2.8-1.2.8-.7 1-1.2 2.5-1.2 2.5l-.1.2s-.2.5-.3 1.8c-.1 1.3.3 3.1.3 3.1s7.9-1.4 9.9-.1l.6.5v.4c-.1.2-.4.7-1 1.1-.6.4-1.2 1.6-.3 2.3 1 .8 1.7.8 3.4.5 1.7-.3 2.9-1.3 2.9-1.3s1-.7.8-1.6c-.2-.9-1-1.2-1-1.2s-.7-.4-.1-1.2c0 0 .1-.7 2.6-1.3 2.4-.6 6.8-1.5 10.6-2 0 0-2.5-8.2-.7-9.3 0 0 .4-.3 1.2-.4h1.5c.5 0 1 .1 1.7-.4.3-.7.4-1 .4-.9\" fill=\"url(#wikipedia_a)\" /><radialGradient id=\"wikipedia_b\" cx=\"-56.358\" cy=\"1513.861\" r=\"0\" gradientTransform=\"translate(-213.764 -1178.502)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".483\" stop-color=\"#EAEAEB\" /><stop offset=\".945\" stop-color=\"#A9ABAE\" /><stop offset=\"1\" stop-color=\"#999B9E\" /></radialGradient><linearGradient id=\"wikipedia_c\" gradientUnits=\"userSpaceOnUse\" x1=\"202.276\" y1=\"-64.159\" x2=\"248.778\" y2=\"-136.911\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#8A8A8A\" /><stop offset=\".569\" stop-color=\"#606060\" /><stop offset=\".591\" stop-color=\"#FFF\" /><stop offset=\".612\" stop-color=\"#585858\" /><stop offset=\"1\" stop-color=\"#303030\" /></linearGradient><path d=\"M-171.6 429.3l.5.2c0 .1-.1.1-.1.2-.9 1.6-.9 1.9-1.4 2.3-.4.3-.6.5-1.4.7-.9.2-1.8 1.2-1.8 1.2s-.9.8-.5.9c.4 0 1.2-.6 1.2-.6s.5-.4.6-.3c.1.1-.5.8-.5.8s-1.2 1.2-2.5 2l-.4.2s1.9-1.4 2.8-2.4c0 0 .2-.3-.2.1-.4.3-1.3.8-1.7.8-.4 0 0-.6 0-.6s.6-.8 1.8-1.8c1.2-1 2.2-.9 2.2-.9s.2 0 .3-.3c0-.3.3-.9.3-.9s.5-1 1.7-2.7c1.2-1.7 1.8-2.2 1.8-2.2s1.6-1.6 2.4-3.3c0 0 .6-1-.4-.3-1 .8-2.2 1.7-3.4 2-1.2.3-1.3-.8-1.3-.8s-.3-1.9 1-3.3c1.2-1.3 2.5-1.3 3.7-1.4 1.2-.1 2.2-1.6 2.2-1.6s.8-.9 1.3-3.8c.2-1.3.1-2.2-.1-2.8v-.6h-.4c-.1-.1-.1-.2-.1-.2s-.3-.3-.6-.5-.7-.6-1.1-1.5c0 0-1-2.1-.8-5.2.2-3 2.8-2.8 2.8-2.8s1.5.1 1.8-.3c.3-.4.6-1 .6-2.2.1-1.2-.4-2.4-.4-2.4s-.2-.6-1-.7c-.9-.1-1.1.2-1.1.2s-.3.1-.7 1.1c-.5 1-.8 1.5-1.6 1.7-.8.2-2 .1-2.5-1s-1.8-3.7-2.4-5.8l.1-.7-.3-.5c-.1-.4-.1-.8-.1-1.2 0-1-.3-2.1-.6-3.2s-1.5-3-1.7-3.4c-.3-.7-.6-.9-1-.9-.4.1-.3.1-.5.1s-.3.2-.3.4-.4 1.3-1.1 1.8c-.8.5-1.1.7-2.4.9 0 0-1.5.1-2.7-2.1-1.2-2.2-.9-3.6-.8-4.1.1-.5.5-1.2 1.2-1.4.7-.1 1.1-.2 1.1-.2s1.1 0 1.6-.1c.6-.1.3-1 .3-1s-.4-2.4-2.3-4.3l-.1-.5-.8-.4c-1.9-2-4.4-5.4-4.4-5.4s-1.1-1-.2-2.5c0 0 .4-1 1.7-.8.4.1.5.1.8.2.5.1 1 .2 1.5-.4 0 0 .4-.8-.3-1.8s-.9-1.7-1.8-1.7c0 0-.4-.1-.8.4-.4.4-1.4.7-2 .8-.7.1-2.3-.5-3.2-2.1-.5-.9-.8-1.4-.9-1.6l.2-.3.7.1c.2.4.5 1.1 1 1.8.6 1 1 1.1 1.4 1.3.3.1 1-.1 1.4-.3.4-.2.8-.7 1.4-.7.7 0 1.6.1 2.3.8.7.7 1.5 2.2 1.5 2.9-.1.7-.1 1.4-1 1.7-.9.3-1.3 0-1.9-.1-.6-.1-.9-.1-1.1.2-.2.3-.5.9-.4 1.2.1.3.2.5.8 1.3.6.8 3.5 4.3 4 4.8l-.2.7 1 .2c.6.7 1.4 1.7 1.7 2.3.5.9.8 2.3.8 3 0 .7-.3 1-.3 1s-.3.5-2 .5c-1.5 0-1.6.3-1.6.3s-.5.5-.4 1.6c.1 1.1.6 2.3 1.6 3.4.8.9 2.3 0 2.7-.3.5-.3.8-1.3.8-1.3s.1-1.2 1.4-1.2c1.4 0 2 1.3 2 1.3s1 1.3 1.9 4.1c.5 1.4.6 2.3.6 2.3l.1 1.7-.5.9.7.3c.1.5.3 1.2.7 2 0 0 1 2.4 1.4 3.3.4.9.9.8 1.3.8 0 0 .9.1 1.2-.3.3-.4.6-1.1.6-1.1s.7-1.8 2.1-1.7c1.5.2 1.8 1.1 2.1 2.2.3 1.1.3 3.2-.5 4.5-.8 1.3-1.7 1.1-1.7 1.1s-1.8-.2-2.2.2c-.4.4-.6.7-.7 1.6-.1.9 0 2.3.8 4.1.6 1.5 1.1 1.4 1.4 1.7.3.4 1.2 1.2 1.1 3.3-.1 2.1-.8 4.1-1.6 5.4-.8 1.3-2 2.1-2 2.1s-.3.2-1.1.3c-.7.1-1.8.1-2.5.5-.8.4-1 1.5-1.1 2-.1.5-.1 1.5.9 1.4 1-.1 2.6-1.4 2.6-1.4s1.5-1.1 1.7-.8c.2.4-.6 1.8-.6 1.8s-1 1.6-1.9 2.5c-.7.8-1.6 1.9-2.4 3.1l-.8.4z\" opacity=\".69\" fill=\"url(#wikipedia_c)\" /><linearGradient id=\"wikipedia_d\" gradientUnits=\"userSpaceOnUse\" x1=\"171.286\" y1=\"-56.951\" x2=\"191.786\" y2=\"-152.661\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#A8A9AB\" /><stop offset=\"1\" stop-color=\"#636668\" /></linearGradient><path d=\"M-230.6 372.7s0 .1 0 0c0 .1 0 0 0 0z\" fill=\"url(#wikipedia_d)\" /><linearGradient id=\"wikipedia_e\" gradientUnits=\"userSpaceOnUse\" x1=\"167.068\" y1=\"-58.37\" x2=\"187.068\" y2=\"-151.743\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#A8A9AB\" /><stop offset=\"1\" stop-color=\"#636668\" /></linearGradient><path d=\"M-215.8 439.7h.2c-.2-.1-.4-.3-.6-.4-.7-.4-3.7-2.4-4.7-3-.9-.6-2.6-1.7-3.3-1.5-.6.2-.5.4-.8.6-.3.2-.7.1-1.5-.4-.8-.4-1.4-.7-3-2.2-1.2-1.2 1.6-.1 1.6-.1s.6.3.3-.4c-.3-.6-1.7-2.3-3-3.7-1.1-1.1-1.7-1.9-2.4-3l-.6-.7v-.2s0-.1-.1-.1c0 0-1.9-3.4-1.7-4.6 0 0 .1-.8 1.2-1.2.8-.3.7.5 3.1 1 0 0 2.1.6 2.6-.9s-.6-3.4-.6-3.4-1.4-2.7-3.2-2.8c-.9-.1-.7.6-2.1.9 0 0-1.9.2-2.5-1-.7-1.4-1-3-1-4s.1-1.1.1-1.4c0-.2.2-.6.3-1.1l-.1-.7.2-.5v-.8c-.1-1.7-.2-4.2-.4-5.7s-.6-3.8-2-3.9c0 0-.7-.1-1.6.9-.9.9-1.7-.7-1.7-1.7-.1-1.1.1-2.3.4-2.8.3-.5 1-.6 1.2-.6.1 0 .6.2 1 .5.5.3 1.2.3 1.6-.1.4-.4.9-.9 1.2-2.6.2-1.7.2-3.5 0-5.7l-.2-.5 1.3-.3v-.2-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1c.1-1.2.3-1.8.3-1.8l.1-.2s.5-1.5 1.2-2.5c0 0 .4-.7 1.2-.8.8-.1 1 .2 1.4.2H-231.5c.3-.2.6-.5.8-.8 0-.1.1-.1.1-.2v-.1c.1-.1.1-.2.1-.2.6-1.5.1-2.9-.2-3.2-.3-.4-1-.9-1-.9s-.4-.4-1.1 0c-.5.3-.7.2-.7.2 0-.5.1-1.4.5-2.3.3-.8 1.1-2.3 1.1-2.3s1-1.8 1.5-2.9c.4-1.1.4-1.9.4-1.9s-.8-1-.9-1.2c-.1-.2-.3-.2-.3-.2-.2.1-.3.1-.3.1l.2-.1s.4-.5 1.1-.3c.6.2 1.1-.1 1.1-.1 1-.8 1.7-2.2 1.7-2.2l1-2-.8-1.3s-.1 0-1 .3c0 0-.8 1.9-1.7 3.1 0 0-.4.6-.7.4-.3-.1-.6-.1-.9-.1-.3.1-1.2.3-1.9 1.4-.8 1.1-.9 1.9-.5 2.1s1-.1 1.4-.4c.4-.3.6-.5.8-.5.1 0 .1.3.1.4 0 .1-.2 1.4-1.6 3.9-.4.6-.8 1.6-1.1 2l.6.4-1 .5c-.3.8-.6 1.9-.5 2.6.2 1 1.2 1 1.2 1s.6 0 1.3-.3c.7-.4.9 1.2.9 1.5 0 .3 0 1.7-1 2.4 0 0-.4.3-1 .3s-1-.2-1-.2-1-.3-1.6.1c-.6.4-1.3 1.1-1.9 2.2-.6 1.1-1 3-1 4.4 0 1.1.2 2.2.3 2.9l.7.4-.5.6c.1 1.1.2 3.4.2 4.1 0 .9-.2 2.8-1.1 3.3 0 0-.3.2-.9-.2-.5-.4-1.1-.4-1.4-.4-.2 0-1.3.2-1.7 1.3-.4 1.1-.4 2.7-.3 3.6.1.9.9 2.5 1.9 2.5 0 0 .5 0 1.1-.6.6-.6.9-.6 1.2-.6.3 0 .7.3 1.1 2.9.3 2.4.4 4.4.4 6.7l.6.4-.8.8c0 .2-.1.4-.1.6-.2.7-.2 1.4 0 2.6.2 1.2.8 3.7 1.8 4.4 1.3.9 2.1.9 2.9.8.8-.1 1.4-.7 1.4-.7s.3-.3.7-.2c.4.1 1.3.7 2.1 2.1.7 1.4.9 3-.3 3.3-1.2.3-3.2-.8-3.2-.8s-1.2-.6-2.1.1c-1 .7-1 1.8-.5 3.1.3.7.8 1.9 1.5 3.2l.7.3-.2.6c.5.7 1.1 1.5 1.7 2.1 0 0 2.5 2.7 3.8 4.5 0 0 .1.2-.2 0-.2-.1-1.3-.6-1.8-.6-.6.1-.4.4-.4.4s.2 1.3 4 3.4c0 0 1.4.8 2.2.8 0 0 .3 0 .6-.3.3-.4.4-.3.7-.3.2.1.6.2 1.7 1.1 1.2.9 3.5 2.2 4.3 2.7.8.6.8.7.6 1.1-.2.4.6.6.6.6s1.9.9 2.9.8c1 0 1.5-.1 2.1 0 .6.1 1.3.3 1.3.3.1.1-.3 0-.3 0s-2.4-.3-2.5-.2c-.1.1 0 .2 1 .4 1.2.2 2.5.4 3.8.5-.5-.1-2.5-.3-3.8-.7 0 0-.1-.1.2 0 .3.1 2 .2 2.5.2.4-.1-.1-.3-.1-.3s-.9-.4-2.9-.6c0 0-.8-.1-1.5 0s-1.4-.3-1.4-.3-1-.3-.8-.6c.1-.2.1-.3.1-.5l-.4-1z\" opacity=\".45\" fill=\"url(#wikipedia_e)\" /><linearGradient id=\"wikipedia_f\" gradientUnits=\"userSpaceOnUse\" x1=\"190.76\" y1=\"-104.815\" x2=\"219.842\" y2=\"-104.815\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#231F20\" /><stop offset=\"1\" stop-color=\"#474747\" /></linearGradient><path d=\"M-191.7 436.2l-.4.6c.1.7-.1.9-.3 1.1-.2.3-.6.6-.4 1.2.2.6 1.7.4 2.5.1.9-.3 1.6-.5 2.1-.7.6-.2.7.1.7.1s.2.2-.6.6c-.8.4-2.3.6-3.1.7-.7.1-.5 0-1.6.3-1.1.4-.1.7-.1.7 2.4.6 4.2.1 4.2.1l.3-.1c.3-.1.5-.2.8-.2-2 .5-3.3.1-3.7.1-.4-.1-.8-.1-.9-.4-.1-.2.5-.2.5-.2s1.7-.2 3.2-.7c1.6-.5 1.9-1 1.9-1.3-.1-.4-.8-.3-1.8 0-.9.3-2.3.8-2.7.8-.3.1-.7.1-.8-.1-.1-.2-.2-.5.1-.9.4-.4.4-.7.4-.7.1-.3.1-.5 0-.8l-.3-.3.5-.1c-.3-1.1-1.1-2.2-1.3-2.6-.3-.5-.8-.8-2.4-.5-1.6.3-3.4 1-3.4 1s-1.9 1-3.3.8c-1.4-.2-1.7-1.6-1.7-2.1 0-.4.3-.8 1-1.1.7-.3 2.5-.7 5-.8 2.5-.1 3.5-1.8 3.5-1.8.3-.5.9-1.5-.5-2.3-1.4-.8-1.4-.6-2.1-1.1-.7-.5-1.4-1.2-1.7-2 0-.1-.1-.2-.1-.3l-.8-.6.4-.4c-.3-.7-.7-1.3-.7-1.3s-1.3-1.9-.2-3.7c1-1.8 2.7-2.3 2.7-2.3s1.5-.3 3 0c1.4.3 2.1-.2 2.1-.2s.9-.4 1.1-2.1c.3-1.7 0-4.9-2.3-5.6-2.3-.6-3.5.6-3.5.6s-1.2 1.4-1.6 1.6c-.4.2-1 .6-1 .6s-.9.5-1.5.6c-.4.1-1.8-1.8-1.9-3.2-.1-1.3-.4-2.4-.3-5.1l-.5-.6.5-.5c.1-3-.4-5.1-1.2-6.5-.8-1.4-2.1-2.2-2.8-2.5-.6-.3-2.1-.5-3.2-.1-1 .4-1.2.7-1.6 1.3-.4.6-.8.6-.8.6s-1.4 0-1.9-2.1c-.6-3 .4-4 .4-4s.3-.5 1.4-.6c1.1-.1 1.7.1 2.5.3.8.2 1.4.1 2.4-.4s1.4-1.3 1.2-2.7c-.2-1.4-.3-1.7-1.5-6l-.9-.5.6-.6c-1.2-4.3-1.3-7-1.3-7-.1-1 0-1.3.6-1.5.6-.3 1.1-.2 1.9-.1.8.1 1.4-.1 1.8-.3s1.6-.9 1.5-2.2c-.1-1.3-1.1-2.8-2-3.4-.8-.5-2-.3-2.6.1-.6.4-.8 1-1.2 1.2-.4.2-.9.6-1.5.5-.6-.1-.6-1.4-.8-2.8-.2-.9-.3-1.6-.3-2l-.7-.3c0 .6.5 3.3.5 3.3s.2 1.4.3 1.7c.1.3.3 1 .3 1s.1.4.5.5c.4.2 1.1.2 1.7 0 .7-.3.9-.6 1.2-.9.3-.4.4-.5.4-.5s.7-.6 1.5-.3 1.3 1.2 1.3 1.2v.1s.4.7.4 1.3v-.1s0 .3-.7.8-1.2.5-1.7.4c-.5 0-.7-.1-.8 0h-.7c-.8.1-1.2.4-1.2.4-1.8 1.1.7 9.3.7 9.3l-.3.6s.5 2.1.9 3.4c.4 1.3.6 2.6.6 2.9.1.3 0 .8-.3 1.1-.4.3-1.2.5-1.4.6-.2 0-.5 0-1-.2s-.9-.2-.9-.2-1.1-.2-2.3.2c-1.2.4-2.1 1.6-2.1 3.1-.1 1.5-.1 2.3.5 3.6.6 1.3 1.7 2.1 2.5 2.1s1.5-.4 1.9-1.1c.5-.6.6-.8.6-.8.5-.3 1.9-.4 2.7-.2.7.3 2 1.1 2.7 2.7.6 1.3.8 2.8.7 5.4l.6.4-.6.7v.8c-.1 3.9.7 5.9.7 5.9.5 1.1 1 1.8 1.7 2.3.7.5 1.7.2 2 0 .3-.2 1.2-.6 1.9-1 .7-.5.7-.7 1.6-1.5.9-.8 2.1-.6 2.1-.6s1.1 0 1.7 1.3c.6 1.3.5 3.1.3 3.8-.2.7-.4 1.1-1.1 1-.6-.1-1.6-.2-2-.2-.4 0-1.4 0-2.4.2-.9.2-2.2.9-3.4 2.9-.9 1.5-.5 3-.3 3.6.2.5.6 1.1 1 1.9l.8.3-.3.7c.4 1 .7 1.5 1.3 2.2.6.7 1.7 1.3 2.9 1.7 1.2.5.7 1.3.7 1.3-.7 1.5-2.8 1.6-3.4 1.6-.6.1-1.9.2-3.1.4-1.2.3-2.3.4-3 1.2-.7.8-.4 1.6 0 2.4.4.8 1.4 1.3 2.9 1.2 1.4-.1 2.3-.5 3.2-.9.9-.4 2.4-.8 2.8-.9.4-.1 1.1-.4 1.5.3.5.7 1 1.7 1.2 2.4l1.2-.1z\" opacity=\".35\" fill=\"url(#wikipedia_f)\" /><path d=\"M-152.4 401.2s.3-3.2.5-4.4v-.5l-.1-.2c-.5 5.8-.9 7.7-.9 7.7v-.1c.2-.9.3-1.7.5-2.5zM-162.7 362.6l.3.4.3.5c1 1.6 2.8 4.3 2.8 4.3s.7 1 .9 1c.2 0-.1-.7-.1-.7s-.3-1 .5.3c.7 1.2 1.2 2.4 1.3 2.7.1.4 0 .4 0 .4s-.1.1-.1.3c0 .5.5 1.7.5 1.7s1.5 3.9 2.1 5.6c.5 1.6 1.1 4.4 1.1 4.4s.2.8.2 1.2c0 .4-.1.4-.2.2-.2-.2-.3-.1-.3-.1s-.2.1-.2.8c0 .7.1 2.3.2 3.6.2 1.5.6 2.1.6 2.1s.4.6.5-.6c.1-1 .2-.2.2-.2.2 1.6.1 4.5 0 5v.6l.1-.2c.2-3 .1-5.4.1-5.4s-.1-1.3-.3-1.3c-.2 0-.2.7-.2.7s-.1.5-.2.5-.4 0-.6-1.4c-.2-1.4-.2-2.9-.2-2.9v-.2c.1 0 .2.1.2.1s.1.2.3 0c.2-.2.2-.6-.3-3.1-.3-1.5-.7-2.9-1-3.8l-.3-.3-.1-.7s-.3-.9-1-2.7c-.7-1.8-.8-2.5-.8-2.5s0-.2.1-.2.1-.2.1-.2 0-.2-.3-1c-.3-.7-.4-1.3-1.4-2.9-.9-1.5-1.1-1.6-1.1-1.6s-.4-.2-.1.6c.3.8-.1.2-.1.2-.9-1.2-2.8-4.3-2.8-4.3l-.5-.4-.5-1.3M-252.5 382.7l-.2.4c-.5 2.5-.6 5.1-.6 5.3 0 .2 0 .2-.1.2v-.2c-.1 0-.1.2-.1.2 0 .3 0 .6-.1.9.1-.1.1 0 .1 0s0 .1.1.1c.1-.1.2-1.4.2-1.4s0-2.8.8-6.1 1.3-4.3 1.3-4.3.2-.4.1-.1c0 .3.2.4.2.4.4-.1.8-1.1 1.3-2.5.4-1.4.7-2.6.7-2.7 0-.1-.1-.2-.2-.1s-.1 0-.1 0c0-.2.4-1.1.4-1.1 1.3-3.2 3.1-5.7 3.1-5.7l.1-.5c-.2.3-.3.4-.4.7-.1.1 0 .3 0 .3-.2.2-.4.3-.5.5-2.7 4.5-3.1 6.6-3.1 6.6 0 .2 0 .3.1.3s.3-.3.1.4c-.1.5-.5 1.7-.7 2.2-.2.5-.4.9-.5.8-.1 0-.1-.2-.1-.2s0-.5-.4.2c-.4.8-.7 1.9-1.4 4.7 0 .1-.1.3-.1.4v.3zM-249.2 412.6c-.2-.4-.3-.7-.2-.6.1.1.2.4.5.7.3.3.4-.2-.6-3.1-1.1-2.9-1.4-3-1.4-3.1 0-.1-.2-.2-.2.2s0 .7-.5-1.1-1-4.8-1-5.1c0-.2-.2-1.8-.4-3.6s-.2-3.7-.2-4.3c0-.5-.1-.8-.1-.8-.1 0-.1 0-.1.3 0 .2 0 .4-.1.4s-.1-.5-.1-.5v1.1c0 .6.1.4.1.2v-.3s.1-.9.1 0 .2 4.6.2 4.6c0 .2 0 .5.1.7l.1.1v.1c.3 2.4.8 5.1.8 5.1.5 2.4 1.1 3.8 1.3 4.3.2.4.2.1.2-.3-.1-.4.5.7.9 1.7.3 1 .6 1.8.6 1.8s.3.8.1.8c-.1 0-.3-.3-.3-.3s-.5-.8-.3-.2c.4 1.2 1.6 3.8 1.6 3.8l1.4 2.5c-1-1.9-2.3-4.7-2.5-5.1zM-246.7 417.6c.1.1.1.2.2.4l-.2-.4zM-233.3 352.9c-.2.3-.2.5-.2.5l.2-.2v-.3zM-236.8 355.6c-.4 0-.7.3-.7.3s.4-.1.7-.3zM-170 354.9h.3c.1 0 .1-.2.1-.2s-.3-.4-.3-.6c-.3-.1-.6-.1-.6-.1v.3c-.1.1.4.5.5.6zM-166.5 357.9l.1-.2-.2-.7c0 .1 0 .1-.2.1 0 0-.1 0 0 .2 0 .2.2.4.3.6z\" opacity=\".1\" fill=\"#232323\" /><path d=\"M-152.4 401.2s.3-3.2.5-4.4v-.5l-.1-.2c-.5 5.8-.9 7.7-.9 7.7v-.1c.2-.9.3-1.7.5-2.5z\" opacity=\".1\" fill=\"#232323\" /><linearGradient id=\"wikipedia_g\" gradientUnits=\"userSpaceOnUse\" x1=\"12.492\" y1=\"1537.278\" x2=\"41.964\" y2=\"1627.035\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".009\" stop-color=\"#FCFCFC\" /><stop offset=\".066\" stop-color=\"#EEE\" /><stop offset=\".134\" stop-color=\"#E5E5E5\" /><stop offset=\".252\" stop-color=\"#E3E3E3\" /><stop offset=\".336\" stop-color=\"#8A8A8A\" /><stop offset=\".442\" stop-color=\"#B8B8B8\" /><stop offset=\"1\" stop-color=\"#3B3B3B\" /></linearGradient><path d=\"M-175 434.5s.7-.7.5-.8c-.1-.1-.6.3-.6.3s-.1.1-.2.1l.4-.3s0 .2-.4.6c0 0-.1.1-.3.2-1 .9-2.4 2-2.4 2l.4-.2c1.4-.7 2.6-1.9 2.6-1.9z\" opacity=\".5\" fill=\"url(#wikipedia_g)\" /><linearGradient id=\"wikipedia_h\" gradientUnits=\"userSpaceOnUse\" x1=\"206.463\" y1=\"-66.556\" x2=\"255.589\" y2=\"-127.306\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EFF0F0\" /><stop offset=\".591\" stop-color=\"#F0F1F2\" /><stop offset=\".599\" stop-color=\"#787878\" /><stop offset=\".646\" stop-color=\"#EEEFF0\" /><stop offset=\"1\" stop-color=\"#D8D9DB\" /></linearGradient><path d=\"M-171 389.7l.5-.9-.1-1.7s-.1-.9-.6-2.3c-1-2.8-1.9-4.1-1.9-4.1s-.6-1.3-2-1.3c-1.3 0-1.4 1.2-1.4 1.2s-.3 1-.8 1.3c-.5.3-2 1.1-2.7.3-.9-1-1.5-2.2-1.6-3.4-.1-1.1.4-1.6.4-1.6s.1-.3 1.6-.3c1.7 0 2-.5 2-.5s.3-.3.3-1-.3-2.1-.8-3c-.3-.6-1.1-1.5-1.7-2.3l-1-.2.1-.7c-.6-.5-3.5-4-4-4.8-.6-.8-.7-1-.8-1.3-.1-.3.2-.9.4-1.2.2-.3.5-.3 1.1-.2.6.1 1 .4 1.9.1.9-.3 1-1 1-1.7.1-.7-.8-2.2-1.5-2.9-.7-.7-1.6-.8-2.3-.8-.7 0-1 .5-1.4.7-.4.2-1.1.4-1.4.3-.3-.1-.8-.3-1.4-1.3-.4-.8-.8-1.5-1-1.8l-.7-.1s.6 1.7 1.6 2.8c1 1.2 2.3.9 2.3.9s.8-.1 1.5-.8c.7-.7 1.8-.1 2 0 .3.2.9.9 1.5 2.1.6 1.2-.4 2.1-.4 2.1s-.6.5-1.7.1-1.8.3-2 .6c-.2.4-.5 1 .1 1.7s3.2 4.3 4.9 5.9c1.7 1.7 2.3 3 2.7 4.3.4 1.3.1 1.9-.5 2-.6.1-1.1 0-2.1.2-.9.2-1.3.4-1.5 1.7-.2 1.3.6 3.4 1.7 4.4 1.1 1 2.3.4 2.8.2.4-.2 1.4-.7 1.7-2 .2-.8.9-.7.9-.7s.6-.1.9.1c.3.2.6.5 1.4 1.9.8 1.3 1.5 3.1 1.7 4.7.2 2 0 2.2.3 3.3.3 1.1 1.1 3.2 1.5 4.1.4.8.8 1.7 1 2.1.2.4.5.8 1.4.8.9 0 1.3-.2 1.5-.7.3-.4.6-1.1.7-1.3.1-.2.5-.9 1.1-1 .7-.1 1.8 0 2.1 1.2.3 1.1.8 2.6-.2 4.5-.6 1.3-1.1.9-2.5.9 0 0-1.2 0-1.8.9-.6.9-.4 2.6-.3 3.9.1 1.3 1 3.1 1.6 3.6.6.4.9.8 1.1 1.3.2.4.5 1.2.2 3.3-.3 2.1-1 3.7-1.9 4.5 0 0-.1 0-.1.1l-.2.2c-.5.5-.4.5-.9.8-.6.3-1 .2-2 .4s-1.6.3-2.1.8-1.2 1.4-1 3.2c.1 1 1.3.6 2.2.1-.3.1-.6.2-.8.2-1 .1-1-.9-.9-1.4.1-.5.3-1.5 1.1-2s1.8-.4 2.5-.5c.7-.1 1.1-.3 1.1-.3s1.2-.8 2-2.1 1.5-3.4 1.6-5.4c.1-2.1-.8-2.9-1.1-3.3-.3-.4-.8-.2-1.4-1.7-.7-1.7-.8-3.2-.8-4.1.1-.9.3-1.2.7-1.6.4-.4 2.2-.2 2.2-.2s.9.2 1.7-1.1c.8-1.3.7-3.5.5-4.5-.3-1.1-.6-2-2.1-2.2-1.5-.2-2.1 1.7-2.1 1.7s-.3.7-.6 1.1c-.3.4-1.2.3-1.2.3-.4 0-.8.1-1.3-.8-.4-.9-1.4-3.3-1.4-3.3-.3-.8-.6-1.5-.7-2.1l-.4-.4z\" opacity=\".73\" fill=\"url(#wikipedia_h)\" /><linearGradient id=\"wikipedia_i\" gradientUnits=\"userSpaceOnUse\" x1=\"18.871\" y1=\"1534.826\" x2=\"48.469\" y2=\"1624.965\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-171.5 429.3l.8-.5c.8-1.2 1.7-2.3 2.4-3.1.9-1 1.9-2.5 1.9-2.5s.8-1.4.6-1.8c-.1-.2-.7 0-1.7.8-3.7 2.7-4 1.2-4 1.2.4 2.4 4.7-1.6 5.1-1.4-.1.6-.5 1.2-1.3 2.3 0 0-.4.6-.8 1l-.6.6-.1.1c-.5.5-1 1.2-1.6 2l-.1.1c-.1.5-.3.8-.6 1.2-.3.4-.4.7-.5 1v.1s-.3.7-.5 1.1c-.1.4-.1.5-.6.6-.5.1-.3-.1-1 .2 0 0-.4.2-.9.6 0 0-.1 0-.1.1-.7.6-1.2 1.1-1.5 1.4-.1.1-.1.1-.1.2 0 0-.2.2.1.2.2 0 .6 0 1-.2l.1-.1c-.2.1-.4.2-.5.2-.4 0 .5-.9.5-.9s.9-1 1.8-1.2c.9-.2 1-.4 1.4-.7.4-.3.5-.7 1.4-2.3 0-.1.1-.1.1-.2l-.7-.1z\" opacity=\".53\" fill=\"url(#wikipedia_i)\" /><linearGradient id=\"wikipedia_j\" gradientUnits=\"userSpaceOnUse\" x1=\"190.694\" y1=\"-64.955\" x2=\"215.725\" y2=\"-146.069\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".747\" stop-color=\"#F9F9F9\" /><stop offset=\"1\" stop-color=\"#D5D7D8\" /></linearGradient><path d=\"M-198.9 422.7l.4-.4c-.3-.7-.7-1.3-.7-1.3s-1.3-1.9-.2-3.7c1-1.8 2.7-2.3 2.7-2.3s1.5-.3 3 0c1.4.3 2.1-.2 2.1-.2s.9-.4 1.1-2.1c.3-1.7 0-4.9-2.3-5.6-2.3-.6-3.5.6-3.5.6s-1.2 1.4-1.6 1.6c-.4.2-1 .6-1 .6s-.9.5-1.5.6c-.4.1-1.8-1.8-1.9-3.2-.1-1.3-.4-2.4-.3-5.1l-.5-.6.5-.5c.1-3-.4-5.1-1.2-6.5-.8-1.4-2.1-2.2-2.8-2.5-.6-.3-2.1-.5-3.2-.1-1 .4-1.2.7-1.6 1.3-.4.7-.8.6-.8.6s-1.4 0-1.9-2.1c-.6-3 .4-4 .4-4s.3-.5 1.4-.6c1.1-.1 1.7.1 2.5.3.8.2 1.4.1 2.4-.4s1.4-1.3 1.2-2.7c-.2-1.4-.2-1.7-1.5-6l-.9-.5.6-.6c-1.2-4.3-1.3-7-1.3-7-.1-1 0-1.3.6-1.5.6-.3 1.1-.2 1.9-.1.8.1 1.4-.1 1.8-.3.4-.2 1.6-.9 1.5-2.2-.1-1.3-1.1-2.8-2-3.3-.8-.5-2-.3-2.6.1-.6.4-.8 1-1.2 1.2-.4.2-.9.6-1.5.5-.6-.1-.6-1.4-.8-2.8-.2-.9-.3-1.6-.3-2l-.7-.3c0 .6.5 3.3.5 3.3l.3 1.6c0 .1 0 .2.1.3.1.2.4.5.9.5 1.1.1 1.8-.5 2-.7.3-.2.9-.9.9-.9s.3-.6 1.3-.5c.9.1 1.2.8 1.4 1 .2.2 1.6 2 .7 2.9 0 0-.1.1-.2.1l-.4.4c-.7.5-1.2.5-1.7.4-.5 0-.7-.1-.8 0h-.7c-.8.1-1.2.4-1.2.4-1.8 1.1.7 9.3.7 9.3s.7 2 1 3c.3.9.5 1.6.8 3.3.3 1.6-.2 2.1-.5 2.3-.3.2-1 .6-1.8.6s-1-.4-2.4-.4c-1.3-.1-2.2.3-2.7.9-.4.6-.9 1.9-.7 3.4.2 1.5.5 2.1 1.1 2.7.6.7 1.2 1 2 .7.8-.3.8-.8 1.2-1.2.5-.5.9-.8 2.1-.8 1.2 0 2 .3 2.6.8.6.5 1.9 1.6 2.3 3.4.4 1.7.4 2.3.4 3.7s-.1 3-.1 4.4c0 1.4.2 2.8.6 3.8.4 1 .9 1.8 1.4 2.2.5.4.9.4 1.4.3.5-.2 1.5-.8 2.4-1.3.9-.6.8-1 1.6-1.5.9-.6 1.8-.6 2.5-.5.7.1 1.7.6 2.1 1.9.4 1.3.4 2.7.4 2.7s0 1.2-.4 1.9c-.5.7-1.3.6-1.6.5-.4-.1-1.1-.1-1.1-.1s-1.5-.2-2.6.1c-1.1.3-2.1 1.1-2.7 1.9-.7.8-.9 1.6-1 2.2 0 .6 0 1.6.6 2.6s.7 1.4 1.4 2.8 2.1 2.2 2.2 2.2c0 0 1.4.5 1.9.9s.6.8.4 1.2c-.1.4-.4 1.1-1.6 1.6-1.2.5-2.6.5-3.5.6-.9.1-2.7.3-3.7.8s-1 1.5-1 1.5 0 1.6 1.3 2c1.4.4 2.6 0 3.2-.2.6-.2 1.5-.6 1.5-.6s1.8-.6 2.8-.8c1-.2 1.5-.3 2.2.8.7 1.2 1 1.9 1.1 2.6.1.7-.2 1.1-.5 1.4-.3.3-.2.5-.2.5-.1.9 1.2.8 1.2.8h.1c-.3 0-.5 0-.6-.2-.1-.2-.2-.5.1-.9.4-.4.4-.7.4-.7.3-1.4-1-3.4-1.4-3.9-.3-.5-.8-.8-2.4-.5-1.6.3-3.4 1-3.4 1s-1.9 1-3.3.8c-1.4-.2-1.7-1.6-1.7-2.1 0-.4.3-.8 1-1.1.7-.3 2.5-.7 5-.8 2.5-.1 3.5-1.8 3.5-1.8.3-.5.9-1.5-.5-2.3-1.4-.8-1.4-.6-2.1-1.1-.7-.5-1.4-1.2-1.7-2 0-.1-.1-.2-.1-.3l-.6-.7z\" opacity=\".96\" fill=\"url(#wikipedia_j)\" /><linearGradient id=\"wikipedia_k\" gradientUnits=\"userSpaceOnUse\" x1=\"136.042\" y1=\"-39.679\" x2=\"136.042\" y2=\"-39.679\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".747\" stop-color=\"#F9F9F9\" /><stop offset=\"1\" stop-color=\"#D5D7D8\" /></linearGradient><linearGradient id=\"wikipedia_l\" gradientUnits=\"userSpaceOnUse\" x1=\"136.042\" y1=\"-39.679\" x2=\"136.042\" y2=\"-39.679\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".747\" stop-color=\"#F9F9F9\" /><stop offset=\"1\" stop-color=\"#D5D7D8\" /></linearGradient><path d=\"M-162 363.4c1 1.6 2.8 4.3 2.8 4.3s.3.3.5.6c0-.4-.1-.6-.1-.6l-.1-.3c0-.4.4.1.6.3-.5-.8-.7-.8-.7-.8s-.4-.2-.1.6c.3.8-.1.2-.1.2-.9-1.2-2.8-4.3-2.8-4.3l-.6-.4.6.4zM-152.5 401.4v-.2-.1c.1.1.1.2 0 .3zM-153.2 385.7c.1 0 .2.1.2.1s.1.2.3 0c.1-.1.2-.4 0-1.3 0 .2-.1.4-.1.6-.1.3-.3 0-.4-.1-.1-.1-.2.1-.2.1v.2c0 .7.1 2.3.2 3.6.1.6.2 1.1.3 1.4v.1c.1.1.2.3.3.3.1-.1.3-.6.3-.6l.1-.6c.2.1.3.5.3 1v-.1s-.1-1.3-.3-1.3c-.2 0-.2.7-.2.7s-.1.5-.2.5-.4 0-.6-1.4c-.2-1.4-.2-2.9-.2-2.9s.1-.3.2-.3zM-154.3 378.6l.3.3c.5 1.5 1 3.8 1.1 4.3 0-.1-.1-.3-.1-.4-.3-1.5-.7-2.9-1-3.8l-.3-.4-.1-.7s-.3-.9-1-2.7c-.7-1.8-.8-2.5-.8-2.5s0-.2.1-.2.1-.2.1-.2 0-.2-.3-1c-.2-.5-.3-.9-.7-1.6.3.6.5 1.1.5 1.3v.1s.1.1.1.6c0 .4-.1.5-.1.5v.1c.1.5.4 1.2.4 1.2s1.1 2.7 1.7 4.5l.1.6z\" opacity=\".1\" fill=\"#232323\" /><linearGradient id=\"wikipedia_m\" gradientUnits=\"userSpaceOnUse\" x1=\"20.534\" y1=\"1538.158\" x2=\"1.209\" y2=\"1632.194\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-211 441.5c.9.2 1.7.4 1.9.4-.4-.1-1-.2-1.9-.4z\" fill=\"url(#wikipedia_m)\" /><linearGradient id=\"wikipedia_n\" gradientUnits=\"userSpaceOnUse\" x1=\"168.559\" y1=\"-72.757\" x2=\"173.288\" y2=\"-132.177\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\".22\" stop-color=\"#989A9C\" /><stop offset=\".253\" stop-color=\"#FFF\" /></linearGradient><path d=\"M-233.6 424.9v-.2l-.1-.1s-1.9-3.4-1.7-4.6c0 0 .1-.8 1.2-1.2.8-.3.7.5 3.1 1 0 0 2.1.6 2.6-.9s-.6-3.4-.6-3.4-1.4-2.7-3.2-2.8c-.9-.1-.7.6-2.1.9 0 0-1.9.2-2.5-1-.7-1.4-1-3-1-4 0-1.1 0-1 .1-1.4 0-.2.2-.5.2-1.1l-.1-.7.2-.5v-.8c-.1-1.7-.2-4.2-.4-5.7s-.6-3.8-2-3.9c0 0-.7-.1-1.6.9-.9.9-1.7-.7-1.7-1.7-.1-1.1.1-2.3.4-2.8.3-.5 1-.6 1.2-.6.1 0 .6.2 1 .5.5.3 1.2.3 1.6-.1.4-.4.9-.9 1.2-2.6.2-1.7.2-3.5 0-5.7l-.2-.5 1.3-.3v-.2-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1c.1-1.2.3-1.8.3-1.8l.1-.2s.5-1.5 1.2-2.5c0 0 .4-.7 1.2-.8.8-.1 1 .2 1.4.2H-231.6c.3-.2.6-.5.8-.8v-.1-.1c0-.1.1-.1.1-.2v-.1c.1-.1.1-.2.1-.2.6-1.5.1-2.9-.2-3.2-.3-.4-1-.9-1-.9s-.3-.2-.8-.1c.3 0 .8.1 1 .6.3.7.4 1.3.2 2.3 0 0-.3 1.4-1.4 2.2-1.1.8-1.9.1-2.9.1s-1.5.7-1.8 1.2c-.3.5-1.4 2.2-1.3 5.1.1 2.9.3 4.3.3 5.6 0 1.2.2 4-.6 5.3-.8 1.3-1.6.6-2.2.3-.6-.3-1.2-.2-1.7.1-.5.4-.8 1.1-.8 3.3 0 2.4 1.5 2.6 1.5 2.6s.3.1.9-.5c0 0 .7-.7 1.3-.6.6.1 1 .7 1.3 1.8.3 1.1.8 5.6.7 8.7 0 1.3-.6 1.3-.4 3.6 0 0 .4 3.1 1.4 4.1 1 1 2.4.8 2.7.8.3 0 .7-.3.7-.3s.3-.2.5-.4.5-.4 1-.3c.5.1 1.6.9 2.6 2.6.9 1.7.5 3.3-.3 3.5-.7.2-.8.2-2-.1-1.1-.3-1.5-.6-2-.8-.5-.2-1-.3-1.5.1s-1.3 1.1-.3 3.3c1 2.2 1.7 3.8 3.5 5.6-.5-.6-1-1.2-1.4-1.9v-.7z\" fill=\"url(#wikipedia_n)\" /><linearGradient id=\"wikipedia_o\" gradientUnits=\"userSpaceOnUse\" x1=\"-16.628\" y1=\"1530.36\" x2=\"-35.153\" y2=\"1620.502\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-231.5 357.4c-.1 0 0 0 0 0z\" fill=\"url(#wikipedia_o)\" /><linearGradient id=\"wikipedia_p\" gradientUnits=\"userSpaceOnUse\" x1=\"5.906\" y1=\"1621.338\" x2=\"5.898\" y2=\"1621.375\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-208 442.9h.4c-.1 0-.3 0-.6-.1.1 0 .2 0 .2.1z\" fill=\"url(#wikipedia_p)\" /><path d=\"M-229.9 355.5c-.6.4-.7 0-1.1 0-.4 0-1 .2-1.6 1-.6.8-.6 1.9.3 1.4 0 0 .4-.4.8-.6.1 0 .2-.1.4-.2l.1-.1s.4-.5 1.1-.3c.6.2 1.1-.1 1.1-.1 1-.8 1.7-2.2 1.7-2.2l1-2-.8-1.3s-.7 1.5-1.4 2.5c-.7 1.1-.7 1.4-1.6 1.9z\" fill=\"#9FA2A3\" /><path d=\"M-234.1 366.3s-.4 1.9 1.2 1.6h-.1c0-.5.1-1.4.5-2.3.3-.8 1.1-2.3 1.1-2.3s1-1.8 1.5-2.9c.4-1.1.4-1.9.4-1.9s-.8-1-.9-1.2c-.1-.2-.3-.2-.3-.2-.1 0-.1 0-.1.1.1 0 .2 0 .3.1.2.3-.4 2-.4 2s-.5 1.2-1.5 3c-1.2 1.9-1.7 4-1.7 4z\" fill=\"#9FA2A3\" /><linearGradient id=\"wikipedia_q\" gradientUnits=\"userSpaceOnUse\" x1=\"14.903\" y1=\"1536.638\" x2=\"-4.504\" y2=\"1631.072\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-215.8 439.7h.2c-.1-.1-.3-.2-.5-.3.2.1.5.4.3.7-.2.4 0 .5.5.9h.1c-.2-.1-.3-.2-.2-.4.1-.2.1-.3.1-.5l-.5-.4z\" fill=\"url(#wikipedia_q)\" /><linearGradient id=\"wikipedia_r\" gradientUnits=\"userSpaceOnUse\" x1=\".457\" y1=\"1533.599\" x2=\"-18.966\" y2=\"1628.111\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-229.6 432.7c-1.2-1.2 1.6-.1 1.6-.1s.6.3.3-.4c-.2-.6-1.4-2-2.5-3.2l.1.2s2.3 2.7 2.2 3c-.2.2-1.1-.3-1.1-.3s-1.4-.5-1.2.1c.1.5 1.1 1.3 1.5 1.6l-.9-.9z\" fill=\"url(#wikipedia_r)\" /><linearGradient id=\"wikipedia_s\" gradientUnits=\"userSpaceOnUse\" x1=\"8.651\" y1=\"1534.969\" x2=\"-10.844\" y2=\"1629.835\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-227 434.7c.4.3.9.5 1.4.7 0 0 .8.3 1.3-.1s.5-.6 1.2-.2c0 0 1.4.7 2.4 1.4s3.6 2.3 4.4 2.8c-.8-.4-3.7-2.4-4.6-3-.9-.6-2.6-1.7-3.3-1.5-.6.2-.5.4-.8.6-.3.2-.7.1-1.5-.4-.2-.1-.4-.2-.5-.3z\" fill=\"url(#wikipedia_s)\" /><linearGradient id=\"wikipedia_t\" gradientUnits=\"userSpaceOnUse\" x1=\"17.547\" y1=\"1532.957\" x2=\"-2.811\" y2=\"1632.017\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-214.1 441.4c.4.1.7.1.8 0-.7 0-1.4-.3-1.4-.3s-.1 0-.2-.1c.3.3.6.4.8.4z\" fill=\"url(#wikipedia_t)\" /><linearGradient id=\"wikipedia_u\" gradientUnits=\"userSpaceOnUse\" x1=\"20.658\" y1=\"1537.844\" x2=\"1.256\" y2=\"1632.257\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#E4E5E6\" /></linearGradient><path d=\"M-209.7 442.2s-1.3-.2-1.9-.2c0 0 0 .1.2.2h.2c.3.1 2 .2 2.5.2.4-.1-.1-.3-.1-.3s-.1 0-.3-.1c-.3.2-.6.2-.6.2z\" fill=\"url(#wikipedia_u)\" /><path d=\"M-249.3 412c.1.1.2.4.5.7.1.2.3.1.2-.5-.3-.2-.4-.3-.5-.4-.1 0-.3-.3-.3-.3s-.5-.8-.3-.2c.4 1.2 1.6 3.8 1.6 3.8l1.4 2.5c-1-1.8-2.3-4.6-2.4-5-.2-.4-.3-.7-.2-.6zM-252.5 382.7v-.6c0-.1.1-.2.1-.4.7-2.8 1.1-3.9 1.4-4.6.4-.8.4-.2.4-.2s0 .2.1.2.3-.3.5-.8.6-1.7.7-2.2c.1-.7-.1-.4-.1-.4-.1 0-.1-.1-.1-.3 0 0 .4-2.1 3.1-6.6.2-.2.3-.3.5-.4-.1-.1 0-.3 0-.3.1-.2.3-.4.4-.7l-.1.5s-1.9 2.5-3.1 5.7c0 0-.3.8-.4 1.1 0 .2-.1.7.2.6h.1c-.1.5-.3 1.4-.6 2.3-.3.9-.6 1.6-.8 2.1-.1.1-.1 0-.1-.2s-.1-.2-.1-.2c-.2 0-.3.2-.4.4 0 .1-.1.2-.1.2s-.5.9-1.3 4.3c-.8 3.3-.8 6.1-.8 6.1s-.1 1.3-.2 1.4c-.1.1-.1-.1-.1-.1s0-.1-.1 0v-.9s0-.2.1-.2 0 .1 0 .2c0 0 .1 0 .1-.2s.1-2.8.6-5.3l.1-.5zM-253.6 392v.4c.1.4.2.4.2.4 0-.1.1-.3.2-.5v.4c0 .5 0 2.5.2 4.3.2 1.8.4 3.3.4 3.6 0 .2.5 3.3 1 5.1.3 1 .4 1.3.5 1.4 0 0 .1.2.3.3 0 0 .1-.1.1-.4 0 0 0 .1.1.1-.1.3-.1.4-.1.4s-.1 0 0 0c.1.4 0 .7-.2.3-.2-.4-.8-1.8-1.3-4.3 0 0-.5-2.7-.8-5.1v-.1l-.1-.1c0-.2 0-.5-.1-.7 0 0-.3-3.7-.2-4.6 0-.9-.1 0-.1 0v.3c0 .1-.1.4-.1-.2.1.3 0-.7 0-1zM-229.3 352l-.5-.8-.1-.1s-.1-.1-.9 0h-.1s.4-.1.2.2c-.2.3-.6.5-1.2 1.1-.6.7-.4.8 0 .7.4 0 1.1-.4 2.6-1.1zM-230.9 351.2z\" opacity=\".1\" fill=\"#232323\" /><path d=\"M-230.4 351.8c.3-.3.4-.5.5-.6 0 0-.1-.1-.9 0h-.1c.1 0 .3 0 .1.2-.2.3-.6.5-1.2 1.2s-.4.8 0 .7c.1 0 .2-.1.4-.2.2-.3.6-.8 1.2-1.3zM-170.5 354.1l-.2.2s.1.1.2.1l-.1-.1s0-.1.1-.2h.1-.1z\" opacity=\".1\" fill=\"#232323\" /><path d=\"M-191.4 440.3s1.7-.2 3.2-.7c1.6-.5 1.9-1 1.9-1.3 0-.2-.4-.3-.9-.2.3 0 .5 0 .4.3-.3.6-.9.8-.9.8s-.3.2-.9.4c-.8.2-1.8.4-2.3.4-.7.1-.5 0-1.5.3h-.1c-.3.2 1.1.5 1.1.5s1.3.4 3.3.2h.1c.3-.1.5-.2.8-.2-2 .5-3.3.1-3.7.1-.4-.1-.8-.1-.9-.4-.2-.2.4-.2.4-.2z\" opacity=\".53\" fill=\"#FFF\" /><path d=\"M-190.7 354.4l.7.1c1.4-.4 2.7-.8 2.7-.8s1.3-.4 1.9-.6c.6-.2 1.1-.3 1.7-.4.6-.1 1.3-.1 1.7-.1.4 0 .5.1.5.1s.2.1.2.3c.1.1.7 1.9 3 2 2.2.1 2.3-1.1 2.1-1.5-.2-.4-.9-.9-.9-.9s-.9-.6-1.1-.8c-.2-.3 0-.4.1-.4s2.4-.5 2.7-.6l-.6-.2s-.1.1-.8.3c-.7.2-1.2.2-1.7.3-.5.1-.5.2-.5.2l-.9 1.4v.3c.1.2.4.4.4.4s.6.4 1 .7c.4.3.4.4.4.4-1.1.1-1.4 0-1.9-.3-.4-.2-.8-.7-.9-1.1-.2-.4-.5-.7-.5-.7-.6-.3-1.7-.3-2.8-.1-1.1.2-2.7.7-2.9.8-.3.1-1.6.6-2.3.7-.7.2-1.2.4-1.6.5-.4.1-3.4 1-4.6 1.3-1.1.3-1.8.5-1.8.5-1.7.2-2.2-.1-2.2-.1-.3-.1-.3-.5-.3-.5v-1.1s0-.4-.4-.6c-.3-.2-.8-.3-1.6-.3s-1.7 0-2.1.1c-.4.1-1.2.3-1.8 1-.6.6-.5 1.1-.5 1.1s0 .7.1 1.2.5.7.5.7-.7.5-3 1.2c-2.2.6-3.7.8-3.7.8l.7.3s5.5-1 7.1-2.6c0 0 .6-.3 0-.9-.6-.6-.9-.8-.9-.8s-.4-.2 0-.8c.4-.5.9-.8 1.4-.9s1.8-.3 2.9-.1c0 0 .5 0 .5.4s-.1.9-.1 1c0 .2 0 .5.4.8.4.3 1.1.5 1.1.5s1.3.2 2.8-.2c1.6-.4 3.6-1.1 5.4-1.6l.4-.4z\" opacity=\".1\" fill=\"#232323\" /><path d=\"M-205.5 356.6c.3.2.5.2.5.4.1.3-.6.6-.6.6s-.4-.2-.5-.7c-.1-.5-.1-1.2-.1-1.2v.3c.2.3.3.4.7.6z\" fill=\"#616161\" /><path d=\"M-171.6 429.3l.5.2c1.1-.6 1.5-.8 1.8-1 1.2-.7 2.6-1.6 3-1.9 0 0 .8-.5.1.2-.6.7-1 1-1 1s-.6.6-.5.8c0 0 .2.2 1.2-.7 1-.9 2.2-2.3 2.3-2.4.1-.2.1-.3.1-.3s.1-.2.3-.4c.1-.1 1.4-1.5 2-2.1.3-.4.5-.7.8-1.1-.4.4-1.7 1.8-2.5 2.7 0 0-.7.8-.9 1.1-.2.3-.2.5-.2.5s-.1.2-.4.5l-1.2 1.2s-.6.5-.8.5c-.2 0 .4-.5.4-.5s.6-.6 1-1.1c.4-.5.1-.5.1-.5s-.2 0-1 .5-1.4.9-1.4.9-1.7 1-2.8 1.6c-1.1.6-3.6 1.9-5 2.5-1.4.6-2.2.7-2 .5.1-.2.5-.5.5-.5s.4-.4.4-.8c0 0 .1-.6-1.6-.2-1.7.4-3.3 1.2-3.3 1.2s-2.6 1.2-2 1.9c0 0 .1.2.6.4s-.9.6-.9.6c-1.4.4-2.4.7-3.7.9-2 .4-3.6.8-4.2.9-.2 0-.3.1-.3.1s-1.2.3-3.2 1.1-6 1.4-6 1.4-2.5.3-2.8.6c-.2.3.2.5.2.5s.4.2 1.7.3h.5s0 .1-.2.2c-.3.1-.9.3-2.8.6-1.9.2-1.9-.1-1.9-.1s0-.1.1-.2 0-.4-.3-.5c0 0-.4-.3-1.8-.3s-4.2 0-6.8-.1c-2.4-.1-5.6-.6-6.1-.7 0 0-.1 0-.2-.1s-.6-.4-1.2-.7c-.5-.3-2.1-.9-2.1-.9s-2-.8-1.9-.5c0 .1.1.2.3.2.4.2.7.4 1.1.6 0 0-.7-.4-.5-.4.2 0 .4.1.4.1s1.2.3 2 .7c.8.4 1.4.8 1.4.8s.9.5 2.3.7c1.3.2 3.2.4 3.8.4l.6-.3.4.4c1.1.1 2.6.1 2.6.1s3 .1 4.6 0c.7-.1.5.3.5.3s-.2.4.2.5c0 0 .8.4 3.3.2 2.6-.3 3.1-.9 3.1-.9s.3-.3-.4-.4c-.5-.1-.5-.1-1.2-.1-.7-.1-1-.2-.6-.3.4-.1 1.2-.2 1.2-.2s2.2-.3 4.1-.8c0 0 1.9-.5 3.9-1.1.8-.3 1.4-.5 1.9-.6l.4-.6.6.4h.1s2.3-.5 3.3-.7c1-.2 3.2-.6 4.1-1.1.9-.4 1.4-.8 1.5-1.1.1-.3-.4-.4-.4-.4s-.6-.1-.5-.3c.1-.2.3-.4 1.2-.8.9-.4 2.1-.9 3.2-1.1 1.2-.3.7.2.7.2s-.7.7-.8 1c-.1.3 0 .3.1.3.1.1.6 0 1-.1s3.5-1.3 5.3-2.3l.1-.1.5-1z\" opacity=\".17\" fill=\"#FFF\" /><linearGradient id=\"wikipedia_v\" gradientUnits=\"userSpaceOnUse\" x1=\"-32.817\" y1=\"1596.566\" x2=\"-32.627\" y2=\"1596.566\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"gray\" /><stop offset=\".087\" stop-color=\"#7A7A7A\" /><stop offset=\".36\" stop-color=\"#6B6B6B\" /><stop offset=\".519\" stop-color=\"#686868\" /><stop offset=\".638\" stop-color=\"#5F5F5F\" /><stop offset=\".743\" stop-color=\"#4E4E4E\" /><stop offset=\".841\" stop-color=\"#383838\" /><stop offset=\".932\" stop-color=\"#1B1B1B\" /><stop offset=\"1\" /></linearGradient><path d=\"M-246.6 418l.2.1c-.1-.1-.2-.1-.2-.1z\" opacity=\".68\" fill=\"url(#wikipedia_v)\" /><linearGradient id=\"wikipedia_w\" gradientUnits=\"userSpaceOnUse\" x1=\"-32.594\" y1=\"1591.799\" x2=\"62.024\" y2=\"1591.799\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"gray\" /><stop offset=\".087\" stop-color=\"#7A7A7A\" /><stop offset=\".382\" stop-color=\"#828282\" /><stop offset=\".518\" stop-color=\"gray\" /><stop offset=\".568\" stop-color=\"#797979\" /><stop offset=\".603\" stop-color=\"#6E6E6E\" /><stop offset=\".608\" stop-color=\"#6B6B6B\" /><stop offset=\"1\" stop-color=\"#4E4E4E\" /></linearGradient><path d=\"M-163.6 410h-.4c-1.8 1.5-2.3 1.9-3.8 3 0 0-1.6 1.2-3.4 2.2-1.8 1-3.9.9-3.9.9s-.6-.1-.3-.5.6-1.4.8-1.9c.1-.5.4-1.8-.6-2.2-1-.4-3 .2-3 .2s-4.5 1.2-6.4 3.2c-1.8 2-.3 2.8-.3 2.8s.7.5 1.4.7c.6.2.5.4.4.6 0 0-2 1.3-4.4 2 0 0-3.3 1-6.4 1.2-3.2.2-4.5.3-4.5.3l-.4.4-.8-.3c-1.3.2-3.5.5-5.6 1-2.6.6-5.1 1.1-6.9 2.3 0 0-1.3.9-.6 1.7.8.9 1.6 1.2 1.6 1.2s.5.2.5.3c0 .2 0 .3-.4.5 0 0-1.4.8-4.1.9-2.7 0-3.9 0-4.7-.7-.7-.6.2-1.8.2-1.8s.3-.6 0-1.5c-.3-.8-2.2-.9-2.2-.9l-2.6-.1c-3.1-.1-7.2-.4-9-.7v.2l-.7-.3c-1.1-.2-3.2-.7-4.1-1.1-.8-.4-1.2-.3-1.1-1.1.1-.8-.8-1.8-.8-1.8s-1.2-1.3-2.3-2.1c-1.1-.8-1.5-.6-1.5-.6s-.5.3 0 1.3c.4 1 .9 1.4.9 1.4s.2.2.1.3c-.1.1-.5-.2-.8-.5-.3-.2-1.9-1.7-2.5-2.3l.1.4s0 .1.1.1c.2.3.9 1.3 2.2 2.3 1.5 1.2 1.6.7 1.6.7s.1-.4-.3-.8-.9-1.4-.8-1.7c.1-.3.3-.3.3-.3s.1-.1.6.3 1.5 1.1 2 1.7c.5.6.5 1.2.5 1.2s-.1.6.5 1.2 1.7 1.7 5.9 2.4h.1l.2-.6.6.7c3.6.5 5.6.6 5.6.6s4.7.2 6 .2c1.3 0 1 .7 1 .7s-.1.4-.2.6c-.2.3-.5 1.4-.1 1.9 0 0 .6 1.4 4.4 1.5 0 0 3.3.3 5.6-.7s.2-2.3.2-2.3-.8-.5-1.1-.7c-.3-.2-.2-.5-.1-.6.1-.2.3-.4.6-.5.3-.1 1.2-.7 5.4-1.7 4.1-1.1 6.6-1.2 6.6-1.2h.1l.3-.7.9.6c.7-.1 1.7-.1 2.5-.2 1.7-.1 4.3-.5 5.9-.8 1.5-.3 3.9-1.1 5.6-2 1.7-.9 1.8-1.5 1.8-1.5s.3-.5-.4-1-1-.4-1.7-1c-.6-.6.6-1.6.6-1.6s.6-.9 4-2.2c3.4-1.3 4-.9 4.2-.7.2.1.2.6.1.9l-.7 2.1c-.2.6-.3 1.4.6 1.6.9.2 2.2 0 3.4-.4 2.9-1 3.8-2.3 8.5-5.8l-.6-.9.7.1c2-1.6 3.9-3.6 3.9-3.6s1.3-1.3 1.9-2.4c.6-1 0 .9 0 .9s-.3 1.5.2 2.1c.4.4 1.6-.8 1.6-.8s.7-.8 1-2.1c.4-1.9.2-2.2.2-2.2s-.2-.4-.1-.9c.2-.5 1.2-3 2-4l.5-.6-.2-.6.3-.5s-.3.3-1.4 2.2c-1.3 2.1-1.5 3.8-1.5 3.8s-.1.7-.1 1c.1.4.2.5.2.6 0 .1-.1 1-.5 1.8s-.8 1-.8 1-.8.5-.9.2c-.1-.4-.1-.7 0-1 0-.2.3-1.6.3-2.1s-.5-.1-.5-.1-.1.1-.3.4-1.3 1.6-1.7 2.1c-1 1.2-1.9 2-4.3 3.9l-.5.8z\" opacity=\".43\" fill=\"url(#wikipedia_w)\" /><linearGradient id=\"wikipedia_x\" gradientUnits=\"userSpaceOnUse\" x1=\"-39.407\" y1=\"1573.355\" x2=\"60.406\" y2=\"1573.355\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#555\" /><stop offset=\"1\" stop-color=\"#231F20\" /></linearGradient><path d=\"M-252.8 398.5l.1 1c.2.3.6.7 1.1 1.2 1.1 1.1 1.4.4 1.4.4s.3-.7-.1-2c-.3-1.3-.3-2 .3-2s2.3.4 2.8 1.8c0 0 .2.6 0 1.5-.2.8-.2 1.6 0 2.3.1.7.8 1.4 1.5 2 .7.6 2.7 1.5 4.7 1.7 2 .1 2.6 0 2.6 0l.7-.8.1.7c.8-.1 2.1-.2 3.6-.4 2.5-.3 4.2-.5 5.8-.3 1.6.2 2.1 1.5 2.1 1.5s.1.3-.3.5c-.3.2-.7.5-.9.9-.2.3-.4 1.1.2 2 .6 1 2.1 1.6 3.5 1.4 1.3-.2 3.3-.7 4.5-1 1.3-.3 2.4-1 2.6-2 .1-1-1.5-2.3-1.5-2.3s-.8-.6-.9-.8c-.1-.1.1-.2.1-.2s.9-.2 1.4-.4c.4-.2 1.5-.6 3.4-1.2 1.8-.6 5.6-1.2 5.6-1.2s2.1-.3 4.7-.5l.6-.7.5.6c.4 0 .8 0 1.2-.1 3.6-.1 5.3-.6 7.2-1 1.9-.4 4.6-2 5-2.3.4-.3 1.2-.7 1.4-2 .2-1.3-1.4-2.2-1.4-2.2s-1.2-.6-1.5-.9c-.3-.3 0-.6 0-.6s.7-1.5 2.9-2.4c2.2-.9 3.7-1.1 4.6-1.2.9-.1 1.2.2 1.4.4.1.2.1.5 0 .8-.1.3-.4 1-.6 1.4-.2.4-.5 1.2-.3 1.6.2.4.8.6 1.7.4.8-.1 3-.8 4.9-1.6s5.1-2.3 5.1-2.3l.1-.7.7.3c1-.6 2.8-1.6 4-2.6 1.9-1.6 3.7-3.2 4.2-3.6.5-.4.9-.8 1.3-.7.4 0 .7.3 1 1.4.3 1.1.3 2 .4 2.6.1.5.3 1.2.9 1.3.6.1 1.5-.4 1.8-.7.3-.3.9-1.2.9-2.4 0 0 .1-1.6-.8-3.1 0 0-.4-.6-.5-.8-.1-.1-.2-.2 0-.5.1-.3.5-.8 1.1-1.2.4-.3.9-.3 1.1-.4 0 0 .3-.1.6-.3l-.1-.4.3.3c.4-.2.7 0 .7 0l-.4-.5.1-.5s-.3-.2-.7-.1c-.4.1-.4.4-1 .5-.6.1-1.3.3-1.9 1.3-.7 1 0 2.3 0 2.3s.4.6.5.9c.2.3 1.1 2.2 0 3.6 0 0-.6.6-1.5.9-.9.2-.6-.8-.7-1.4 0 0-.1-2.3-1.2-3.6-1-1.1-2.7.9-3.6 1.6-.8.6-3.2 3.1-6.7 4.9l-.5.9-.3-.5c-1.7.8-5.4 2.7-7.9 3.5 0 0-1.9.8-2.6.8 0 0-.2 0 0-.2.1-.2.3-.3.5-.7.2-.4.6-1.4.6-2.3 0-1-1.1-1.9-2.7-1.7-1.6.2-3.1.6-4.8 1.3-1.8.7-3.3 2.2-3.6 3.4-.2 1.2 1.1 1.9 1.1 1.9s1.5.8 1.7 1.2c.2.4 0 .8 0 .8s-.1.4-.8.8c-.6.4-2.4 1.3-2.4 1.3s-2.2 1.2-5.6 1.5c0 0-3.1.3-4.8.3h-.1l-.5.5-.6-.4c-1.6.1-3.5.4-3.5.4s-4.3.6-8.2 1.8c-3.3 1-4 1.6-4 1.6s-.7.6-.1 1.5c0 0 .3.5 1 1.1.7.5 1.2 1.1 1.2 1.3-.1.3-.3.4-.3.4s-1 .9-4.9 1.5c0 0-2.5.5-3.3-.3-.8-.8-.4-1.3-.4-1.3s.1-.2.6-.5c0 0 1-.6.6-1.7-.3-1.1-2.1-2.5-4.1-2.5 0 0-2.3 0-8.2.8l-.2.5-.6-.4c-.3 0-.7.1-1.1.1-1 .1-2.5-.1-4.3-.6-1.8-.5-3-1.5-3.1-2.1-.1-.4 0-1 0-1s.3-1.3.1-2.4c-.2-1.1-.6-1.9-1.6-2.6-1-.6-1.6-.5-1.6-.5s-.9-.1-.9 1.4c0 1.6.2 2.3.2 2.3s.2.6-.1.6c-.3.1-.7-.4-.7-.4s-1-.9-1.6-1.7v.1l-.2.5s.1.1.3.4l-.1-.8z\" opacity=\".31\" fill=\"url(#wikipedia_x)\" /><linearGradient id=\"wikipedia_y\" gradientUnits=\"userSpaceOnUse\" x1=\"-39.103\" y1=\"1552.882\" x2=\"52.501\" y2=\"1552.882\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#A0A0A0\" /><stop offset=\".077\" stop-color=\"#656767\" /><stop offset=\"1\" stop-color=\"#717375\" /></linearGradient><path d=\"M-162.9 361.7l.2.8s-.6.3-1.7.6-2.2.8-2.2.8-.9.3-.6 1c.3.7.8 1.1.8 1.1s.7.7.7 1.2-.2.8-.8 1.1c-.6.3-1.1.4-1.1.4s-1.3.2-2-.4c-.7-.6-.8-1.7-.8-1.7s-.1-.9-1.1-1.3c-1.1-.4-2.5.4-2.5.4s-1.1.6-2.2 1.3c-1.1.7-3.3 1.6-4.6 2.1l-.2.7-.8-.4c-1.4.5-3.3 1.1-3.3 1.1s-2.5.9-4.2 1.2c-1.6.2-2 0-2.2-.2-.2-.2 0-1 0-1s.7-1.4.3-2.1c-.3-.7-2.5-.9-2.5-.9s-2.3-.3-4.5.9c-1.9 1.1-2.1 1.6-2.1 1.6s-.6.9.1 1.9c.8 1.1 1.9 1.1 1.9 1.1s1 .1 1.3.4c.2.3.1.6.1.6s-.3.9-2.2 1.3c0 0-3.2.9-9.1 1.8l-.6.6c-3.7.5-8.1 1.4-10.6 2-2.4.6-2.6 1.3-2.6 1.3-.5.8.1 1.2.1 1.2s.8.3 1 1.2c.2.9-.8 1.6-.8 1.6s-1.2 1-2.9 1.3-2.4.4-3.4-.5c-.9-.7-.3-1.9.3-2.3.6-.4.9-.9 1-1.1.1-.2 0-.4 0-.4l-.6-.5c-2-1.3-9.9.1-9.9.1l-1.3.3-.7-.4s-2.3.6-4.9.6c-2.7 0-1.3-2.1-1.3-2.1s.6-1.1.8-1.8c0 0 .2-1.7-1.4-1.6-1.6.1-2 1.5-2 1.5s-.1.8-.1 1.4c0 .6 0 1.8-.7 2.6-.7.7-1.5.5-1.5.5s-1.3-.6-1.6-.7c-.3-.1-.5-.2-.8-.1h-.1l-.2.8v-.6c-.2.2-.3.4-.3.4l.1.3-.2.6.2-.4.2-.4-.1.2c.1 0 .1-.1.2-.1.3 0 .6.2.6.2s1.1.6 1.6.7c.5.1.9-.1 1.2-.3.5-.4 1.1-1.1 1.4-1.8.2-.6.3-2.4.3-2.4v-.5c0-.1-.1-.6.2-.8.3-.2.5-.3 1.1-.4.7 0 .9.4.9.4s.2.3.2.5-.1.3-.1.3-.4.6-.5.9c-.1.3-.6 1.3-.5 2.2.1.9 1.5 1.3 1.5 1.3s1.1.3 2.6 0l3.1-.5.5-.6.2.5c.8-.1 2.1-.4 3.6-.5 2.3-.2 4.8-.3 5.8-.1 0 0 .5.1.4.2l-.4.4-.7.7s-.7 1.2-.7 1.7.5 2 2.4 2.4c1.9.4 4.1-.3 4.1-.3s1.4-.3 2.8-1.7 0-3.1 0-3.1-.2-.3-.6-.4c0 0-.2 0-.1-.2.1-.1.4-.6 1.4-.9 1-.3 4-1.2 11.1-2.1l.3-.6.9.5c2.7-.4 4.6-.7 7.8-1.5 0 0 3-.5 3.7-1.7.4-.6 1-1.5 0-2.4 0 0-.1-.2-.8-.3-.7-.2-1.2-.3-1.7-.7-.6-.4-.6-.9-.6-.9s0-.4.9-1c0 0 .9-.6 2.5-1.2 1.7-.5 3.6-.3 3.6-.3s.8.1.7.6c-.1.6-.6 1.5-.6 2s0 1 .9 1.4c.9.4 2.3.3 2.3.3s1.4-.1 3.6-.8c2.3-.7 4.6-1.6 4.6-1.6l-.1-.5 1 .2c.6-.2 1.4-.5 2.3-.9 1.8-.8 2.7-1.5 3.5-2 0 0 1.8-1.1 2.9-1.1 0 0 .3 0 .3.3s.1.8.2 1.1c.1.3.7 1.8 2.7 2 2 .2 2.8-1.1 2.8-1.1s.7-1-.5-2.3c0 0-1-1-1-1.1 0 0-.1-.2.2-.2.3-.1 3.2-.9 4.3-1.4l-.3-.5.5.4c.2-.1.4-.2.5-.4.2-.3-.1-.8-.1-.8-.1-.2-.3-.4-.4-.5l-.6-.3h-.1l.4.6\" opacity=\".34\" fill=\"url(#wikipedia_y)\" /><path d=\"M-245.9 366.3l-.3.4c.1 0 .2-.1.2-.1s.4-.1 1.1.1c.9.2 2.1-.5 2.1-.5s.9-.5 1.3-1.4l.4-1s.3-1 1.1-1.3c0 0 .3-.2.8-.2s.4.4.4.4-.1.2-.6.9-.7 1.2-.7 1.2-.3.7.2 1c0 0 .2.1.9-.1s3-.8 4.4-1.1l1-.5-.6-.4c-2.4.4-4.2 1-4.8 1.2-.6.2-.6.1-.6.1-.2-.2.4-1 .4-1s.7-.9.9-1.7c.3-.8-.9-.7-.9-.7-.8.1-1.3.5-1.9 1.2-.5.6-.8 1.4-.9 1.8-.1.3-.2.5-.2.5s-.1.2-.4.3c-.4.2-1.2.4-1.2.4s-.5 0-.9-.1c-.2-.1-.9 0-.9 0l.1-.5h-.1l-.7.4-.3.6c-.1.1-.2.5 0 .5h.2l.5-.4zM-240.7 359.2s.3-.3.3 0c0 .2-.3.7-.3.7s-.1.1-.2.1c0 0 0-.5.2-.8zM-243.4 362.5s-.4.5 0 .5l.8-.8s-.1-.1-.2-.1c.1 0-.4.2-.6.4z\" opacity=\".1\" fill=\"#232323\" /><path d=\"M-176.2 435.7s-1.8.8-3.4 1.6c-1.6.8-2.3 1.1-2.3 1.1s-.1 0 0 .1c.1 0 0 .1 0 .1-.8.4-2.7 1.1-2.7 1.1s-.2.1-.2 0l.2-.1s.4-.1.3-.2c-.1-.1-1.2.3-1.2.3s-1.9.6-2.9.9c-.9.3-2.8.7-2.8.7-1.2.3-3.8.8-4.3.9-.6.1-.4.1-.4.1s.5-.2-.4-.2c-1.1-.1-2.4.1-3.6.3-1.3.2-1.2.3-1.2.3s0 .2.7.1h.5c-1.4.2-4.2.2-4.2.2h3.2c.2 0 1.5-.1 1.9-.2.5-.1-.1-.1-.1-.1h-.7s-.8 0-.1-.2c.7-.1 1.8-.2 2.4-.3.8-.1.5.1.5.1s0 .1.5.1 4.7-.8 7.1-1.5c2.3-.7 4.1-1.3 4.1-1.3s.2-.1.1 0-.5.2-.5.2-.6.3.8-.1c.1 0 .1 0 .2-.1l3.6-1.5s.1-.1 0-.1c-.2.1 0-.1.2-.1.2-.1 2.3-1.2 3.4-1.6.5-.1.9-.3 1.3-.6z\" opacity=\".3\" fill=\"#FFF\" /><linearGradient id=\"wikipedia_z\" gradientUnits=\"userSpaceOnUse\" x1=\"-36.343\" y1=\"1578.751\" x2=\"-36.343\" y2=\"1578.751\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".078\" stop-color=\"#F4F4F4\" /><stop offset=\".381\" stop-color=\"#CECECE\" /><stop offset=\".54\" stop-color=\"#BFBFBF\" /><stop offset=\".836\" stop-color=\"#7C7C7C\" /><stop offset=\".9\" stop-color=\"#A8A8A8\" /><stop offset=\".909\" stop-color=\"#9A9A9A\" /><stop offset=\".933\" stop-color=\"#7D7D7D\" /><stop offset=\".956\" stop-color=\"#686868\" /><stop offset=\".979\" stop-color=\"#5B5B5B\" /><stop offset=\"1\" stop-color=\"#575757\" /></linearGradient><path d=\"M-250.1 400.2z\" fill=\"url(#wikipedia_z)\" /><linearGradient id=\"wikipedia_A\" gradientUnits=\"userSpaceOnUse\" x1=\"-39.674\" y1=\"1578.511\" x2=\"68.872\" y2=\"1566.485\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".078\" stop-color=\"#F4F4F4\" /><stop offset=\".381\" stop-color=\"#CECECE\" /><stop offset=\".54\" stop-color=\"#BFBFBF\" /><stop offset=\".836\" stop-color=\"#7C7C7C\" /><stop offset=\".9\" stop-color=\"#A8A8A8\" /><stop offset=\".909\" stop-color=\"#9A9A9A\" /><stop offset=\".933\" stop-color=\"#7D7D7D\" /><stop offset=\".956\" stop-color=\"#686868\" /><stop offset=\".979\" stop-color=\"#5B5B5B\" /><stop offset=\"1\" stop-color=\"#575757\" /></linearGradient><path d=\"M-252.8 398.5l.1 1c.2.3.6.7 1.1 1.2 1.1 1.1 1.4.4 1.4.4s.1-.2.1-.6c0 .2-.2.4-.8-.1-.3-.2-.7-.6-1.1-1-.3-.3-.7-.7-1-1.1v.1l-.2.5s.1.1.3.4l.1-.8z\" fill=\"url(#wikipedia_A)\" /><linearGradient id=\"wikipedia_B\" gradientUnits=\"userSpaceOnUse\" x1=\"-40.111\" y1=\"1578.477\" x2=\"82.882\" y2=\"1564.851\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".078\" stop-color=\"#F4F4F4\" /><stop offset=\".381\" stop-color=\"#CECECE\" /><stop offset=\".54\" stop-color=\"#BFBFBF\" /><stop offset=\".836\" stop-color=\"#7C7C7C\" /><stop offset=\".9\" stop-color=\"#A8A8A8\" /><stop offset=\".909\" stop-color=\"#9A9A9A\" /><stop offset=\".933\" stop-color=\"#7D7D7D\" /><stop offset=\".956\" stop-color=\"#686868\" /><stop offset=\".979\" stop-color=\"#5B5B5B\" /><stop offset=\"1\" stop-color=\"#575757\" /></linearGradient><path d=\"M-250.3 399.1v.2s.1.4.1.8c.1-.3 0-.6-.1-1z\" fill=\"url(#wikipedia_B)\" /><linearGradient id=\"wikipedia_C\" gradientUnits=\"userSpaceOnUse\" x1=\"157.253\" y1=\"-110.999\" x2=\"253.236\" y2=\"-91.625\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\"1\" stop-color=\"#BFC0C2\" /></linearGradient><path d=\"M-154.3 378.6l.3.3c.4-.2.7 0 .7 0l-.4-.5c-.4.1-1.1.3-2.2.6 0 0-1.4.6-1.6 1.5 0 .3 0 .6.1.9.8 1.4.9 1.7.9 1.7.5 1.1.4 2 .3 2.8-.2.9-1.2 1.7-1.8 1.8-.6.2-1 0-1.1-.5-.2-.5-.2-.8-.4-2.3-.3-1.5-.7-2.2-1.2-2.4-.6-.2-1.3.5-1.7.8-.4.3-2.4 2.2-2.4 2.2s-2.3 2.1-5.7 4c-3.4 1.9-7.7 3.4-7.7 3.4s-2.8 1.1-3.5 1c-.7-.1-.5-.7-.3-1.1.2-.4.5-.9.8-1.5.3-.8.2-1.7-.4-2-.6-.3-1.2-.5-3.5.1s-3.2 1.1-3.8 1.5c-.6.4-1.6 1.2-1.8 1.7-.3.5-.6 1 .1 1.6.7.6.8.5 1.6 1 .8.6.9.6 1 1.5 0 .8-.8 1.3-.8 1.3s-3.1 2.1-6.6 2.8c-2.3.5-6.8.6-6.8.6s-1.3 0-5.4.5c-4.1.6-6.8 1.5-7.7 1.9-1 .3-2.3.8-3.1 1.2-.8.4-.4.9-.2 1 .2.1 1.2 1.1 1.5 1.4.3.3 1.5 1.3.1 2.1s-3.6 1.3-3.6 1.3-3.1.7-4.1.2c-1-.4-1.2-.8-1.5-1.4-.3-.7 0-1.3.8-1.8s.5-1.2.5-1.2c-1-1.9-3.1-2.1-4.8-1.9-2.7.2-5.4.5-7.4.7-3.1.4-4.5-.1-6-.5-1.5-.5-3-1.5-3.2-2.5v-.3c-.1-.8.1-1.1.2-1.8.1-.6 0-1.5-.1-1.8v-.1c-.5-1.3-1.7-1.9-2.7-2.1-1-.2-1 .9-1 .9.1-.2.2-.3.4-.3.6 0 2.3.4 2.8 1.8 0 0 .2.6 0 1.5-.2.8-.2 1.6 0 2.3.1.7.8 1.4 1.5 2 .7.6 2.7 1.5 4.7 1.7 1.8.1 2.5 0 2.6 0l.8-.8.1.7c.8-.1 2.1-.2 3.6-.4 2.5-.3 4.2-.5 5.8-.3 1.6.2 2.1 1.5 2.1 1.5s.1.3-.3.5c-.3.2-.8.5-.9.9-.2.3-.4 1.1.2 2 .6 1 2.1 1.6 3.5 1.4 1.3-.2 3.3-.7 4.5-1 1.3-.3 2.4-1 2.6-2 .1-1-1.5-2.3-1.5-2.3s-.8-.6-.9-.8c-.1-.1.1-.2.1-.2s1-.2 1.4-.4c.4-.2 1.5-.6 3.4-1.2 1.8-.6 5.6-1.2 5.6-1.2s2.1-.3 4.7-.5l.6-.7.5.6c.4 0 .8 0 1.2-.1 3.6-.1 5.3-.6 7.2-1 1.9-.4 4.6-2 5-2.3.4-.3 1.2-.7 1.4-2 .2-1.3-1.4-2.2-1.4-2.2s-1.2-.6-1.5-.9c-.3-.3 0-.6 0-.6s.7-1.5 2.9-2.4c2.2-.9 3.7-1.1 4.6-1.2.9-.1 1.2.2 1.4.4.1.2.1.5 0 .8-.1.3-.4 1-.6 1.4-.2.4-.5 1.2-.3 1.6.2.4.8.6 1.7.4.8-.1 3-.8 4.9-1.6 1.9-.8 5.1-2.3 5.1-2.3l.1-.7.7.3c1-.6 2.8-1.6 4-2.6 1.9-1.6 3.7-3.2 4.2-3.6.5-.4.9-.8 1.3-.7.4 0 .7.3 1 1.4.3 1.1.3 2 .4 2.6.1.5.3 1.2.9 1.3.6.1 1.5-.4 1.8-.7.3-.3.9-1.2.9-2.4 0 0 .1-1.6-.8-3.1 0 0-.3-.6-.5-.8-.1-.1-.2-.2 0-.5.1-.3.5-.8 1.1-1.2.4-.3.9-.3 1.1-.4 0 0 .3-.1.6-.3h-.7z\" fill=\"url(#wikipedia_C)\" /><path d=\"M-252.5 382.7l-.1.2c.1 0 .1-.1.2-.1.3 0 .6.2.6.2s1.1.6 1.6.7c.5.1.9-.1 1.2-.3.3-.2.5-.4.8-.7-.3.3-.7.5-1.4.6 0 0-.6 0-1.4-.6-.8-.5-1.3-.2-1.7.1l-.2.6.2-.4.2-.3z\" fill=\"#FFF\" /><path d=\"M-247.6 382c.1-.1.1-.2.2-.4 0-.1.1-.3.1-.5-.1.4-.2.7-.2.7s-.1.1-.1.2zM-247.2 378.7v1.5c0-.5.1-.9.1-.9-.1-.1-.1-.5-.1-.6z\" opacity=\".73\" fill=\"#FFF\" /><linearGradient id=\"wikipedia_D\" gradientUnits=\"userSpaceOnUse\" x1=\"159.514\" y1=\"-70.412\" x2=\"163.999\" y2=\"-70.412\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#E2E3E4\" /><stop offset=\".505\" stop-color=\"#FFF\" /></linearGradient><path d=\"M-245.9 366.3l-.3.4c.1 0 .1 0 .2-.1 0 0 .4-.1 1.1.1.9.2 2.1-.5 2.1-.5s.3-.2.6-.5c-.4.2-1.4.8-2.1.6-1-.2-1 0-1.3 0-.3 0-.3-.1-.3-.3v-.1c.1-.3.3-.7.3-.7l-.7.4-.3.6c-.1.1-.2.5 0 .5h.2l.5-.4z\" fill=\"url(#wikipedia_D)\" /><path d=\"M-237 365c-1 .3-2 .7-2.5.6-.4-.1-.1-.8 0-1 .1-.1.2-.3.2-.4.3-.5.8-1.4.8-1.4v-.1c.1-.2.1-.5-.5-.6-.8-.1-1.6.6-1.6.6s-.5.3-.8 1.4l.1-.3s.3-1 1.1-1.3c0 0 .3-.2.8-.2s.4.4.4.4-.1.2-.6.9-.7 1.2-.7 1.2-.3.7.2 1c0 0 .2.1.9-.1s3-.8 4.4-1.1l1-.5c-.4.2-2.2.7-3.2.9z\" fill=\"#FFF\" /><path d=\"M-163.4 424.2zM-163.2 424c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM-163.3 424z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-166.1 426.7l-.2.2c-.6.7-1 1-1 1l-.2.3s.2 0 .6-.2c-.1 0-.1.1-.2.1-.2 0 .4-.5.4-.5s.6-.6 1-1.1c.4-.5.1-.5.1-.5s-.1 0-.4.1c.1-.1.3.1-.1.6z\" opacity=\".25\" fill=\"#231F20\" /><path d=\"M-163.3 424.1z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-181.1 431.2s2.2-.9 3.4-.8c0 0 .6.1-.1.7-.7.7-.9 1.2.4.8 0 0 .1 0 .2-.1-.5.1-.7.1-.7 0 .1-.2.5-.5.5-.5s.4-.4.4-.8c0 0 .1-.6-1.6-.2-.9.3-1.8.6-2.5.9z\" opacity=\".22\" fill=\"#231F20\" /><path d=\"M-181.8 431.6zM-165.9 426c-.1 0-.1 0 0 0-.1 0-.1 0 0 0z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-175.7 431.3c1.4-.5 3.9-1.9 5-2.5-1.1.6-3.6 1.9-5 2.5z\" opacity=\".28\" fill=\"#231F20\" /><path d=\"M-166.5 426.3s.1 0 0 0c.1 0 0 0 0 0zM-162.4 423.1zM-162.6 423.3s.1 0 0 0c.1 0 0 0 0 0zM-162.5 423.2zM-163.1 423.9zM-182.8 432.1zM-162.7 423.4c.1 0 .1 0 0 0 .1 0 .1 0 0 0zM-162.9 423.7zM-162.7 423.5zM-163 423.8zM-162.8 423.6zM-182.2 431.8zM-182 431.6s0 .1 0 0c0 .1 0 0 0 0zM-182.7 432.1zM-182 431.7zM-181.9 431.6zM-182 431.7zM-181.8 431.6zM-181.9 431.6zM-182.1 431.7zM-181.8 431.6zM-181.8 431.6zM-181.9 431.6zM-182.1 431.7s-.1 0 0 0c-.1 0 0 0 0 0zM-182.4 431.9c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-181.8 431.6zM-182.6 432zM-182.6 432s-.1 0 0 0c-.1 0 0 0 0 0zM-182.5 431.9c0 .1 0 .1 0 0 0 .1 0 .1 0 0zM-182.2 431.8s-.1 0 0 0zM-162.3 423zM-182.3 431.8zM-182.3 431.8c0 .1-.1.1 0 0-.1.1 0 .1 0 0zM-182.4 431.9zM-161.6 422.2zM-161.6 422.3c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-161.5 422.1s0 .1 0 0c0 .1 0 0 0 0zM-162.2 422.9zM-161.7 422.4s-.1 0 0 0c-.1 0 0 0 0 0zM-161.4 422.1zM-161.2 421.9zM-161.3 421.9zM-166.1 426.1zM-161.4 422zM-166.3 426.2c-.1 0-.1.1 0 0-.1.1-.1 0 0 0zM-205.8 441zM-205.9 441zM-205.9 441zM-206 441zM-206.1 441zM-166.1 426.1s-.1 0 0 0c-.1 0 0 0 0 0zM-166.2 426.1c0 .1 0 .1 0 0 0 .1 0 .1 0 0zM-166.3 426.2zM-166 426.1s0-.1 0 0c0-.1 0 0 0 0zM-166.3 427.5s-.1.1-.2.1c.1 0 .2 0 .2-.1zM-161.8 422.5zM-225.9 437c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-182.9 432.2c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-208.1 439.9c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-226.3 436.9zM-226.4 436.8h.1c-.1.1-.1.1-.1 0zM-226.1 436.9h-.1.1zM-162.1 422.8zM-225.9 437h.1-.1zM-162 422.7zM-161.9 422.6zM-226 437s-.1 0 0 0c-.1 0 0 0 0 0zM-182.9 432.2c.1-.1.1-.1 0 0 .1-.1.1-.1 0 0zM-207.6 439.9c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-182.9 432.2zM-207.6 439.9zM-207.5 440c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM-207.9 439.9h-.1.1zM-207.7 439.9s-.1 0 0 0c-.1 0 0 0 0 0zM-207.8 439.9s-.1 0 0 0c-.1 0 0 0 0 0zM-208 439.9c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-226.1 437zM-206.6 441zM-206.6 441zM-206.6 441zM-206.5 441zM-206.6 441zM-206.7 441zM-207.4 440zM-207.2 440s-.1 0 0 0c-.1 0 0 0 0 0zM-205 441zM-207.3 440c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-206.2 441zM-206.2 441zM-208.8 439.9h0zM-206.3 441z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-207.2 440s.2 0 .1.3.1.5.5.6c-.1 0-.1-.1-.1-.1s0-.1.1-.2 0-.4-.3-.5c-.1 0-.1 0-.3-.1z\" opacity=\".36\" fill=\"#231F20\" /><path d=\"M-206.1 441zM-206.5 441zM-206.3 441zM-206.5 441zM-206.4 441zM-206.4 441zM-207.3 440zM-225.3 437.3s0-.1 0 0zM-225.2 437.3zM-225.3 437.2zM-208.3 439.9zM-225.2 437.3zM-226.6 436.8h0zM-226.5 436.8zM-225.2 437.3zM-225.4 437.2z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-226.3 437.2c-.3-.2-.4-.5-.4-.5h.1c-.3-.1-.5-.1-.5 0s.1.2.3.2c.1.2.3.3.5.3z\" opacity=\".38\" fill=\"#231F20\" /><path d=\"M-225.3 437.2zM-225.4 437.2zM-225.2 437.3zM-225.8 437.1zM-208.5 439.9c.1 0 .1 0 0 0 .1 0 .1 0 0 0zM-208.6 439.9s.1 0 0 0c.1 0 0 0 0 0zM-225.7 437.1h-.1.1zM-225.5 437.2zM-225.6 437.1zM-225.4 437.2c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-225.5 437.1c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-184 434.4zM-183.2 434.1zM-183.2 434.1zM-183.3 434.1zM-183.3 434.1zM-183.6 434.2zM-183.6 434.3zM-183.3 434.1zM-183.7 434.3zM-183.7 434.3zM-183.6 434.3zM-205.1 441zM-183.7 434.3zM-183.2 432.4zM-183 432.3zM-183.1 432.3z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-183.1 433.8c.2.1.1.2-.1.3h.1s.8-.4.5-.6c-.3-.2-1.1-.3-.6-1-.4.3-.8.7-.5 1 0-.1.1.1.6.3z\" opacity=\".19\" fill=\"#231F20\" /><path d=\"M-183.4 434.2zM-183.4 434.2zM-183.4 434.2zM-183.5 434.2zM-183.5 434.2zM-183.2 432.4c.1 0 .1-.1 0 0 .1-.1.1 0 0 0zM-205.7 441zM-205.6 441zM-205.6 441z\" opacity=\".1\" fill=\"#231F20\" /><path d=\"M-204 439.9s.4.2 1.7.3h.5s0 .1-.1.1c.1 0 .8-.3.5-.4h-.1-.1-.1c-.1 0-.3 0-.4-.1h-.2s-.5 0-.7-.3c-.1-.2.5-.3.5-.3s1-.2 1.9-.3c0 0-2.5.3-2.8.6-1 .2-.6.4-.6.4z\" opacity=\".25\" fill=\"#231F20\" /><path d=\"M-184 434.4zM-184 434.4zM-205.2 441zM-205.3 441zM-205.4 441zM-205.4 441c-.1 0-.1 0 0 0-.1 0-.1 0 0 0zM-183.9 434.4s0-.1 0 0c0-.1 0 0 0 0zM-183.9 434.4zM-183.8 434.3zM-183.9 434.4zM-183.8 434.3zM-184 434.4zM-184 434.4zM-181.8 431.6zM-183.9 434.4zM-184 434.4z\" opacity=\".1\" fill=\"#231F20\" /><linearGradient id=\"wikipedia_E\" gradientUnits=\"userSpaceOnUse\" x1=\"160.245\" y1=\"-122.267\" x2=\"255.006\" y2=\"-99.729\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\".951\" stop-color=\"#B2B4B6\" /></linearGradient><path d=\"M-246.4 418.1l-.1-.1.1.1z\" fill=\"url(#wikipedia_E)\" /><linearGradient id=\"wikipedia_F\" gradientUnits=\"userSpaceOnUse\" x1=\"162.699\" y1=\"-132.563\" x2=\"257.822\" y2=\"-109.938\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\".951\" stop-color=\"#B2B4B6\" /></linearGradient><path d=\"M-163.6 410l.7.1c2-1.6 3.9-3.6 3.9-3.6s1.3-1.3 1.9-2.4c.2-.4.3-.4.3-.2 0-.1.1-.5 0-.7-.1-.2-.4.3-.8.9-.1 0-2.2 2.9-6 5.9-3.7 2.9-4.7 3.7-8 5.6 0 0-2.3 1-3.9.7-1.2-.3 0-1.5.3-2.7.3-1.1.1-1.6-.2-1.8-.3-.2-.9-.4-2.1-.1 0 0-4.7 1.3-6.8 3.3-1.9 1.9.5 2.6 1 2.9 0 0 .8.3.7.7-.1.3-.5.6-.7.8-.2.2-3.3 2-8.3 2.8-4 .6-3.3.3-7.1.7-3.9.4-5 .7-8.1 1.5-3.1.7-4.9 1.5-5.4 2.3-.3.7.5 1.1 1 1.4.5.3 1.4.8 1.1 1.3-.3.5-1.6 1.3-4.9 1.4-3.2.1-4.6-.3-5.2-1-.5-.6-.1-1.3.1-1.9 0 0 .4-.8.2-1.2-.2-.4-.7-.5-1.3-.6-.5-.1-3.2-.2-5.3-.3-2.4-.1-5.2-.2-8.6-.9 0 0-2.2-.4-3.7-1.3-.1-.1-.2-.1-.3-.2-.1-.1-.2-.1-.3-.2-.4-.4 0-.7-.2-1.2-.1-.4-.4-.9-.9-1.5l-.7-.7c-.1-.1-.2-.1-.3-.2-1.3-1-1.4-1.1-2-1.2-.5 0-.2.9-.1 1.2 0 .1.1.3.2.5-.2-.4-.3-.7-.3-.9.1-.3.3-.3.3-.3s.1-.1.6.3 1.5 1.1 2 1.7c.5.6.5 1.2.5 1.2s-.1.6.5 1.2 1.7 1.7 5.9 2.3h.1l.2-.5.6.7c3.6.5 5.5.6 5.5.6s4.7.2 6 .2c1.3 0 1 .7 1 .7s-.1.4-.2.6c-.2.3-.5 1.4-.1 1.9 0 0 .6 1.4 4.4 1.5 0 0 3.3.3 5.6-.7s.2-2.3.2-2.3-.8-.5-1.1-.7c-.3-.2-.2-.5-.1-.6.1-.2.3-.4.6-.5.3-.1 1.2-.7 5.4-1.7 4.1-1.1 6.6-1.2 6.6-1.2h.1l.3-.7.8.6c.7-.1 1.7-.1 2.5-.2 1.7-.1 4.3-.5 5.9-.8 1.5-.3 3.9-1.1 5.6-2 1.7-.9 1.8-1.5 1.8-1.5s.3-.5-.4-1-1-.4-1.7-1c-.6-.6.6-1.6.6-1.6s.6-.9 4-2.2c3.4-1.3 4-.9 4.2-.7.2.1.2.6.1.9l-.7 2.1c-.2.6-.3 1.4.6 1.6.9.2 2.2 0 3.4-.4 2.9-1 3.8-2.3 8.5-5.8v-.9z\" opacity=\".83\" fill=\"url(#wikipedia_F)\" /><linearGradient id=\"wikipedia_G\" gradientUnits=\"userSpaceOnUse\" x1=\"161.474\" y1=\"-127.42\" x2=\"256.587\" y2=\"-104.797\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\".951\" stop-color=\"#B2B4B6\" /></linearGradient><path d=\"M-153.1 397.6c-.6 1.2-1.2 2.6-1.4 3.5 0 .2-.1.3-.1.3s-.1.7-.1 1c0 .2.1.3.1.4 0 .1 0 .1.1.1v.1c0 .1 0 .6-.3 1.2-.1.2-.1.4-.2.5 0 .1-.1.1-.1.1-.5.8-1.1 1.5-1.6 1.5-.3 0-.5-.1-.6-.4 0 .4.1.7.3 1 .4.4 1.6-.8 1.6-.8s.7-.8 1-2.1c.4-1.9.2-2.2.2-2.2s-.2-.4-.1-.9c.2-.5 1.2-3 2-4l.5-.6-.2-.5c-.1.1-.3.3-.4.5-.2.5-.4.8-.7 1.3z\" fill=\"url(#wikipedia_G)\" /><linearGradient id=\"wikipedia_H\" gradientUnits=\"userSpaceOnUse\" x1=\"160.775\" y1=\"-124.479\" x2=\"255.87\" y2=\"-101.862\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\".951\" stop-color=\"#B2B4B6\" /></linearGradient><path d=\"M-243.4 420.8c-.1-.1-.3-.2-.5-.4-.1-.1-.6-.6-1.2-1.1-.2-.2-.4-.4-.6-.5-.3-.3-.5-.5-.7-.6l.1.4s0 .1.1.1c.2.3.9 1.3 2.2 2.3 1.5 1.2 1.6.7 1.6.7s.1-.4-.3-.8c-.1-.1-.1-.2-.2-.3-.1-.1.9 1.4-.5.2z\" fill=\"url(#wikipedia_H)\" /><linearGradient id=\"wikipedia_I\" gradientUnits=\"userSpaceOnUse\" x1=\"160.915\" y1=\"-125.065\" x2=\"256.04\" y2=\"-102.44\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\".951\" stop-color=\"#B2B4B6\" /></linearGradient><path d=\"M-243.3 420c.1.2.2.4.3.5 0 0-.2-.2-.3-.5z\" fill=\"url(#wikipedia_I)\" /><linearGradient id=\"wikipedia_J\" gradientUnits=\"userSpaceOnUse\" x1=\"162.103\" y1=\"-130.065\" x2=\"257.229\" y2=\"-107.44\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#EDEDEE\" /><stop offset=\".418\" stop-color=\"#FFF\" /><stop offset=\".626\" stop-color=\"#F8F9F9\" /><stop offset=\".951\" stop-color=\"#B2B4B6\" /></linearGradient><path d=\"M-157.1 405s.2-.8.2-1.1-.5 1.4-.3 2.2c0-.5.1-1.1.1-1.1z\" fill=\"url(#wikipedia_J)\" /><path d=\"M-190.7 354.4l.7.1c1.4-.4 2.6-.8 2.6-.8s1.3-.4 1.9-.6c.6-.2 1.1-.3 1.7-.4.6-.1 1.3-.1 1.7-.1.4 0 .5.1.5.1s.2.1.2.3c.1.1.7 1.9 3 2 2.2.1 2.3-1.1 2.1-1.5-.2-.4-.9-.9-.9-.9s-.9-.6-1.1-.8c-.2-.3 0-.4.1-.4s2.4-.5 2.7-.6l-.6-.2s-.1.1-.8.3c-.7.2-1.2.2-1.7.3-.5.1-.5.2-.5.2l-.1.1c0 .1-.1.3.4.6.5.4 1.2.8 1.4 1 .3.3.6.8 0 1.1-.3.2-.5.2-.8.3h-.6-.2c-.5 0-.7-.1-1.1-.3-.4-.2-.8-.7-.9-1.1-.2-.4-.5-.7-.5-.7-.6-.3-1.7-.3-2.8-.1-1.1.2-2.7.7-2.9.8-.3.1-1.6.6-2.3.7-.7.2-1.2.4-1.6.5-.4.1-3.4 1-4.6 1.3-1.1.3-1.8.5-1.8.5-1.7.2-2.2-.1-2.2-.1-.3-.1-.3-.5-.3-.5v-1.1s0-.4-.4-.6c-.3-.2-.8-.3-1.6-.3s-1.7 0-2.1.1c-.4.1-1.2.3-1.8 1-.6.6-.5 1.1-.5 1.1v.2c.2.2.4.5.9.7 1 .5-1.1 1.3-1.1 1.3-.5.2-1.2.5-2.2.8-2.2.6-3.7.8-3.7.8l.7.3s5.5-1 7.1-2.6c0 0 .6-.3 0-.9-.6-.6-.9-.8-.9-.8s-.4-.2 0-.8c.4-.5.9-.8 1.4-.9.4-.1 1.8-.2 2.9-.1 0 0 .5 0 .5.4s-.1.9-.1 1c0 .2 0 .5.4.8.4.3 1.1.5 1.1.5s1.3.2 2.8-.2c1.6-.4 3.6-1.1 5.4-1.6l.5-.2z\" opacity=\".1\" fill=\"#232323\" /><linearGradient id=\"wikipedia_K\" gradientUnits=\"userSpaceOnUse\" x1=\"158.615\" y1=\"-89.399\" x2=\"247.586\" y2=\"-68.884\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".654\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#CBCCCE\" /></linearGradient><path d=\"M-162.4 363l.3.5c-1.1.5-4 1.3-4.3 1.4-.3.1-.2.2-.2.2 0 .1 1 1.1 1 1.1 1.2 1.2.5 2.3.5 2.3s-.9 1.3-2.8 1.1c-2-.2-2.6-1.8-2.7-2-.1-.3-.2-.8-.2-1.1 0-.3-.3-.3-.3-.3-1.1 0-2.9 1.1-2.9 1.1-.8.5-1.7 1.1-3.5 2-.9.4-1.7.7-2.3.9l-1-.2.1.5h-.1s-2.3.8-4.5 1.6c-2.3.7-3.7.8-3.7.8s-1.3.1-2.3-.3c-.9-.4-1-.9-.9-1.4 0-.5.5-1.4.6-2 .1-.6-.7-.6-.7-.6s-2-.2-3.7.3c-1.7.5-2.5 1.2-2.5 1.2-.9.5-.9 1-.9 1s0 .5.6.9 1.1.5 1.7.7c.7.1.8.3.8.3 1.1.9.4 1.8 0 2.4-.6 1.1-3.7 1.7-3.7 1.7-3.3.8-5.1 1.1-7.8 1.5l-.9-.5-.3.6c-7.1.9-10.1 1.9-11.1 2.1-1 .3-1.3.8-1.4.9-.1.1.1.2.1.2.4.1.6.4.6.4s1.4 1.7 0 3.1c-1.4 1.4-2.8 1.7-2.8 1.7s-2.2.7-4.1.3c-1.9-.4-2.4-1.9-2.4-2.4s.2-1.1.7-1.7c.5-.6.7-.7.7-.7s.4-.3.4-.4c.1-.2-.4-.2-.4-.2-1-.1-3.5-.1-5.8.1-1.4.1-2.8.4-3.6.5l-.2-.5-.5.6-3.1.5c-1.5.2-2.6 0-2.6 0s-1.3-.4-1.5-1.3c-.1-.9.4-1.9.5-2.2.1-.3.5-.9.5-.9s.1-.1.1-.3c0-.2-.2-.5-.2-.5s-.2-.4-.9-.4-.9.1-1.1.4l-.1.1c0-.1 0-.1.1-.2.2-.3.7-.7 1.4-.7s1 .2 1 .2c.7.8.1 1.8-.4 2.8-.1.1-.2.3-.2.5 0 .1-.1.2-.1.2-.4 1.1.3 1.6.7 1.7.4.1 1.1.6 4.3 0 3.1-.6 3.6-.7 3.6-.7s6.1-1.1 9-.4c0 0 1.3.4.3 1.3-1 1-1.7 1.6-1.5 2.4.2.8 1.3 1.9 3.6 1.6 0 0 .8-.1 1.1-.2 1.7-.3 2.9-1.3 2.9-1.3s1-.7.8-1.6c-.2-.9-1-1.2-1-1.2s-.7-.4-.1-1.2c0 0 .1-.7 2.6-1.3 2.4-.6 6.8-1.5 10.6-2 3.5-.4 9.7-1.6 10.9-2.1 1.2-.5 1.5-1.4 1.5-1.7 0-.3.1-.8-1.1-1.1-1.2-.3-1.8-.7-1.9-.8-.2-.1-.5-.5-.5-1.3s1.6-1.7 3.4-2.4c1.8-.6 3.9-.3 3.9-.3 1.9.2.9 2 .9 2-.1.3-.9 1.8.5 2.2 1.5.4 4.2-.3 5.2-.7.8-.3 3.1-1.1 4.7-1.6.4-.1.7-.2.9-.3 1.7-.6 3-1.2 3.8-1.7.8-.5 2.1-1.3 2.1-1.3s1.4-.7 1.8-.8c.5-.1 1.6-.3 1.8.8.2 1.1.6 1.9 1.4 2.3.8.4 2.1.5 3.2-.2 1.2-.8.4-1.9.4-1.9s0-.1-.1-.1c-.2-.3-.4-.5-.5-.6-.4-.5-.7-.8-.7-.8-.3-.4.1-.7.4-.8.4-.1 2.4-.8 2.4-.8 1.2-.4 1.6-.6 2.1-1 .4-.4-.2-1.3-.2-1.4l.6.3c.1.2.3.4.4.5 0 0 .2.5.1.8-.1.1-.3.3-.5.4l-.8-.6z\" fill=\"url(#wikipedia_K)\" /><linearGradient id=\"wikipedia_L\" gradientUnits=\"userSpaceOnUse\" x1=\"136.042\" y1=\"-39.679\" x2=\"136.042\" y2=\"-39.679\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#FFF\" /><stop offset=\".654\" stop-color=\"#FFF\" /><stop offset=\"1\" stop-color=\"#CBCCCE\" /></linearGradient><path d=\"M-196.5 442.3c-.1-.1-.1-.1 0 0 0-.1.1-.1.1-.2 0 0-1.2-.1-2.1.1-1 .1-1.9.3-1.9.3l.3.1s.1-.1 1-.2 1.3-.1 1.3-.1.8-.1 1-.1c.2 0 .1.1.1.1s-.1.1.4.1c0 0 .7 0 1.3-.2-.2.1-1.3.3-1.5.1zM-199.5 442.7s.1.3-2.9.4c0 0 1.8.1 3.3-.2 1.1-.2-.4-.2-.4-.2zM-240.9 359.9v.1l.1.1s.3-.5.2-.4c0 0-.1.2-.2.2l-.1.1v-.1zM-243.4 362.5s-.4.5 0 .5l.5-.5s.1-.2.1-.4c.1 0-.4.2-.6.4z\" opacity=\".1\" fill=\"#232323\" /><path d=\"M-232.9 373.7c1.2.1 1.5-.1 1.5-.2.3 0 1.5 0 2.9-.2 1.7-.2 3.6-.9 3.6-.9s1.6-.6 2.1-1.2c0 0-.7-.6-1.1-1.1 0 0-.3-.6 0-1 .3-.5.8-1 2.3-1.6 1.5-.6 2.4-.5 2.4-.5s.6 0 1 .4c.4.5.6 1 .6 1s0 .4-.1.6c-.1.3-.2.3-.2.3h.4c.3 0 1.2-.1 2.7-.5 1.5-.4 3.4-1 3.4-1s4.9-1.6 5.4-1.7c.5-.1 1.4-.4 1.4-.4v.1s.4.7.4 1.3v-.1s0 .3-.7.8-1.2.5-1.7.4c-.5 0-.7-.1-.8 0h-.7c-.8.1-1.2.4-1.2.4-1.8 1.1.7 9.3.7 9.3-3.7.5-8.1 1.4-10.6 2-2.4.6-2.6 1.3-2.6 1.3-.5.8.1 1.2.1 1.2s.8.3 1 1.2c.2.9-.8 1.6-.8 1.6s-1.2 1-2.9 1.3c-1.7.3-2.4.4-3.4-.5-.9-.7-.3-1.9.3-2.3.6-.4.9-.9 1-1.1s0-.4 0-.4l-.6-.5c-2-1.3-9.9.1-9.9.1-.2-1.2-.4-1.2-.3-3.1.1-1.2.3-1.8.3-1.8l.1-.2s.4-1.4 1.1-2.4c0 0 .6-.2 1.4-.3l1.5-.3z\" fill=\"#6B6B6B\" /><linearGradient id=\"wikipedia_M\" gradientUnits=\"userSpaceOnUse\" x1=\"-22.768\" y1=\"1549.871\" x2=\"9.619\" y2=\"1549.871\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#696969\" /><stop offset=\".37\" stop-color=\"#2E2E2E\" /><stop offset=\".455\" stop-color=\"#424242\" /><stop offset=\".601\" stop-color=\"#303030\" /><stop offset=\".695\" stop-color=\"#4A4A4A\" /><stop offset=\"1\" stop-color=\"#666\" /></linearGradient><path d=\"M-204.1 366.9s-4.1 1.3-3.9 1.3c0 0-.4.1-.7.2-.3.1-.5.2-.5.2s-3.3 1.2-6.4 1.8c-3.1.6-3-.4-2.7-.8.2-.4.8-1.1-.2-1.3-1-.1-1.8.3-2.2.4-.4.2-3.2 1.4-1.3 2.3 0 0 1.4.6-.4 1.8 0 0-1.8 1.2-5.4 1.8 0 0-.6.1-1.9.1-1.3 0-2.6.2-4.1.7-1.4.4-2 .6-2.7 1.1l.2-.5.2-.5c1.1-.5 3.7-1.3 5.7-1.4 2-.1 2.9-.2 4.7-.6 2.1-.5 2.7-1 2.9-1.2.2-.1.8-.5.5-.6-.4-.2-.9-.7-.9-.7-.2-.3-.4-.4-.2-1 .4-1 2.2-1.6 2.2-1.6s1-.5 2.3-.5c1.3 0 1.3.8 1.3.8s.1.3-.3.8c0 0-.5.6 0 .7.5.1 1.6.2 5.5-1s8.1-2.6 8.1-2.6.2.1.2.3z\" opacity=\".45\" fill=\"url(#wikipedia_M)\" /><linearGradient id=\"wikipedia_N\" gradientUnits=\"userSpaceOnUse\" x1=\"-22.377\" y1=\"1549.063\" x2=\"9.494\" y2=\"1549.063\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#525252\" /><stop offset=\".186\" stop-color=\"#333\" /><stop offset=\".354\" stop-color=\"#AEAEAE\" /><stop offset=\".42\" stop-color=\"#ADADAD\" /><stop offset=\".428\" stop-color=\"#9D9D9D\" /><stop offset=\".443\" stop-color=\"#818181\" /><stop offset=\".461\" stop-color=\"#6A6A6A\" /><stop offset=\".481\" stop-color=\"#585858\" /><stop offset=\".506\" stop-color=\"#4C4C4C\" /><stop offset=\".539\" stop-color=\"#444\" /><stop offset=\".617\" stop-color=\"#424242\" /><stop offset=\".668\" stop-color=\"#454545\" /><stop offset=\"1\" stop-color=\"#BDBDBD\" /></linearGradient><path d=\"M-222.9 371.3c-.5.6-2.1 1.2-2.1 1.2s-1.9.7-3.6.9c-1.6.2-2.8.2-2.8.2h-.1c-.2.1-.5.2-.7.2h-.8s-2.2.4-2.6.6c0 0-.3.4-.3.5-.1.1-.3.6-.3.6 1.1-.5 3.7-1.3 5.7-1.4 2-.1 2.9-.2 4.7-.6 2.1-.5 2.7-1 2.9-1.2.2-.1.8-.5.5-.6-.4-.2-.9-.7-.9-.7-.2-.3-.4-.4-.2-1 .4-1 2.2-1.6 2.2-1.6s1-.5 2.3-.5c1.3 0 1.3.8 1.3.8s.1.3-.3.8c0 0-.5.6 0 .7.5.1 1.6.2 5.5-1s8.1-2.6 8.1-2.6c-.1-.3-.3-.7-.3-.7s-.8.3-1.4.4c-.5.1-5.4 1.7-5.4 1.7s-1.9.6-3.4 1-2.3.5-2.7.5h-.4l.2-.3c.1-.2.1-.6.1-.6s-.2-.5-.6-1c-.4-.5-1-.5-1-.5s-.8-.1-2.4.5c-1.5.6-2 1.2-2.3 1.6-.3.5 0 1 0 1 .5.5 1.2 1.1 1.1 1.1\" fill=\"url(#wikipedia_N)\" /><linearGradient id=\"wikipedia_O\" gradientUnits=\"userSpaceOnUse\" x1=\"-17.084\" y1=\"1559.333\" x2=\"-18.113\" y2=\"1552.527\" gradientTransform=\"translate(-213.764 -1178.502)\"><stop offset=\"0\" stop-color=\"#969696\" /><stop offset=\"1\" /></linearGradient><path d=\"M-232.4 381.2s-.1-.3.2-.9c.2-.6.9-.6 1.4-.5.5.1.8.3 1.5-.1.6-.4.5-1.6 0-2.9-.4-1.3-.3-2.1-.3-2.1l-.6-.6-.2.7c0 1.3.7 3.2.8 3.8.2.5.3.8-.7.5-1-.3-1.5.1-1.5.1-1.3.9-1.1 2.2-1.1 2.2l.5-.2z\" opacity=\".2\" fill=\"url(#wikipedia_O)\" /><path d=\"M-226.5 386.6c-.3-1.8-.9-2.7-.9-2.7-.3.2-.5.7-.5.7s.2.2.5 1.6c0 0 .1.1.4.3.3.1.5.1.5.1zM-220.8 382.9s-.8.9-.4 2.3c0 0 .5-.4.6-.7 0 0-.1-.5.1-1 0 0-.1-.4-.3-.6z\" opacity=\".5\" fill=\"#141414\" /><linearGradient id=\"wikipedia_P\" gradientUnits=\"userSpaceOnUse\" x1=\"174.78\" y1=\"-86.053\" x2=\"175.53\" y2=\"-78.469\" gradientTransform=\"matrix(1 0 0 -1 -406.164 295.68)\"><stop offset=\"0\" stop-color=\"#333\" /><stop offset=\".431\" /><stop offset=\"1\" stop-color=\"#2E2E2E\" /></linearGradient><path d=\"M-232.8 381.3c0-1.3.5-1.5.9-1.8.4-.3 1.3 0 1.3 0s.7.2 1-.1c.4-.3 0-1.5-.2-2.1-.2-.7-.4-1.6-.4-2.3 0-.5-.1-.7-.1-.8l-.2.6c0 1.3.7 3.2.8 3.8.2.5.3.8-.7.5-1-.3-1.5.1-1.5.1-1.3.9-1.1 2.2-1.1 2.2l.2-.1z\" opacity=\".18\" fill=\"url(#wikipedia_P)\" /><path d=\"M-227.8 384.3c0 .1.4.6.7 2.1.3.2.5.2.5.2-.3-1.8-.9-2.7-.9-2.7 0 .1-.2.2-.3.4zM-220.8 382.9s-.8.9-.4 2.3c0 0 .1-.1.3-.2v-.1c-.3-1 .3-1.8.3-1.8-.1 0-.2-.1-.2-.2z\" opacity=\".3\" fill=\"#505050\" /><path d=\"M-236.8 358.2h.1c-.2.5-.8 1.1-1.1 1.6-.2.2-.3.6-.5.8.1.1.8-.1.9-.2h.1c0 .1-.5 1-.6 1.1.2 0 .5-.1.6-.2.4-.3.5-.9.8-1.3v-.2c-.2 0-.7 0-.9.2.1-.5.9-1.3 1.1-1.7.5-.6.9-1.3 1.3-1.9.2-.3.6-.6.8-.9.3-.4.6-.9.9-1.1v-.1h-.2c-.2.1-.7.2-.9.4 0 .1 0 .1.1.2-.1.4-.6.7-.8 1-.4.5-.8 1-1.1 1.5-.1.2-.2.4-.4.6-.2.2-.9.2-1.2.4h-.1c.1-.3.9-1.4 1.1-1.6-.4.1-.7.3-1 .5 0 .1 0 .1.1.1-.1.2-.4.4-.5.6-.2.3-.3.6-.5.9v.1c.6-.4 1.7-.7 1.9-.8zm34.7 5.3c.2.1.4.1.6.2h.4c0-.7-.4-.9-.6-1.3-.1-.2-.2-.5-.4-.7.1-.2.7-.3 1-.4.6-.2 1.4-.4 2-.6.3-.1.7-.1.9-.2.1 0 .2 0 .3.1.1.2.3 1.7.2 2.1-.4 1.7-.9 3-1.9 4 .4-.1.6-.4.8-.6 1.1-.8 1.8-2 2.1-3.4.2-.9-.1-1.7.2-2.5-.1-.2-1.1-.6-1.4-.6-.2.2-.4.4-.6.5-.4.2-.8.1-1.1.3-.3 0-.5-.6-.3-.8v-.2c-.2-.2-.8-.2-1.3-.2-.1.1-.3.1-.3.4v.1h.2c.4 0 .4.6.7.8v.1c-.2.1-1.3.5-1.5.5-.2 0-.4-.1-.6-.1-.3 0-.6.2-.8.3.1.2.4.1.6.3.3.6.5 1.3.8 1.9zm7.9-.5c.2.1.2.3.3.5l.6 1.2v.3c.1.3.4.3.6.4.2 0 .2-.1.3-.1-.1-.8-.5-1.4-.8-2-.1-.2-.2-.5-.2-.6 0-.1.1-.2 0-.3l-.2-.2c-.1 0 0 0 0-.1.1-.1.2-.3.3-.4.1-.3.1-.6.4-.8 0-.4-.6-.5-1.1-.4-.1 0-.2.1-.2.1l.2.2c.1 1.2-.7 2.2-1.2 2.9-.2.3-.6.5-.8.8.4 0 1.5-1.1 1.8-1.5zm-47.4 9.8h-.1c-.3.1-.8 1.4-1.3 1.1-.3 0-.3-.1-.5-.2 0-.4.7-1.1.9-1.2 0-.6.2-1.3.1-1.8h-.1c-.1 0-.3.2-.4.3l-.9.9c-.3 0-1.4 0-1.6.1h-.1c.1-.3.9-1.1.6-1.5v-.1c-.7 0-1.6 1.3-1.8 1.8-.1.3-.1.6-.3.8.5-.1 1.1-.1 1.6-.2.2 0 .5.1.6 0h.6c.1-.1.2-.2.3-.4.3-.3.8-.7 1-1.1h.1v.6c-.3.3-.8.7-.9 1.1v.3c-.2.9.2 1.3 1 1.3.5-.4 1.3-.8 1.2-1.8 0 0 0 .1 0 0zm-4.6-.7h-.2c.1-.4.5-.9 1.1-1v.2c-.2.2-.4.5-.6.7-.1.1-.2.1-.3.1zm85.2.2c-.2-.4-.3-.7-.5-1.1-.3-.6-.6-1.4-1.5-1.4-.2.2-.4.3-.6.6-.8 1.8.8 3.7 1.5 4.7.3.3.6.7.9.9-.1 1.4-1.3 1.8-2.5 1.3-.9-.4-1.6-1.2-2.2-2l-.7-.7c-.2-.2-.3-.5-.5-.7h-.1c.1.4.4.8.5 1.2.7 1.5 1.5 2.6 2.8 3.5.6.4 1.6 1.1 2.5.5 1.8-1.2 1.1-5.2.4-6.8zm-.1 1.9c-.1.1-.5-.4-.6-.5-.4-.4-1.3-1.2-.8-2h.2c.4.4.7.8 1 1.3.1.4.1.9.2 1.2 0 0 .1 0 0 0zm-26.2 7.9v-.4c.2-.8.1-1.8.3-2.6.2-1.1-.1-2.1 1-2.4 0-.1.1-.1 0-.2v-.1h-.1c-.3.2-1.1.4-1.5.5-.3.1-.6 0-.9.2h-.1v.2c.5.1.9 0 1.1.4.1.3.1 1.2 0 1.5-.3 1.2-.1 2.5-.4 3.6-.1.4 0 1.2-.2 1.5v.1c-.2-.1-.4-.4-.6-.6-.4-.5-.9-.8-1.2-1.3-.2-.3-.4-.6-.7-.8 0-.8.3-1.6.4-2.3.1-.5.1-1 .4-1.4.1-.2.5-.4.8-.5v-.2-.1c-.5.1-1 .3-1.5.5-.5.1-.9.1-1.3.3V378.3c1.4-.1 1.2.7.9 1.7-.1.3 0 .8-.2 1v.1c-.3-.4-.7-.9-1.1-1.2l-.4-.4c-.1-.1-.2-.3-.3-.4 0-.4.4-.5.7-.7 0-.2-.1-.2-.1-.3-1 .2-1.9.7-3.1.8V379.2c.2 0 .6-.1.8 0 .4.1.8.6 1.1 1 .4.5 1 .9 1.4 1.5.2.3.4.6.7.8 0 .7-.2 1.4-.4 2.1-.1.3 0 .7-.2 1v.1c-.4-.7-1.1-1.3-1.6-1.9-.9-1.2-1.9-2.3-2.9-3.5 0-.2 0-.3.1-.4.1-.2.4-.4.6-.5v-.2-.1c-.8.1-1.5.5-2.3.7-.4.1-.9.1-1.2.3h-.1c0 .2.1.2.1.3.3 0 .6-.1.9 0 .8.2 1.4 1.1 1.8 1.7.2.3.5.5.7.8.8 1.1 1.8 2.1 2.6 3.3.3.4.8.8 1.1 1.3.2 0 .2 0 .3-.1.2-.9.3-1.9.6-2.8.1-.4.3-.9.3-1.4.3.1.6.6.8.9.6.8 1.5 1.5 2.1 2.4.2 0 .2 0 .3-.1.2-1.6.3-2.9.5-4.3zm-62.4 6.8c0 2.5-.1 6.3 1.8 6.8.7.2 1.1-.3 1.3-.6.8-1.2.6-3.4-.2-4.4-.3 0-.8.8-1 1.1h-.1c-.1 0-.1-.1-.2-.1-.1-.9.1-1.8.2-2.7 1 .1 1.9.7 3 .8 0-.2 0-.4.1-.6v-.2c-.1-.1-.9-.3-1.2-.3.1-1.2-.2-2.1-1-2.4-.4-.1-.9-.2-1.3-.2-.2-.1-.3-.3-.5-.4-.1-.4-.1-.8.2-1 0-.1 0-.2-.1-.2-.1.2-.2.5-.3.8-.2 1 .3 1.8.9 2 .4.1.8.1 1.2.2.3.1.5.4.7.6 0 .5-.5.6-.9.4-.6-.2-1.3-.4-2-.6-.2-.1-.3-.2-.6-.2 0 .3-.1.5-.1.8.6.2 1.1.3 1.7.5 0 1.4-.6 3.1.1 4.2.1 0 .1 0 .2.1.8-.1.9-.7 1.3-1.1.3.8.1 2.3-.7 2.5-.3.2-.8-.1-1-.2-.6-.6-.8-1.5-1-2.5-.1-.3 0-1-.1-1.3-.2-.8-.1-1.6-.4-1.8zm95 6.6c-.1-.7.1-1.5-.1-2.1v-.6c-.1-.5-.1-1.1-.2-1.5-.2-.9 0-1.9-.4-2.7-.2 0-.4-.1-.7-.1-.1.1-.2.2-.2.3.1.4.5.4.7.8v.5c.1.6.1 1.3.2 1.9v.5c.1.3.2 1 .1 1.3-.1.4-.6.8-.9 1.1-.8.8-1.6 1.7-3 1.9v.1c0 .5.5.4.8.6h.2c.1-.1.2-.2.3-.4.2-.3.6-.4.8-.7v3.7h.1c.3-1.2.3-2.6.2-4 .5-.5.9-1.2 1.4-1.7v-.1 3.8c0 .4-.1 1.4 0 1.5v.2h.1c.1-.4.1-1 .2-1.5v-.7c.6-.5.5-1.5.4-2.1zm-71 2.6c-.3-.1-.8-.5-1-.8-.6-.9-1.3-2.9-.9-4.5.4-1.3 1.2-2.1 2.5-2.5.7-.2 1.4.1 1.8.3 1.2.6 1.7 1.5 2.1 3 .5 1.9-.1 3.6-1.4 4.2.1.8.2 1.5.2 2.3.4 0 .9-.1 1.2-.2.6-.2 1.3-.2 1.9-.3.4-.1 1.1 0 1.4-.2.1-.2-.2-1.4-.3-1.6-.1-.2 0-.5-.1-.6v-.2h-.3c0 1.2-.8 1-1.8 1.3-.5.1-1 .3-1.6.3v-.5c0-.1.7-.4.9-.5.5-.3.9-.8 1.2-1.3.2-.3.4-.8.5-1.1.1-.5.2-1.2 0-1.7-.1-.3 0-.6-.2-.9-.4-1.2-1.3-2.1-2.5-2.5-.5-.2-1.1-.2-1.7-.4-.5-.1-1.5.1-1.9.2-1.9.6-3.2 1.5-3.8 3.3-.2.7-.2 1.7 0 2.4.5 1.6 1.8 3 3.7 3 .1.1.1.3.1.4v.1c-.2.1-.4.1-.6.1-.5.1-2 .5-2.3.2-.2-.1-.4-.4-.4-.6H-229.3c.1.8.3 1.5.4 2.3 1.4-.2 2.8-.5 4.2-.7-.2-.7-.4-1.5-.6-2.2.2-.1-.2 0-.4-.1zm67.7-4.4c.1.2.3.6.4.7.1.1.1 0 .2.1 1.3.1 1.8-2.1 1.3-3.4-.1-.2-.5-.9-.9-.6h-.1v-.1c0-.2 0-.3-.1-.4h-.2-.1c0 .2.1.2.1.5-.5.6-1.1 2-.6 3.2zm.4-2.1c.1-.2.3-.4.4-.5h.1c.3 0 .4.1.6.2.3.7.3 2-.2 2.5-.1.1-.2.1-.3.2-.8-.2-.9-1.7-.6-2.4zm-18.3 15.6c-.4-.3-.5-1.7-.7-2.3-.3-1.2-.5-2.5-.8-3.7-.2-.8-.5-1.6-.4-2.6.1-.1.2-.3.4-.4.2-.2.6-.2.8-.4v-.2c-.5.1-.9.4-1.3.5-.8.3-1.6.5-2.4.9-.3.1-.5.3-.8.3v.2h.1s1-.4 1.3-.1c.4.1.3.6.5.9-.1.6-.7 1.6-.9 2.1-.6 1.3-1.2 2.6-1.8 3.8-.2.5-.5 1.3-.9 1.7-.2-.3-.2-1.1-.3-1.5-.4-1.2-.6-2.6-1-3.8-.1-.2-.3-1.3-.2-1.5.1-.5.8-.8 1.3-1v-.3c-.7.1-1.4.5-2.1.7-.6.2-1.1.3-1.7.5-.3.1-.6.3-1 .3 0 .1 0 .2.1.2.2.1 1-.4 1.4-.1.6.2.6 1.1.8 1.7.5 1.6.7 3.3 1.2 4.9.1.4.4 1.7.1 2-.1.4-.9.6-1.3.8v.2c.6-.1 1.2-.4 1.7-.6 1.1-.4 2.1-.6 3.1-1v-.3c-.4.1-.8.2-1.4.2-.1-.1-.2-.1-.2-.2-.1-.2-.1-.4-.2-.6 0-.5.7-1.4.9-1.9.7-1.3 1.3-2.6 1.9-4 .2-.5.8-1.3.8-1.9.2.1.1.4.2.7.1.5.2 1 .4 1.5.3 1 .4 2.1.7 3.1.1.4.3 1 .1 1.5-.2.4-.8.7-1.3.8 0 .1 0 .2.1.2 0 0 .9-.3 1.1-.4 1.1-.5 2.2-1 3.4-1.4v-.3c-.7.6-1.3 1-1.7.8zm18.7 3.3c-.1.1-.4.2-.5.3-.5.4-1 1-1.4 1.5-.3.4-.5.8-.8 1.3-.1.2-.1.4-.3.6v.1c.3-.1.5-.3.8-.4.7-.4 1.2-.8 1.9-1.2.3-.2.5-.6.8-.8 0-.5.1-.8-.1-1.2-.1-.2-.2-.2-.4-.2zm-.5 1.4c-.2.2-.5.4-.7.6-.2.1-.5.2-.6.4.1-.4.8-1.1 1.1-1.3l.6-.3h.2l.1.1c-.2.3-.5.4-.7.5zm-85.5 1.6c-.2-.5-.3-1-.4-1.5-.1-.2-.1-.5-.2-.7v-.1c.3.1.7.1.9.2h.2c0-.2-.1-.6-.2-.7-.1-.2-.9-.2-1.1-.4-.3-.2-.6-.9-.8-1.3-.6-.9-1.3-1.8-2.1-2.5-.4-.3-.8-.7-1.5-.7-.1.1-.2.1-.3.2-.2.8.1 2.2.6 2.6v.1c-.2-.1-.4-.2-.5-.3 0 .2.1.5.2.7 0 .2.4.4.6.4.2 1 .6 2.1.9 3 .3.8.4 1.5.8 2.2.2.4.5.6.6 1h.1c-.1-.3-.3-.6-.4-.9-.4-.9-.7-1.8-1-2.7-.2-.6-.3-1.1-.5-1.7-.1-.2 0-.4-.2-.6.3 0 .4.2.6.3.5.2.9.3 1.4.5.4.1.8.3 1.2.4 0 .4.3 1.3.4 1.5v.1c-.6-.4-.6-1-1.7-.9l-.2.2c-.1.2-.1.6 0 .9.3.6 1.1 2 1.7 2.2.3.2.6 0 .8-.2.2.1.3.7.4 1 .2.6.5 1.3 1 1.5h.1c-.1-.4-.3-.9-.5-1.2-.3-.9-.6-1.8-.9-2.6zm-1.1-3.2c-.4 0-.8-.2-1.1-.3-.9-.3-1.7-.6-2.5-1-.1-.4-.8-1.6-.4-2.1l.1-.1h.1c1.2.1 2.4 1.6 3 2.5.3.2.5.7.8 1zm.6 3.4c-.1.1-.2.3-.4.4-.1.1-.2.1-.3.2-.7 0-.7-.7-1-1.1 0-.4.2-.4.3-.6h.2c.6 0 .8.3 1.1.5.1.2.1.3.1.6zm23.3 6.1c-.2-.3-.5-.3-.7-.6h-.1c.5-.3 1.1-.6 1.6-.8.1.2.8.8 1 .7h.1v-.7c-.5-.5-1.2-.9-2.1-1.1.1.3.4.5.6.7v.1c-.5.1-.9.3-1.3.4-.3.1-.6.1-.9.2h-.1c.2-.5.7-.9 1-1.3.6-.8 1-1.7 1.9-2.2 0-.4-1.1-1.1-1.5-.9l-.1.1c-.1.1.1.3.1.6-.1.3-.8 1.7-1 1.9-.4-.1-.7-.5-1.1-.7.1-.4.4-.6.6-.9.5-.7.8-1.3 1.5-1.8 0-.5-.9-1.1-1.4-1.1 0 .2.1.4.1.6-.1.6-.4 1.3-.7 1.9-.2.4-.2.8-.5 1.1-.1 0-.5 0-.6-.1h-.4v.1c.7.6 1.4.9 2.3 1.3-.1.7-.8 1.1-1.1 1.6-.2 0-.3 0-.4-.1h-.2c0 .6.5 1.1 1 1.2.3-.4.7-.5 1.2-.8.4.5.6 1.1.8 1.9.1.3 0 .7 0 1 .2.5.4.7.7 1h.3c.2-.9-.3-1.8-.5-2.6 0-.1-.1-.4-.1-.7zm62.5-6.7c-.2.2-.6.3-.8.5-.4.3-.8.7-1.1.9-.2.1-.4.3-.6.4-.2.3-.2.8-.4 1.1v.2c.3-.1.5-.5.7-.7.3-.2.6-.5.9-.8.2-.1.4-.2.6-.4.1 0 .1 0 .2.1 0 1-.5 1.7-.9 2.5-.1.2-.1.6-.3.7-.1.1-.2.1-.3.2-.3.3-.5.6-.8.9-.3.3-.4.8-.6 1.1v.3s.1.1.2.1c.5-.5 1-.9 1.4-1.5.7-.9 1-2 1.5-3.1.3-.7.7-1.4.7-2.3 0 0-.1-.1-.1-.2h-.3zm-2.8 6.3c0-.4.4-.6.6-.9h.1c-.1.3-.4.7-.7.9zm-59.1.6c-.1.3.8 1.1 1 1.3.1.1.3.3.5.2h.2c0-.1.1-.2 0-.4 0-.5-1.3-1-1.7-1.1zm3.8 3h.2c.1-.1.1-.3.2-.5.2-.2.6-.1.9-.2.8-.2 1.8-.2 2.6-.4.4-.1 1.1.2 1.5 0h.1c0-.5-1-.7-1.5-.6-.2.1-.5.2-.8.3h-.6c-.1-.6-.4-1.1-.4-1.8.6 0 1.3-.1 1.7-.3 0-.2 0-.2-.1-.3-.5-.1-1.2-.1-1.6.1h-.2c-.2-.3-.1-.9-.3-1.1v-.2c.4-.1 1.1-.2 1.3-.5v-.1l-.1-.1c-.6-.2-.9 0-1.4.2-.2-.5 0-1-.5-1.1.1-.2.5-.2.8-.3.4-.1.8-.3 1.1-.5v-.1c0-.2-.1-.2-.2-.3-.6 0-1 0-1.3.3h-.1c0-.3.2-.7.4-.9.1-.2.3-.1.4-.4-.1-.1-.2-.2-.2-.3-.2-.1-.5-.1-.6-.3-.3 0-.5 0-.7.1 0 .2.1.2.1.4.1.4-.3 1.7-.4 1.9-.1.2-1.6.7-1.9.6-.1 0-.4-.2-.4-.2v-.1c.6-.5 1-1.7 1.7-1.9v-.2c-.2-.2-1.1-1.2-1.6-.9h-.1c0 .3.2.6.1.9-.2.7-.6 1.6-.9 2.1-.2.4-.7.7-.7 1.2.6-.1.8-.7 1.3-.9l.4.4c.2.3.2.8.3 1.2.2.9.4 1.7.6 2.6 0 .4.1.8.1 1.3 0 .2.4.8.8.9zm1.2-3c0 .4.3 1.4.4 1.7v.1c-.5.1-1 .2-1.5.2-.1-.6-.4-1.1-.4-1.7.7 0 1-.2 1.5-.3zm-2.3-3.2c.1-.1 1.1-.3 1.2-.2.4.2.3.8.5 1.2-.1.2-1 .5-1.3.5 0-.5-.1-1.3-.4-1.5zm1.9 1.5c.1.4.2 1 .4 1.3-.1.3-1 .3-1.3.5-.1-.1-.3-1.1-.3-1.3.2-.1.9-.4 1.2-.5zm-6.9 2.2c-.1.1-.1.4-.1.5-.3.8-.5 1 .1 1.8.2 0 .3 0 .4-.1.1-.6.2-1.9-.4-2.2zm45.1.2c-1.2-.3-2.1.3-3.3.2-.1-.1-.2-.2-.3-.4-.8 0-1.8 1.9-.9 2.5.5.3 1.7.1 2.3 0 .3-.1.8-.1 1 0 .3.2.3 1.2.2 1.7-.1 1-.3 2-.4 2.9-.1.6-.2 1.2-.4 1.8.6 0 1.2-.6 1.3-1.1.1-.3 0-.5.1-.8.2-.8.2-1.8.4-2.7.1-.6 0-1.1.2-1.6.1-.4.1-1.7 0-2.1.1 0-.1-.2-.2-.4zm-54.1 12c-.1-.1-.2-.3-.4-.4l-1.5-1.2c-.4-.3-1-.5-1.4-.8 0-.1.1-.3 0-.5-.3-.9-1.6-1.9-2.4-2.4-.4-.2-1-.3-1.3-.6-.2 0-.4 0-.4.2-.1.2.2.5.3.7.3.4.6.8.9 1.1.3.2.6.4.8.6h.1c-.2-.4-.6-.7-.9-.9-.3-.2-.4-.6-.7-.9 0-.1 0-.1.1-.2 1.1 0 1.8 1 2.3 1.7.2.3.6.5.6 1h-.4c.2.5.8.5 1.3.8.9.5 1.6 1.4 2.4 2.1.3.2.7.5.8.9-.5 0-.9-.3-1.3-.6-.6-.4-1.6-1.1-2-1.7-.1-.1-.1-.3-.2-.4-.1-.1-.3-.1-.4-.3h-.2c0 .4.4.7.7.9.8.8 1.7 1.4 2.7 2 .4.2 1.1.5 1.5.3 0-.7-.7-1.1-1-1.4zm24.3 2.6c-2-1.4-5-2.8-8.4-2.7-.2.1-.5 0-.7.1-.3.1-.5.2-.7.4 0 1 1.4 1.5 2.3 1.7.5.1.9-.1 1.2-.2.2-.8-.8-.9-1.2-1.3h-.1c3-.1 5.3.7 7 2 .4.3.9.8 1.1 1.3.1.2.1.5 0 .7-.2.4-.7.4-1.2.5-1.2.3-2.8-.4-3.3-.9-.1.2 0 .5-.1.7-.2.5-.8.4-1.3.5-.9.2-2.4-.3-2.9-.6l-.4-.4v-.2c.1-.1.2-.2.2-.3 1.1-.1 1.7 0 2.4.6v.1c-.1.2-.2.2-.5.2v.1c.4 0 .6-.1.8-.2v-.2c-.1-.1-.2-.3-.4-.4-.6-.4-2-.6-2.7-.2-.1.6.2.9.6 1.1.6.5 1.2.8 2.1 1 .3.1.5 0 .9.1.3.1.8.1 1.1 0 .5-.1 1.2-.7.6-1.3.3.1.5.4.8.6.8.4 2 .7 3.2.5.6-.1 1.1-.1 1.3-.6.2-.3-.1-.7-.2-.8-.4-1-.9-1.5-1.5-1.9zm-7.3-1.8c.1.1.2.3.4.4v.2c-.3.7-1.7.2-2.1-.1-.1-.1-.2-.2-.2-.4v-.1c.1-.3.4-.2.7-.4.4.1.9.2 1.2.4zm36.7.4h-.4c-.3.2-.7.2-1 .4-.3.1-.6.3-.8.5-.2.1-.3.4-.5.6 0 .2 0 .2.2.3h.1l.1-.1v-.2c.4-.4.7-.6 1.2-.8.1-.1.4-.2.6-.1h.1c0 .4-.9 1.6-1.2 1.8v.1c.7-.2 1.2-1.6 1.7-2.2-.1-.2 0-.2-.1-.3zm-3.1 2.9c-.2.2-.8.2-1.1.4.1-.1.3-.2.4-.4.1-.1.1-.2.2-.3v-.2c-1.2-.2-3.1.8-3.7 1.3-.2.1-.2.3-.4.5v.2c.7 0 2-.4 2.2-.9v-.1c-.5 0-1.1.1-1.4.4.3-.4 1.2-.7 1.7-.9.2-.1.6-.1.7 0h.1c-.1.4-.7.8-1 .9v.1c.6-.1 1.2-.4 1.7-.6.4-.1.8-.2 1.1-.4.2-.1 1-1.2 1.1-1.5-1 .1-1.1 1-1.6 1.5zm-3.2.8v.1c-.1 0-.1.2-.2.2-.2.1-.5.1-.7.2h-.2c.2-.3.8-.5 1.1-.5zm-16.5 3.7v-.1c-1 0-2-.1-2.9-.1-.1.1-.3 0-.5.1s-.4.1-.6.2v.1c.2.2 1.6.2 1.9 0h.1v-.1c-.4-.1-1.2.2-1.5 0 1.1-.1 2.2 0 3.3 0-.1.1-.3.1-.4.1h-.1v.1c.2 0 .5.1.7.1-.3.2-1.3.1-1.6 0v-.1c-.2-.1-1 .1-1.1.1h-.4c-.2 0-.2 0-.3.1 0 .1 0 .1.1.2.3.1.7.1 1 .2-.1-.1-.6 0-.7-.1h-.1c.1-.1 1.4-.3 1.7-.1h.1c-.2 0-.4.1-.6.1v.1h.3c0 .1-.1.1-.1.2v.1c.6 0 1-.1 1.5-.2.3-.1.6.1.8-.1h.3v-.1c-.5 0-1.9-.1-2.2.2h-.1c.2-.2.5-.1.8-.2.4-.1 1.2-.3 1.5 0 .1.1 0 0 0 .1h.5v-.2c-.4-.1-.9-.3-1.2-.4.1-.1.1-.3-.2-.3zm-40.2-72.9c-.1.3-.3.6-.4.9-.3.6-.5 1.2-.8 1.8-.2.5-.3 1.3-.6 1.7v.1c.4-.1.7-.5.9-.8.6-.6 1.9-2.2 1.9-3.4-.1-.1-.1-.2-.2-.2-.1-.1-.4-.1-.8-.1zm.2 1.6c-.2.3-.3.6-.5.9-.2.3-.5.5-.6.7.1-.3.2-.5.3-.8.2-.6.4-1.1.7-1.6.2 0 .3 0 .4.1l.1.1c-.1.1-.3.5-.4.6zm70.2-12.1c-.4-.4-.7-.9-1.1-1.3-.2.1-.9.7-1 .9-.3-.1-.4-.4-.6-.5-.7-.5-1.3-1.2-2.5-1.1-.1.1-.4.1-.6.2-.5.2-1.1.7-1.3 1.2-.2.6 0 1.5.2 1.9.4.9 1 1.7 1.6 2.4.5.6 1 1.3 1.8 1.5 1 .2 1.4-.9 1.8-1.3.4-.4 1.2-.5 1.5-1.1.1-.2 0-.6 0-.8-.2-.4-1.1-1.6-1.4-1.9 0-.2.1-.2.2-.4.2.1.3.5.5.7.2.3.5.4.8.6.4 0 .6-.1.8-.3-.1-.4-.5-.5-.7-.7zm-2.2 4.2c-.7.2-1-.3-1.4-.7-.9-.9-1.6-2.1-2.3-3.2-.2-.4-.9-1.1-.6-1.7h.2c.2.3.5.5.8.8.6.8 1.3 1.5 1.9 2.3.4.5.8.9 1.1 1.4.2.2.3.6.6.8-.2.1-.3.2-.3.3zm.6-2.8c.3.4.8.7.8 1.5-.1.1-.2.2-.4.3h-.1c-.6-.9-1.4-1.7-2-2.6-.2-.3-.5-.5-.8-.8-.4-.5-.8-.9-1.2-1.3-.1-.1-.2-.3-.3-.4 0-.1 0-.1.1-.1.7 0 1 .5 1.4.8.9.8 1.7 1.7 2.5 2.6z\" opacity=\".88\" fill=\"#231F20\" /><radialGradient id=\"wikipedia_Q\" cx=\"-2.191\" cy=\"1550.361\" r=\"72.751\" gradientTransform=\"translate(-213.764 -1178.502)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-opacity=\"0\" /><stop offset=\".802\" stop-opacity=\".08\" /><stop offset=\"1\" stop-opacity=\".388\" /></radialGradient><path d=\"M-204.1 367c0-.6-.4-1.3-.4-1.3v-.1s-.5-.9-1.3-1.2c-.8-.3-1.5.3-1.5.3s-.1.1-.4.5c-.3.4-.5.7-1.2.9-.7.3-1.4.2-1.7 0-.4-.2-.5-.5-.5-.5s-.2-.7-.3-1c-.1-.3-.3-1.7-.3-1.7s-.5-2.7-.5-3.3c0 0 1.5-.1 3.7-.8 2.3-.7 3-1.2 3-1.2s-.4-.2-.5-.7c-.1-.5-.1-1.2-.1-1.2s-.1-.5.5-1.1c.6-.6 1.4-.9 1.8-1 .4-.1 1.3-.2 2.1-.1.8 0 1.3.1 1.6.3.3.2.4.6.4.6v1.1s0 .4.3.5c0 0 .5.3 2.2.1 0 0 .7-.1 1.8-.5 1.1-.3 4.1-1.2 4.6-1.3.4-.1 1-.3 1.6-.5.7-.2 2-.6 2.3-.7.3-.1 1.8-.6 2.9-.8 1.1-.2 2.2-.2 2.8.1 0 0 .4.3.5.7.2.4.5.9.9 1.1.5.2.8.4 1.9.3 0 0 0-.1-.4-.4-.4-.3-1-.7-1-.7s-.3-.2-.4-.4c-.1-.2 0-.3 0-.3l.9-1.4s0-.2.5-.2c.5-.1 1.1-.1 1.7-.3.7-.2.8-.3.8-.3l.6.2s3.5 2.9 4.7 3.6l.2-.2s.4 0 .8.2 1 .6 1 .6 1.6 1.3 2.1 2.2l.2.7-.1.2s.9 1.3 2.1 2.6c0 0 1.2 1.7 1.7 2.1l-.2-.8.3-.2.2-.1.6.3c3.6 4.8 6.4 10.4 8.1 16.3l-.1.5.4.5c1.1 4.2 1.7 8.6 1.7 13.2 0 1.1 0 2.2-.1 3.3l-.3.5.2.6c-2.2 26.1-24.1 46.6-50.8 46.6-18.5 0-34.7-9.9-43.6-24.6l-.1-.4-.2-.2c-3.4-5.7-5.7-12.2-6.6-19.1l.2-.5-.3-.5c-.2-1.9-.3-3.8-.3-5.8 0-3 .3-5.9.7-8.8l.3-.6-.1-.3c1.2-6 3.4-11.7 6.5-16.8l.7-.4h.1s.2-.2.4-.2h.1s1.2-2 1.6-2.6c0 0 .5-.3.7-.4 0 0 .1 0 .2.1 0 0 .5-.4 1.7-2.1 0 0-.1-.1-.1-.2s.1-.6.2-.7c.1-.1.1-.2.1-.2s1.7-2 3.2-3.2c0 0 .3-.2.7-.3 0 0 1.5-.6 3.3-2.2 0 0 .1-.3.5-.9.4-.6 1.5-1.2 2.2-1.3.8-.2.9 0 .9 0l.1.1.5.8s.6-.3 1.4-.6c.8-.3 1-.3 1-.3l.8 1.3-1 2s-.6 1.4-1.7 2.2c0 0-.5.3-1.1.1s-1.1.3-1.1.3l-.2.1s.1 0 .3-.1c0 0 .2.1.3.2.1.2.9 1.2.9 1.2s0 .8-.4 1.9c-.4 1.1-1.5 2.9-1.5 2.9s-.7 1.4-1.1 2.3c-.3.8-.5 1.8-.5 2.3 0 0 .2.1.7-.2.7-.3 1.1 0 1.1 0s.7.5 1 .9c.3.3.8 1.8.2 3.2 0 0-.4 1-1.4 1.7 0 0-.2.3-1.5.2-.4 0-.6-.3-1.4-.2-.8.1-1.2.8-1.2.8-.7 1-1.2 2.5-1.2 2.5l-.1.2s-.2.5-.3 1.8c-.1 1.3.3 3.1.3 3.1s7.9-1.4 9.9-.1l.6.5v.4c-.1.2-.4.7-1 1.1-.6.4-1.2 1.6-.3 2.3 1 .8 1.7.8 3.4.5 1.7-.3 2.9-1.3 2.9-1.3s1-.7.8-1.6c-.2-.9-1-1.2-1-1.2s-.7-.4-.1-1.2c0 0 .1-.7 2.6-1.3 2.4-.6 6.8-1.5 10.6-2 0 0-2.5-8.2-.7-9.3 0 0 .4-.3 1.2-.4h1.5c.5 0 1 .1 1.7-.4.4-.6.4-.9.4-.9\" opacity=\".38\" fill=\"url(#wikipedia_Q)\" /></symbol>"
- });
- _browserSprite2.default.add(symbol);
- var WikipediaSpriteSymbolComponent = function (_React$Component) {
- _inherits(WikipediaSpriteSymbolComponent, _React$Component);
- function WikipediaSpriteSymbolComponent() {
- _classCallCheck(this, WikipediaSpriteSymbolComponent);
- return _possibleConstructorReturn(this, (WikipediaSpriteSymbolComponent.__proto__ || Object.getPrototypeOf(WikipediaSpriteSymbolComponent)).apply(this, arguments));
- }
- _createClass(WikipediaSpriteSymbolComponent, [{
- key: "render",
- value: function render() {
- return _react2.default.createElement(_icon2.default, _extends({ glyph: "wikipedia" }, this.props));
- }
- }]);
- return WikipediaSpriteSymbolComponent;
- }(_react2.default.Component);
- exports.default = WikipediaSpriteSymbolComponent;
- /***/ })
- /******/ ]);
|