@samitouri / QOS-React-2 / commits / 96fde8a09a

Add new docs website (#10896)

Adds a new docs website, built with Gatsby JS, to replace the old Jekyll site. Source code for the new site lives in /www (although markdown and YML data still comes from the legacy /docs folder). Changes to either markdown or website source code can be previewed on Netlify. The react-js bot should automatically add comments to each PR with preview links. (This preview is generated by running the newly-added yarn build:docs command in the root package.json.) The majority of the changes in this PR are contained within the new /www directory. However some minor modifications have been made to existing content in the /docs directory: * Modified frontmatter author block to always be an array * Small markdown formatting tweaks

Brian Vaughn committed Sep 28, 2017 at 10:18 UTC 96fde8a09ad525f28910de2c95f0eee2d824d939
267 files changed +17344 -1979
.eslintignore
+1
@@ -17,4 +17,5 @@ coverage/
17 scripts/bench/benchmarks/**/*.js
18 scripts/bench/remote-repo/
19 vendor/*
20 +www/public/*
21 **/node_modules
.flowconfig
+2
@@ -7,6 +7,7 @@
7 <PROJECT_ROOT>/node_modules/chrome-devtools-frontend/.*
8 <PROJECT_ROOT>/node_modules/devtools-timeline-model/.*
9 <PROJECT_ROOT>/node_modules/create-react-class/.*
10 +<PROJECT_ROOT>/www/node_modules/.*
11 <PROJECT_ROOT>/.*/__mocks__/.*
12 <PROJECT_ROOT>/.*/__tests__/.*
13
@@ -15,6 +16,7 @@
16 <PROJECT_ROOT>/.*/docs/.*
17
18 [include]
19 +./www/node_modules/hex2rgba/
20
21 [libs]
22 ./node_modules/fbjs/flow/lib/dev.js
.gitignore
-1
@@ -2,7 +2,6 @@
2 node_modules
3 *~
4 *.pyc
5 -static
5 .grunt
6 _SpecRunner.html
7 __benchmarks__
.netlify new
+1
@@ -0,0 +1 @@
1 +{"site_id":"f32c701b-ea0d-4350-8013-d3504b6441b5","path":"www/public"}
\ No newline at end of file
.nvmrc new
+1
@@ -0,0 +1 @@
1 +v8.4.0
docs/_data/acknowledgements.yml
+1129 -1129
@@ -1,1130 +1,1130 @@
1 ---
2 -- - '839'
3 - - Aaron Ackerman
4 - - Aaron Cannon
5 - - Aaron Franks
6 - - Aaron Gelter
7 - - Abhay Nikam
8 - - Abhishek Soni
9 - - Adam
10 - - Adam Bloomston
11 - - Adam Krebs
12 - - Adam Mark
13 - - Adam Solove
14 - - Adam Stankiewicz
15 - - Adam Timberlake
16 - - Adam Zapletal
17 - - Addy Osmani
18 - - Adrian Sieber
19 - - Aesop Wolf
20 - - Ahmad Wali Sidiqi
21 - - Alan Plum
22 - - Alan Souza
23 - - Alan deLevie
24 - - Alastair Hole
25 - - Alex
26 - - Alex Babkov
27 - - Alex Baumgertner
28 - - Alex Boatwright
29 - - Alex Boyd
30 - - Alex Dajani
31 - - Alex Jacobs
32 - - Alex Katopodis
33 - - Alex Lopatin
34 - - Alex Mykyta
35 - - Alex Pien
36 - - Alex Smith
37 - - Alex Zelenskiy
38 - - Alex Zherdev
39 - - Alexander
40 - - Alexander Shtuchkin
41 - - Alexander Solovyov
42 - - Alexander Tseung
43 - - Alexandre Gaudencio
44 - - Alexandre Kirszenberg
45 - - Alexey Raspopov
46 - - Alexey Shamrin
47 - - Ali Taheri Moghaddar
48 - - Ali Ukani
49 - - Alireza Mostafizi
50 - - Almero Steyn
51 - - Amanvir Sangha
52 - - Amjad Masad
53 - - Anastasia A
54 - - Andre Giron
55 - - Andre Z Sanchez
56 - - Andreas Möller
57 - - Andreas Savvides
58 - - Andreas Svensson
59 - - Andres Kalle
60 - - Andres Suarez
61 - - Andrew Clark
62 - - Andrew Cobby
63 - - Andrew Davey
64 - - Andrew Henderson
65 - - Andrew Imm
66 - - Andrew Kulakov
67 - - Andrew Lo
68 - - Andrew Poliakov
69 - - Andrew Rasmussen
70 - - Andrew Rota
71 - - Andrew Sokolov
72 - - Andrew Zich
73 - - Andrey Marchenko
74 - - Andrey Okonetchnikov
75 - - Andrey Popp
76 - - Andrey Safronov
77 - - Andy Edwards
78 - - Ankeet Maini
79 - - Anthony van der Hoorn
80 - - Anto Aravinth
81 - - Antonio Ruberto
82 - - Antti Ahti
83 - - António Nuno Monteiro
84 - - Anuj Tomar
85 - - Anuja Ware
86 - - AoDev
87 - - April Arcus
88 - - Areeb Malik
89 - - Aria Buckles
90 - - Aria Stewart
91 - - Arian Faurtosh
92 - - Arni Fannar
93 - - Arshabh Kumar Agarwal
94 - - Artem Nezvigin
95 - - Arthur Gunn
96 - - Ashish
97 - - Austin Wright
98 - - Avinash Kondeti
99 - - Ayman Osman
100 - - B.Orlov
101 - - BDav24
102 - - BEAUDRU Manuel
103 - - Baraa Hamodi
104 - - Bartosz Kaszubowski
105 - - Basarat Ali Syed
106 - - Battaile Fauber
107 - - Beau Smith
108 - - Ben Anderson
109 - - Ben Berman
110 - - Ben Brooks
111 - - Ben Foxall
112 - - Ben Halpern
113 - - Ben Jaffe
114 - - Ben Moss
115 - - Ben Newman
116 - - Ben Ripkens
117 - - Benedikt Meurer
118 - - Benjamin Keen
119 - - Benjamin Leiken
120 - - Benjamin Woodruff
121 - - Benjy Cui
122 - - Benoit Girard
123 - - Benton Rochester
124 - - Bernard Lin
125 - - Bill Blanchard
126 - - Bill Fisher
127 - - Billy Shih
128 - - Blaine Hatab
129 - - Blaine Kasten
130 - - Bob Eagan
131 - - Bob Ralian
132 - - Bob Renwick
133 - - Bobby
134 - - Bogdan Chadkin
135 - - Bojan Mihelac
136 - - Boris Yankov
137 - - Brad Vogel
138 - - Bradford
139 - - Bradley Spaulding
140 - - Brandon Bloom
141 - - Brandon Dail
142 - - Brandon Tilley
143 - - Brenard Cubacub
144 - - Brent Vatne
145 - - Brian Cooke
146 - - Brian Emil Hartz
147 - - Brian Holt
148 - - Brian Hsu
149 - - Brian Kim
150 - - Brian Kung
151 - - Brian Reavis
152 - - Brian Rue
153 - - Brian Vaughn
154 - - Bruce Harris
155 - - Bruno Heridet
156 - - Bruno Škvorc
157 - - Bryan Braun
158 - - CT Wu
159 - - Cam Song
160 - - Cam Spiers
161 - - Cameron Chamberlain
162 - - Cameron Matheson
163 - - Carolina Powers
164 - - Carter Chung
165 - - Cassus Adam Banko
166 - - Cat Chen
167 - - Cedric Sohrauer
168 - - Cesar William Alvarenga
169 - - Chad Fawcett
170 - - Changsoon Bok
171 - - Charles Marsh
172 - - Charlie Garcia
173 - - Chase Adams
174 - - Cheng Lou
175 - - Chitharanjan Das
176 - - Chris
177 - - Chris Bolin
178 - - Chris Grovers
179 - - Chris Ha
180 - - Chris Pearce
181 - - Chris Rebert
182 - - Chris Sciolla
183 - - Christian Alfoni
184 - - Christian Oliff
185 - - Christian Roman
186 - - Christoffer Sawicki
187 - - Christoph Pojer
188 - - Christophe Hurpeau
189 - - Christopher Monsanto
190 - - Claudio Brandolino
191 - - Clay Allsopp
192 - - Clay Miller
193 - - Clement Hoang
194 - - CodinCat
195 - - Cody Reichert
196 - - Colin Wren
197 - - Connor McSheffrey
198 - - Conor Hastings
199 - - Constantin Gavrilete
200 - - Cory House
201 - - Cotton Hou
202 - - Craig Akimoto
203 - - Cristovao Verstraeten
204 - - DQNEO
205 - - Dai Nguyen
206 - - Damian Nicholson
207 - - Damien Pellier
208 - - Damien Soulard
209 - - Dan Abramov
210 - - Dan Fox
211 - - Dan Schafer
212 - - DanZeuss
213 - - Daniel Carlsson
214 - - Daniel Cousens
215 - - Daniel Friesen
216 - - Daniel Gasienica
217 - - Daniel Hejl
218 - - Daniel Hejl
219 - - Daniel Liburd
220 - - Daniel Lo Nigro
221 - - Daniel Mané
222 - - Daniel Miladinov
223 - - Daniel Rodgers-Pryor
224 - - Daniel Rosenwasser
225 - - Daniel Rotter
226 - - Daniel Schonfeld
227 - - Daniela Borges
228 - - Danilo Vitoriano
229 - - Danny Ben-David
230 - - Danny Hurlburt
231 - - Darcy
232 - - Daryl Lau
233 - - Darío Javier Cravero
234 - - Dave Galbraith
235 - - Dave Lunny
236 - - Dave Voyles
237 - - David Aurelio
238 - - David Baker
239 - - David Beitey
240 - - David Ed Mellum
241 - - David Goldberg
242 - - David Granado
243 - - David Greenspan
244 - - David Hellsing
245 - - David Hu
246 - - David Khourshid
247 - - David Mininger
248 - - David Neubauer
249 - - David Percy
250 - - Dean Shi
251 - - Denis Laxalde
252 - - Denis Pismenny
253 - - Denis Sokolov
254 - - Deniss Jacenko
255 - - Dennis Johnson
256 - - Desmond Brand
257 - - Devedse
258 - - Devinsuit
259 - - Devon Blandin
260 - - Devon Harvey
261 - - Dheeraj Kumar
262 - - Dhyey Thakore
263 - - Diego Muracciole
264 - - Dima Beznos
265 - - Dimzel Sobolev
266 - - Dmitri Zaitsev
267 - - Dmitrii Abramov
268 - - Dmitriy Kubyshkin
269 - - Dmitriy Rozhkov
270 - - Dmitry Blues
271 - - Dmitry Mazuro
272 - - Dmitry Zhuravlev-Nevsky
273 - - Domenico Matteo
274 - - Dominic Gannaway
275 - - Don Abrams
276 - - Dongsheng Liu
277 - - Duke Pham
278 - - Dustan Kasten
279 - - Dustin Getz
280 - - Dylan Harrington
281 - - Dylan Kirby
282 - - Edgar (Algebr)
283 - - Eduard
284 - - Eduardo Garcia
285 - - Edvin Erikson
286 - - Elaine Fang
287 - - Eli White
288 - - Enguerran
289 - - Eoin Hennessy
290 - - Eric Churchill
291 - - Eric Clemmons
292 - - Eric Douglas
293 - - Eric Eastwood
294 - - Eric Elliott
295 - - Eric Florenzano
296 - - Eric Matthys
297 - - Eric Nakagawa
298 - - Eric O'Connell
299 - - Eric Pitcher
300 - - Eric Sakmar
301 - - Eric Schoffstall
302 - - Erik Harper
303 - - Erik Hellman
304 - - Espen Hovlandsdal
305 - - Esteban
306 - - Eugene
307 - - EugeneGarbuzov
308 - - Evan Coonrod
309 - - Evan Jacobs
310 - - Evan Scott
311 - - Evan Vosberg
312 - - Fabio M. Costa
313 - - Fabrizio Castellarin
314 - - Faheel Ahmad
315 - - Fatih
316 - - Federico Rampazzo
317 - - Felipe Oliveira Carvalho
318 - - Felix Gnass
319 - - Felix Kling
320 - - Fernando Alex Helwanger
321 - - Fernando Correia
322 - - Fernando Montoya
323 - - Filip Hoško
324 - - Filip Spiridonov
325 - - Flarnie Marchan
326 - - Fokke Zandbergen
327 - - Frank Yan
328 - - Frankie Bagnardi
329 - - François Chalifour
330 - - François-Xavier Bois
331 - - Fraser Haer
332 - - Fred Zhao
333 - - Freddy Rangel
334 - - Fyodor Ivanishchev
335 - - G Scott Olson
336 - - G. Kay Lee
337 - - Gabe Levi
338 - - Gabriel Lett Viviani
339 - - Gajus Kuizinas
340 - - Gant Laborde
341 - - Gareth Nicholson
342 - - Garmash Nikolay
343 - - Garren Smith
344 - - Garrett McCullough
345 - - Gavin McQuistin
346 - - Gaëtan Renaudeau
347 - - Geert Pasteels
348 - - Geert-Jan Brits
349 - - George A Sisco III
350 - - Georgii Dolzhykov
351 - - Gert Hengeveld
352 - - Giamir Buoncristiani
353 - - Gil Chen-Zion
354 - - Gilbert
355 - - Giorgio Polvara
356 - - Giuseppe
357 - - Glen Mailer
358 - - Grant Timmerman
359 - - Greg Hurrell
360 - - Greg Palmer
361 - - Greg Perkins
362 - - Greg Roodt
363 - - Gregory
364 - - Grgur Grisogono
365 - - Griffin Michl
366 - - Guangqiang Dong
367 - - Guido Bouman
368 - - Guilherme Oenning
369 - - Guilherme Ruiz
370 - - Guillaume Claret
371 - - Harry Hull
372 - - Harry Marr
373 - - Harry Moreno
374 - - Harshad Sabne
375 - - Hekar Khani
376 - - Hendrik Swanepoel
377 - - Henrik Nyh
378 -- - Henry Harris
379 - - Henry Wong
380 - - Henry Zhu
381 - - Hideo Matsumoto
382 - - Hikaru Suido
383 - - Hiroyuki Wada
384 - - Hou Chia
385 - - Huang-Wei Chang
386 - - Hugo Agbonon
387 - - Hugo Jobling
388 - - Hyeock Kwon
389 - - Héctor Ramos
390 - - Héliton Nordt
391 - - Ian Obermiller
392 - - Ian Sutherland
393 - - Ignacio Carbajo
394 - - Igor Scekic
395 - - Ike Peters
396 - - Ilia Pavlenkov
397 - - Ilya Gelman
398 - - Ilya Shuklin
399 - - Ilyá Belsky
400 - - Ingvar Stepanyan
401 - - Irae Carvalho
402 - - Isaac Salier-Hellendag
403 - - Islam Sharabash
404 - - Iurii Kucherov
405 - - Ivan
406 - - Ivan Kozik
407 - - Ivan Krechetov
408 - - Ivan Vergiliev
409 - - Ivan Zotov
410 - - J. Andrew Brassington
411 - - J. Renée Beach
412 - - JD Isaacks
413 - - JJ Weber
414 - - JW
415 - - Jack
416 - - Jack Cross
417 - - Jack Ford
418 - - Jack Zhang
419 - - Jackie Wung
420 - - Jackson Huang
421 - - Jacob Gable
422 - - Jacob Greenleaf
423 - - Jacob Lamont
424 - - Jae Hun Lee
425 - - Jae Hun Ro
426 - - Jaeho Lee
427 - - Jaime Mingo
428 - - Jake Boone
429 - - Jake Worth
430 - - Jakub Malinowski
431 - - James
432 - - James Brantly
433 - - James Burnett
434 - - James Friend
435 - - James Ide
436 - - James Long
437 - - James Pearce
438 - - James Seppi
439 - - James South
440 - - James Wen
441 - - Jamie Wong
442 - - Jamis Charles
443 - - Jamison Dance
444 - - Jan Hancic
445 - - Jan Kassens
446 - - Jan Raasch
447 - - Jan Schär
448 - - Jane Manchun Wong
449 - - Jared Forsyth
450 - - Jared Fox
451 - - Jarrod Mosen
452 - - Jason
453 - - Jason Bonta
454 - - Jason Grlicky
455 - - Jason Ly
456 - - Jason Miller
457 - - Jason Quense
458 - - Jason Trill
459 - - Jason Webster
460 - - Jay Jaeho Lee
461 - - Jay Phelps
462 - - Jayen Ashar
463 - - Jean Lauliac
464 - - Jed Watson
465 - - Jeff Barczewski
466 - - Jeff Carpenter
467 - - Jeff Chan
468 - - Jeff Hicken
469 - - Jeff Kolesky
470 - - Jeff Morrison
471 - - Jeff Welch
472 - - Jeffrey Lin
473 - - Jeffrey Wan
474 - - Jen Wong
475 - - Jeremy Fairbank
476 - - Jess Telford
477 - - Jesse Skinner
478 - - Jignesh Kakadiya
479 - - Jim OBrien
480 - - Jim Sproch
481 - - Jiminikiz
482 - - Jimmy Jea
483 - - Jing Chen
484 - - Jinwoo Oh
485 - - Jinxiu Lee
486 - - Jirat Ki
487 - - Jiyeon Seo
488 - - Jody McIntyre
489 - - Joe Critchley
490 - - Joe Stein
491 - - Joel Auterson
492 - - Joel Denning
493 - - Joel Sequeira
494 - - Johan Tinglöf
495 - - Johannes Baiter
496 - - Johannes Emerich
497 - - Johannes Lumpe
498 - - John Heroy
499 - - John Longanecker
500 - - John Ryan
501 - - John Watson
502 - - John-David Dalton
503 - - Jon Beebe
504 - - Jon Bretman
505 - - Jon Chester
506 - - Jon Hester
507 - - Jon Madison
508 - - Jon Scott Clark
509 - - Jon Tewksbury
510 - - Jonas Enlund
511 - - Jonas Gebhardt
512 - - Jonathan Hsu
513 - - Jonathan Persson
514 - - Jordan Harband
515 - - Jordan Walke
516 - - Jorrit Schippers
517 - - Joseph Nudell
518 - - Joseph Savona
519 - - Josh Bassett
520 - - Josh Duck
521 - - Josh Hunt
522 - - Josh Perez
523 - - Josh Yudaken
524 - - Joshua Evans
525 - - Joshua Go
526 - - Joshua Goldberg
527 - - Joshua Ma
528 - - João Valente
529 - - Juan
530 - - Juan Serrano
531 - - Julen Ruiz Aizpuru
532 - - Julian Viereck
533 - - Julien Bordellier
534 - - Julio Lopez
535 - - Jun Kim
536 - - Jun Wu
537 - - Juraj Dudak
538 - - Justas Brazauskas
539 - - Justin
540 - - Justin Grant
541 - - Justin Jaffray
542 - - Justin Robison
543 - - Justin Woo
544 - - KB
545 - - Kale
546 - - Kamron Batman
547 - - Karl Horky
548 - - Karl Mikkelsen
549 - - Karpich Dmitry
550 - - Karthik Balakrishnan
551 - - Karthik Chintapalli
552 - - Kateryna
553 - - Kaylee Knowles
554 - - KeicaM
555 - - Keito Uchiyama
556 - - Ken Powers
557 - - Kenneth Chau
558 - - Kent C. Dodds
559 - - Kevin Cheng
560 - - Kevin Coughlin
561 - - Kevin Huang
562 - - Kevin Lacker
563 - - Kevin Lau
564 - - Kevin Lin
565 - - Kevin Old
566 - - Kevin Robinson
567 - - Kevin Suttle
568 - - Kewei Jiang
569 - - Keyan Zhang
570 - - Kier Borromeo
571 - - Kiho · Cham
572 - - KimCoding
573 - - Kirk Steven Hansen
574 - - Kit Randel
575 - - Kite
576 - - Kohei TAKATA
577 - - Koo Youngmin
578 - - Krystian Karczewski
579 - - Kunal Mehta
580 - - Kurt Furbush
581 - - Kurt Ruppel
582 - - Kurt Weiberth
583 - - Kyle Kelley
584 - - Kyle Mathews
585 - - Laurence Rowe
586 - - Laurent Etiemble
587 - - Lee Byron
588 - - Lee Jaeyoung
589 - - Lee Sanghyeon
590 - - Lei
591 - - Leland Richardson
592 - - Leon Fedotov
593 - - Leon Yip
594 - - Leonardo YongUk Kim
595 - - Levi Buzolic
596 - - Levi McCallum
597 - - Lewis Blackwood
598 - - Liangzhen Zhu
599 - - Lily
600 - - Linus Unnebäck
601 - - Lipis
602 - - Liz
603 - - Logan Allen
604 - - Lovisa Svallingson
605 - - Lucas
606 - - Ludovico Fischer
607 - - Luigy Leon
608 - - Luke Belliveau
609 - - Luke Horvat
610 - - Lutz Rosema
611 - - MICHAEL JACKSON
612 - - MIKAMI Yoshiyuki
613 - - Maciej Kasprzyk
614 - - Maher Beg
615 - - Maksim Shastsel
616 - - Manas
617 - - Marcelo Alves
618 - - Marcin K.
619 - - Marcin Kwiatkowski
620 - - Marcin Mazurek
621 - - Marcin Szczepanski
622 - - Marcio Puga
623 - - Marcos Ojeda
624 - - Marcy Sutton
625 - - Mariano Desanze
626 - - Mario Souto
627 - - Marius Skaar Ludvigsen
628 - - Marjan
629 - - Mark Anderson
630 - - Mark Funk
631 - - Mark Hintz
632 - - Mark IJbema
633 - - Mark Murphy
634 - - Mark Pedrotti
635 - - Mark Penner
636 - - Mark Richardson
637 - - Mark Rushakoff
638 - - Mark Sun
639 - - Marks Polakovs
640 - - Marlon Landaverde
641 - - Marshall Bowers
642 - - Marshall Roch
643 - - Martin Andert
644 - - Martin Hochel
645 - - Martin Hujer
646 - - Martin Jul
647 - - Martin Konicek
648 - - Martin Mihaylov
649 - - Martin V
650 - - Masaki KOBAYASHI
651 - - Mateusz Burzyński
652 - - Mathieu M-Gosselin
653 - - Mathieu Savy
654 - - Matias Singers
655 - - Matsunoki
656 - - Matt Brookes
657 - - Matt Dunn-Rankin
658 - - Matt Harrison
659 - - Matt Huggins
660 - - Matt Stow
661 - - Matt Zabriskie
662 - - Matthew Dapena-Tretter
663 - - Matthew Herbst
664 - - Matthew Hodgson
665 - - Matthew Johnston
666 - - Matthew King
667 - - Matthew Looi
668 - - Matthew Miner
669 - - Matthew Shotton
670 - - Matthias Le Brun
671 - - Matti Nelimarkka
672 - - Mattijs Kneppers
673 - - Max Donchenko
674 - - Max F. Albrecht
675 - - Max Heiber
676 - - Max Stoiber
677 - - Maxi Ferreira
678 - - Maxim Abramchuk
679 - - Maxwel D'souza
680 - - Merrick Christensen
681 - - Mert Kahyaoğlu
682 - - Michael Chan
683 - - Michael Jackson
684 - - Michael McDermott
685 - - Michael O'Brien
686 - - Michael Randers-Pehrson
687 - - Michael Ridgway
688 - - Michael Sinov
689 - - Michael Terry
690 - - Michael Warner
691 - - Michael Wiencek
692 - - Michael Ziwisky
693 - - Michal Srb
694 - - Michał Ordon
695 - - Michał Pierzchała
696 - - Michele Bertoli
697 - - Michelle Todd
698 - - Michiya
699 - - Mihai Parparita
700 - - Mike D Pilsbury
701 - - Mike Groseclose
702 - - Mike Nordick
703 - - Mikhail Osher
704 - - Mikolaj Dadela
705 - - Miles Johnson
706 - - Miller Medeiros
707 - - Minwe LUO
708 - - Minwei Xu
709 - - Miorel Palii
710 - - Mitchel Humpherys
711 - - Mitermayer Reis
712 - - Moacir Rosa
713 - - Mojtaba Dashtinejad
714 - - Morhaus
715 - - Moshe Kolodny
716 - - Mouad Debbar
717 - - Murad
718 - - Murray M. Moss
719 - - Murtaza Haveliwala
720 - - NE-SmallTown
721 - - Nadeesha Cabral
722 - - Naman Goel
723 - - Nate
724 - - Nate Hunzaker
725 - - Nate Lee
726 - - Nate Norberg
727 - - Nathan Hardy
728 - - Nathan Smith
729 - - Nathan White
730 - - Nee
731 - - Neo
732 - - Neri Marschik
733 - - NestorTejero
734 - - Nguyen Truong Duy
735 - - Nicholas Bergson-Shilcock
736 - - Nicholas Clawson
737 - - Nick Balestra
738 - - Nick Fitzgerald
739 - - Nick Gavalas
740 - - Nick Kasten
741 - - Nick Merwin
742 - - Nick Presta
743 - - Nick Raienko
744 - - Nick Thompson
745 - - Nick Williams
746 - - Nik Nyby
747 - - Nikita Lebedev
748 - - Niklas Boström
749 - - Nikoloz Buligini
750 - - Nima Jahanshahi
751 - - Ning Xia
752 - - Niole Nelson
753 - - Nolan Lawson
754 - - Nuno Campos
755 -- - OJ Kwon
756 - - Oiva Eskola
757 - - Oleg
758 - - Oleksii Markhovskyi
759 - - Oliver Zeigermann
760 - - Olivier Tassinari
761 - - Omid Hezaveh
762 - - Oscar Bolmsten
763 - - Oskari Mantere
764 - - Owen Coutts
765 - - Pablo Lacerda de Miranda
766 - - Paolo Moretti
767 - - Pascal Hartig
768 - - Patrick
769 - - Patrick Finnigan
770 - - Patrick Laughlin
771 - - Patrick Stapleton
772 - - Paul Benigeri
773 - - Paul Harper
774 - - Paul Kehrer
775 - - Paul Manta
776 - - Paul O’Shannessy
777 - - Paul Seiffert
778 - - Paul Shen
779 - - Pedro Nauck
780 - - Pete Hunt
781 - - Peter Blazejewicz
782 - - Peter Cottle
783 - - Peter Jaros
784 - - Peter Newnham
785 - - Peter Ruibal
786 - - Petri Lehtinen
787 - - Petri Lievonen
788 - - Phil Quinn
789 - - Phil Rajchgot
790 - - Philip Jackson
791 - - Philipp Spieß
792 - - Pieter De Baets
793 - - Pieter Vanderwerff
794 - - Piotr Czajkowski
795 - - Piper Chester
796 - - Pontus Abrahamsson
797 - - Pouja Nikray
798 - - Prathamesh Sonpatki
799 - - Prayag Verma
800 - - Preston Parry
801 - - Qin Junwen
802 - - RSG
803 - - Rachel D. Cartwright
804 - - Rafael
805 - - Rafael Angeline
806 - - Rafal Dittwald
807 - - Ragnar Þór Valgeirsson
808 - - Rahul Gupta
809 - - Rainer Oviir
810 - - Raito Bezarius
811 - - Rajat Sehgal
812 - - Rajiv Tirumalareddy
813 - - Ram Kaniyur
814 - - Randall Randall
815 - - Ray
816 - - Ray Dai
817 - - Raymond Ha
818 - - Reed Loden
819 - - Remko Tronçon
820 - - Ricardo
821 - - Rich Harris
822 - - Richard
823 - - Richard D. Worth
824 - - Richard Feldman
825 - - Richard Kho
826 - - Richard Littauer
827 - - Richard Livesey
828 - - Richard Maisano
829 - - Richard Roncancio
830 - - Richard Wood
831 - - Richie Thomas
832 - - Rick Beerendonk
833 - - Rick Ford
834 - - Riley Tomasek
835 - - Rob Arnold
836 - - Robert Binna
837 - - Robert Chang
838 - - Robert Haritonov
839 - - Robert Kielty
840 - - Robert Knight
841 - - Robert Martin
842 - - Robert Sedovsek
843 - - Robin Berjon
844 - - Robin Frischmann
845 - - Robin Ricard
846 - - Roderick Hsiao
847 - - Rodrigo Pombo
848 - - Rohan Nair
849 - - Roman Liutikov
850 - - Roman Matusevich
851 - - Roman Pominov
852 - - Roman Vanesyan
853 - - Rui Araújo
854 - - Russ
855 - - Ryan Lahfa
856 - - Ryan Seddon
857 - - Ryo Shibayama
858 - - Sahat Yalkabov
859 - - Saif Hakim
860 - - Saiichi Hashimoto
861 - - Sakina Crocker
862 - - Sam Balana
863 - - Sam Beveridge
864 - - Sam Saccone
865 - - Sam Selikoff
866 - - Samer Buna
867 - - Samuel
868 - - Samuel Hapák
869 - - Samuel Reed
870 - - Samuel Scheiderich
871 - - Samy Al Zahrani
872 - - Sander Spies
873 - - Sasha Aickin
874 - - Sassan Haradji
875 - - Satoshi Nakajima
876 - - Scott
877 - - Scott Burch
878 - - Scott Feeney
879 - - Sean Gransee
880 - - Sean Kinsey
881 - - Sean Smith
882 - - Seba
883 - - Sebastian Markbåge
884 - - Sebastian McKenzie
885 - - Senin Roman
886 - - Seoh Char
887 - - Sercan Eraslan
888 - - Serg
889 - - Sergey Generalov
890 - - Sergey Rubanov
891 - - Seyi Adebajo
892 - - Shane O'Sullivan
893 - - Shaun Trennery
894 - - ShihChi Huang
895 - - Shim Won
896 - - Shinnosuke Watanabe
897 - - Shogun Sea
898 - - Shota Kubota
899 - - Shripad K
900 - - Shubheksha Jalan
901 - - Shuhei Kagawa
902 - - Sibi
903 - - Simen Bekkhus
904 - - Simon Højberg
905 - - Simon Welsh
906 - - Simone Vittori
907 - - Skasi
908 - - Snowmanzzz(Zhengzhong Zhao)
909 - - Soichiro Kawamura
910 - - Soo Jae Hwang
911 - - Sophia
912 - - Sophia Westwood
913 - - Sophie Alpert
914 - - Sota Ohara
915 - - Spen Taylor
916 - - Spencer Ahrens
917 - - Spencer Handley
918 - - Sriram Thiagarajan
919 - - Stefan Dombrowski
920 - - Stephen John Sorensen
921 - - Stephen Murphy
922 - - Stephie
923 - - Sterling Cobb
924 - - Steve Baker
925 - - Steve Mao
926 - - Steven Luscher
927 - - Steven Syrek
928 - - Steven Vachon
929 - - Stolenkid
930 - - Stoyan Stefanov
931 - - Stuart Harris
932 - - SunHuawei
933 - - Sundeep Malladi
934 - - Sung Won Cho
935 - - Sunny Juneja
936 - - Sunny Ripert
937 - - Superlaziness
938 - - Sven Helmberger
939 - - Sverre Johansen
940 - - Swaroop SM
941 - - Sébastien Lorber
942 - - Sławomir Laskowski
943 - - Taegon Kim
944 - - Taeho Kim
945 - - Taehwan, No
946 - - Tanase Hagi
947 - - Tanner
948 - - Tay Yang Shun
949 - - Ted Kim
950 - - TedPowers
951 - - Tengfei Guo
952 - - Teodor Szente
953 - - Tetsuharu OHZEKI
954 - - Tetsuya Hasegawa
955 - - Thibaut Rizzi
956 - - Thomas Aylott
957 - - Thomas Boyt
958 - - Thomas Broadley
959 - - Thomas Reggi
960 - - Thomas Röggla
961 - - Thomas Shaddox
962 - - Thomas Shafer
963 - - ThomasCrvsr
964 - - Tiago Fernandez
965 - - Tienchai Wirojsaksaree
966 - - Tim Routowicz
967 - - Tim Schaub
968 - - Timothy Yung
969 - - Timur Carpeev
970 - - Tobias Reiss
971 - - Tom Duncalf
972 - - Tom Gasson
973 - - Tom Haggie
974 - - Tom Hauburger
975 - - Tom MacWright
976 - - Tom Occhino
977 - - Tomasz Kołodziejski
978 - - Tomoya Suzuki
979 - - Tomáš Hromada
980 - - Tony Rossi
981 - - Tony Spiro
982 - - Toru Kobayashi
983 - - Trevor Smith
984 - - Trinh Hoang Nhu
985 - - Troy DeMonbreun
986 - - Tsung Hung
987 - - Tyler Brock
988 - - Tyler Buchea
989 - - Tyler Deitz
990 - - Ujjwal Ojha
991 - - Uladzimir Havenchyk
992 - - Usman
993 - - Ustin Zarubin
994 - - Vadim Chernysh
995 - - Valentin Shergin
996 - - Van der Auwermeulen Grégoire
997 - - Varayut Lerdkanlayanawat
998 - - Varun Bhuvanendran
999 - - Varun Rau
1000 - - Vasiliy Loginevskiy
1001 - - Vedat Mahir YILMAZ
1002 - - Veljko Tornjanski
1003 - - Vesa Laakso
1004 - - Victor Alvarez
1005 - - Victor Homyakov
1006 - - Victor Koenders
1007 - - Victoria Quirante
1008 - - Vikash Agrawal
1009 - - Ville Immonen
1010 - - Vincent Riemer
1011 - - Vincent Siao
1012 - - Vincent Taing
1013 - - Vipul A M
1014 - - Vitaliy Potapov
1015 - - Vitaly Kramskikh
1016 - - Vitor Balocco
1017 - - Vjeux
1018 - - Vladimir Kovpak
1019 - - Vladimir Tikunov
1020 - - Volkan Unsal
1021 - - Wander Wang
1022 - - Wayne Larsen
1023 - - Weizenlol
1024 - - Whien
1025 - - WickyNilliams
1026 - - Will Myers
1027 - - William Hoffmann
1028 - - Wincent Colaiuta
1029 - - Wout Mertens
1030 - - Xavier Morel
1031 - - XuefengWu
1032 - - Yakov Dalinchuk
1033 - - Yan Li
1034 - - Yasar icli
1035 - - Yaxian
1036 - - YouBao Nong
1037 - - Yuichi Hagio
1038 - - Yura Chuchola
1039 - - Yuriy Dybskiy
1040 - - Yusong Liu
1041 - - Yutaka Nakajima
1042 - - Yuval Dekel
1043 - - Zac Braddy
1044 - - Zac Smith
1045 - - Zach Bruggeman
1046 - - Zach Ramaekers
1047 - - Zacharias
1048 - - Zeke Sikelianos
1049 - - Zhangjd
1050 - - adraeth
1051 - - ankitml
1052 - - arush
1053 - - bel3atar
1054 - - brafdlog
1055 - - brillout
1056 - - chen
1057 - - chocolateboy
1058 - - cjshawMIT
1059 - - clariroid
1060 - - claudiopro
1061 - - cloudy1
1062 - - comerc
1063 - - cutbko
1064 - - davidxi
1065 - - dfrownfelter
1066 - - djskinner
1067 - - dongmeng.ldm
1068 - - everdimension
1069 - - gillchristian
1070 - - gitanupam
1071 - - guoyong yi
1072 - - hanumanthan
1073 - - hao.huang
1074 - - hjmoss
1075 - - hkal
1076 - - iamchenxin
1077 - - iamdoron
1078 - - iawia002
1079 - - imagentleman
1080 - - imjanghyuk
1081 - - inkinworld
1082 - - jaaberg
1083 - - jddxf
1084 - - jinmmd
1085 - - koh-taka
1086 - - kohashi85
1087 - - ksvitkovsky
1088 - - laiso
1089 - - lamo2k123
1090 - - leeyoungalias
1091 - - li.li
1092 - - lucas
1093 - - maxprafferty
1094 - - mdogadailo
1095 - - mfijas
1096 - - mguidotto
1097 - - mondaychen
1098 - - najisawas
1099 - - neeldeep
1100 - - newvlad
1101 - - nhducit
1102 - - ogom
1103 - - pingan1927
1104 - - rgarifullin
1105 - - saiyagg
1106 - - scloudyy
1107 - - segmentationfaulter
1108 - - shifengchen
1109 - - songawee
1110 - - starkch
1111 - - sugarshin
1112 - - tokikuch
1113 - - ventuno
1114 - - wacii
1115 - - wali-s
1116 - - walrusfruitcake
1117 - - yiminghe
1118 - - youmoo
1119 - - yuntao.qyt
1120 - - z.ky
1121 - - zhangjg
1122 - - zhangs
1123 - - zombieJ
1124 - - zwhitchcox
1125 - - "Árni Hermann Reynisson"
1126 - - "元彦"
1127 - - "凌恒"
1128 - - "张敏"
1129 - - "王晓勇"
1130 - - "龙海燕"
2 +- '839'
3 +- Aaron Ackerman
4 +- Aaron Cannon
5 +- Aaron Franks
6 +- Aaron Gelter
7 +- Abhay Nikam
8 +- Abhishek Soni
9 +- Adam
10 +- Adam Bloomston
11 +- Adam Krebs
12 +- Adam Mark
13 +- Adam Solove
14 +- Adam Stankiewicz
15 +- Adam Timberlake
16 +- Adam Zapletal
17 +- Addy Osmani
18 +- Adrian Sieber
19 +- Aesop Wolf
20 +- Ahmad Wali Sidiqi
21 +- Alan Plum
22 +- Alan Souza
23 +- Alan deLevie
24 +- Alastair Hole
25 +- Alex
26 +- Alex Babkov
27 +- Alex Baumgertner
28 +- Alex Boatwright
29 +- Alex Boyd
30 +- Alex Dajani
31 +- Alex Jacobs
32 +- Alex Katopodis
33 +- Alex Lopatin
34 +- Alex Mykyta
35 +- Alex Pien
36 +- Alex Smith
37 +- Alex Zelenskiy
38 +- Alex Zherdev
39 +- Alexander
40 +- Alexander Shtuchkin
41 +- Alexander Solovyov
42 +- Alexander Tseung
43 +- Alexandre Gaudencio
44 +- Alexandre Kirszenberg
45 +- Alexey Raspopov
46 +- Alexey Shamrin
47 +- Ali Taheri Moghaddar
48 +- Ali Ukani
49 +- Alireza Mostafizi
50 +- Almero Steyn
51 +- Amanvir Sangha
52 +- Amjad Masad
53 +- Anastasia A
54 +- Andre Giron
55 +- Andre Z Sanchez
56 +- Andreas Möller
57 +- Andreas Savvides
58 +- Andreas Svensson
59 +- Andres Kalle
60 +- Andres Suarez
61 +- Andrew Clark
62 +- Andrew Cobby
63 +- Andrew Davey
64 +- Andrew Henderson
65 +- Andrew Imm
66 +- Andrew Kulakov
67 +- Andrew Lo
68 +- Andrew Poliakov
69 +- Andrew Rasmussen
70 +- Andrew Rota
71 +- Andrew Sokolov
72 +- Andrew Zich
73 +- Andrey Marchenko
74 +- Andrey Okonetchnikov
75 +- Andrey Popp
76 +- Andrey Safronov
77 +- Andy Edwards
78 +- Ankeet Maini
79 +- Anthony van der Hoorn
80 +- Anto Aravinth
81 +- Antonio Ruberto
82 +- Antti Ahti
83 +- António Nuno Monteiro
84 +- Anuj Tomar
85 +- Anuja Ware
86 +- AoDev
87 +- April Arcus
88 +- Areeb Malik
89 +- Aria Buckles
90 +- Aria Stewart
91 +- Arian Faurtosh
92 +- Arni Fannar
93 +- Arshabh Kumar Agarwal
94 +- Artem Nezvigin
95 +- Arthur Gunn
96 +- Ashish
97 +- Austin Wright
98 +- Avinash Kondeti
99 +- Ayman Osman
100 +- B.Orlov
101 +- BDav24
102 +- BEAUDRU Manuel
103 +- Baraa Hamodi
104 +- Bartosz Kaszubowski
105 +- Basarat Ali Syed
106 +- Battaile Fauber
107 +- Beau Smith
108 +- Ben Anderson
109 +- Ben Berman
110 +- Ben Brooks
111 +- Ben Foxall
112 +- Ben Halpern
113 +- Ben Jaffe
114 +- Ben Moss
115 +- Ben Newman
116 +- Ben Ripkens
117 +- Benedikt Meurer
118 +- Benjamin Keen
119 +- Benjamin Leiken
120 +- Benjamin Woodruff
121 +- Benjy Cui
122 +- Benoit Girard
123 +- Benton Rochester
124 +- Bernard Lin
125 +- Bill Blanchard
126 +- Bill Fisher
127 +- Billy Shih
128 +- Blaine Hatab
129 +- Blaine Kasten
130 +- Bob Eagan
131 +- Bob Ralian
132 +- Bob Renwick
133 +- Bobby
134 +- Bogdan Chadkin
135 +- Bojan Mihelac
136 +- Boris Yankov
137 +- Brad Vogel
138 +- Bradford
139 +- Bradley Spaulding
140 +- Brandon Bloom
141 +- Brandon Dail
142 +- Brandon Tilley
143 +- Brenard Cubacub
144 +- Brent Vatne
145 +- Brian Cooke
146 +- Brian Emil Hartz
147 +- Brian Holt
148 +- Brian Hsu
149 +- Brian Kim
150 +- Brian Kung
151 +- Brian Reavis
152 +- Brian Rue
153 +- Brian Vaughn
154 +- Bruce Harris
155 +- Bruno Heridet
156 +- Bruno Škvorc
157 +- Bryan Braun
158 +- CT Wu
159 +- Cam Song
160 +- Cam Spiers
161 +- Cameron Chamberlain
162 +- Cameron Matheson
163 +- Carolina Powers
164 +- Carter Chung
165 +- Cassus Adam Banko
166 +- Cat Chen
167 +- Cedric Sohrauer
168 +- Cesar William Alvarenga
169 +- Chad Fawcett
170 +- Changsoon Bok
171 +- Charles Marsh
172 +- Charlie Garcia
173 +- Chase Adams
174 +- Cheng Lou
175 +- Chitharanjan Das
176 +- Chris
177 +- Chris Bolin
178 +- Chris Grovers
179 +- Chris Ha
180 +- Chris Pearce
181 +- Chris Rebert
182 +- Chris Sciolla
183 +- Christian Alfoni
184 +- Christian Oliff
185 +- Christian Roman
186 +- Christoffer Sawicki
187 +- Christoph Pojer
188 +- Christophe Hurpeau
189 +- Christopher Monsanto
190 +- Claudio Brandolino
191 +- Clay Allsopp
192 +- Clay Miller
193 +- Clement Hoang
194 +- CodinCat
195 +- Cody Reichert
196 +- Colin Wren
197 +- Connor McSheffrey
198 +- Conor Hastings
199 +- Constantin Gavrilete
200 +- Cory House
201 +- Cotton Hou
202 +- Craig Akimoto
203 +- Cristovao Verstraeten
204 +- DQNEO
205 +- Dai Nguyen
206 +- Damian Nicholson
207 +- Damien Pellier
208 +- Damien Soulard
209 +- Dan Abramov
210 +- Dan Fox
211 +- Dan Schafer
212 +- DanZeuss
213 +- Daniel Carlsson
214 +- Daniel Cousens
215 +- Daniel Friesen
216 +- Daniel Gasienica
217 +- Daniel Hejl
218 +- Daniel Hejl
219 +- Daniel Liburd
220 +- Daniel Lo Nigro
221 +- Daniel Mané
222 +- Daniel Miladinov
223 +- Daniel Rodgers-Pryor
224 +- Daniel Rosenwasser
225 +- Daniel Rotter
226 +- Daniel Schonfeld
227 +- Daniela Borges
228 +- Danilo Vitoriano
229 +- Danny Ben-David
230 +- Danny Hurlburt
231 +- Darcy
232 +- Daryl Lau
233 +- Darío Javier Cravero
234 +- Dave Galbraith
235 +- Dave Lunny
236 +- Dave Voyles
237 +- David Aurelio
238 +- David Baker
239 +- David Beitey
240 +- David Ed Mellum
241 +- David Goldberg
242 +- David Granado
243 +- David Greenspan
244 +- David Hellsing
245 +- David Hu
246 +- David Khourshid
247 +- David Mininger
248 +- David Neubauer
249 +- David Percy
250 +- Dean Shi
251 +- Denis Laxalde
252 +- Denis Pismenny
253 +- Denis Sokolov
254 +- Deniss Jacenko
255 +- Dennis Johnson
256 +- Desmond Brand
257 +- Devedse
258 +- Devinsuit
259 +- Devon Blandin
260 +- Devon Harvey
261 +- Dheeraj Kumar
262 +- Dhyey Thakore
263 +- Diego Muracciole
264 +- Dima Beznos
265 +- Dimzel Sobolev
266 +- Dmitri Zaitsev
267 +- Dmitrii Abramov
268 +- Dmitriy Kubyshkin
269 +- Dmitriy Rozhkov
270 +- Dmitry Blues
271 +- Dmitry Mazuro
272 +- Dmitry Zhuravlev-Nevsky
273 +- Domenico Matteo
274 +- Dominic Gannaway
275 +- Don Abrams
276 +- Dongsheng Liu
277 +- Duke Pham
278 +- Dustan Kasten
279 +- Dustin Getz
280 +- Dylan Harrington
281 +- Dylan Kirby
282 +- Edgar (Algebr)
283 +- Eduard
284 +- Eduardo Garcia
285 +- Edvin Erikson
286 +- Elaine Fang
287 +- Eli White
288 +- Enguerran
289 +- Eoin Hennessy
290 +- Eric Churchill
291 +- Eric Clemmons
292 +- Eric Douglas
293 +- Eric Eastwood
294 +- Eric Elliott
295 +- Eric Florenzano
296 +- Eric Matthys
297 +- Eric Nakagawa
298 +- Eric O'Connell
299 +- Eric Pitcher
300 +- Eric Sakmar
301 +- Eric Schoffstall
302 +- Erik Harper
303 +- Erik Hellman
304 +- Espen Hovlandsdal
305 +- Esteban
306 +- Eugene
307 +- EugeneGarbuzov
308 +- Evan Coonrod
309 +- Evan Jacobs
310 +- Evan Scott
311 +- Evan Vosberg
312 +- Fabio M. Costa
313 +- Fabrizio Castellarin
314 +- Faheel Ahmad
315 +- Fatih
316 +- Federico Rampazzo
317 +- Felipe Oliveira Carvalho
318 +- Felix Gnass
319 +- Felix Kling
320 +- Fernando Alex Helwanger
321 +- Fernando Correia
322 +- Fernando Montoya
323 +- Filip Hoško
324 +- Filip Spiridonov
325 +- Flarnie Marchan
326 +- Fokke Zandbergen
327 +- Frank Yan
328 +- Frankie Bagnardi
329 +- François Chalifour
330 +- François-Xavier Bois
331 +- Fraser Haer
332 +- Fred Zhao
333 +- Freddy Rangel
334 +- Fyodor Ivanishchev
335 +- G Scott Olson
336 +- G. Kay Lee
337 +- Gabe Levi
338 +- Gabriel Lett Viviani
339 +- Gajus Kuizinas
340 +- Gant Laborde
341 +- Gareth Nicholson
342 +- Garmash Nikolay
343 +- Garren Smith
344 +- Garrett McCullough
345 +- Gavin McQuistin
346 +- Gaëtan Renaudeau
347 +- Geert Pasteels
348 +- Geert-Jan Brits
349 +- George A Sisco III
350 +- Georgii Dolzhykov
351 +- Gert Hengeveld
352 +- Giamir Buoncristiani
353 +- Gil Chen-Zion
354 +- Gilbert
355 +- Giorgio Polvara
356 +- Giuseppe
357 +- Glen Mailer
358 +- Grant Timmerman
359 +- Greg Hurrell
360 +- Greg Palmer
361 +- Greg Perkins
362 +- Greg Roodt
363 +- Gregory
364 +- Grgur Grisogono
365 +- Griffin Michl
366 +- Guangqiang Dong
367 +- Guido Bouman
368 +- Guilherme Oenning
369 +- Guilherme Ruiz
370 +- Guillaume Claret
371 +- Harry Hull
372 +- Harry Marr
373 +- Harry Moreno
374 +- Harshad Sabne
375 +- Hekar Khani
376 +- Hendrik Swanepoel
377 +- Henrik Nyh
378 +- Henry Harris
379 +- Henry Wong
380 +- Henry Zhu
381 +- Hideo Matsumoto
382 +- Hikaru Suido
383 +- Hiroyuki Wada
384 +- Hou Chia
385 +- Huang-Wei Chang
386 +- Hugo Agbonon
387 +- Hugo Jobling
388 +- Hyeock Kwon
389 +- Héctor Ramos
390 +- Héliton Nordt
391 +- Ian Obermiller
392 +- Ian Sutherland
393 +- Ignacio Carbajo
394 +- Igor Scekic
395 +- Ike Peters
396 +- Ilia Pavlenkov
397 +- Ilya Gelman
398 +- Ilya Shuklin
399 +- Ilyá Belsky
400 +- Ingvar Stepanyan
401 +- Irae Carvalho
402 +- Isaac Salier-Hellendag
403 +- Islam Sharabash
404 +- Iurii Kucherov
405 +- Ivan
406 +- Ivan Kozik
407 +- Ivan Krechetov
408 +- Ivan Vergiliev
409 +- Ivan Zotov
410 +- J. Andrew Brassington
411 +- J. Renée Beach
412 +- JD Isaacks
413 +- JJ Weber
414 +- JW
415 +- Jack
416 +- Jack Cross
417 +- Jack Ford
418 +- Jack Zhang
419 +- Jackie Wung
420 +- Jackson Huang
421 +- Jacob Gable
422 +- Jacob Greenleaf
423 +- Jacob Lamont
424 +- Jae Hun Lee
425 +- Jae Hun Ro
426 +- Jaeho Lee
427 +- Jaime Mingo
428 +- Jake Boone
429 +- Jake Worth
430 +- Jakub Malinowski
431 +- James
432 +- James Brantly
433 +- James Burnett
434 +- James Friend
435 +- James Ide
436 +- James Long
437 +- James Pearce
438 +- James Seppi
439 +- James South
440 +- James Wen
441 +- Jamie Wong
442 +- Jamis Charles
443 +- Jamison Dance
444 +- Jan Hancic
445 +- Jan Kassens
446 +- Jan Raasch
447 +- Jan Schär
448 +- Jane Manchun Wong
449 +- Jared Forsyth
450 +- Jared Fox
451 +- Jarrod Mosen
452 +- Jason
453 +- Jason Bonta
454 +- Jason Grlicky
455 +- Jason Ly
456 +- Jason Miller
457 +- Jason Quense
458 +- Jason Trill
459 +- Jason Webster
460 +- Jay Jaeho Lee
461 +- Jay Phelps
462 +- Jayen Ashar
463 +- Jean Lauliac
464 +- Jed Watson
465 +- Jeff Barczewski
466 +- Jeff Carpenter
467 +- Jeff Chan
468 +- Jeff Hicken
469 +- Jeff Kolesky
470 +- Jeff Morrison
471 +- Jeff Welch
472 +- Jeffrey Lin
473 +- Jeffrey Wan
474 +- Jen Wong
475 +- Jeremy Fairbank
476 +- Jess Telford
477 +- Jesse Skinner
478 +- Jignesh Kakadiya
479 +- Jim OBrien
480 +- Jim Sproch
481 +- Jiminikiz
482 +- Jimmy Jea
483 +- Jing Chen
484 +- Jinwoo Oh
485 +- Jinxiu Lee
486 +- Jirat Ki
487 +- Jiyeon Seo
488 +- Jody McIntyre
489 +- Joe Critchley
490 +- Joe Stein
491 +- Joel Auterson
492 +- Joel Denning
493 +- Joel Sequeira
494 +- Johan Tinglöf
495 +- Johannes Baiter
496 +- Johannes Emerich
497 +- Johannes Lumpe
498 +- John Heroy
499 +- John Longanecker
500 +- John Ryan
501 +- John Watson
502 +- John-David Dalton
503 +- Jon Beebe
504 +- Jon Bretman
505 +- Jon Chester
506 +- Jon Hester
507 +- Jon Madison
508 +- Jon Scott Clark
509 +- Jon Tewksbury
510 +- Jonas Enlund
511 +- Jonas Gebhardt
512 +- Jonathan Hsu
513 +- Jonathan Persson
514 +- Jordan Harband
515 +- Jordan Walke
516 +- Jorrit Schippers
517 +- Joseph Nudell
518 +- Joseph Savona
519 +- Josh Bassett
520 +- Josh Duck
521 +- Josh Hunt
522 +- Josh Perez
523 +- Josh Yudaken
524 +- Joshua Evans
525 +- Joshua Go
526 +- Joshua Goldberg
527 +- Joshua Ma
528 +- João Valente
529 +- Juan
530 +- Juan Serrano
531 +- Julen Ruiz Aizpuru
532 +- Julian Viereck
533 +- Julien Bordellier
534 +- Julio Lopez
535 +- Jun Kim
536 +- Jun Wu
537 +- Juraj Dudak
538 +- Justas Brazauskas
539 +- Justin
540 +- Justin Grant
541 +- Justin Jaffray
542 +- Justin Robison
543 +- Justin Woo
544 +- KB
545 +- Kale
546 +- Kamron Batman
547 +- Karl Horky
548 +- Karl Mikkelsen
549 +- Karpich Dmitry
550 +- Karthik Balakrishnan
551 +- Karthik Chintapalli
552 +- Kateryna
553 +- Kaylee Knowles
554 +- KeicaM
555 +- Keito Uchiyama
556 +- Ken Powers
557 +- Kenneth Chau
558 +- Kent C. Dodds
559 +- Kevin Cheng
560 +- Kevin Coughlin
561 +- Kevin Huang
562 +- Kevin Lacker
563 +- Kevin Lau
564 +- Kevin Lin
565 +- Kevin Old
566 +- Kevin Robinson
567 +- Kevin Suttle
568 +- Kewei Jiang
569 +- Keyan Zhang
570 +- Kier Borromeo
571 +- Kiho · Cham
572 +- KimCoding
573 +- Kirk Steven Hansen
574 +- Kit Randel
575 +- Kite
576 +- Kohei TAKATA
577 +- Koo Youngmin
578 +- Krystian Karczewski
579 +- Kunal Mehta
580 +- Kurt Furbush
581 +- Kurt Ruppel
582 +- Kurt Weiberth
583 +- Kyle Kelley
584 +- Kyle Mathews
585 +- Laurence Rowe
586 +- Laurent Etiemble
587 +- Lee Byron
588 +- Lee Jaeyoung
589 +- Lee Sanghyeon
590 +- Lei
591 +- Leland Richardson
592 +- Leon Fedotov
593 +- Leon Yip
594 +- Leonardo YongUk Kim
595 +- Levi Buzolic
596 +- Levi McCallum
597 +- Lewis Blackwood
598 +- Liangzhen Zhu
599 +- Lily
600 +- Linus Unnebäck
601 +- Lipis
602 +- Liz
603 +- Logan Allen
604 +- Lovisa Svallingson
605 +- Lucas
606 +- Ludovico Fischer
607 +- Luigy Leon
608 +- Luke Belliveau
609 +- Luke Horvat
610 +- Lutz Rosema
611 +- MICHAEL JACKSON
612 +- MIKAMI Yoshiyuki
613 +- Maciej Kasprzyk
614 +- Maher Beg
615 +- Maksim Shastsel
616 +- Manas
617 +- Marcelo Alves
618 +- Marcin K.
619 +- Marcin Kwiatkowski
620 +- Marcin Mazurek
621 +- Marcin Szczepanski
622 +- Marcio Puga
623 +- Marcos Ojeda
624 +- Marcy Sutton
625 +- Mariano Desanze
626 +- Mario Souto
627 +- Marius Skaar Ludvigsen
628 +- Marjan
629 +- Mark Anderson
630 +- Mark Funk
631 +- Mark Hintz
632 +- Mark IJbema
633 +- Mark Murphy
634 +- Mark Pedrotti
635 +- Mark Penner
636 +- Mark Richardson
637 +- Mark Rushakoff
638 +- Mark Sun
639 +- Marks Polakovs
640 +- Marlon Landaverde
641 +- Marshall Bowers
642 +- Marshall Roch
643 +- Martin Andert
644 +- Martin Hochel
645 +- Martin Hujer
646 +- Martin Jul
647 +- Martin Konicek
648 +- Martin Mihaylov
649 +- Martin V
650 +- Masaki KOBAYASHI
651 +- Mateusz Burzyński
652 +- Mathieu M-Gosselin
653 +- Mathieu Savy
654 +- Matias Singers
655 +- Matsunoki
656 +- Matt Brookes
657 +- Matt Dunn-Rankin
658 +- Matt Harrison
659 +- Matt Huggins
660 +- Matt Stow
661 +- Matt Zabriskie
662 +- Matthew Dapena-Tretter
663 +- Matthew Herbst
664 +- Matthew Hodgson
665 +- Matthew Johnston
666 +- Matthew King
667 +- Matthew Looi
668 +- Matthew Miner
669 +- Matthew Shotton
670 +- Matthias Le Brun
671 +- Matti Nelimarkka
672 +- Mattijs Kneppers
673 +- Max Donchenko
674 +- Max F. Albrecht
675 +- Max Heiber
676 +- Max Stoiber
677 +- Maxi Ferreira
678 +- Maxim Abramchuk
679 +- Maxwel D'souza
680 +- Merrick Christensen
681 +- Mert Kahyaoğlu
682 +- Michael Chan
683 +- Michael Jackson
684 +- Michael McDermott
685 +- Michael O'Brien
686 +- Michael Randers-Pehrson
687 +- Michael Ridgway
688 +- Michael Sinov
689 +- Michael Terry
690 +- Michael Warner
691 +- Michael Wiencek
692 +- Michael Ziwisky
693 +- Michal Srb
694 +- Michał Ordon
695 +- Michał Pierzchała
696 +- Michele Bertoli
697 +- Michelle Todd
698 +- Michiya
699 +- Mihai Parparita
700 +- Mike D Pilsbury
701 +- Mike Groseclose
702 +- Mike Nordick
703 +- Mikhail Osher
704 +- Mikolaj Dadela
705 +- Miles Johnson
706 +- Miller Medeiros
707 +- Minwe LUO
708 +- Minwei Xu
709 +- Miorel Palii
710 +- Mitchel Humpherys
711 +- Mitermayer Reis
712 +- Moacir Rosa
713 +- Mojtaba Dashtinejad
714 +- Morhaus
715 +- Moshe Kolodny
716 +- Mouad Debbar
717 +- Murad
718 +- Murray M. Moss
719 +- Murtaza Haveliwala
720 +- NE-SmallTown
721 +- Nadeesha Cabral
722 +- Naman Goel
723 +- Nate
724 +- Nate Hunzaker
725 +- Nate Lee
726 +- Nate Norberg
727 +- Nathan Hardy
728 +- Nathan Smith
729 +- Nathan White
730 +- Nee
731 +- Neo
732 +- Neri Marschik
733 +- NestorTejero
734 +- Nguyen Truong Duy
735 +- Nicholas Bergson-Shilcock
736 +- Nicholas Clawson
737 +- Nick Balestra
738 +- Nick Fitzgerald
739 +- Nick Gavalas
740 +- Nick Kasten
741 +- Nick Merwin
742 +- Nick Presta
743 +- Nick Raienko
744 +- Nick Thompson
745 +- Nick Williams
746 +- Nik Nyby
747 +- Nikita Lebedev
748 +- Niklas Boström
749 +- Nikoloz Buligini
750 +- Nima Jahanshahi
751 +- Ning Xia
752 +- Niole Nelson
753 +- Nolan Lawson
754 +- Nuno Campos
755 +- OJ Kwon
756 +- Oiva Eskola
757 +- Oleg
758 +- Oleksii Markhovskyi
759 +- Oliver Zeigermann
760 +- Olivier Tassinari
761 +- Omid Hezaveh
762 +- Oscar Bolmsten
763 +- Oskari Mantere
764 +- Owen Coutts
765 +- Pablo Lacerda de Miranda
766 +- Paolo Moretti
767 +- Pascal Hartig
768 +- Patrick
769 +- Patrick Finnigan
770 +- Patrick Laughlin
771 +- Patrick Stapleton
772 +- Paul Benigeri
773 +- Paul Harper
774 +- Paul Kehrer
775 +- Paul Manta
776 +- Paul O’Shannessy
777 +- Paul Seiffert
778 +- Paul Shen
779 +- Pedro Nauck
780 +- Pete Hunt
781 +- Peter Blazejewicz
782 +- Peter Cottle
783 +- Peter Jaros
784 +- Peter Newnham
785 +- Peter Ruibal
786 +- Petri Lehtinen
787 +- Petri Lievonen
788 +- Phil Quinn
789 +- Phil Rajchgot
790 +- Philip Jackson
791 +- Philipp Spieß
792 +- Pieter De Baets
793 +- Pieter Vanderwerff
794 +- Piotr Czajkowski
795 +- Piper Chester
796 +- Pontus Abrahamsson
797 +- Pouja Nikray
798 +- Prathamesh Sonpatki
799 +- Prayag Verma
800 +- Preston Parry
801 +- Qin Junwen
802 +- RSG
803 +- Rachel D. Cartwright
804 +- Rafael
805 +- Rafael Angeline
806 +- Rafal Dittwald
807 +- Ragnar Þór Valgeirsson
808 +- Rahul Gupta
809 +- Rainer Oviir
810 +- Raito Bezarius
811 +- Rajat Sehgal
812 +- Rajiv Tirumalareddy
813 +- Ram Kaniyur
814 +- Randall Randall
815 +- Ray
816 +- Ray Dai
817 +- Raymond Ha
818 +- Reed Loden
819 +- Remko Tronçon
820 +- Ricardo
821 +- Rich Harris
822 +- Richard
823 +- Richard D. Worth
824 +- Richard Feldman
825 +- Richard Kho
826 +- Richard Littauer
827 +- Richard Livesey
828 +- Richard Maisano
829 +- Richard Roncancio
830 +- Richard Wood
831 +- Richie Thomas
832 +- Rick Beerendonk
833 +- Rick Ford
834 +- Riley Tomasek
835 +- Rob Arnold
836 +- Robert Binna
837 +- Robert Chang
838 +- Robert Haritonov
839 +- Robert Kielty
840 +- Robert Knight
841 +- Robert Martin
842 +- Robert Sedovsek
843 +- Robin Berjon
844 +- Robin Frischmann
845 +- Robin Ricard
846 +- Roderick Hsiao
847 +- Rodrigo Pombo
848 +- Rohan Nair
849 +- Roman Liutikov
850 +- Roman Matusevich
851 +- Roman Pominov
852 +- Roman Vanesyan
853 +- Rui Araújo
854 +- Russ
855 +- Ryan Lahfa
856 +- Ryan Seddon
857 +- Ryo Shibayama
858 +- Sahat Yalkabov
859 +- Saif Hakim
860 +- Saiichi Hashimoto
861 +- Sakina Crocker
862 +- Sam Balana
863 +- Sam Beveridge
864 +- Sam Saccone
865 +- Sam Selikoff
866 +- Samer Buna
867 +- Samuel
868 +- Samuel Hapák
869 +- Samuel Reed
870 +- Samuel Scheiderich
871 +- Samy Al Zahrani
872 +- Sander Spies
873 +- Sasha Aickin
874 +- Sassan Haradji
875 +- Satoshi Nakajima
876 +- Scott
877 +- Scott Burch
878 +- Scott Feeney
879 +- Sean Gransee
880 +- Sean Kinsey
881 +- Sean Smith
882 +- Seba
883 +- Sebastian Markbåge
884 +- Sebastian McKenzie
885 +- Senin Roman
886 +- Seoh Char
887 +- Sercan Eraslan
888 +- Serg
889 +- Sergey Generalov
890 +- Sergey Rubanov
891 +- Seyi Adebajo
892 +- Shane O'Sullivan
893 +- Shaun Trennery
894 +- ShihChi Huang
895 +- Shim Won
896 +- Shinnosuke Watanabe
897 +- Shogun Sea
898 +- Shota Kubota
899 +- Shripad K
900 +- Shubheksha Jalan
901 +- Shuhei Kagawa
902 +- Sibi
903 +- Simen Bekkhus
904 +- Simon Højberg
905 +- Simon Welsh
906 +- Simone Vittori
907 +- Skasi
908 +- Snowmanzzz(Zhengzhong Zhao)
909 +- Soichiro Kawamura
910 +- Soo Jae Hwang
911 +- Sophia
912 +- Sophia Westwood
913 +- Sophie Alpert
914 +- Sota Ohara
915 +- Spen Taylor
916 +- Spencer Ahrens
917 +- Spencer Handley
918 +- Sriram Thiagarajan
919 +- Stefan Dombrowski
920 +- Stephen John Sorensen
921 +- Stephen Murphy
922 +- Stephie
923 +- Sterling Cobb
924 +- Steve Baker
925 +- Steve Mao
926 +- Steven Luscher
927 +- Steven Syrek
928 +- Steven Vachon
929 +- Stolenkid
930 +- Stoyan Stefanov
931 +- Stuart Harris
932 +- SunHuawei
933 +- Sundeep Malladi
934 +- Sung Won Cho
935 +- Sunny Juneja
936 +- Sunny Ripert
937 +- Superlaziness
938 +- Sven Helmberger
939 +- Sverre Johansen
940 +- Swaroop SM
941 +- Sébastien Lorber
942 +- Sławomir Laskowski
943 +- Taegon Kim
944 +- Taeho Kim
945 +- Taehwan, No
946 +- Tanase Hagi
947 +- Tanner
948 +- Tay Yang Shun
949 +- Ted Kim
950 +- TedPowers
951 +- Tengfei Guo
952 +- Teodor Szente
953 +- Tetsuharu OHZEKI
954 +- Tetsuya Hasegawa
955 +- Thibaut Rizzi
956 +- Thomas Aylott
957 +- Thomas Boyt
958 +- Thomas Broadley
959 +- Thomas Reggi
960 +- Thomas Röggla
961 +- Thomas Shaddox
962 +- Thomas Shafer
963 +- ThomasCrvsr
964 +- Tiago Fernandez
965 +- Tienchai Wirojsaksaree
966 +- Tim Routowicz
967 +- Tim Schaub
968 +- Timothy Yung
969 +- Timur Carpeev
970 +- Tobias Reiss
971 +- Tom Duncalf
972 +- Tom Gasson
973 +- Tom Haggie
974 +- Tom Hauburger
975 +- Tom MacWright
976 +- Tom Occhino
977 +- Tomasz Kołodziejski
978 +- Tomoya Suzuki
979 +- Tomáš Hromada
980 +- Tony Rossi
981 +- Tony Spiro
982 +- Toru Kobayashi
983 +- Trevor Smith
984 +- Trinh Hoang Nhu
985 +- Troy DeMonbreun
986 +- Tsung Hung
987 +- Tyler Brock
988 +- Tyler Buchea
989 +- Tyler Deitz
990 +- Ujjwal Ojha
991 +- Uladzimir Havenchyk
992 +- Usman
993 +- Ustin Zarubin
994 +- Vadim Chernysh
995 +- Valentin Shergin
996 +- Van der Auwermeulen Grégoire
997 +- Varayut Lerdkanlayanawat
998 +- Varun Bhuvanendran
999 +- Varun Rau
1000 +- Vasiliy Loginevskiy
1001 +- Vedat Mahir YILMAZ
1002 +- Veljko Tornjanski
1003 +- Vesa Laakso
1004 +- Victor Alvarez
1005 +- Victor Homyakov
1006 +- Victor Koenders
1007 +- Victoria Quirante
1008 +- Vikash Agrawal
1009 +- Ville Immonen
1010 +- Vincent Riemer
1011 +- Vincent Siao
1012 +- Vincent Taing
1013 +- Vipul A M
1014 +- Vitaliy Potapov
1015 +- Vitaly Kramskikh
1016 +- Vitor Balocco
1017 +- Vjeux
1018 +- Vladimir Kovpak
1019 +- Vladimir Tikunov
1020 +- Volkan Unsal
1021 +- Wander Wang
1022 +- Wayne Larsen
1023 +- Weizenlol
1024 +- Whien
1025 +- WickyNilliams
1026 +- Will Myers
1027 +- William Hoffmann
1028 +- Wincent Colaiuta
1029 +- Wout Mertens
1030 +- Xavier Morel
1031 +- XuefengWu
1032 +- Yakov Dalinchuk
1033 +- Yan Li
1034 +- Yasar icli
1035 +- Yaxian
1036 +- YouBao Nong
1037 +- Yuichi Hagio
1038 +- Yura Chuchola
1039 +- Yuriy Dybskiy
1040 +- Yusong Liu
1041 +- Yutaka Nakajima
1042 +- Yuval Dekel
1043 +- Zac Braddy
1044 +- Zac Smith
1045 +- Zach Bruggeman
1046 +- Zach Ramaekers
1047 +- Zacharias
1048 +- Zeke Sikelianos
1049 +- Zhangjd
1050 +- adraeth
1051 +- ankitml
1052 +- arush
1053 +- bel3atar
1054 +- brafdlog
1055 +- brillout
1056 +- chen
1057 +- chocolateboy
1058 +- cjshawMIT
1059 +- clariroid
1060 +- claudiopro
1061 +- cloudy1
1062 +- comerc
1063 +- cutbko
1064 +- davidxi
1065 +- dfrownfelter
1066 +- djskinner
1067 +- dongmeng.ldm
1068 +- everdimension
1069 +- gillchristian
1070 +- gitanupam
1071 +- guoyong yi
1072 +- hanumanthan
1073 +- hao.huang
1074 +- hjmoss
1075 +- hkal
1076 +- iamchenxin
1077 +- iamdoron
1078 +- iawia002
1079 +- imagentleman
1080 +- imjanghyuk
1081 +- inkinworld
1082 +- jaaberg
1083 +- jddxf
1084 +- jinmmd
1085 +- koh-taka
1086 +- kohashi85
1087 +- ksvitkovsky
1088 +- laiso
1089 +- lamo2k123
1090 +- leeyoungalias
1091 +- li.li
1092 +- lucas
1093 +- maxprafferty
1094 +- mdogadailo
1095 +- mfijas
1096 +- mguidotto
1097 +- mondaychen
1098 +- najisawas
1099 +- neeldeep
1100 +- newvlad
1101 +- nhducit
1102 +- ogom
1103 +- pingan1927
1104 +- rgarifullin
1105 +- saiyagg
1106 +- scloudyy
1107 +- segmentationfaulter
1108 +- shifengchen
1109 +- songawee
1110 +- starkch
1111 +- sugarshin
1112 +- tokikuch
1113 +- ventuno
1114 +- wacii
1115 +- wali-s
1116 +- walrusfruitcake
1117 +- yiminghe
1118 +- youmoo
1119 +- yuntao.qyt
1120 +- z.ky
1121 +- zhangjg
1122 +- zhangs
1123 +- zombieJ
1124 +- zwhitchcox
1125 +- "Árni Hermann Reynisson"
1126 +- "元彦"
1127 +- "凌恒"
1128 +- "张敏"
1129 +- "王晓勇"
1130 +- "龙海燕"
\ No newline at end of file
docs/_data/nav_tutorial.yml
+27 -25
@@ -2,87 +2,89 @@
2 items:
3 - id: tutorial
4 title: Before We Start
5 + href: /tutorial/tutorial.html#before-we-start
6 + forceInternal: true
7 subitems:
6 - - id: what-were-building
8 + - id: what-were-building
9 title: What We're Building
8 - href: /react/tutorial/tutorial.html#what-were-building
10 + href: /tutorial/tutorial.html#what-were-building
11 forceInternal: true
12 - id: prerequisites
13 title: Prerequisites
12 - href: /react/tutorial/tutorial.html#prerequisites
14 + href: /tutorial/tutorial.html#prerequisites
15 forceInternal: true
16 - id: how-to-follow-along
17 title: How to Follow Along
16 - href: /react/tutorial/tutorial.html#how-to-follow-along
18 + href: /tutorial/tutorial.html#how-to-follow-along
19 forceInternal: true
20 - id: help-im-stuck
21 title: Help, I'm Stuck!
20 - href: /react/tutorial/tutorial.html#help-im-stuck
22 + href: /tutorial/tutorial.html#help-im-stuck
23 forceInternal: true
24 - id: overview
25 title: Overview
24 - href: /react/tutorial/tutorial.html#overview
26 + href: /tutorial/tutorial.html#overview
27 forceInternal: true
28 subitems:
29 - id: what-is-react
30 title: What is React?
29 - href: /react/tutorial/tutorial.html#what-is-react
31 + href: /tutorial/tutorial.html#what-is-react
32 forceInternal: true
33 - id: getting-started
34 title: Getting Started
33 - href: /react/tutorial/tutorial.html#getting-started
35 + href: /tutorial/tutorial.html#getting-started
36 forceInternal: true
37 - id: passing-data-through-props
38 title: Passing Data Through Props
37 - href: /react/tutorial/tutorial.html#passing-data-through-props
39 + href: /tutorial/tutorial.html#passing-data-through-props
40 forceInternal: true
41 - id: an-interactive-component
42 title: An Interactive Component
41 - href: /react/tutorial/tutorial.html#an-interactive-component
43 + href: /tutorial/tutorial.html#an-interactive-component
44 forceInternal: true
43 - - id: developer-tools
45 + - id: developer-tools
46 title: Developer Tools
45 - href: /react/tutorial/tutorial.html#developer-tools
47 + href: /tutorial/tutorial.html#developer-tools
48 forceInternal: true
49 - id: lifting-state-up
50 title: Lifting State Up
49 - href: /react/tutorial/tutorial.html#lifting-state-up
51 + href: /tutorial/tutorial.html#lifting-state-up
52 forceInternal: true
53 subitems:
52 - - id: why-immutability-is-important
54 + - id: why-immutability-is-important
55 title: Why Immutability Is Important
54 - href: /react/tutorial/tutorial.html#why-immutability-is-important
56 + href: /tutorial/tutorial.html#why-immutability-is-important
57 forceInternal: true
56 - - id: functional-components
58 + - id: functional-components
59 title: Functional Components
58 - href: /react/tutorial/tutorial.html#functional-components
60 + href: /tutorial/tutorial.html#functional-components
61 forceInternal: true
62 - id: taking-turns
63 title: Taking Turns
62 - href: /react/tutorial/tutorial.html#taking-turns
64 + href: /tutorial/tutorial.html#taking-turns
65 forceInternal: true
66 - id: declaring-a-winner
67 title: Declaring a Winner
66 - href: /react/tutorial/tutorial.html#declaring-a-winner
68 + href: /tutorial/tutorial.html#declaring-a-winner
69 forceInternal: true
70 - id: storing-a-history
71 title: Storing A History
70 - href: /react/tutorial/tutorial.html#storing-a-history
72 + href: /tutorial/tutorial.html#storing-a-history
73 forceInternal: true
74 subitems:
75 - id: showing-the-moves
76 title: Showing the Moves
75 - href: /react/tutorial/tutorial.html#showing-the-moves
77 + href: /tutorial/tutorial.html#showing-the-moves
78 forceInternal: true
79 - id: keys
80 title: Keys
79 - href: /react/tutorial/tutorial.html#keys
81 + href: /tutorial/tutorial.html#keys
82 forceInternal: true
81 - - id: implementing-time-travel
83 + - id: implementing-time-travel
84 title: Implementing Time Travel
83 - href: /react/tutorial/tutorial.html#implementing-time-travel
85 + href: /tutorial/tutorial.html#implementing-time-travel
86 forceInternal: true
87 - id: wrapping-up
88 title: Wrapping Up
87 - href: /react/tutorial/tutorial.html#wrapping-up
89 + href: /tutorial/tutorial.html#wrapping-up
90 forceInternal: true
docs/_posts/2013-06-02-jsfiddle-integration.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: JSFiddle Integration
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 [JSFiddle](https://jsfiddle.net) just announced support for React. This is an exciting news as it makes collaboration on snippets of code a lot easier. You can play around this **[base React JSFiddle](http://jsfiddle.net/vjeux/kb3gN/)**, fork it and share it! A [fiddle without JSX](http://jsfiddle.net/vjeux/VkebS/) is also available.
docs/_posts/2013-06-05-why-react.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: Why did we build React?
3 -author: petehunt
3 +author: [petehunt]
4 ---
5
6 There are a lot of JavaScript MVC frameworks out there. Why did we build React
@@ -30,7 +30,7 @@ to render views, which we see as an advantage over templates for a few reasons:
30 **no manual string concatenation** and therefore less surface area for XSS
31 vulnerabilities.
32
33 -We've also created [JSX](/react/docs/jsx-in-depth.html), an optional syntax
33 +We've also created [JSX](/docs/jsx-in-depth.html), an optional syntax
34 extension, in case you prefer the readability of HTML to raw JavaScript.
35
36 ## Reactive updates are dead simple.
@@ -83,6 +83,6 @@ some pretty cool things with it:
83 Head on over to [facebook.github.io/react](/react) to check out what we have
84 built. Our documentation is geared towards building apps with the framework,
85 but if you are interested in the nuts and bolts
86 -[get in touch](/react/support.html) with us!
86 +[get in touch](/support.html) with us!
87
88 Thanks for reading!
docs/_posts/2013-06-12-community-roundup.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #1"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 React was open sourced two weeks ago and it's time for a little round-up of what has been going on.
@@ -12,7 +12,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
12 > I just rewrote a 2000-line project in React and have now made a handful of pull requests to React. Everything about React I've seen so far seems really well thought-out and I'm proud to be the first non-FB/IG production user of React.
13 >
14 > The project that I rewrote in React (and am continuing to improve) is the Khan Academy question editor which content creators can use to enter questions and hints that will be presented to students:
15 -> <figure>[![](/react/img/blog/khan-academy-editor.png)](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html)</figure>
15 +> <figure><a href="http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html"><img src="../img/blog/khan-academy-editor.png"></a></figure>
16 >
17 > [Read the full post...](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html)
18
@@ -38,7 +38,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
38
39 ## Origins of React
40
41 -[Pete Hunt](http://www.petehunt.net/blog/) explained what differentiates React from other JavaScript libraries in [a previous blog post](/react/blog/2013/06/05/why-react.html). [Lee Byron](http://leebyron.com/) gives another perspective on Quora:
41 +[Pete Hunt](http://www.petehunt.net/blog/) explained what differentiates React from other JavaScript libraries in [a previous blog post](/blog/2013/06/05/why-react.html). [Lee Byron](http://leebyron.com/) gives another perspective on Quora:
42
43 > React isn't quite like any other popular JavaScript libraries, and it solves a very specific problem: complex UI rendering. It's also intended to be used along side many other popular libraries. For example, React works well with Backbone.js, amongst many others.
44 >
docs/_posts/2013-06-19-community-roundup-2.md
+8 -8
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #2"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 Since the launch we have received a lot of feedback and are actively working on React 0.4. In the meantime, here are the highlights of this week.
@@ -24,7 +24,7 @@ Since the launch we have received a lot of feedback and are actively working on
24 [Danial Khosravi](https://danialk.github.io/) made a real-time chat application that interacts with the back-end using Socket.IO.
25
26 > A week ago I was playing with AngularJS and [this little chat application](https://github.com/btford/angular-socket-io-im) which uses socket.io and nodejs for realtime communication. Yesterday I saw a post about ReactJS in [EchoJS](http://www.echojs.com/) and started playing with this UI library. After playing a bit with React, I decided to write and chat application using React and I used Bran Ford's Backend for server side of this little app.
27 -> <figure>[![](/react/img/blog/chatapp.png)](https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/)</figure>
27 +> <figure><a href="https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/"><img src="../img/blog/chatapp.png"></a></figure>
28 >
29 > [Read the full post...](https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/)
30
@@ -45,7 +45,7 @@ In the same vein, [Markov Twain](https://twitter.com/markov_twain/status/3457029
45 Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.vjeux.com/) wrote a proof of concept that shows how to implement them using React.
46
47 > Using [x-tags](http://www.x-tags.org/) from Mozilla, we can write custom tags within the DOM. This is a great opportunity to be able to write reusable components without being tied to a particular library. I wrote [x-react](https://github.com/vjeux/react-xtags/) to have them being rendered in React.
48 -> <figure>[![](/react/img/blog/xreact.png)](http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html)</figure>
48 +> <figure><a href="http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html"><img src="../img/blog/xreact.png"></a></figure>
49 >
50 > [Read the full post...](http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html)
51
@@ -56,7 +56,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
56 > Developers these days are spoiled with choice when it comes to selecting an MV* framework for structuring and organizing their JavaScript web apps.
57 >
58 > To help solve this problem, we created TodoMVC - a project which offers the same Todo application implemented using MV* concepts in most of the popular JavaScript MV* frameworks of today.
59 -> <figure>[![](/react/img/blog/todomvc.png)](http://todomvc.com/labs/architecture-examples/react/)</figure>
59 +> <figure><a href="http://todomvc.com/labs/architecture-examples/react/"><img src="../img/blog/todomvc.png"></a></figure>
60 >
61 > [Read the source code...](https://github.com/tastejs/todomvc/tree/gh-pages/labs/architecture-examples/react)
62
@@ -64,7 +64,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
64
65 Many of you pointed out differences between JSX and HTML. In order to clear up some confusion, we have added some documentation that covers the four main differences:
66
67 - - [Whitespace removal](/react/docs/jsx-is-not-html.html)
68 - - [HTML Entities](/react/docs/jsx-is-not-html.html)
69 - - [Comments](/react/docs/jsx-is-not-html.html)
70 - - [Custom HTML Attributes](/react/docs/jsx-is-not-html.html)
67 + - [Whitespace removal](/docs/jsx-is-not-html.html)
68 + - [HTML Entities](/docs/jsx-is-not-html.html)
69 + - [Comments](/docs/jsx-is-not-html.html)
70 + - [Custom HTML Attributes](/docs/jsx-is-not-html.html)
docs/_posts/2013-06-21-react-v0-3-3.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.3.3"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 We have a ton of great stuff coming in v0.4, but in the meantime we're releasing v0.3.3. This release addresses some small issues people were having and simplifies our tools to make them easier to use.
docs/_posts/2013-06-27-community-roundup-3.md
+24 -24
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #3"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 The highlight of this week is that an interaction-heavy app has been ported to React. React components are solving issues they had with nested views.
@@ -9,7 +9,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
9
10 [Clay Allsopp](https://twitter.com/clayallsopp) successfully ported [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/), a fairly big, interaction-heavy JavaScript app, to React.
11
12 -> [<img style="float: right; margin: 0 0 10px 10px;" src="/react/img/blog/propeller-logo.png" />](http://usepropeller.com/blog/posts/from-backbone-to-react/)Subviews involve a lot of easy-to-forget boilerplate that Backbone (by design) doesn't automate. Libraries like Backbone.Marionette offer more abstractions to make view nesting easier, but they're all limited by the fact that Backbone delegates how and went view-document attachment occurs to the application code.
12 +> [<img style="float: right; margin: 0 0 10px 10px;" src="../img/blog/propeller-logo.png" />](http://usepropeller.com/blog/posts/from-backbone-to-react/)Subviews involve a lot of easy-to-forget boilerplate that Backbone (by design) doesn't automate. Libraries like Backbone.Marionette offer more abstractions to make view nesting easier, but they're all limited by the fact that Backbone delegates how and went view-document attachment occurs to the application code.
13 >
14 > React, on the other hand, manages the DOM and only exposes real nodes at select points in its API. The "elements" you code in React are actually objects which wrap DOM nodes, not the actual objects which get inserted into the DOM. Internally, React converts those abstractions into actual DOMElements and fills out the document accordingly. [...]
15 >
@@ -24,24 +24,24 @@ The highlight of this week is that an interaction-heavy app has been ported to R
24 > Grunt task for compiling Facebook React's .jsx templates into .js
25 >
26 > ```javascript
27 -grunt.initConfig({
28 - react: {
29 - app: {
30 - options: { extension: 'js' },
31 - files: { 'path/to/output/dir': 'path/to/jsx/templates/dir' }
32 -```
27 +> grunt.initConfig({
28 +> react: {
29 +> app: {
30 +> options: { extension: 'js' },
31 +> files: { 'path/to/output/dir': 'path/to/jsx/templates/dir' }
32 +> ```
33 >
34 > It also works great with `grunt-browserify`!
35 >
36 > ```javascript
37 -browserify: {
38 - options: {
39 - transform: [ require('grunt-react').browserify ]
40 - },
41 - app: {
42 - src: 'path/to/source/main.js',
43 - dest: 'path/to/target/output.js'
44 -```
37 +> browserify: {
38 +> options: {
39 +> transform: [ require('grunt-react').browserify ]
40 +> },
41 +> app: {
42 +> src: 'path/to/source/main.js',
43 +> dest: 'path/to/target/output.js'
44 +> ```
45 >
46 > [Check out the project ...](https://github.com/ericclemmons/grunt-react)
47
@@ -70,14 +70,14 @@ browserify: {
70 > Multiple people asked what's the story about JSX and CoffeeScript. There is no JSX pre-processor for CoffeeScript and I'm not aware of anyone working on it. Fortunately, CoffeeScript is pretty expressive and we can play around the syntax to come up with something that is usable.
71 >
72 > ```javascript
73 -{div, h3, textarea} = React.DOM
74 -(div {className: 'MarkdownEditor'}, [
75 - (h3 {}, 'Input'),
76 - (textarea {onKeyUp: @handleKeyUp, ref: 'textarea'},
77 - @state.value
78 - )
79 -])
80 -```
73 +> {div, h3, textarea} = React.DOM
74 +> (div {className: 'MarkdownEditor'}, [
75 +> (h3 {}, 'Input'),
76 +> (textarea {onKeyUp: @handleKeyUp, ref: 'textarea'},
77 +> @state.value
78 +> )
79 +> ])
80 +> ```
81 >
82 > [Read the full post...](http://blog.vjeux.com/2013/javascript/react-coffeescript.html)
83
docs/_posts/2013-07-02-react-v0-4-autobind-by-default.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "New in React v0.4: Autobind by Default"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 React v0.4 is very close to completion. As we finish it off, we'd like to share with you some of the major changes we've made since v0.3. This is the first of several posts we'll be making over the next week.
docs/_posts/2013-07-03-community-roundup-4.md
+5 -4
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #4"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 React reconciliation process appears to be very well suited to implement a text editor with a live preview as people at Khan Academy show us.
@@ -18,11 +18,12 @@ React reconciliation process appears to be very well suited to implement a text
18 The best part is the demo of how React reconciliation process makes live editing more user-friendly.
19
20 > Our renderer, post-React, is on the left. A typical math editor's preview is on the right.
21 -> <figure>[<img src="/react/img/blog/monkeys.gif" width="70%" />](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)</figure>
21 +
22 +[![](../img/blog/monkeys.gif)](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)
23
24 ## React Snippets
25
25 -Over the past several weeks, members of our team, [Pete Hunt](http://www.petehunt.net/) and [Paul O'Shannessy](http://zpao.com/), answered many questions that were asked in the [React group](https://groups.google.com/forum/#!forum/reactjs). They give a good overview of how to integrate React with other libraries and APIs through the use of [Mixins](/react/docs/reusable-components.html) and [Lifecycle Methods](/react/docs/working-with-the-browser.html).
26 +Over the past several weeks, members of our team, [Pete Hunt](http://www.petehunt.net/) and [Paul O'Shannessy](http://zpao.com/), answered many questions that were asked in the [React group](https://groups.google.com/forum/#!forum/reactjs). They give a good overview of how to integrate React with other libraries and APIs through the use of [Mixins](/docs/reusable-components.html) and [Lifecycle Methods](/docs/working-with-the-browser.html).
27
28 > [Listening Scroll Event](https://groups.google.com/forum/#!topic/reactjs/l6PnP8qbofk)
29 >
@@ -54,4 +55,4 @@ Over the past several weeks, members of our team, [Pete Hunt](http://www.petehun
55 [Tom Occhino](http://tomocchino.com/) implemented Snake in 150 lines with React.
56
57 > [Check the source on GitHub](https://github.com/tomocchino/react-snake/blob/master/src/snake.js)
57 -> <figure>[![](/react/img/blog/snake.png)](https://tomocchino.github.io/react-snake/)</figure>
58 +> <figure><a href="https://tomocchino.github.io/react-snake/"><img src="../img/blog/snake.png"></a></figure>
docs/_posts/2013-07-11-react-v0-4-prop-validation-and-default-values.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "New in React v0.4: Prop Validation and Default Values"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Many of the questions we got following the public launch of React revolved around `props`, specifically that people wanted to do validation and to make sure their components had sensible defaults.
docs/_posts/2013-07-17-react-v0-4-0.md
+6 -6
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.4.0"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Over the past 2 months we've been taking feedback and working hard to make React even better. We fixed some bugs, made some under-the-hood improvements, and added several features that we think will improve the experience developing with React. Today we're proud to announce the availability of React v0.4!
@@ -10,7 +10,7 @@ This release could not have happened without the support of our growing communit
10
11 React v0.4 has some big changes. We've also restructured the documentation to better communicate how to use React. We've summarized the changes below and linked to documentation where we think it will be especially useful.
12
13 -When you're ready, [go download it](/react/downloads.html)!
13 +When you're ready, [go download it](/docs/installation.html)!
14
15
16 ### React
@@ -18,10 +18,10 @@ When you're ready, [go download it](/react/downloads.html)!
18 * Switch from using `id` attribute to `data-reactid` to track DOM nodes. This allows you to integrate with other JS and CSS libraries more easily.
19 * Support for more DOM elements and attributes (e.g., `<canvas>`)
20 * Improved server-side rendering APIs. `React.renderComponentToString(<component>, callback)` allows you to use React on the server and generate markup which can be sent down to the browser.
21 -* `prop` improvements: validation and default values. [Read our blog post for details...](/react/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html)
22 -* Support for the `key` prop, which allows for finer control over reconciliation. [Read the docs for details...](/react/docs/multiple-components.html)
23 -* Removed `React.autoBind`. [Read our blog post for details...](/react/blog/2013/07/02/react-v0-4-autobind-by-default.html)
24 -* Improvements to forms. We've written wrappers around `<input>`, `<textarea>`, `<option>`, and `<select>` in order to standardize many inconsistencies in browser implementations. This includes support for `defaultValue`, and improved implementation of the `onChange` event, and circuit completion. [Read the docs for details...](/react/docs/forms.html)
21 +* `prop` improvements: validation and default values. [Read our blog post for details...](/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html)
22 +* Support for the `key` prop, which allows for finer control over reconciliation. [Read the docs for details...](/docs/multiple-components.html)
23 +* Removed `React.autoBind`. [Read our blog post for details...](/blog/2013/07/02/react-v0-4-autobind-by-default.html)
24 +* Improvements to forms. We've written wrappers around `<input>`, `<textarea>`, `<option>`, and `<select>` in order to standardize many inconsistencies in browser implementations. This includes support for `defaultValue`, and improved implementation of the `onChange` event, and circuit completion. [Read the docs for details...](/docs/forms.html)
25 * We've implemented an improved synthetic event system that conforms to the W3C spec.
26 * Updates to your component are batched now, which may result in a significantly faster re-render of components. `this.setState` now takes an optional callback as its second parameter. If you were using `onClick={this.setState.bind(this, state)}` previously, you'll want to make sure you add a third parameter so that the event is not treated as the callback.
27
docs/_posts/2013-07-23-community-roundup-5.md
+14 -14
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #5"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 We launched the [React Facebook Page](https://www.facebook.com/react) along with the React v0.4 launch. 700 people already liked it to get updated on the project :)
@@ -75,7 +75,7 @@ React.renderComponent(
75
76 [Tom Occhino](http://tomocchino.com/) and [Jordan Walke](https://github.com/jordwalke), React developers, did a presentation of React at Facebook Seattle's office. Check out the first 25 minutes for the presentation and the remaining 45 for a Q&A. I highly recommend you watching this video.
77
78 -<figure><iframe width="100%" height="400" src="//www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe></figure>
78 +<figure><iframe width="650" height="400" src="//www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe></figure>
79
80
81 ## Docs
@@ -84,15 +84,15 @@ React.renderComponent(
84
85 > Guides
86 >
87 -> * [Why React?](/react/docs/why-react.html)
88 -> * [Displaying Data](/react/docs/displaying-data.html)
89 -> * [JSX in Depth](/react/docs/jsx-in-depth.html)
90 -> * [JSX Gotchas](/react/docs/jsx-gotchas.html)
91 -> * [Interactivity and Dynamic UIs](/react/docs/interactivity-and-dynamic-uis.html)
92 -> * [Multiple Components](/react/docs/multiple-components.html)
93 -> * [Reusable Components](/react/docs/reusable-components.html)
94 -> * [Forms](/react/docs/forms.html)
95 -> * [Working With the Browser](/react/docs/working-with-the-browser.html)
96 -> * [More About Refs](/react/docs/more-about-refs.html)
97 -> * [Tooling integration](/react/docs/tooling-integration.html)
98 -> * [Reference](/react/docs/top-level-api.html)
87 +> * [Why React?](/docs/why-react.html)
88 +> * [Displaying Data](/docs/displaying-data.html)
89 +> * [JSX in Depth](/docs/jsx-in-depth.html)
90 +> * [JSX Gotchas](/docs/jsx-gotchas.html)
91 +> * [Interactivity and Dynamic UIs](/docs/interactivity-and-dynamic-uis.html)
92 +> * [Multiple Components](/docs/multiple-components.html)
93 +> * [Reusable Components](/docs/reusable-components.html)
94 +> * [Forms](/docs/forms.html)
95 +> * [Working With the Browser](/docs/working-with-the-browser.html)
96 +> * [More About Refs](/docs/more-about-refs.html)
97 +> * [Tooling integration](/docs/tooling-integration.html)
98 +> * [Reference](/docs/top-level-api.html)
docs/_posts/2013-07-26-react-v0-4-1.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.4.1"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 React v0.4.1 is a small update, mostly containing correctness fixes. Some code has been restructured internally but those changes do not impact any of our public APIs.
@@ -21,4 +21,4 @@ React v0.4.1 is a small update, mostly containing correctness fixes. Some code h
21 * Improved environment detection so it can be run in a non-browser environment.
22
23
24 -[Download it now!](/react/downloads.html)
24 +[Download it now!](/downloads.html)
docs/_posts/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Use React and JSX in Ruby on Rails"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're releasing a gem to make it easier to use React and JSX in Ruby on Rails applications: [react-rails](https://github.com/facebook/react-rails).
docs/_posts/2013-08-05-community-roundup-6.md
+5 -5
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #6"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 This is the first Community Round-up where none of the items are from Facebook/Instagram employees. It's great to see the adoption of React growing.
@@ -8,7 +8,7 @@ This is the first Community Round-up where none of the items are from Facebook/I
8 ## React Game Tutorial
9
10 [Caleb Cassel](https://twitter.com/CalebCassel) wrote a [step-by-step tutorial](https://rawgithub.com/calebcassel/react-demo/master/part1.html) about making a small game. It covers JSX, State and Events, Embedded Components and Integration with Backbone.
11 -<figure>[![](/react/img/blog/dog-tutorial.png)](https://rawgithub.com/calebcassel/react-demo/master/part1.html)</figure>
11 +<figure><a href="https://rawgithub.com/calebcassel/react-demo/master/part1.html"><img src="../img/blog/dog-tutorial.png"></a></figure>
12
13
14 ## Reactify
@@ -18,8 +18,8 @@ This is the first Community Round-up where none of the items are from Facebook/I
18 > Browserify v2 transform for `text/jsx`. Basic usage is:
19 >
20 > ```
21 -% browserify -t reactify main.jsx
22 -```
21 +> % browserify -t reactify main.jsx
22 +> ```
23 >
24 > `reactify` transform activates for files with either `.jsx` extension or `/** @jsx React.DOM */` pragma as a first line for any `.js` file.
25 >
@@ -74,6 +74,6 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
74 > I'm the author of "[Land of Lisp](http://landoflisp.com/)" and I love your framework. I built a somewhat similar framework a year ago [WebFUI](https://github.com/drcode/webfui) aimed at ClojureScript. My framework also uses global event delegates, a global "render" function, DOM reconciliation, etc just like react.js. (Of course these ideas all have been floating around the ether for ages, always great to see more people building on them.)
75 >
76 > Your implementation is more robust, and so I think the next point release of webfui will simply delegate all the "hard work" to react.js and will only focus on the areas where it adds value (enabling purely functional UI programming in clojurescript, and some other stuff related to streamlining event handling)
77 -<figure>[![](/react/img/blog/landoflisp.png)](https://groups.google.com/forum/#!msg/reactjs/e3bYersyd64/qODfcuBR9LwJ)</figure>
77 +<figure><a href="https://groups.google.com/forum/#!msg/reactjs/e3bYersyd64/qODfcuBR9LwJ"><img src="../img/blog/landoflisp.png"></a></figure>
78 >
79 > [Read the full post...](https://groups.google.com/forum/#!msg/reactjs/e3bYersyd64/qODfcuBR9LwJ)
docs/_posts/2013-08-19-use-react-and-jsx-in-python-applications.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Use React and JSX in Python Applications"
3 -author: kmeht
3 +author: [kmeht]
4 ---
5
6 Today we're happy to announce the initial release of [PyReact](https://github.com/facebook/react-python), which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files.
docs/_posts/2013-08-26-community-roundup-7.md
+4 -4
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #7"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 It's been three months since we open sourced React and it is going well. Some stats so far:
@@ -10,14 +10,14 @@ It's been three months since we open sourced React and it is going well. Some st
10 * [226 posts on Google Group](https://groups.google.com/forum/#!forum/reactjs)
11 * [76 GitHub projects using React](https://gist.github.com/vjeux/6335762)
12 * [30 contributors](https://github.com/facebook/react/graphs/contributors)
13 -* [15 blog posts](/react/blog/)
13 +* [15 blog posts](/blog/)
14 * 2 early adopters: [Khan Academy](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html) and [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/)
15
16
17 ## Wolfenstein Rendering Engine Ported to React
18
19 [Pete Hunt](http://www.petehunt.net/) ported the render code of the web version of Wolfenstein 3D to React. Check out [the demo](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html) and [render.js](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183) file for the implementation.
20 -<figure>[![](/react/img/blog/wolfenstein_react.png)](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html)</figure>
20 +<figure><a href="http://www.petehunt.net/wolfenstein3D-react/wolf3d.html"><img src="../img/blog/wolfenstein_react.png"></a></figure>
21
22
23 ## React & Meteor
@@ -51,7 +51,7 @@ It's been three months since we open sourced React and it is going well. Some st
51 [Jordan Walke](https://github.com/jordwalke) implemented a complete React project creator called [react-page](https://github.com/facebook/react-page/). It supports both server-side and client-side rendering, source transform and packaging JSX files using CommonJS modules, and instant reload.
52
53 > Easy Application Development with React JavaScript
54 -> <figure>[![](/react/img/blog/react-page.png)](https://github.com/facebook/react-page/)</figure>
54 +> <figure><a href="https://github.com/facebook/react-page/"><img src="../img/blog/react-page.png"></a></figure>
55 >
56 > **Why Server Rendering?**
57 >
docs/_posts/2013-09-24-community-roundup-8.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #8"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 A lot has happened in the month since our last update. Here are some of the more interesting things we've found. But first, we have a couple updates before we share links.
@@ -54,13 +54,13 @@ While this is not going to work for all the attributes since they are camelCased
54 ## Markdown in React
55
56 [Sophie Alpert](http://sophiebits.com/) converted [marked](https://github.com/chjj/marked), a Markdown JavaScript implementation, in React: [marked-react](https://github.com/sophiebits/marked-react). Even without using JSX, the HTML generation is now a lot cleaner. It is also safer as forgetting a call to `escape` will not introduce an XSS vulnerability.
57 -<figure>[![](/react/img/blog/markdown_refactor.png)](https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457)</figure>
57 +<figure><a href="https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457"><img src="../img/blog/markdown_refactor.png"></a></figure>
58
59
60 ## Unite from BugBusters
61
62 [Renault John Lecoultre](https://twitter.com/renajohn) wrote [Unite](https://www.bugbuster.com/), an interactive tool for analyzing code dynamically using React. It integrates with CodeMirror.
63 -<figure>[![](/react/img/blog/unite.png)](https://unite.bugbuster.com/)</figure>
63 +<figure><a href="https://unite.bugbuster.com/"><img src="../img/blog/unite.png"></a></figure>
64
65 ## #reactjs IRC Logs
66
docs/_posts/2013-10-16-react-v0.5.0.md
+3 -3
@@ -1,13 +1,13 @@
1 ---
2 title: "React v0.5"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 This release is the result of several months of hard work from members of the team and the community. While there are no groundbreaking changes in core, we've worked hard to improve performance and memory usage. We've also worked hard to make sure we are being consistent in our usage of DOM properties.
7
8 The biggest change you'll notice as a developer is that we no longer support `class` in JSX as a way to provide CSS classes. Since this prop was being converted to `className` at the transform step, it caused some confusion when trying to access it in composite components. As a result we decided to make our DOM properties mirror their counterparts in the JS DOM API. There are [a few exceptions](https://github.com/facebook/react/blob/master/src/dom/DefaultDOMPropertyConfig.js#L156) where we deviate slightly in an attempt to be consistent internally.
9
10 -The other major change in v0.5 is that we've added an additional build - `react-with-addons` - which adds support for some extras that we've been working on including animations and two-way binding. [Read more about these addons in the docs](/react/docs/addons.html).
10 +The other major change in v0.5 is that we've added an additional build - `react-with-addons` - which adds support for some extras that we've been working on including animations and two-way binding. [Read more about these addons in the docs](/docs/addons.html).
11
12 ## Thanks to Our Community
13
@@ -41,7 +41,7 @@ It's been awesome to see the things that people are building with React, and we
41
42 ### React with Addons (New!)
43
44 -* Introduced a separate build with several "addons" which we think can help improve the React experience. We plan to deprecate this in the long-term, instead shipping each as standalone pieces. [Read more in the docs](/react/docs/addons.html).
44 +* Introduced a separate build with several "addons" which we think can help improve the React experience. We plan to deprecate this in the long-term, instead shipping each as standalone pieces. [Read more in the docs](/docs/addons.html).
45
46 ### JSX
47
docs/_posts/2013-10-29-react-v0-5-1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.5.1"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 This release focuses on fixing some small bugs that have been uncovered over the past two weeks. I would like to thank everybody involved, specifically members of the community who fixed half of the issues found. Thanks to [Sophie Alpert][1], [Andrey Popp][2], and [Laurence Rowe][3] for their contributions!
docs/_posts/2013-10-3-community-roundup-9.md
+10 -10
@@ -1,11 +1,11 @@
1 ---
2 title: "Community Round-up #9"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 We organized a React hackathon last week-end in the Facebook Seattle office. 50 people, grouped into 15 teams, came to hack for a day on React. It was a lot of fun and we'll probably organize more in the future.
7
8 -![](/react/img/blog/react-hackathon.jpg)
8 +![](../img/blog/react-hackathon.jpg)
9
10
11 ## React Hackathon Winner
@@ -15,7 +15,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
15 > The game itself is pretty simple. People join the "room" by going to [http://qu.izti.me](http://qu.izti.me/) on their device. Large displays will show a leaderboard along with the game, and small displays (such as phones) will act as personal gamepads. Users will see questions and a choice of answers. The faster you answer, the more points you earn.
16 >
17 > In my opinion, Socket.io and React go together like chocolate and peanut butter. The page was always an accurate representation of the game object.
18 -><figure>[![](/react/img/blog/quiztime.png)](http://bold-it.com/javascript/facebook-react-example/)</figure>
18 +><figure><a href="http://bold-it.com/javascript/facebook-react-example/"><img src="../img/blog/quiztime.png"></a></figure>
19 >
20 > [Read More...](http://bold-it.com/javascript/facebook-react-example/)
21
@@ -59,8 +59,8 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
59 > A wrapper around JSHint to allow linting of files containing JSX syntax. Accepts glob patterns. Respects your local .jshintrc file and .gitignore to filter your glob patterns.
60 >
61 > ```
62 -npm install -g jsxhint
63 -```
62 +> npm install -g jsxhint
63 +> ```
64 >
65 > [Check it out on GitHub...](https://github.com/CondeNast/JSXHint)
66
@@ -74,7 +74,7 @@ npm install -g jsxhint
74 > The panel is rendered with a random panel- class on each request, and the progress bar gets a random widthX class.
75 >
76 > With Turbolinks alone, the entire <body> would be replaced, and transitions would not happen. In this little demo though, React adds and removes classes and text, and the attribute changes are animated with CSS transitions. The DOM is otherwise left intact.
77 -><figure>[![](/react/img/blog/turboreact.png)](https://turbo-react.herokuapp.com/)</figure>
77 +><figure><a href="https://turbo-react.herokuapp.com/"><img src="../img/blog/turboreact.png"></a></figure>
78 >
79 > [Check out the demo...](https://turbo-react.herokuapp.com/)
80
@@ -88,10 +88,10 @@ npm install -g jsxhint
88 > Let's call it Table (to avoid any confusion what the component is about).
89 >
90 > ```javascript
91 -var Table = React.createClass({
92 - /*stuff goeth here*/
93 -});
94 -```
91 +> var Table = React.createClass({
92 +> /*stuff goeth here*/
93 +> });
94 +> ```
95 >
96 > You see that React components are defined using a regular JS object. Some properties and methods of the object such as render() have special meanings, the rest is upforgrabs.
97 >
docs/_posts/2013-11-06-community-roundup-10.md
+4 -4
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #10"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 This is the 10th round-up already and React has come quite far since it was open sourced. Almost all new web projects at Khan Academy, Facebook, and Instagram are being developed using React. React has been deployed in a variety of contexts: a Chrome extension, a Windows 8 application, mobile websites, and desktop websites supporting Internet Explorer 8! Language-wise, React is not only being used within JavaScript but also CoffeeScript and ClojureScript.
@@ -26,7 +26,7 @@ The best part is that no drastic changes have been required to support all those
26
27 [Pete Hunt](http://www.petehunt.net/)'s talk at JSConf EU 2013 is now available in video.
28
29 -<figure><iframe width="100%" height="370" src="//www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe></figure>
29 +<figure><iframe width="650" height="370" src="//www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe></figure>
30
31
32 ## Server-side React with PHP
@@ -47,7 +47,7 @@ The best part is that no drastic changes have been required to support all those
47 > [**Read part 2 ...**](http://www.phpied.com/server-side-react-with-php-part-2/)
48 >
49 > Rendered markup on the server:
50 -> <figure>[![](/react/img/blog/react-php.png)](http://www.phpied.com/server-side-react-with-php-part-2/)</figure>
50 +> <figure><a href="http://www.phpied.com/server-side-react-with-php-part-2/"><img src="../img/blog/react-php.png"></a></figure>
51
52
53 ## TodoMVC Benchmarks
@@ -92,7 +92,7 @@ The fact that you can control when components are rendered is a very important c
92 ## Guess the filter
93
94 [Connor McSheffrey](http://conr.me) implemented a small game using React. The goal is to guess which filter has been used to create the Instagram photo.
95 -<figure>[![](/react/img/blog/guess_filter.jpg)](http://guessthefilter.com/)</figure>
95 +<figure><a href="http://guessthefilter.com/"><img src="../img/blog/guess_filter.jpg"></a></figure>
96
97
98 ## React vs FruitMachine
docs/_posts/2013-11-18-community-roundup-11.md
+19 -19
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #11"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 This round-up is the proof that React has taken off from its Facebook's root: it features three in-depth presentations of React done by external people. This is awesome, keep them coming!
@@ -9,25 +9,25 @@ This round-up is the proof that React has taken off from its Facebook's root: it
9
10 [Steve Luscher](https://github.com/steveluscher) working at [LeanPub](https://leanpub.com/) made a 30 min talk at [Super VanJS](https://twitter.com/vanjs). He does a remarkable job at explaining why React is so fast with very exciting demos using the HTML5 Audio API.
11
12 -<figure><iframe width="100%" height="338" src="//www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe></figure>
12 +<figure><iframe width="650" height="338" src="//www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe></figure>
13
14
15 ## React Tips
16
17 -[Connor McSheffrey](http://connormcsheffrey.com/) and [Cheng Lou](https://github.com/chenglou) added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we [encourage you to contribute](/react/tips/introduction.html)!
17 +[Connor McSheffrey](http://connormcsheffrey.com/) and [Cheng Lou](https://github.com/chenglou) added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we [encourage you to contribute](/tips/introduction.html)!
18
19 -- [Inline Styles](/react/tips/inline-styles.html)
20 -- [If-Else in JSX](/react/tips/if-else-in-JSX.html)
21 -- [Self-Closing Tag](/react/tips/self-closing-tag.html)
22 -- [Maximum Number of JSX Root Nodes](/react/tips/maximum-number-of-jsx-root-nodes.html)
23 -- [Shorthand for Specifying Pixel Values in style props](/react/tips/style-props-value-px.html)
24 -- [Type of the Children props](/react/tips/children-props-type.html)
25 -- [Value of null for Controlled Input](/react/tips/controlled-input-null-value.html)
26 -- [`componentWillReceiveProps` Not Triggered After Mounting](/react/tips/componentWillReceiveProps-not-triggered-after-mounting.html)
27 -- [Props in getInitialState Is an Anti-Pattern](/react/tips/props-in-getInitialState-as-anti-pattern.html)
28 -- [DOM Event Listeners in a Component](/react/tips/dom-event-listeners.html)
29 -- [Load Initial Data via AJAX](/react/tips/initial-ajax.html)
30 -- [False in JSX](/react/tips/false-in-jsx.html)
19 +- [Inline Styles](/tips/inline-styles.html)
20 +- [If-Else in JSX](/tips/if-else-in-JSX.html)
21 +- [Self-Closing Tag](/tips/self-closing-tag.html)
22 +- [Maximum Number of JSX Root Nodes](/tips/maximum-number-of-jsx-root-nodes.html)
23 +- [Shorthand for Specifying Pixel Values in style props](/tips/style-props-value-px.html)
24 +- [Type of the Children props](/tips/children-props-type.html)
25 +- [Value of null for Controlled Input](/tips/controlled-input-null-value.html)
26 +- [`componentWillReceiveProps` Not Triggered After Mounting](/tips/componentWillReceiveProps-not-triggered-after-mounting.html)
27 +- [Props in getInitialState Is an Anti-Pattern](/tips/props-in-getInitialState-as-anti-pattern.html)
28 +- [DOM Event Listeners in a Component](/tips/dom-event-listeners.html)
29 +- [Load Initial Data via AJAX](/tips/initial-ajax.html)
30 +- [False in JSX](/tips/false-in-jsx.html)
31
32
33 ## Intro to the React Framework
@@ -35,7 +35,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
35 [Pavan Podila](http://blog.pixelingene.com/) wrote an in-depth introduction to React on TutsPlus. This is definitively worth reading.
36
37 > Within a component-tree, data should always flow down. A parent-component should set the props of a child-component to pass any data from the parent to the child. This is termed as the Owner-Owned pair. On the other hand user-events (mouse, keyboard, touches) will always bubble up from the child all the way to the root component, unless handled in between.
38 -<figure>[![](/react/img/blog/tutsplus.png)](http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660)</figure>
38 +<figure><a href="http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660"><img src="../img/blog/tutsplus.png"></a></figure>
39 >
40 > [Read the full article ...](http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660)
41
@@ -51,7 +51,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
51 ## Genesis Skeleton
52
53 [Eric Clemmons](https://ericclemmons.github.io/) is working on a "Modern, opinionated, full-stack starter kit for rapid, streamlined application development". The version 0.4.0 has just been released and has first-class support for React.
54 -<figure>[![](/react/img/blog/genesis_skeleton.png)](http://genesis-skeleton.com/)</figure>
54 +<figure><a href="http://genesis-skeleton.com/"><img src="../img/blog/genesis_skeleton.png"></a>a></figure>
55
56
57 ## AgFlow Talk
@@ -82,10 +82,10 @@ This round-up is the proof that React has taken off from its Facebook's root: it
82 ## Photo Gallery
83
84 [Maykel Loomans](http://miekd.com/), designer at Instagram, wrote a gallery for photos he shot using React.
85 -<figure>[![](/react/img/blog/xoxo2013.png)](http://photos.miekd.com/xoxo2013/)</figure>
85 +<figure><a href="http://photos.miekd.com/xoxo2013/"><img src="../img/blog/xoxo2013.png"></a>a></figure>
86
87
88 ## Random Tweet
89
90 -<img src="/react/img/blog/steve_reverse.gif" style="float: right;" />
90 +<img src="../img/blog/steve_reverse.gif" style="float: right;" />
91 <div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>
docs/_posts/2013-12-18-react-v0.5.2-v0.4.2.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.5.2, v0.4.2"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're releasing an update to address a potential XSS vulnerability that can arise when using user data as a `key`. Typically "safe" data is used for a `key`, for example, an id from your database, or a unique hash. However there are cases where it may be reasonable to use user generated content. A carefully crafted piece of content could result in arbitrary JS execution. While we make a very concerted effort to ensure all text is escaped before inserting it into the DOM, we missed one case. Immediately following the discovery of this vulnerability, we performed an audit to ensure we this was the only such vulnerability.
docs/_posts/2013-12-19-react-v0.8.0.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.8"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 I'll start by answering the obvious question:
docs/_posts/2013-12-23-community-roundup-12.md
+22 -22
@@ -1,20 +1,20 @@
1 ---
2 title: "Community Round-up #12"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 -React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the [docs](/react/docs/getting-started.html) and do not hesitate to ask questions on the [Google Group](https://groups.google.com/group/reactjs), [IRC](irc://chat.freenode.net/reactjs) or [Stack Overflow](http://stackoverflow.com/questions/tagged/reactjs). We are trying our best to help you out!
6 +React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the [docs](/docs/getting-started.html) and do not hesitate to ask questions on the [Google Group](https://groups.google.com/group/reactjs), [IRC](irc://chat.freenode.net/reactjs) or [Stack Overflow](http://stackoverflow.com/questions/tagged/reactjs). We are trying our best to help you out!
7
8 ## The Future of JavaScript MVC
9
10 -[David Nolen](https://swannodette.github.io/) announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient [shouldComponentUpdate](/react/docs/component-specs.html#updating-shouldcomponentupdate) and get huge performance improvements on some tasks.
10 +[David Nolen](https://swannodette.github.io/) announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient [shouldComponentUpdate](/docs/component-specs.html#updating-shouldcomponentupdate) and get huge performance improvements on some tasks.
11
12 > We've known this for some time over here in the ClojureScript corner of the world - all of our collections are immutable and modeled directly on the original Clojure versions written in Java. Modern JavaScript engines have now been tuned to the point that it's no longer uncommon to see collection performance within 2.5X of the Java Virtual Machine.
13 >
14 > Wait, wait, wait. What does the performance of persistent data structures have to do with the future of JavaScript MVCs?
15 >
16 > A whole lot.
17 -> <figure>[![](/react/img/blog/om-backbone.png)](https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/)</figure>
17 +> <figure><a href="https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/"><img src="../img/blog/om-backbone.png"></a></figure>
18 >
19 > [Read the full article...](https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/)
20
@@ -22,31 +22,31 @@ React got featured on the front-page of Hacker News thanks to the Om library. If
22
23 ## Scroll Position with React
24
25 -Managing the scroll position when new content is inserted is usually very tricky to get right. [Vjeux](http://blog.vjeux.com/) discovered that [componentWillUpdate](/react/docs/component-specs.html#updating-componentwillupdate) and [componentDidUpdate](/react/docs/component-specs.html#updating-componentdidupdate) were triggered exactly at the right time to manage the scroll position.
25 +Managing the scroll position when new content is inserted is usually very tricky to get right. [Vjeux](http://blog.vjeux.com/) discovered that [componentWillUpdate](/docs/component-specs.html#updating-componentwillupdate) and [componentDidUpdate](/docs/component-specs.html#updating-componentdidupdate) were triggered exactly at the right time to manage the scroll position.
26
27 > We can check the scroll position before the component has updated with componentWillUpdate and scroll if necessary at componentDidUpdate
28 >
29 > ```
30 -componentWillUpdate: function() {
31 - var node = this.getDOMNode();
32 - this.shouldScrollBottom =
33 - (node.scrollTop + node.offsetHeight) === node.scrollHeight;
34 -},
35 -componentDidUpdate: function() {
36 - if (this.shouldScrollBottom) {
37 - var node = this.getDOMNode();
38 - node.scrollTop = node.scrollHeight
39 - }
40 -},
41 -```
30 +> componentWillUpdate: function() {
31 +> var node = this.getDOMNode();
32 +> this.shouldScrollBottom =
33 +> (node.scrollTop + node.offsetHeight) === node.scrollHeight;
34 +> },
35 +> componentDidUpdate: function() {
36 +> if (this.shouldScrollBottom) {
37 +> var node = this.getDOMNode();
38 +> node.scrollTop = node.scrollHeight
39 +> }
40 +> },
41 +> ```
42 >
43 > [Check out the blog article...](http://blog.vjeux.com/2013/javascript/scroll-position-with-react.html)
44
45
46 ## Lights Out
47
48 -React declarative approach is well suited to write games. [Cheng Lou](https://github.com/chenglou) wrote the famous Lights Out game in React. It's a good example of use of [TransitionGroup](/react/docs/animation.html) to implement animations.
49 -<figure>[![](/react/img/blog/lights-out.png)](https://chenglou.github.io/react-lights-out/)</figure>
48 +React declarative approach is well suited to write games. [Cheng Lou](https://github.com/chenglou) wrote the famous Lights Out game in React. It's a good example of use of [TransitionGroup](/docs/animation.html) to implement animations.
49 +<figure><a href="https://chenglou.github.io/react-lights-out/"><img src="../img/blog/lights-out.png"></a></figure>
50
51 [Try it out!](https://chenglou.github.io/react-lights-out/)
52
@@ -54,7 +54,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
54 ## Reactive Table Bookmarklet
55
56 [Stoyan Stefanov](http://www.phpied.com/) wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json.
57 -<figure>[![](/react/img/blog/reactive-bookmarklet.png)](http://www.phpied.com/reactivetable-bookmarklet/)</figure>
57 +<figure><a href="http://www.phpied.com/reactivetable-bookmarklet/"><img src="../img/blog/reactive-bookmarklet.png"></a></figure>
58
59 [Check out the blog post...](http://www.phpied.com/reactivetable-bookmarklet/)
60
@@ -91,9 +91,9 @@ hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
91 ## JSX Compiler
92
93 Ever wanted to have a quick way to see what a JSX tag would be converted to? [Tim Yung](http://www.yungsters.com/) made a page for it.
94 -<figure>[![](/react/img/blog/jsx-compiler.png)](/react/jsx-compiler.html)</figure>
94 +<figure><a href="/react/jsx-compiler.html"><img src="../img/blog/jsx-compiler.png"></a></figure>
95
96 -[Try it out!](/react/jsx-compiler.html)
96 +[Try it out!](/jsx-compiler.html)
97
98
99
docs/_posts/2013-12-30-community-roundup-13.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #13"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 Happy holidays! This blog post is a little-late Christmas present for all the React users. Hopefully it will inspire you to write awesome web apps in 2014!
@@ -19,7 +19,7 @@ Happy holidays! This blog post is a little-late Christmas present for all the Re
19
20 [Stoyan Stefanov](http://www.phpied.com/) talked at Joe Dev On Tech about React. He goes over all the features of the library and ends with a concrete example.
21
22 -<figure><iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe></figure>
22 +<figure><iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe></figure>
23
24
25 ## JSX: E4X The Good Parts
@@ -94,7 +94,7 @@ var MyComponent = React.createClass({
94 [David Chang](http://davidandsuzi.com/) working at [HasOffer](http://www.hasoffers.com/) wanted to speed up his Angular app and replaced Angular primitives by React at different layers. When using React naively it is 67% faster, but when combining it with angular's transclusion it is 450% slower.
95
96 > Rendering this takes 803ms for 10 iterations, hovering around 35 and 55ms for each data reload (that's 67% faster). You'll notice that the first load takes a little longer than successive loads, and the second load REALLY struggles - here, it's 433ms, which is more than half of the total time!
97 -> <figure>[![](/react/img/blog/ngreact.png)](http://davidandsuzi.com/ngreact-react-components-in-angular/)</figure>
97 +> <figure><a href="http://davidandsuzi.com/ngreact-react-components-in-angular/"><img src="../img/blog/ngreact.png"></a></figure>
98 >
99 > [Read the full article...](http://davidandsuzi.com/ngreact-react-components-in-angular/)
100
docs/_posts/2014-01-02-react-chrome-developer-tools.md
+3 -3
@@ -1,17 +1,17 @@
1 ---
2 title: "React Chrome Developer Tools"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 ---
5
6 With the new year, we thought you'd enjoy some new tools for debugging React code. Today we're releasing the [React Developer Tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi), an extension to the Chrome Developer Tools. [Download them from the Chrome Web Store](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi).
7
8 -<figure><iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/Cey7BS6dE0M" frameborder="0" allowfullscreen></iframe></figure>
8 +<figure><iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/Cey7BS6dE0M" frameborder="0" allowfullscreen></iframe></figure>
9
10 You will get a new tab titled "React" in your Chrome DevTools. This tab shows you a list of the root React Components that are rendered on the page as well as the subcomponents that each root renders.
11
12 Selecting a Component in this tab allows you to view and edit its props and state in the panel on the right. In the breadcrumbs at the bottom, you can inspect the selected Component, the Component that created it, the Component that created that one, and so on.
13
14 When you inspect a DOM element using the regular Elements tab, you can switch over to the React tab and the corresponding Component will be automatically selected. The Component will also be automatically selected if you have a breakpoint within its render phase. This allows you to step through the render tree and see how one Component affects another one.
15 -<figure>[![](/react/img/blog/react-dev-tools.jpg)](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi)</figure>
15 +<figure><a href="https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi"><img src="../img/blog/react-dev-tools.jpg"></a></figure>
16
17 We hope these tools will help your team better understand your component hierarchy and track down bugs. We're very excited about this initial launch and appreciate any feedback you may have. As always, we also accept [pull requests on GitHub](https://github.com/facebook/react-devtools).
docs/_posts/2014-01-06-community-roundup-14.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #14"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 The theme of this first round-up of 2014 is integration. I've tried to assemble a list of articles and projects that use React in various environments.
@@ -21,14 +21,14 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
21 ## Animal Sounds
22
23 [Josh Duck](http://joshduck.com/) used React in order to build a Windows 8 tablet app. This is a good example of a touch app written in React.
24 -<figure>[![](/react/img/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)</figure>
24 +[![](../img/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
25
26 [Download the app...](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
27
28
29 ## React Rails Tutorial
30
31 -[Selem Delul](http://selem.im) bundled the [React Tutorial](/react/tutorial/tutorial.html) into a rails app. This is a good example on how to get started with a rails project.
31 +[Selem Delul](http://selem.im) bundled the [React Tutorial](/tutorial/tutorial.html) into a rails app. This is a good example on how to get started with a rails project.
32
33 > ```
34 git clone https://github.com/necrodome/react-rails-tutorial
docs/_posts/2014-02-05-community-roundup-15.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #15"
3 -author: jgebhardt
3 +author: [jgebhardt]
4 ---
5
6 Interest in React seems to have surged ever since David Nolen ([@swannodette](https://twitter.com/swannodette))'s introduction of [Om](https://github.com/swannodette/om) in his post ["The Future of JavaScript MVC Frameworks"](https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/).
@@ -34,7 +34,7 @@ React's one-way data-binding naturally lends itself to a functional programming
34
35 Pete also explains this in detail at his #MeteorDevShop talk (about 30 Minutes):
36
37 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/Lqcs6hPOcFw?start=2963" frameborder="0" allowfullscreen></iframe>
37 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/Lqcs6hPOcFw?start=2963" frameborder="0" allowfullscreen></iframe>
38
39
40
docs/_posts/2014-02-15-community-roundup-16.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #16"
3 -author: jgebhardt
3 +author: [jgebhardt]
4 ---
5
6 There have been many posts recently covering the <i>why</i> and <i>how</i> of React. This week's community round-up includes a collection of recent articles to help you get started with React, along with a few posts that explain some of the inner workings.
@@ -15,7 +15,7 @@ Got five minutes to pitch React to your coworkers? John Lynch ([@johnrlynch](htt
15
16 ## React's diff algorithm
17
18 -React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](/react/img/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
18 +React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](../img/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
19
20 While we're talking about tree diffing: Matt Esch ([@MatthewEsch](https://twitter.com/MatthewEsch)) created [this project](https://github.com/Matt-Esch/virtual-dom), which aims to implement the virtual DOM and a corresponding diff algorithm as separate modules.
21
@@ -67,7 +67,7 @@ Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on wh
67 > [Read the full post...](http://eflorenzano.com/blog/2014/01/23/react-finally-server-client/)
68
69 ## Building a complex React component
70 -[Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](/react/img/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>
70 +[Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](../img/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>
71
72
73
docs/_posts/2014-02-16-react-v0.9-rc1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.9 RC
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 We're almost ready to release React v0.9! We're posting a release candidate so that you can test your apps on it; we'd much prefer to find show-stopping bugs now rather than after we release.
docs/_posts/2014-02-20-react-v0.9.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.9
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 I'm excited to announce that today we're releasing React v0.9, which incorporates many bug fixes and several new features since the last release. This release contains almost four months of work, including over 800 commits from over 70 committers!
@@ -24,7 +24,7 @@ We've also published version `0.9.0` of the `react` and `react-tools` packages o
24
25 This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.
26
27 -We've also added to the add-ons build [React.addons.TestUtils](/react/docs/test-utils.html), a set of new utilities to help you write unit tests for React components. You can now simulate events on your components, and several helpers are provided to help make assertions about the rendered DOM tree.
27 +We've also added to the add-ons build [React.addons.TestUtils](/docs/test-utils.html), a set of new utilities to help you write unit tests for React components. You can now simulate events on your components, and several helpers are provided to help make assertions about the rendered DOM tree.
28
29 We've also made several other improvements and a few breaking changes; the full changelog is provided below.
30
docs/_posts/2014-02-24-community-roundup-17.md
+4 -4
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #17"
3 -author: jgebhardt
3 +author: [jgebhardt]
4 ---
5
6
@@ -20,7 +20,7 @@ Sberbank, Russia's largest bank, recently switched large parts of their site to
20 ### Makona Editor
21
22 John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) created Makona, a block-style document editor for the web. Blocks of different content types comprise documents, authored using plain markup. At the switch of a toggle, block contents are then rendered on the page. While not quite a WYSIWYG editor, Makona uses plain textareas for input. This makes it compatible with a wider range of platforms than traditional rich text editors.
23 -<figure>[![](/react/img/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)</figure>
23 +[![](../img/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)
24
25 ### Create Chrome extensions using React
26 React is in no way limited to just web pages. Brandon Tilley ([@BinaryMuse](https://twitter.com/BinaryMuse)) just released a detailed walk-through of [how he built his Chrome extension "Fast Tab Switcher" using React](http://brandontilley.com/2014/02/24/creating-chrome-extensions-with-react.html).
@@ -41,7 +41,7 @@ Javier Aguirre ([@javaguirre](https://twitter.com/javaguirre)) put together a si
41
42 ### SVG-based graphical node editor
43 [NoFlo](http://noflojs.org/) and [Meemoo](http://meemoo.org/) developer [Forresto Oliphant](http://www.forresto.com/) built an awesome SVG-based [node editor](https://forresto.github.io/prototyping/react/) in React.
44 - <figure>[![](/react/img/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)</figure>
44 + [![](../img/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)
45
46
47 ### Ultimate Tic-Tac-Toe Game in React
@@ -55,7 +55,7 @@ Rafał Cieślak ([@Ravicious](https://twitter.com/Ravicious)) wrote a [React ver
55
56 Emanuele shared this awesome demo video with us:
57
58 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/jYcpaemt90M" frameborder="0" allowfullscreen></iframe>
58 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/jYcpaemt90M" frameborder="0" allowfullscreen></iframe>
59
60
61
docs/_posts/2014-03-14-community-roundup-18.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #18"
3 -author: jgebhardt
3 +author: [jgebhardt]
4 ---
5
6 In this Round-up, we are taking a few closer looks at React's interplay with different frameworks and architectures.
@@ -75,7 +75,7 @@ Ian Bicking ([@ianbicking](https://twitter.com/ianbicking)) of Mozilla Labs [exp
75
76 React was also recently mentioned at ng-conf, where the Angular team commented on React's concept of the virtual DOM:
77
78 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/srt3OBP2kGc?start=113" frameborder="0" allowfullscreen></iframe>
78 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/srt3OBP2kGc?start=113" frameborder="0" allowfullscreen></iframe>
79
80 ## React and Web Components
81
docs/_posts/2014-03-19-react-v0.10-rc1.md
+4 -4
@@ -1,9 +1,9 @@
1 ---
2 title: React v0.10 RC
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 -[v0.9 has only been out for a month](/react/blog/2014/02/20/react-v0.9.html), but we’re getting ready to push out v0.10 already. Unlike v0.9 which took a long time, we don't have a long list of changes to talk about.
6 +[v0.9 has only been out for a month](/blog/2014/02/20/react-v0.9.html), but we’re getting ready to push out v0.10 already. Unlike v0.9 which took a long time, we don't have a long list of changes to talk about.
7
8 The release candidate is available for download from the CDN:
9
@@ -53,7 +53,7 @@ The plan for v0.11 is that we will go fully to "descriptors". Method calls on th
53
54 #### New Features
55 * Added warnings to help migrate towards descriptors
56 -* Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/react/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
56 +* Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
57 * Added support for more attributes:
58 * `srcSet` for `<img>` to specify images at different pixel ratios
59 * `textAnchor` for SVG
@@ -65,7 +65,7 @@ The plan for v0.11 is that we will go fully to "descriptors". Method calls on th
65
66 ### Addons
67
68 -* `update` function to deal with immutable data. [Read the docs](/react/docs/update.html)
68 +* `update` function to deal with immutable data. [Read the docs](/docs/update.html)
69
70 ### react-tools
71 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
docs/_posts/2014-03-21-react-v0.10.md
+4 -4
@@ -1,9 +1,9 @@
1 ---
2 title: React v0.10
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 -Hot on the heels of the [release candidate earlier this week](/react/blog/2014/03/19/react-v0.10-rc1.html), we're ready to call v0.10 done. The only major issue we discovered had to do with the `react-tools` package, which has been updated. We've copied over the changelog from the RC with some small clarifying changes.
6 +Hot on the heels of the [release candidate earlier this week](/blog/2014/03/19/react-v0.10-rc1.html), we're ready to call v0.10 done. The only major issue we discovered had to do with the `react-tools` package, which has been updated. We've copied over the changelog from the RC with some small clarifying changes.
7
8 The release is available for download from the CDN:
9
@@ -53,7 +53,7 @@ The plan for v0.11 is that we will go fully to "descriptors". Method calls on th
53
54 #### New Features
55 * Added warnings to help migrate towards descriptors
56 -* Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/react/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
56 +* Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
57 * Added support for more attributes:
58 * `srcSet` for `<img>` to specify images at different pixel ratios
59 * `textAnchor` for SVG
@@ -65,7 +65,7 @@ The plan for v0.11 is that we will go fully to "descriptors". Method calls on th
65
66 ### Addons
67
68 -* `update` function to deal with immutable data. [Read the docs](/react/docs/update.html)
68 +* `update` function to deal with immutable data. [Read the docs](/docs/update.html)
69
70 ### react-tools
71 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
docs/_posts/2014-03-28-the-road-to-1.0.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: The Road to 1.0
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 When we launched React last spring, we purposefully decided not to call it 1.0. It was production ready, but we had plans to evolve APIs and behavior as we saw how people were using React, both internally and externally. We've learned a lot over the past 9 months and we've thought a lot about what 1.0 will mean for React. A couple weeks ago, I outlined [several projects][projects] that we have planned to take us to 1.0 and beyond. Today I'm writing a bit more about them to give our users a better insight into our plans.
docs/_posts/2014-04-04-reactnet.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Use React and JSX in ASP.NET MVC"
3 -author: Daniel15
3 +author: [Daniel15]
4 ---
5
6 Today we're happy to announce the initial release of
docs/_posts/2014-05-06-flux.md
+1 -1
@@ -5,7 +5,7 @@ author: [fisherwebdev, jingc]
5
6 We recently spoke at one of f8's breakout session about Flux, a data flow architecture that works well with React. Check out the video here:
7
8 -<figure><iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/nYkdrAPrdcw?list=PLb0IAmt7-GS188xDYE-u1ShQmFFGbrk0v&start=621" frameborder="0" allowfullscreen></iframe></figure>
8 +<figure><iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/nYkdrAPrdcw?list=PLb0IAmt7-GS188xDYE-u1ShQmFFGbrk0v&start=621" frameborder="0" allowfullscreen></iframe></figure>
9
10 To summarize, Flux works well for us because the single directional data flow makes it easy to understand and modify an application as it becomes more complicated. We found that two-way data bindings lead to cascading updates, where changing one data model led to another data model updating, making it very difficult to predict what would change as the result of a single user interaction.
11
docs/_posts/2014-05-29-one-year-of-open-source-react.md
+3 -3
@@ -1,13 +1,13 @@
1 ---
2 title: "One Year of Open-Source React"
3 -author: chenglou
3 +author: [chenglou]
4 ---
5
6 Today marks the one-year open-source anniversary of React.
7
8 -It’s been a crazy ride. 2.3k commits and 1.5k issues and pull requests later, we’re approaching version 1.0 and nearing 7k GitHub stars, with big names such as Khan Academy, New York Times, and Airbnb (and naturally, Facebook and Instagram) using React in production, and many more developers blogging their success stories with it. The [roadmap](/react/blog/2014/03/28/the-road-to-1.0.html) gives a glimpse into the future of the library; exciting stuff lies ahead!
8 +It’s been a crazy ride. 2.3k commits and 1.5k issues and pull requests later, we’re approaching version 1.0 and nearing 7k GitHub stars, with big names such as Khan Academy, New York Times, and Airbnb (and naturally, Facebook and Instagram) using React in production, and many more developers blogging their success stories with it. The [roadmap](/blog/2014/03/28/the-road-to-1.0.html) gives a glimpse into the future of the library; exciting stuff lies ahead!
9
10 -Every success has its story. React was born out of our frustration at existing solutions for building UIs. When it was first suggested at Facebook, few people thought that functionally re-rendering everything and diffing the results could ever perform well. However, support grew after we built the first implementation and people wrote their first components. When we open-sourced React, the initial reception was [similarly skeptical](https://www.reddit.com/r/programming/comments/1fak87/react_facebooks_latest_javascript_client_library/). It challenges many pre-established conventions and received mostly disapproving first-impressions, intermingled with positive ones that often were votes of confidence in Facebook’s engineering capabilities. On an open, competitive platform such as the web, it's been hard to convince people to try React. [JSX](/react/docs/jsx-in-depth.html), in particular, filtered out a huge chunk of potential early adopters.
10 +Every success has its story. React was born out of our frustration at existing solutions for building UIs. When it was first suggested at Facebook, few people thought that functionally re-rendering everything and diffing the results could ever perform well. However, support grew after we built the first implementation and people wrote their first components. When we open-sourced React, the initial reception was [similarly skeptical](https://www.reddit.com/r/programming/comments/1fak87/react_facebooks_latest_javascript_client_library/). It challenges many pre-established conventions and received mostly disapproving first-impressions, intermingled with positive ones that often were votes of confidence in Facebook’s engineering capabilities. On an open, competitive platform such as the web, it's been hard to convince people to try React. [JSX](/docs/jsx-in-depth.html), in particular, filtered out a huge chunk of potential early adopters.
11
12 Fast forward one year, React has strongly [grown in popularity](https://news.ycombinator.com/item?id=7489959). Special acknowledgments go to Khan Academy, the ClojureScript community, and established frameworks such as Ember and Angular for contributing to and debating on our work. We'd also like to thank all the [individual contributors](https://github.com/facebook/react/graphs/contributors) who have taken the time to help out over the past year. React, as a library and as a new paradigm on the web, wouldn't have gained as much traction without them. In the future, we will continue to try to set an example of what's possible to achieve when we rethink about current “best practices”.
13
docs/_posts/2014-06-27-community-roundup-19.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #19"
3 -author: chenglou
3 +author: [chenglou]
4 ---
5
6 ## React Meetups!
@@ -23,11 +23,11 @@ These are some of the links that often pop up on the #reactjs IRC channel. If yo
23
24 The core concepts React themselves is something very valuable that the community is exploring and pushing further. A year ago, we wouldn't have imagined something like [Bruce Hauman](http://rigsomelight.com)'s [Flappy Bird ClojureScript port](http://rigsomelight.com/2014/05/01/interactive-programming-flappy-bird-clojurescript.html), whose interactive programming has been made possible through React:
25
26 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/KZjFVdU8VLI" frameborder="0" allowfullscreen></iframe>
26 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KZjFVdU8VLI" frameborder="0" allowfullscreen></iframe>
27
28 And don't forget [Pete Hunt](https://github.com/petehunt)'s Wolfenstein 3D rendering engine in React ([source code](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183)). While it's nearly a year old, it's still a nice demo.
29
30 -[![](/react/img/blog/wolfenstein_react.png)](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html)
30 +[![](../img/blog/wolfenstein_react.png)](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html)
31
32 Give us a shoutout on IRC or [React Google Groups](https://groups.google.com/forum/#!forum/reactjs) if you've used React in some Interesting places.
33
docs/_posts/2014-07-13-react-v0.11-rc1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.11 RC
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 It's that time again… we're just about ready to ship a new React release! v0.11 includes a wide array of bug fixes and features. We highlighted some of the most important changes below, along with the full changelog.
docs/_posts/2014-07-17-react-v0.11.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.11
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 **Update:** We missed a few important changes in our initial post and changelog. We've updated this post with details about [Descriptors](#descriptors) and [Prop Type Validation](#prop-type-validation).
@@ -100,7 +100,7 @@ Keyboard and mouse events also now include a normalized `e.getModifierState()` t
100
101 ## Descriptors
102
103 -In our [v0.10 release notes](/react/blog/2014/03/21/react-v0.10.html#clone-on-mount), we called out that we were deprecating the existing behavior of the component function call (eg `component = MyComponent(props, ...children)` or `component = <MyComponent prop={...}/>`). Previously that would create an instance and React would modify that internally. You could store that reference and then call functions on it (eg `component.setProps(...)`). This no longer works. `component` in the above examples will be a descriptor and not an instance that can be operated on. The v0.10 release notes provide a complete example along with a migration path. The development builds also provided warnings if you called functions on descriptors.
103 +In our [v0.10 release notes](/blog/2014/03/21/react-v0.10.html#clone-on-mount), we called out that we were deprecating the existing behavior of the component function call (eg `component = MyComponent(props, ...children)` or `component = <MyComponent prop={...}/>`). Previously that would create an instance and React would modify that internally. You could store that reference and then call functions on it (eg `component.setProps(...)`). This no longer works. `component` in the above examples will be a descriptor and not an instance that can be operated on. The v0.10 release notes provide a complete example along with a migration path. The development builds also provided warnings if you called functions on descriptors.
104
105 Along with this change to descriptors, `React.isValidComponent` and `React.PropTypes.component` now actually validate that the value is a descriptor. Overwhelmingly, these functions are used to validate the value of `MyComponent()`, which as mentioned is now a descriptor, not a component instance. We opted to reduce code churn and make the migration to 0.11 as easy as possible. However, we realize this is has caused some confusion and we're working to make sure we are consistent with our terminology.
106
docs/_posts/2014-07-25-react-v0.11.1.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.11.1
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're releasing React v0.11.1 to address a few small issues. Thanks to everybody who has reported them as they've begun upgrading.
@@ -11,7 +11,7 @@ There are several fixes we're including in v0.11.1 that are focused around the n
11
12 The final fix we're including is to better support a workaround for some IE8 behavior. The edge-case bug we're fixing was also present in v0.9 and v0.10, so while it wasn't a short-term regression, we wanted to make sure we support IE8 to the best of our abilities.
13
14 -We'd also like to call out a couple additional breaking changes that we failed to originally mention in the release notes for v0.11. We updated that blog post and the changelog, so we encourage you to go read about the changes around [Descriptors](/react/blog/2014/07/17/react-v0.11.html#descriptors) and [Prop Type Validation](/react/blog/2014/07/17/react-v0.11.html#prop-type-validation).
14 +We'd also like to call out a couple additional breaking changes that we failed to originally mention in the release notes for v0.11. We updated that blog post and the changelog, so we encourage you to go read about the changes around [Descriptors](/blog/2014/07/17/react-v0.11.html#descriptors) and [Prop Type Validation](/blog/2014/07/17/react-v0.11.html#prop-type-validation).
15
16 The release is available for download from the CDN:
17
docs/_posts/2014-07-28-community-roundup-20.md
+5 -5
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #20"
3 -author: LoukaN
3 +author: [LoukaN]
4 ---
5
6 It's an exciting time for React as there are now more commits from open source contributors than from Facebook engineers! Keep up the good work :)
@@ -9,14 +9,14 @@ It's an exciting time for React as there are now more commits from open source c
9
10 [Atom, GitHub's code editor, is now using React](http://blog.atom.io/2014/07/02/moving-atom-to-react.html) to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.
11
12 -[<img src="/react/img/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
12 +[<img src="../img/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
13
14
15 ## Why Does React Scale?
16
17 At the last [JSConf.us](http://2014.jsconf.us/), Vjeux talked about the design decisions made in the API that allows it to scale to a large number of developers. If you don't have 20 minutes, take a look at the [annotated slides](https://speakerdeck.com/vjeux/why-does-react-scale-jsconf-2014).
18
19 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/D-ioDiacTm8" frameborder="0" allowfullscreen></iframe>
19 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/D-ioDiacTm8" frameborder="0" allowfullscreen></iframe>
20
21
22 ## Live Editing
@@ -63,7 +63,7 @@ If you missed the last [London React Meetup](http://www.meetup.com/London-React-
63 - React on Rails - How to use React with Ruby on Rails to build isomorphic apps
64 - Building an isomorphic, real-time to-do list with moped and node.js
65
66 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/CP3lvm5Ppqo" frameborder="0" allowfullscreen></iframe>
66 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/CP3lvm5Ppqo" frameborder="0" allowfullscreen></iframe>
67
68 In related news, the next [React SF Meetup](http://www.meetup.com/ReactJS-San-Francisco/events/195518392/) will be from Prezi: [“Immediate Mode on the Web: How We Implemented the Prezi Viewer in JavaScript”](https://medium.com/prezi-engineering/how-and-why-prezi-turned-to-javascript-56e0ca57d135). While not in React, their tech is really awesome and shares a lot of React's design principles and perf optimizations.
69
@@ -72,7 +72,7 @@ In related news, the next [React SF Meetup](http://www.meetup.com/ReactJS-San-Fr
72
73 One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write [React component adapters for KendoUI](http://www.ifandelse.com/using-reactjs-and-kendoui-together/).
74
75 -<figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="/react/img/blog/kendoui.png" /></a></figure>
75 +<figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="../img/blog/kendoui.png" /></a></figure>
76
77
78 ## Acorn JSX
docs/_posts/2014-07-30-flux-actions-and-the-dispatcher.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: "Flux: Actions and the Dispatcher"
3 -author: fisherwebdev
3 +author: [fisherwebdev]
4 ---
5
6 Flux is the application architecture Facebook uses to build JavaScript applications. It's based on a unidirectional data flow. We've built everything from small widgets to huge applications with Flux, and it's handled everything we've thrown at it. Because we've found it to be a great way to structure our code, we're excited to share it with the open source community. [Jing Chen presented Flux](http://youtu.be/nYkdrAPrdcw?t=10m20s) at the F8 conference, and since that time we've seen a lot of interest in it. We've also published an [overview of Flux](https://facebook.github.io/flux/docs/overview.html) and a [TodoMVC example](https://github.com/facebook/flux/tree/master/examples/flux-todomvc/), with an accompanying [tutorial](https://facebook.github.io/flux/docs/todo-list.html).
@@ -23,7 +23,7 @@ Different actions are identified by a type attribute. When all of the stores rec
23
24 Letting the stores update themselves eliminates many entanglements typically found in MVC applications, where cascading updates between models can lead to unstable state and make accurate testing very difficult. The objects within a Flux application are highly decoupled, and adhere very strongly to the [Law of Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter), the principle that each object within a system should know as little as possible about the other objects in the system. This results in software that is more maintainable, adaptable, testable, and easier for new engineering team members to understand.
25
26 -<img src="/react/img/blog/flux-diagram.png" style="width: 100%;" />
26 +<img src="../img/blog/flux-diagram.png" style="width: 100%;" />
27
28
29 Why We Need a Dispatcher
docs/_posts/2014-08-03-community-roundup-21.md
+6 -6
@@ -1,6 +1,6 @@
1 ---
2 title: "Community Round-up #21"
3 -author: LoukaN
3 +author: [LoukaN]
4 ---
5
6 ## React Router
@@ -23,7 +23,7 @@ React.renderComponent((
23
24 Areeb Malik, from Facebook, talks about his experience using React. "On paper, all those JS frameworks look promising: clean implementations, quick code design, flawless execution. But what happens when you stress test JavaScript? What happens when you throw 6 megabytes of code at it? In this talk, we'll investigate how React performs in a high stress situation, and how it has helped our team build safe code on a massive scale"
25
26 -[![](/react/img/blog/skills-matter.png)](https://skillsmatter.com/skillscasts/5429-going-big-with-react)
26 +[![](../img/blog/skills-matter.png)](https://skillsmatter.com/skillscasts/5429-going-big-with-react)
27
28 <!--
29 <iframe allowfullscreen="" data-progress="true" frameborder="0" height="390" id="vimeo-player" mozallowfullscreen="" src="//player.vimeo.com/video/100245392?api=1&amp;title=0" webkitallowfullscreen="" width="640"></iframe>
@@ -69,21 +69,21 @@ var App = React.createClass({
69
70 Have you ever wondered how JSX was implemented? James Long wrote a very instructive blog post that explains how to [compile JSX with Sweet.js using Readtables](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables).
71
72 -[![](/react/img/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
72 +[![](../img/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
73
74
75 ## First Look: Getting Started with React
76
77 [Kirill Buga](http://modernweb.com/authors/kirill-buga/) wrote an article on Modern Web explaining how [React is different from traditional MVC](http://modernweb.com/2014/07/23/getting-started-reactjs/) used by most JavaScript applications
78
79 -<figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="/react/img/blog/first-look.png" /></a></figure>
79 +<figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="../img/blog/first-look.png" /></a></figure>
80
81
82 ## React Draggable
83
84 [Matt Zabriskie](https://github.com/mzabriskie) released a [project](https://github.com/mzabriskie/react-draggable) to make your react components draggable.
85
86 -[![](/react/img/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
86 +[![](../img/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
87
88
89 ## HTML Parser2 React
@@ -104,7 +104,7 @@ var parsedComponent = reactParser(html, React);
104
105 If you haven't yet tried out React, Jacob Rios did a Hangout where he covers the most important aspects and thankfully he recorded it!
106
107 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/lAn7GVoGlKU" frameborder="0" allowfullscreen></iframe>
107 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/lAn7GVoGlKU" frameborder="0" allowfullscreen></iframe>
108
109
110 ## Random Tweets
docs/_posts/2014-09-03-introducing-the-jsx-specification.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Introducing the JSX Specification"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 ---
5
6 At Facebook we've been using JSX for a long time. We originally introduced it to the world last year alongside React, but we actually used it in another form before that to create native DOM nodes. We've also seen some similar efforts grow out of our work in order to be used with other libraries and in interesting ways. At this point React JSX is just one of many implementations.
docs/_posts/2014-09-12-community-round-up-22.md
+5 -5
@@ -1,7 +1,7 @@
1 ---
2 title: "Community Round-up #22"
3 layout: post
4 -author: LoukaN
4 +author: [LoukaN]
5 ---
6
7 This has been an exciting summer as four big companies: Yahoo, Mozilla, Airbnb and Reddit announced that they were using React!
@@ -20,7 +20,7 @@ This has been an exciting summer as four big companies: Yahoo, Mozilla, Airbnb a
20
21 [Vjeux](http://blog.vjeux.com/), from the React team, gave a talk at OSCON on the history of React and the various optimizations strategies that are implemented. You can also check out the [annotated slides](https://speakerdeck.com/vjeux/oscon-react-architecture) or [Chris Dawson](http://thenewstack.io/author/chrisdawson/)'s notes titled [JavaScript’s History and How it Led To React](http://thenewstack.io/javascripts-history-and-how-it-led-to-reactjs/).
22
23 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/eCf5CquV_Bw" frameborder="0" allowfullscreen></iframe>
23 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/eCf5CquV_Bw" frameborder="0" allowfullscreen></iframe>
24
25
26 ## v8 optimizations
@@ -48,7 +48,7 @@ var translated = (
48
49 [Trường](http://truongtx.me/) wrote a little guide to help your [getting started using React, Browserify and Gulp](http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/).
50
51 -<figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="/react/img/blog/react-browserify-gulp.jpg" /></a></figure>
51 +<figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="../img/blog/react-browserify-gulp.jpg" /></a></figure>
52
53
54 ## React Style
@@ -89,7 +89,7 @@ var Button = React.createClass({
89
90 If you are getting started with React, [Joe Maddalone](http://www.joemaddalone.com/) made a good tutorial on how to build your first component.
91
92 -<iframe width="100%" height="200" src="//www.youtube-nocookie.com/embed/rFvZydtmsxM" frameborder="0" allowfullscreen></iframe>
92 +<iframe width="650" height="200" src="//www.youtube-nocookie.com/embed/rFvZydtmsxM" frameborder="0" allowfullscreen></iframe>
93
94
95 ## Saving time & staying sane?
@@ -111,4 +111,4 @@ When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path
111 To finish this round-up, Andrew Gleave made a page that displays the [Weather](https://github.com/andrewgleave/react-weather). It's great to see that React is also used for small prototypes.
112
113
114 -<figure><a href="https://github.com/andrewgleave/react-weather"><img src="/react/img/blog/weather.png" /></a></figure>
114 +<figure><a href="https://github.com/andrewgleave/react-weather"><img src="../img/blog/weather.png" /></a></figure>
docs/_posts/2014-09-16-react-v0.11.2.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.11.2
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're releasing React v0.11.2 to add a few small features.
docs/_posts/2014-09-24-testing-flux-applications.md
+3 -3
@@ -1,11 +1,11 @@
1 ---
2 title: "Testing Flux Applications"
3 -author: fisherwebdev
3 +author: [fisherwebdev]
4 ---
5
6 **A more up-to-date version of this post is available as part of the [Flux documentation](https://facebook.github.io/flux/docs/testing-flux-applications.html).**
7
8 -[Flux](https://facebook.github.io/flux/) is the application architecture that Facebook uses to build web applications with [React](/react/). It's based on a unidirectional data flow. In previous blog posts and documentation articles, we've shown the [basic structure and data flow](https://facebook.github.io/flux/docs/overview.html), more closely examined the [dispatcher and action creators](/react/blog/2014/07/30/flux-actions-and-the-dispatcher.html), and shown how to put it all together with a [tutorial](https://facebook.github.io/flux/docs/todo-list.html). Now let's look at how to do formal unit testing of Flux applications with [Jest](https://facebook.github.io/jest/), Facebook's auto-mocking testing framework.
8 +[Flux](https://facebook.github.io/flux/) is the application architecture that Facebook uses to build web applications with [React](/). It's based on a unidirectional data flow. In previous blog posts and documentation articles, we've shown the [basic structure and data flow](https://facebook.github.io/flux/docs/overview.html), more closely examined the [dispatcher and action creators](/blog/2014/07/30/flux-actions-and-the-dispatcher.html), and shown how to put it all together with a [tutorial](https://facebook.github.io/flux/docs/todo-list.html). Now let's look at how to do formal unit testing of Flux applications with [Jest](https://facebook.github.io/jest/), Facebook's auto-mocking testing framework.
9
10
11 Testing with Jest
@@ -315,7 +315,7 @@ render: function() {
315 },
316 ```
317
318 -To learn how to test React components themselves, check out the [Jest tutorial for React](https://facebook.github.io/jest/docs/tutorial-react.html) and the [ReactTestUtils documentation](/react/docs/test-utils.html).
318 +To learn how to test React components themselves, check out the [Jest tutorial for React](https://facebook.github.io/jest/docs/tutorial-react.html) and the [ReactTestUtils documentation](/docs/test-utils.html).
319
320
321 Further Reading
docs/_posts/2014-10-14-introducing-react-elements.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Introducing React Elements"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 redirect_from: "blog/2014/10/14/introducting-react-elements.html"
5 ---
6
docs/_posts/2014-10-16-react-v0.12-rc1.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.12 RC"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 ---
5
6 We are finally ready to share the work we've been doing over the past couple months. A lot has gone into this and we want to make sure we iron out any potential issues before we make this final. So, we're shipping a Release Candidate for React v0.12 today. If you get a chance, please give it a try and report any issues you find! A full changelog will accompany the final release but we've highlighted the interesting and breaking changes below.
@@ -22,7 +22,7 @@ We've also published version `0.12.0-rc1` of the `react` and `react-tools` packa
22
23 ## React Elements
24
25 -The biggest conceptual change we made in v0.12 is the move to React Elements. [We talked about this topic in depth earlier this week](/react/blog/2014/10/14/introducting-react-elements.html). If you haven't already, you should read up on the exciting changes in there!
25 +The biggest conceptual change we made in v0.12 is the move to React Elements. [We talked about this topic in depth earlier this week](/blog/2014/10/14/introducting-react-elements.html). If you haven't already, you should read up on the exciting changes in there!
26
27
28 ## JSX Changes
@@ -39,7 +39,7 @@ We have wanted to do this since before we even open sourced React. No more `/**
39
40 ### JSX for Function Calls is No Longer Supported
41
42 -The React specific JSX transform no longer transforms to function calls. Instead we use `React.createElement` and pass it arguments. This allows us to make optimizations and better support React as a compile target for things like Om. Read more in the [React Elements introduction](/react/blog/2014/10/14/introducting-react-elements.html).
42 +The React specific JSX transform no longer transforms to function calls. Instead we use `React.createElement` and pass it arguments. This allows us to make optimizations and better support React as a compile target for things like Om. Read more in the [React Elements introduction](/blog/2014/10/14/introducting-react-elements.html).
43
44 The result of this change is that we will no longer support arbitrary function calls. We understand that the ability to do was a convenient shortcut for many people but we believe the gains will be worth it.
45
docs/_posts/2014-10-17-community-roundup-23.md
+6 -6
@@ -1,7 +1,7 @@
1 ---
2 title: "Community Round-up #23"
3 layout: post
4 -author: LoukaN
4 +author: [LoukaN]
5 ---
6
7 This round-up is a special edition on [Flux](https://facebook.github.io/flux/). If you expect to see diagrams showing arrows that all point in the same direction, you won't be disappointed!
@@ -10,7 +10,7 @@ This round-up is a special edition on [Flux](https://facebook.github.io/flux/).
10
11 Facebook engineers [Jing Chen](https://github.com/jingc) and [Bill Fisher](https://github.com/fisherwebdev) gave a talk about Flux and React at [ForwardJS](http://forwardjs.com/), and how using an application architecture with a unidirectional data flow helped solve recurring bugs.
12
13 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
13 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
14
15 # Yahoo
16
@@ -27,7 +27,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
27 [Mikael Brassman](https://spoike.ghost.io/) wrote [Reflux](https://github.com/spoike/refluxjs), a library that implements Flux concepts. Note that it diverges significantly from the way we use Flux at Facebook. He explains [the reasons why in a blog post](https://spoike.ghost.io/deconstructing-reactjss-flux/).
28
29 <center>
30 -<a href="https://spoike.ghost.io/deconstructing-reactjss-flux/"><img src="/react/img/blog/reflux-flux.png" width="400" /></a>
30 +<a href="https://spoike.ghost.io/deconstructing-reactjss-flux/"><img src="../img/blog/reflux-flux.png" width="400" /></a>
31 </center>
32
33
@@ -47,7 +47,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
47 [Kevin Dangoor](http://www.kevindangoor.com/) is converting the project tree of [Adobe's Bracket text editor](http://brackets.io/) to React and Flux. He wrote about his experience [using Flux](http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/).
48
49 <center>
50 -<a href="http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/"><img src="/react/img/blog/flux-diagram.png" width="400" /></a>
50 +<a href="http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/"><img src="../img/blog/flux-diagram.png" width="400" /></a>
51 </center>
52
53
@@ -122,7 +122,7 @@ undo: function() {
122 [Nicola Paolucci](https://github.com/durdn) from Atlassian wrote a great guide to help your getting understand [Flux step by step](https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/).
123
124 <center>
125 -<a href="https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/"><img src="/react/img/blog/flux-chart.png" width="400" /></a>
125 +<a href="https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/"><img src="../img/blog/flux-chart.png" width="400" /></a>
126 </center>
127
128
@@ -144,7 +144,7 @@ undo: function() {
144
145 Last but not least, Flux and React ideas are not limited to JavaScript inside of the browser. The iOS team at Facebook re-implemented Newsfeed using very similar patterns.
146
147 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/XhXC4SKOGfQ" frameborder="0" allowfullscreen></iframe>
147 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/XhXC4SKOGfQ" frameborder="0" allowfullscreen></iframe>
148
149
150 ## Random Tweet
docs/_posts/2014-10-27-react-js-conf.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React.js Conf
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 Every few weeks someone asks us when we are going to organize a conference for React. Our answer has always been "some day". In the mean time, people have been talking about React at other JavaScript conferences around the world. But now the time has finally come for us to have a conference of our own.
docs/_posts/2014-10-28-react-v0.12.md
+4 -4
@@ -1,11 +1,11 @@
1 ---
2 title: React v0.12
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 We're happy to announce the availability of React v0.12! After over a week of baking as the release candidate, we uncovered and fixed a few small issues. Thanks to all of you who upgraded and gave us feedback!
7
8 -We have talked a lot about some of the bigger changes in this release. [We introduced new terminology](/react/blog/2014/10/14/introducing-react-elements.html) and changed APIs to clean up and simplify some of the concepts of React. [We also made several changes to JSX](/react/blog/2014/10/16/react-v0.12-rc1.html) and deprecated a few functions. We won't go into depth about these changes again but we encourage you to read up on these changes in the linked posts. We'll summarize these changes and discuss some of the other changes and how they may impact you below. As always, a full changelog is also included below.
8 +We have talked a lot about some of the bigger changes in this release. [We introduced new terminology](/blog/2014/10/14/introducing-react-elements.html) and changed APIs to clean up and simplify some of the concepts of React. [We also made several changes to JSX](/blog/2014/10/16/react-v0.12-rc1.html) and deprecated a few functions. We won't go into depth about these changes again but we encourage you to read up on these changes in the linked posts. We'll summarize these changes and discuss some of the other changes and how they may impact you below. As always, a full changelog is also included below.
9
10
11 The release is available for download:
@@ -23,7 +23,7 @@ We've also published version `0.12.0` of the `react` and `react-tools` packages
23
24 ## New Terminology & Updated APIs
25
26 -v0.12 is bringing about some new terminology. [We introduced](/react/blog/2014/10/14/introducing-react-elements.html) this 2 weeks ago and we've also documented it in [a new section of the documentation](/react/docs/glossary.html). As a part of this, we also corrected many of our top-level APIs to align with the terminology. `Component` has been removed from all of our `React.render*` methods. While at one point the argument you passed to these functions was called a Component, it no longer is. You are passing ReactElements. To align with `render` methods in your component classes, we decided to keep the top-level functions short and sweet. `React.renderComponent` is now `React.render`.
26 +v0.12 is bringing about some new terminology. [We introduced](/blog/2014/10/14/introducing-react-elements.html) this 2 weeks ago and we've also documented it in [a new section of the documentation](/docs/glossary.html). As a part of this, we also corrected many of our top-level APIs to align with the terminology. `Component` has been removed from all of our `React.render*` methods. While at one point the argument you passed to these functions was called a Component, it no longer is. You are passing ReactElements. To align with `render` methods in your component classes, we decided to keep the top-level functions short and sweet. `React.renderComponent` is now `React.render`.
27
28 We also corrected some other misnomers. `React.isValidComponent` actually determines if the argument is a ReactElement, so it has been renamed to `React.isValidElement`. In the same vein, `React.PropTypes.component` is now `React.PropTypes.element` and `React.PropTypes.renderable` is now `React.PropTypes.node`.
29
@@ -31,7 +31,7 @@ The old methods will still work but will warn upon first use. They will be remov
31
32 ## JSX Changes
33
34 -[We talked more in depth about these before](/react/blog/2014/10/16/react-v0.12-rc1.html#jsx-changes), so here are the highlights.
34 +[We talked more in depth about these before](/blog/2014/10/16/react-v0.12-rc1.html#jsx-changes), so here are the highlights.
35
36 * No more `/** @jsx React.DOM */`!
37 * We no longer transform to a straight function call. `<Component/>` now becomes `React.createElement(Component)`
docs/_posts/2014-11-24-react-js-conf-updates.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React.js Conf Updates
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 Yesterday was the [React.js Conf](http://conf.reactjs.com/index.html) call for presenters submission deadline. We were
docs/_posts/2014-11-25-community-roundup-24.md
+5 -5
@@ -1,7 +1,7 @@
1 ---
2 title: "Community Round-up #24"
3 layout: post
4 -author: steveluscher
4 +author: [steveluscher]
5 ---
6
7 ## Keep it Simple
@@ -14,11 +14,11 @@ Murilo Pereira ([mpereira](https://github.com/mpereira)) tussles with the topic
14
15 I ([steveluscher](https://github.com/steveluscher)) spoke at Manning Publications' “Powered By JavaScript” Strangeloop pre-conf in St. Louis. There, I proposed a new notation to talk about development complexity – Big-Coffee Notation ☕(n) – and spoke about the features of React that help keep our Big-Coffee from going quadratic, as our user interfaces get more complex.
16
17 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/rI0GQc__0SM" frameborder="0" allowfullscreen></iframe>
17 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/rI0GQc__0SM" frameborder="0" allowfullscreen></iframe>
18
19 James Pearce ([jamesgpearce](https://github.com/jamesgpearce)) carried Big-Coffee all the way to Raleigh, NC. At the _All Things Open_ conference, he spoke about some of the design decisions that went into React, particularly those that lend themselves to simpler, more reliable code.
20
21 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/m2fuO2wl_3c" frameborder="0" allowfullscreen></iframe>
21 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/m2fuO2wl_3c" frameborder="0" allowfullscreen></iframe>
22
23 ## All About Isomorphism
24
@@ -38,7 +38,7 @@ Ryan Florence ([rpflorence](https://github.com/rpflorence])) and Michael Jackson
38
39 Jonathan Beebe ([somethingkindawierd](https://github.com/somethingkindawierd)) spoke about how he uses React to build tools that deliver hope to those trying to make the best of a bad situation. Watch his talk from this year's _Nodevember_ conference in Nashville
40
41 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/uZgAq1CZ1N8" frameborder="0" allowfullscreen></iframe>
41 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/uZgAq1CZ1N8" frameborder="0" allowfullscreen></iframe>
42
43 If you take a peek under the covers, you'll find that React powers [Carousel](https://blog.carousel.com/2014/11/introducing-carousel-for-web-ipad-and-android-tablet/), Dropbox's new photo and video gallery app.
44
@@ -48,7 +48,7 @@ We enjoyed a cinematic/narrative experience with this React-powered, interactive
48
49 Spend the next 60 seconds watching Daniel Woelfel ([dwwoelfel](https://github.com/dwwoelfel)) serialize a React app's state as a string, then deserialize it to produce a working UI. Read about how he uses this technique to [reproduce bugs](http://blog.circleci.com/local-state-global-concerns/) reported to him by his users.
50
51 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/5yHFTN-_mOo" frameborder="0" allowfullscreen></iframe>
51 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/5yHFTN-_mOo" frameborder="0" allowfullscreen></iframe>
52
53 ## Community Components
54
docs/_posts/2014-12-18-react-v0.12.2.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.12.2
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 We just shipped React v0.12.2, bringing the 0.12 branch up to date with a few small fixes that landed in master over the past 2 months.
docs/_posts/2014-12-19-react-js-conf-diversity-scholarship.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: React.js Conf Diversity Scholarship
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today I'm really happy to announce the React.js Conf Diversity Scholarship! We believe that a diverse set of viewpoints and opinions is really important to build a thriving community. In an ideal world, every part of the tech community would be made up of people from all walks of life. However the reality is that we must be proactive and make an effort to make sure everybody has a voice. As conference organizers we worked closely with the Diversity Team here at Facebook to set aside 10 tickets and provide a scholarship. 10 tickets may not be many in the grand scheme but we really believe that this will have a positive impact on the discussions we have at the conference.
@@ -11,7 +11,7 @@ I'm really excited about this and I hope you are too! The full announcement is b
11
12 The Diversity Team at Facebook is excited to announce that we are now accepting applications for the React.js Conf scholarship!
13
14 -Beginning today, those studying or working in computer science or a related field can apply for an all-expense paid scholarship to attend the React.js Conf at Facebook’s Headquarters in Menlo Park, CA on January 28 & 29, 2015. React opens a world of new possibilities such as server-side rendering, real-time updates, different rendering targets like SVG and canvas. Join us at React.js Conf to shape the future of client-side applications! For more information about the React.js conference, please see the [website](http://conf.reactjs.com/) and [previous](/react/blog/2014/10/27/react-js-conf.html) [updates](/react/blog/2014/11/24/react-js-conf-updates.html) on our blog.
14 +Beginning today, those studying or working in computer science or a related field can apply for an all-expense paid scholarship to attend the React.js Conf at Facebook’s Headquarters in Menlo Park, CA on January 28 & 29, 2015. React opens a world of new possibilities such as server-side rendering, real-time updates, different rendering targets like SVG and canvas. Join us at React.js Conf to shape the future of client-side applications! For more information about the React.js conference, please see the [website](http://conf.reactjs.com/) and [previous](/blog/2014/10/27/react-js-conf.html) [updates](/blog/2014/11/24/react-js-conf-updates.html) on our blog.
15
16 At Facebook, we believe that anyone anywhere can make a positive impact by developing products to make the world more open and connected to the people and things they care about. Given the current realities of the tech industry and the lack of representation of communities we seek to serve, applicants currently under-represented in Computer Science and related fields are strongly encouraged to apply.
17 Facebook will make determinations on scholarship recipients in its sole discretion. Facebook complies with all equal opportunity laws.
docs/_posts/2015-01-27-react-v0.13.0-beta-1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.13.0 Beta 1
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 ---
5
6 React 0.13 has a lot of nice features but there is one particular feature that I'm really excited about. I couldn't wait for React.js Conf to start tomorrow morning.
docs/_posts/2015-02-18-react-conf-roundup-2015.md
+23 -23
@@ -1,7 +1,7 @@
1 ---
2 title: React.js Conf Round-up 2015
3 layout: post
4 -author: steveluscher
4 +author: [steveluscher]
5 ---
6
7 It was a privilege to welcome the React community to Facebook HQ on January 28–29 for the first-ever React.js Conf, and a pleasure to be able to unveil three new technologies that we've been using internally at Facebook for some time: GraphQL, Relay, and React Native.
@@ -16,7 +16,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
16 </p>
17 </div>
18 <div class="skinny-col">
19 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4" frameborder="0" allowfullscreen></iframe>
19 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4" frameborder="0" allowfullscreen></iframe>
20 </div>
21 </div>
22
@@ -28,7 +28,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
28 </p>
29 </div>
30 <div class="skinny-col">
31 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/yaymfLj5tjA" frameborder="0" allowfullscreen></iframe>
31 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/yaymfLj5tjA" frameborder="0" allowfullscreen></iframe>
32 </div>
33 </div>
34
@@ -40,7 +40,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
40 </p>
41 </div>
42 <div class="skinny-col">
43 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/OZGgVxFxSIs" frameborder="0" allowfullscreen></iframe>
43 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/OZGgVxFxSIs" frameborder="0" allowfullscreen></iframe>
44 </div>
45 </div>
46
@@ -52,7 +52,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
52 </p>
53 </div>
54 <div class="skinny-col">
55 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/9sc8Pyc51uU" frameborder="0" allowfullscreen></iframe>
55 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/9sc8Pyc51uU" frameborder="0" allowfullscreen></iframe>
56 </div>
57 </div>
58
@@ -64,7 +64,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
64 </p>
65 </div>
66 <div class="skinny-col">
67 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/W2DgDNQZOwo" frameborder="0" allowfullscreen></iframe>
67 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/W2DgDNQZOwo" frameborder="0" allowfullscreen></iframe>
68 </div>
69 </div>
70
@@ -76,7 +76,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
76 </p>
77 </div>
78 <div class="skinny-col">
79 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/XZfvW1a8Xac" frameborder="0" allowfullscreen></iframe>
79 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/XZfvW1a8Xac" frameborder="0" allowfullscreen></iframe>
80 </div>
81 </div>
82
@@ -88,7 +88,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
88 </p>
89 </div>
90 <div class="skinny-col">
91 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/KtmjkCuV-EU" frameborder="0" allowfullscreen></iframe>
91 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/KtmjkCuV-EU" frameborder="0" allowfullscreen></iframe>
92 </div>
93 </div>
94
@@ -100,7 +100,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
100 </p>
101 </div>
102 <div class="skinny-col">
103 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/KYzlpRvWZ6c" frameborder="0" allowfullscreen></iframe>
103 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/KYzlpRvWZ6c" frameborder="0" allowfullscreen></iframe>
104 </div>
105 </div>
106
@@ -112,7 +112,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
112 </p>
113 </div>
114 <div class="skinny-col">
115 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/Sla-DkvmIHY" frameborder="0" allowfullscreen></iframe>
115 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/Sla-DkvmIHY" frameborder="0" allowfullscreen></iframe>
116 </div>
117 </div>
118
@@ -124,7 +124,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
124 </p>
125 </div>
126 <div class="skinny-col">
127 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/z5e7kWSHWTg" frameborder="0" allowfullscreen></iframe>
127 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/z5e7kWSHWTg" frameborder="0" allowfullscreen></iframe>
128 </div>
129 </div>
130
@@ -136,7 +136,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
136 </p>
137 </div>
138 <div class="skinny-col">
139 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/7rDsRXj9-cU" frameborder="0" allowfullscreen></iframe>
139 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/7rDsRXj9-cU" frameborder="0" allowfullscreen></iframe>
140 </div>
141 </div>
142
@@ -148,7 +148,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
148 </p>
149 </div>
150 <div class="skinny-col">
151 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/g0TD0efcwVg" frameborder="0" allowfullscreen></iframe>
151 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/g0TD0efcwVg" frameborder="0" allowfullscreen></iframe>
152 </div>
153 </div>
154
@@ -160,7 +160,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
160 </p>
161 </div>
162 <div class="skinny-col">
163 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/I7IdS-PbEgI" frameborder="0" allowfullscreen></iframe>
163 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/I7IdS-PbEgI" frameborder="0" allowfullscreen></iframe>
164 </div>
165 </div>
166
@@ -171,7 +171,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
171 <strong>Jafar Husain</strong> told us a story about how Netflix was able to push React into places where the DOM could not go.
172 </div>
173 <div class="skinny-col">
174 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/eNC0mRYGWgc" frameborder="0" allowfullscreen></iframe>
174 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/eNC0mRYGWgc" frameborder="0" allowfullscreen></iframe>
175 </div>
176 </div>
177
@@ -182,7 +182,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
182 <strong>Zach Nation</strong> showed us how we can produce visualizations from over 45 million data points without breaking a sweat.
183 </div>
184 <div class="skinny-col">
185 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/2ii1lEkIv1s" frameborder="0" allowfullscreen></iframe>
185 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/2ii1lEkIv1s" frameborder="0" allowfullscreen></iframe>
186 </div>
187 </div>
188
@@ -193,7 +193,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
193 <strong>David Nolen</strong> gave us a view of React from a non-JavaScript perspective, challenging some common intuition along the way.
194 </div>
195 <div class="skinny-col">
196 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/5hGHdETNteE" frameborder="0" allowfullscreen></iframe>
196 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/5hGHdETNteE" frameborder="0" allowfullscreen></iframe>
197 </div>
198 </div>
199
@@ -204,7 +204,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
204 <strong>Bill Fisher</strong> coordinated a Flux panel together with <strong>Michael Ridgway</strong>, <strong>Spike Brehm</strong>, <strong>Andres Suarez</strong>, <strong>Jing Chen</strong>, <strong>Ian Obermiller</strong>, and <strong>Kyle Davis</strong>.
205 </div>
206 <div class="skinny-col">
207 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/LTj4O7WJJ98" frameborder="0" allowfullscreen></iframe>
207 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/LTj4O7WJJ98" frameborder="0" allowfullscreen></iframe>
208 </div>
209 </div>
210
@@ -215,7 +215,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
215 <strong>Bonnie Eisenman</strong> led us through the ‘adapter’ approach to inter-component communication taken by her team at Codecademy.
216 </div>
217 <div class="skinny-col">
218 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/ZM6wXoFTY3o" frameborder="0" allowfullscreen></iframe>
218 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/ZM6wXoFTY3o" frameborder="0" allowfullscreen></iframe>
219 </div>
220 </div>
221
@@ -226,7 +226,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
226 <strong>James Brantly</strong> demonstrated how we can reap the benefits of static typing using both Flow and TypeScript.
227 </div>
228 <div class="skinny-col">
229 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/9PTa9-PPVAc" frameborder="0" allowfullscreen></iframe>
229 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/9PTa9-PPVAc" frameborder="0" allowfullscreen></iframe>
230 </div>
231 </div>
232
@@ -237,7 +237,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
237 <strong>Tom Occhino</strong>, <strong>Sophie Alpert</strong>, <strong>Lee Byron</strong>, <strong>Christopher Chedeau</strong>, <strong>Sebastian Markbåge</strong>, <strong>Jing Chen</strong>, and <strong>Dan Schafer</strong> closed the conference with a Q&amp;A session.
238 </div>
239 <div class="skinny-col">
240 - <iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/EPpkboSKvPI" frameborder="0" allowfullscreen></iframe>
240 + <iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/EPpkboSKvPI" frameborder="0" allowfullscreen></iframe>
241 </div>
242 </div>
243
@@ -257,7 +257,7 @@ And, in case you missed a session, you can borrow **Michael Chan’s** [drawings
257 </div>
258 <div class="skinny-col">
259 <blockquote class="twitter-tweet" lang="en"><p>Humbled by the React team and community. Found <a href="https://twitter.com/hashtag/reactjsconf?src=hash">#reactjsconf</a> very mindful, practical and just real.</p>&mdash; xnoɹǝʃ uɐıɹq (@brianleroux) <a href="https://twitter.com/brianleroux/status/560972130112655360">January 30, 2015</a></blockquote>
260 - <blockquote class="twitter-tweet" lang="en"><p>I say with confidence as a former UIKit author: React&#39;s model for the UI layer is vastly better than UIKit&#39;s. React Native is a *huge* deal.</p>&mdash; Andy Matuschak (@andy_matuschak) <a href="https://twitter.com/andy_matuschak/status/560511204867575808">January 28, 2015</a></blockquote>
260 + <blockquote class="twitter-tweet" lang="en"><p>I say with confidence as a former UIKit author: [React&#39;s model for the UI layer is vastly better than UIKit&#39;s. React Native is a *huge* deal.</p>&mdash; Andy Matuschak (@andy_matuschak) <a href="https://twitter.com/andy_matuschak/status/560511204867575808">January 28, 2015</a></blockquote>]
261 <blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/hashtag/reactjsconf?src=hash">#reactjsconf</a> was incredible. Amazing project stewardship and community. Boring prediction, React Native sends adoption vertical in 2015.</p>&mdash; David Nolen (@swannodette) <a href="https://twitter.com/swannodette/status/561232290273980416">January 30, 2015</a></blockquote>
262 <blockquote class="twitter-tweet" lang="en"><p>I really love the community shout outs by <a href="https://twitter.com/Vjeux">@vjeux</a> between talks at <a href="https://twitter.com/hashtag/reactjsconf?src=hash">#reactjsconf</a>!</p>&mdash; Andrew Rota (@AndrewRota) <a href="https://twitter.com/AndrewRota/status/560927339522297856">January 29, 2015</a></blockquote>
263 </div>
@@ -266,4 +266,4 @@ And, in case you missed a session, you can borrow **Michael Chan’s** [drawings
266
267 **All proceeds from React.js Conf 2015 were donated to the wonderful programs at [code.org](http://code.org)**. These programs aim to increase access to the field of computer science by underrepresented members of our community. Watch this video to learn more.
268
269 -<iframe width="100%" height="171" src="https://www.youtube-nocookie.com/embed/FC5FbmsH4fw" frameborder="0" allowfullscreen></iframe>
269 +<iframe width="650" height="171" src="https://www.youtube-nocookie.com/embed/FC5FbmsH4fw" frameborder="0" allowfullscreen></iframe>
docs/_posts/2015-02-20-introducing-relay-and-graphql.md
+2 -2
@@ -1,14 +1,14 @@
1 ---
2 title: "Introducing Relay and GraphQL"
3 layout: post
4 -author: wincent
4 +author: [wincent]
5 ---
6
7 ## Data fetching for React applications
8
9 There's more to building an application than creating a user interface. Data fetching is still a tricky problem, especially as applications become more complicated. At [React.js Conf](http://conf.reactjs.com/) we announced two projects we've created at Facebook to make data fetching simple for developers, even as a product grows to include dozens of contributors and the application becomes as complex as Facebook itself.
10
11 -<iframe width="100%" height="315" src="https://www.youtube-nocookie.com/embed/9sc8Pyc51uU" frameborder="0" allowfullscreen></iframe>
11 +<iframe width="650" height="315" src="https://www.youtube-nocookie.com/embed/9sc8Pyc51uU" frameborder="0" allowfullscreen></iframe>
12
13 The two projects &mdash; Relay and GraphQL &mdash; have been in use in production at Facebook for some time, and we're excited to be bringing them to the world as open source in the future. In the meantime, we wanted to share some additional information about the projects here.
14
docs/_posts/2015-02-24-react-v0.13-rc1.md
+3 -3
@@ -1,12 +1,12 @@
1 ---
2 title: "React v0.13 RC"
3 -author: zpao
3 +author: [zpao]
4 date: 2015-02-24 14:00
5 ---
6
7 Over the weekend we pushed out our first (and hopefully only) release candidate for React v0.13!
8
9 -We've talked a little bit about the changes that are coming. The splashiest of these changes is support for ES6 Classes. You can read more about this in [our beta announcement](/react/blog/2015/01/27/react-v0.13.0-beta-1.html). We're really excited about this! Sebastian also posted earlier this morning about [some of the other changes coming focused around ReactElement](/react/blog/2015/02/24/streamlining-react-elements.html). The changes we've been working on there will hopefully enable lots of improvements to performance and developer experience.
9 +We've talked a little bit about the changes that are coming. The splashiest of these changes is support for ES6 Classes. You can read more about this in [our beta announcement](/blog/2015/01/27/react-v0.13.0-beta-1.html). We're really excited about this! Sebastian also posted earlier this morning about [some of the other changes coming focused around ReactElement](/blog/2015/02/24/streamlining-react-elements.html). The changes we've been working on there will hopefully enable lots of improvements to performance and developer experience.
10
11
12 The release candidate is available for download:
@@ -39,7 +39,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
39
40 #### New Features
41
42 -* Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/react/blog/2015/01/27/react-v0.13.0-beta-1.html) for details
42 +* Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details
43 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
44 * New `ref` style, allowing a callback to be used in place of a name: `<Photo ref={(c) => this._photo = c} />` allows you to reference the component with `this._photo` (as opposed to `ref="photo"` which gives `this.refs.photo`)
45 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` -- this means that you no longer need to use `this._pendingState`, which is now gone.
docs/_posts/2015-02-24-streamlining-react-elements.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Streamlining React Elements"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 date: 2015-02-24 11:00
5 ---
6
docs/_posts/2015-03-03-react-v0.13-rc2.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.13 RC2"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 ---
5
6 Thanks to everybody who has already been testing the release candidate. We've received some good feedback and as a result we're going to do a second release candidate. The changes are minimal. We haven't changed the behavior of any APIs we exposed in the previous release candidate. Here's a summary of the changes:
docs/_posts/2015-03-04-community-roundup-25.md
+3 -3
@@ -1,7 +1,7 @@
1 ---
2 title: "Community Round-up #25"
3 layout: post
4 -author: matthewjohnston4
4 +author: [matthewjohnston4]
5 ---
6
7 ## React 101
@@ -12,7 +12,7 @@ Interest in React has been exploding recently, so it's a good time to explore so
12
13 [Formidable Labs](https://github.com/FormidableLabs) and [Seattle JS](http://www.meetup.com/seattlejs/) recently hosted a series of React, Flux, and Flow workshops, and the first part is available to watch online:
14
15 -<iframe width="100%" height="300" src="//www.youtube-nocookie.com/embed/Pd6Ub7Ju2RM" frameborder="0" allowfullscreen></iframe>
15 +<iframe width="650" height="300" src="//www.youtube-nocookie.com/embed/Pd6Ub7Ju2RM" frameborder="0" allowfullscreen></iframe>
16
17 [AEFlash](https://github.com/aearly) writes up [some best practices and tips](http://aeflash.com/2015-02/react-tips-and-best-practices.html) to help you avoid potential pitfalls when developing with React.
18
@@ -44,7 +44,7 @@ A team from New Zealand called [Atomic](https://atomic.io/) is [building web and
44
45 [Polarr](https://github.com/Polarrco) have rebuilt [their browser-based photo editor](http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here) with React.
46
47 -<center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="/react/img/blog/polarr.jpg"></a></center>
47 +<center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="../img/blog/polarr.jpg"></a></center>
48
49 ## It's F8!
50
docs/_posts/2015-03-10-react-v0.13.md
+5 -5
@@ -1,11 +1,11 @@
1 ---
2 title: "React v0.13"
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 Today, we're happy to release React v0.13!
7
8 -The most notable new feature is [support for ES6 classes](/react/blog/2015/01/27/react-v0.13.0-beta-1.html), which allows developers to have more flexibility when writing components. Our eventual goal is for ES6 classes to replace `React.createClass` completely, but until we have a replacement for current mixin use cases and support for class property initializers in the language, we don't plan to deprecate `React.createClass`.
8 +The most notable new feature is [support for ES6 classes](/blog/2015/01/27/react-v0.13.0-beta-1.html), which allows developers to have more flexibility when writing components. Our eventual goal is for ES6 classes to replace `React.createClass` completely, but until we have a replacement for current mixin use cases and support for class property initializers in the language, we don't plan to deprecate `React.createClass`.
9
10 At EmberConf and ng-conf last week, we were excited to see that Ember and Angular have been working on speed improvements and now both have performance comparable to React. We've always thought that performance isn't the most important reason to choose React, but we're still planning more optimizations to **make React even faster**.
11
@@ -45,9 +45,9 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
45
46 #### New Features
47
48 -* Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/react/blog/2015/01/27/react-v0.13.0-beta-1.html) for details.
48 +* Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details.
49 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
50 -* Added a new top-level API `React.cloneElement(el, props)` for making copies of React elements – see the [v0.13 RC2 notes](/react/blog/2015/03/03/react-v0.13-rc2.html#react.cloneelement) for more details.
50 +* Added a new top-level API `React.cloneElement(el, props)` for making copies of React elements – see the [v0.13 RC2 notes](/blog/2015/03/03/react-v0.13-rc2.html#react.cloneelement) for more details.
51 * New `ref` style, allowing a callback to be used in place of a name: `<Photo ref={(c) => this._photo = c} />` allows you to reference the component with `this._photo` (as opposed to `ref="photo"` which gives `this.refs.photo`).
52 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` – this means that you no longer need to use `this._pendingState`, which is now gone.
53 * Support for iterators and immutable-js sequences as children.
@@ -62,7 +62,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
62
63 #### New Features
64
65 -* [`React.addons.createFragment` was added](/react/docs/create-fragment.html) for adding keys to entire sets of children.
65 +* [`React.addons.createFragment` was added](/docs/create-fragment.html) for adding keys to entire sets of children.
66
67 #### Deprecations
68
docs/_posts/2015-03-16-react-v0.13.1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.13.1"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 It's been less than a week since we shipped v0.13.0 but it's time to do another quick release. We just released v0.13.1 which contains bugfixes for a number of small issues.
docs/_posts/2015-03-19-building-the-facebook-news-feed-with-relay.md
+6 -6
@@ -1,9 +1,9 @@
1 ---
2 title: "Building The Facebook News Feed With Relay"
3 -author: josephsavona
3 +author: [josephsavona]
4 ---
5
6 -At React.js Conf in January we gave a preview of Relay, a new framework for building data-driven applications in React. In this post, we'll describe the process of creating a Relay application. This post assumes some familiarity with the concepts of Relay and GraphQL, so if you haven't already we recommend reading [our introductory blog post](/react/blog/2015/02/20/introducing-relay-and-graphql.html) or watching [the conference talk](https://www.youtube-nocookie.com/v/9sc8Pyc51uU).
6 +At React.js Conf in January we gave a preview of Relay, a new framework for building data-driven applications in React. In this post, we'll describe the process of creating a Relay application. This post assumes some familiarity with the concepts of Relay and GraphQL, so if you haven't already we recommend reading [our introductory blog post](/blog/2015/02/20/introducing-relay-and-graphql.html) or watching [the conference talk](https://www.youtube-nocookie.com/v/9sc8Pyc51uU).
7
8 We're working hard to prepare GraphQL and Relay for public release. In the meantime, we'll continue to provide information about what you can expect.
9
@@ -13,7 +13,7 @@ We're working hard to prepare GraphQL and Relay for public release. In the meant
13
14 The diagram below shows the main parts of the Relay architecture on the client and the server:
15
16 -<img src="/react/img/blog/relay-components/relay-architecture.png" alt="Relay Architecture" width="650" />
16 +<img src="../img/blog/relay-components/relay-architecture.png" alt="Relay Architecture" width="650" />
17
18 The main pieces are as follows:
19
@@ -30,7 +30,7 @@ This post will focus on **Relay components** that describe encapsulated units of
30
31 To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a `<NewsFeed>` that renders a list of `<Story>` items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:
32
33 -<img src="/react/img/blog/relay-components/sample-newsfeed.png" alt="Sample News Feed" width="360" />
33 +<img src="../img/blog/relay-components/sample-newsfeed.png" alt="Sample News Feed" width="360" />
34
35 <br/>
36
@@ -73,7 +73,7 @@ export default Relay.createContainer(Story, {
73
74 Before adding the GraphQL fragment, let's look at the component hierarchy this creates:
75
76 -<img src="/react/img/blog/relay-components/relay-containers.png" width="397" alt="React Container Data Flow" />
76 +<img src="../img/blog/relay-components/relay-containers.png" width="397" alt="React Container Data Flow" />
77
78 Most props will be passed through from the container to the original component. However, Relay will return the query results for a prop whenever a fragment is defined. In this case we'll add a GraphQL fragment for `story`:
79
@@ -122,7 +122,7 @@ Relay guarantees that all data required to render a component will be available
122
123 The diagram below shows how Relay containers make data available to our React components:
124
125 -<img src="/react/img/blog/relay-components/relay-containers-data-flow.png" width="650" alt="Relay Container Data Flow" />
125 +<img src="../img/blog/relay-components/relay-containers-data-flow.png" width="650" alt="Relay Container Data Flow" />
126
127 <br/>
128
docs/_posts/2015-03-26-introducing-react-native.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Introducing React Native"
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 In January at React.js Conf, we announced React Native, a new framework for building native apps using React. We're happy to announce that we're open-sourcing React Native and you can start building your apps with it today.
docs/_posts/2015-03-30-community-roundup-26.md
+7 -17
@@ -1,7 +1,7 @@
1 ---
2 title: "Community Round-up #26"
3 layout: post
4 -author: vjeux
4 +author: [vjeux]
5 ---
6
7 We open sourced React Native last week and the community reception blew away all our expectations! So many of you tried it, made cool stuff with it, raised many issues and even submitted pull requests to fix them! The entire team wants to say thank you!
@@ -13,16 +13,14 @@ We open sourced React Native last week and the community reception blew away all
13
14 **Give us 6 months**. At Facebook, we strive to only open-source projects that we are using in production. While the Android backend for React Native is starting to work (see video below at 37min), it hasn't been shipped to any users yet. There's a lot of work that goes into open-sourcing a project, and we want to do it right so that you have a great experience when using it.
15
16 -<iframe width="100%" height="315" src="https://www.youtube-nocookie.com/embed/X6YbAKiLCLU?start=2220" frameborder="0" allowfullscreen></iframe>
16 +<iframe width="650" height="315" src="https://www.youtube-nocookie.com/embed/X6YbAKiLCLU?start=2220" frameborder="0" allowfullscreen></iframe>
17
18
19 ## Ray Wenderlich - Property Finder
20
21 If you are getting started with React Native, you should absolutely [use this tutorial](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript) from Colin Eberhardt. It goes through all the steps to make a reasonably complete app.
22
23 -<center>
24 -[![](/react/img/blog/property-finder.png)](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript)
25 -</center>
23 +[![](../img/blog/property-finder.png)](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript)
24
25 Colin also [blogged about his experience using React Native](http://blog.scottlogic.com/2015/03/26/react-native-retrospective.html) for a few weeks and gives his thoughts on why you would or wouldn't use it.
26
@@ -38,27 +36,21 @@ Spencer Ahrens and I had the great pleasure to talk about React Native on [The C
36
37 Less than 24 hours after React Native was open sourced, Simarpreet Singh built an [Hacker News reader app from scratch](https://github.com/iSimar/HackerNews-React-Native). It's unbelievable how fast he was able to pull it off!
38
41 -<center>
42 -[![](/react/img/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
43 -</center>
39 +[![](../img/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
40
41
42 ## Parse + React
43
44 There's a huge ecosystem of JavaScript modules on npm and React Native was designed to work well with the ones that don't have DOM dependencies. Parse is a great example; you can `npm install parse` on your React Native project and it'll work as is. :) We still have [a](https://github.com/facebook/react-native/issues/406) [few](https://github.com/facebook/react-native/issues/370) [issues](https://github.com/facebook/react-native/issues/316) to solve; please create an issue if your favorite library doesn't work out of the box.
45
50 -<center>
51 -[![](/react/img/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
52 -</center>
46 +[![](../img/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
47
48
49 ## tcomb-form-native
50
51 Giulio Canti is the author of the [tcomb-form library](https://github.com/gcanti/tcomb-form) for React. He already [ported it to React Native](https://github.com/gcanti/tcomb-form-native) and it looks great!
52
59 -<center>
60 -[![](/react/img/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
61 -</center>
53 +[![](../img/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
54
55
56 ## Facebook Login with React Native
@@ -70,9 +62,7 @@ One of the reason we built React Native is to be able to use all the libraries i
62
63 Jay Garcia spent a lot of time during the beta working on a NES music player with React Native. He wrote a blog post to share his experience and explains some code snippets.
64
73 -<center>
74 -[![](/react/img/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
75 -</center>
65 +[![](../img/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
66
67
68 ## React Native with Babel and webpack
docs/_posts/2015-04-17-react-native-v0.4.md
+1 -1
@@ -1,7 +1,7 @@
1 ---
2 title: "React Native v0.4"
3 layout: post
4 -author: vjeux
4 +author: [vjeux]
5 ---
6
7 It's been three weeks since we open sourced React Native and there's been some insane amount of activity already: over 12.5k stars, 1000 commits, 500 issues, 380 pull requests, and 100 contributors, plus [35 plugins](http://react.parts/native-ios) and [1 app in the app store](http://herman.asia/building-a-flashcard-app-with-react-native)! We were expecting some buzz around the project but this is way beyond anything we imagined. Thank you!
docs/_posts/2015-04-18-react-v0.13.2.md
+2 -2
@@ -1,9 +1,9 @@
1 ---
2 title: "React v0.13.2"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 -Yesterday the [React Native team shipped v0.4](/react/blog/2015/04/17/react-native-v0.4.html). Those of us working on the web team just a few feet away couldn't just be shown up like that so we're shipping v0.13.2 today as well! This is a bug fix release to address a few things while we continue to work towards v0.14.
6 +Yesterday the [React Native team shipped v0.4](/blog/2015/04/17/react-native-v0.4.html). Those of us working on the web team just a few feet away couldn't just be shown up like that so we're shipping v0.13.2 today as well! This is a bug fix release to address a few things while we continue to work towards v0.14.
7
8 The release is now available for download:
9
docs/_posts/2015-05-01-graphql-introduction.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "GraphQL Introduction"
3 -author: schrockn
3 +author: [schrockn]
4 ---
5
6 At the React.js conference in late January 2015, we revealed our next major technology in the React family: [Relay](http://facebook.github.io/react/blog/2015/02/20/introducing-relay-and-graphql.html).
docs/_posts/2015-05-08-react-v0.13.3.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.13.3"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're sharing another patch release in the v0.13 branch. There are only a few small changes, with a couple to address some issues that arose around that undocumented feature so many of you are already using: `context`. We also improved developer ergonomics just a little bit, making some warnings better.
docs/_posts/2015-05-22-react-native-release-process.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: "React Native Release Process"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 The React Native release process have been a bit chaotic since we open sourced. It was unclear when new code was released, there was no changelog, we bumped the minor and patch version inconsistently and we often had to submit updates right after a release to fix a bad bug. In order to *move fast with stable infra*, we are introducing a real release process with a two-week release schedule.
@@ -19,4 +19,4 @@ You now have three ways to get React Native. You should chose the one you want b
19
20 If you want more details, I highly recommend this video that explains how Facebook mobile release process works and why it was setup this way.
21
22 -<iframe width="100%" height="300" src="https://www.youtube.com/embed/mOyoTUETmSM" frameborder="0" allowfullscreen></iframe>
22 +<iframe width="650" height="300" src="https://www.youtube.com/embed/mOyoTUETmSM" frameborder="0" allowfullscreen></iframe>
docs/_posts/2015-06-12-deprecating-jstransform-and-react-tools.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Deprecating JSTransform and react-tools"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're announcing the deprecation of react-tools and JSTransform.
docs/_posts/2015-07-03-react-v0.14-beta-1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React v0.14 Beta 1
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 This week, many people in the React community are at [ReactEurope](https://www.react-europe.org/) in the beautiful (and very warm) city of Paris, the second React conference that's been held to date. At our last conference, we released the first beta of React 0.13, and we figured we'd do the same today with our first beta of React 0.14, giving you something to play with if you're not at the conference or you're looking for something to do on the way home.
docs/_posts/2015-08-03-new-react-devtools-beta.md
+5 -5
@@ -1,12 +1,12 @@
1 ---
2 title: "New React Devtools Beta"
3 -author: jaredly
3 +author: [jaredly]
4 ---
5
6 We've made an entirely new version of the devtools, and we want you to try it
7 out!
8
9 -![The full devtools gif](/react/img/blog/devtools-full.gif)
9 +![The full devtools gif](../img/blog/devtools-full.gif)
10
11 ## Why entirely new?
12
@@ -33,7 +33,7 @@ Yeah!
33
34 ### The Tree View
35
36 -![The new tree view of the devtools](/react/img/blog/devtools-tree-view.png)
36 +![The new tree view of the devtools](../img/blog/devtools-tree-view.png)
37
38 - Much richer view of your props, including the contents of objects and arrays
39 - Custom components are emphasized, native components are de-emphasized
@@ -52,14 +52,14 @@ Yeah!
52 Select the search bar (or press "/"), and start searching for a component by
53 name.
54
55 -![](/react/img/blog/devtools-search.gif)
55 +![](../img/blog/devtools-search.gif)
56
57 ### The Side Pane
58
59 - Now shows the `context` for a component
60 - Right-click to store a prop/state value as a global variable
61
62 -![](/react/img/blog/devtools-side-pane.gif)
62 +![](../img/blog/devtools-side-pane.gif)
63
64 ## How do I install it?
65
docs/_posts/2015-08-11-relay-technical-preview.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Relay Technical Preview"
3 -author: josephsavona
3 +author: [josephsavona]
4 ---
5
6 # Relay
docs/_posts/2015-08-13-reacteurope-roundup.md
+10 -10
@@ -1,46 +1,46 @@
1 ---
2 title: "ReactEurope Round-up"
3 layout: post
4 -author: matthewjohnston4
4 +author: [matthewjohnston4]
5 ---
6
7 Last month, the first React.js European conference took place in the city of Paris, at ReactEurope. Attendees were treated to a range of talks covering React, React Native, Flux, Relay, and GraphQL. Big thanks to everyone involved with organizing the conference, to all the attendees, and everyone who gave their time to speak - it wouldn't have been possible without the help and support of the React community.
8
9 [Christopher Chedeau](https://github.com/vjeux) gave the opening keynote to the conference:
10
11 -<iframe width="100%" height="366" src="//www.youtube.com/embed/PAA9O4E1IM4" frameborder="0" allowfullscreen></iframe>
11 +<iframe width="650" height="366" src="//www.youtube.com/embed/PAA9O4E1IM4" frameborder="0" allowfullscreen></iframe>
12
13 [Spencer Ahrens](https://github.com/sahrens) walks through building an advanced gestural UI leveraging the unique power of the React Native layout and animation systems to build a complex and fluid experience:
14
15 -<iframe width="100%" height="366" src="//www.youtube.com/embed/xDlfrcM6YBk" frameborder="0" allowfullscreen></iframe>
15 +<iframe width="650" height="366" src="//www.youtube.com/embed/xDlfrcM6YBk" frameborder="0" allowfullscreen></iframe>
16
17 [Lee Byron](https://github.com/leebyron) explores GraphQL, its core principles, how it works, and what makes it a powerful tool:
18
19 -<iframe width="100%" height="366" src="//www.youtube.com/embed/WQLzZf34FJ8" frameborder="0" allowfullscreen></iframe>
19 +<iframe width="650" height="366" src="//www.youtube.com/embed/WQLzZf34FJ8" frameborder="0" allowfullscreen></iframe>
20
21 [Joseph Savona](https://github.com/josephsavona) explores the problems Relay solves, its architecture and the query lifecycle, and how can you use Relay to build more scalable apps. There are examples of how Relay powers applications as complex as the Facebook News Feed:
22
23 -<iframe width="100%" height="366" src="//www.youtube.com/embed/IrgHurBjQbg" frameborder="0" allowfullscreen></iframe>
23 +<iframe width="650" height="366" src="//www.youtube.com/embed/IrgHurBjQbg" frameborder="0" allowfullscreen></iframe>
24
25 [Nick Schrock](https://github.com/schrockn) and [Dan Schafer](https://github.com/dschafer) take a deeper dive into putting GraphQL to work. How can we build a GraphQL API to work with an existing REST API or server-side data model? What are best practices when building a GraphQL API, and how do they differ from traditional REST best practices? How does Facebook use GraphQL? Most importantly, what does a complete and coherent GraphQL API looks like, and how can we get started building one?
26
27 -<iframe width="100%" height="366" src="//www.youtube.com/embed/gY48GW87Feo" frameborder="0" allowfullscreen></iframe>
27 +<iframe width="650" height="366" src="//www.youtube.com/embed/gY48GW87Feo" frameborder="0" allowfullscreen></iframe>
28
29 [Sebastian Markbåge](https://github.com/sebmarkbage) talks about why the DOM is flawed and how it is becoming a second-class citizen in the land of React apps:
30
31 -<iframe width="100%" height="366" src="//www.youtube.com/embed/Zemce4Y1Y-A" frameborder="0" allowfullscreen></iframe>
31 +<iframe width="650" height="366" src="//www.youtube.com/embed/Zemce4Y1Y-A" frameborder="0" allowfullscreen></iframe>
32
33 [Sebastian McKenzie](https://github.com/sebmck) goes over how existing JSX build pipeline infrastructure can be further utilised to perform even more significant code transformations such as transpilation, optimisation, profiling and more, reducing bugs, making your code faster and you as a developer more productive and happy:
34
35 -<iframe width="100%" height="366" src="//www.youtube.com/embed/OFuDvqZmUrE" frameborder="0" allowfullscreen></iframe>
35 +<iframe width="650" height="366" src="//www.youtube.com/embed/OFuDvqZmUrE" frameborder="0" allowfullscreen></iframe>
36
37 [Cheng Lou](https://github.com/chenglou) gives a talk on the past, the present and the future of animation, and the place React can potentially take in this:
38
39 -<iframe width="100%" height="366" src="//www.youtube.com/embed/1tavDv5hXpo" frameborder="0" allowfullscreen></iframe>
39 +<iframe width="650" height="366" src="//www.youtube.com/embed/1tavDv5hXpo" frameborder="0" allowfullscreen></iframe>
40
41 And there was a Q&A session with the whole team covering a range of React topics:
42
43 -<iframe width="100%" height="366" src="//www.youtube.com/embed/CRJZBZ_-6hQ" frameborder="0" allowfullscreen></iframe>
43 +<iframe width="650" height="366" src="//www.youtube.com/embed/CRJZBZ_-6hQ" frameborder="0" allowfullscreen></iframe>
44
45 And there were lots of great talks from the React community:
46
docs/_posts/2015-09-02-new-react-developer-tools.md
+3 -3
@@ -1,12 +1,12 @@
1 ---
2 title: "New React Developer Tools"
3 layout: post
4 -author: sophiebits
4 +author: [sophiebits]
5 ---
6
7 -A month ago, we [posted a beta](/react/blog/2015/08/03/new-react-devtools-beta.html) of the new React developer tools. Today, we're releasing the first stable version of the new devtools. We're calling it version 0.14, but it's a full rewrite so we think of it more like a 2.0 release.
7 +A month ago, we [posted a beta](/blog/2015/08/03/new-react-devtools-beta.html) of the new React developer tools. Today, we're releasing the first stable version of the new devtools. We're calling it version 0.14, but it's a full rewrite so we think of it more like a 2.0 release.
8
9 -![Video/screenshot of new devtools](/react/img/blog/devtools-full.gif)
9 +![Video/screenshot of new devtools](../img/blog/devtools-full.gif)
10
11 It contains a handful of new features, including:
12
docs/_posts/2015-09-10-react-v0.14-rc1.md
+7 -7
@@ -1,9 +1,9 @@
1 ---
2 title: "React v0.14 Release Candidate"
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 -We’re happy to announce our first release candidate for React 0.14! We gave you a [sneak peek in July](/react/blog/2015/07/03/react-v0.14-beta-1.html) at the upcoming changes but we’ve now stabilized the release more and we’d love for you to try it out before we release the final version.
6 +We’re happy to announce our first release candidate for React 0.14! We gave you a [sneak peek in July](/blog/2015/07/03/react-v0.14-beta-1.html) at the upcoming changes but we’ve now stabilized the release more and we’d love for you to try it out before we release the final version.
7
8 Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
9
@@ -107,7 +107,7 @@ These builds are also available in the `react` package on bower.
107
108 - #### Deprecation of react-tools
109
110 - The `react-tools` package and `JSXTransformer.js` browser file [have been deprecated](/react/blog/2015/06/12/deprecating-jstransform-and-react-tools.html). You can continue using version `0.13.3` of both, but we no longer support them and recommend migrating to [Babel](http://babeljs.io/), which has built-in support for React and JSX.
110 + The `react-tools` package and `JSXTransformer.js` browser file [have been deprecated](/blog/2015/06/12/deprecating-jstransform-and-react-tools.html). You can continue using version `0.13.3` of both, but we no longer support them and recommend migrating to [Babel](http://babeljs.io/), which has built-in support for React and JSX.
111
112 - #### Compiler optimizations
113
@@ -124,8 +124,8 @@ As always, we have a few breaking changes in this release. Whenever we make larg
124
125 These three breaking changes had a warning in 0.13, so you shouldn’t have to do anything if your code is already free of warnings:
126
127 -- The `props` object is now frozen, so mutating props after creating a component element is no longer supported. In most cases, [`React.cloneElement`](/react/docs/top-level-api.html#react.cloneelement) should be used instead. This change makes your components easier to reason about and enables the compiler optimizations mentioned above.
128 -- Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/react/docs/create-fragment.html) helper to migrate, which now returns an array.
127 +- The `props` object is now frozen, so mutating props after creating a component element is no longer supported. In most cases, [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) should be used instead. This change makes your components easier to reason about and enables the compiler optimizations mentioned above.
128 +- Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/docs/create-fragment.html) helper to migrate, which now returns an array.
129 - Add-Ons: `classSet` has been removed. Use [classnames](https://github.com/JedWatson/classnames) instead.
130
131 And these two changes did not warn in 0.13 but should be easy to find and clean up:
@@ -140,9 +140,9 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
140 If you have a large codebase, you can use our [automated codemod script](https://github.com/facebook/react/blob/master/packages/react-codemod/README.md) to change your code automatically.
141
142 - `setProps` and `replaceProps` are now deprecated. Instead, call ReactDOM.render again at the top level with the new props.
143 -- ES6 component classes must now extend `React.Component` in order to enable stateless function components. The [ES3 module pattern](/react/blog/2015/01/27/react-v0.13.0-beta-1.html#other-languages) will continue to work.
143 +- ES6 component classes must now extend `React.Component` in order to enable stateless function components. The [ES3 module pattern](/blog/2015/01/27/react-v0.13.0-beta-1.html#other-languages) will continue to work.
144 - Reusing and mutating a `style` object between renders has been deprecated. This mirrors our change to freeze the `props` object.
145 -- Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/react/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
145 +- Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
146 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
147
148 ### Notable enhancements
docs/_posts/2015-09-14-community-roundup-27.md
+4 -4
@@ -1,10 +1,10 @@
1 ---
2 -title: "Community Round-up #27 &ndash; Relay Edition"
2 +title: "Community Round-up #27 – Relay Edition"
3 layout: post
4 -author: steveluscher
4 +author: [steveluscher]
5 ---
6
7 -In the weeks following the [open-source release](/react/blog/2015/08/11/relay-technical-preview.html) of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!
7 +In the weeks following the [open-source release](/blog/2015/08/11/relay-technical-preview.html) of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!
8
9 ## Teaching servers to speak GraphQL
10
@@ -43,7 +43,7 @@ Joe McBride ([joemcbride](https://github.com/joemcbride)) has an up-and-running
43 Interact with this [visual tour of Relay's architecture](http://sgwilym.github.io/relay-visual-learners/) by Sam Gwilym ([sgwilym](https://github.com/sgwilym)).
44
45 <a href="http://sgwilym.github.io/relay-visual-learners/">
46 - <img src="/react/img/blog/relay-visual-architecture-tour.png" alt="Relay for visual learners" style="max-width:100%">
46 + <img src="../img/blog/relay-visual-architecture-tour.png" alt="Relay for visual learners" style="max-width:100%">
47 </a>
48
49 Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations &ndash; all atop a Ruby GraphQL server: [new.comique.co](http://new.comique.co/)
docs/_posts/2015-10-07-react-v0.14.md
+6 -6
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.14"
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 We’re happy to announce the release of React 0.14 today! This release has a few major changes, primarily designed to simplify the code you write every day and to better support environments like React Native.
@@ -131,7 +131,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
131
132 - #### Deprecation of react-tools
133
134 - The `react-tools` package and `JSXTransformer.js` browser file [have been deprecated](/react/blog/2015/06/12/deprecating-jstransform-and-react-tools.html). You can continue using version `0.13.3` of both, but we no longer support them and recommend migrating to [Babel](http://babeljs.io/), which has built-in support for React and JSX.
134 + The `react-tools` package and `JSXTransformer.js` browser file [have been deprecated](/blog/2015/06/12/deprecating-jstransform-and-react-tools.html). You can continue using version `0.13.3` of both, but we no longer support them and recommend migrating to [Babel](http://babeljs.io/), which has built-in support for React and JSX.
135
136 - #### Compiler optimizations
137
@@ -151,8 +151,8 @@ In almost all cases, we change our APIs gradually and warn for at least one rele
151
152 These three breaking changes had a warning in 0.13, so you shouldn’t have to do anything if your code is already free of warnings:
153
154 -- The `props` object is now frozen, so mutating props after creating a component element is no longer supported. In most cases, [`React.cloneElement`](/react/docs/top-level-api.html#react.cloneelement) should be used instead. This change makes your components easier to reason about and enables the compiler optimizations mentioned above.
155 -- Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/react/docs/create-fragment.html) helper to migrate, which now returns an array.
154 +- The `props` object is now frozen, so mutating props after creating a component element is no longer supported. In most cases, [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) should be used instead. This change makes your components easier to reason about and enables the compiler optimizations mentioned above.
155 +- Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/docs/create-fragment.html) helper to migrate, which now returns an array.
156 - Add-Ons: `classSet` has been removed. Use [classnames](https://github.com/JedWatson/classnames) instead.
157
158 ### New deprecations, introduced with a warning
@@ -164,9 +164,9 @@ Each of these changes will continue to work as before with a new warning until t
164 With each returned DOM node, we've added a `getDOMNode` method for backwards compatibility that will work with a warning until 0.15. If you have a large codebase, you can use our [automated codemod script](https://github.com/reactjs/react-codemod/blob/master/README.md) to change your code automatically.
165
166 - `setProps` and `replaceProps` are now deprecated. Instead, call ReactDOM.render again at the top level with the new props.
167 -- ES6 component classes must now extend `React.Component` in order to enable stateless function components. The [ES3 module pattern](/react/blog/2015/01/27/react-v0.13.0-beta-1.html#other-languages) will continue to work.
167 +- ES6 component classes must now extend `React.Component` in order to enable stateless function components. The [ES3 module pattern](/blog/2015/01/27/react-v0.13.0-beta-1.html#other-languages) will continue to work.
168 - Reusing and mutating a `style` object between renders has been deprecated. This mirrors our change to freeze the `props` object.
169 -- Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/react/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
169 +- Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
170 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
171
172 ### Notable enhancements
docs/_posts/2015-10-19-reactiflux-is-moving-to-discord.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Reactiflux is moving to Discord"
3 -author: benigeri
3 +author: [benigeri]
4 ---
5
6 TL;DR: Slack decided that Reactiflux had too many members and disabled new invites. Reactiflux is moving to Discord. Join us: [http://join.reactiflux.com](http://join.reactiflux.com/)
docs/_posts/2015-10-28-react-v0.14.1.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.14.1"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 After a couple weeks of having more people use v0.14, we're ready to ship a patch release addressing a few issues. Thanks to everybody who has reported issues and written patches!
docs/_posts/2015-11-02-react-v0.14.2.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.14.2"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 We have a quick update following the release of 0.14.1 last week. It turns out we broke a couple things in the development build of React when using Internet Explorer. Luckily it was only the development build, so your production applications were unaffected. This release is mostly to address those issues. There is one notable change if consuming React from npm. For the `react-dom` package, we moved `react` from a regular dependency to a peer dependency. This will impact very few people as these two are typically installed together at the top level, but it will fix some issues with dependencies of installed components also using `react` as a peer dependency.
docs/_posts/2015-11-18-react-v0.14.3.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.14.3"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 It's time for another installment of React patch releases! We didn't break anything in v0.14.2 but we do have a couple of other bugs we're fixing. The biggest change in this release is actually an addition of a new built file. We heard from a number of people that they still need the ability to use React to render to a string on the client. While the use cases are not common and there are other ways to achieve this, we decided that it's still valuable to support. So we're now building `react-dom-server.js`, which will be shipped to Bower and in the `dist/` directory of the `react-dom` package on npm. This file works the same way as `react-dom.js` and therefore requires that the primary React build has already been included on the page.
docs/_posts/2015-12-04-react-js-conf-2016-diversity-scholarship.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: React.js Conf 2016 Diversity Scholarship
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 I am thrilled to announced that we will be organizing another diversity scholarship program for the upcoming React.js Conf! The tech industry is suffering from a lack of diversity, but it's important to us that we have a thriving community that is made up of people with a variety of experiences and viewpoints.
docs/_posts/2015-12-16-ismounted-antipattern.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "isMounted is an Antipattern"
3 -author: jimfb
3 +author: [jimfb]
4 ---
5
6 As we move closer to officially deprecating isMounted, it's worth understanding why the function is an antipattern, and how to write code without the isMounted function.
docs/_posts/2015-12-18-react-components-elements-and-instances.md
+9 -9
@@ -1,6 +1,6 @@
1 ---
2 title: "React Components, Elements, and Instances"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 The difference between **components, their instances, and elements** confuses many React beginners. Why are there three different terms to refer to something that is painted on screen?
@@ -350,13 +350,13 @@ React will ask the `Form` component what element tree it returns, given those `p
350 }
351 ```
352
353 -This is a part of the process that React calls [reconciliation](/react/docs/reconciliation.html) which starts when you call [`ReactDOM.render()`](/react/docs/top-level-api.html#reactdom.render) or [`setState()`](/react/docs/component-api.html#setstate). By the end of the reconciliation, React knows the result DOM tree, and a renderer like `react-dom` or `react-native` applies the minimal set of changes necessary to update the DOM nodes (or the platform-specific views in case of React Native).
353 +This is a part of the process that React calls [reconciliation](/docs/reconciliation.html) which starts when you call [`ReactDOM.render()`](/docs/top-level-api.html#reactdom.render) or [`setState()`](/docs/component-api.html#setstate). By the end of the reconciliation, React knows the result DOM tree, and a renderer like `react-dom` or `react-native` applies the minimal set of changes necessary to update the DOM nodes (or the platform-specific views in case of React Native).
354
355 -This gradual refining process is also the reason React apps are easy to optimize. If some parts of your component tree become too large for React to visit efficiently, you can tell it to [skip this “refining” and diffing certain parts of the tree if the relevant props have not changed](/react/docs/advanced-performance.html). It is very fast to calculate whether the props have changed if they are immutable, so React and immutability work great together, and can provide great optimizations with the minimal effort.
355 +This gradual refining process is also the reason React apps are easy to optimize. If some parts of your component tree become too large for React to visit efficiently, you can tell it to [skip this “refining” and diffing certain parts of the tree if the relevant props have not changed](/docs/advanced-performance.html). It is very fast to calculate whether the props have changed if they are immutable, so React and immutability work great together, and can provide great optimizations with the minimal effort.
356
357 You might have noticed that this blog entry talks a lot about components and elements, and not so much about the instances. The truth is, instances have much less importance in React than in most object-oriented UI frameworks.
358
359 -Only components declared as classes have instances, and you never create them directly: React does that for you. While [mechanisms for a parent component instance to access a child component instance](/react/docs/more-about-refs.html) exist, they are only used for imperative actions (such as setting focus on a field), and should generally be avoided.
359 +Only components declared as classes have instances, and you never create them directly: React does that for you. While [mechanisms for a parent component instance to access a child component instance](/docs/more-about-refs.html) exist, they are only used for imperative actions (such as setting focus on a field), and should generally be avoided.
360
361 React takes care of creating an instance for every class component, so you can write components in an object-oriented way with methods and local state, but other than that, instances are not very important in the React’s programming model and are managed by React itself.
362
@@ -368,16 +368,16 @@ A *component* can be declared in several different ways. It can be a class with
368
369 When a component receives some props as an input, it is because a particular parent component returned an element with its `type` and these props. This is why people say that the props flows one way in React: from parents to children.
370
371 -An *instance* is what you refer to as `this` in the component class you write. It is useful for [storing local state and reacting to the lifecycle events](/react/docs/component-api.html).
371 +An *instance* is what you refer to as `this` in the component class you write. It is useful for [storing local state and reacting to the lifecycle events](/docs/component-api.html).
372
373 Functional components don’t have instances at all. Class components have instances, but you never need to create a component instance directly—React takes care of this.
374
375 -Finally, to create elements, use [`React.createElement()`](/react/docs/top-level-api.html#react.createelement), [JSX](/react/docs/jsx-in-depth.html), or an [element factory helper](/react/docs/top-level-api.html#react.createfactory). Don’t write elements as plain objects in the real code—just know that they are plain objects under the hood.
375 +Finally, to create elements, use [`React.createElement()`](/docs/top-level-api.html#react.createelement), [JSX](/docs/jsx-in-depth.html), or an [element factory helper](/docs/top-level-api.html#react.createfactory). Don’t write elements as plain objects in the real code—just know that they are plain objects under the hood.
376
377 ## Further Reading
378
379 -* [Introducing React Elements](/react/blog/2014/10/14/introducing-react-elements.html)
380 -* [Streamlining React Elements](/react/blog/2015/02/24/streamlining-react-elements.html)
381 -* [React (Virtual) DOM Terminology](/react/docs/glossary.html)
379 +* [Introducing React Elements](/blog/2014/10/14/introducing-react-elements.html)
380 +* [Streamlining React Elements](/blog/2015/02/24/streamlining-react-elements.html)
381 +* [React (Virtual) DOM Terminology](/docs/glossary.html)
382
383 [^1]: All React elements require an additional ``$$typeof: Symbol.for('react.element')`` field declared on the object for [security reasons](https://github.com/facebook/react/pull/4832). It is omitted in the examples above. This blog entry uses inline objects for elements to give you an idea of what’s happening underneath but the code won’t run as is unless you either add `$$typeof` to the elements, or change the code to use `React.createElement()` or JSX.
docs/_posts/2015-12-29-react-v0.14.4.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.14.4"
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 Happy December! We have a minor point release today. It has just a few small bug fixes.
docs/_posts/2016-01-08-A-implies-B-does-not-imply-B-implies-A.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "(A => B) !=> (B => A)"
3 -author: jimfb
3 +author: [jimfb]
4 ---
5
6 The documentation for `componentWillReceiveProps` states that `componentWillReceiveProps` will be invoked when the props change as the result of a rerender. Some people assume this means "if `componentWillReceiveProps` is called, then the props must have changed", but that conclusion is logically incorrect.
docs/_posts/2016-01-12-discontinuing-ie8-support.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Discontinuing IE 8 Support in React DOM"
3 -author: sophiebits
3 +author: [sophiebits]
4 ---
5
6 Since its 2013 release, React has supported all popular browsers, including Internet Explorer 8 and above. We handle normalizing many quirks present in old browser versions, including event system differences, so that your app code doesn't have to worry about most browser bugs.
docs/_posts/2016-02-19-new-versioning-scheme.md
+8 -8
@@ -1,6 +1,6 @@
1 ---
2 title: "New Versioning Scheme"
3 -author: sebmarkbage
3 +author: [sebmarkbage]
4 ---
5
6 Today we're announcing that we're switching to major revisions for React. The current version is 0.14.7. The next release will be: **15.0.0**
@@ -13,21 +13,21 @@ The core of the React API has been stable for years. Our business as well as man
13
14 React isn't just a library but an ecosystem. We know that your applications and ours are not just isolated islands of code. It is a network of your own application code, your own open source components and third party libraries that all depend on React.
15
16 -<img src="/react/img/blog/versioning-1.png" width="403">
16 +<img src="../img/blog/versioning-1.png" width="403">
17
18 Therefore it is important that we don't just upgrade our own codebases but that we bring our whole community with us. We take the upgrade path very seriously - for everyone.
19
20 -<img src="/react/img/blog/versioning-poll.png" width="596">
20 +<img src="../img/blog/versioning-poll.png" width="596">
21
22 ## Introducing Minor Releases
23
24 Ideally everyone could just depend on the latest version of React all the time.
25
26 -<img src="/react/img/blog/versioning-2.png" width="463">
26 +<img src="../img/blog/versioning-2.png" width="463">
27
28 We know that in practice that is not possible. In the future, we expect more new additive APIs rather than breakage of existing ones. By moving to major revisions in the semver scheme, we can release new versions without breaking existing ones.
29
30 -<img src="/react/img/blog/versioning-3.png" width="503">
30 +<img src="../img/blog/versioning-3.png" width="503">
31
32 That means that if one component needs a new API, there is no need for any of the other components to do any further work. They remain compatible.
33
@@ -47,14 +47,14 @@ Once we've reached the end of life for a particular major version, we'll release
47
48 If you try to upgrade your component to 16.0.0 you might find that your application no longer works if you still have other dependencies. E.g. if Ryan's and Jed's components are only compatible with 15.x.x.
49
50 -<img src="/react/img/blog/versioning-4.png" width="498">
50 +<img src="../img/blog/versioning-4.png" width="498">
51
52 Worst case, you revert back to 15.1.0 for your application. Since you'll want to use your component, you might also revert that one.
53
54 -<img src="/react/img/blog/versioning-5.png" width="493">
54 +<img src="../img/blog/versioning-5.png" width="493">
55
56 Of course, Ryan and Jed think the same way. If we're not careful, we can hit a cliff where nobody upgrades. This has happened to many software project ecosystems in the past.
57
58 Therefore, we're committed to making it easy for most components and libraries built on top of React to be compatible with two major versions at the same time. We will do this by introducing new APIs before completely removing the old ones, thereby avoiding those cliffs.
59
60 -<img src="/react/img/blog/versioning-6.png" width="493">
60 +<img src="../img/blog/versioning-6.png" width="493">
docs/_posts/2016-03-07-react-v15-rc1.md
+2 -2
@@ -1,11 +1,11 @@
1 ---
2 title: "React v15.0 Release Candidate"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Sorry for the small delay in releasing this. As we said, we've been busy binge-watching House of Cards. That scene in the last episode where Francis and Claire Underwood <abbr title="You didn't think we would actually spoil anything did you?">████████████████████████████████████</abbr>. WOW!
7
8 -But now we're ready, so without further ado, we're shipping a release candidate for React v15 now. As a reminder, [we're switching to major versions](/react/blog/2016/02/19/new-versioning-scheme.html) to indicate that we have been using React in production for a long time. This 15.0 release follows our previous 0.14 version and we'll continue to follow semver like we've been doing since 2013. It's also worth noting that [we no longer actively support Internet Explorer 8](/react/blog/2016/01/12/discontinuing-ie8-support.html). We believe React will work in its current form there but we will not be prioritizing any efforts to fix new issues that only affect IE8.
8 +But now we're ready, so without further ado, we're shipping a release candidate for React v15 now. As a reminder, [we're switching to major versions](/blog/2016/02/19/new-versioning-scheme.html) to indicate that we have been using React in production for a long time. This 15.0 release follows our previous 0.14 version and we'll continue to follow semver like we've been doing since 2013. It's also worth noting that [we no longer actively support Internet Explorer 8](/blog/2016/01/12/discontinuing-ie8-support.html). We believe React will work in its current form there but we will not be prioritizing any efforts to fix new issues that only affect IE8.
9
10 Please try it out before we publish the final release. Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
11
docs/_posts/2016-03-16-react-v15-rc2.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v15.0 Release Candidate 2"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Today we're releasing a second release candidate for version 15. Primarily this is to address 2 issues, but we also picked up a few small changes from new contributors, including some improvements to some of our new warnings.
docs/_posts/2016-03-29-react-v0.14.8.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "React v0.14.8"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 We have already released two release candidates for React 15, and the final version is coming soon.
docs/_posts/2016-04-07-react-v15.md
+3 -3
@@ -1,11 +1,11 @@
1 ---
2 title: "React v15.0"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 We would like to thank the React community for reporting issues and regressions in the release candidates on our [issue tracker](https://github.com/facebook/react/issues/). Over the last few weeks we fixed those issues, and now, after two release candidates, we are excited to finally release the stable version of React 15.
7
8 -As a reminder, [we’re switching to major versions](/react/blog/2016/02/19/new-versioning-scheme.html) to indicate that we have been using React in production for a long time. This 15.0 release follows our previous 0.14 version and we’ll continue to follow semver like we’ve been doing since 2013. It’s also worth noting that [we no longer actively support Internet Explorer 8](/react/blog/2016/01/12/discontinuing-ie8-support.html). We believe React will work in its current form there but we will not be prioritizing any efforts to fix new issues that only affect IE8.
8 +As a reminder, [we’re switching to major versions](/blog/2016/02/19/new-versioning-scheme.html) to indicate that we have been using React in production for a long time. This 15.0 release follows our previous 0.14 version and we’ll continue to follow semver like we’ve been doing since 2013. It’s also worth noting that [we no longer actively support Internet Explorer 8](/blog/2016/01/12/discontinuing-ie8-support.html). We believe React will work in its current form there but we will not be prioritizing any efforts to fix new issues that only affect IE8.
9
10 React 15 brings significant improvements to how we interact with the DOM:
11
@@ -73,7 +73,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
73
74 - #### Functional components can now return `null` too
75
76 - We added support for [defining stateless components as functions](/react/blog/2015/09/10/react-v0.14-rc1.html#stateless-function-components) in React 0.14. However, React 0.14 still allowed you to define a class component without extending `React.Component` or using `React.createClass()`, so [we couldn’t reliably tell if your component is a function or a class](https://github.com/facebook/react/issues/5355), and did not allow returning `null` from it. This issue is solved in React 15, and you can now return `null` from any component, whether it is a class or a function.
76 + We added support for [defining stateless components as functions](/blog/2015/09/10/react-v0.14-rc1.html#stateless-function-components) in React 0.14. However, React 0.14 still allowed you to define a class component without extending `React.Component` or using `React.createClass()`, so [we couldn’t reliably tell if your component is a function or a class](https://github.com/facebook/react/issues/5355), and did not allow returning `null` from it. This issue is solved in React 15, and you can now return `null` from any component, whether it is a class or a function.
77
78 <small>[@jimfb](https://github.com/jimfb) in [#5884](https://github.com/facebook/react/pull/5884)</small>
79
docs/_posts/2016-04-08-react-v15.0.1.md
+2 -2
@@ -1,11 +1,11 @@
1 ---
2 title: "React v15.0.1"
3 -author: zpao
3 +author: [zpao]
4 ---
5
6 Yesterday afternoon we shipped v15.0.0 and quickly got some feedback about a couple of issues. We apologize for these problems and we've been working since then to make sure we get fixes into your hands as quickly as possible.
7
8 -The first of these issues is related to the removal of an undocumented API. This API was added to enable [JSX Spread Attributes](/react/docs/jsx-spread.html) in our JS compile tools (react-tools, JSXTransformer) before `Object.assign` was standard. When we stopped supporting these tools last year, we kept the API there to catch the longer tail of people using those tools. Meanwhile we moved to using Babel and encouraged others to do the same. Babel will typically compile the spread use to an `_extends` helper, which will use `Object.assign`. We did not properly research other compilation tools before deciding to remove the API in v15. Specifically, TypeScript and coffee-react are two popular packages using `React.__spread`, as well as reactify which still makes use react-tools. In order to make sure that code compiled with these tools is not broken, we will be restoring the `React.__spread` API and adding a warning. It will be removed in the future so if you maintain a project making using of it, we encourage you to compile to `Object.assign` directly or a similar helper function.
8 +The first of these issues is related to the removal of an undocumented API. This API was added to enable [JSX Spread Attributes](/docs/jsx-spread.html) in our JS compile tools (react-tools, JSXTransformer) before `Object.assign` was standard. When we stopped supporting these tools last year, we kept the API there to catch the longer tail of people using those tools. Meanwhile we moved to using Babel and encouraged others to do the same. Babel will typically compile the spread use to an `_extends` helper, which will use `Object.assign`. We did not properly research other compilation tools before deciding to remove the API in v15. Specifically, TypeScript and coffee-react are two popular packages using `React.__spread`, as well as reactify which still makes use react-tools. In order to make sure that code compiled with these tools is not broken, we will be restoring the `React.__spread` API and adding a warning. It will be removed in the future so if you maintain a project making using of it, we encourage you to compile to `Object.assign` directly or a similar helper function.
9
10 The second issue resulted in cursor position being lost in controlled inputs. We merged a pull request earlier this week to fix a separate regression from v0.14. Our goal was to target `<option>` elements but we ended up targeting all interactions with `value` properties. Unfortunately we didn't test it as thoroughly as we thought. We backed out the offending change and fixed the issue in different way which doesn't have the same problem.
11
docs/_posts/2016-07-11-introducing-reacts-error-code-system.md
+2 -2
@@ -1,6 +1,6 @@
1 ---
2 title: "Introducing React's Error Code System"
3 -author: keyanzhang
3 +author: [keyanzhang]
4 ---
5
6 Building a better developer experience has been one of the things that React deeply cares about, and a crucial part of it is to detect anti-patterns/potential errors early and provide helpful error messages when things (may) go wrong. However, most of these only exist in development mode; in production, we avoid having extra expensive assertions and sending down full error messages in order to reduce the number of bytes sent over the wire.
@@ -11,7 +11,7 @@ Prior to this release, we stripped out error messages at build-time and this is
11
12 In order to make debugging in production easier, we're introducing an Error Code System in [15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0). We developed a [gulp script](https://github.com/facebook/react/blob/master/scripts/error-codes/gulp-extract-errors.js) that collects all of our `invariant` error messages and folds them to a [JSON file](https://github.com/facebook/react/blob/master/scripts/error-codes/codes.json), and at build-time Babel uses the JSON to [rewrite](https://github.com/facebook/react/blob/master/scripts/error-codes/replace-invariant-error-codes.js) our `invariant` calls in production to reference the corresponding error IDs. Now when things go wrong in production, the error that React throws will contain a URL with an error ID and relevant information. The URL will point you to a page in our documentation where the original error message gets reassembled.
13
14 -While we hope you don't see errors often, you can see how it works [here](/react/docs/error-decoder.html?invariant=109&args[]=Foo). This is what the same error from above will look like:
14 +While we hope you don't see errors often, you can see how it works [here](/docs/error-decoder.html?invariant=109&args[]=Foo). This is what the same error from above will look like:
15
16 > Minified React error #109; visit https://facebook.github.io/react/docs/error-decoder.html?invariant=109&args[]=Foo for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
17
docs/_posts/2016-07-13-mixins-considered-harmful.md
+5 -5
@@ -1,6 +1,6 @@
1 ---
2 title: "Mixins Considered Harmful"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 “How do I share the code between several components?” is one of the first questions that people ask when they learn React. Our answer has always been to use component composition for code reuse. You can define a component and use it in several other components.
@@ -65,7 +65,7 @@ We hope that you find this list helpful. Please let us know if we missed importa
65
66 ### Performance Optimizations
67
68 -One of the most commonly used mixins is [`PureRenderMixin`](/react/docs/pure-render-mixin.html). You might be using it in some components to [prevent unnecessary re-renders](/react/docs/advanced-performance.html#shouldcomponentupdate-in-action) when the props and state are shallowly equal to the previous props and state:
68 +One of the most commonly used mixins is [`PureRenderMixin`](/docs/pure-render-mixin.html). You might be using it in some components to [prevent unnecessary re-renders](/docs/advanced-performance.html#shouldcomponentupdate-in-action) when the props and state are shallowly equal to the previous props and state:
69
70 ```javascript
71 var PureRenderMixin = require('react-addons-pure-render-mixin');
@@ -80,7 +80,7 @@ var Button = React.createClass({
80
81 #### Solution
82
83 -To express the same without mixins, you can use the [`shallowCompare`](/react/docs/shallow-compare.html) function directly instead:
83 +To express the same without mixins, you can use the [`shallowCompare`](/docs/shallow-compare.html) function directly instead:
84
85 ```js
86 var shallowCompare = require('react-addons-shallow-compare');
@@ -393,7 +393,7 @@ module.exports = withSubscription(CommentList);
393
394 Higher-order components are a powerful pattern. You can pass additional arguments to them if you want to further customize their behavior. After all, they are not even a feature of React. They are just functions that receive components and return components that wrap them.
395
396 -Like any solution, higher-order components have their own pitfalls. For example, if you heavily use [refs](/react/docs/more-about-refs.html), you might notice that wrapping something into a higher-order component changes the ref to point to the wrapping component. In practice we discourage using refs for component communication so we don’t think it’s a big issue. In the future, we might consider adding [ref forwarding](https://github.com/facebook/react/issues/4213) to React to solve this annoyance.
396 +Like any solution, higher-order components have their own pitfalls. For example, if you heavily use [refs](/docs/more-about-refs.html), you might notice that wrapping something into a higher-order component changes the ref to point to the wrapping component. In practice we discourage using refs for component communication so we don’t think it’s a big issue. In the future, we might consider adding [ref forwarding](https://github.com/facebook/react/issues/4213) to React to solve this annoyance.
397
398 ### Rendering Logic
399
@@ -471,7 +471,7 @@ Props keep component dependencies explicit, easy to replace, and enforceable wit
471
472 ### Context
473
474 -Another group of mixins we discovered were helpers for providing and consuming [React context](/react/docs/context.html). Context is an experimental unstable feature, has [certain issues](https://github.com/facebook/react/issues/2517), and will likely change its API in the future. We don’t recommend using it unless you’re confident there is no other way of solving your problem.
474 +Another group of mixins we discovered were helpers for providing and consuming [React context](/docs/context.html). Context is an experimental unstable feature, has [certain issues](https://github.com/facebook/react/issues/2517), and will likely change its API in the future. We don’t recommend using it unless you’re confident there is no other way of solving your problem.
475
476 Nevertheless, if you already use context today, you might have been hiding its usage with mixins like this:
477
docs/_posts/2016-07-22-create-apps-with-no-configuration.md
+7 -7
@@ -1,6 +1,6 @@
1 ---
2 title: "Create Apps with No Configuration"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 **[Create React App](https://github.com/facebookincubator/create-react-app)** is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration.
@@ -27,22 +27,22 @@ create-react-app hello-world
27
28 This will take a while as npm installs the transitive dependencies, but once it’s done, you will see a list of commands you can run in the created folder:
29
30 -![created folder](/react/img/blog/create-apps-with-no-configuration/created-folder.png)
30 +![created folder](../img/blog/create-apps-with-no-configuration/created-folder.png)
31
32 ### Starting the Server
33
34 Run `npm start` to launch the development server. The browser will open automatically with the created app’s URL.
35
36 -![compiled successfully](/react/img/blog/create-apps-with-no-configuration/compiled-successfully.png)
36 +![compiled successfully](../img/blog/create-apps-with-no-configuration/compiled-successfully.png)
37
38 Create React App uses both webpack and Babel under the hood.
39 The console output is tuned to be minimal to help you focus on the problems:
40
41 -![failed to compile](/react/img/blog/create-apps-with-no-configuration/failed-to-compile.png)
41 +![failed to compile](../img/blog/create-apps-with-no-configuration/failed-to-compile.png)
42
43 ESLint is also integrated so lint warnings are displayed right in the console:
44
45 -![compiled with warnings](/react/img/blog/create-apps-with-no-configuration/compiled-with-warnings.png)
45 +![compiled with warnings](../img/blog/create-apps-with-no-configuration/compiled-with-warnings.png)
46
47 We only picked a small subset of lint rules that often lead to bugs.
48
@@ -50,7 +50,7 @@ We only picked a small subset of lint rules that often lead to bugs.
50
51 To build an optimized bundle, run `npm run build`:
52
53 -![npm run build](/react/img/blog/create-apps-with-no-configuration/npm-run-build.png)
53 +![npm run build](../img/blog/create-apps-with-no-configuration/npm-run-build.png)
54
55 It is minified, correctly envified, and the assets include content hashes for caching.
56
@@ -140,7 +140,7 @@ Still, we knew it was frustrating to spend days setting up a project when all yo
140
141 We found ourselves in an unusual dilemma.
142
143 -So far, [our strategy](/react/contributing/design-principles.html#dogfooding) has been to only release the code that we are using at Facebook. This helped us ensure that every project is battle-tested and has clearly defined scope and priorities.
143 +So far, [our strategy](/contributing/design-principles.html#dogfooding) has been to only release the code that we are using at Facebook. This helped us ensure that every project is battle-tested and has clearly defined scope and priorities.
144
145 However, tooling at Facebook is different than at many smaller companies. Linting, transpilation, and packaging are all handled by powerful remote development servers, and product engineers don’t need to configure them. While we wish we could give a dedicated server to every user of React, even Facebook cannot scale that well!
146
docs/_posts/2016-08-05-relay-state-of-the-state.md
+1 -1
@@ -1,6 +1,6 @@
1 ---
2 title: "Relay: State of the State"
3 -author: josephsavona
3 +author: [josephsavona]
4 ---
5
6 This month marks a year since we released Relay and we'd like to share an update on the project and what's next.
docs/_posts/2016-09-28-our-first-50000-stars.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Our First 50,000 Stars"
3 -author: vjeux
3 +author: [vjeux]
4 ---
5
6 Just three and a half years ago we open sourced a little JavaScript library called React. The journey since that day has been incredibly exciting.
@@ -9,7 +9,7 @@ Just three and a half years ago we open sourced a little JavaScript library call
9
10 In order to celebrate 50,000 GitHub stars, [Maggie Appleton](http://www.maggieappleton.com/) from [egghead.io](http://egghead.io/) has designed us a special T-shirt, which will be available for purchase from Teespring **only for a week** through Thursday, October 6. Maggie also wrote [a blog post](https://www.behance.net/gallery/43269677/Reacts-50000-Stars-Shirt) showing all the different concepts she came up with before settling on the final design.
11
12 -<a target="_blank" href="https://teespring.com/react-50000-stars"><img src="/react/img/blog/react-50k-tshirt.jpg" width="650" height="340" alt="React 50k Tshirt" /></a>
12 +<a target="_blank" href="https://teespring.com/react-50000-stars"><img src="../img/blog/react-50k-tshirt.jpg" width="650" height="340" alt="React 50k Tshirt" /></a>
13
14 The T-shirts are super soft using American Apparel's tri-blend fabric; we also have kids and toddler T-shirts and baby onesies available.
15
@@ -222,7 +222,7 @@ To make this happen, React had to be decoupled from Facebook's infrastructure, s
222
223 As we started to prepare for the open source launch, [Maykel Loomans](https://twitter.com/miekd), a designer on Instagram, made a mock of what the website could look like. The header ended up defining the visual identity of React: its logo and the electric blue color!
224
225 -<center><a target="_blank" href="/react/img/blog/react-50k-mock-full.jpg"><img src="/react/img/blog/react-50k-mock.jpg" width="400" height="410" alt="React website mock" /></a></center>
225 +<center><a target="_blank" href="../img/blog/react-50k-mock-full.jpg"><img src="../img/blog/react-50k-mock.jpg" width="400" height="410" alt="React website mock" /></a></center>
226
227 In its earliest days, React benefited tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.
228
docs/_posts/2016-11-16-react-v15.4.0.md
+5 -5
@@ -1,6 +1,6 @@
1 ---
2 title: "React v15.4.0"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 Today we are releasing React 15.4.0.
@@ -9,7 +9,7 @@ We didn't announce the [previous](https://github.com/facebook/react/blob/master/
9
10 ### Separating React and React DOM
11
12 -[More than a year ago](/react/blog/2015/09/10/react-v0.14-rc1.html#two-packages-react-and-react-dom), we started separating React and React DOM into separate packages. We deprecated `React.render()` in favor of `ReactDOM.render()` in React 0.14, and removed DOM-specific APIs from `React` completely in React 15. However, the React DOM implementation still [secretly lived inside the React package](https://www.reddit.com/r/javascript/comments/3m6wyu/found_this_line_in_the_react_codebase_made_me/cvcyo4a/).
12 +[More than a year ago](/blog/2015/09/10/react-v0.14-rc1.html#two-packages-react-and-react-dom), we started separating React and React DOM into separate packages. We deprecated `React.render()` in favor of `ReactDOM.render()` in React 0.14, and removed DOM-specific APIs from `React` completely in React 15. However, the React DOM implementation still [secretly lived inside the React package](https://www.reddit.com/r/javascript/comments/3m6wyu/found_this_line_in_the_react_codebase_made_me/cvcyo4a/).
13
14 In React 15.4.0, we are finally moving React DOM implementation to the React DOM package. The React package will now contain only the renderer-agnostic code such as `React.Component` and `React.createElement()`.
15
@@ -25,7 +25,7 @@ Another thing to watch out for is that React DOM Server is now about the same si
25
26 You can now visualize React components in the Chrome Timeline. This lets you see which components exactly get mounted, updated, and unmounted, how much time they take relative to each other.
27
28 -<center><img src="/react/img/blog/react-perf-chrome-timeline.png" width="651" height="228" alt="React components in Chrome timeline" /></center>
28 +<img src="../img/blog/react-perf-chrome-timeline.png" width="651" height="228" alt="React components in Chrome timeline" />
29
30 To use it:
31
@@ -112,9 +112,9 @@ npm install --save react@15.4.0 react-dom@15.4.0
112
113 We recommend using a bundler like [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/) so you can write modular code and bundle it together into small packages to optimize load time.
114
115 -Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [compile it in production mode](/react/docs/installation.html#development-and-production-versions).
115 +Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [compile it in production mode](/docs/installation.html#development-and-production-versions).
116
117 -In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/react/docs/installation.html#using-a-cdn) on your page:
117 +In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/docs/installation.html#using-a-cdn) on your page:
118
119 * **React**
120 Dev build with warnings: [react/dist/react.js](https://unpkg.com/react@15.4.0/dist/react.js)
docs/_posts/2017-04-07-react-v15.5.0.md
+7 -7
@@ -1,9 +1,9 @@
1 ---
2 title: "React v15.5.0"
3 -author: acdlite
3 +author: [acdlite]
4 ---
5
6 -It's been exactly one year since the last breaking change to React. Our next major release, React 16, will include some exciting improvements, including a [complete rewrite](https://www.youtube.com/watch?v=ZCuYPiUIONs) of React's internals. [We take stability seriously](/react/contributing/design-principles.html#stability), and are committed to bringing those improvements to all of our users with minimal effort.
6 +It's been exactly one year since the last breaking change to React. Our next major release, React 16, will include some exciting improvements, including a [complete rewrite](https://www.youtube.com/watch?v=ZCuYPiUIONs) of React's internals. [We take stability seriously](/contributing/design-principles.html#stability), and are committed to bringing those improvements to all of our users with minimal effort.
7
8 To that end, today we're releasing React 15.5.0.
9
@@ -69,7 +69,7 @@ You may also consider using [Flow](https://flow.org/) to statically type check y
69
70 When React was initially released, there was no idiomatic way to create classes in JavaScript, so we provided our own: `React.createClass`.
71
72 -Later, classes were added to the language as part of ES2015, so we added the ability to create React components using JavaScript classes. **Along with functional components, JavaScript classes are now the [preferred way to create components in React](/react/docs/components-and-props.html#functional-and-class-components).**
72 +Later, classes were added to the language as part of ES2015, so we added the ability to create React components using JavaScript classes. **Along with functional components, JavaScript classes are now the [preferred way to create components in React](/docs/components-and-props.html#functional-and-class-components).**
73
74 For your existing `createClass` components, we recommend that you migrate them to JavaScript classes. However, if you have components that rely on mixins, converting to classes may not be immediately feasible. If so, `create-react-class` is available on npm as a drop-in replacement:
75
@@ -113,8 +113,8 @@ We're discontinuing active maintenance of React Addons packages. In truth, most
113 - **react-addons-create-fragment** – React 16 will have first-class support for fragments, at which point this package won't be necessary. We recommend using arrays of keyed elements instead.
114 - **react-addons-css-transition-group** - Use [react-transition-group/CSSTransitionGroup](https://github.com/reactjs/react-transition-group) instead. Version 1.1.1 provides a drop-in replacement.
115 - **react-addons-linked-state-mixin** - Explicitly set the `value` and `onChange` handler instead.
116 -- **react-addons-pure-render-mixin** - Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
117 -- **react-addons-shallow-compare** - Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
116 +- **react-addons-pure-render-mixin** - Use [`React.PureComponent`](/docs/react-api.html#react.purecomponent) instead.
117 +- **react-addons-shallow-compare** - Use [`React.PureComponent`](/docs/react-api.html#react.purecomponent) instead.
118 - **react-addons-transition-group** - Use [react-transition-group/TransitionGroup](https://github.com/reactjs/react-transition-group) instead. Version 1.1.1 provides a drop-in replacement.
119 - **react-addons-update** - Use [immutability-helper](https://github.com/kolodny/immutability-helper) instead, a drop-in replacement.
120 - **react-linked-input** - Explicitly set the `value` and `onChange` handler instead.
@@ -175,9 +175,9 @@ npm install --save react@^15.5.0 react-dom@^15.5.0
175
176 We recommend using a bundler like [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/) so you can write modular code and bundle it together into small packages to optimize load time.
177
178 -Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [compile it in production mode](/react/docs/installation.html#development-and-production-versions).
178 +Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [compile it in production mode](/docs/installation.html#development-and-production-versions).
179
180 -In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/react/docs/installation.html#using-a-cdn) on your page:
180 +In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/docs/installation.html#using-a-cdn) on your page:
181
182 * **React**
183 Dev build with warnings: [react/dist/react.js](https://unpkg.com/react@15.5.0/dist/react.js)
docs/_posts/2017-05-18-whats-new-in-create-react-app.md
+8 -8
@@ -1,9 +1,9 @@
1 ---
2 title: "What's New in Create React App"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 -Less than a year ago, we introduced [Create React App](/react/blog/2016/07/22/create-apps-with-no-configuration.html) as an officially supported way to create apps with zero configuration. The project has since enjoyed tremendous growth, with over 950 commits by more than 250 contributors.
6 +Less than a year ago, we introduced [Create React App](/blog/2016/07/22/create-apps-with-no-configuration.html) as an officially supported way to create apps with zero configuration. The project has since enjoyed tremendous growth, with over 950 commits by more than 250 contributors.
7
8 Today, we are excited to announce that many features that have been in the pipeline for the last few months are finally released.
9
@@ -23,7 +23,7 @@ If you had to eject your app for one reason or another, Webpack provides a [conf
23
24 The biggest notable webpack 2 feature is the ability to write and import [ES6 modules](http://2ality.com/2014/09/es6-modules-final.html) directly without compiling them to CommonJS. This shouldn’t affect how you write code since you likely already use `import` and `export` statements, but it will help catch more mistakes like missing named exports at compile time:
25
26 -<img src='/react/img/blog/cra-update-exports.gif' alt='Export validation' style="max-width:100%">
26 +![Export validation](../img/blog/cra-update-exports.gif)
27
28 In the future, as the ecosystem around ES6 modules matures, you can expect more improvements to your app's bundle size thanks to [tree shaking](https://webpack.js.org/guides/tree-shaking/).
29
@@ -37,7 +37,7 @@ To address these issues, we are introducing an overlay that pops up whenever the
37
38 A GIF is worth a thousand words:
39
40 -<img src='/react/img/blog/cra-runtime-error.gif' alt='Runtime error overlay' style="max-width:100%">
40 +![Runtime error overlay](../img/blog/cra-runtime-error.gif)
41
42 (Yes, it integrates with your editor!)
43
@@ -50,7 +50,7 @@ In the future, we plan to teach the runtime error overlay to understand more abo
50
51 Newly created projects are built as [Progressive Web Apps](https://developers.google.com/web/progressive-web-apps/) by default. This means that they employ [service workers](https://developers.google.com/web/fundamentals/getting-started/primers/service-workers) with an [offline-first caching strategy](https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network) to minimize the time it takes to serve the app to the users who visit it again. You can opt out of this behavior, but we recommend it both for new and existing apps, especially if you target mobile devices.
52
53 -<img src='/react/img/blog/cra-pwa.png' alt='Loading assets from service worker' style="max-width:100%">
53 +![Loading assets from service worker](../img/blog/cra-pwa.png)
54
55 New apps automatically have these features, but you can easily convert an existing project to a Progressive Web App by following [our migration guide](https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0).
56
@@ -65,7 +65,7 @@ We are now using the latest version of Jest that includes numerous bugfixes and
65
66 Highlights include a new [immersive watch mode](https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#immersive-watch-mode), [a better snapshot format](https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#snapshot-updates), [improvements to printing skipped tests](https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#improved-printing-of-skipped-tests), and [new testing APIs](https://facebook.github.io/jest/blog/2017/05/06/jest-20-delightful-testing-multi-project-runner.html#new-improved-testing-apis).
67
68 -<img src='/react/img/blog/cra-jest-search.gif' alt='Immersive test watcher' style="max-width:100%">
68 +![Immersive test watcher](../img/blog/cra-jest-search.gif)
69
70 Additionally, Create React App now support configuring a few Jest options related to coverage reporting.
71
@@ -77,7 +77,7 @@ It is important to keep the initial JavaScript payload of web apps down to the m
77
78 In this release, we are adding support for the [dynamic `import()` proposal](http://2ality.com/2017/01/import-operator.html#loading-code-on-demand) which aligns with the future web standards. Unlike `require.ensure()`, it doesn't break Jest tests, and should eventually become a part of JavaScript. We encourage you to use `import()` to delay loading the code for non-critical component subtrees until you need to render them.
79
80 -<img src='/react/img/blog/cra-dynamic-import.gif' alt='Creating chunks with dynamic import' style="max-width:100%">
80 +![Creating chunks with dynamic import](../img/blog/cra-dynamic-import.gif)
81
82 ### Better Console Output
83
@@ -87,7 +87,7 @@ We have improved the console output across the board.
87
88 For example, when you start the development server, we now display the LAN address in additional to the localhost address so that you can quickly access the app from a mobile device on the same network:
89
90 -<img src='/react/img/blog/cra-better-output.png' alt='Better console output' style="max-width:100%">
90 +![Better console output](../img/blog/cra-better-output.png)
91
92 When lint errors are reported, we no longer show the warnings so that you can concentrate on more critical issues. Errors and warnings in the production build output are better formatted, and the build error overlay font size now matches the browser font size more closely.
93
docs/_posts/2017-06-13-react-v15.6.0.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "React v15.6.0"
3 -author: flarnie
3 +author: [flarnie]
4 ---
5
6 Today we are releasing React 15.6.0. As we prepare for React 16.0, we have been fixing and cleaning up many things. This release continues to pave the way.
@@ -44,9 +44,9 @@ npm install --save react@^15.6.0 react-dom@^15.6.0
44
45 We recommend using a bundler like [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/) so you can write modular code and bundle it together into small packages to optimize load time.
46
47 -Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [use the production build](/react/docs/optimizing-performance.html#use-the-production-build).
47 +Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [use the production build](/docs/optimizing-performance.html#use-the-production-build).
48
49 -In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/react/docs/installation.html#using-a-cdn) on your page:
49 +In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/docs/installation.html#using-a-cdn) on your page:
50
51 * **React**<br/>
52 Dev build with warnings: [react/dist/react.js](https://unpkg.com/react@15.6.0/dist/react.js)<br/>
docs/_posts/2017-07-26-error-handling-in-react-16.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "Error Handling in React 16"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 As React 16 release is getting closer, we would like to announce a few changes to how React handles JavaScript errors inside components. These changes are included in React 16 beta versions, and will be a part of React 16.
@@ -79,11 +79,11 @@ We also encourage you to use JS error reporting services (or build your own) so
79
80 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
81
82 -<img src="/react/img/blog/error-boundaries-stack-trace.png" alt="Component stack traces in error message" style="width: 100%;">
82 +<img src="../img/blog/error-boundaries-stack-trace.png" alt="Component stack traces in error message" style="width: 100%;">
83
84 You can also see the filenames and line numbers in the component stack trace. This works by default in [Create React App](https://github.com/facebookincubator/create-react-app) projects:
85
86 -<img src="/react/img/blog/error-boundaries-stack-trace-line-numbers.png" alt="Component stack traces with line numbers in error message" style="width: 100%;">
86 +<img src="../img/blog/error-boundaries-stack-trace-line-numbers.png" alt="Component stack traces with line numbers in error message" style="width: 100%;">
87
88 If you don’t use Create React App, you can add [this plugin](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) manually to your Babel configuration. Note that it’s intended only for development and **must be disabled in production**.
89
docs/_posts/2017-09-08-dom-attributes-in-react-16.md
+3 -3
@@ -1,6 +1,6 @@
1 ---
2 title: "DOM Attributes in React 16"
3 -author: gaearon
3 +author: [gaearon]
4 ---
5
6 In the past, React used to ignore unknown DOM attributes. If you wrote JSX with an attribute that React doesn't recognize, React would just skip it. For example, this:
@@ -80,11 +80,11 @@ Just like before, React lets you pass `data-` and `aria-` attributes freely:
80
81 This has not changed.
82
83 -[Accessibility](/react/docs/accessibility.html) is very important, so even though React 16 passes any attributes through, it still validates that `aria-` props have correct names in development mode, just like React 15 did.
83 +[Accessibility](/docs/accessibility.html) is very important, so even though React 16 passes any attributes through, it still validates that `aria-` props have correct names in development mode, just like React 15 did.
84
85 ## Migration Path
86
87 -We have included [a warning about unknown attributes](/react/warnings/unknown-prop.html) since [React 15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0) which came out more than a year ago. The vast majority of third-party libraries have already updated their code. If your app doesn't produce warnings with React 15.2.0 or higher, this change should not require modifications in your application code.
87 +We have included [a warning about unknown attributes](/warnings/unknown-prop.html) since [React 15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0) which came out more than a year ago. The vast majority of third-party libraries have already updated their code. If your app doesn't produce warnings with React 15.2.0 or higher, this change should not require modifications in your application code.
88
89 If you still accidentally forward non-DOM props to DOM components, with React 16 you will start seeing those attributes in the DOM, for example:
90
docs/_posts/2017-09-25-react-v15.6.2.md
+4 -4
@@ -1,6 +1,6 @@
1 ---
2 title: "React v15.6.2"
3 -author: nhunzaker
3 +author: [nhunzaker]
4 ---
5
6 Today we're sending out React 15.6.2. In 15.6.1, we shipped a few fixes for change events and inputs that had some unintended consequences. Those regressions have been ironed out, and we've also included a few more fixes to improve the stability of React across all browsers.
@@ -25,9 +25,9 @@ npm install --save react@^15.6.2 react-dom@^15.6.2
25
26 We recommend using a bundler like [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/) so you can write modular code and bundle it together into small packages to optimize load time.
27
28 -Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [use the production build](/react/docs/optimizing-performance.html#use-the-production-build).
28 +Remember that by default, React runs extra checks and provides helpful warnings in development mode. When deploying your app, make sure to [use the production build](/docs/optimizing-performance.html#use-the-production-build).
29
30 -In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/react/docs/installation.html#using-a-cdn) on your page:
30 +In case you don't use a bundler, we also provide pre-built bundles in the npm packages which you can [include as script tags](/docs/installation.html#using-a-cdn) on your page:
31
32 * **React**<br/>
33 Dev build with warnings: [react/dist/react.js](https://unpkg.com/react@15.6.2/dist/react.js)<br/>
@@ -61,4 +61,4 @@ We've also published version `15.6.2` of `react` and `react-dom` on npm, and the
61 * Prevent event handlers from receiving extra argument in development. ([@aweary](https://github.com/aweary) in [#10115](https://github.com/facebook/react/pull/8363))
62 * Fix cases where `onChange` would not fire with `defaultChecked` on radio inputs. ([@jquense](https://github.com/jquense) in [#10156](https://github.com/facebook/react/pull/10156))
63 * Add support for `controlList` attribute to DOM property whitelist ([@nhunzaker](https://github.com/nhunzaker) in [#9940](https://github.com/facebook/react/pull/9940))
64 -* Fix a bug where creating an element with a ref in a constructor did not throw an error in development. ([@iansu](https://github.com/iansu) in [#10025](https://github.com/facebook/react/pull/10025))
64 +* Fix a bug where creating an element with a ref in a constructor did not throw an error in development. ([@iansu](https://github.com/iansu) in [#10025](https://github.com/facebook/react/pull/10025))
\ No newline at end of file
docs/_posts/2017-09-26-react-v16.0.md
+11 -11
@@ -1,6 +1,6 @@
1 ---
2 title: "React v16.0"
3 -author: acdlite
3 +author: [acdlite]
4 ---
5
6 We're excited to announce the release of React v16.0! Among the changes are some long-standing feature requests, including [**fragments**](#new-render-return-types-fragments-and-strings), [**error boundaries**](#better-error-handling), [**portals**](#portals), support for [**custom DOM attributes**](#support-for-custom-dom-attributes), improved [**server-side rendering**](#better-server-side-rendering), and [**reduced file size**](#reduced-file-size).
@@ -31,7 +31,7 @@ render() {
31 }
32 ```
33
34 -[See the full list of supported return types](/react/docs/react-component.html#render).
34 +[See the full list of supported return types](/docs/react-component.html#render).
35
36 ### Better error handling
37
@@ -39,7 +39,7 @@ Previously, runtime errors during rendering could put React in a broken state, p
39
40 Instead of unmounting the whole app every time there's an error, you can use error boundaries. Error boundaries are special components that capture errors inside their subtree and display a fallback UI in its place. Think of error boundaries like try-catch statements, but for React components.
41
42 -For more details, check out our [previous post on error handling in React 16](/react/blog/2017/07/26/error-handling-in-react-16.html).
42 +For more details, check out our [previous post on error handling in React 16](/blog/2017/07/26/error-handling-in-react-16.html).
43
44
45 ### Portals
@@ -57,7 +57,7 @@ render() {
57 }
58 ```
59
60 -See a full example in the [documentation for portals](/react/docs/portals.html).
60 +See a full example in the [documentation for portals](/docs/portals.html).
61
62 ### Better server-side rendering
63
@@ -67,7 +67,7 @@ Core team member Sasha Aickin wrote a [great article describing React 16's SSR i
67
68 In addition, React 16 is better at hydrating server-rendered HTML once it reaches the client. It no longer requires the initial render to exactly match the result from the server. Instead, it will attempt to reuse as much of the existing DOM as possible. No more checksums! In general, we don't recommend that you render different content on the client versus the server, but it can be useful in some cases (e.g. timestamps).
69
70 -See the [documentation for `ReactDOMServer`](/react/docs/react-dom-server.html) for more details.
70 +See the [documentation for `ReactDOMServer`](/docs/react-dom-server.html) for more details.
71
72 ### Support for custom DOM attributes
73
@@ -129,7 +129,7 @@ We also provide UMD builds of React via a CDN:
129 <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
130 ```
131
132 -Refer to the documentation for [detailed installation instructions](/react/docs/installation.html).
132 +Refer to the documentation for [detailed installation instructions](/docs/installation.html).
133
134 ## Upgrading
135
@@ -137,15 +137,15 @@ Although React 16 includes significant internal changes, in terms of upgrading,
137
138 ### New deprecations
139
140 -Hydrating a server-rendered container now has an explicit API. If you're reviving server-rendered HTML, use [`ReactDOM.hydrate`](/react/docs/react-dom.html#hydrate) instead of `ReactDOM.render`. Keep using `ReactDOM.render` if you're just doing client-side rendering.
140 +Hydrating a server-rendered container now has an explicit API. If you're reviving server-rendered HTML, use [`ReactDOM.hydrate`](/docs/react-dom.html#hydrate) instead of `ReactDOM.render`. Keep using `ReactDOM.render` if you're just doing client-side rendering.
141
142 ### React Addons
143
144 -As previously announced, we've [discontinued support for React Addons](/react/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons). We expect the latest version of each addon (except `react-addons-perf`; see below) to work for the foreseeable future, but we won't publish additional updates.
144 +As previously announced, we've [discontinued support for React Addons](/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons). We expect the latest version of each addon (except `react-addons-perf`; see below) to work for the foreseeable future, but we won't publish additional updates.
145
146 -Refer to the previous announcement for [suggestions on how to migrate](/react/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons).
146 +Refer to the previous announcement for [suggestions on how to migrate](/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons).
147
148 -`react-addons-perf` no longer works at all in React 16. It's likely that we'll release a new version of this tool in the future. In the meantime, you can [use your browser's performance tools to profile React components](/react/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab).
148 +`react-addons-perf` no longer works at all in React 16. It's likely that we'll release a new version of this tool in the future. In the meantime, you can [use your browser's performance tools to profile React components](/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab).
149
150 ### Breaking changes
151
@@ -206,4 +206,4 @@ global.requestAnimationFrame = function(callback) {
206
207 As always, this release would not have been possible without our open source contributors. Thanks to everyone who filed bugs, opened PRs, responded to issues, wrote documentation, and more!
208
209 -Special thanks to our core contributors, especially for their heroic efforts over the past few weeks during the prerelease cycle: [Brandon Dail](https://twitter.com/aweary), [Jason Quense](https://twitter.com/monasticpanic), [Nathan Hunzaker](https://twitter.com/natehunzaker), and [Sasha Aickin](https://twitter.com/xander76).
209 +Special thanks to our core contributors, especially for their heroic efforts over the past few weeks during the prerelease cycle: [Brandon Dail](https://twitter.com/aweary), [Jason Quense](https://twitter.com/monasticpanic), [Nathan Hunzaker](https://twitter.com/natehunzaker), and [Sasha Aickin](https://twitter.com/xander76).
\ No newline at end of file
docs/acknowledgements.md
+1
@@ -22,3 +22,4 @@ In addition, we're grateful to
22 - [Christopher Aue](http://christopheraue.net/) for letting us use the [reactjs.com](http://reactjs.com/) domain name and the [@reactjs](https://twitter.com/reactjs) username on Twitter.
23 - [ProjectMoon](https://github.com/ProjectMoon) for letting us use the [flux](https://www.npmjs.com/package/flux) package name on npm.
24 - Shane Anderson for allowing us to use the [react](https://github.com/react) org on GitHub.
25 + - [Dmitri Voronianski](https://github.com/voronianski) for letting us use the [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/) color scheme on this website.
docs/community/conferences.it-IT.md
+1 -1
@@ -11,7 +11,7 @@ next: videos-it-IT.html
11
12 [Sito web](http://conf.reactjs.com/) - [Agenda](http://conf.reactjs.com/schedule.html) - [Video](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
13
14 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
14 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
15
16 ### ReactEurope 2015
17 2 e 3 Luglio
docs/community/conferences.ko-KR.md
+1 -1
@@ -11,7 +11,7 @@ next: videos-ko-KR.html
11
12 [웹사이트](http://conf.reactjs.com/) - [스케줄](http://conf.reactjs.com/schedule.html) - [비디오들](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
13
14 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
14 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
15
16 ### ReactEurope 2015
17 7월 2일 & 3일
docs/community/conferences.md
+1 -1
@@ -91,7 +91,7 @@ January 28 & 29 in Facebook HQ, CA
91
92 [Website](http://conf2015.reactjs.org/) - [Schedule](http://conf2015.reactjs.org/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
93
94 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
94 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
95
96 ### ReactEurope 2015
97 July 2 & 3 in Paris, France
docs/community/conferences.zh-CN.md
+1 -1
@@ -11,7 +11,7 @@ next: videos-zh-CN.html
11
12 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
13
14 -<iframe width="100%" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
14 +<iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
15
16 ### ReactEurope 2015
17 七月 2 & 3
docs/community/videos.it-IT.md
+16 -16
@@ -8,7 +8,7 @@ next: complementary-tools-it-IT.html
8
9 ### Riconsiderare le best practice - JSConf.eu
10
11 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
11 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
12
13 "A Facebook e Instagram, con React stiamo provando a spingerci oltre i limiti di ciò che è possibile realizzare sul web. Il mio talk comincerà con una breve introduzione al framework, e poi approfondirà tre argomenti controversi: Gettare via la nozione dei template e costruire le viste con JavaScript, effettuare il “ri-rendering” dell'intera applicazione quando i dati cambiano, e un'implementazione leggera del DOM e degli eventi." -- [Pete Hunt](http://www.petehunt.net/)
14
@@ -16,14 +16,14 @@ next: complementary-tools-it-IT.html
16
17 ### Pensare in react - tagtree.tv
18
19 -Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare in React](/react/docs/thinking-in-react.html) mentre costruisci una semplice applicazione
20 -<figure>[![](/react/img/docs/thinking-in-react-tagtree.png)](http://tagtree.tv/thinking-in-react)</figure>
19 +Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare in React](/docs/thinking-in-react.html) mentre costruisci una semplice applicazione
20 +<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../img/docs/thinking-in-react-tagtree.png"></a></figure>
21
22 * * *
23
24 ### I Segreti del DOM Virtuale - MtnWest JS
25
26 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
26 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
27
28 "In questo talk discuterò perché abbiamo costruito un DOM virtuale, i vantaggi rispetto ad altri sistemi, e la sua rilevanza per il futuro della tecnologia dei browser." -- [Pete Hunt](http://www.petehunt.net/)
29
@@ -32,14 +32,14 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
32 ### Pensare in grande con React
33
34 "Sulla carta, tutti questi framework JS sembrano promettenti: implementazioni pulite, design veloce del codice, esecuzione perfetta. Ma che succede quando metti JavaScript sotto stress? Che succede se gli dài in pasto 6 megabyte di codice? In questo talk investigheremo come si comporta React in situazioni di stress elevato, e come ha aiutato il nostro team a costruire codice sicuro ad una scala enorme."
35 -<figure>[![](https://i.vimeocdn.com/video/481670116_650.jpg)](https://skillsmatter.com/skillscasts/5429-going-big-with-react#video)</figure>
35 +<figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
36
37 * * *
38
39 ### CodeWinds
40
41 [Pete Hunt](http://www.petehunt.net/) ha parlato con [Jeff Barczewski](http://jeff.barczewski.com/) a proposito di React nell'Episodio 4 di CodeWinds.
42 -<figure>[![](/react/img/docs/codewinds-004.png)](http://codewinds.com/4)</figure>
42 +<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
43
44 <table width="100%"><tr><td>
45 02:08 - Cos'è React e perché usarlo?<br />
@@ -72,7 +72,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
72 ### JavaScript Jabber
73
74 [Pete Hunt](http://www.petehunt.net/) e [Jordan Walke](https://github.com/jordwalke) hanno parlato di React in JavaScript Jabber 73.
75 -<figure>[![](/react/img/docs/javascript-jabber.png)](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content)</figure>
75 +<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
76
77 <table width="100%"><tr><td>
78 01:34 – Introduzione di Pete Hunt<br />
@@ -99,14 +99,14 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
99
100 ### Introduzione a React.js - Facebook Seattle
101
102 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
102 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
103
104 Di [Tom Occhino](http://tomocchino.com/) e [Jordan Walke](https://github.com/jordwalke)
105
106 * * *
107
108 ### Backbone + React + Middleman Screencast
109 -<iframe width="100%" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
109 +<iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
110
111 Backbone è una grande maniera di interfacciare una API REST con React. Questo screencast mostra come integrare i due usando [Backbone-React-Component](https://github.com/magalhas/backbone-react-component). Middleman è il framework utilizzato in questo esempio, ma può essere facilmente sostituito con altri framework. Si può trovare un template supportato per questo esempio [qui](https://github.com/jbhatab/middleman-backbone-react-template). -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
112
@@ -114,7 +114,7 @@ Backbone è una grande maniera di interfacciare una API REST con React. Questo s
114
115 ### Sviluppare Interfacce Utente Con React - Super VanJS
116
117 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
117 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
118
119 Di [Steven Luscher](https://github.com/steveluscher)
120
@@ -122,7 +122,7 @@ Di [Steven Luscher](https://github.com/steveluscher)
122
123 ### Introduzione a React - LAWebSpeed meetup
124
125 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
125 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
126
127 Di [Stoyan Stefanov](http://www.phpied.com/)
128
@@ -130,7 +130,7 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
130
131 ### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14
132
133 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
133 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
134
135 **In Russo** di [Alexander Solovyov](http://solovyov.net/)
136
@@ -138,19 +138,19 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
138
139 ### "Programmazione funzionale del DOM" - Meteor DevShop 11
140
141 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
141 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
142
143 * * *
144
145 ### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014
146
147 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
147 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
148
149 * * *
150
151 ### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014
152
153 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
153 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
154
155 Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jing Chen](https://twitter.com/jingc) parlano di Flux e React, e di come usare un'architettura dell'applicazione con un flusso di dati unidirezionale rende gran parte del loro codice più pulito.
156
@@ -168,6 +168,6 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
168
169 ### Introduzione a React Native (+Playlist) - React.js Conf 2015
170
171 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
171 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
172
173 [Tom Occhino](https://twitter.com/tomocchino) ripercorre il passato e il presente di React nel 2015, e ci mostra dove è diretto nell'immediato futuro.
docs/community/videos.ko-KR.md
+15 -15
@@ -8,7 +8,7 @@ next: complementary-tools-ko-KR.html
8
9 ### Rethinking best practices - JSConf.eu
10
11 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
11 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
12
13 "페이스북과 인스타그램에서, 우리는 React 를 이용해 웹에서 벌어질 수 있는 한계를 뛰어넘으려 노력하고 있습니다. 저는 프레임워크에 대한 짤막한 소개로 시작해서, 논쟁이 벌어질 수 있는 다음의 세가지 주제로 넘어갈겁니다. 템플릿의 개념을 버리고 JavaScript 를 이용해 View 를 구축하기, 자료가 변할때 전체 어플리케이션을 다시 그리기(“re-rendering”), 그리고 DOM과 events의 경량화된 구현 입니다." -- [Pete Hunt](http://www.petehunt.net/)
14
@@ -16,14 +16,14 @@ next: complementary-tools-ko-KR.html
16
17 ### Thinking in react - tagtree.tv
18
19 -[tagtree.tv](http://tagtree.tv/)의 비디오는 간단한 어플리케이션을 구성하면서 [Thinking in React](/react/docs/thinking-in-react-ko-KR.html)의 원리들을 전달합니다.
20 -<figure>[![](/react/img/docs/thinking-in-react-tagtree.png)](http://tagtree.tv/thinking-in-react)</figure>
19 +[tagtree.tv](http://tagtree.tv/)의 비디오는 간단한 어플리케이션을 구성하면서 [Thinking in React](/docs/thinking-in-react-ko-KR.html)의 원리들을 전달합니다.
20 +<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../img/docs/thinking-in-react-tagtree.png"></a></figure>
21
22 * * *
23
24 ### Secrets of the Virtual DOM - MtnWest JS
25
26 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
26 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
27
28 "이번에는 왜 우리가 virtual DOM을 만들었는지, 이것이 다른 시스템들과는 어떻게 다른지, 그리고 브라우져 기술들의 미래와 어떻게 관련이 있는지에 대해서 이야기 해 볼 겁니다." -- [Pete Hunt](http://www.petehunt.net/)
29
@@ -40,7 +40,7 @@ next: complementary-tools-ko-KR.html
40
41 CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barczewski](http://jeff.barczewski.com/)가 React에 대해서 이야기 합니다.
42
43 -<figure>[![](/react/img/docs/codewinds-004.png)](http://codewinds.com/4)</figure>
43 +<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
44
45 <table width="100%"><tr><td>
46 02:08 - What is React and why use it?<br />
@@ -74,7 +74,7 @@ CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barcze
74
75 JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walke](https://github.com/jordwalke)가 React에 대해서 이야기했습니다.
76
77 -<figure>[![](/react/img/docs/javascript-jabber.png)](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content)</figure>
77 +<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
78
79 <table width="100%"><tr><td>
80 01:34 – Pete Hunt Introduction<br />
@@ -101,14 +101,14 @@ JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walk
101
102 ### Introduction to React.js - Facebook Seattle
103
104 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
104 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
105
106 By [Tom Occhino](http://tomocchino.com/), [Jordan Walke](https://github.com/jordwalke)
107
108 * * *
109
110 ### Backbone + React + Middleman Screencast
111 -<iframe width="100%" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
111 +<iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
112
113 Backbone은 React로 REST API를 제공하기 위한 아주 좋은 방법입니다. 이 화면중개는 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)을 이용해서 어떻게 이 두가지를 연동하는지 보여줍니다. Middleman은 이 예제에서 사용되는 프레임워크이지만, 쉽게 다른 프레임워크로 대체하실 수 있습니다. 지원되는 템플릿은 [이곳](https://github.com/jbhatab/middleman-backbone-react-template)에서 찾으실 수 있습니다. -- [열린 마음의 혁명들](http://www.openmindedinnovations.com/)
114
@@ -116,7 +116,7 @@ Backbone은 React로 REST API를 제공하기 위한 아주 좋은 방법입니
116
117 ### Developing User Interfaces With React - Super VanJS
118
119 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
119 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
120
121 By [Steven Luscher](https://github.com/steveluscher)
122
@@ -124,7 +124,7 @@ By [Steven Luscher](https://github.com/steveluscher)
124
125 ### Introduction to React - LAWebSpeed meetup
126
127 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
127 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
128
129 by [Stoyan Stefanov](http://www.phpied.com/)
130
@@ -132,7 +132,7 @@ by [Stoyan Stefanov](http://www.phpied.com/)
132
133 ### React, or how to make life simpler - FrontEnd Dev Conf '14
134
135 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
135 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
136
137 **러시아어** by [Alexander Solovyov](http://solovyov.net/)
138
@@ -140,19 +140,19 @@ by [Stoyan Stefanov](http://www.phpied.com/)
140
141 ### "Functional DOM programming" - Meteor DevShop 11
142
143 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
143 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
144
145 * * *
146
147 ### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
148
149 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
149 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
150
151 * * *
152
153 ### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
154
155 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
155 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
156
157 Facebook 개발자 [Bill Fisher](https://twitter.com/fisherwebdev)와 [Jing Chen](https://twitter.com/jingc)가 Flux 와 React 에 대해서 이야기합니다. 그리고 어떻게 단일 방향의 자료흐름을 사용하는 어플리케이션 구조가 방대한 코드를 정리하는지에 대해서 이야기합니다."
158
@@ -169,6 +169,6 @@ Server-side rendering을 위해 [SoundCloud](https://developers.soundcloud.com/b
169
170 ### Introducing React Native (+Playlist) - React.js Conf 2015
171
172 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/v/KVZ-P-ZI6W4&index=1&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
172 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/v/KVZ-P-ZI6W4&index=1&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
173
174 2015년에 [Tom Occhino](https://twitter.com/tomocchino)님이 React의 과거와 현재를 리뷰하고 나아갈 방향을 제시했습니다.
docs/community/videos.md
+13 -13
@@ -11,52 +11,52 @@ redirect_from: "docs/videos.html"
11
12 [Tom Occhino](http://tomocchino.com/) and [Jordan Walke](https://github.com/jordwalke) introduce React at Facebook Seattle.
13
14 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
14 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
15
16 ### Introducing React Native
17
18 [Tom Occhino](https://twitter.com/tomocchino) reviews the past and present of React in 2015, and teases where it's going next.
19
20 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
20 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
21
22 ### Rethinking Web App Development at Facebook
23
24 Delivering reliable, high-performance web experiences at Facebook's scale has required us to challenge some long-held assumptions about software development. Watch this Facebook F8 2014 talk to learn how we abandoned the traditional MVC paradigm in favor of a more functional application architecture.
25
26 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
26 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
27
28 ### Secrets of the Virtual DOM
29
30 [Pete Hunt](http://www.petehunt.net/) at Mountain West JavaScript 2014 discusses why a virtual DOM was built for React, how it compares to other systems, and its relevance to the future of browser technologies.
31
32 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
32 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
33
34 ### Rethinking Best Practices
35
36 [Pete Hunt](http://www.petehunt.net/)'s talk at JSConf EU 2013 covers three topics: throwing out the notion of templates and building views with JavaScript, “re-rendering” your entire application when your data changes, and a lightweight implementation of the DOM and events.
37
38 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
38 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
39
40
41 ### High performance functional DOM programming
42
43 Tech Talk by [Pete Hunt](http://www.petehunt.net/) at Meteor DevShop 11.
44
45 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
45 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
46
47
48 ### Developing User Interfaces With React
49
50 [Steven Luscher](https://github.com/steveluscher) at Super VanJS 2013.
51
52 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
52 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
53
54
55 ### Introduction to React
56
57 [Stoyan Stefanov](http://www.phpied.com/) at LAWebSpeed meetup.
58
59 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
59 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
60
61 ### Going big with React
62
@@ -68,27 +68,27 @@ Areeb Malik investigates how React performs in a high stress situation, and how
68
69 This screencast shows how to integrate Backbone with React using [Backbone-React-Component](https://github.com/magalhas/backbone-react-component).
70
71 -<iframe width="100%" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
71 +<iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
72
73 ### React, or how to make life simpler
74
75 Tech talk by [Alexander Solovyov](http://solovyov.net/) at FrontEnd Dev Conf '14 (Russian).
76
77 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
77 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
78
79
80 ### React and Flux: Building Applications with a Unidirectional Data Flow
81
82 Facebook engineers [Bill Fisher](https://twitter.com/fisherwebdev) and [Jing Chen](https://twitter.com/jingc) talk about Flux and React at Forward JS 2014, and how using an application architecture with a unidirectional data flow cleans up a lot of their code.
83
84 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
84 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
85
86 > [Slides and sample code](https://github.com/zertosh/ssr-demo-kit)
87
88 ### CodeWinds Podcast
89
90 [Pete Hunt](http://www.petehunt.net/) talked with [Jeff Barczewski](http://jeff.barczewski.com/) about React in [CodeWinds Episode 4](http://codewinds.com/podcast/004.html).
91 -<figure>[![](/react/img/docs/codewinds-004.png)](http://codewinds.com/4)</figure>
91 +<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
92
93 <table width="100%">
94 <tr>
@@ -136,7 +136,7 @@ Facebook engineers [Bill Fisher](https://twitter.com/fisherwebdev) and [Jing Che
136 ### JavaScript Jabber Podcast
137
138 [Pete Hunt](http://www.petehunt.net/) and [Jordan Walke](https://github.com/jordwalke) talked about React in [JavaScript Jabber 73](https://devchat.tv/js-jabber/073-jsj-react-with-pete-hunt-and-jordan-walke).
139 -<figure>[![](/react/img/docs/javascript-jabber.png)](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content)</figure>
139 +<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
140
141 <table width="100%">
142 <tr>
docs/community/videos.zh-CN.md
+16 -16
@@ -8,7 +8,7 @@ next: complementary-tools-zh-CN.html
8
9 ### Rethinking best practices - JSConf.eu
10
11 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
11 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
12
13 "在 Facebook 和 Instagram, 我们正在努力挑战React在web上能达到的极限。我的讲话会从对框架的简单介绍开始,然后深入三个有争议的话题:扔掉模板的概念并用JavaScript构建views, 当数据改变 “re-rendering” 你的整个应用,以及一个DOM和events的轻量级实现。" -- [Pete Hunt](http://www.petehunt.net/)
14
@@ -16,14 +16,14 @@ next: complementary-tools-zh-CN.html
16
17 ### Thinking in react - tagtree.tv
18
19 -一个 [tagtree.tv](http://tagtree.tv/) 传达 [Thinking in React](/react/docs/thinking-in-react.html) 原则的视频 在构建一个简单app时。
20 -<figure>[![](/react/img/docs/thinking-in-react-tagtree.png)](http://tagtree.tv/thinking-in-react)</figure>
19 +一个 [tagtree.tv](http://tagtree.tv/) 传达 [Thinking in React](/docs/thinking-in-react.html) 原则的视频 在构建一个简单app时。
20 +<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../img/docs/thinking-in-react-tagtree.png"></a></figure>
21
22 * * *
23
24 ### Secrets of the Virtual DOM - MtnWest JS
25
26 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
26 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
27
28 "在这次讲座里,我会讨论为什么我们构建了一个虚拟 DOM,它比起其他系统如何,以及它与未来浏览器技术的关系。" -- [Pete Hunt](http://www.petehunt.net/)
29
@@ -32,14 +32,14 @@ next: complementary-tools-zh-CN.html
32 ### Going big with React
33
34 "理论上,所有的JS框架都大有可为:干净的实现,快速的代码设计,完美的执行。但是当你压力测试时Javascript会怎样?当你丢进6MB的代码时会怎样?在这次演讲中,我们会探究React在高压环境下如何表现,以及它如何帮助我们的团队在大规模时构建安全代码。 "
35 -<figure>[![](https://i.vimeocdn.com/video/481670116_650.jpg)](https://skillsmatter.com/skillscasts/5429-going-big-with-react#video)</figure>
35 +<figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
36
37 * * *
38
39 ### CodeWinds
40
41 [Pete Hunt](http://www.petehunt.net/) 与 [Jeff Barczewski](http://jeff.barczewski.com/) 在 CodeWinds Episode 4 上关于 React 的谈话.
42 -<figure>[![](/react/img/docs/codewinds-004.png)](http://codewinds.com/4)</figure>
42 +<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
43
44 <table width="100%"><tr><td>
45 02:08 - 什么是React,为什么我们用它?<br />
@@ -72,7 +72,7 @@ next: complementary-tools-zh-CN.html
72 ### JavaScript Jabber
73
74 [Pete Hunt](http://www.petehunt.net/) 和 [Jordan Walke](https://github.com/jordwalke) 在 JavaScript Jabber 73 上关于React的谈话.
75 -<figure>[![](/react/img/docs/javascript-jabber.png)](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content)</figure>
75 +<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
76
77 <table width="100%"><tr><td>
78 01:34 – Pete Hunt 介绍<br />
@@ -99,14 +99,14 @@ next: complementary-tools-zh-CN.html
99
100 ### Introduction to React.js - Facebook Seattle
101
102 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
102 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
103
104 由 [Tom Occhino](http://tomocchino.com/) 和 [Jordan Walke](https://github.com/jordwalke)
105
106 * * *
107
108 ### Backbone + React + Middleman Screencast
109 -<iframe width="100%" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
109 +<iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
110
111 Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏博展示了用 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)如何整合两者. Middleman 是在本例中使用的框架但很容易被替换成其他框架。对此可支持的template可以在[这里](https://github.com/jbhatab/middleman-backbone-react-template) 找到. -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
112
@@ -114,7 +114,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
114
115 ### Developing User Interfaces With React - Super VanJS
116
117 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
117 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
118
119 来自 [Steven Luscher](https://github.com/steveluscher)
120
@@ -122,7 +122,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
122
123 ### Introduction to React - LAWebSpeed meetup
124
125 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
125 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
126
127 来自 [Stoyan Stefanov](http://www.phpied.com/)
128
@@ -130,7 +130,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
130
131 ### React, or how to make life simpler - FrontEnd Dev Conf '14
132
133 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
133 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
134
135 **俄语** by [Alexander Solovyov](http://solovyov.net/)
136
@@ -138,19 +138,19 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
138
139 ### "Functional DOM programming" - Meteor DevShop 11
140
141 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
141 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
142
143 * * *
144
145 ### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
146
147 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
147 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
148
149 * * *
150
151 ### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
152
153 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
153 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
154
155 Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Chen](https://twitter.com/jingc) 谈论 Flux 和 React, 以及如何使用单向数据流的程序架构清理他们的代码 .
156
@@ -168,6 +168,6 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
168
169 ### Introducing React Native (+Playlist) - React.js Conf 2015
170
171 -<iframe width="100%" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
171 +<iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
172
173 [Tom Occhino](https://twitter.com/tomocchino) 回顾了React的过去和现在,在2015年。梳理了下一步要做什么。
docs/contributing/codebase-overview.md
+10 -10
@@ -9,7 +9,7 @@ next: implementation-notes.html
9
10 This section will give you an overview of the React codebase organization, its conventions, and the implementation.
11
12 -If you want to [contribute to React](/react/contributing/how-to-contribute.html) we hope that this guide will help you feel more comfortable making changes.
12 +If you want to [contribute to React](/contributing/how-to-contribute.html) we hope that this guide will help you feel more comfortable making changes.
13
14 We don't necessarily recommend any of these conventions in React apps. Many of them exist for historical reasons and might change with time.
15
@@ -68,7 +68,7 @@ After cloning the [React repository](https://github.com/facebook/react), you wil
68 * [`docs`](https://github.com/facebook/react/tree/master/docs) is the React documentation website. When you change APIs, make sure to update the relevant Markdown files.
69 * [`fixtures`](https://github.com/facebook/react/tree/master/fixtures) contains a few small React test applications for contributors.
70 * [`packages`](https://github.com/facebook/react/tree/master/packages) contains metadata (such as `package.json`) for all packages in the React repository. Nevertheless, their source code is still located inside [`src`](https://github.com/facebook/react/tree/master/src).
71 -* `build` is the build output of React. It is not in the repository but it will appear in your React clone after you [build it](/react/contributing/how-to-contribute.html#development-workflow) for the first time.
71 +* `build` is the build output of React. It is not in the repository but it will appear in your React clone after you [build it](/contributing/how-to-contribute.html#development-workflow) for the first time.
72
73 There are a few other top-level folders but they are mostly used for the tooling and you likely won't ever encounter them when contributing.
74
@@ -299,13 +299,13 @@ While the code is separated in the source tree, the exact package boundaries are
299
300 ### React Core
301
302 -The "core" of React includes all the [top-level `React` APIs](/react/docs/top-level-api.html#react), for example:
302 +The "core" of React includes all the [top-level `React` APIs](/docs/top-level-api.html#react), for example:
303
304 * `React.createElement()`
305 * `React.Component`
306 * `React.Children`
307
308 -**React core only includes the APIs necessary to define components.** It does not include the [reconciliation](/react/docs/reconciliation.html) algorithm or any platform-specific code. It is used both by React DOM and React Native components.
308 +**React core only includes the APIs necessary to define components.** It does not include the [reconciliation](/docs/reconciliation.html) algorithm or any platform-specific code. It is used both by React DOM and React Native components.
309
310 The code for React core is located in [`src/isomorphic`](https://github.com/facebook/react/tree/master/src/isomorphic) in the source tree. It is available on npm as the [`react`](https://www.npmjs.com/package/react) package. The corresponding standalone browser build is called `react.js`, and it exports a global called `React`.
311
@@ -323,7 +323,7 @@ React was originally created for the DOM but it was later adapted to also suppor
323
324 Renderers are located in [`src/renderers`](https://github.com/facebook/react/tree/master/src/renderers/):
325
326 -* [React DOM Renderer](https://github.com/facebook/react/tree/master/src/renderers/dom) renders React components to the DOM. It implements [top-level `ReactDOM` APIs](/react/docs/top-level-api.html#reactdom) and is available as [`react-dom`](https://www.npmjs.com/package/react-dom) npm package. It can also be used as standalone browser bundle called `react-dom.js` that exports a `ReactDOM` global.
326 +* [React DOM Renderer](https://github.com/facebook/react/tree/master/src/renderers/dom) renders React components to the DOM. It implements [top-level `ReactDOM` APIs](/docs/top-level-api.html#reactdom) and is available as [`react-dom`](https://www.npmjs.com/package/react-dom) npm package. It can also be used as standalone browser bundle called `react-dom.js` that exports a `ReactDOM` global.
327 * [React Native Renderer](https://github.com/facebook/react/tree/master/src/renderers/native) renders React components to native views. It is used internally by React Native via [`react-native-renderer`](https://www.npmjs.com/package/react-native-renderer) npm package. In the future a copy of it may get checked into the React Native [repository](https://github.com/facebook/react-native) so that React Native can update React at its own pace.
328 * [React Test Renderer](https://github.com/facebook/react/tree/master/src/renderers/testing) renders React components to JSON trees. It is used by the [Snapshot Testing](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html) feature of [Jest](https://facebook.github.io/jest) and is available as [react-test-renderer](https://www.npmjs.com/package/react-test-renderer) npm package.
329
@@ -337,7 +337,7 @@ While it is [technically possible](https://github.com/iamdustan/tiny-react-rende
337
338 ### Reconcilers
339
340 -Even vastly different renderers like React DOM and React Native need to share a lot of logic. In particular, the [reconciliation](/react/docs/reconciliation.html) algorithm should be as similar as possible so that declarative rendering, custom components, state, lifecycle methods, and refs work consistently across platforms.
340 +Even vastly different renderers like React DOM and React Native need to share a lot of logic. In particular, the [reconciliation](/docs/reconciliation.html) algorithm should be as similar as possible so that declarative rendering, custom components, state, lifecycle methods, and refs work consistently across platforms.
341
342 To solve this, different renderers share some code between them. We call this part of React a "reconciler". When an update such as `setState()` is scheduled, the reconciler calls `render()` on components in the tree and mounts, updates, or unmounts them.
343
@@ -363,17 +363,17 @@ User-defined ("composite") components should behave the same way with all render
363
364 Composite components also implement [mounting](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js#L181), [updating](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js#L703), and [unmounting](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js#L524). However, unlike host components, `ReactCompositeComponent` needs to behave differently depending on the user's code. This is why it calls methods, such as `render()` and `componentDidMount()`, on the user-supplied class.
365
366 -During an update, `ReactCompositeComponent` checks whether the `render()` output has a different `type` or `key` than the last time. If neither `type` nor `key` has changed, it delegates the update to the existing child internal instance. Otherwise, it unmounts the old child instance and mounts a new one. This is described in the [reconciliation algorithm](/react/docs/reconciliation.html).
366 +During an update, `ReactCompositeComponent` checks whether the `render()` output has a different `type` or `key` than the last time. If neither `type` nor `key` has changed, it delegates the update to the existing child internal instance. Otherwise, it unmounts the old child instance and mounts a new one. This is described in the [reconciliation algorithm](/docs/reconciliation.html).
367
368 #### Recursion
369
370 During an update, the stack reconciler "drills down" through composite components, runs their `render()` methods, and decides whether to update or replace their single child instance. It executes platform-specific code as it passes through the host components like `<div>` and `<View>`. Host components may have multiple children which are also processed recursively.
371
372 -It is important to understand that the stack reconciler always processes the component tree synchronously in a single pass. While individual tree branches may [bail out of reconciliation](/react/docs/advanced-performance.html#avoiding-reconciling-the-dom), the stack reconciler can't pause, and so it is suboptimal when the updates are deep and the available CPU time is limited.
372 +It is important to understand that the stack reconciler always processes the component tree synchronously in a single pass. While individual tree branches may [bail out of reconciliation](/docs/advanced-performance.html#avoiding-reconciling-the-dom), the stack reconciler can't pause, and so it is suboptimal when the updates are deep and the available CPU time is limited.
373
374 #### Learn More
375
376 -**The [next section](/react/contributing/implementation-notes.html) describes the current implementation in more details.**
376 +**The [next section](/contributing/implementation-notes.html) describes the current implementation in more details.**
377
378 ### Fiber Reconciler
379
@@ -401,4 +401,4 @@ There is a [video with a deep code dive into it](https://www.youtube.com/watch?v
401
402 ### What Next?
403
404 -Read the [next section](/react/contributing/implementation-notes.html) to learn about the current implementation of reconciler in more detail.
404 +Read the [next section](/contributing/implementation-notes.html) to learn about the current implementation of reconciler in more detail.
docs/contributing/design-principles.md
+7 -7
@@ -12,7 +12,7 @@ We wrote this document so that you have a better idea of how we decide what Reac
12 >
13 >This document assumes a strong understanding of React. It describes the design principles of *React itself*, not React components or applications.
14 >
15 ->For an introduction to React, check out [Thinking in React](/react/docs/thinking-in-react.html) instead.
15 +>For an introduction to React, check out [Thinking in React](/docs/thinking-in-react.html) instead.
16
17 ### Composition
18
@@ -38,7 +38,7 @@ We always discuss such improvement proposals with the community. You can find so
38
39 React is pragmatic. It is driven by the needs of the products written at Facebook. While it is influenced by some paradigms that are not yet fully mainstream such as functional programming, staying accessible to a wide range of developers with different skills and experience levels is an explicit goal of the project.
40
41 -If we want to deprecate a pattern that we don't like, it is our responsibility to consider all existing use cases for it and [educate the community about the alternatives](/react/blog/2016/07/13/mixins-considered-harmful.html) before we deprecate it. If some pattern that is useful for building apps is hard to express in a declarative way, we will [provide an imperative API](/react/docs/more-about-refs.html) for it. If we can't figure out a perfect API for something that we found necessary in many apps, we will [provide a temporary subpar working API](/react/docs/context.html) as long as it is possible to get rid of it later and it leaves the door open for future improvements.
41 +If we want to deprecate a pattern that we don't like, it is our responsibility to consider all existing use cases for it and [educate the community about the alternatives](/blog/2016/07/13/mixins-considered-harmful.html) before we deprecate it. If some pattern that is useful for building apps is hard to express in a declarative way, we will [provide an imperative API](/docs/more-about-refs.html) for it. If we can't figure out a perfect API for something that we found necessary in many apps, we will [provide a temporary subpar working API](/docs/context.html) as long as it is possible to get rid of it later and it leaves the door open for future improvements.
42
43 ### Stability
44
@@ -54,9 +54,9 @@ Given the sheer size of the Facebook React codebase, successful internal migrati
54
55 We don't deprecate anything without a good reason. We recognize that sometimes deprecations warnings cause frustration but we add them because deprecations clean up the road for the improvements and new features that we and many people in the community consider valuable.
56
57 -For example, we added a [warning about unknown DOM props](/react/warnings/unknown-prop.html) in React 15.2.0. Many projects were affected by this. However fixing this warning is important so that we can introduce the support for [custom attributes](https://github.com/facebook/react/issues/140) to React. There is a reason like this behind every deprecation that we add.
57 +For example, we added a [warning about unknown DOM props](/warnings/unknown-prop.html) in React 15.2.0. Many projects were affected by this. However fixing this warning is important so that we can introduce the support for [custom attributes](https://github.com/facebook/react/issues/140) to React. There is a reason like this behind every deprecation that we add.
58
59 -When we add a deprecation warning, we keep it for the rest of the current major version, and [change the behavior in the next major version](/react/blog/2016/02/19/new-versioning-scheme.html). If there is a lot of repetitive manual work involved, we release a [codemod](https://www.youtube.com/watch?v=d0pOgY8__JM) script that automates most of the change. Codemods enable us to move forward without stagnation in a massive codebase, and we encourage you to use them as well.
59 +When we add a deprecation warning, we keep it for the rest of the current major version, and [change the behavior in the next major version](/blog/2016/02/19/new-versioning-scheme.html). If there is a lot of repetitive manual work involved, we release a [codemod](https://www.youtube.com/watch?v=d0pOgY8__JM) script that automates most of the change. Codemods enable us to move forward without stagnation in a massive codebase, and we encourage you to use them as well.
60
61 You can find the codemods that we released in the [react-codemod](https://github.com/reactjs/react-codemod) repository.
62
@@ -68,7 +68,7 @@ This is why React provides escape hatches to work with mutable models, and tries
68
69 ### Scheduling
70
71 -Even when your components are described as functions, when you use React you don't call them directly. Every component returns a [description of what needs to be rendered](/react/blog/2015/12/18/react-components-elements-and-instances.html#elements-describe-the-tree), and that description may include both user-written components like `<LikeButton>` and platform-specific components like `<div>`. It is up to React to "unroll" `<LikeButton>` at some point in the future and actually apply changes to the UI tree according to the render results of the components recursively.
71 +Even when your components are described as functions, when you use React you don't call them directly. Every component returns a [description of what needs to be rendered](/blog/2015/12/18/react-components-elements-and-instances.html#elements-describe-the-tree), and that description may include both user-written components like `<LikeButton>` and platform-specific components like `<div>`. It is up to React to "unroll" `<LikeButton>` at some point in the future and actually apply changes to the UI tree according to the render results of the components recursively.
72
73 This is a subtle distinction but a powerful one. Since you don't call that component function but let React call it, it means React has the power to delay calling it if necessary. In its current implementation React walks the tree recursively and calls render functions of the whole updated tree during a single tick. However in the future it might start [delaying some updates to avoid dropping frames](https://github.com/facebook/react/issues/6170).
74
@@ -144,7 +144,7 @@ In a massive codebase like Facebook, being able to search for uses of specific A
144
145 Optimizing for search is also important because of our reliance on [codemods](https://www.youtube.com/watch?v=d0pOgY8__JM) to make breaking changes. We want it to be easy and safe to apply vast automated changes across the codebase, and unique verbose names help us achieve this. Similarly, distinctive names make it easy to write custom [lint rules](https://github.com/yannickcr/eslint-plugin-react) about using React without worrying about potential false positives.
146
147 -[JSX](/react/docs/displaying-data.html#jsx-syntax) plays a similar role. While it is not required with React, we use it extensively at Facebook both for aesthetic and pragmatic reasons.
147 +[JSX](/docs/displaying-data.html#jsx-syntax) plays a similar role. While it is not required with React, we use it extensively at Facebook both for aesthetic and pragmatic reasons.
148
149 In our codebase, JSX provides an unambiguous hint to the tools that they are dealing with a React element tree. This makes it possible to add build-time optimizations such as [hoisting constant elements](http://babeljs.io/docs/plugins/transform-react-constant-elements/), safely lint and codemod internal component usage, and [include JSX source location](https://github.com/facebook/react/pull/6771) into the warnings.
150
@@ -154,7 +154,7 @@ We try our best to address the problems raised by the community. However we are
154
155 Heavy internal usage gives us the confidence that React won't disappear tomorrow. React was created at Facebook to solve its problems. It brings tangible business value to the company and is used in many of its products. [Dogfooding](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) it means that our vision stays sharp and we have a focused direction going forward.
156
157 -This doesn't mean that we ignore the issues raised by the community. For example, we added support for [web components](/react/docs/webcomponents.html) and [SVG](https://github.com/facebook/react/pull/6243) to React even though we don't rely on either of them internally. We are actively [listening to your pain points](https://github.com/facebook/react/issues/2686) and [address them](/react/blog/2016/07/11/introducing-reacts-error-code-system.html) to the best of our ability. The community is what makes React special to us, and we are honored to contribute back.
157 +This doesn't mean that we ignore the issues raised by the community. For example, we added support for [web components](/docs/webcomponents.html) and [SVG](https://github.com/facebook/react/pull/6243) to React even though we don't rely on either of them internally. We are actively [listening to your pain points](https://github.com/facebook/react/issues/2686) and [address them](/blog/2016/07/11/introducing-reacts-error-code-system.html) to the best of our ability. The community is what makes React special to us, and we are honored to contribute back.
158
159 After releasing many open source projects at Facebook, we have learned that trying to make everyone happy at the same time produced projects with poor focus that didn't grow well. Instead, we found that picking a small audience and focusing on making them happy brings a positive net effect. That's exactly what we did with React, and so far solving the problems encountered by Facebook product teams has translated well to the open source community.
160
docs/contributing/how-to-contribute.md
+2 -2
@@ -19,7 +19,7 @@ All work on React happens directly on [GitHub](https://github.com/facebook/react
19
20 ### Branch Organization
21
22 -We will do our best to keep the [`master` branch](https://github.com/facebook/react/tree/master) in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We recommend that you use [the latest stable version of React](/react/downloads.html).
22 +We will do our best to keep the [`master` branch](https://github.com/facebook/react/tree/master) in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We recommend that you use [the latest stable version of React](/downloads.html).
23
24 If you send a pull request, please do it against the `master` branch. We maintain stable branches for major versions separately but we don't accept pull requests to them directly. Instead, we cherry-pick non-breaking changes from master to the latest stable major version.
25
@@ -160,4 +160,4 @@ By contributing to React, you agree that your contributions will be licensed und
160
161 ### What Next?
162
163 -Read the [next section](/react/contributing/codebase-overview.html) to learn how the codebase is organized.
163 +Read the [next section](/contributing/codebase-overview.html) to learn how the codebase is organized.
docs/contributing/implementation-notes.md
+9 -9
@@ -7,11 +7,11 @@ prev: codebase-overview.html
7 next: design-principles.html
8 ---
9
10 -This section is a collection of implementation notes for the [stack reconciler](/react/contributing/codebase-overview.html#stack-reconciler).
10 +This section is a collection of implementation notes for the [stack reconciler](/contributing/codebase-overview.html#stack-reconciler).
11
12 -It is very technical and assumes a strong understanding of React public API as well as how it's divided into core, renderers, and the reconciler. If you're not very familiar with the React codebase, read [the codebase overview](/react/contributing/codebase-overview.html) first.
12 +It is very technical and assumes a strong understanding of React public API as well as how it's divided into core, renderers, and the reconciler. If you're not very familiar with the React codebase, read [the codebase overview](/contributing/codebase-overview.html) first.
13
14 -It also assumes an understanding of the [differences between React components, their instances, and elements](/react/blog/2015/12/18/react-components-elements-and-instances.html).
14 +It also assumes an understanding of the [differences between React components, their instances, and elements](/blog/2015/12/18/react-components-elements-and-instances.html).
15
16 The stack reconciler is powering all the React production code today. It is located in [`src/renderers/shared/stack/reconciler`](https://github.com/facebook/react/tree/master/src/renderers/shared/stack) and is used by both React DOM and React Native.
17
@@ -23,7 +23,7 @@ Both this document and his talk are simplifications of the real codebase so you
23
24 ### Overview
25
26 -The reconciler itself doesn't have a public API. [Renderers](/react/contributing/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
26 +The reconciler itself doesn't have a public API. [Renderers](/contributing/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
27
28 ### Mounting as a Recursive Process
29
@@ -241,7 +241,7 @@ ReactDOM.render(<App />, rootEl);
241
242 However, our implementation above only knows how to mount the initial tree. It can't perform updates on it because it doesn't store all the necessary information, such as all the `publicInstance`s, or which DOM `node`s correspond to which components.
243
244 -The stack reconciler codebase solves this by making the `mount()` function a method and putting it on a class. There are drawbacks to this approach, and we are going in the opposite direction in the [ongoing rewrite of the reconciler](/react/contributing/codebase-overview.html#fiber-reconciler). Nevertheless this is how it works now.
244 +The stack reconciler codebase solves this by making the `mount()` function a method and putting it on a class. There are drawbacks to this approach, and we are going in the opposite direction in the [ongoing rewrite of the reconciler](/contributing/codebase-overview.html#fiber-reconciler). Nevertheless this is how it works now.
245
246 Instead of separate `mountHost` and `mountComposite` functions, we will create two classes: `DOMComponent` and `CompositeComponent`.
247
@@ -408,7 +408,7 @@ The host internal instances need to store:
408
409 If you're struggling to imagine how an internal instance tree is structured in more complex applications, [React DevTools](https://github.com/facebook/react-devtools) can give you a close approximation, as it highlights host instances with grey, and composite instances with purple:
410
411 - <img src="/react/img/docs/implementation-notes-tree.png" width="500" style="max-width: 100%" alt="React DevTools tree" />
411 + <img src="../img/docs/implementation-notes-tree.png" width="500" style="max-width: 100%" alt="React DevTools tree" />
412
413 To complete this refactoring, we will introduce a function that mounts a complete tree into a container node, just like `ReactDOM.render()`. It returns a public instance, also like `ReactDOM.render()`:
414
@@ -858,7 +858,7 @@ This document is simplified compared to the real codebase. There are a few impor
858
859 * In addition to composite and host internal instance classes, there are also classes for "text" and "empty" components. They represent text nodes and the "empty slots" you get by rendering `null`.
860
861 -* Renderers use [injection](/react/contributing/codebase-overview.html#dynamic-injection) to pass the host internal class to the reconciler. For example, React DOM tells the reconciler to use `ReactDOMComponent` as the host internal instance implementation.
861 +* Renderers use [injection](/contributing/codebase-overview.html#dynamic-injection) to pass the host internal class to the reconciler. For example, React DOM tells the reconciler to use `ReactDOMComponent` as the host internal instance implementation.
862
863 * The logic for updating the list of children is extracted into a mixin called `ReactMultiChild` which is used by the host internal instance class implementations both in React DOM and React Native.
864
@@ -889,8 +889,8 @@ This document is simplified compared to the real codebase. There are a few impor
889
890 ### Future Directions
891
892 -Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/react/contributing/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
892 +Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/contributing/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
893
894 ### Next Steps
895
896 -Read the [next section](/react/contributing/design-principles.html) to learn about the guiding principles we use for React development.
896 +Read the [next section](/contributing/design-principles.html) to learn about the guiding principles we use for React development.
docs/docs/accessibility.md
+1 -1
@@ -76,7 +76,7 @@ Ensure that your web application can be fully operated with the keyboard only:
76
77 Keyboard focus refers to the current element in the DOM that is selected to accept input from the keyboard. We see it everywhere as a focus outline similar to that shown in the following image:
78
79 -<img src="/react/img/docs/keyboard-focus.png" alt="Blue keyboard focus outline around a selected link." />
79 +<img src="../img/docs/keyboard-focus.png" alt="Blue keyboard focus outline around a selected link." />
80
81 Only ever use CSS that removes this outline, for example by setting `outline: 0`, if you are replacing it with another focus outline implementation.
82
docs/docs/addons-animation.md
+1 -1
@@ -72,7 +72,7 @@ class TodoList extends React.Component {
72
73 > Note:
74 >
75 -> You must provide [the `key` attribute](/react/docs/multiple-components.html#dynamic-children) for all children of `ReactCSSTransitionGroup`, even when only rendering a single item. This is how React will determine which children have entered, left, or stayed.
75 +> You must provide [the `key` attribute](/docs/multiple-components.html#dynamic-children) for all children of `ReactCSSTransitionGroup`, even when only rendering a single item. This is how React will determine which children have entered, left, or stayed.
76
77 In this component, when a new item is added to `ReactCSSTransitionGroup` it will get the `example-enter` CSS class and the `example-enter-active` CSS class added in the next tick. This is a convention based on the `transitionName` prop.
78
docs/docs/addons-create-fragment.md
+1 -1
@@ -61,4 +61,4 @@ function Swapper(props) {
61
62 The keys of the passed object (that is, `left` and `right`) are used as keys for the entire set of children, and the order of the object's keys is used to determine the order of the rendered children. With this change, the two sets of children will be properly reordered in the DOM without unmounting.
63
64 -The return value of `createFragment` should be treated as an opaque object; you can use the [`React.Children`](/react/docs/react-api.html#react.children) helpers to loop through a fragment but should not access it directly. Note also that we're relying on the JavaScript engine preserving object enumeration order here, which is not guaranteed by the spec but is implemented by all major browsers and VMs for objects with non-numeric keys.
64 +The return value of `createFragment` should be treated as an opaque object; you can use the [`React.Children`](/docs/react-api.html#react.children) helpers to loop through a fragment but should not access it directly. Note also that we're relying on the JavaScript engine preserving object enumeration order here, which is not guaranteed by the spec but is implemented by all major browsers and VMs for objects with non-numeric keys.
docs/docs/addons-perf.md
+7 -7
@@ -8,7 +8,7 @@ category: Add-Ons
8
9 > Note:
10 >
11 -> As of React 16, `react-addons-perf` is not supported. Please use [your browser's profiling tools](/react/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab) to get insight into which components re-render.
11 +> As of React 16, `react-addons-perf` is not supported. Please use [your browser's profiling tools](/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab) to get insight into which components re-render.
12
13 **Importing**
14
@@ -20,7 +20,7 @@ var Perf = require('react-addons-perf'); // ES5 with npm
20
21 ## Overview
22
23 -React is usually quite fast out of the box. However, in situations where you need to squeeze every ounce of performance out of your app, it provides a [shouldComponentUpdate()](/react/docs/react-component.html#shouldcomponentupdate) hook where you can add optimization hints to React's diff algorithm.
23 +React is usually quite fast out of the box. However, in situations where you need to squeeze every ounce of performance out of your app, it provides a [shouldComponentUpdate()](/docs/react-component.html#shouldcomponentupdate) hook where you can add optimization hints to React's diff algorithm.
24
25 In addition to giving you an overview of your app's overall performance, `Perf` is a profiling tool that tells you exactly where you need to put these hooks.
26
@@ -32,7 +32,7 @@ See these articles for an introduction to React performance tooling:
32
33 ### Development vs. Production Builds
34
35 -If you're benchmarking or seeing performance problems in your React apps, make sure you're testing with the [minified production build](/react/downloads.html). The development build includes extra warnings that are helpful when building your apps, but it is slower due to the extra bookkeeping it does.
35 +If you're benchmarking or seeing performance problems in your React apps, make sure you're testing with the [minified production build](/downloads.html). The development build includes extra warnings that are helpful when building your apps, but it is slower due to the extra bookkeeping it does.
36
37 However, the perf tools described on this page only work when using the development build of React. Therefore, the profiler only serves to indicate the _relatively_ expensive parts of your app.
38
@@ -97,7 +97,7 @@ Perf.printInclusive(measurements)
97
98 Prints the overall time taken. When no arguments are passed, `printInclusive` defaults to all the measurements from the last recording. This prints a nicely formatted table in the console, like so:
99
100 -![](/react/img/docs/perf-inclusive.png)
100 +![](../img/docs/perf-inclusive.png)
101
102 * * *
103
@@ -109,7 +109,7 @@ Perf.printExclusive(measurements)
109
110 "Exclusive" times don't include the times taken to mount the components: processing props, calling `componentWillMount` and `componentDidMount`, etc.
111
112 -![](/react/img/docs/perf-exclusive.png)
112 +![](../img/docs/perf-exclusive.png)
113
114 * * *
115
@@ -123,7 +123,7 @@ Perf.printWasted(measurements)
123
124 "Wasted" time is spent on components that didn't actually render anything, e.g. the render stayed the same, so the DOM wasn't touched.
125
126 -![](/react/img/docs/perf-wasted.png)
126 +![](../img/docs/perf-wasted.png)
127
128 * * *
129
@@ -135,7 +135,7 @@ Perf.printOperations(measurements)
135
136 Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove".
137
138 -![](/react/img/docs/perf-dom.png)
138 +![](../img/docs/perf-dom.png)
139
140 * * *
141
docs/docs/addons-pure-render-mixin.md
+2 -2
@@ -8,7 +8,7 @@ category: Add-Ons
8
9 > Note:
10 >
11 -> `PureRenderMixin` is a legacy add-on. Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
11 +> `PureRenderMixin` is a legacy add-on. Use [`React.PureComponent`](/docs/react-api.html#react.purecomponent) instead.
12
13 **Importing**
14
@@ -35,7 +35,7 @@ createReactClass({
35 });
36 ```
37
38 -Under the hood, the mixin implements [shouldComponentUpdate](/react/docs/component-specs.html#updating-shouldcomponentupdate), in which it compares the current props and state with the next ones and returns `false` if the equalities pass.
38 +Under the hood, the mixin implements [shouldComponentUpdate](/docs/component-specs.html#updating-shouldcomponentupdate), in which it compares the current props and state with the next ones and returns `false` if the equalities pass.
39
40 > Note:
41 >
docs/docs/addons-shallow-compare.md
+2 -2
@@ -8,7 +8,7 @@ category: Reference
8
9 > Note:
10 >
11 -> `shallowCompare` is a legacy add-on. Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
11 +> `shallowCompare` is a legacy add-on. Use [`React.PureComponent`](/docs/react-api.html#react.purecomponent) instead.
12
13 **Importing**
14
@@ -19,7 +19,7 @@ var shallowCompare = require('react-addons-shallow-compare'); // ES5 with npm
19
20 ## Overview
21
22 -Before [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) was introduced, `shallowCompare` was commonly used to achieve the same functionality as [`PureRenderMixin`](pure-render-mixin.html) while using ES6 classes with React.
22 +Before [`React.PureComponent`](/docs/react-api.html#react.purecomponent) was introduced, `shallowCompare` was commonly used to achieve the same functionality as [`PureRenderMixin`](pure-render-mixin.html) while using ES6 classes with React.
23
24 If your React component's render function is "pure" (in other words, it renders the same result given the same props and state), you can use this helper function for a performance boost in some cases.
25
docs/docs/addons-shallow-renderer.md
+1 -1
@@ -59,7 +59,7 @@ Shallow testing currently has some limitations, namely not supporting refs.
59
60 You can think of the shallowRenderer as a "place" to render the component you're testing, and from which you can extract the component's output.
61
62 -`shallowRenderer.render()` is similar to [`ReactDOM.render()`](/react/docs/react-dom.html#render) but it doesn't require DOM and only renders a single level deep. This means you can test components isolated from how their children are implemented.
62 +`shallowRenderer.render()` is similar to [`ReactDOM.render()`](/docs/react-dom.html#render) but it doesn't require DOM and only renders a single level deep. This means you can test components isolated from how their children are implemented.
63
64 ### `shallowRenderer.getRenderOutput()`
65
docs/docs/addons-test-utils.md
+2 -2
@@ -46,7 +46,7 @@ When writing unit tests for React, shallow rendering can be helpful. Shallow ren
46 > Note:
47 >
48 > The shallow renderer has moved to `react-test-renderer/shallow`.<br>
49 -> [Learn more about shallow rendering on its reference page.](/react/docs/shallow-renderer.html)
49 +> [Learn more about shallow rendering on its reference page.](/docs/shallow-renderer.html)
50
51 ## Other Utilities
52
@@ -61,7 +61,7 @@ Simulate.{eventName}(
61
62 Simulate an event dispatch on a DOM node with optional `eventData` event data.
63
64 -`Simulate` has a method for [every event that React understands](/react/docs/events.html#supported-events).
64 +`Simulate` has a method for [every event that React understands](/docs/events.html#supported-events).
65
66 **Clicking an element**
67
docs/docs/addons-two-way-binding-helpers.md
+1 -1
@@ -25,7 +25,7 @@ In React, data flows one way: from owner to child. We think that this makes your
25
26 However, there are lots of applications that require you to read some data and flow it back into your program. For example, when developing forms, you'll often want to update some React `state` when you receive user input. Or perhaps you want to perform layout in JavaScript and react to changes in some DOM element size.
27
28 -In React, you would implement this by listening to a "change" event, read from your data source (usually the DOM) and call `setState()` on one of your components. "Closing the data flow loop" explicitly leads to more understandable and easier-to-maintain programs. See [our forms documentation](/react/docs/forms.html) for more information.
28 +In React, you would implement this by listening to a "change" event, read from your data source (usually the DOM) and call `setState()` on one of your components. "Closing the data flow loop" explicitly leads to more understandable and easier-to-maintain programs. See [our forms documentation](/docs/forms.html) for more information.
29
30 Two-way binding -- implicitly enforcing that some value in the DOM is always consistent with some React `state` -- is concise and supports a wide variety of applications. We've provided `LinkedStateMixin`: syntactic sugar for setting up the common data flow loop pattern described above, or "linking" some data source to React `state`.
31
docs/docs/addons-update.md
+2 -2
@@ -19,9 +19,9 @@ var update = require('react-addons-update'); // ES5 with npm
19
20 ## Overview
21
22 -React lets you use whatever style of data management you want, including mutation. However, if you can use immutable data in performance-critical parts of your application it's easy to implement a fast [`shouldComponentUpdate()`](/react/docs/react-component.html#shouldcomponentupdate) method to significantly speed up your app.
22 +React lets you use whatever style of data management you want, including mutation. However, if you can use immutable data in performance-critical parts of your application it's easy to implement a fast [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate) method to significantly speed up your app.
23
24 -Dealing with immutable data in JavaScript is more difficult than in languages designed for it, like [Clojure](http://clojure.org/). However, we've provided a simple immutability helper, `update()`, that makes dealing with this type of data much easier, *without* fundamentally changing how your data is represented. You can also take a look at Facebook's [Immutable-js](https://facebook.github.io/immutable-js/docs/) and the [Advanced Performance](/react/docs/advanced-performance.html) section for more detail on Immutable-js.
24 +Dealing with immutable data in JavaScript is more difficult than in languages designed for it, like [Clojure](http://clojure.org/). However, we've provided a simple immutability helper, `update()`, that makes dealing with this type of data much easier, *without* fundamentally changing how your data is represented. You can also take a look at Facebook's [Immutable-js](https://facebook.github.io/immutable-js/docs/) and the [Advanced Performance](/docs/advanced-performance.html) section for more detail on Immutable-js.
25
26 ### The Main Idea
27
docs/docs/addons.md
+1 -1
@@ -21,7 +21,7 @@ The add-ons below are in the development (unminified) version of React only:
21
22 The add-ons below are considered legacy and their use is discouraged. They will keep working in observable future, but there is no further development.
23
24 -- [`PureRenderMixin`](pure-render-mixin.html). Use [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
24 +- [`PureRenderMixin`](pure-render-mixin.html). Use [`React.PureComponent`](/docs/react-api.html#react.purecomponent) instead.
25 - [`shallowCompare`](shallow-compare.html), a helper function that performs a shallow comparison for props and state in a component to decide if a component should update.
26 - [`update`](update.html). Use [`kolodny/immutability-helper`](https://github.com/kolodny/immutability-helper) instead.
27 - [`ReactDOMFactories`](dom-factories.html), pre-configured DOM factories to make React easier to use without JSX.
docs/docs/components-and-props.md
+2 -2
@@ -44,7 +44,7 @@ class Welcome extends React.Component {
44
45 The above two components are equivalent from React's point of view.
46
47 -Classes have some additional features that we will discuss in the [next sections](/react/docs/state-and-lifecycle.html). Until then, we will use functional components for their conciseness.
47 +Classes have some additional features that we will discuss in the [next sections](/docs/state-and-lifecycle.html). Until then, we will use functional components for their conciseness.
48
49 ## Rendering a Component
50
@@ -263,4 +263,4 @@ React is pretty flexible but it has a single strict rule:
263
264 **All React components must act like pure functions with respect to their props.**
265
266 -Of course, application UIs are dynamic and change over time. In the [next section](/react/docs/state-and-lifecycle.html), we will introduce a new concept of "state". State allows React components to change their output over time in response to user actions, network responses, and anything else, without violating this rule.
266 +Of course, application UIs are dynamic and change over time. In the [next section](/docs/state-and-lifecycle.html), we will introduce a new concept of "state". State allows React components to change their output over time in response to user actions, network responses, and anything else, without violating this rule.
docs/docs/conditional-rendering.md
+3 -3
@@ -69,7 +69,7 @@ function LogoutButton(props) {
69 }
70 ```
71
72 -In the example below, we will create a [stateful component](/react/docs/state-and-lifecycle.html#adding-local-state-to-a-class) called `LoginControl`.
72 +In the example below, we will create a [stateful component](/docs/state-and-lifecycle.html#adding-local-state-to-a-class) called `LoginControl`.
73
74 It will render either `<LoginButton />` or `<LogoutButton />` depending on its current state. It will also render a `<Greeting />` from the previous example:
75
@@ -121,7 +121,7 @@ While declaring a variable and using an `if` statement is a fine way to conditio
121
122 ### Inline If with Logical && Operator
123
124 -You may [embed any expressions in JSX](/react/docs/introducing-jsx.html#embedding-expressions-in-jsx) by wrapping them in curly braces. This includes the JavaScript logical `&&` operator. It can be handy for conditionally including an element:
124 +You may [embed any expressions in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) by wrapping them in curly braces. This includes the JavaScript logical `&&` operator. It can be handy for conditionally including an element:
125
126 ```js{6-10}
127 function Mailbox(props) {
@@ -185,7 +185,7 @@ render() {
185 }
186 ```
187
188 -Just like in JavaScript, it is up to you to choose an appropriate style based on what you and your team consider more readable. Also remember that whenever conditions become too complex, it might be a good time to [extract a component](/react/docs/components-and-props.html#extracting-components).
188 +Just like in JavaScript, it is up to you to choose an appropriate style based on what you and your team consider more readable. Also remember that whenever conditions become too complex, it might be a good time to [extract a component](/docs/components-and-props.html#extracting-components).
189
190 ### Preventing Component from Rendering
191
docs/docs/context.md
+6 -6
@@ -8,7 +8,7 @@ permalink: docs/context.html
8 >
9 > `React.PropTypes` has moved into a different package since React v15.5. Please use [the `prop-types` library instead](https://www.npmjs.com/package/prop-types) to define `contextTypes`.
10 >
11 ->We provide [a codemod script](/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
11 +>We provide [a codemod script](/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
12
13 With React, it's easy to track the flow of data through your React components. When you look at a component, you can see which props are being passed, which makes your apps easy to reason about.
14
@@ -147,12 +147,12 @@ Before you build components with an API similar to this, consider if there are c
147
148 ## Referencing Context in Lifecycle Methods
149
150 -If `contextTypes` is defined within a component, the following [lifecycle methods](/react/docs/react-component.html#the-component-lifecycle) will receive an additional parameter, the `context` object:
150 +If `contextTypes` is defined within a component, the following [lifecycle methods](/docs/react-component.html#the-component-lifecycle) will receive an additional parameter, the `context` object:
151
152 -- [`constructor(props, context)`](/react/docs/react-component.html#constructor)
153 -- [`componentWillReceiveProps(nextProps, nextContext)`](/react/docs/react-component.html#componentwillreceiveprops)
154 -- [`shouldComponentUpdate(nextProps, nextState, nextContext)`](/react/docs/react-component.html#shouldcomponentupdate)
155 -- [`componentWillUpdate(nextProps, nextState, nextContext)`](/react/docs/react-component.html#componentwillupdate)
152 +- [`constructor(props, context)`](/docs/react-component.html#constructor)
153 +- [`componentWillReceiveProps(nextProps, nextContext)`](/docs/react-component.html#componentwillreceiveprops)
154 +- [`shouldComponentUpdate(nextProps, nextState, nextContext)`](/docs/react-component.html#shouldcomponentupdate)
155 +- [`componentWillUpdate(nextProps, nextState, nextContext)`](/docs/react-component.html#componentwillupdate)
156
157 > Note:
158 >
docs/docs/cross-origin-errors.md
+1 -1
@@ -24,7 +24,7 @@ When loading React (or other libraries that might throw errors) from a CDN, add
24
25 Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP header:
26
27 -![Access-Control-Allow-Origin: *](/react/img/docs/cdn-cors-header.png)
27 +![Access-Control-Allow-Origin: *](../img/docs/cdn-cors-header.png)
28
29 ### Webpack
30
docs/docs/forms.md
+3 -3
@@ -25,7 +25,7 @@ This form has the default HTML form behavior of browsing to a new page when the
25
26 ## Controlled Components
27
28 -In HTML, form elements such as `<input>`, `<textarea>`, and `<select>` typically maintain their own state and update it based on user input. In React, mutable state is typically kept in the state property of components, and only updated with [`setState()`](/react/docs/react-component.html#setstate).
28 +In HTML, form elements such as `<input>`, `<textarea>`, and `<select>` typically maintain their own state and update it based on user input. In React, mutable state is typically kept in the state property of components, and only updated with [`setState()`](/docs/react-component.html#setstate).
29
30 We can combine the two by making the React state be the "single source of truth". Then the React component that renders a form also controls what happens in that form on subsequent user input. An input form element whose value is controlled by React in this way is called a "controlled component".
31
@@ -254,8 +254,8 @@ partialState[name] = value;
254 this.setState(partialState);
255 ```
256
257 -Also, since `setState()` automatically [merges a partial state into the current state](/react/docs/state-and-lifecycle.html#state-updates-are-merged), we only needed to call it with the changed parts.
257 +Also, since `setState()` automatically [merges a partial state into the current state](/docs/state-and-lifecycle.html#state-updates-are-merged), we only needed to call it with the changed parts.
258
259 ## Alternatives to Controlled Components
260
261 -It can sometimes be tedious to use controlled components, because you need to write an event handler for every way your data can change and pipe all of the input state through a React component. This can become particularly annoying when you are converting a preexisting codebase to React, or integrating a React application with a non-React library. In these situations, you might want to check out [uncontrolled components](/react/docs/uncontrolled-components.html), an alternative technique for implementing input forms.
261 +It can sometimes be tedious to use controlled components, because you need to write an event handler for every way your data can change and pipe all of the input state through a React component. This can become particularly annoying when you are converting a preexisting codebase to React, or integrating a React application with a non-React library. In these situations, you might want to check out [uncontrolled components](/docs/uncontrolled-components.html), an alternative technique for implementing input forms.
docs/docs/handling-events.md
+1 -1
@@ -54,7 +54,7 @@ function ActionLink() {
54 }
55 ```
56
57 -Here, `e` is a synthetic event. React defines these synthetic events according to the [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), so you don't need to worry about cross-browser compatibility. See the [`SyntheticEvent`](/react/docs/events.html) reference guide to learn more.
57 +Here, `e` is a synthetic event. React defines these synthetic events according to the [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), so you don't need to worry about cross-browser compatibility. See the [`SyntheticEvent`](/docs/events.html) reference guide to learn more.
58
59 When using React you should generally not need to call `addEventListener` to add listeners to a DOM element after it is created. Instead, just provide a listener when the element is initially rendered.
60
docs/docs/hello-world.md
+1 -1
@@ -11,7 +11,7 @@ redirect_from:
11 - "docs/getting-started-zh-CN.html"
12 ---
13
14 -The easiest way to get started with React is to use [this Hello World example code on CodePen](http://codepen.io/gaearon/pen/ZpvBNJ?editors=0010). You don't need to install anything; you can just open it in another tab and follow along as we go through examples. If you'd rather use a local development environment, check out the [Installation](/react/docs/installation.html) page.
14 +The easiest way to get started with React is to use [this Hello World example code on CodePen](http://codepen.io/gaearon/pen/ZpvBNJ?editors=0010). You don't need to install anything; you can just open it in another tab and follow along as we go through examples. If you'd rather use a local development environment, check out the [Installation](/docs/installation.html) page.
15
16 The smallest React example looks like this:
17
docs/docs/higher-order-components.md
+1 -1
@@ -22,7 +22,7 @@ In this document, we'll discuss why higher-order components are useful, and how
22
23 > **Note**
24 >
25 -> We previously recommended mixins as a way to handle cross-cutting concerns. We've since realized that mixins create more trouble than they are worth. [Read more](/react/blog/2016/07/13/mixins-considered-harmful.html) about why we've moved away from mixins and how you can transition your existing components.
25 +> We previously recommended mixins as a way to handle cross-cutting concerns. We've since realized that mixins create more trouble than they are worth. [Read more](/blog/2016/07/13/mixins-considered-harmful.html) about why we've moved away from mixins and how you can transition your existing components.
26
27 Components are the primary unit of code reuse in React. However, you'll find that some patterns aren't a straightforward fit for traditional components.
28
docs/docs/installation.md
+24 -112
@@ -73,7 +73,7 @@ React is flexible and can be used in a variety of projects. You can create new a
73 background-color: #05A5D1;
74 color: white;
75 }
76 - block {
76 + section {
77 display: none;
78 }
79 .display-target-fiddle .fiddle,
@@ -104,19 +104,21 @@ React is flexible and can be used in a variety of projects. You can create new a
104 </ul>
105 </div>
106
107 -<block id="fiddletab" role="tabpanel" class="fiddle" />
107 +<div>
108 +<section id="fiddletab" role="tabpanel" class="fiddle">
109
109 -## Trying Out React
110 +### Trying Out React
111
112 If you're just interested in playing around with React, you can use CodePen. Try starting from [this Hello World example code](http://codepen.io/gaearon/pen/rrpgNB?editors=0010). You don't need to install anything; you can just modify the code and see if it works.
113
114 If you prefer to use your own text editor, you can also <a href="/react/downloads/single-file-example.html" download="hello.html">download this HTML file</a>, edit it, and open it from the local filesystem in your browser. It does a slow runtime code transformation, so don't use it in production.
115
116 If you want to use it for a full application, there are two popular ways to get started with React: using Create React App, or adding it to an existing application.
117 +</section>
118
117 -<block id="newapptab" role="tabpanel" class="newapp" />
119 +<section id="newapptab" role="tabpanel" class="newapp">
120
119 -## Creating a New Application
121 +### Creating a New Application
122
123 [Create React App](http://github.com/facebookincubator/create-react-app) is the best way to start building a new React single page application. It sets up your development environment so that you can use the latest JavaScript features, provides a nice developer experience, and optimizes your app for production.
124
@@ -131,16 +133,17 @@ npm start
133 Create React App doesn't handle backend logic or databases; it just creates a frontend build pipeline, so you can use it with any backend you want. It uses build tools like Babel and webpack under the hood, but works with zero configuration.
134
135 When you're ready to deploy to production, running `npm run build` will create an optimized build of your app in the `build` folder. You can learn more about Create React App [from its README](https://github.com/facebookincubator/create-react-app#create-react-app-) and the [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#table-of-contents).
136 +</section>
137
135 -<block id="existingapptab" role="tabpanel" class="existingapp" />
138 +<section id="existingapptab" role="tabpanel" class="existingapp">
139
137 -## Adding React to an Existing Application
140 +### Adding React to an Existing Application
141
142 You don't need to rewrite your app to start using React.
143
144 We recommend adding React to a small part of your application, such as an individual widget, so you can see if it works well for your use case.
145
143 -While React [can be used](/react/docs/react-without-es6.html) without a build pipeline, we recommend setting it up so you can be more productive. A modern build pipeline typically consists of:
146 +While React [can be used](/docs/react-without-es6.html) without a build pipeline, we recommend setting it up so you can be more productive. A modern build pipeline typically consists of:
147
148 * A **package manager**, such as [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/). It lets you take advantage of a vast ecosystem of third-party packages, and easily install or update them.
149 * A **bundler**, such as [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/). It lets you write modular code and bundle it together into small packages to optimize load time.
@@ -150,7 +153,7 @@ While React [can be used](/react/docs/react-without-es6.html) without a build pi
153
154 >**Note:**
155 >
153 ->Once installed, we strongly recommend setting up a [production build process](/react/docs/optimizing-performance.html#use-the-production-build) to ensure you're using the fast version of React in production.
156 +>Once installed, we strongly recommend setting up a [production build process](/docs/optimizing-performance.html#use-the-production-build) to ensure you're using the fast version of React in production.
157
158 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
159
@@ -196,7 +199,7 @@ This code renders into a DOM element with the id of `root` so you need `<div id=
199
200 Similarly, you can render a React component inside a DOM element somewhere inside your existing app written with any other JavaScript UI library.
201
199 -[Learn more about integrating React with existing code.](/react/docs/integrating-with-other-libraries.html#integrating-with-other-view-libraries)
202 +[Learn more about integrating React with existing code.](/docs/integrating-with-other-libraries.html#integrating-with-other-view-libraries)
203
204 ### Development and Production Versions
205
@@ -204,14 +207,14 @@ By default, React includes many helpful warnings. These warnings are very useful
207
208 **However, they make the development version of React larger and slower so you should use the production version when you deploy the app.**
209
207 -Learn [how to tell if your website is serving the right version of React](/react/docs/optimizing-performance.html#use-the-production-build), and how to configure the production build process most efficiently:
210 +Learn [how to tell if your website is serving the right version of React](/docs/optimizing-performance.html#use-the-production-build), and how to configure the production build process most efficiently:
211
209 -* [Creating a Production Build with Create React App](/react/docs/optimizing-performance.html#create-react-app)
210 -* [Creating a Production Build with Single-File Builds](/react/docs/optimizing-performance.html#single-file-builds)
211 -* [Creating a Production Build with Brunch](/react/docs/optimizing-performance.html#brunch)
212 -* [Creating a Production Build with Browserify](/react/docs/optimizing-performance.html#browserify)
213 -* [Creating a Production Build with Rollup](/react/docs/optimizing-performance.html#rollup)
214 -* [Creating a Production Build with webpack](/react/docs/optimizing-performance.html#webpack)
212 +* [Creating a Production Build with Create React App](/docs/optimizing-performance.html#create-react-app)
213 +* [Creating a Production Build with Single-File Builds](/docs/optimizing-performance.html#single-file-builds)
214 +* [Creating a Production Build with Brunch](/docs/optimizing-performance.html#brunch)
215 +* [Creating a Production Build with Browserify](/docs/optimizing-performance.html#browserify)
216 +* [Creating a Production Build with Rollup](/docs/optimizing-performance.html#rollup)
217 +* [Creating a Production Build with webpack](/docs/optimizing-performance.html#webpack)
218
219 ### Using a CDN
220
@@ -243,99 +246,8 @@ If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://
246
247 We also recommend to verify that the CDN you are using sets the `Access-Control-Allow-Origin: *` HTTP header:
248
246 -![Access-Control-Allow-Origin: *](/react/img/docs/cdn-cors-header.png)
247 -
248 -This enables a better [error handling experience](/react/blog/2017/07/26/error-handling-in-react-16.html) in React 16 and later.
249 -
250 -<script>
251 -/**
252 - * The code below is based on a snippet from React Native Getting Started page.
253 - */
254 -
255 -// Convert <div>...<span><block /></span>...</div>
256 -// Into <div>...<block />...</div>
257 -var blocks = document.getElementsByTagName('block');
258 -for (var i = 0; i < blocks.length; ++i) {
259 - var block = blocks[i];
260 - var span = blocks[i].parentNode;
261 - var container = span.parentNode;
262 - container.insertBefore(block, span);
263 - container.removeChild(span);
264 -}
265 -// Convert <div>...<block />content<block />...</div>
266 -// Into <div>...<block>content</block><block />...</div>
267 -blocks = document.getElementsByTagName('block');
268 -for (var i = 0; i < blocks.length; ++i) {
269 - var block = blocks[i];
270 - while (block.nextSibling && block.nextSibling.tagName !== 'BLOCK') {
271 - block.appendChild(block.nextSibling);
272 - }
273 -}
274 -
275 -function setSelected(value){
276 - var tabs = document.querySelectorAll('li[role="tab"]');
277 - for (var i = 0; i < tabs.length; ++i) {
278 - var tab = tabs[i];
279 - if (tab.className === 'button-' + value) {
280 - tabs[i].setAttribute('aria-selected', 'true');
281 - tabs[i].setAttribute('tabindex', '0');
282 - } else {
283 - tabs[i].setAttribute('aria-selected', 'false');
284 - tabs[i].setAttribute('tabindex', '-1');
285 - }
286 - }
287 -}
249 +![Access-Control-Allow-Origin: *](../img/docs/cdn-cors-header.png)
250
289 -function keyToggle(e, value, prevTab, nextTab){
290 - if (e.keyCode === 37) {
291 - document.getElementById(prevTab).focus();
292 - display('target', prevTab);
293 - }
294 - if (e.keyCode === 39) {
295 - document.getElementById(nextTab).focus();
296 - display('target', nextTab);
297 - }
298 -}
299 -
300 -function display(type, value) {
301 - setSelected(value);
302 - var container = document.getElementsByTagName('block')[0].parentNode;
303 - container.className = 'display-' + type + '-' + value + ' ' +
304 - container.className.replace(RegExp('display-' + type + '-[a-z]+ ?'), '');
305 -}
306 -
307 -// If we are coming to the page with a hash in it (i.e. from a search, for example), try to get
308 -// us as close as possible to the correct platform and dev os using the hashtag and block walk up.
309 -var foundHash = false;
310 -if (window.location.hash !== '' && window.location.hash !== 'content') { // content is default
311 - // Hash links are added a bit later so we wait for them.
312 - window.addEventListener('DOMContentLoaded', selectTabForHashLink);
313 -}
314 -
315 -function selectTabForHashLink() {
316 - var hashLinks = document.querySelectorAll('a.hash-link');
317 - for (var i = 0; i < hashLinks.length && !foundHash; ++i) {
318 - if (hashLinks[i].hash === window.location.hash) {
319 - var parent = hashLinks[i].parentElement;
320 - while (parent) {
321 - if (parent.tagName === 'BLOCK') {
322 - var target = null;
323 - if (parent.className.indexOf('fiddle') > -1) {
324 - target = 'fiddle';
325 - } else if (parent.className.indexOf('newapp') > -1) {
326 - target = 'newapp';
327 - } else if (parent.className.indexOf('existingapp') > -1) {
328 - target = 'existingapp';
329 - } else {
330 - break; // assume we don't have anything.
331 - }
332 - display('target', target);
333 - foundHash = true;
334 - break;
335 - }
336 - parent = parent.parentElement;
337 - }
338 - }
339 - }
340 -}
341 -</script>
251 +This enables a better [error handling experience](/blog/2017/07/26/error-handling-in-react-16.html) in React 16 and later.
252 +</section>
253 +</div>
docs/docs/integrating-with-other-libraries.md
+9 -9
@@ -18,7 +18,7 @@ The easiest way to avoid conflicts is to prevent the React component from updati
18
19 To demonstrate this, let's sketch out a wrapper for a generic jQuery plugin.
20
21 -We will attach a [ref](/react/docs/refs-and-the-dom.html) to the root DOM element. Inside `componentDidMount`, we will get a reference to it so we can pass it to the jQuery plugin.
21 +We will attach a [ref](/docs/refs-and-the-dom.html) to the root DOM element. Inside `componentDidMount`, we will get a reference to it so we can pass it to the jQuery plugin.
22
23 To prevent React from touching the DOM after mounting, we will return an empty `<div />` from the `render()` method. The `<div />` element has no properties or children, so React has no reason to update it, leaving the jQuery plugin free to manage that part of the DOM:
24
@@ -39,7 +39,7 @@ class SomePlugin extends React.Component {
39 }
40 ```
41
42 -Note that we defined both `componentDidMount` and `componentWillUnmount` [lifecycle hooks](/react/docs/react-component.html#the-component-lifecycle). Many jQuery plugins attach event listeners to the DOM so it's important to detach them in `componentWillUnmount`. If the plugin does not provide a method for cleanup, you will probably have to provide your own, remembering to remove any event listeners the plugin registered to prevent memory leaks.
42 +Note that we defined both `componentDidMount` and `componentWillUnmount` [lifecycle hooks](/docs/react-component.html#the-component-lifecycle). Many jQuery plugins attach event listeners to the DOM so it's important to detach them in `componentWillUnmount`. If the plugin does not provide a method for cleanup, you will probably have to provide your own, remembering to remove any event listeners the plugin registered to prevent memory leaks.
43
44 ### Integrating with jQuery Chosen Plugin
45
@@ -67,7 +67,7 @@ function Example() {
67 }
68 ```
69
70 -We will implement it as an [uncontrolled component](/react/docs/uncontrolled-components.html) for simplicity.
70 +We will implement it as an [uncontrolled component](/docs/uncontrolled-components.html) for simplicity.
71
72 First, we will create an empty component with a `render()` method where we return `<select>` wrapped in a `<div>`:
73
@@ -190,7 +190,7 @@ class Chosen extends React.Component {
190
191 ## Integrating with Other View Libraries
192
193 -React can be embedded into other applications thanks to the flexibility of [`ReactDOM.render()`](/react/docs/react-dom.html#render).
193 +React can be embedded into other applications thanks to the flexibility of [`ReactDOM.render()`](/docs/react-dom.html#render).
194
195 Although React is commonly used at startup to load a single root React component into the DOM, `ReactDOM.render()` can also be called multiple times for independent parts of the UI which can be as small as a button, or as large as an app.
196
@@ -227,7 +227,7 @@ ReactDOM.render(
227 );
228 ```
229
230 -From here you could start moving more logic into the component and begin adopting more common React practices. For example, in components it is best not to rely on IDs because the same component can be rendered multiple times. Instead, we will use the [React event system](/react/docs/handling-events.html) and register the click handler directly on the React `<button>` element:
230 +From here you could start moving more logic into the component and begin adopting more common React practices. For example, in components it is best not to rely on IDs because the same component can be rendered multiple times. Instead, we will use the [React event system](/docs/handling-events.html) and register the click handler directly on the React `<button>` element:
231
232 ```js{2,6,9}
233 function Button(props) {
@@ -255,7 +255,7 @@ You can have as many such isolated components as you like, and use `ReactDOM.ren
255
256 [Backbone](http://backbonejs.org/) views typically use HTML strings, or string-producing template functions, to create the content for their DOM elements. This process, too, can be replaced with rendering a React component.
257
258 -Below, we will create a Backbone view called `ParagraphView`. It will override Backbone's `render()` function to render a React `<Paragraph>` component into the DOM element provided by Backbone (`this.el`). Here, too, we are using [`ReactDOM.render()`](/react/docs/react-dom.html#render):
258 +Below, we will create a Backbone view called `ParagraphView`. It will override Backbone's `render()` function to render a React `<Paragraph>` component into the DOM element provided by Backbone (`this.el`). Here, too, we are using [`ReactDOM.render()`](/docs/react-dom.html#render):
259
260 ```js{1,5,8,12}
261 function Paragraph(props) {
@@ -283,13 +283,13 @@ When a component is removed *from within* a React tree, the cleanup is performed
283
284 ## Integrating with Model Layers
285
286 -While it is generally recommended to use unidirectional data flow such as [React state](/react/docs/lifting-state-up.html), [Flux](http://facebook.github.io/flux/), or [Redux](http://redux.js.org/), React components can use a model layer from other frameworks and libraries.
286 +While it is generally recommended to use unidirectional data flow such as [React state](/docs/lifting-state-up.html), [Flux](http://facebook.github.io/flux/), or [Redux](http://redux.js.org/), React components can use a model layer from other frameworks and libraries.
287
288 ### Using Backbone Models in React Components
289
290 The simplest way to consume [Backbone](http://backbonejs.org/) models and collections from a React component is to listen to the various change events and manually force an update.
291
292 -Components responsible for rendering models would listen to `'change'` events, while components responsible for rendering collections would listen for `'add'` and `'remove'` events. In both cases, call [`this.forceUpdate()`](/react/docs/react-component.html#forceupdate) to rerender the component with the new data.
292 +Components responsible for rendering models would listen to `'change'` events, while components responsible for rendering collections would listen for `'add'` and `'remove'` events. In both cases, call [`this.forceUpdate()`](/docs/react-component.html#forceupdate) to rerender the component with the new data.
293
294 In the example below, the `List` component renders a Backbone collection, using the `Item` component to render individual items.
295
@@ -353,7 +353,7 @@ class List extends React.Component {
353
354 The approach above requires your React components to be aware of the Backbone models and collections. If you later plan to migrate to another data management solution, you might want to concentrate the knowledge about Backbone in as few parts of the code as possible.
355
356 -One solution to this is to extract the model's attributes as plain data whenever it changes, and keep this logic in a single place. The following is [a higher-order component](/react/docs/higher-order-components.html) that extracts all attributes of a Backbone model into state, passing the data to the wrapped component.
356 +One solution to this is to extract the model's attributes as plain data whenever it changes, and keep this logic in a single place. The following is [a higher-order component](/docs/higher-order-components.html) that extracts all attributes of a Backbone model into state, passing the data to the wrapped component.
357
358 This way, only the higher-order component needs to know about Backbone model internals, and most components in the app can stay agnostic of Backbone.
359
docs/docs/introducing-jsx.md
+1 -1
@@ -16,7 +16,7 @@ This funny tag syntax is neither a string nor HTML.
16
17 It is called JSX, and it is a syntax extension to JavaScript. We recommend using it with React to describe what the UI should look like. JSX may remind you of a template language, but it comes with the full power of JavaScript.
18
19 -JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/react/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
19 +JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
20
21 ### Embedding Expressions in JSX
22
docs/docs/jsx-in-depth.md
+1 -1
@@ -196,7 +196,7 @@ function NumberDescriber(props) {
196 }
197 ```
198
199 -You can learn more about [conditional rendering](/react/docs/conditional-rendering.html) and [loops](/react/docs/lists-and-keys.html) in the corresponding sections.
199 +You can learn more about [conditional rendering](/docs/conditional-rendering.html) and [loops](/docs/lists-and-keys.html) in the corresponding sections.
200
201 ### String Literals
202
docs/docs/lifting-state-up.md
+3 -3
@@ -184,7 +184,7 @@ First, we will replace `this.state.temperature` with `this.props.temperature` in
184 const temperature = this.props.temperature;
185 ```
186
187 -We know that [props are read-only](/react/docs/components-and-props.html#props-are-read-only). When the `temperature` was in the local state, the `TemperatureInput` could just call `this.setState()` to change it. However, now that the `temperature` is coming from the parent as a prop, the `TemperatureInput` has no control over it.
187 +We know that [props are read-only](/docs/components-and-props.html#props-are-read-only). When the `temperature` was in the local state, the `TemperatureInput` could just call `this.setState()` to change it. However, now that the `temperature` is coming from the parent as a prop, the `TemperatureInput` has no control over it.
188
189 In React, this is usually solved by making a component "controlled". Just like the DOM `<input>` accepts both a `value` and an `onChange` prop, so can the custom `TemperatureInput` accept both `temperature` and `onTemperatureChange` props from its parent `Calculator`.
190
@@ -314,7 +314,7 @@ Every update goes through the same steps so the inputs stay in sync.
314
315 ## Lessons Learned
316
317 -There should be a single "source of truth" for any data that changes in a React application. Usually, the state is first added to the component that needs it for rendering. Then, if other components also need it, you can lift it up to their closest common ancestor. Instead of trying to sync the state between different components, you should rely on the [top-down data flow](/react/docs/state-and-lifecycle.html#the-data-flows-down).
317 +There should be a single "source of truth" for any data that changes in a React application. Usually, the state is first added to the component that needs it for rendering. Then, if other components also need it, you can lift it up to their closest common ancestor. Instead of trying to sync the state between different components, you should rely on the [top-down data flow](/docs/state-and-lifecycle.html#the-data-flows-down).
318
319 Lifting state involves writing more "boilerplate" code than two-way binding approaches, but as a benefit, it takes less work to find and isolate bugs. Since any state "lives" in some component and that component alone can change it, the surface area for bugs is greatly reduced. Additionally, you can implement any custom logic to reject or transform user input.
320
@@ -322,4 +322,4 @@ If something can be derived from either props or state, it probably shouldn't be
322
323 When you see something wrong in the UI, you can use [React Developer Tools](https://github.com/facebook/react-devtools) to inspect the props and move up the tree until you find the component responsible for updating the state. This lets you trace the bugs to their source:
324
325 -<img src="/react/img/docs/react-devtools-state.gif" alt="Monitoring State in React DevTools" width="100%">
325 +<img src="../img/docs/react-devtools-state.gif" alt="Monitoring State in React DevTools" width="100%">
docs/docs/lists-and-keys.md
+8 -8
@@ -18,11 +18,11 @@ console.log(doubled);
18
19 This code logs `[2, 4, 6, 8, 10]` to the console.
20
21 -In React, transforming arrays into lists of [elements](/react/docs/rendering-elements.html) is nearly identical.
21 +In React, transforming arrays into lists of [elements](/docs/rendering-elements.html) is nearly identical.
22
23 ### Rendering Multiple Components
24
25 -You can build collections of elements and [include them in JSX](/react/docs/introducing-jsx.html#embedding-expressions-in-jsx) using curly braces `{}`.
25 +You can build collections of elements and [include them in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) using curly braces `{}`.
26
27 Below, we loop through the `numbers` array using the JavaScript [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) function. We return an `<li>` element for each item. Finally, we assign the resulting array of elements to `listItems`:
28
@@ -33,7 +33,7 @@ const listItems = numbers.map((number) =>
33 );
34 ```
35
36 -We include the entire `listItems` array inside a `<ul>` element, and [render it to the DOM](/react/docs/rendering-elements.html#rendering-an-element-into-the-dom):
36 +We include the entire `listItems` array inside a `<ul>` element, and [render it to the DOM](/docs/rendering-elements.html#rendering-an-element-into-the-dom):
37
38 ```javascript{2}
39 ReactDOM.render(
@@ -48,7 +48,7 @@ This code displays a bullet list of numbers between 1 and 5.
48
49 ### Basic List Component
50
51 -Usually you would render lists inside a [component](/react/docs/components-and-props.html).
51 +Usually you would render lists inside a [component](/docs/components-and-props.html).
52
53 We can refactor the previous example into a component that accepts an array of `numbers` and outputs an unordered list of elements.
54
@@ -130,13 +130,13 @@ const todoItems = todos.map((todo, index) =>
130 );
131 ```
132
133 -We don't recommend using indexes for keys if the items can reorder, as that would be slow. You may read an [in-depth explanation about why keys are necessary](/react/docs/reconciliation.html#recursing-on-children) if you're interested.
133 +We don't recommend using indexes for keys if the items can reorder, as that would be slow. You may read an [in-depth explanation about why keys are necessary](/docs/reconciliation.html#recursing-on-children) if you're interested.
134
135 ### Extracting Components with Keys
136
137 Keys only make sense in the context of the surrounding array.
138
139 -For example, if you [extract](/react/docs/components-and-props.html#extracting-components) a `ListItem` component, you should keep the key on the `<ListItem />` elements in the array rather than on the root `<li>` element in the `ListItem` itself.
139 +For example, if you [extract](/docs/components-and-props.html#extracting-components) a `ListItem` component, you should keep the key on the `<ListItem />` elements in the array rather than on the root `<li>` element in the `ListItem` itself.
140
141 **Example: Incorrect Key Usage**
142
@@ -278,7 +278,7 @@ function NumberList(props) {
278 }
279 ```
280
281 -JSX allows [embedding any expressions](/react/docs/introducing-jsx.html#embedding-expressions-in-jsx) in curly braces so we could inline the `map()` result:
281 +JSX allows [embedding any expressions](/docs/introducing-jsx.html#embedding-expressions-in-jsx) in curly braces so we could inline the `map()` result:
282
283 ```js{5-8}
284 function NumberList(props) {
@@ -296,4 +296,4 @@ function NumberList(props) {
296
297 [Try it on CodePen.](https://codepen.io/gaearon/pen/BLvYrB?editors=0010)
298
299 -Sometimes this results in clearer code, but this style can also be abused. Like in JavaScript, it is up to you to decide whether it is worth extracting a variable for readability. Keep in mind that if the `map()` body is too nested, it might be a good time to [extract a component](/react/docs/components-and-props.html#extracting-components).
299 +Sometimes this results in clearer code, but this style can also be abused. Like in JavaScript, it is up to you to decide whether it is worth extracting a variable for readability. Keep in mind that if the `map()` body is too nested, it might be a good time to [extract a component](/docs/components-and-props.html#extracting-components).
docs/docs/optimizing-performance.md
+4 -4
@@ -15,11 +15,11 @@ By default, React includes many helpful warnings. These warnings are very useful
15
16 If you aren't sure whether your build process is set up correctly, you can check it by installing [React Developer Tools for Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi). If you visit a site with React in production mode, the icon will have a dark background:
17
18 -<img src="/react/img/docs/devtools-prod.png" style="max-width:100%" alt="React DevTools on a website with production version of React">
18 +<img src="../img/docs/devtools-prod.png" style="max-width:100%" alt="React DevTools on a website with production version of React">
19
20 If you visit a site with React in development mode, the icon will have a red background:
21
22 -<img src="/react/img/docs/devtools-dev.png" style="max-width:100%" alt="React DevTools on a website with development version of React">
22 +<img src="../img/docs/devtools-dev.png" style="max-width:100%" alt="React DevTools on a website with development version of React">
23
24 It is expected that you use the development mode when working on your app, and the production mode when deploying your app to the users.
25
@@ -164,7 +164,7 @@ Remember that you only need to do this for production builds. You shouldn't appl
164
165 In the **development** mode, you can visualize how components mount, update, and unmount, using the performance tools in supported browsers. For example:
166
167 -<center><img src="/react/img/blog/react-perf-chrome-timeline.png" style="max-width:100%" alt="React components in Chrome timeline" /></center>
167 +<center><img src="../img/blog/react-perf-chrome-timeline.png" style="max-width:100%" alt="React components in Chrome timeline" /></center>
168
169 To do this in Chrome:
170
@@ -203,7 +203,7 @@ If you know that in some situations your component doesn't need to update, you c
203
204 Here's a subtree of components. For each one, `SCU` indicates what `shouldComponentUpdate` returned, and `vDOMEq` indicates whether the rendered React elements were equivalent. Finally, the circle's color indicates whether the component had to be reconciled or not.
205
206 -<figure><img src="/react/img/docs/should-component-update.png" style="max-width:100%" /></figure>
206 +<figure><img src="../img/docs/should-component-update.png" style="max-width:100%" /></figure>
207
208 Since `shouldComponentUpdate` returned `false` for the subtree rooted at C2, React did not attempt to render C2, and thus didn't even have to invoke `shouldComponentUpdate` on C4 and C5.
209
docs/docs/portals.md
+1 -1
@@ -10,7 +10,7 @@ Portals provide a first-class way to render children into a DOM node that exists
10 ReactDOM.createPortal(child, container)
11 ```
12
13 -The first argument (`child`) is any [renderable React child](/react/docs/react-component.html#render), such as an element, string, or fragment. The second argument (`container`) is a DOM element.
13 +The first argument (`child`) is any [renderable React child](/docs/react-component.html#render), such as an element, string, or fragment. The second argument (`container`) is a DOM element.
14
15 ## Usage
16
docs/docs/react-without-es6.md
+3 -3
@@ -173,13 +173,13 @@ If you'd rather play it safe, you have a few options:
173 >
174 >ES6 launched without any mixin support. Therefore, there is no support for mixins when you use React with ES6 classes.
175 >
176 ->**We also found numerous issues in codebases using mixins, [and don't recommend using them in the new code](/react/blog/2016/07/13/mixins-considered-harmful.html).**
176 +>**We also found numerous issues in codebases using mixins, [and don't recommend using them in the new code](/blog/2016/07/13/mixins-considered-harmful.html).**
177 >
178 >This section exists only for the reference.
179
180 -Sometimes very different components may share some common functionality. These are sometimes called [cross-cutting concerns](https://en.wikipedia.org/wiki/Cross-cutting_concern). [`createReactClass`](/react/docs/top-level-api.html#react.createclass) lets you use a legacy `mixins` system for that.
180 +Sometimes very different components may share some common functionality. These are sometimes called [cross-cutting concerns](https://en.wikipedia.org/wiki/Cross-cutting_concern). [`createReactClass`](/docs/top-level-api.html#react.createclass) lets you use a legacy `mixins` system for that.
181
182 -One common use case is a component wanting to update itself on a time interval. It's easy to use `setInterval()`, but it's important to cancel your interval when you don't need it anymore to save memory. React provides [lifecycle methods](/react/docs/working-with-the-browser.html#component-lifecycle) that let you know when a component is about to be created or destroyed. Let's create a simple mixin that uses these methods to provide an easy `setInterval()` function that will automatically get cleaned up when your component is destroyed.
182 +One common use case is a component wanting to update itself on a time interval. It's easy to use `setInterval()`, but it's important to cancel your interval when you don't need it anymore to save memory. React provides [lifecycle methods](/docs/working-with-the-browser.html#component-lifecycle) that let you know when a component is about to be created or destroyed. Let's create a simple mixin that uses these methods to provide an easy `setInterval()` function that will automatically get cleaned up when your component is destroyed.
183
184 ```javascript
185 var SetIntervalMixin = {
docs/docs/reference-dom-elements.md
+1 -1
@@ -98,7 +98,7 @@ The `value` attribute is supported by `<input>` and `<textarea>` components. You
98
99 ## All Supported HTML Attributes
100
101 -As of React 16, any standard [or custom](/react/blog/2017/09/08/dom-attributes-in-react-16.html) DOM attributes are fully supported.
101 +As of React 16, any standard [or custom](/blog/2017/09/08/dom-attributes-in-react-16.html) DOM attributes are fully supported.
102
103 React has always provided a JavaScript-centric API to the DOM. Since React components often take both custom and DOM-related props, React uses the `camelCase` convention just like the DOM APIs:
104
docs/docs/reference-events.md
+2 -2
@@ -6,7 +6,7 @@ layout: docs
6 category: Reference
7 ---
8
9 -This reference guide documents the `SyntheticEvent` wrapper that forms part of React's Event System. See the [Handling Events](/react/docs/handling-events.html) guide to learn more.
9 +This reference guide documents the `SyntheticEvent` wrapper that forms part of React's Event System. See the [Handling Events](/docs/handling-events.html) guide to learn more.
10
11 ## Overview
12
@@ -176,7 +176,7 @@ Event names:
176 onChange onInput onInvalid onSubmit
177 ```
178
179 -For more information about the onChange event, see [Forms](/react/docs/forms.html).
179 +For more information about the onChange event, see [Forms](/docs/forms.html).
180
181 * * *
182
docs/docs/reference-pure-render-mixin.md
+2 -2
@@ -8,7 +8,7 @@ permalink: docs/pure-render-mixin.html
8
9 > Note
10
11 -> The `PureRenderMixin` mixin predates `React.PureComponent`. This reference doc is provided for legacy purposes, and you should consider using [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) instead.
11 +> The `PureRenderMixin` mixin predates `React.PureComponent`. This reference doc is provided for legacy purposes, and you should consider using [`React.PureComponent`](/docs/react-api.html#react.purecomponent) instead.
12
13 If your React component's render function renders the same result given the same props and state, you can use this mixin for a performance boost in some cases.
14
@@ -42,7 +42,7 @@ class FooComponent extends React.Component {
42 }
43 ```
44
45 -Under the hood, the mixin implements [shouldComponentUpdate](/react/docs/component-specs.html#updating-shouldcomponentupdate), in which it compares the current props and state with the next ones and returns `false` if the equalities pass.
45 +Under the hood, the mixin implements [shouldComponentUpdate](/docs/component-specs.html#updating-shouldcomponentupdate), in which it compares the current props and state with the next ones and returns `false` if the equalities pass.
46
47 > Note:
48 >
docs/docs/reference-react-component.md
+11 -11
@@ -15,7 +15,7 @@ redirect_from:
15 - "tips/use-react-with-other-libraries.html"
16 ---
17
18 -[Components](/react/docs/components-and-props.html) let you split the UI into independent, reusable pieces, and think about each piece in isolation. `React.Component` is provided by [`React`](/react/docs/react-api.html).
18 +[Components](/docs/components-and-props.html) let you split the UI into independent, reusable pieces, and think about each piece in isolation. `React.Component` is provided by [`React`](/docs/react-api.html).
19
20 ## Overview
21
@@ -31,7 +31,7 @@ class Greeting extends React.Component {
31 }
32 ```
33
34 -If you don't use ES6 yet, you may use the [`create-react-class`](/react/docs/react-api.html#createclass) module instead. Take a look at [Using React without ES6](/react/docs/react-without-es6.html) to learn more.
34 +If you don't use ES6 yet, you may use the [`create-react-class`](/docs/react-api.html#createclass) module instead. Take a look at [Using React without ES6](/docs/react-without-es6.html) to learn more.
35
36 ### The Component Lifecycle
37
@@ -93,9 +93,9 @@ The `render()` method is required.
93
94 When called, it should examine `this.props` and `this.state` and return one of the following types:
95
96 -- **React elements.** Typically created via JSX. A element can either be a representation of a native DOM component (`<div />`), or a user-defined composite component (`<MyComponent />`).
96 +- **React elements.** Typically created via JSX. An element can either be a representation of a native DOM component (`<div />`), or a user-defined composite component (`<MyComponent />`).
97 - **String and numbers.** These are rendered as text nodes in the DOM.
98 -- **Portals**. Created with [`ReactDOM.createPortal`](/react/docs/portals.html).
98 +- **Portals**. Created with [`ReactDOM.createPortal`](/docs/portals.html).
99 - `null`. Renders nothing.
100 - **Booleans**. Render nothing. (Mostly exists to support `return test && <Child />` pattern, where `test` is boolean.)
101
@@ -123,7 +123,7 @@ render() {
123
124 > Note:
125 >
126 -> Don't forget to [add keys](https://facebook.github.io/react/docs/lists-and-keys.html#keys) to elements in a fragment to avoid the key warning.
126 +> Don't forget to [add keys](/docs/lists-and-keys.html#keys) to elements in a fragment to avoid the key warning.
127
128 * * *
129
@@ -148,7 +148,7 @@ constructor(props) {
148 }
149 ```
150
151 -Beware of this pattern, as state won't be up-to-date with any props update. Instead of syncing props to state, you often want to [lift the state up](/react/docs/lifting-state-up.html).
151 +Beware of this pattern, as state won't be up-to-date with any props update. Instead of syncing props to state, you often want to [lift the state up](/docs/lifting-state-up.html).
152
153 If you "fork" props by using them for state, you might also want to implement [`componentWillReceiveProps(nextProps)`](#componentwillreceiveprops) to keep the state up-to-date with them. But lifting state up is often easier and less bug-prone.
154
@@ -204,7 +204,7 @@ Returning `false` does not prevent child components from re-rendering when *thei
204
205 Currently, if `shouldComponentUpdate()` returns `false`, then [`componentWillUpdate()`](#componentwillupdate), [`render()`](#render), and [`componentDidUpdate()`](#componentdidupdate) will not be invoked. Note that in the future React may treat `shouldComponentUpdate()` as a hint rather than a strict directive, and returning `false` may still result in a re-rendering of the component.
206
207 -If you determine a specific component is slow after profiling, you may change it to inherit from [`React.PureComponent`](/react/docs/react-api.html#react.purecomponent) which implements `shouldComponentUpdate()` with a shallow prop and state comparison. If you are confident you want to write it by hand, you may compare `this.props` with `nextProps` and `this.state` with `nextState` and return `false` to tell React the update can be skipped.
207 +If you determine a specific component is slow after profiling, you may change it to inherit from [`React.PureComponent`](/docs/react-api.html#react.purecomponent) which implements `shouldComponentUpdate()` with a shallow prop and state comparison. If you are confident you want to write it by hand, you may compare `this.props` with `nextProps` and `this.state` with `nextState` and return `false` to tell React the update can be skipped.
208
209 * * *
210
@@ -313,7 +313,7 @@ this.setState((prevState) => {
313 });
314 ```
315
316 -For more detail, see the [State and Lifecycle guide](/react/docs/state-and-lifecycle.html).
316 +For more detail, see the [State and Lifecycle guide](/docs/state-and-lifecycle.html).
317
318 * * *
319
@@ -367,7 +367,7 @@ If `props.color` is set to null, it will remain null:
367
368 ### `displayName`
369
370 -The `displayName` string is used in debugging messages. Usually, you don't need to set it explicitly because it's inferred from the name of the function or class that defines the component. You might want to set it explicitly if you want to display a different name for debugging purposes or when you create a higher-order component, see [Wrap the Display Name for Easy Debugging](/react/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging) for details.
370 +The `displayName` string is used in debugging messages. Usually, you don't need to set it explicitly because it's inferred from the name of the function or class that defines the component. You might want to set it explicitly if you want to display a different name for debugging purposes or when you create a higher-order component, see [Wrap the Display Name for Easy Debugging](/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging) for details.
371
372 * * *
373
@@ -375,7 +375,7 @@ The `displayName` string is used in debugging messages. Usually, you don't need
375
376 ### `props`
377
378 -`this.props` contains the props that were defined by the caller of this component. See [Components and Props](/react/docs/components-and-props.html) for an introduction to props.
378 +`this.props` contains the props that were defined by the caller of this component. See [Components and Props](/docs/components-and-props.html) for an introduction to props.
379
380 In particular, `this.props.children` is a special prop, typically defined by the child tags in the JSX expression rather than in the tag itself.
381
@@ -385,6 +385,6 @@ The state contains data specific to this component that may change over time. Th
385
386 If you don't use it in `render()`, it shouldn't be in the state. For example, you can put timer IDs directly on the instance.
387
388 -See [State and Lifecycle](/react/docs/state-and-lifecycle.html) for more information about the state.
388 +See [State and Lifecycle](/docs/state-and-lifecycle.html) for more information about the state.
389
390 Never mutate `this.state` directly, as calling `setState()` afterwards may replace the mutation you made. Treat `this.state` as if it were immutable.
docs/docs/reference-react-dom-server.md
+1 -1
@@ -39,7 +39,7 @@ ReactDOMServer.renderToString(element)
39
40 Render a React element to its initial HTML. React will return an HTML string. You can use this method to generate HTML on the server and send the markup down on the initial request for faster page loads and to allow search engines to crawl your pages for SEO purposes.
41
42 -If you call [`ReactDOM.hydrate()`](/react/docs/react-dom.html#hydrate) on a node that already has this server-rendered markup, React will preserve it and only attach event handlers, allowing you to have a very performant first-load experience.
42 +If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that already has this server-rendered markup, React will preserve it and only attach event handlers, allowing you to have a very performant first-load experience.
43
44 * * *
45
docs/docs/reference-react-dom.md
+4 -4
@@ -40,7 +40,7 @@ ReactDOM.render(
40 )
41 ```
42
43 -Render a React element into the DOM in the supplied `container` and return a [reference](/react/docs/more-about-refs.html) to the component (or returns `null` for [stateless components](/react/docs/components-and-props.html#functional-and-class-components)).
43 +Render a React element into the DOM in the supplied `container` and return a [reference](/docs/more-about-refs.html) to the component (or returns `null` for [stateless components](/docs/components-and-props.html#functional-and-class-components)).
44
45 If the React element was previously rendered into `container`, this will perform an update on it and only mutate the DOM as necessary to reflect the latest React element.
46
@@ -54,7 +54,7 @@ If the optional callback is provided, it will be executed after the component is
54 >
55 > `ReactDOM.render()` currently returns a reference to the root `ReactComponent` instance. However, using this return value is legacy
56 > and should be avoided because future versions of React may render components asynchronously in some cases. If you need a reference to the root `ReactComponent` instance, the preferred solution is to attach a
57 -> [callback ref](/react/docs/more-about-refs.html#the-ref-callback-attribute) to the root element.
57 +> [callback ref](/docs/more-about-refs.html#the-ref-callback-attribute) to the root element.
58 >
59 > Using `ReactDOM.render()` to hydrate a server-rendered container is deprecated and will be removed in React 17. Use [`hydrate()`](#hydrate) instead.
60
@@ -70,7 +70,7 @@ ReactDOM.hydrate(
70 )
71 ```
72
73 -Same as [`render()`](#render), but is used to hydrate a container whose HTML contents were rendered by [`ReactDOMServer`](/react/docs/react-dom-server.html). React will attach event listeners while preserving as much of the existing DOM as possible. For best results, you should try to render the same content on the server as on the client, with as few differences as possible.
73 +Same as [`render()`](#render), but is used to hydrate a container whose HTML contents were rendered by [`ReactDOMServer`](/docs/react-dom-server.html). React will attach event listeners while preserving as much of the existing DOM as possible. For best results, you should try to render the same content on the server as on the client, with as few differences as possible.
74
75 * * *
76
@@ -107,4 +107,4 @@ If this component has been mounted into the DOM, this returns the corresponding
107 ReactDOM.createPortal(child, container)
108 ```
109
110 -Creates a portal. Portals provide a way to [render children into a DOM node that exists outside the hierarchy of the DOM component](/react/docs/portals.html).
\ No newline at end of file
110 +Creates a portal. Portals provide a way to [render children into a DOM node that exists outside the hierarchy of the DOM component](/docs/portals.html).
\ No newline at end of file
docs/docs/reference-react.md
+10 -10
@@ -25,16 +25,16 @@ React components let you split the UI into independent, reusable pieces, and thi
25 - [`React.Component`](#react.component)
26 - [`React.PureComponent`](#react.purecomponent)
27
28 -If you don't use ES6 classes, you may use the `create-react-class` module instead. See [Using React without ES6](/react/docs/react-without-es6.html) for more information.
28 +If you don't use ES6 classes, you may use the `create-react-class` module instead. See [Using React without ES6](/docs/react-without-es6.html) for more information.
29
30 ### Creating React Elements
31
32 -We recommend [using JSX](/react/docs/introducing-jsx.html) to describe what your UI should look like. Each JSX element is just syntactic sugar for calling [`React.createElement()`](#createelement). You will not typically invoke the following methods directly if you are using JSX.
32 +We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI should look like. Each JSX element is just syntactic sugar for calling [`React.createElement()`](#createelement). You will not typically invoke the following methods directly if you are using JSX.
33
34 - [`createElement()`](#createelement)
35 - [`createFactory()`](#createfactory)
36
37 -See [Using React without JSX](/react/docs/react-without-jsx.html) for more information.
37 +See [Using React without JSX](/docs/react-without-jsx.html) for more information.
38
39 ### Transforming Elements
40
@@ -60,19 +60,19 @@ class Greeting extends React.Component {
60 }
61 ```
62
63 -See the [React.Component API Reference](/react/docs/react-component.html) for a list of methods and properties related to the base `React.Component` class.
63 +See the [React.Component API Reference](/docs/react-component.html) for a list of methods and properties related to the base `React.Component` class.
64
65 * * *
66
67 ### `React.PureComponent`
68
69 -`React.PureComponent` is exactly like [`React.Component`](#react.component) but implements [`shouldComponentUpdate()`](/react/docs/react-component.html#shouldcomponentupdate) with a shallow prop and state comparison.
69 +`React.PureComponent` is exactly like [`React.Component`](#react.component) but implements [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate) with a shallow prop and state comparison.
70
71 If your React component's `render()` function renders the same result given the same props and state, you can use `React.PureComponent` for a performance boost in some cases.
72
73 > Note
74
75 -> `React.PureComponent`'s `shouldComponentUpdate()` only shallowly compares the objects. If these contain complex data structures, it may produce false-negatives for deeper differences. Only extend `PureComponent` when you expect to have simple props and state, or use [`forceUpdate()`](/react/docs/react-component.html#forceupdate) when you know deep data structures have changed. Or, consider using [immutable objects](https://facebook.github.io/immutable-js/) to facilitate fast comparisons of nested data.
75 +> `React.PureComponent`'s `shouldComponentUpdate()` only shallowly compares the objects. If these contain complex data structures, it may produce false-negatives for deeper differences. Only extend `PureComponent` when you expect to have simple props and state, or use [`forceUpdate()`](/docs/react-component.html#forceupdate) when you know deep data structures have changed. Or, consider using [immutable objects](https://facebook.github.io/immutable-js/) to facilitate fast comparisons of nested data.
76 >
77 > Furthermore, `React.PureComponent`'s `shouldComponentUpdate()` skips prop updates for the whole component subtree. Make sure all the children components are also "pure".
78
@@ -88,11 +88,11 @@ React.createElement(
88 )
89 ```
90
91 -Create and return a new [React element](/react/docs/rendering-elements.html) of the given type. The type argument can be either a tag name string (such as `'div'` or `'span'`), or a [React component](/react/docs/components-and-props.html) type (a class or a function).
91 +Create and return a new [React element](/docs/rendering-elements.html) of the given type. The type argument can be either a tag name string (such as `'div'` or `'span'`), or a [React component](/docs/components-and-props.html) type (a class or a function).
92
93 Convenience wrappers around `React.createElement()` for DOM components are provided by `React.DOM`. For example, `React.DOM.a(...)` is a convenience wrapper for `React.createElement('a', ...)`. They are considered legacy, and we encourage you to either use JSX or use `React.createElement()` directly instead.
94
95 -Code written with [JSX](/react/docs/introducing-jsx.html) will be converted to use `React.createElement()`. You will not typically invoke `React.createElement()` directly if you are using JSX. See [React Without JSX](/react/docs/react-without-jsx.html) to learn more.
95 +Code written with [JSX](/docs/introducing-jsx.html) will be converted to use `React.createElement()`. You will not typically invoke `React.createElement()` directly if you are using JSX. See [React Without JSX](/docs/react-without-jsx.html) to learn more.
96
97 * * *
98
@@ -126,11 +126,11 @@ This API was introduced as a replacement of the deprecated `React.addons.cloneWi
126 React.createFactory(type)
127 ```
128
129 -Return a function that produces React elements of a given type. Like [`React.createElement()`](#createElement), the type argument can be either a tag name string (such as `'div'` or `'span'`), or a [React component](/react/docs/components-and-props.html) type (a class or a function).
129 +Return a function that produces React elements of a given type. Like [`React.createElement()`](#createElement), the type argument can be either a tag name string (such as `'div'` or `'span'`), or a [React component](/docs/components-and-props.html) type (a class or a function).
130
131 This helper is considered legacy, and we encourage you to either use JSX or use `React.createElement()` directly instead.
132
133 -You will not typically invoke `React.createFactory()` directly if you are using JSX. See [React Without JSX](/react/docs/react-without-jsx.html) to learn more.
133 +You will not typically invoke `React.createFactory()` directly if you are using JSX. See [React Without JSX](/docs/react-without-jsx.html) to learn more.
134
135 * * *
136
docs/docs/reference-test-renderer.md
+36 -36
@@ -69,30 +69,30 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
69
70 ### TestRenderer
71
72 -* [`TestRenderer.create()`](#TestRenderer.create)
72 +* [`TestRenderer.create()`](#testrenderercreate)
73
74 ### TestRenderer instance
75
76 -* [`testRenderer.toJSON()`](#testRenderer.toJSON)
77 -* [`testRenderer.toTree()`](#testRenderer.toTree)
78 -* [`testRenderer.update()`](#testRenderer.update)
79 -* [`testRenderer.unmount()`](#testRenderer.unmount)
80 -* [`testRenderer.getInstance()`](#testRenderer.getInstance)
81 -* [`testRenderer.root`](#testRenderer.root)
76 +* [`testRenderer.toJSON()`](#testrenderertojson)
77 +* [`testRenderer.toTree()`](#testrenderertotree)
78 +* [`testRenderer.update()`](#testrendererupdate)
79 +* [`testRenderer.unmount()`](#testrendererunmount)
80 +* [`testRenderer.getInstance()`](#testrenderergetinstance)
81 +* [`testRenderer.root`](#testrendererroot)
82
83 ### TestInstance
84
85 -* [`testInstance.find()`](#testInstance.find)
86 -* [`testInstance.findByType()`](#testInstance.findByType)
87 -* [`testInstance.findByProps()`](#testInstance.findByProps)
88 -* [`testInstance.findAll()`](#testInstance.findAll)
89 -* [`testInstance.findAllByType()`](#testInstance.findAllByType)
90 -* [`testInstance.findAllByProps()`](#testInstance.findAllByProps)
91 -* [`testInstance.instance`](#testInstance.instance)
92 -* [`testInstance.type`](#testInstance.type)
93 -* [`testInstance.props`](#testInstance.props)
94 -* [`testInstance.parent`](#testInstance.parent)
95 -* [`testInstance.children`](#testInstance.children)
85 +* [`testInstance.find()`](#testinstancefind)
86 +* [`testInstance.findByType()`](#testinstancefindbytype)
87 +* [`testInstance.findByProps()`](#testinstancefindbyprops)
88 +* [`testInstance.findAll()`](#testinstancefindall)
89 +* [`testInstance.findAllByType()`](#testinstancefindallbytype)
90 +* [`testInstance.findAllByProps()`](#testinstancefindallbyprops)
91 +* [`testInstance.instance`](#testinstanceinstance)
92 +* [`testInstance.type`](#testinstancetype)
93 +* [`testInstance.props`](#testinstanceprops)
94 +* [`testInstance.parent`](#testinstanceparent)
95 +* [`testInstance.children`](#testinstancechildren)
96
97 ## Reference
98
@@ -102,7 +102,7 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
102 TestRenderer.create(element, options);
103 ```
104
105 -Create a TestRenderer instance with a passed element, which has the following methods and properties.
105 +Create a `TestRenderer` instance with the passed React element. It doesn't use the real DOM, but it still fully renders the component tree into memory so you can make assertions about it. The returned instance has the following methods and properties.
106
107 ### `testRenderer.toJSON()`
108
@@ -110,7 +110,7 @@ Create a TestRenderer instance with a passed element, which has the following me
110 testRenderer.toJSON()
111 ```
112
113 -Return a JSON object representing the element.
113 +Return an object representing the rendered tree. This tree only contains the platform-specific nodes like `<div>` or `<View>` and their props, but doesn't contain any user-written components. This is handy for [snapshot testing](http://facebook.github.io/jest/docs/en/snapshot-testing.html#snapshot-testing-with-jest).
114
115 ### `testRenderer.toTree()`
116
@@ -118,7 +118,7 @@ Return a JSON object representing the element.
118 testRenderer.toTree()
119 ```
120
121 -Return a tree object representing the element.
121 +Return an object representing the rendered tree. Unlike `toJSON()`, the representation is more detailed than the one provided by `toJSON()`, and includes the user-written components. You probably don't need this method unless you're writing your own assertion library on top of the test rendererer.
122
123 ### `testRenderer.update()`
124
@@ -126,7 +126,7 @@ Return a tree object representing the element.
126 testRenderer.update(element)
127 ```
128
129 -Update the element with a passed element.
129 +Re-render the in-memory tree with a new root element. This simulates a React update at the root. If the new element has the same type and key as the previous element, the tree will be updated; otherwise, it will re-mount a new tree.
130
131 ### `testRenderer.unmount()`
132
@@ -134,7 +134,7 @@ Update the element with a passed element.
134 testRenderer.unmount()
135 ```
136
137 -Unmount the element from testRenderer.
137 +Unmount the in-memory tree, triggering the appropriate lifecycle events.
138
139 ### `testRenderer.getInstance()`
140
@@ -142,7 +142,7 @@ Unmount the element from testRenderer.
142 testRenderer.getInstance()
143 ```
144
145 -Return a root container instance.
145 +Return the instance corresponding to the root element, if available. This will not work if the root element is a functional component because they don't have instances.
146
147 ### `testRenderer.root`
148
@@ -150,7 +150,7 @@ Return a root container instance.
150 testRenderer.root
151 ```
152
153 -`root` is a testInstance, which has the following methods and properties.
153 +Returns the root "test instance" object that is useful for making assertions about specific nodes in the tree. You can use it to find other "test instances" deeper below.
154
155 ### `testInstance.find()`
156
@@ -158,7 +158,7 @@ testRenderer.root
158 testInstance.find(test)
159 ```
160
161 -Find a descendant testInstance that `test(testInstance)` is `true`.
161 +Find the first descendant test instance for which `test(testInstance)` returns `true`.
162
163 ### `testInstance.findByType()`
164
@@ -166,7 +166,7 @@ Find a descendant testInstance that `test(testInstance)` is `true`.
166 testInstance.findByType(type)
167 ```
168
169 -Find a descendant testInstance that matches the provided type.
169 +Find the first descendant test instance with the provided `type`.
170
171 ### `testInstance.findByProps()`
172
@@ -174,7 +174,7 @@ Find a descendant testInstance that matches the provided type.
174 testInstance.findByProps(props)
175 ```
176
177 -Find a descendant testInstance that matches the provided props.
177 +Find the first descendant test instance with the provided `props`.
178
179 ### `testInstance.findAll()`
180
@@ -182,7 +182,7 @@ Find a descendant testInstance that matches the provided props.
182 testInstance.findAll(test)
183 ```
184
185 -Find all descendant testInstances that `test(testInstance)` is `true`.
185 +Find all descendant test instances for which `test(testInstance)` returns `true`.
186
187 ### `testInstance.findAllByType()`
188
@@ -190,7 +190,7 @@ Find all descendant testInstances that `test(testInstance)` is `true`.
190 testInstance.findAllByType(type)
191 ```
192
193 -Find all descendant testInstances that matches the provided type.
193 +Find all descendant test instances with the provided `type`.
194
195 ### `testInstance.findAllByProps()`
196
@@ -198,7 +198,7 @@ Find all descendant testInstances that matches the provided type.
198 testInstance.findAllByProps(props)
199 ```
200
201 -Find all descendant testInstances that matches the provided props.
201 +Find all descendant test instances with the provided `props`.
202
203 ### `testInstance.instance`
204
@@ -206,7 +206,7 @@ Find all descendant testInstances that matches the provided props.
206 testInstance.instance
207 ```
208
209 -`instance` is a component instance of the testInstance.
209 +The component instance corresponding to this test instance. It is only available for class components, as functional components don't have instances. It matches the `this` value inside the given component.
210
211 ### `testInstance.type`
212
@@ -214,7 +214,7 @@ testInstance.instance
214 testInstance.type
215 ```
216
217 -`type` is a Component type of the testInstance.
217 +The component type corresponding to this test instance. For example, a `<Button />` component has a type of `Button`.
218
219 ### `testInstance.props`
220
@@ -222,7 +222,7 @@ testInstance.type
222 testInstance.props
223 ```
224
225 -`props` is a props object of the testInstance.
225 +The props corresponding to this test instance. For example, a `<Button size="small />` component has `{size: 'small'}` as props.
226
227 ### `testInstance.parent`
228
@@ -230,7 +230,7 @@ testInstance.props
230 testInstance.parent
231 ```
232
233 -`parent` is a parent testInstance.
233 +The parent test instance of this test instance.
234
235 ### `testInstance.children`
236
@@ -238,7 +238,7 @@ testInstance.parent
238 testInstance.children
239 ```
240
241 -`children` is children of the testInstance.
241 +The children test instances of this test instance.
242
243 ## Ideas
244
docs/docs/refs-and-the-dom.md
+3 -3
@@ -11,7 +11,7 @@ redirect_from:
11 permalink: docs/refs-and-the-dom.html
12 ---
13
14 -In the typical React dataflow, [props](/react/docs/components-and-props.html) are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.
14 +In the typical React dataflow, [props](/docs/components-and-props.html) are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.
15
16 ### When to Use Refs
17
@@ -27,7 +27,7 @@ For example, instead of exposing `open()` and `close()` methods on a `Dialog` co
27
28 ### Don't Overuse Refs
29
30 -Your first inclination may be to use refs to "make things happen" in your app. If this is the case, take a moment and think more critically about where state should be owned in the component hierarchy. Often, it becomes clear that the proper place to "own" that state is at a higher level in the hierarchy. See the [Lifting State Up](/react/docs/lifting-state-up.html) guide for examples of this.
30 +Your first inclination may be to use refs to "make things happen" in your app. If this is the case, take a moment and think more critically about where state should be owned in the component hierarchy. Often, it becomes clear that the proper place to "own" that state is at a higher level in the hierarchy. See the [Lifting State Up](/docs/lifting-state-up.html) guide for examples of this.
31
32 ### Adding a Ref to a DOM Element
33
@@ -214,7 +214,7 @@ class Grandparent extends React.Component {
214
215 Here, the ref callback is first specified by `Grandparent`. It is passed to the `Parent` as a regular prop called `inputRef`, and the `Parent` passes it to the `CustomTextInput` as a prop too. Finally, the `CustomTextInput` reads the `inputRef` prop and attaches the passed function as a `ref` attribute to the `<input>`. As a result, `this.inputElement` in `Grandparent` will be set to the DOM node corresponding to the `<input>` element in the `CustomTextInput`.
216
217 -All things considered, we advise against exposing DOM nodes whenever possible, but this can be a useful escape hatch. Note that this approach requires you to add some code to the child component. If you have absolutely no control over the child component implementation, your last option is to use [`findDOMNode()`](/react/docs/react-dom.html#finddomnode), but it is discouraged.
217 +All things considered, we advise against exposing DOM nodes whenever possible, but this can be a useful escape hatch. Note that this approach requires you to add some code to the child component. If you have absolutely no control over the child component implementation, your last option is to use [`findDOMNode()`](/docs/react-dom.html#finddomnode), but it is discouraged.
218
219 ### Legacy API: String Refs
220
docs/docs/rendering-elements.md
+3 -3
@@ -19,7 +19,7 @@ Unlike browser DOM elements, React elements are plain objects, and are cheap to
19
20 >**Note:**
21 >
22 ->One might confuse elements with a more widely known concept of "components". We will introduce components in the [next section](/react/docs/components-and-props.html). Elements are what components are "made of", and we encourage you to read this section before jumping ahead.
22 +>One might confuse elements with a more widely known concept of "components". We will introduce components in the [next section](/docs/components-and-props.html). Elements are what components are "made of", and we encourage you to read this section before jumping ahead.
23
24 ## Rendering an Element into the DOM
25
@@ -78,7 +78,7 @@ It calls `ReactDOM.render()` every second from a [`setInterval()`](https://devel
78
79 >**Note:**
80 >
81 ->In practice, most React apps only call `ReactDOM.render()` once. In the next sections we will learn how such code gets encapsulated into [stateful components](/react/docs/state-and-lifecycle.html).
81 +>In practice, most React apps only call `ReactDOM.render()` once. In the next sections we will learn how such code gets encapsulated into [stateful components](/docs/state-and-lifecycle.html).
82 >
83 >We recommend that you don't skip topics because they build on each other.
84
@@ -88,7 +88,7 @@ React DOM compares the element and its children to the previous one, and only ap
88
89 You can verify by inspecting the [last example](http://codepen.io/gaearon/pen/gwoJZk?editors=0010) with the browser tools:
90
91 -![DOM inspector showing granular updates](/react/img/docs/granular-dom-updates.gif)
91 +![DOM inspector showing granular updates](../img/docs/granular-dom-updates.gif)
92
93 Even though we create an element describing the whole UI tree on every tick, only the text node whose contents has changed gets updated by React DOM.
94
docs/docs/state-and-lifecycle.md
+2 -2
@@ -7,7 +7,7 @@ prev: components-and-props.html
7 next: handling-events.html
8 ---
9
10 -Consider the ticking clock example from [one of the previous sections](/react/docs/rendering-elements.html#updating-the-rendered-element).
10 +Consider the ticking clock example from [one of the previous sections](/docs/rendering-elements.html#updating-the-rendered-element).
11
12 So far we have only learned one way to update the UI.
13
@@ -73,7 +73,7 @@ To implement this, we need to add "state" to the `Clock` component.
73
74 State is similar to props, but it is private and fully controlled by the component.
75
76 -We [mentioned before](/react/docs/components-and-props.html#functional-and-class-components) that components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.
76 +We [mentioned before](/docs/components-and-props.html#functional-and-class-components) that components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.
77
78 ## Converting a Function to a Class
79
docs/docs/thinking-in-react.md
+4 -4
@@ -16,7 +16,7 @@ One of the many great parts of React is how it makes you think about apps as you
16
17 Imagine that we already have a JSON API and a mock from our designer. The mock looks like this:
18
19 -![Mockup](/react/img/blog/thinking-in-react-mock.png)
19 +![Mockup](../img/blog/thinking-in-react-mock.png)
20
21 Our JSON API returns some data that looks like this:
22
@@ -39,7 +39,7 @@ But how do you know what should be its own component? Just use the same techniqu
39
40 Since you're often displaying a JSON data model to a user, you'll find that if your model was built correctly, your UI (and therefore your component structure) will map nicely. That's because UI and data models tend to adhere to the same *information architecture*, which means the work of separating your UI into components is often trivial. Just break it up into components that represent exactly one piece of your data model.
41
42 -![Component diagram](/react/img/blog/thinking-in-react-components.png)
42 +![Component diagram](../img/blog/thinking-in-react-components.png)
43
44 You'll see here that we have five components in our simple app. We've italicized the data each component represents.
45
@@ -72,11 +72,11 @@ You can build top-down or bottom-up. That is, you can either start with building
72
73 At the end of this step, you'll have a library of reusable components that render your data model. The components will only have `render()` methods since this is a static version of your app. The component at the top of the hierarchy (`FilterableProductTable`) will take your data model as a prop. If you make a change to your underlying data model and call `ReactDOM.render()` again, the UI will be updated. It's easy to see how your UI is updated and where to make changes since there's nothing complicated going on. React's **one-way data flow** (also called *one-way binding*) keeps everything modular and fast.
74
75 -Simply refer to the [React docs](/react/docs/) if you need help executing this step.
75 +Simply refer to the [React docs](/docs/) if you need help executing this step.
76
77 ### A Brief Interlude: Props vs State
78
79 -There are two types of "model" data in React: props and state. It's important to understand the distinction between the two; skim [the official React docs](/react/docs/interactivity-and-dynamic-uis.html) if you aren't sure what the difference is.
79 +There are two types of "model" data in React: props and state. It's important to understand the distinction between the two; skim [the official React docs](/docs/interactivity-and-dynamic-uis.html) if you aren't sure what the difference is.
80
81 ## Step 3: Identify The Minimal (but complete) Representation Of UI State
82
docs/docs/typechecking-with-proptypes.md
+1 -1
@@ -10,7 +10,7 @@ redirect_from:
10 >
11 > `React.PropTypes` has moved into a different package since React v15.5. Please use [the `prop-types` library instead](https://www.npmjs.com/package/prop-types).
12 >
13 ->We provide [a codemod script](/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
13 +>We provide [a codemod script](/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
14
15 As your app grows, you can catch a lot of bugs with typechecking. For some applications, you can use JavaScript extensions like [Flow](https://flowtype.org/) or [TypeScript](https://www.typescriptlang.org/) to typecheck your whole application. But even if you don't use those, React has some built-in typechecking abilities. To run typechecking on the props for a component, you can assign the special `propTypes` property:
16
docs/docs/uncontrolled-components.md
+2 -2
@@ -4,9 +4,9 @@ title: Uncontrolled Components
4 permalink: docs/uncontrolled-components.html
5 ---
6
7 -In most cases, we recommend using [controlled components](/react/docs/forms.html) to implement forms. In a controlled component, form data is handled by a React component. The alternative is uncontrolled components, where form data is handled by the DOM itself.
7 +In most cases, we recommend using [controlled components](/docs/forms.html) to implement forms. In a controlled component, form data is handled by a React component. The alternative is uncontrolled components, where form data is handled by the DOM itself.
8
9 -To write an uncontrolled component, instead of writing an event handler for every state update, you can [use a ref](/react/docs/refs-and-the-dom.html) to get form values from the DOM.
9 +To write an uncontrolled component, instead of writing an event handler for every state update, you can [use a ref](/docs/refs-and-the-dom.html) to get form values from the DOM.
10
11 For example, this code accepts a single name in an uncontrolled component:
12
docs/index.md
+4 -10
@@ -35,9 +35,10 @@ id: home
35 `render()` via `this.props`.
36 </p>
37 <p>
38 - <strong>JSX is optional and not required to use React.</strong> Try
39 - clicking on "Compiled JS" to see the raw JavaScript code produced by
40 - the JSX compiler.
38 + <strong>JSX is optional and not required to use React.</strong>
39 + Try the
40 + <a href="http://babeljs.io/repl#?babili=false&browsers=&build=&builtIns=false&code_lz=MYGwhgzhAEASCmIQHsCy8pgOb2vAHgC7wB2AJjAErxjCEB0AwsgLYAOyJph0A3gFABIAE6ky8YQAoAlHyEj4hAK7CS0ADxkAlgDcAfAiTI-hABZaI9NsORtLJMC3gBfdQHpt-gNxDn_P_zUtIQAIgDyqPSi5BKS6oYo6Jg40A5OALwARCHwOlokmdBuegA00CzISiSEAHLI4tJeQA&debug=false&circleciRepo=&evaluate=false&lineWrap=false&presets=react&prettier=true&targets=&version=6.26.0">Babel REPL</a>
41 + to see the raw JavaScript code produced by the JSX compilation step.
42 </p>
43 <div id="helloExample"></div>
44 </div>
@@ -78,10 +79,3 @@ id: home
79 <script src="/react/js/examples/todo.js"></script>
80 <script src="/react/js/examples/markdown.js"></script>
81 </section>
81 -<hr class="home-divider" />
82 -<section class="home-bottom-section">
83 - <div class="buttons-unit">
84 - <a href="docs/hello-world.html" class="button">Get Started</a>
85 - <a href="tutorial/tutorial.html" class="button">Take the Tutorial</a>
86 - </div>
87 -</section>
docs/tutorial/tutorial.md
+9 -9
@@ -53,7 +53,7 @@ This is more work, but lets you work from the comfort of your editor.
53 If you want to do it, here are the steps to follow:
54
55 1. Make sure you have a recent version of [Node.js](https://nodejs.org/en/) installed.
56 -2. Follow the [installation instructions](/react/docs/installation.html#creating-a-new-application) to create a new project.
56 +2. Follow the [installation instructions](/docs/installation.html#creating-a-new-application) to create a new project.
57 3. Delete all files in the `src/` folder of the new project.
58 4. Add a file named `index.css` in the `src/` folder with [this CSS code](https://codepen.io/gaearon/pen/oWWQNa?editors=0100).
59 5. Add a file named `index.js` in the `src/` folder with [this JS code](https://codepen.io/gaearon/pen/oWWQNa?editors=0010).
@@ -71,7 +71,7 @@ We recommend following [these instructions](http://babeljs.io/docs/editors) to c
71
72 ### Help, I'm Stuck!
73
74 -If you get stuck, check out the [community support resources](https://facebook.github.io/react/community/support.html). In particular, [Reactiflux chat](/react/community/support.html#reactiflux-chat) is a great way to get quick help. If you don't get a good answer anywhere, please file an issue, and we'll help you out.
74 +If you get stuck, check out the [community support resources](https://facebook.github.io/react/community/support.html). In particular, [Reactiflux chat](/community/support.html#reactiflux-chat) is a great way to get quick help. If you don't get a good answer anywhere, please file an issue, and we'll help you out.
75
76 With this out of the way, let's get started!
77
@@ -117,7 +117,7 @@ return React.createElement('div', {className: 'shopping-list'},
117
118 [See full expanded version.](https://babeljs.io/repl/#?babili=false&evaluate=false&lineWrap=false&presets=react&targets=&browsers=&builtIns=false&debug=false&experimental=false&loose=false&spec=false&playground=true&code=%3Cdiv%20className%3D%22shopping-list%22%3E%0A%20%20%3Ch1%3EShopping%20List%20for%20%7Bprops.name%7D%3C%2Fh1%3E%0A%20%20%3Cul%3E%0A%20%20%20%20%3Cli%3EInstagram%3C%2Fli%3E%0A%20%20%20%20%3Cli%3EWhatsApp%3C%2Fli%3E%0A%20%20%20%20%3Cli%3EOculus%3C%2Fli%3E%0A%20%20%3C%2Ful%3E%0A%3C%2Fdiv%3E)
119
120 -If you're curious, `createElement()` is described in more detail in the [API reference](/react/docs/react-api.html#createelement), but we won't be using it directly in this tutorial. Instead, we will keep using JSX.
120 +If you're curious, `createElement()` is described in more detail in the [API reference](/docs/react-api.html#createelement), but we won't be using it directly in this tutorial. Instead, we will keep using JSX.
121
122 You can put any JavaScript expression within braces inside JSX. Each React element is a real JavaScript object that you can store in a variable or pass around your program.
123
@@ -166,11 +166,11 @@ class Square extends React.Component {
166
167 Before:
168
169 -![React Devtools](/react/img/tutorial/tictac-empty.png)
169 +![React Devtools](../img/tutorial/tictac-empty.png)
170
171 After: You should see a number in each square in the rendered output.
172
173 -![React Devtools](/react/img/tutorial/tictac-numbers.png)
173 +![React Devtools](../img/tutorial/tictac-numbers.png)
174
175 [View the current code.](https://codepen.io/gaearon/pen/aWWQOG?editors=0010)
176
@@ -255,7 +255,7 @@ If you click on any square, an X should show up in it.
255
256 The React Devtools extension for [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) lets you inspect a React component tree in your browser devtools.
257
258 -<img src="/react/img/tutorial/devtools.png" alt="React Devtools" style="max-width: 100%">
258 +<img src="../img/tutorial/devtools.png" alt="React Devtools" style="max-width: 100%">
259
260 It lets you inspect the props and state of any of the components in your tree.
261
@@ -450,7 +450,7 @@ class Board extends React.Component {
450
451 [View the current code.](https://codepen.io/gaearon/pen/ybbQJX?editors=0010)
452
453 -We call `.slice()` to copy the `squares` array instead of mutating the existing array. Jump ahead a [section](/react/tutorial/tutorial.html#why-immutability-is-important) to learn why immutability is important.
453 +We call `.slice()` to copy the `squares` array instead of mutating the existing array. Jump ahead a [section](/tutorial/tutorial.html#why-immutability-is-important) to learn why immutability is important.
454
455 Now you should be able to click in squares to fill them again, but the state is stored in the Board component instead of in each Square, which lets us continue building the game. Note how whenever Board's state changes, the Square components rerender automatically.
456
@@ -496,7 +496,7 @@ Determining how an immutable object has changed is considerably easier. If the o
496
497 The biggest benefit of immutability in React comes when you build simple _pure components_. Since immutable data can more easily determine if changes have been made it also helps to determine when a component requires being re-rendered.
498
499 -To learn more about `shouldComponentUpdate()` and how you can build *pure components* take a look at [Optimizing Performance](/react/docs/optimizing-performance.html#examples).
499 +To learn more about `shouldComponentUpdate()` and how you can build *pure components* take a look at [Optimizing Performance](/docs/optimizing-performance.html#examples).
500
501 ### Functional Components
502
@@ -1096,4 +1096,4 @@ If you have extra time or want to practice your new skills, here are some ideas
1096 4. Add a toggle button that lets you sort the moves in either ascending or descending order.
1097 5. When someone wins, highlight the three squares that caused the win.
1098
1099 -Throughout this tutorial, we have touched on a number of React concepts including elements, components, props, and state. For a more in-depth explanation for each of these topics, check out [the rest of the documentation](/react/docs/hello-world.html). To learn more about defining components, check out the [`React.Component` API reference](/react/docs/react-component.html).
1099 +Throughout this tutorial, we have touched on a number of React concepts including elements, components, props, and state. For a more in-depth explanation for each of these topics, check out [the rest of the documentation](/docs/hello-world.html). To learn more about defining components, check out the [`React.Component` API reference](/docs/react-component.html).
docs/warnings/dont-call-proptypes.md
+1 -1
@@ -8,7 +8,7 @@ permalink: warnings/dont-call-proptypes.html
8 >
9 > `React.PropTypes` has moved into a different package since React v15.5. Please use [the `prop-types` library instead](https://www.npmjs.com/package/prop-types).
10 >
11 ->We provide [a codemod script](/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
11 +>We provide [a codemod script](/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
12
13 In a future major release of React, the code that implements PropType validation functions will be stripped in production. Once this happens, any code that calls these functions manually (that isn't stripped in production) will throw an error.
14
docs/warnings/legacy-factories.md
+1 -1
@@ -16,7 +16,7 @@ function render() {
16
17 ## JSX
18
19 -React components can no longer be called directly like this. Instead [you can use JSX](/react/docs/jsx-in-depth.html).
19 +React components can no longer be called directly like this. Instead [you can use JSX](/docs/jsx-in-depth.html).
20
21 ```javascript
22 var React = require('react');
docs/warnings/unknown-prop.md
+1 -1
@@ -13,7 +13,7 @@ There are a couple of likely reasons this warning could be appearing:
13
14 3. React does not yet recognize the attribute you specified. This will likely be fixed in a future version of React. However, React currently strips all unknown attributes, so specifying them in your React app will not cause them to be rendered.
15
16 -4. You are using a React component without an upper case. React interprets it as a DOM tag because [React JSX transform uses the upper vs. lower case convention to distinguish between user-defined components and DOM tags](/react/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized).
16 +4. You are using a React component without an upper case. React interprets it as a DOM tag because [React JSX transform uses the upper vs. lower case convention to distinguish between user-defined components and DOM tags](/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized).
17
18 ---
19
flow-typed/hex2rgba.js new
+3
@@ -0,0 +1,3 @@
1 +declare module 'hex2rgba' {
2 + declare module.exports: (hex : string, alpha? : number) => string;
3 +}
package.json
+1
@@ -98,6 +98,7 @@
98 },
99 "scripts": {
100 "build": "npm run version-check && node scripts/rollup/build.js",
101 + "build:docs": "cd www && yarn install && yarn build",
102 "linc": "git diff --name-only --diff-filter=ACMRTUB `git merge-base HEAD master` | grep '\\.js$' | xargs eslint --",
103 "lint": "node ./scripts/tasks/eslint.js",
104 "postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json",
scripts/prettier/index.js
+1 -1
@@ -33,7 +33,7 @@ const defaultOptions = {
33 };
34 const config = {
35 default: {
36 - patterns: ['src/**/*.js'],
36 + patterns: ['src/**/*.js', 'www/**/*.js'],
37 ignore: ['**/third_party/**', '**/node_modules/**'],
38 },
39 scripts: {
src/shared/ReactInstanceType.js
+3 -5
@@ -1,10 +1,8 @@
1 /**
2 - * Copyright 2016-present, Facebook, Inc.
3 - * All rights reserved.
2 + * Copyright (c) 2016-present, Facebook, Inc.
3 *
5 - * This source code is licensed under the BSD-style license found in the
6 - * LICENSE file in the root directory of this source tree. An additional grant
7 - * of patent rights can be found in the PATENTS file in the same directory.
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 *
7 * @providesModule ReactInstanceType
8 * @flow
www/.babelrc new
+4
@@ -0,0 +1,4 @@
1 +{
2 + "presets": ['react', 'es2015', 'stage-1'],
3 + "plugins": ['add-module-exports']
4 +}
www/.gitignore new
+6
@@ -0,0 +1,6 @@
1 +node_modules/
2 +public
3 +.gatsby-context.js
4 +.DS_Store
5 +.intermediate-representation/
6 +.cache/
www/.travis.yml new
+39
@@ -0,0 +1,39 @@
1 +# back to language cpp to try to bypass osx node failure
2 +language: cpp
3 +sudo: false
4 +env:
5 + - export NODE_VERSION="0.10"
6 + - export NODE_VERSION="0.12"
7 + - export NODE_VERSION="4"
8 + - export NODE_VERSION="5"
9 +os:
10 + - linux
11 + - osx
12 +# pre-install to bring in the correct version of node via nvm
13 +before_install:
14 + - git submodule update --init --recursive
15 + - git clone https://github.com/creationix/nvm.git ./.nvm
16 + - source ./.nvm/nvm.sh
17 + - nvm install $NODE_VERSION
18 + - nvm use $NODE_VERSION
19 + - npm config set python `which python`
20 + - if [ $TRAVIS_OS_NAME == "linux" ]; then
21 + export CC="gcc-4.8";
22 + export CXX="g++-4.8";
23 + export LINK="gcc-4.8";
24 + export LINKXX="g++-4.8";
25 + fi
26 + - gcc --version
27 + - g++ --version
28 +# node 4 depends on gcc 4.8
29 +addons:
30 + apt:
31 + sources:
32 + - ubuntu-toolchain-r-test
33 + packages:
34 + - g++-4.8
35 + - gcc-4.8
36 +# script needed to test, because defaults don't work on osx
37 +script:
38 + - npm install
39 + - npm run lint
www/README.md new
+16
@@ -0,0 +1,16 @@
1 +# React documentation site
2 +
3 +To get setup:
4 +```
5 +yarn install
6 +```
7 +
8 +To run the dev server:
9 +```
10 +yarn run dev
11 +```
12 +
13 +To clear the local cache:
14 +```
15 +yarn run reset
16 +```
\ No newline at end of file
www/gatsby-config.js new
+79
@@ -0,0 +1,79 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +module.exports = {
13 + siteMetadata: {
14 + title: 'React: A JavaScript library for building user interfaces',
15 + },
16 + mapping: {
17 + 'MarkdownRemark.frontmatter.author': 'AuthorYaml',
18 + },
19 + plugins: [
20 + 'gatsby-transformer-authors-yaml',
21 + 'gatsby-plugin-netlify',
22 + 'gatsby-plugin-glamor',
23 + 'gatsby-plugin-react-next',
24 + {
25 + resolve: 'gatsby-plugin-nprogress',
26 + options: {
27 + color: '#61dafb',
28 + },
29 + },
30 + {
31 + resolve: 'gatsby-source-filesystem',
32 + options: {
33 + path: `${__dirname}/src/pages`,
34 + name: 'pages',
35 + },
36 + },
37 + {
38 + /* Docs, Tutorial, Community, and Blog section content comes from here. */
39 + resolve: 'gatsby-source-filesystem',
40 + options: {
41 + name: 'packages',
42 + path: `${__dirname}/../docs/`,
43 + },
44 + },
45 + {
46 + resolve: 'gatsby-transformer-remark',
47 + options: {
48 + plugins: [
49 + 'gatsby-remark-responsive-iframe',
50 + {
51 + resolve: 'gatsby-remark-images',
52 + options: {
53 + maxWidth: 840,
54 + },
55 + },
56 + 'gatsby-remark-autolink-headers',
57 + 'gatsby-remark-use-jsx',
58 + {
59 + resolve: 'gatsby-remark-prismjs',
60 + options: {
61 + classPrefix: 'gatsby-code-',
62 + },
63 + },
64 + 'gatsby-remark-copy-linked-files',
65 + 'gatsby-remark-smartypants',
66 + ],
67 + },
68 + },
69 + 'gatsby-transformer-sharp',
70 + 'gatsby-plugin-sharp',
71 + {
72 + resolve: 'gatsby-plugin-google-analytics',
73 + options: {
74 + trackingId: 'UA-41298772-1',
75 + },
76 + },
77 + 'gatsby-plugin-react-helmet',
78 + ],
79 +};
www/gatsby-node.js new
+247
@@ -0,0 +1,247 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +const {resolve} = require('path');
13 +const webpack = require('webpack');
14 +
15 +exports.modifyWebpackConfig = ({config, stage}) => {
16 + // See https://github.com/FormidableLabs/react-live/issues/5
17 + config.plugin('ignore', () => new webpack.IgnorePlugin(/^(xor|props)$/));
18 +
19 + config.merge({
20 + resolve: {
21 + root: resolve(__dirname, './src'),
22 + extensions: ['', '.js', '.jsx', '.json'],
23 + },
24 + });
25 + return config;
26 +};
27 +
28 +exports.createPages = async ({graphql, boundActionCreators}) => {
29 + const {createPage, createRedirect} = boundActionCreators;
30 +
31 + const blogTemplate = resolve('./src/templates/blog.js');
32 + const communityTemplate = resolve('./src/templates/community.js');
33 + const docsTemplate = resolve('./src/templates/docs.js');
34 + const tutorialTemplate = resolve('./src/templates/tutorial.js');
35 + const homeTemplate = resolve('./src/templates/home.js');
36 + const installationTemplate = resolve('./src/templates/installation.js');
37 +
38 + const allMarkdown = await graphql(
39 + `
40 + {
41 + allMarkdownRemark(limit: 1000) {
42 + edges {
43 + node {
44 + fields {
45 + redirect
46 + slug
47 + }
48 + }
49 + }
50 + }
51 + }
52 + `,
53 + );
54 +
55 + if (allMarkdown.errors) {
56 + console.error(allMarkdown.errors);
57 +
58 + throw Error(allMarkdown.errors);
59 + }
60 +
61 + allMarkdown.data.allMarkdownRemark.edges.forEach(edge => {
62 + const slug = edge.node.fields.slug;
63 +
64 + if (slug === '/index.html') {
65 + createPage({
66 + path: '/',
67 + component: homeTemplate,
68 + context: {
69 + slug,
70 + },
71 + });
72 + } else if (slug === 'docs/installation.html') {
73 + createPage({
74 + path: slug,
75 + component: installationTemplate,
76 + context: {
77 + slug,
78 + },
79 + });
80 + } else if (slug === 'docs/error-decoder.html') {
81 + // No-op so far as markdown templates go.
82 + // Error codes are managed by a page (which gets created automatically).
83 + } else if (
84 + slug.includes('blog/') ||
85 + slug.includes('community/') ||
86 + slug.includes('contributing/') ||
87 + slug.includes('docs/') ||
88 + slug.includes('tutorial/')
89 + ) {
90 + let template;
91 + if (slug.includes('blog/')) {
92 + template = blogTemplate;
93 + } else if (slug.includes('community/')) {
94 + template = communityTemplate;
95 + } else if (slug.includes('contributing/') || slug.includes('docs/')) {
96 + template = docsTemplate;
97 + } else if (slug.includes('tutorial/')) {
98 + template = tutorialTemplate;
99 + }
100 +
101 + const createArticlePage = path =>
102 + createPage({
103 + path: path,
104 + component: template,
105 + context: {
106 + slug,
107 + },
108 + });
109 +
110 + // Register primary URL.
111 + createArticlePage(slug);
112 +
113 + // Register redirects as well if the markdown specifies them.
114 + if (edge.node.fields.redirect) {
115 + let redirect = JSON.parse(edge.node.fields.redirect);
116 + if (!Array.isArray(redirect)) {
117 + redirect = [redirect];
118 + }
119 +
120 + redirect.forEach(fromPath =>
121 + createRedirect({
122 + fromPath: `/${fromPath}`,
123 + redirectInBrowser: true,
124 + toPath: `/${slug}`,
125 + }),
126 + );
127 + }
128 + }
129 + });
130 +
131 + const newestBlogEntry = await graphql(
132 + `
133 + {
134 + allMarkdownRemark(
135 + limit: 1,
136 + filter: { id: { regex: "/_posts/" } }
137 + sort: { fields: [fields___date], order: DESC }
138 + ) {
139 + edges {
140 + node {
141 + fields {
142 + slug
143 + }
144 + }
145 + }
146 + }
147 + }
148 + `,
149 + );
150 + const newestBlogNode = newestBlogEntry.data.allMarkdownRemark.edges[0].node;
151 +
152 + // Blog landing page should always show the most recent blog entry.
153 + createRedirect({
154 + fromPath: '/blog/',
155 + redirectInBrowser: true,
156 + toPath: newestBlogNode.fields.slug,
157 + });
158 +};
159 +
160 +// Parse date information out of blog post filename.
161 +const BLOG_POST_FILENAME_REGEX = /([0-9]+)\-([0-9]+)\-([0-9]+)\-(.+)\.md$/;
162 +
163 +// Add custom fields to MarkdownRemark nodes.
164 +exports.onCreateNode = ({node, boundActionCreators, getNode}) => {
165 + const {createNodeField} = boundActionCreators;
166 +
167 + switch (node.internal.type) {
168 + case 'MarkdownRemark':
169 + const {permalink, redirect_from} = node.frontmatter;
170 + const {relativePath} = getNode(node.parent);
171 +
172 + let slug = permalink;
173 +
174 + if (!slug) {
175 + if (relativePath.includes('_posts')) {
176 + // Blog posts don't have embedded permalinks.
177 + // Their slugs follow a pattern: /blog/<year>/<month>/<day>/<slug>.html
178 + // The date portion comes from the file name: <date>-<title>.md
179 + const match = BLOG_POST_FILENAME_REGEX.exec(relativePath);
180 + const year = match[1];
181 + const month = match[2];
182 + const day = match[3];
183 + const filename = match[4];
184 +
185 + slug = `/blog/${year}/${month}/${day}/${filename}.html`;
186 +
187 + const date = new Date(year, month - 1, day);
188 +
189 + // Blog posts are sorted by date and display the date in their header.
190 + createNodeField({
191 + node,
192 + name: 'date',
193 + value: date.toJSON(),
194 + });
195 + }
196 + }
197 +
198 + if (!slug) {
199 + slug = `/${relativePath.replace('.md', '.html')}`;
200 +
201 + // This should (probably) only happen for the index.md,
202 + // But let's log it in case it happens for other files also.
203 + console.warn(
204 + `Warning: No slug found for "${relativePath}". Falling back to default "${slug}".`,
205 + );
206 + }
207 +
208 + // Used to generate URL to view this content.
209 + createNodeField({
210 + node,
211 + name: 'slug',
212 + value: slug,
213 + });
214 +
215 + // Used to generate a GitHub edit link.
216 + createNodeField({
217 + node,
218 + name: 'path',
219 + value: relativePath,
220 + });
221 +
222 + // Used by createPages() above to register redirects.
223 + createNodeField({
224 + node,
225 + name: 'redirect',
226 + value: redirect_from ? JSON.stringify(redirect_from) : '',
227 + });
228 + return;
229 + }
230 +};
231 +
232 +exports.onCreatePage = async ({page, boundActionCreators}) => {
233 + const {createPage} = boundActionCreators;
234 +
235 + return new Promise(resolvePromise => {
236 + // page.matchPath is a special key that's used for matching pages only on the client.
237 + // Explicitly wire up all error code wildcard matches to redirect to the error code page.
238 + if (page.path.includes('docs/error-decoder.html')) {
239 + page.matchPath = 'docs/error-decoder:path?';
240 + page.context.slug = 'docs/error-decoder.html';
241 +
242 + createPage(page);
243 + }
244 +
245 + resolvePromise();
246 + });
247 +};
www/package.json new
+68
@@ -0,0 +1,68 @@
1 +{
2 + "name": "react-website",
3 + "description": "React website",
4 + "version": "0.0.1",
5 + "bugs": {
6 + "url": "https://github.com/facebook/react"
7 + },
8 + "resolutions": {
9 + "gatsby/graphql": "0.10.5",
10 + "gatsby/react": "16.0.0",
11 + "gatsby/react-dom": "16.0.0"
12 + },
13 + "dependencies": {
14 + "@gaearon/react-live": "1.7.1-with-safari-fix",
15 + "array-from": "^2.1.1",
16 + "gatsby": "^1.9.9",
17 + "gatsby-link": "^1.6.9",
18 + "gatsby-plugin-glamor": "^1.6.4",
19 + "gatsby-plugin-google-analytics": "^1.0.4",
20 + "gatsby-plugin-manifest": "^1.0.4",
21 + "gatsby-plugin-netlify": "^1.0.4",
22 + "gatsby-plugin-nprogress": "^1.0.7",
23 + "gatsby-plugin-react-helmet": "^1.0.3",
24 + "gatsby-plugin-react-next": "^1.0.3",
25 + "gatsby-plugin-sharp": "^1.6.2",
26 + "gatsby-remark-autolink-headers": "^1.4.4",
27 + "gatsby-remark-copy-linked-files": "^1.5.2",
28 + "gatsby-remark-images": "^1.5.11",
29 + "gatsby-remark-prismjs": "^1.2.1",
30 + "gatsby-remark-responsive-iframe": "^1.4.3",
31 + "gatsby-remark-smartypants": "^1.4.3",
32 + "gatsby-source-filesystem": "^1.4.4",
33 + "gatsby-transformer-remark": "^1.7.2",
34 + "gatsby-transformer-sharp": "^1.6.1",
35 + "glamor": "^2.20.40",
36 + "hex2rgba": "^0.0.1",
37 + "remarkable": "^1.7.1",
38 + "slugify": "^1.2.1",
39 + "string.prototype.includes": "^1.0.0",
40 + "string.prototype.repeat": "^0.2.0",
41 + "unist-util-visit": "^1.1.3"
42 + },
43 + "devDependencies": {
44 + "gh-pages": "^1.0.0",
45 + "rimraf": "^2.6.1"
46 + },
47 + "engines": {
48 + "node": ">=7.6.0"
49 + },
50 + "homepage": "https://facebook.github.io/react/",
51 + "keywords": [
52 + "gatsby"
53 + ],
54 + "license": "MIT",
55 + "main": "n/a",
56 + "repository": {
57 + "type": "git",
58 + "url": "git+https://github.com/facebook/react.git"
59 + },
60 + "scripts": {
61 + "dev": "gatsby develop -H 0.0.0.0",
62 + "lint": "./node_modules/.bin/eslint --ext .js,.jsx --ignore-pattern public .",
63 + "test": "echo \"Error: no test specified\" && exit 1",
64 + "build": "gatsby build",
65 + "deploy": "gatsby build --prefix-links && gh-pages -d public",
66 + "reset": "rimraf ./.cache"
67 + }
68 +}
www/plugins/gatsby-remark-use-jsx/index.js new
+22
@@ -0,0 +1,22 @@
1 +const visit = require('unist-util-visit');
2 +
3 +// Always treat JS blocks as JSX.
4 +// TODO: maybe we can just change it in Markdown in the future?
5 +module.exports = ({markdownAST}) => {
6 + visit(markdownAST, `code`, node => {
7 + if (typeof node.lang !== 'string') {
8 + return;
9 + }
10 + if (node.lang.indexOf('jsx') === 0) {
11 + // Already JSX (with optional line range).
12 + return;
13 + }
14 + // Turn JS into JSX, preserving the optional line range.
15 + if (node.lang.indexOf('js') === 0) {
16 + node.lang = 'jsx' + node.lang.substring('js'.length);
17 + }
18 + if (node.lang.indexOf('javascript') === 0) {
19 + node.lang = 'jsx' + node.lang.substring('javascript'.length);
20 + }
21 + });
22 +};
www/plugins/gatsby-remark-use-jsx/package.json new
+4
@@ -0,0 +1,4 @@
1 +{
2 + "name": "gatsby-remark-use-jsx",
3 + "version": "0.0.1"
4 +}
\ No newline at end of file
www/plugins/gatsby-transformer-authors-yaml/gatsby-node.js new
+33
@@ -0,0 +1,33 @@
1 +const readFileSync = require('fs').readFileSync;
2 +const resolve = require('path').resolve;
3 +const safeLoad = require('js-yaml').safeLoad;
4 +
5 +// TODO It would be nice to replace this plugin with gatsby-transformer-yaml
6 +// That plugin errors on some of the YML files in the docs folder though,
7 +// And doesn't currently support any options to whitelist/blacklist files.
8 +
9 +// Reads authors.yml data into GraphQL.
10 +// This is auto-linked by gatsby-config.js to blog posts.
11 +exports.sourceNodes = ({graphql, boundActionCreators}) => {
12 + const {createNode} = boundActionCreators;
13 +
14 + const path = resolve(__dirname, '../../../docs/_data/authors.yml');
15 + const file = readFileSync(path, 'utf8');
16 + const authors = safeLoad(file);
17 +
18 + // authors.yml structure is {[username: string]: {name: string, url: string}}
19 + Object.keys(authors).forEach(username => {
20 + const author = authors[username];
21 +
22 + createNode({
23 + id: username,
24 + children: [],
25 + parent: 'AUTHORS',
26 + internal: {
27 + type: 'AuthorYaml',
28 + contentDigest: JSON.stringify(author),
29 + },
30 + frontmatter: author,
31 + });
32 + });
33 +};
www/plugins/gatsby-transformer-authors-yaml/package.json new
+4
@@ -0,0 +1,4 @@
1 +{
2 + "name": "gatsby-transformer-authors-yaml",
3 + "version": "0.0.1"
4 +}
\ No newline at end of file
www/src/components/CodeEditor/CodeEditor.js new
+279
@@ -0,0 +1,279 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React, {Component} from 'react';
13 +import ReactDOM from 'react-dom';
14 +import Remarkable from 'remarkable';
15 +// TODO: switch back to the upstream version of react-live
16 +// once https://github.com/FormidableLabs/react-live/issues/37 is fixed.
17 +import {LiveProvider, LiveEditor} from '@gaearon/react-live';
18 +import {colors, media} from 'theme';
19 +import MetaTitle from 'templates/components/MetaTitle';
20 +
21 +const compile = code =>
22 + Babel.transform(code, {presets: ['es2015', 'react']}).code; // eslint-disable-line no-undef
23 +
24 +class CodeEditor extends Component {
25 + constructor(props, context) {
26 + super(props, context);
27 +
28 + this.state = this._updateState(props.code);
29 + }
30 +
31 + componentDidMount() {
32 + // Initial render() will always be a no-op,
33 + // Because the mountNode ref won't exist yet.
34 + this._render();
35 + }
36 +
37 + componentDidUpdate(prevProps, prevState) {
38 + if (prevState.compiled !== this.state.compiled) {
39 + this._render();
40 + }
41 + }
42 +
43 + render() {
44 + const {children, code} = this.props;
45 + const {error} = this.state;
46 +
47 + return (
48 + <LiveProvider code={code} mountStylesheet={false}>
49 + <div
50 + css={{
51 + [media.greaterThan('xlarge')]: {
52 + display: 'flex',
53 + flexDirection: 'row',
54 + },
55 +
56 + [media.lessThan('large')]: {
57 + display: 'block',
58 + },
59 + }}>
60 + {children &&
61 + <div
62 + css={{
63 + flex: '0 0 33%',
64 +
65 + [media.lessThan('xlarge')]: {
66 + marginBottom: 20,
67 + },
68 +
69 + '& h3': {
70 + color: colors.dark,
71 + maxWidth: '11em',
72 + paddingTop: 0,
73 + },
74 +
75 + '& p': {
76 + marginTop: 15,
77 + marginRight: 40,
78 + lineHeight: 1.7,
79 +
80 + [media.greaterThan('xlarge')]: {
81 + marginTop: 25,
82 + },
83 + },
84 + }}>
85 + {children}
86 + </div>}
87 +
88 + <div
89 + css={{
90 + [media.greaterThan('medium')]: {
91 + flex: '0 0 67%',
92 + display: 'flex',
93 + alignItems: 'stretch',
94 + flexDirection: 'row',
95 + },
96 +
97 + [media.lessThan('small')]: {
98 + display: 'block',
99 + },
100 + }}>
101 + <div
102 + css={{
103 + flex: '0 0 70%',
104 + overflow: 'hidden',
105 + borderRadius: '10px 0 0 10px',
106 +
107 + [media.lessThan('small')]: {
108 + borderRadius: '10px 10px 0 0',
109 + },
110 + }}>
111 + <div
112 + css={{
113 + padding: '0px 10px',
114 + background: colors.darker,
115 + color: colors.white,
116 + }}>
117 + <MetaTitle onDark={true}>Live JSX Editor</MetaTitle>
118 + </div>
119 + <div
120 + css={{
121 + height: '100%',
122 + width: '100%',
123 + borderRadius: '0',
124 + marginTop: '0 !important',
125 + marginLeft: '0 !important',
126 + paddingLeft: '0 !important',
127 + marginRight: '0 !important',
128 + paddingRight: '0 !important',
129 +
130 + '& pre.prism-code[contenteditable]': {
131 + maxHeight: '280px !important',
132 + outline: 0,
133 + },
134 + }}
135 + className="gatsby-highlight">
136 + <LiveEditor onChange={this._onChange} />
137 + </div>
138 + </div>
139 + {error &&
140 + <div
141 + css={{
142 + flex: '0 0 30%',
143 + overflow: 'hidden',
144 + border: `1px solid ${colors.error}`,
145 + borderRadius: '0 10px 10px 0',
146 + fontSize: 12,
147 + lineHeight: 1.5,
148 +
149 + [media.lessThan('small')]: {
150 + borderRadius: '0 0 10px 10px',
151 + },
152 + }}>
153 + <div
154 + css={{
155 + padding: '0px 10px',
156 + background: colors.error,
157 + color: colors.white,
158 + }}>
159 + <MetaTitle
160 + cssProps={{
161 + color: colors.white,
162 + }}>
163 + Error
164 + </MetaTitle>
165 + </div>
166 + <pre
167 + css={{
168 + whiteSpace: 'pre-wrap',
169 + wordBreak: 'break-word',
170 + color: colors.error,
171 + padding: 10,
172 + }}>
173 + {error.message}
174 + </pre>
175 + </div>}
176 + {!error &&
177 + <div
178 + css={{
179 + flex: '0 0 30%',
180 + overflow: 'hidden',
181 + border: `1px solid ${colors.divider}`,
182 + borderRadius: '0 10px 10px 0',
183 +
184 + [media.lessThan('small')]: {
185 + borderRadius: '0 0 10px 10px',
186 + },
187 + }}>
188 + <div
189 + css={{
190 + padding: '0 10px',
191 + backgroundColor: colors.divider,
192 + }}>
193 + <MetaTitle>Result</MetaTitle>
194 + </div>
195 + <div
196 + css={{
197 + padding: 10,
198 +
199 + '& input': {
200 + width: '100%',
201 + display: 'block',
202 + border: '1px solid #ccc', // TODO
203 + padding: 5,
204 + },
205 +
206 + '& button': {
207 + marginTop: 10,
208 + padding: '5px 10px',
209 + },
210 +
211 + '& textarea': {
212 + width: '100%',
213 + marginTop: 10,
214 + height: 60,
215 + padding: 5,
216 + },
217 + }}
218 + ref={this._setMountRef}
219 + />
220 + </div>}
221 + </div>
222 + </div>
223 + </LiveProvider>
224 + );
225 + }
226 +
227 + _render() {
228 + if (!this._mountNode) {
229 + return;
230 + }
231 +
232 + const {compiled} = this.state;
233 +
234 + try {
235 + // Example code requires React, ReactDOM, and Remarkable to be within scope.
236 + // It also requires a "mountNode" variable for ReactDOM.render()
237 + // eslint-disable-next-line no-new-func
238 + new Function('React', 'ReactDOM', 'Remarkable', 'mountNode', compiled)(
239 + React,
240 + ReactDOM,
241 + Remarkable,
242 + this._mountNode,
243 + );
244 + } catch (error) {
245 + console.error(error);
246 +
247 + this.setState({
248 + compiled: null,
249 + error,
250 + });
251 + }
252 + }
253 +
254 + _setMountRef = ref => {
255 + this._mountNode = ref;
256 + };
257 +
258 + _updateState(code) {
259 + try {
260 + return {
261 + compiled: compile(code),
262 + error: null,
263 + };
264 + } catch (error) {
265 + console.error(error);
266 +
267 + return {
268 + compiled: null,
269 + error,
270 + };
271 + }
272 + }
273 +
274 + _onChange = code => {
275 + this.setState(this._updateState(code));
276 + };
277 +}
278 +
279 +export default CodeEditor;
www/src/components/CodeEditor/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import CodeEditor from './CodeEditor';
13 +
14 +export default CodeEditor;
www/src/components/Container/Container.js new
+40
@@ -0,0 +1,40 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +
14 +import {media} from 'theme';
15 +
16 +/**
17 + * This component wraps page content sections (eg header, footer, main).
18 + * It provides consistent margin and max width behavior.
19 + */
20 +const Container = ({children}) => (
21 + <div
22 + css={{
23 + paddingLeft: 20,
24 + paddingRight: 20,
25 + marginLeft: 'auto',
26 + marginRight: 'auto',
27 +
28 + [media.greaterThan('medium')]: {
29 + width: '90%',
30 + },
31 +
32 + [media.size('xxlarge')]: {
33 + maxWidth: 1260,
34 + },
35 + }}>
36 + {children}
37 + </div>
38 +);
39 +
40 +export default Container;
www/src/components/Container/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from './Container';
13 +
14 +export default Container;
www/src/components/ErrorDecoder/ErrorDecoder.js new
+112
@@ -0,0 +1,112 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React, {Component} from 'react';
13 +
14 +const errorCodes = require('../../../../scripts/error-codes/codes.json');
15 +
16 +function replaceArgs(msg, argList) {
17 + let argIdx = 0;
18 + return msg.replace(/%s/g, function() {
19 + const arg = argList[argIdx++];
20 + return arg === undefined ? '[missing argument]' : arg;
21 + });
22 +}
23 +
24 +function urlify(str) {
25 + const urlRegex = /(https:\/\/fb\.me\/[a-z\-]+)/g;
26 +
27 + const segments = str.split(urlRegex);
28 +
29 + for (let i = 0; i < segments.length; i++) {
30 + if (i % 2 === 1) {
31 + segments[i] = (
32 + <a key={i} target="_blank" href={segments[i]}>{segments[i]}</a>
33 + );
34 + }
35 + }
36 +
37 + return segments;
38 +}
39 +
40 +// ?invariant=123&args[]=foo&args[]=bar
41 +function parseQueryString(location) {
42 + const rawQueryString = location.search.substring(1);
43 + if (!rawQueryString) {
44 + return null;
45 + }
46 +
47 + let code = '';
48 + let args = [];
49 +
50 + const queries = rawQueryString.split('&');
51 + for (let i = 0; i < queries.length; i++) {
52 + const query = decodeURIComponent(queries[i]);
53 + if (query.indexOf('invariant=') === 0) {
54 + code = query.slice(10);
55 + } else if (query.indexOf('args[]=') === 0) {
56 + args.push(query.slice(7));
57 + }
58 + }
59 +
60 + return [code, args];
61 +}
62 +
63 +function ErrorResult(props) {
64 + const code = props.code;
65 + const errorMsg = props.msg;
66 +
67 + if (!code) {
68 + return (
69 + <p>
70 + When you encounter an error,
71 + you'll receive a link to this page for that specific error and we'll show you the full error text.
72 + </p>
73 + );
74 + }
75 +
76 + return (
77 + <div>
78 + <p>The full text of the error you just encountered is:</p>
79 + <code>{urlify(errorMsg)}</code>
80 + </div>
81 + );
82 +}
83 +
84 +class ErrorDecoder extends Component {
85 + constructor(...args) {
86 + super(...args);
87 +
88 + this.state = {
89 + code: null,
90 + errorMsg: '',
91 + };
92 + }
93 +
94 + componentWillMount() {
95 + const parseResult = parseQueryString(this.props.location);
96 + if (parseResult != null) {
97 + const [code, args] = parseResult;
98 + if (errorCodes[code]) {
99 + this.setState({
100 + code: code,
101 + errorMsg: replaceArgs(errorCodes[code], args),
102 + });
103 + }
104 + }
105 + }
106 +
107 + render() {
108 + return <ErrorResult code={this.state.code} msg={this.state.errorMsg} />;
109 + }
110 +}
111 +
112 +export default ErrorDecoder;
www/src/components/ErrorDecoder/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import ErrorDecoder from './ErrorDecoder';
13 +
14 +export default ErrorDecoder;
www/src/components/Flex/Flex.js new
+45
@@ -0,0 +1,45 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import {createElement} from 'glamor/react';
13 +
14 +/**
15 + * Convenience component for declaring a flexbox layout.
16 + */
17 +const Flex = ({
18 + basis = 'auto',
19 + children,
20 + direction = 'row',
21 + grow = 0,
22 + halign = 'flex-start',
23 + shrink = 1,
24 + type = 'div',
25 + valign = 'flex-start',
26 + ...rest
27 +}) =>
28 + createElement(
29 + type,
30 + {
31 + css: {
32 + display: 'flex',
33 + flexDirection: direction,
34 + flexGrow: grow,
35 + flexShrink: shrink,
36 + flexBasis: basis,
37 + justifyContent: direction === 'row' ? halign : valign,
38 + alignItems: direction === 'row' ? valign : halign,
39 + },
40 + ...rest,
41 + },
42 + children,
43 + );
44 +
45 +export default Flex;
www/src/components/Flex/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Flex from './Flex';
13 +
14 +export default Flex;
www/src/components/Header/Header.js new
+26
@@ -0,0 +1,26 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +import {colors, fonts} from 'theme';
14 +
15 +const Header = ({children}) => (
16 + <h1
17 + css={{
18 + color: colors.dark,
19 + marginRight: '5%',
20 + ...fonts.header,
21 + }}>
22 + {children}
23 + </h1>
24 +);
25 +
26 +export default Header;
www/src/components/Header/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Header from './Header';
13 +
14 +export default Header;
www/src/components/LayoutFooter/ExternalFooterLink.js new
+39
@@ -0,0 +1,39 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +import {colors} from 'theme';
14 +import ExternalLinkSvg from 'templates/components/ExternalLinkSvg';
15 +
16 +const ExternalFooterLink = ({children, href, target}) => (
17 + <a
18 + css={{
19 + fontWeight: 300,
20 + lineHeight: 2,
21 + ':hover': {
22 + color: colors.brand,
23 + },
24 + }}
25 + href={href}
26 + target={target}>
27 + {children}
28 + <ExternalLinkSvg
29 + cssProps={{
30 + verticalAlign: -2,
31 + display: 'inline-block',
32 + marginLeft: 5,
33 + color: colors.subtle,
34 + }}
35 + />
36 + </a>
37 +);
38 +
39 +export default ExternalFooterLink;
www/src/components/LayoutFooter/Footer.js new
+188
@@ -0,0 +1,188 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import ExternalFooterLink from './ExternalFooterLink';
14 +import FooterLink from './FooterLink';
15 +import FooterNav from './FooterNav';
16 +import MetaTitle from 'templates/components/MetaTitle';
17 +import React from 'react';
18 +import {colors, media} from 'theme';
19 +
20 +import ossLogoPng from 'images/oss_logo.png';
21 +
22 +const Footer = ({layoutHasSidebar = false}) => (
23 + <footer
24 + css={{
25 + backgroundColor: colors.darker,
26 + color: colors.white,
27 + paddingTop: 10,
28 + paddingBottom: 50,
29 +
30 + [media.size('sidebarFixed')]: {
31 + paddingTop: 40,
32 + },
33 + }}>
34 + <Container>
35 + <div
36 + css={{
37 + display: 'flex',
38 + flexDirection: 'row',
39 + flexWrap: 'wrap',
40 +
41 + [media.between('small', 'medium')]: {
42 + paddingRight: layoutHasSidebar ? 240 : null,
43 + },
44 +
45 + [media.between('large', 'largerSidebar')]: {
46 + paddingRight: layoutHasSidebar ? 280 : null,
47 + },
48 + [media.between('largerSidebar', 'sidebarFixed', true)]: {
49 + paddingRight: layoutHasSidebar ? 380 : null,
50 + },
51 + }}>
52 + <div
53 + css={{
54 + flexWrap: 'wrap',
55 + display: 'flex',
56 +
57 + [media.lessThan('large')]: {
58 + width: '100%',
59 + },
60 + [media.greaterThan('xlarge')]: {
61 + width: 'calc(100% / 3 * 2)',
62 + paddingLeft: 40,
63 + },
64 + }}>
65 + <FooterNav layoutHasSidebar={layoutHasSidebar}>
66 + <MetaTitle onDark={true}>Docs</MetaTitle>
67 + <FooterLink to="/docs/hello-world.html">Quick Start</FooterLink>
68 + <FooterLink to="/docs/thinking-in-react.html">
69 + Thinking in React
70 + </FooterLink>
71 + <FooterLink to="/tutorial/tutorial.html">Tutorial</FooterLink>
72 + <FooterLink to="/docs/jsx-in-depth.html">
73 + Advanced Guides
74 + </FooterLink>
75 + </FooterNav>
76 + <FooterNav layoutHasSidebar={layoutHasSidebar}>
77 + <MetaTitle onDark={true}>Community</MetaTitle>
78 + <ExternalFooterLink
79 + href="http://stackoverflow.com/questions/tagged/reactjs"
80 + target="_blank"
81 + rel="noopener">
82 + Stack Overflow
83 + </ExternalFooterLink>
84 + <ExternalFooterLink
85 + href="https://discuss.reactjs.org"
86 + target="_blank"
87 + rel="noopener">
88 + Discussion Forum
89 + </ExternalFooterLink>
90 + <ExternalFooterLink
91 + href="https://discord.gg/0ZcbPKXt5bZjGY5n"
92 + target="_blank"
93 + rel="noopener">
94 + Reactiflux Chat
95 + </ExternalFooterLink>
96 + <ExternalFooterLink
97 + href="https://www.facebook.com/react"
98 + target="_blank"
99 + rel="noopener">
100 + Facebook
101 + </ExternalFooterLink>
102 + <ExternalFooterLink
103 + href="https://twitter.com/reactjs"
104 + target="_blank"
105 + rel="noopener">
106 + Twitter
107 + </ExternalFooterLink>
108 + </FooterNav>
109 + <FooterNav layoutHasSidebar={layoutHasSidebar}>
110 + <MetaTitle onDark={true}>Resources</MetaTitle>
111 + <FooterLink to="/community/conferences.html">
112 + Conferences
113 + </FooterLink>
114 + <FooterLink to="/community/videos.html">Videos</FooterLink>
115 + <ExternalFooterLink
116 + href="https://github.com/facebook/react/wiki/Examples"
117 + target="_blank"
118 + rel="noopener">
119 + Examples
120 + </ExternalFooterLink>
121 + <ExternalFooterLink
122 + href="https://github.com/facebook/react/wiki/Complementary-Tools"
123 + target="_blank"
124 + rel="noopener">
125 + Complementary Tools
126 + </ExternalFooterLink>
127 + </FooterNav>
128 + <FooterNav layoutHasSidebar={layoutHasSidebar}>
129 + <MetaTitle onDark={true}>More</MetaTitle>
130 + <FooterLink to="/blog/">Blog</FooterLink>
131 + <ExternalFooterLink
132 + href="https://github.com/facebook/react"
133 + target="_blank">
134 + GitHub
135 + </ExternalFooterLink>
136 + <ExternalFooterLink
137 + href="http://facebook.github.io/react-native/"
138 + target="_blank">
139 + React Native
140 + </ExternalFooterLink>
141 + <FooterLink to="/acknowledgements.html">
142 + Acknowledgements
143 + </FooterLink>
144 + </FooterNav>
145 + </div>
146 + <section
147 + css={{
148 + paddingTop: 40,
149 + display: 'block !important', // Override 'Installation' <style> specifics
150 +
151 + [media.greaterThan('xlarge')]: {
152 + width: 'calc(100% / 3)',
153 + order: -1,
154 + },
155 + [media.greaterThan('large')]: {
156 + order: -1,
157 + width: layoutHasSidebar ? null : 'calc(100% / 3)',
158 + },
159 + [media.lessThan('large')]: {
160 + textAlign: 'center',
161 + width: '100%',
162 + paddingTop: 40,
163 + },
164 + }}>
165 + <a href="https://code.facebook.com/projects/" target="_blank">
166 + <img
167 + alt="Facebook Open Source"
168 + css={{
169 + maxWidth: 160,
170 + height: 'auto',
171 + }}
172 + src={ossLogoPng}
173 + />
174 + </a>
175 + <p
176 + css={{
177 + color: colors.subtleOnDark,
178 + paddingTop: 15,
179 + }}>
180 + Copyright © 2017 Facebook Inc.
181 + </p>
182 + </section>
183 + </div>
184 + </Container>
185 + </footer>
186 +);
187 +
188 +export default Footer;
www/src/components/LayoutFooter/FooterLink.js new
+31
@@ -0,0 +1,31 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Link from 'gatsby-link';
13 +import React from 'react';
14 +import {colors} from 'theme';
15 +
16 +const FooterLink = ({children, target, to}) => (
17 + <Link
18 + css={{
19 + fontWeight: 300,
20 + lineHeight: 2,
21 + ':hover': {
22 + color: colors.brand,
23 + },
24 + }}
25 + to={to}
26 + target={target}>
27 + {children}
28 + </Link>
29 +);
30 +
31 +export default FooterLink;
www/src/components/LayoutFooter/FooterNav.js new
+39
@@ -0,0 +1,39 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +import {media} from 'theme';
14 +
15 +const FooterNav = ({children, title, layoutHasSidebar = false}) => (
16 + <div
17 + css={{
18 + display: 'flex',
19 + flexDirection: 'column',
20 + alignItems: 'flex-start',
21 + width: '50%',
22 + paddingTop: 40,
23 +
24 + [media.size('sidebarFixed')]: {
25 + paddingTop: 0,
26 + width: '25%',
27 + },
28 + }}>
29 + <div
30 + css={{
31 + display: 'inline-flex',
32 + flexDirection: 'column',
33 + }}>
34 + {children}
35 + </div>
36 + </div>
37 +);
38 +
39 +export default FooterNav;
www/src/components/LayoutFooter/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Footer from './Footer';
13 +
14 +export default Footer;
www/src/components/LayoutHeader/Header.js new
+246
@@ -0,0 +1,246 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import HeaderLink from './HeaderLink';
14 +import Link from 'gatsby-link';
15 +import React from 'react';
16 +import {colors, fonts, media} from 'theme';
17 +import ExternalLinkSvg from 'templates/components/ExternalLinkSvg';
18 +
19 +import logoSvg from 'icons/logo.svg';
20 +
21 +// Note this version may point to an alpha/beta/next release.
22 +// This is how the previous Jekyll site determined version though.
23 +const {version} = require('../../../../package.json');
24 +
25 +const Header = ({location}) => (
26 + <header
27 + css={{
28 + backgroundColor: colors.darker,
29 + color: colors.white,
30 + position: 'fixed',
31 + zIndex: 1,
32 + width: '100%',
33 + top: 0,
34 + left: 0,
35 + }}>
36 + <Container>
37 + <div
38 + css={{
39 + display: 'flex',
40 + flexDirection: 'row',
41 + alignItems: 'center',
42 + height: 60,
43 + [media.between('small', 'large')]: {
44 + height: 50,
45 + },
46 + [media.lessThan('small')]: {
47 + height: 40,
48 + },
49 + }}>
50 + <Link
51 + css={{
52 + display: 'flex',
53 + marginRight: 10,
54 + height: '100%',
55 + alignItems: 'center',
56 +
57 + [media.greaterThan('small')]: {
58 + width: 'calc(100% / 6)',
59 + },
60 + [media.lessThan('small')]: {
61 + flex: '0 0 auto',
62 + },
63 + }}
64 + to="/">
65 + <img src={logoSvg} alt="" height="20" />
66 + <span
67 + css={{
68 + color: colors.brand,
69 + marginLeft: 10,
70 + fontWeight: 700,
71 + fontSize: 20,
72 + lineHeight: '20px',
73 + [media.lessThan('large')]: {
74 + fontSize: 16,
75 + marginTop: 1,
76 + },
77 + [media.lessThan('small')]: {
78 + // Visually hidden
79 + position: 'absolute',
80 + overflow: 'hidden',
81 + clip: 'rect(0 0 0 0)',
82 + height: 1,
83 + width: 1,
84 + margin: -1,
85 + padding: 0,
86 + border: 0,
87 + },
88 + }}>
89 + React
90 + </span>
91 + </Link>
92 +
93 + <nav
94 + css={{
95 + display: 'flex',
96 + flexDirection: 'row',
97 + alignItems: 'stretch',
98 + overflowX: 'auto',
99 + overflowY: 'hidden',
100 + WebkitOverflowScrolling: 'touch',
101 + height: '100%',
102 + width: '60%',
103 + [media.size('xsmall')]: {
104 + flexGrow: '1',
105 + width: 'auto',
106 + },
107 + [media.greaterThan('xlarge')]: {
108 + width: null,
109 + },
110 + [media.lessThan('small')]: {
111 + maskImage: 'linear-gradient(to right, transparent, black 20px, black 90%, transparent)',
112 + },
113 + }}>
114 + <HeaderLink
115 + isActive={location.pathname.includes('/docs/')}
116 + title="Docs"
117 + to="/docs/hello-world.html"
118 + />
119 + <HeaderLink
120 + isActive={location.pathname.includes('/tutorial/')}
121 + title="Tutorial"
122 + to="/tutorial/tutorial.html"
123 + />
124 + <HeaderLink
125 + isActive={location.pathname.includes('/community/')}
126 + title="Community"
127 + to="/community/support.html"
128 + />
129 + <HeaderLink
130 + isActive={location.pathname.includes('/blog')}
131 + title="Blog"
132 + to="/blog/"
133 + />
134 + </nav>
135 +
136 + <form
137 + css={{
138 + display: 'flex',
139 + flex: '0 0 auto',
140 + flexDirection: 'row',
141 + alignItems: 'center',
142 + paddingLeft: '0.5rem',
143 +
144 + [media.lessThan('small')]: {
145 + justifyContent: 'flex-end',
146 + },
147 + [media.lessThan('large')]: {
148 + marginRight: 10,
149 + },
150 + [media.between('small', 'medium')]: {
151 + width: 'calc(100% / 3)',
152 + },
153 + [media.between('medium', 'xlarge')]: {
154 + width: 'calc(100% / 6)',
155 + },
156 + [media.greaterThan('small')]: {
157 + minWidth: 120,
158 + },
159 + }}>
160 + <input
161 + css={{
162 + appearance: 'none',
163 + background: 'transparent',
164 + border: 0,
165 + color: colors.white,
166 + fontSize: 18,
167 + fontFamily: 'inherit',
168 + position: 'relative',
169 + paddingLeft: '24px',
170 + backgroundImage: 'url(/search.svg)',
171 + backgroundSize: '16px 16px',
172 + backgroundRepeat: 'no-repeat',
173 + backgroundPositionY: 'center',
174 + backgroundPositionX: 'left',
175 +
176 + [media.lessThan('large')]: {
177 + fontSize: 16,
178 + },
179 + [media.greaterThan('small')]: {
180 + width: '100%',
181 + },
182 + [media.lessThan('small')]: {
183 + width: '16px',
184 + transition: 'width 0.2s ease, padding 0.2s ease',
185 + paddingLeft: '16px',
186 +
187 + ':focus': {
188 + paddingLeft: '24px',
189 + width: '8rem',
190 + outline: 'none',
191 + },
192 + },
193 + }}
194 + id="algolia-doc-search"
195 + type="search"
196 + placeholder="Search docs"
197 + />
198 + </form>
199 +
200 + <div
201 + css={{
202 + [media.lessThan('medium')]: {
203 + display: 'none',
204 + },
205 + [media.greaterThan('large')]: {
206 + width: 'calc(100% / 6)',
207 + },
208 + }}>
209 + <a
210 + css={{
211 + padding: '5px 10px',
212 + backgroundColor: colors.lighter,
213 + borderRadius: 15,
214 + whiteSpace: 'nowrap',
215 + ...fonts.small,
216 + }}
217 + href="https://github.com/facebook/react/releases">
218 + v{version}
219 + </a>
220 + <a
221 + css={{
222 + padding: '5px 10px',
223 + marginLeft: 10,
224 + whiteSpace: 'nowrap',
225 + ...fonts.small,
226 + ':hover': {
227 + color: colors.brand,
228 + },
229 + }}
230 + href="https://github.com/facebook/react/">
231 + GitHub
232 + <ExternalLinkSvg
233 + cssProps={{
234 + marginLeft: 5,
235 + verticalAlign: -2,
236 + color: colors.subtle,
237 + }}
238 + />
239 + </a>
240 + </div>
241 + </div>
242 + </Container>
243 + </header>
244 +);
245 +
246 +export default Header;
www/src/components/LayoutHeader/HeaderLink.js new
+75
@@ -0,0 +1,75 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Link from 'gatsby-link';
13 +import React from 'react';
14 +import {colors, media} from 'theme';
15 +
16 +const HeaderLink = ({isActive, title, to}) => (
17 + <Link css={[style, isActive && activeStyle]} to={to}>
18 + {title}
19 + {isActive && <span css={activeAfterStyle} />}
20 + </Link>
21 +);
22 +
23 +const style = {
24 + display: 'flex',
25 + flexDirection: 'row',
26 + alignItems: 'center',
27 + color: colors.white,
28 + transition: 'color 0.2s ease-out',
29 + paddingLeft: 15,
30 + paddingRight: 15,
31 + fontWeight: 300,
32 +
33 + [media.size('xsmall')]: {
34 + paddingLeft: 8,
35 + paddingRight: 8,
36 + },
37 +
38 + [media.between('small', 'medium')]: {
39 + paddingLeft: 10,
40 + paddingRight: 10,
41 + },
42 +
43 + [media.greaterThan('xlarge')]: {
44 + paddingLeft: 20,
45 + paddingRight: 20,
46 + fontSize: 18,
47 + fontWeight: 400,
48 +
49 + ':hover': {
50 + color: colors.brand,
51 + },
52 + },
53 +};
54 +
55 +const activeStyle = {
56 + color: colors.brand,
57 +
58 + [media.greaterThan('small')]: {
59 + position: 'relative',
60 + },
61 +};
62 +
63 +const activeAfterStyle = {
64 + [media.greaterThan('small')]: {
65 + position: 'absolute',
66 + bottom: -1,
67 + height: 4,
68 + background: colors.brand,
69 + left: 0,
70 + right: 0,
71 + zIndex: 1,
72 + },
73 +};
74 +
75 +export default HeaderLink;
www/src/components/LayoutHeader/SearchSvg.js new
+33
@@ -0,0 +1,33 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +
14 +const SearchSvg = () => (
15 + <svg
16 + alt="Search"
17 + height="16"
18 + xmlns="http://www.w3.org/2000/svg"
19 + viewBox="0 0 16 16">
20 + <title>Search</title>
21 + <path
22 + d={`
23 + M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,
24 + 0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,
25 + 0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,
26 + 4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z
27 + `}
28 + fill="currentColor"
29 + />
30 + </svg>
31 +);
32 +
33 +export default SearchSvg;
www/src/components/LayoutHeader/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Header from './Header';
13 +
14 +export default Header;
www/src/components/MarkdownHeader/MarkdownHeader.js new
+43
@@ -0,0 +1,43 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Flex from 'components/Flex';
13 +import PropTypes from 'prop-types';
14 +import React from 'react';
15 +import {colors, fonts, media} from 'theme';
16 +
17 +const MarkdownHeader = ({title}) => (
18 + <Flex type="header" halign="space-between" valign="baseline">
19 + <h1
20 + css={{
21 + color: colors.dark,
22 + marginBottom: 0,
23 + marginTop: 40,
24 + ...fonts.header,
25 +
26 + [media.size('medium')]: {
27 + marginTop: 60,
28 + },
29 +
30 + [media.greaterThan('large')]: {
31 + marginTop: 80,
32 + },
33 + }}>
34 + {title}
35 + </h1>
36 + </Flex>
37 +);
38 +
39 +MarkdownHeader.propTypes = {
40 + title: PropTypes.string.isRequired,
41 +};
42 +
43 +export default MarkdownHeader;
www/src/components/MarkdownHeader/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import MarkdownHeader from './MarkdownHeader';
13 +
14 +export default MarkdownHeader;
www/src/components/MarkdownPage/MarkdownPage.js new
+134
@@ -0,0 +1,134 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import Flex from 'components/Flex';
14 +import MarkdownHeader from 'components/MarkdownHeader';
15 +import NavigationFooter from 'templates/components/NavigationFooter';
16 +import PropTypes from 'prop-types';
17 +import React from 'react';
18 +import StickyResponsiveSidebar from 'components/StickyResponsiveSidebar';
19 +import TitleAndMetaTags from 'components/TitleAndMetaTags';
20 +import findSectionForPath from 'utils/findSectionForPath';
21 +import toCommaSeparatedList from 'utils/toCommaSeparatedList';
22 +import {sharedStyles} from 'theme';
23 +import {urlRoot} from 'constants';
24 +
25 +const MarkdownPage = ({
26 + authors,
27 + createLink,
28 + date,
29 + ogDescription,
30 + location,
31 + markdownRemark,
32 + sectionList,
33 + titlePostfix = '',
34 +}) => {
35 + const hasAuthors = authors.length > 0;
36 + const titlePrefix = markdownRemark.frontmatter.title || '';
37 +
38 + return (
39 + <Flex
40 + direction="column"
41 + grow="1"
42 + shrink="0"
43 + halign="stretch"
44 + css={{
45 + width: '100%',
46 + flex: '1 0 auto',
47 + position: 'relative',
48 + zIndex: 0,
49 + }}>
50 + <TitleAndMetaTags
51 + title={`${titlePrefix}${titlePostfix}`}
52 + ogUrl={`${urlRoot}/${markdownRemark.fields.path || ''}`}
53 + ogDescription={ogDescription}
54 + />
55 + <div css={{flex: '1 0 auto'}}>
56 + <Container>
57 + <div css={sharedStyles.articleLayout.container}>
58 + <Flex type="article" direction="column" grow="1" halign="stretch">
59 + <MarkdownHeader title={titlePrefix} />
60 +
61 + {(date || hasAuthors) &&
62 + <div css={{marginTop: 15}}>
63 + {date}{' '}
64 + {hasAuthors &&
65 + <span>
66 + by {toCommaSeparatedList(authors, author => (
67 + <a
68 + css={sharedStyles.link}
69 + href={author.frontmatter.url}
70 + key={author.frontmatter.name}>
71 + {author.frontmatter.name}
72 + </a>
73 + ))}
74 + </span>}
75 + </div>}
76 +
77 + <div css={sharedStyles.articleLayout.content}>
78 + <div
79 + css={[sharedStyles.markdown]}
80 + dangerouslySetInnerHTML={{__html: markdownRemark.html}}
81 + />
82 +
83 + {markdownRemark.fields.path &&
84 + <div css={{marginTop: 80}}>
85 + <a
86 + css={sharedStyles.articleLayout.editLink}
87 + href={`https://github.com/facebook/react/tree/master/docs/${markdownRemark.fields.path}`}>
88 + Edit this page
89 + </a>
90 + </div>}
91 + </div>
92 + </Flex>
93 +
94 + <div css={sharedStyles.articleLayout.sidebar}>
95 + <StickyResponsiveSidebar
96 + createLink={createLink}
97 + defaultActiveSection={findSectionForPath(
98 + location.pathname,
99 + sectionList,
100 + )}
101 + location={location}
102 + sectionList={sectionList}
103 + />
104 + </div>
105 + </div>
106 + </Container>
107 + </div>
108 +
109 + {/* TODO Read prev/next from index map, not this way */}
110 + {(markdownRemark.frontmatter.next || markdownRemark.frontmatter.prev) &&
111 + <NavigationFooter
112 + location={location}
113 + next={markdownRemark.frontmatter.next}
114 + prev={markdownRemark.frontmatter.prev}
115 + />}
116 + </Flex>
117 + );
118 +};
119 +
120 +MarkdownPage.defaultProps = {
121 + authors: [],
122 +};
123 +
124 +// TODO Better types
125 +MarkdownPage.propTypes = {
126 + authors: PropTypes.array.isRequired,
127 + createLink: PropTypes.func.isRequired,
128 + date: PropTypes.string,
129 + location: PropTypes.object.isRequired,
130 + markdownRemark: PropTypes.object.isRequired,
131 + sectionList: PropTypes.array.isRequired,
132 +};
133 +
134 +export default MarkdownPage;
www/src/components/MarkdownPage/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import MarkdownPage from './MarkdownPage';
13 +
14 +export default MarkdownPage;
www/src/components/StickyResponsiveSidebar/StickyResponsiveSidebar.js new
+199
@@ -0,0 +1,199 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import {Component, React} from 'react';
14 +import Sidebar from 'templates/components/Sidebar';
15 +import {colors, media} from 'theme';
16 +import ChevronSvg from 'templates/components/ChevronSvg';
17 +
18 +class StickyResponsiveSidebar extends Component {
19 + constructor(props, context) {
20 + super(props, context);
21 +
22 + this.state = {
23 + open: false,
24 + };
25 + this._openNavMenu = this._openNavMenu.bind(this);
26 + this._closeNavMenu = this._closeNavMenu.bind(this);
27 + }
28 +
29 + _openNavMenu() {
30 + this.setState({open: !this.state.open});
31 + }
32 +
33 + _closeNavMenu() {
34 + this.setState({open: false});
35 + }
36 +
37 + render() {
38 + const {open} = this.state;
39 + const smallScreenSidebarStyles = {
40 + top: 0,
41 + left: 0,
42 + bottom: 0,
43 + right: 0,
44 + position: 'fixed',
45 + backgroundColor: colors.white,
46 + zIndex: 2,
47 + height: '100vh',
48 + overflowY: 'auto',
49 + WebkitOverflowScrolling: 'touch',
50 + pointerEvents: open ? 'auto' : 'none',
51 + };
52 +
53 + const smallScreenBottomBarStyles = {
54 + display: 'inline-block',
55 + };
56 +
57 + const iconOffset = open ? 8 : -4;
58 + const menuOpacity = open ? 1 : 0;
59 + const menuOffset = open ? 0 : 40;
60 +
61 + // TODO: role and aria props for 'close' button?
62 + return (
63 + <div>
64 + <div
65 + style={{
66 + opacity: menuOpacity,
67 + transition: 'opacity 0.5s ease',
68 + }}
69 + css={{
70 + [media.lessThan('small')]: smallScreenSidebarStyles,
71 +
72 + [media.greaterThan('medium')]: {
73 + marginRight: -999,
74 + paddingRight: 999,
75 + backgroundColor: '#f7f7f7',
76 + },
77 +
78 + [media.between('medium', 'sidebarFixed', true)]: {
79 + position: 'fixed',
80 + zIndex: 2,
81 + height: '100%',
82 + },
83 +
84 + [media.greaterThan('small')]: {
85 + position: 'fixed',
86 + zIndex: 2,
87 + height: 'calc(100vh - 60px)',
88 + overflowY: 'auto',
89 + WebkitOverflowScrolling: 'touch',
90 + marginRight: -999,
91 + paddingRight: 999,
92 + backgroundColor: '#f7f7f7',
93 + opacity: '1 !important',
94 + },
95 +
96 + [media.size('small')]: {
97 + height: 'calc(100vh - 40px)',
98 + },
99 +
100 + [media.between('medium', 'large')]: {
101 + height: 'calc(100vh - 50px)',
102 + },
103 +
104 + [media.greaterThan('sidebarFixed')]: {
105 + borderLeft: '1px solid #ececec',
106 + },
107 + }}>
108 + <div
109 + style={{
110 + transform: `translate(0px, ${menuOffset}px)`,
111 + transition: 'transform 0.5s ease',
112 + }}
113 + css={{
114 + marginTop: 60,
115 +
116 + [media.size('xsmall')]: {
117 + marginTop: 40,
118 + },
119 +
120 + [media.between('small', 'medium')]: {
121 + marginTop: 0,
122 + },
123 +
124 + [media.between('medium', 'large')]: {
125 + marginTop: 50,
126 + },
127 +
128 + [media.greaterThan('small')]: {
129 + tranform: 'none !important',
130 + },
131 + }}>
132 + <Sidebar closeParentMenu={this._closeNavMenu} {...this.props} />
133 + </div>
134 + </div>
135 + <div
136 + css={{
137 + backgroundColor: colors.darker,
138 + bottom: 44, // iOS Safari's inert "bottom 44px"
139 + color: colors.brand,
140 + display: 'none', // gets overriden at small screen sizes
141 + cursor: 'pointer',
142 + position: 'fixed',
143 + right: 20,
144 + zIndex: 3,
145 + borderRadius: '50%',
146 + border: '1px solid rgba(255, 255, 255, 0.1)',
147 + boxShadow: '0 0 20px rgba(0, 0, 0, 0.3)',
148 + [media.lessThan('small')]: smallScreenBottomBarStyles,
149 + }}
150 + onClick={this._openNavMenu}>
151 + <Container>
152 + <div
153 + css={{
154 + display: 'flex',
155 + flexDirection: 'row',
156 + alignItems: 'center',
157 + height: 60,
158 + [media.between('medium', 'large')]: {
159 + height: 50,
160 + },
161 + [media.lessThan('small')]: {
162 + height: 60,
163 + overflow: 'hidden',
164 + alignItems: 'flex-start',
165 + },
166 + }}>
167 + <div
168 + css={{
169 + width: 20,
170 + height: 20,
171 + alignSelf: 'center',
172 + display: 'flex',
173 + flexDirection: 'column',
174 + color: colors.brand,
175 + }}>
176 + <ChevronSvg
177 + size={15}
178 + cssProps={{
179 + transform: `translate(2px, ${iconOffset}px) rotate(180deg)`,
180 + transition: 'transform 0.2s ease',
181 + }}
182 + />
183 + <ChevronSvg
184 + size={15}
185 + cssProps={{
186 + transform: `translate(2px, ${0 - iconOffset}px)`,
187 + transition: 'transform 0.2s ease',
188 + }}
189 + />
190 + </div>
191 + </div>
192 + </Container>
193 + </div>
194 + </div>
195 + );
196 + }
197 +}
198 +
199 +export default StickyResponsiveSidebar;
www/src/components/StickyResponsiveSidebar/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import StickyResponsiveSidebar from './StickyResponsiveSidebar';
13 +
14 +export default StickyResponsiveSidebar;
www/src/components/TitleAndMetaTags/TitleAndMetaTags.js new
+36
@@ -0,0 +1,36 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Helmet from 'react-helmet';
13 +import React from 'react';
14 +
15 +const defaultDescription = 'A JavaScript library for building user interfaces';
16 +
17 +const TitleAndMetaTags = ({title, ogDescription, ogUrl}) => {
18 + return (
19 + <Helmet title={title}>
20 + <meta property="og:title" content={title} />
21 + <meta property="og:type" content="website" />
22 + {ogUrl && <meta property="og:url" content={ogUrl} />}
23 + <meta
24 + property="og:image"
25 + content="https://facebook.github.io/react/img/logo_og.png"
26 + />
27 + <meta
28 + property="og:description"
29 + content={ogDescription || defaultDescription}
30 + />
31 + <meta property="fb:app_id" content="623268441017527" />
32 + </Helmet>
33 + );
34 +};
35 +
36 +export default TitleAndMetaTags;
www/src/components/TitleAndMetaTags/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import TitleAndMetaTags from './TitleAndMetaTags';
13 +
14 +export default TitleAndMetaTags;
www/src/constants.js new
+21
@@ -0,0 +1,21 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 + * @flow
9 +*/
10 +
11 +'use strict';
12 +
13 +/**
14 + * Variables shared by multiple components.
15 + */
16 +
17 +export default {
18 + // NOTE: We can't just use `location.toString()` because when we are rendering
19 + // the SSR part in node.js we won't have a proper location.
20 + urlRoot: 'https://reactjs.org',
21 +};
www/src/css/algolia.css new
+427
@@ -0,0 +1,427 @@
1 +/* Styles forked from Algolia */
2 +
3 +.searchbox {
4 + display: inline-block;
5 + position: relative;
6 + width: 200px;
7 + height: 32px !important;
8 + white-space: nowrap;
9 + box-sizing: border-box;
10 + visibility: visible !important;
11 +}
12 +
13 +.searchbox .algolia-autocomplete {
14 + display: block;
15 + width: 100%;
16 + height: 100%;
17 +}
18 +
19 +.searchbox__wrapper {
20 + width: 100%;
21 + height: 100%;
22 + z-index: 999;
23 + position: relative;
24 +}
25 +
26 +.searchbox__input {
27 + display: inline-block;
28 + box-sizing: border-box;
29 + -webkit-transition: box-shadow .4s ease, background .4s ease;
30 + transition: box-shadow .4s ease, background .4s ease;
31 + border: 0;
32 + border-radius: 16px;
33 + box-shadow: inset 0 0 0 1px #CCCCCC;
34 + background: #FFFFFF !important;
35 + padding: 0;
36 + padding-right: 26px;
37 + padding-left: 32px;
38 + width: 100%;
39 + height: 100%;
40 + vertical-align: middle;
41 + white-space: normal;
42 + font-size: 12px;
43 + -webkit-appearance: none;
44 + -moz-appearance: none;
45 + appearance: none;
46 +}
47 +
48 +.searchbox__input::-webkit-search-decoration, .searchbox__input::-webkit-search-cancel-button, .searchbox__input::-webkit-search-results-button, .searchbox__input::-webkit-search-results-decoration {
49 + display: none;
50 +}
51 +
52 +.searchbox__input:hover {
53 + box-shadow: inset 0 0 0 1px #b3b3b3;
54 +}
55 +
56 +.searchbox__input:focus, .searchbox__input:active {
57 + outline: 0;
58 + box-shadow: inset 0 0 0 1px #AAAAAA;
59 + background: #FFFFFF;
60 +}
61 +
62 +.searchbox__input::-webkit-input-placeholder {
63 + color: #AAAAAA;
64 +}
65 +
66 +.searchbox__input::-moz-placeholder {
67 + color: #AAAAAA;
68 +}
69 +
70 +.searchbox__input:-ms-input-placeholder {
71 + color: #AAAAAA;
72 +}
73 +
74 +.searchbox__input::placeholder {
75 + color: #AAAAAA;
76 +}
77 +
78 +.searchbox__submit {
79 + position: absolute;
80 + top: 0;
81 + margin: 0;
82 + border: 0;
83 + border-radius: 16px 0 0 16px;
84 + background-color: rgba(69, 142, 225, 0);
85 + padding: 0;
86 + width: 32px;
87 + height: 100%;
88 + vertical-align: middle;
89 + text-align: center;
90 + font-size: inherit;
91 + -webkit-user-select: none;
92 + -moz-user-select: none;
93 + -ms-user-select: none;
94 + user-select: none;
95 + right: inherit;
96 + left: 0;
97 +}
98 +
99 +.searchbox__submit::before {
100 + display: inline-block;
101 + margin-right: -4px;
102 + height: 100%;
103 + vertical-align: middle;
104 + content: '';
105 +}
106 +
107 +.searchbox__submit:hover, .searchbox__submit:active {
108 + cursor: pointer;
109 +}
110 +
111 +.searchbox__submit:focus {
112 + outline: 0;
113 +}
114 +
115 +.searchbox__submit svg {
116 + width: 14px;
117 + height: 14px;
118 + vertical-align: middle;
119 + fill: #6D7E96;
120 +}
121 +
122 +.searchbox__reset {
123 + display: block;
124 + position: absolute;
125 + top: 8px;
126 + right: 8px;
127 + margin: 0;
128 + border: 0;
129 + background: none;
130 + cursor: pointer;
131 + padding: 0;
132 + font-size: inherit;
133 + -webkit-user-select: none;
134 + -moz-user-select: none;
135 + -ms-user-select: none;
136 + user-select: none;
137 + fill: rgba(0, 0, 0, 0.5);
138 +}
139 +
140 +.searchbox__reset.hide {
141 + display: none;
142 +}
143 +
144 +.searchbox__reset:focus {
145 + outline: 0;
146 +}
147 +
148 +.searchbox__reset svg {
149 + display: block;
150 + margin: 4px;
151 + width: 8px;
152 + height: 8px;
153 +}
154 +
155 +.searchbox__input:valid ~ .searchbox__reset {
156 + display: block;
157 + -webkit-animation-name: sbx-reset-in;
158 + animation-name: sbx-reset-in;
159 + -webkit-animation-duration: .15s;
160 + animation-duration: .15s;
161 +}
162 +
163 +@-webkit-keyframes sbx-reset-in {
164 + 0% {
165 + -webkit-transform: translate3d(-20%, 0, 0);
166 + transform: translate3d(-20%, 0, 0);
167 + opacity: 0;
168 + }
169 + 100% {
170 + -webkit-transform: none;
171 + transform: none;
172 + opacity: 1;
173 + }
174 +}
175 +
176 +@keyframes sbx-reset-in {
177 + 0% {
178 + -webkit-transform: translate3d(-20%, 0, 0);
179 + transform: translate3d(-20%, 0, 0);
180 + opacity: 0;
181 + }
182 + 100% {
183 + -webkit-transform: none;
184 + transform: none;
185 + opacity: 1;
186 + }
187 +}
188 +
189 +
190 +.algolia-autocomplete .ds-dropdown-menu:before {
191 + display: block;
192 + position: absolute;
193 + content: '';
194 + width: 14px;
195 + height: 14px;
196 + background: #373940;
197 + z-index: 1000;
198 + top: -7px;
199 + border-top: 1px solid #373940;
200 + border-right: 1px solid #373940;
201 + -webkit-transform: rotate(-45deg);
202 + transform: rotate(-45deg);
203 + border-radius: 2px;
204 +}
205 +
206 +.algolia-autocomplete .ds-dropdown-menu {
207 + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1);
208 +}
209 +
210 +@media (min-width: 601px) {
211 + .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu {
212 + right: 0 !important;
213 + left: inherit !important;
214 + }
215 +
216 + .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before {
217 + right: 48px;
218 + }
219 +
220 + .algolia-autocomplete .ds-dropdown-menu {
221 + position: relative;
222 + top: -6px;
223 + border-radius: 4px;
224 + margin: 6px 0 0;
225 + padding: 0;
226 + text-align: left;
227 + height: auto;
228 + position: relative;
229 + background: transparent;
230 + border: none;
231 + z-index: 999;
232 + max-width: 600px;
233 + min-width: 500px;
234 + }
235 +}
236 +
237 +@media (max-width: 600px) {
238 + .algolia-autocomplete .ds-dropdown-menu {
239 + z-index: 100;
240 + position: fixed !important;
241 + top: 40px !important;
242 + left: auto !important;
243 + right: 1rem !important;
244 + width: 600px;
245 + max-width: calc(100% - 2rem);
246 + max-height: calc(100% - 5rem);
247 + display: block;
248 + }
249 +
250 + .algolia-autocomplete .ds-dropdown-menu:before {
251 + right: 6rem;
252 + }
253 +}
254 +
255 +.algolia-autocomplete .ds-dropdown-menu .ds-suggestions {
256 + position: relative;
257 + z-index: 1000;
258 +}
259 +
260 +.algolia-autocomplete .ds-dropdown-menu .ds-suggestion {
261 + cursor: pointer;
262 +}
263 +
264 +.algolia-autocomplete .ds-dropdown-menu [class^="ds-dataset-"] {
265 + position: relative;
266 + background: #fff;
267 + border-radius: 4px;
268 + overflow: auto;
269 + padding: 0;
270 +}
271 +
272 +.algolia-autocomplete .ds-dropdown-menu * {
273 + box-sizing: border-box;
274 +}
275 +
276 +.algolia-autocomplete .algolia-docsearch-suggestion {
277 + position: relative;
278 + padding: 0;
279 + overflow: hidden;
280 +}
281 +
282 +.algolia-autocomplete .algolia-docsearch-suggestion--highlight {
283 + background: #ffe564;
284 + padding: 0.1em 0.05em;
285 +}
286 +
287 +.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,
288 +.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight {
289 + color: inherit;
290 + background: inherit;
291 +}
292 +
293 +.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {
294 + padding: 0 0 1px;
295 + background: inherit;
296 + box-shadow: inset 0 -2px 0 0 rgba(69, 142, 225, 0.8);
297 + color: inherit;
298 +}
299 +
300 +.algolia-autocomplete .algolia-docsearch-suggestion--content {
301 + display: block;
302 + float: right;
303 + width: 70%;
304 + position: relative;
305 + padding: 5.33333px 0 5.33333px 10.66667px;
306 + cursor: pointer;
307 +}
308 +
309 +.algolia-autocomplete .algolia-docsearch-suggestion--content:before {
310 + content: '';
311 + position: absolute;
312 + display: block;
313 + top: 0;
314 + height: 100%;
315 + width: 1px;
316 + background: #ececec;
317 + left: -1px;
318 +}
319 +
320 +.algolia-autocomplete .algolia-docsearch-suggestion--category-header {
321 + position: relative;
322 + display: none;
323 + font-size: 14px;
324 + letter-spacing: 0.08em;
325 + font-weight: 700;
326 + background-color: #373940;
327 + text-transform: uppercase;
328 + color: #fff;
329 + margin: 0;
330 + padding: 5px 8px;
331 +}
332 +
333 +.algolia-autocomplete .algolia-docsearch-suggestion--wrapper {
334 + width: 100%;
335 + float: left;
336 + padding: 8px 0 0 0;
337 +}
338 +
339 +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column {
340 + float: left;
341 + width: 30%;
342 + display: none;
343 + padding-left: 0;
344 + text-align: right;
345 + position: relative;
346 + padding: 5.33333px 10.66667px;
347 + color: #777;
348 + font-size: 0.9em;
349 + word-wrap: break-word;
350 +}
351 +
352 +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before {
353 + content: '';
354 + position: absolute;
355 + display: block;
356 + top: 0;
357 + height: 100%;
358 + width: 1px;
359 + background: #ececec;
360 + right: 0;
361 +}
362 +
363 +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight {
364 + background-color: inherit;
365 + color: inherit;
366 +}
367 +
368 +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline {
369 + display: none;
370 +}
371 +
372 +.algolia-autocomplete .algolia-docsearch-suggestion--title {
373 + margin-bottom: 4px;
374 + color: #02060C;
375 + font-size: 0.9em;
376 + font-weight: bold;
377 +}
378 +
379 +.algolia-autocomplete .algolia-docsearch-suggestion--text {
380 + display: block;
381 + line-height: 1.2em;
382 + font-size: 0.85em;
383 + color: #63676D;
384 +}
385 +
386 +.algolia-autocomplete .algolia-docsearch-suggestion--no-results {
387 + width: 100%;
388 + padding: 8px 0;
389 + text-align: center;
390 + font-size: 1.2em;
391 +}
392 +
393 +.algolia-autocomplete .algolia-docsearch-suggestion--no-results::before {
394 + display: none;
395 +}
396 +
397 +.algolia-autocomplete .algolia-docsearch-suggestion code {
398 + padding: 1px 5px;
399 + font-size: 90%;
400 + border: none;
401 + color: #222222;
402 + background-color: #EBEBEB;
403 + border-radius: 3px;
404 + font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
405 +}
406 +
407 +.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight {
408 + background: none;
409 +}
410 +
411 +.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header {
412 + display: block;
413 +}
414 +
415 +.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column {
416 + display: block;
417 +}
418 +
419 +
420 +.algolia-autocomplete .algolia-docsearch-footer {
421 + width: 110px;
422 + height: 20px;
423 + z-index: 2000;
424 + float: right;
425 + font-size: 0;
426 + line-height: 0;
427 +}
www/src/css/reset.css new
+39
@@ -0,0 +1,39 @@
1 +html {
2 + box-sizing: border-box;
3 + font-family: "proxima-nova", sans-serif;
4 + font-style: normal;
5 + -webkit-font-smoothing: antialiased;
6 +}
7 +
8 +body {
9 + overflow-x: hidden;
10 + position: relative;
11 +}
12 +
13 +* {
14 + margin: 0;
15 + padding: 0;
16 +}
17 +
18 +*, *::before, *::after {
19 + box-sizing: inherit;
20 + border-color: inherit;
21 +}
22 +
23 +a {
24 + color: inherit;
25 + text-decoration: none;
26 +}
27 +
28 +ul, ol {
29 + list-style: none;
30 +}
31 +
32 +img {
33 + display: inline-block;
34 + vertical-align: top;
35 +}
36 +
37 +pre, code {
38 + font-family: source-code-pro, Menlo, Consolas, "Courier New", monospace;
39 +}
www/src/html.js new
+72
@@ -0,0 +1,72 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React, {Component} from 'react';
13 +
14 +let stylesStr;
15 +if (process.env.NODE_ENV === `production`) {
16 + try {
17 + stylesStr = require(`!raw-loader!../public/styles.css`);
18 + } catch (e) {
19 + console.log(e);
20 + }
21 +}
22 +
23 +const JS_NPM_URLS = [
24 + '//unpkg.com/docsearch.js@2.4.1/dist/cdn/docsearch.min.js',
25 + '//unpkg.com/babel-standalone@6.26.0/babel.min.js',
26 +];
27 +
28 +export default class HTML extends Component {
29 + render() {
30 + let css;
31 + if (process.env.NODE_ENV === 'production') {
32 + css = (
33 + <style
34 + id="gatsby-inlined-css"
35 + dangerouslySetInnerHTML={{__html: stylesStr}}
36 + />
37 + );
38 + }
39 +
40 + const js = JS_NPM_URLS.map(url => <script key={url} src={url} />);
41 +
42 + return (
43 + <html lang="en">
44 + <head>
45 + <meta charSet="utf-8" />
46 + <meta httpEquiv="X-UA-Compatible" content="IE=edge" />
47 + <meta
48 + name="viewport"
49 + content="width=device-width, initial-scale=1.0"
50 + />
51 + <link rel="icon" href="/favicon.ico" />
52 + {this.props.headComponents}
53 + {js}
54 + {css}
55 + </head>
56 + <body>
57 + <div
58 + id="___gatsby"
59 + dangerouslySetInnerHTML={{__html: this.props.body}}
60 + />
61 + {this.props.postBodyComponents}
62 + <script src="https://use.typekit.net/vqa1hcx.js" />
63 + <script
64 + dangerouslySetInnerHTML={{
65 + __html: 'try{Typekit.load({ async: true });}catch(e){}',
66 + }}
67 + />
68 + </body>
69 + </html>
70 + );
71 + }
72 +}
www/src/icons/logo.svg new
+1
@@ -0,0 +1 @@
1 +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 20.46348"><title>logo</title><path d="M18.9107,6.63257h0q-.36721-.126-.74042-.2333.06187-.25141.11441-.505c.56045-2.72064.194-4.91237-1.05739-5.63386-1.1998-.692-3.1621.02952-5.14394,1.75414q-.29293.2555-.57267.52554-.18727-.17951-.3811-.352C9.05257.3439,6.97066-.43316,5.72058.29046,4.52191.98436,4.16686,3.04489,4.67144,5.62322q.0753.383.17.76179c-.29458.08367-.57908.17284-.85127.26771C1.55514,7.50165,0,8.83225,0,10.21231c0,1.42546,1.66935,2.8552,4.20575,3.722q.3085.10494.62193.19442-.10179.408-.18068.82114c-.48106,2.53354-.10535,4.54521,1.09017,5.23484,1.23481.712,3.30725-.01985,5.32533-1.78387q.23926-.20917.47994-.44238.3029.29225.62173.56727c1.95477,1.68207,3.88531,2.36132,5.07982,1.66986,1.23369-.71416,1.63454-2.87525,1.114-5.50459q-.05955-.30124-.13792-.61481.21834-.06443.42772-.13355C21.28454,13.06915,23,11.65681,23,10.21232,23,8.82726,21.39478,7.48771,18.9107,6.63257ZM12.7284,2.75581C14.42646,1.278,16.01346.69457,16.73657,1.1116h0c.77014.44421,1.06971,2.2354.5858,4.58441q-.04758.22953-.10342.45724a23.53752,23.53752,0,0,0-3.07527-.48584A23.08128,23.08128,0,0,0,12.1995,3.24094Q12.45788,2.99184,12.7284,2.75581ZM6.79111,11.39124q.312.60265.65207,1.19013.34692.59911.7221,1.18117a20.92168,20.92168,0,0,1-2.11967-.3408C6.24867,12.766,6.49887,12.08443,6.79111,11.39124ZM6.79,9.08041c-.28613-.67863-.53093-1.34586-.73085-1.99019.65624-.14688,1.356-.26689,2.08516-.358q-.36611.571-.7051,1.15877Q7.10076,8.478,6.79,9.08041Zm.52228,1.15552q.45411-.94517.9783-1.8542v.0002q.52369-.90857,1.11521-1.77542c.684-.05171,1.38536-.07879,2.09432-.07879.71212,0,1.41437.02728,2.09819.0794q.58514.86487,1.10818,1.76941.52565.90635.99153,1.84545-.46083.94817-.98828,1.86173h-.0001q-.52261.90786-1.1034,1.7803c-.6824.04876-1.3876.0739-2.10623.0739-.71568,0-1.41193-.02229-2.08241-.06575q-.59555-.86995-1.12406-1.78305Q7.76789,11.18148,7.31227,10.23593Zm8.24853,2.33862q.347-.60182.667-1.21863h0a20.86671,20.86671,0,0,1,.77238,2.02327,20.85164,20.85164,0,0,1-2.14552.36573Q15.21935,13.16682,15.5608,12.57455Zm.65767-3.49343q-.31883-.605-.66163-1.19684h0q-.33727-.58258-.6994-1.15022c.7339.09263,1.437.21579,2.09717.36654A20.95909,20.95909,0,0,1,16.21847,9.08112ZM11.511,3.94359a21.01288,21.01288,0,0,1,1.3535,1.63393q-1.35843-.06419-2.7184-.00061C10.593,4.98765,11.0507,4.44022,11.511,3.94359ZM6.21284,1.14081c.76953-.44543,2.47095.18973,4.26428,1.782.11461.10179.22974.20836.34507.3186A23.54542,23.54542,0,0,0,8.86294,5.66608a24.008,24.008,0,0,0-3.06916.477q-.088-.35228-.15808-.70866v.0001C5.20339,3.22536,5.49044,1.559,6.21284,1.14081ZM5.09132,13.18233q-.286-.08187-.56778-.17773A8.32371,8.32371,0,0,1,1.841,11.57955a2.03072,2.03072,0,0,1-.85849-1.36724c0-.83742,1.24865-1.90571,3.33117-2.63178q.39208-.1361.79162-.24908a23.56455,23.56455,0,0,0,1.121,2.90478A23.92247,23.92247,0,0,0,5.09132,13.18233ZM10.41594,17.661a8.32161,8.32161,0,0,1-2.57467,1.61184h-.0001a2.03042,2.03042,0,0,1-1.61306.06067c-.72556-.41836-1.02706-2.03376-.61573-4.20035q.07337-.38407.168-.76363a23.10444,23.10444,0,0,0,3.0995.44869,23.90954,23.90954,0,0,0,1.97431,2.43929Q10.64,17.46459,10.41594,17.661Zm1.12223-1.11053c-.46569-.50253-.93015-1.05831-1.38383-1.65612q.66051.026,1.34566.02606.70326,0,1.38841-.03084A20.89425,20.89425,0,0,1,11.53817,16.55045Zm5.96651,1.367a2.03039,2.03039,0,0,1-.753,1.4278c-.72485.41958-2.275-.12581-3.94659-1.56431q-.2875-.24735-.57837-.52727a23.08914,23.08914,0,0,0,1.9279-2.448,22.93647,22.93647,0,0,0,3.11507-.48014q.07024.284.12449.55638h0A8.32,8.32,0,0,1,17.50468,17.91749Zm.83417-4.90739h-.0001c-.12571.04163-.25478.08184-.38629.12082a23.06121,23.06121,0,0,0-1.16468-2.91373,23.05112,23.05112,0,0,0,1.11938-2.87128c.23524.0682.46365.14.68372.21579,2.12842.73258,3.42665,1.81593,3.42665,2.65061C22.01753,11.10145,20.61538,12.25574,18.33885,13.0101Z" fill="#61dafb"/><path d="M11.5,8.1585a2.05386,2.05386,0,1,1-2.05381,2.05381A2.05381,2.05381,0,0,1,11.5,8.1585" fill="#61dafb"/></svg>
\ No newline at end of file
www/src/images/oss_logo.png
Binary files /dev/null and b/www/src/images/oss_logo.png differ
www/src/layouts/index.js new
+81
@@ -0,0 +1,81 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +// Polyfills for IE
13 +import 'array-from';
14 +import 'string.prototype.includes';
15 +import 'string.prototype.repeat';
16 +
17 +import React, {Component} from 'react';
18 +import Flex from 'components/Flex';
19 +import Footer from 'components/LayoutFooter';
20 +import Header from 'components/LayoutHeader';
21 +import {media} from 'theme';
22 +
23 +// Import global styles
24 +import '../prism-styles';
25 +import 'glamor/reset';
26 +import 'css/reset.css';
27 +import 'css/algolia.css';
28 +
29 +class Template extends Component {
30 + componentDidMount() {
31 + // Initialize Algolia search.
32 + // TODO Is this expensive? Should it be deferred until a user is about to search?
33 + // eslint-disable-next-line no-undef
34 + docsearch({
35 + apiKey: '36221914cce388c46d0420343e0bb32e',
36 + indexName: 'react',
37 + inputSelector: '#algolia-doc-search',
38 + });
39 + }
40 +
41 + render() {
42 + const {children, location} = this.props;
43 +
44 + // TODO - is there a better way to check if we need we have a sidebar?
45 + let layoutHasSidebar = false;
46 + if (location.pathname.match(/^\/(docs|tutorial|community|blog)/)) {
47 + layoutHasSidebar = true;
48 + }
49 +
50 + return (
51 + <div
52 + css={{
53 + display: 'flex',
54 + flexDirection: 'column',
55 + minHeight: 'calc(100vh - 40px)',
56 + }}>
57 + <Header location={location} />
58 + <Flex
59 + direction="column"
60 + shrink="0"
61 + grow="1"
62 + valign="stretch"
63 + css={{
64 + flex: '1 0 auto',
65 + marginTop: 60,
66 + [media.between('medium', 'large')]: {
67 + marginTop: 50,
68 + },
69 + [media.lessThan('medium')]: {
70 + marginTop: 40,
71 + },
72 + }}>
73 + {children()}
74 + </Flex>
75 + <Footer layoutHasSidebar={layoutHasSidebar} />
76 + </div>
77 + );
78 + }
79 +}
80 +
81 +export default Template;
www/src/pages/404.js new
+36
@@ -0,0 +1,36 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import Header from 'components/Header';
14 +import React from 'react';
15 +import {sharedStyles} from 'theme';
16 +
17 +const PageNotFound = () => (
18 + <Container>
19 + <div css={sharedStyles.articleLayout.container}>
20 + <div css={sharedStyles.articleLayout.content}>
21 + <Header>Page Not Found</Header>
22 + <div css={sharedStyles.markdown}>
23 + <p>
24 + We couldn't find what you were looking for.
25 + </p>
26 + <p>
27 + Please contact the owner of the site that linked you
28 + to the original URL and let them know their link is broken.
29 + </p>
30 + </div>
31 + </div>
32 + </div>
33 + </Container>
34 +);
35 +
36 +export default PageNotFound;
www/src/pages/acknowledgements.html.js new
+102
@@ -0,0 +1,102 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import Header from 'components/Header';
14 +import React from 'react';
15 +import {sharedStyles} from 'theme';
16 +
17 +import names from '../../../docs/_data/acknowledgements.yml';
18 +
19 +const Acknowlegements = ({data, location}) => (
20 + <Container>
21 + <div css={sharedStyles.articleLayout.container}>
22 + <div css={sharedStyles.articleLayout.content}>
23 + <Header>Acknowledgements</Header>
24 +
25 + <div css={sharedStyles.markdown}>
26 + <p>We'd like to thank all of our contributors:</p>
27 +
28 + <ul
29 + css={{
30 + display: 'flex',
31 + flexWrap: 'wrap',
32 + }}>
33 + {names.map((name, index) => (
34 + <li
35 + css={{
36 + flex: '1 0 200px',
37 + }}
38 + key={index}>
39 + {name}
40 + </li>
41 + ))}
42 + </ul>
43 +
44 + <p>In addition, we're grateful to</p>
45 + <ul>
46 + <li>
47 + <a href="https://github.com/jeffbski">Jeff Barczewski</a>
48 + {' '}
49 + for allowing us to use the
50 + {' '}
51 + <a href="https://www.npmjs.com/package/react">react</a>
52 + {' '}
53 + package name on npm.
54 + </li>
55 + <li>
56 + <a href="http://christopheraue.net/">Christopher Aue</a>
57 + {' '}
58 + for letting us use the
59 + {' '}
60 + <a href="http://reactjs.com/">reactjs.com</a>
61 + {' '}
62 + domain name and the
63 + {' '}
64 + <a href="https://twitter.com/reactjs">@reactjs</a>
65 + {' '}
66 + username on Twitter.
67 + </li>
68 + <li>
69 + <a href="https://github.com/ProjectMoon">ProjectMoon</a>
70 + {' '}
71 + for letting us use the
72 + {' '}
73 + <a href="https://www.npmjs.com/package/flux">flux</a>
74 + {' '}
75 + package name on npm.
76 + </li>
77 + <li>
78 + Shane Anderson for allowing us to use the
79 + {' '}
80 + <a href="https://github.com/react">react</a>
81 + {' '}
82 + org on GitHub.
83 + </li>
84 + <li>
85 + <a href="https://github.com/voronianski">Dmitri Voronianski</a>
86 + {' '}
87 + for letting us use the
88 + {' '}
89 + <a href="https://labs.voronianski.com/oceanic-next-color-scheme/">
90 + Oceanic Next
91 + </a>
92 + {' '}
93 + color scheme on this website.
94 + </li>
95 + </ul>
96 + </div>
97 + </div>
98 + </div>
99 + </Container>
100 +);
101 +
102 +export default Acknowlegements;
www/src/pages/blog/all.html.js new
+120
@@ -0,0 +1,120 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Link from 'gatsby-link';
13 +import Container from 'components/Container';
14 +import Header from 'components/Header';
15 +import React from 'react';
16 +import {colors, media, sharedStyles} from 'theme';
17 +import toCommaSeparatedList from 'utils/toCommaSeparatedList';
18 +import MetaTitle from 'templates/components/MetaTitle';
19 +
20 +const AllBlogPosts = ({data}) => (
21 + <Container>
22 + <div css={sharedStyles.articleLayout.container}>
23 + <div css={sharedStyles.articleLayout.content}>
24 + <Header>All Posts</Header>
25 + <ul
26 + css={{
27 + display: 'flex',
28 + flexWrap: 'wrap',
29 + marginLeft: -40,
30 + }}>
31 + {data.allMarkdownRemark.edges.map(({node}) => (
32 + <li
33 + css={{
34 + paddingLeft: 40,
35 + paddingTop: 40,
36 + borderTop: '1px dotted #ececec',
37 + paddingBottom: 40,
38 + width: '100%',
39 +
40 + [media.size('medium')]: {
41 + width: '50%',
42 + },
43 +
44 + [media.greaterThan('large')]: {
45 + width: '33.33%',
46 + },
47 + }}
48 + key={node.fields.slug}>
49 + <h2
50 + css={{
51 + fontSize: 24,
52 + color: colors.dark,
53 + lineHeight: 1.3,
54 + fontWeight: 700,
55 + }}>
56 + <Link
57 + css={{
58 + borderBottom: '1px solid #ececec',
59 + ':hover': {
60 + borderBottomColor: colors.black,
61 + },
62 + }}
63 + key={node.fields.slug}
64 + to={node.fields.slug}>
65 + {node.frontmatter.title}
66 + </Link>
67 + </h2>
68 + <MetaTitle>
69 + {node.fields.date}
70 + </MetaTitle>
71 + <div
72 + css={{
73 + color: colors.subtle,
74 + marginTop: -5,
75 + }}>
76 + by
77 + {' '}
78 + {toCommaSeparatedList(node.frontmatter.author, author => (
79 + <span key={author.frontmatter.name}>
80 + {author.frontmatter.name}
81 + </span>
82 + ))}
83 + </div>
84 + </li>
85 + ))}
86 + </ul>
87 + </div>
88 + </div>
89 + </Container>
90 +);
91 +
92 +// eslint-disable-next-line no-undef
93 +export const pageQuery = graphql`
94 + query AllBlogPostsPageQuery {
95 + allMarkdownRemark(
96 + filter: { id: { regex: "/_posts/" } }
97 + sort: { fields: [fields___date], order: DESC }
98 + ) {
99 + edges {
100 + node {
101 + frontmatter {
102 + title
103 + author {
104 + frontmatter {
105 + name
106 + url
107 + }
108 + }
109 + }
110 + fields {
111 + date(formatString: "MMMM DD, YYYY")
112 + slug
113 + }
114 + }
115 + }
116 + }
117 + }
118 +`;
119 +
120 +export default AllBlogPosts;
www/src/pages/docs/error-decoder.html.js new
+110
@@ -0,0 +1,110 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import ErrorDecoder from 'components/ErrorDecoder';
14 +import Flex from 'components/Flex';
15 +import hex2rgba from 'hex2rgba';
16 +import MarkdownHeader from 'components/MarkdownHeader';
17 +import React from 'react';
18 +import StickyResponsiveSidebar from 'components/StickyResponsiveSidebar';
19 +import {colors, sharedStyles} from 'theme';
20 +import {createLinkDocs} from 'utils/createLink';
21 +import findSectionForPath from 'utils/findSectionForPath';
22 +import {sectionListDocs} from 'utils/sectionList';
23 +
24 +const ErrorPage = ({data, location}) => (
25 + <Flex
26 + direction="column"
27 + grow="1"
28 + shrink="0"
29 + halign="stretch"
30 + css={{
31 + width: '100%',
32 + flex: '1 0 auto',
33 + position: 'relative',
34 + zIndex: 0,
35 + }}>
36 + <Container>
37 + <div css={sharedStyles.articleLayout.container}>
38 +
39 + <Flex
40 + type="article"
41 + direction="column"
42 + grow="1"
43 + halign="stretch"
44 + css={{
45 + minHeight: 'calc(100vh - 40px)',
46 + }}>
47 + <MarkdownHeader
48 + path={data.markdownRemark.fields.path}
49 + title={data.markdownRemark.frontmatter.title}
50 + />
51 +
52 + <div css={sharedStyles.articleLayout.content}>
53 + <div
54 + css={sharedStyles.markdown}
55 + dangerouslySetInnerHTML={{__html: data.markdownRemark.html}}
56 + />
57 + <div
58 + css={[
59 + sharedStyles.markdown,
60 + {
61 + marginTop: 30,
62 + '& code': {
63 + display: 'block',
64 + marginTop: 30,
65 + padding: '1rem',
66 + borderRadius: '0.5rem',
67 + backgroundColor: hex2rgba(colors.error, 0.1),
68 + color: colors.error,
69 + },
70 + },
71 + ]}>
72 + <ErrorDecoder location={location} />
73 + </div>
74 + </div>
75 + </Flex>
76 +
77 + <div css={sharedStyles.articleLayout.sidebar}>
78 + <StickyResponsiveSidebar
79 + createLink={createLinkDocs}
80 + defaultActiveSection={findSectionForPath(
81 + location.pathname,
82 + sectionListDocs,
83 + )}
84 + location={location}
85 + sectionList={sectionListDocs}
86 + title={data.markdownRemark.frontmatter.title}
87 + />
88 + </div>
89 +
90 + </div>
91 + </Container>
92 + </Flex>
93 +);
94 +
95 +// eslint-disable-next-line no-undef
96 +export const pageQuery = graphql`
97 + query ErrorPageMarkdown($slug: String!) {
98 + markdownRemark(fields: { slug: { eq: $slug } }) {
99 + html
100 + fields {
101 + path
102 + }
103 + frontmatter {
104 + title
105 + }
106 + }
107 + }
108 +`;
109 +
110 +export default ErrorPage;
www/src/pages/favicon.ico
Binary files /dev/null and b/www/src/pages/favicon.ico differ
www/src/pages/robots.txt new
+2
@@ -0,0 +1,2 @@
1 +User-agent: *
2 +Disallow:
www/src/prism-styles.js new
+171
@@ -0,0 +1,171 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import {css} from 'glamor';
13 +import {colors} from 'theme';
14 +
15 +const prismColors = {
16 + char: '#D8DEE9',
17 + comment: '#999999',
18 + keyword: '#c5a5c5',
19 + lineHighlight: '#393d45',
20 + primitive: '#5a9bcf',
21 + string: '#8dc891',
22 + variable: '#d7deea',
23 + boolean: '#ff8b50',
24 + punctuation: '#5FB3B3',
25 + tag: '#fc929e',
26 + function: '#79b6f2',
27 + className: '#FAC863',
28 + method: '#6699CC',
29 + operator: '#fc929e',
30 +};
31 +
32 +css.global('.gatsby-highlight', {
33 + background: colors.dark,
34 + color: colors.white,
35 + borderRadius: 10,
36 + overflow: 'auto',
37 + tabSize: '1.5em',
38 +});
39 +
40 +css.global(
41 + `
42 +.gatsby-highlight code[class*="gatsby-code-"],
43 +.gatsby-highlight pre[class*="gatsby-code-"],
44 +.gatsby-highlight pre.prism-code`,
45 + {
46 + height: 'auto !important',
47 + margin: '1rem',
48 + fontSize: 14,
49 + lineHeight: '20px',
50 + whiteSpace: 'pre-wrap',
51 + wordBreak: 'break-word',
52 + },
53 +);
54 +
55 +css.global('.gatsby-highlight + .gatsby-highlight', {
56 + marginTop: 20,
57 +});
58 +
59 +css.global('.gatsby-highlight-code-line', {
60 + backgroundColor: prismColors.lineHighlight,
61 + display: 'block',
62 + margin: '-0.125rem calc(-1rem - 15px)',
63 + padding: '0.125rem calc(1rem + 15px)',
64 +});
65 +
66 +css.global('.token.attr-name', {
67 + color: prismColors.keyword,
68 +});
69 +
70 +css.global(
71 + `
72 +.token.comment,
73 +.token.block-comment,
74 +.token.prolog,
75 +.token.doctype,
76 +.token.cdata`,
77 + {
78 + color: prismColors.comment,
79 + },
80 +);
81 +
82 +css.global(
83 + `
84 +.token.property,
85 +.token.number,
86 +.token.function-name,
87 +.token.constant,
88 +.token.symbol,
89 +.token.deleted`,
90 + {
91 + color: prismColors.primitive,
92 + },
93 +);
94 +
95 +css.global(`.token.boolean`, {
96 + color: prismColors.boolean,
97 +});
98 +
99 +css.global(`.token.tag`, {
100 + color: prismColors.tag,
101 +});
102 +
103 +css.global(`.token.string`, {
104 + color: prismColors.string,
105 +});
106 +
107 +css.global(`.token.punctuation`, {
108 + color: prismColors.punctuation,
109 +});
110 +
111 +css.global(
112 + `
113 +.token.selector,
114 +.token.char,
115 +.token.builtin,
116 +.token.inserted`,
117 + {
118 + color: prismColors.char,
119 + },
120 +);
121 +
122 +css.global(`.token.function`, {
123 + color: prismColors.function,
124 +});
125 +
126 +css.global(
127 + `
128 +.token.operator,
129 +.token.entity,
130 +.token.url,
131 +.token.variable`,
132 + {
133 + color: prismColors.variable,
134 + },
135 +);
136 +
137 +css.global('.token.attr-value', {
138 + color: prismColors.string,
139 +});
140 +
141 +css.global('.token.keyword', {
142 + color: prismColors.keyword,
143 +});
144 +
145 +css.global(
146 + `
147 +.token.atrule,
148 +.token.class-name`,
149 + {
150 + color: prismColors.className,
151 + },
152 +);
153 +
154 +css.global('.token.important', {
155 + fontWeight: 400,
156 +});
157 +
158 +css.global('.token.bold', {
159 + fontWeight: 700,
160 +});
161 +css.global('.token.italic', {
162 + fontStyle: 'italic',
163 +});
164 +
165 +css.global('.token.entity', {
166 + cursor: 'help',
167 +});
168 +
169 +css.global('.namespace', {
170 + opacity: 0.7,
171 +});
www/src/templates/blog.js new
+90
@@ -0,0 +1,90 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import PropTypes from 'prop-types';
13 +import React from 'react';
14 +import MarkdownPage from 'components/MarkdownPage';
15 +import {createLinkBlog} from 'utils/createLink';
16 +
17 +const toSectionList = allMarkdownRemark => [
18 + {
19 + title: 'Recent Posts',
20 + items: allMarkdownRemark.edges
21 + .map(({node}) => ({
22 + id: node.fields.slug,
23 + title: node.frontmatter.title,
24 + }))
25 + .concat({
26 + id: '/blog/all.html',
27 + title: 'All posts ...',
28 + }),
29 + },
30 +];
31 +
32 +const Blog = ({data, location}) => (
33 + <MarkdownPage
34 + authors={data.markdownRemark.frontmatter.author}
35 + createLink={createLinkBlog}
36 + date={data.markdownRemark.fields.date}
37 + location={location}
38 + ogDescription={data.markdownRemark.excerpt}
39 + markdownRemark={data.markdownRemark}
40 + sectionList={toSectionList(data.allMarkdownRemark)}
41 + titlePostfix=" - React Blog"
42 + />
43 +);
44 +
45 +Blog.propTypes = {
46 + data: PropTypes.object.isRequired,
47 +};
48 +
49 +// eslint-disable-next-line no-undef
50 +export const pageQuery = graphql`
51 + query TemplateBlogMarkdown($slug: String!) {
52 + markdownRemark(fields: { slug: { eq: $slug } }) {
53 + html
54 + excerpt(pruneLength: 500)
55 + frontmatter {
56 + title
57 + next
58 + prev
59 + author {
60 + frontmatter {
61 + name
62 + url
63 + }
64 + }
65 + }
66 + fields {
67 + date(formatString: "MMMM DD, YYYY")
68 + path
69 + }
70 + }
71 + allMarkdownRemark(
72 + limit: 10,
73 + filter: { id: { regex: "/_posts/" } }
74 + sort: { fields: [fields___date], order: DESC }
75 + ) {
76 + edges {
77 + node {
78 + frontmatter {
79 + title
80 + }
81 + fields {
82 + slug
83 + }
84 + }
85 + }
86 + }
87 + }
88 +`;
89 +
90 +export default Blog;
www/src/templates/community.js new
+49
@@ -0,0 +1,49 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import MarkdownPage from 'components/MarkdownPage';
13 +import PropTypes from 'prop-types';
14 +import React from 'react';
15 +import {createLinkCommunity} from 'utils/createLink';
16 +import {sectionListCommunity} from 'utils/sectionList';
17 +
18 +const Community = ({data, location}) => (
19 + <MarkdownPage
20 + createLink={createLinkCommunity}
21 + location={location}
22 + markdownRemark={data.markdownRemark}
23 + sectionList={sectionListCommunity}
24 + titlePostfix=" - React"
25 + />
26 +);
27 +
28 +Community.propTypes = {
29 + data: PropTypes.object.isRequired,
30 +};
31 +
32 +// eslint-disable-next-line no-undef
33 +export const pageQuery = graphql`
34 + query TemplateCommunityMarkdown($slug: String!) {
35 + markdownRemark(fields: { slug: { eq: $slug } }) {
36 + html
37 + frontmatter {
38 + title
39 + next
40 + prev
41 + }
42 + fields {
43 + path
44 + }
45 + }
46 + }
47 +`;
48 +
49 +export default Community;
www/src/templates/components/ButtonLink/ButtonLink.js new
+88
@@ -0,0 +1,88 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Link from 'gatsby-link';
13 +import React from 'react';
14 +import {colors, media} from 'theme';
15 +
16 +const ArrowSvg = ({cssProps = {}}) => (
17 + <svg
18 + css={cssProps}
19 + height="12"
20 + xmlns="http://www.w3.org/2000/svg"
21 + viewBox="0 0 4.53657 8.69699">
22 + <path
23 + d={`
24 + M.18254,8.697a.18149.18149,0,0,1-.12886-.31034L4.09723,4.34126.05369.29954a.18149.18149,
25 + 0,0,1,.2559-.2559L4.4838,4.21785a.18149.18149,0,0,1,0,.2559L.30958,8.648A.18149.18149,
26 + 0,0,1,.18254,8.697Z
27 + `}
28 + fill="currentColor"
29 + />
30 + </svg>
31 +);
32 +
33 +const ButtonLink = ({children, type, ...rest}) => {
34 + let typeStyle;
35 + switch (type) {
36 + case 'primary':
37 + typeStyle = primaryStyle;
38 + break;
39 + case 'secondary':
40 + typeStyle = secondaryStyle;
41 + break;
42 + }
43 +
44 + return (
45 + <Link {...rest} css={[style, typeStyle]}>
46 + {children}
47 + {type === 'secondary' && <ArrowSvg cssProps={{marginLeft: 10}} />}
48 + </Link>
49 + );
50 +};
51 +
52 +const style = {
53 + display: 'inline-block',
54 + fontSize: 16,
55 +
56 + [media.greaterThan('xlarge')]: {
57 + fontSize: 20,
58 + },
59 +};
60 +
61 +const primaryStyle = {
62 + backgroundColor: colors.brand,
63 + color: colors.black,
64 + fontWeight: 300,
65 + padding: '10px 25px',
66 + whiteSpace: 'nowrap',
67 + transition: 'background-color 0.2s ease-out',
68 +
69 + [media.greaterThan('xlarge')]: {
70 + paddingTop: 15,
71 + paddingBottom: 15,
72 + },
73 +
74 + ':hover': {
75 + backgroundColor: colors.white,
76 + },
77 +};
78 +
79 +const secondaryStyle = {
80 + color: colors.brand,
81 + transition: 'color 0.2s ease-out',
82 +
83 + ':hover': {
84 + color: colors.white,
85 + },
86 +};
87 +
88 +export default ButtonLink;
www/src/templates/components/ButtonLink/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import ButtonLink from './ButtonLink';
13 +
14 +export default ButtonLink;
www/src/templates/components/ChevronSvg/index.js new
+41
@@ -0,0 +1,41 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +
14 +const ChevronSvg = ({size = 10, cssProps = {}}) => (
15 + <svg
16 + css={cssProps}
17 + viewBox="0 0 926.23699 573.74994"
18 + version="1.1"
19 + x="0px"
20 + y="0px"
21 + width={size}
22 + height={size}>
23 + <g transform="translate(904.92214,-879.1482)">
24 + <path
25 + d={`
26 + m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,
27 + -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,
28 + 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,
29 + -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,
30 + -174.68583 0.6895,0 26.281,25.03215 56.8701,
31 + 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864
32 + -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,
33 + -104.0616 -231.873,-231.248 z
34 + `}
35 + fill="currentColor"
36 + />
37 + </g>
38 + </svg>
39 +);
40 +
41 +export default ChevronSvg;
www/src/templates/components/ExternalLinkSvg/index.js new
+39
@@ -0,0 +1,39 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +
14 +const ExternalLinkSvg = ({cssProps = {}}) => (
15 + <svg
16 + x="0px"
17 + y="0px"
18 + viewBox="0 0 100 100"
19 + width={15}
20 + height={15}
21 + css={cssProps}>
22 + <path
23 + fill="currentColor"
24 + d={`
25 + M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,
26 + 0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
27 + `}
28 + />
29 + <polygon
30 + fill="currentColor"
31 + points={`
32 + 45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,
33 + 14.9 62.8,22.9 71.5,22.9
34 + `}
35 + />
36 + </svg>
37 +);
38 +
39 +export default ExternalLinkSvg;
www/src/templates/components/MetaTitle/index.js new
+38
@@ -0,0 +1,38 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +import {colors} from 'theme';
14 +
15 +const MetaTitle = ({
16 + children,
17 + title,
18 + cssProps = {},
19 + onClick,
20 + onDark = false,
21 +}) => (
22 + <div
23 + onClick={onClick}
24 + css={{
25 + color: onDark ? colors.subtleOnDark : colors.subtle,
26 + cursor: onClick ? 'pointer' : null,
27 + fontSize: 14,
28 + fontWeight: 700,
29 + lineHeight: 3,
30 + textTransform: 'uppercase',
31 + letterSpacing: '0.08em',
32 + ...cssProps,
33 + }}>
34 + {children}
35 + </div>
36 +);
37 +
38 +export default MetaTitle;
www/src/templates/components/NavigationFooter/NavigationFooter.js new
+134
@@ -0,0 +1,134 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import Flex from 'components/Flex';
14 +import Link from 'gatsby-link';
15 +import PropTypes from 'prop-types';
16 +import React from 'react';
17 +import {colors, fonts, media} from 'theme';
18 +
19 +const NavigationFooter = ({next, prev, location}) => {
20 + return (
21 + <div
22 + css={{
23 + background: colors.dark,
24 + color: colors.white,
25 + paddingTop: 50,
26 + paddingBottom: 50,
27 + }}>
28 + <Container>
29 + <Flex
30 + type="ul"
31 + halign="space-between"
32 + css={{
33 + [media.between('small', 'medium')]: {
34 + paddingRight: 240,
35 + },
36 +
37 + [media.between('large', 'largerSidebar')]: {
38 + paddingRight: 280,
39 + },
40 +
41 + [media.between('largerSidebar', 'sidebarFixed', true)]: {
42 + paddingRight: 380,
43 + },
44 + }}>
45 + <Flex basis="50%" type="li">
46 + {prev &&
47 + <div>
48 + <SecondaryLabel>Previous article</SecondaryLabel>
49 + <div
50 + css={{
51 + paddingTop: 10,
52 + }}>
53 + <PrimaryLink location={location} to={prev}>
54 + {linkToTitle(prev)}
55 + </PrimaryLink>
56 + </div>
57 + </div>}
58 + </Flex>
59 + {next &&
60 + <Flex
61 + halign="flex-end"
62 + basis="50%"
63 + type="li"
64 + css={{
65 + textAlign: 'right',
66 + }}>
67 + <div>
68 + <SecondaryLabel>Next article</SecondaryLabel>
69 + <div
70 + css={{
71 + paddingTop: 10,
72 + }}>
73 + <PrimaryLink location={location} to={next}>
74 + {linkToTitle(next)}
75 + </PrimaryLink>
76 + </div>
77 + </div>
78 + </Flex>}
79 + </Flex>
80 + </Container>
81 + </div>
82 + );
83 +};
84 +
85 +NavigationFooter.propTypes = {
86 + next: PropTypes.string,
87 + prev: PropTypes.string,
88 +};
89 +
90 +export default NavigationFooter;
91 +
92 +const linkToTitle = link => link.replace(/-/g, ' ').replace('.html', '');
93 +
94 +const PrimaryLink = ({children, to, location}) => {
95 + // quick fix
96 + // TODO: replace this with better method of getting correct full url
97 + const updatedUrl =
98 + (location && location.pathname.replace(/\/[^/]+\.html/, '/' + to)) || to;
99 + return (
100 + <Link
101 + css={{
102 + display: 'inline',
103 + textTransform: 'capitalize',
104 + borderColor: colors.subtle,
105 + transition: 'border-color 0.2s ease',
106 + fontSize: 30,
107 + borderBottomWidth: 1,
108 + borderBottomStyle: 'solid',
109 +
110 + [media.lessThan('large')]: {
111 + fontSize: 24,
112 + },
113 + [media.size('xsmall')]: {
114 + fontSize: 16,
115 + },
116 + ':hover': {
117 + borderColor: colors.white,
118 + },
119 + }}
120 + to={updatedUrl}>
121 + {children}
122 + </Link>
123 + );
124 +};
125 +
126 +const SecondaryLabel = ({children}) => (
127 + <div
128 + css={{
129 + color: colors.brand,
130 + ...fonts.small,
131 + }}>
132 + {children}
133 + </div>
134 +);
www/src/templates/components/NavigationFooter/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import NavigationFooter from './NavigationFooter';
13 +
14 +export default NavigationFooter;
www/src/templates/components/Sidebar/Section.js new
+95
@@ -0,0 +1,95 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 + */
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +import {colors, media} from 'theme';
14 +import MetaTitle from '../MetaTitle';
15 +import ChevronSvg from '../ChevronSvg';
16 +
17 +// TODO Update isActive link as document scrolls past anchor tags
18 +// Maybe used 'hashchange' along with 'scroll' to set/update active links
19 +
20 +const Section = ({
21 + createLink,
22 + isActive,
23 + location,
24 + onLinkClick,
25 + onSectionTitleClick,
26 + section,
27 +}) => (
28 + <div>
29 + <MetaTitle
30 + onClick={onSectionTitleClick}
31 + cssProps={{
32 + marginTop: 10,
33 +
34 + [media.greaterThan('small')]: {
35 + color: isActive ? colors.text : colors.subtle,
36 +
37 + ':hover': {
38 + color: colors.text,
39 + },
40 + },
41 + }}>
42 + {section.title}
43 + <ChevronSvg
44 + cssProps={{
45 + marginLeft: 7,
46 + transform: isActive ? 'rotateX(180deg)' : 'rotateX(0deg)',
47 + transition: 'transform 0.2s ease',
48 +
49 + [media.lessThan('small')]: {
50 + display: 'none',
51 + },
52 + }}
53 + />
54 + </MetaTitle>
55 + <ul
56 + css={{
57 + marginBottom: 10,
58 +
59 + [media.greaterThan('small')]: {
60 + display: isActive ? 'block' : 'none',
61 + },
62 + }}>
63 + {section.items.map(item => (
64 + <li
65 + key={item.id}
66 + css={{
67 + marginTop: 5,
68 + }}>
69 + {createLink({
70 + item,
71 + location,
72 + onLinkClick,
73 + section,
74 + })}
75 +
76 + {item.subitems &&
77 + <ul css={{marginLeft: 20}}>
78 + {item.subitems.map(subitem => (
79 + <li key={subitem.id}>
80 + {createLink({
81 + item: subitem,
82 + location,
83 + onLinkClick,
84 + section,
85 + })}
86 + </li>
87 + ))}
88 + </ul>}
89 + </li>
90 + ))}
91 + </ul>
92 + </div>
93 +);
94 +
95 +export default Section;
www/src/templates/components/Sidebar/Sidebar.js new
+70
@@ -0,0 +1,70 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 + */
9 +
10 +'use strict';
11 +
12 +import React, {Component} from 'react';
13 +import Flex from 'components/Flex';
14 +import Section from './Section';
15 +import {media} from 'theme';
16 +
17 +class Sidebar extends Component {
18 + constructor(props, context) {
19 + super(props, context);
20 +
21 + this.state = {
22 + activeSection: props.defaultActiveSection,
23 + };
24 + }
25 +
26 + render() {
27 + const {closeParentMenu, createLink, location, sectionList} = this.props;
28 + const {activeSection} = this.state;
29 +
30 + return (
31 + <Flex
32 + type="nav"
33 + direction="column"
34 + halign="stretch"
35 + css={{
36 + width: '100%',
37 + paddingLeft: 20,
38 + position: 'relative',
39 +
40 + [media.greaterThan('largerSidebar')]: {
41 + paddingLeft: 40,
42 + },
43 +
44 + [media.lessThan('small')]: {
45 + paddingBottom: 100,
46 + },
47 + }}>
48 + {sectionList.map((section, index) => (
49 + <Section
50 + createLink={createLink}
51 + isActive={activeSection === section || sectionList.length === 1}
52 + key={index}
53 + location={location}
54 + onLinkClick={closeParentMenu}
55 + onSectionTitleClick={() => this._toggleSection(section)}
56 + section={section}
57 + />
58 + ))}
59 + </Flex>
60 + );
61 + }
62 +
63 + _toggleSection(section) {
64 + this.setState(state => ({
65 + activeSection: state.activeSection === section ? null : section,
66 + }));
67 + }
68 +}
69 +
70 +export default Sidebar;
www/src/templates/components/Sidebar/index.js new
+14
@@ -0,0 +1,14 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Sidebar from './Sidebar';
13 +
14 +export default Sidebar;
www/src/templates/docs.js new
+49
@@ -0,0 +1,49 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import MarkdownPage from 'components/MarkdownPage';
13 +import PropTypes from 'prop-types';
14 +import React from 'react';
15 +import {createLinkDocs} from 'utils/createLink';
16 +import {sectionListDocs} from 'utils/sectionList';
17 +
18 +const Docs = ({data, location}) => (
19 + <MarkdownPage
20 + createLink={createLinkDocs}
21 + location={location}
22 + markdownRemark={data.markdownRemark}
23 + sectionList={sectionListDocs}
24 + titlePostfix=" - React"
25 + />
26 +);
27 +
28 +Docs.propTypes = {
29 + data: PropTypes.object.isRequired,
30 +};
31 +
32 +// eslint-disable-next-line no-undef
33 +export const pageQuery = graphql`
34 + query TemplateDocsMarkdown($slug: String!) {
35 + markdownRemark(fields: { slug: { eq: $slug } }) {
36 + html
37 + frontmatter {
38 + title
39 + next
40 + prev
41 + }
42 + fields {
43 + path
44 + }
45 + }
46 + }
47 +`;
48 +
49 +export default Docs;
www/src/templates/home.js new
+466
@@ -0,0 +1,466 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import ButtonLink from './components/ButtonLink';
13 +import Container from 'components/Container';
14 +import Flex from 'components/Flex';
15 +import mountCodeExample from 'utils/mountCodeExample';
16 +import PropTypes from 'prop-types';
17 +import React, {Component} from 'react';
18 +import TitleAndMetaTags from 'components/TitleAndMetaTags';
19 +import {colors, media, sharedStyles} from 'theme';
20 +import {urlRoot} from 'constants';
21 +
22 +class Home extends Component {
23 + componentDidMount() {
24 + mountCodeExample('helloExample', HELLO_COMPONENT);
25 + mountCodeExample('timerExample', TIMER_COMPONENT);
26 + mountCodeExample('todoExample', TODO_COMPONENT);
27 + mountCodeExample('markdownExample', MARKDOWN_COMPONENT);
28 + }
29 +
30 + render() {
31 + const {data} = this.props;
32 + const title = 'React - A JavaScript library for building user interfaces';
33 +
34 + return (
35 + <div css={{width: '100%'}}>
36 + <TitleAndMetaTags
37 + title={title}
38 + ogUrl={`${urlRoot}/${data.markdownRemark.fields.path}`}
39 + />
40 + <header
41 + css={{
42 + backgroundColor: colors.dark,
43 + color: colors.white,
44 + }}>
45 + <div
46 + css={{
47 + paddingTop: 45,
48 + paddingBottom: 20,
49 +
50 + [media.greaterThan('small')]: {
51 + paddingTop: 60,
52 + paddingBottom: 70,
53 + },
54 +
55 + [media.greaterThan('xlarge')]: {
56 + paddingTop: 95,
57 + paddingBottom: 85,
58 + maxWidth: 1500, // Positioning of background logo
59 + marginLeft: 'auto',
60 + marginRight: 'auto',
61 + backgroundImage: 'url(/large-logo.svg)',
62 + backgroundRepeat: 'no-repeat',
63 + backgroundPosition: '100% 100px',
64 + backgroundSize: '50% auto',
65 + },
66 + }}>
67 + <Container>
68 + <h1
69 + css={{
70 + color: colors.brand,
71 + textAlign: 'center',
72 + margin: 0,
73 + fontSize: 45,
74 + [media.size('xsmall')]: {
75 + fontSize: 30,
76 + },
77 + [media.greaterThan('xlarge')]: {
78 + fontSize: 60,
79 + },
80 + }}>
81 + React
82 + </h1>
83 + <p
84 + css={{
85 + paddingTop: 15,
86 + textAlign: 'center',
87 + fontSize: 24,
88 +
89 + [media.size('xsmall')]: {
90 + fontSize: 16,
91 + maxWidth: '12em',
92 + marginLeft: 'auto',
93 + marginRight: 'auto',
94 + },
95 +
96 + [media.greaterThan('xlarge')]: {
97 + paddingTop: 20,
98 + fontSize: 30,
99 + fontWeight: 300,
100 + },
101 + }}>
102 + A JavaScript library for building user interfaces
103 + </p>
104 + <Flex
105 + valign="center"
106 + css={{
107 + paddingTop: 40,
108 +
109 + [media.greaterThan('xlarge')]: {
110 + paddingTop: 65,
111 + },
112 + }}>
113 + <CtaItem>
114 + <ButtonLink to="/docs/hello-world.html" type="primary">
115 + Get Started
116 + </ButtonLink>
117 + </CtaItem>
118 + <CtaItem>
119 + <ButtonLink to="/tutorial/tutorial.html" type="secondary">
120 + Take the Tutorial
121 + </ButtonLink>
122 + </CtaItem>
123 + </Flex>
124 + </Container>
125 + </div>
126 + </header>
127 +
128 + <Container>
129 + <div
130 + css={[sharedStyles.markdown, markdownStyles]}
131 + dangerouslySetInnerHTML={{__html: data.markdownRemark.html}}
132 + />
133 + </Container>
134 +
135 + <section
136 + css={{
137 + background: colors.dark,
138 + color: colors.white,
139 + paddingTop: 45,
140 + paddingBottom: 45,
141 + }}>
142 + <Container>
143 + <Flex valign="center">
144 + <CtaItem>
145 + <ButtonLink to="/docs/hello-world.html" type="primary">
146 + Get Started
147 + </ButtonLink>
148 + </CtaItem>
149 + <CtaItem>
150 + <ButtonLink to="/tutorial/tutorial.html" type="secondary">
151 + Take the Tutorial
152 + </ButtonLink>
153 + </CtaItem>
154 + </Flex>
155 + </Container>
156 + </section>
157 + </div>
158 + );
159 + }
160 +}
161 +
162 +Home.propTypes = {
163 + data: PropTypes.object.isRequired,
164 + location: PropTypes.object.isRequired,
165 +};
166 +
167 +const CtaItem = ({children, primary = false}) => (
168 + <div
169 + css={{
170 + width: '50%',
171 +
172 + [media.between('small', 'large')]: {
173 + paddingLeft: 20,
174 + },
175 +
176 + [media.greaterThan('xlarge')]: {
177 + paddingLeft: 40,
178 + },
179 +
180 + '&:first-child': {
181 + textAlign: 'right',
182 + paddingRight: 15,
183 + },
184 +
185 + '&:nth-child(2)': {
186 + [media.greaterThan('small')]: {
187 + paddingLeft: 15,
188 + },
189 + },
190 + }}>
191 + {children}
192 + </div>
193 +);
194 +
195 +// eslint-disable-next-line no-undef
196 +export const pageQuery = graphql`
197 + query HomeMarkdown($slug: String!) {
198 + markdownRemark(fields: { slug: { eq: $slug } }) {
199 + html
200 + frontmatter {
201 + title
202 + }
203 + fields {
204 + path
205 + }
206 + }
207 + }
208 +`;
209 +
210 +export default Home;
211 +
212 +// TODO This nasty CSS is required because 'docs/index.md' defines hard-coded class names.
213 +const markdownStyles = {
214 + '& .home-section': {
215 + marginTop: 20,
216 + marginBottom: 15,
217 +
218 + [media.greaterThan('medium')]: {
219 + marginTop: 60,
220 + marginBottom: 65,
221 + },
222 + },
223 +
224 + '& .home-section:first-child': {
225 + [media.lessThan('medium')]: {
226 + marginTop: 0,
227 + marginBottom: 0,
228 + overflowX: 'auto',
229 + paddingTop: 30,
230 + WebkitOverflowScrolling: 'touch',
231 + position: 'relative',
232 + maskImage: 'linear-gradient(to right, transparent, white 10px, white 90%, transparent)',
233 + },
234 + },
235 +
236 + '& .homeDivider': {
237 + height: 1,
238 + marginBottom: -1,
239 + border: 'none',
240 + borderBottom: `1 solid ${colors.divider}`,
241 + },
242 +
243 + '& .marketing-row': {
244 + display: 'flex',
245 + flexDirection: 'row',
246 +
247 + [media.lessThan('medium')]: {
248 + display: 'block',
249 + whiteSpace: 'nowrap',
250 + },
251 + },
252 +
253 + '& .marketing-col': {
254 + display: 'flex',
255 + flexDirection: 'column',
256 + flex: '0 1 33%',
257 + marginLeft: 40,
258 +
259 + '&:first-of-type': {
260 + marginLeft: 0,
261 +
262 + [media.lessThan('medium')]: {
263 + marginLeft: 10,
264 + },
265 + },
266 +
267 + [media.lessThan('medium')]: {
268 + display: 'inline-block',
269 + verticalAlign: 'top',
270 + marginLeft: 0,
271 + whiteSpace: 'normal',
272 + width: '75%',
273 + marginRight: 20,
274 + paddingBottom: 40,
275 +
276 + '&:first-of-type': {
277 + marginTop: 0,
278 + },
279 + },
280 +
281 + '& h3': {
282 + color: colors.subtle,
283 + paddingTop: 0,
284 +
285 + [media.lessThan('large')]: {
286 + fontSize: 18,
287 + fontWeight: 400,
288 + },
289 +
290 + [media.greaterThan('xlarge')]: {
291 + fontSize: 24,
292 + fontWeight: 400,
293 + },
294 + },
295 +
296 + '& p': {
297 + lineHeight: 1.7,
298 + },
299 +
300 + '& h3 + p': {
301 + marginTop: 20,
302 + },
303 + },
304 +
305 + '& .example': {
306 + marginTop: 40,
307 +
308 + '&:first-child': {
309 + marginTop: 0,
310 + },
311 +
312 + [media.greaterThan('xlarge')]: {
313 + marginTop: 80,
314 + },
315 + },
316 +};
317 +
318 +// TODO Move these hard-coded examples into example files and out of the template?
319 +// Alternately, move them into the markdown and transform them during build?
320 +const name = Math.random() > 0.5 ? 'John' : 'Jane';
321 +const HELLO_COMPONENT = `
322 +class HelloMessage extends React.Component {
323 + render() {
324 + return (
325 + <div>
326 + Hello {this.props.name}
327 + </div>
328 + );
329 + }
330 +}
331 +
332 +ReactDOM.render(
333 + <HelloMessage name="${name}" />,
334 + mountNode
335 +);
336 +`.trim();
337 +
338 +const TIMER_COMPONENT = `
339 +class Timer extends React.Component {
340 + constructor(props) {
341 + super(props);
342 + this.state = { seconds: 0 };
343 + }
344 +
345 + tick() {
346 + this.setState((prevState) => ({
347 + seconds: prevState.seconds + 1
348 + }));
349 + }
350 +
351 + componentDidMount() {
352 + this.interval = setInterval(() => this.tick(), 1000);
353 + }
354 +
355 + componentWillUnmount() {
356 + clearInterval(this.interval);
357 + }
358 +
359 + render() {
360 + return (
361 + <div>
362 + Seconds: {this.state.seconds}
363 + </div>
364 + );
365 + }
366 +}
367 +
368 +ReactDOM.render(<Timer />, mountNode);
369 +`.trim();
370 +
371 +var TODO_COMPONENT = `
372 +class TodoApp extends React.Component {
373 + constructor(props) {
374 + super(props);
375 + this.state = { items: [], text: '' };
376 + this.handleChange = this.handleChange.bind(this);
377 + this.handleSubmit = this.handleSubmit.bind(this);
378 + }
379 +
380 + render() {
381 + return (
382 + <div>
383 + <h3>TODO</h3>
384 + <TodoList items={this.state.items} />
385 + <form onSubmit={this.handleSubmit}>
386 + <input
387 + onChange={this.handleChange}
388 + value={this.state.text}
389 + />
390 + <button>
391 + Add #{this.state.items.length + 1}
392 + </button>
393 + </form>
394 + </div>
395 + );
396 + }
397 +
398 + handleChange(e) {
399 + this.setState({ text: e.target.value });
400 + }
401 +
402 + handleSubmit(e) {
403 + e.preventDefault();
404 + const newItem = {
405 + text: this.state.text,
406 + id: Date.now()
407 + };
408 + this.setState((prevState) => ({
409 + items: prevState.items.concat(newItem),
410 + text: ''
411 + }));
412 + }
413 +}
414 +
415 +class TodoList extends React.Component {
416 + render() {
417 + return (
418 + <ul>
419 + {this.props.items.map(item => (
420 + <li key={item.id}>{item.text}</li>
421 + ))}
422 + </ul>
423 + );
424 + }
425 +}
426 +
427 +ReactDOM.render(<TodoApp />, mountNode);
428 +`.trim();
429 +
430 +var MARKDOWN_COMPONENT = `
431 +class MarkdownEditor extends React.Component {
432 + constructor(props) {
433 + super(props);
434 + this.handleChange = this.handleChange.bind(this);
435 + this.state = { value: 'Type some *markdown* here!' };
436 + }
437 +
438 + handleChange(e) {
439 + this.setState({ value: e.target.value });
440 + }
441 +
442 + getRawMarkup() {
443 + const md = new Remarkable();
444 + return { __html: md.render(this.state.value) };
445 + }
446 +
447 + render() {
448 + return (
449 + <div className="MarkdownEditor">
450 + <h3>Input</h3>
451 + <textarea
452 + onChange={this.handleChange}
453 + defaultValue={this.state.value}
454 + />
455 + <h3>Output</h3>
456 + <div
457 + className="content"
458 + dangerouslySetInnerHTML={this.getRawMarkup()}
459 + />
460 + </div>
461 + );
462 + }
463 +}
464 +
465 +ReactDOM.render(<MarkdownEditor />, mountNode);
466 +`.trim();
www/src/templates/installation.js new
+219
@@ -0,0 +1,219 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import Container from 'components/Container';
13 +import Flex from 'components/Flex';
14 +import MarkdownHeader from 'components/MarkdownHeader';
15 +import NavigationFooter from 'templates/components/NavigationFooter';
16 +import PropTypes from 'prop-types';
17 +import React, {Component} from 'react';
18 +import StickyResponsiveSidebar from 'components/StickyResponsiveSidebar';
19 +import TitleAndMetaTags from 'components/TitleAndMetaTags';
20 +import {createLinkDocs} from 'utils/createLink';
21 +import findSectionForPath from 'utils/findSectionForPath';
22 +import {sectionListDocs} from 'utils/sectionList';
23 +import {sharedStyles} from 'theme';
24 +import {urlRoot} from 'constants';
25 +
26 +// HACK: copied from 'installation.md'
27 +// TODO: clean this up.
28 +function setSelected(value) {
29 + var tabs = document.querySelectorAll('li[role="tab"]');
30 + for (var i = 0; i < tabs.length; ++i) {
31 + var tab = tabs[i];
32 + if (tab.className === 'button-' + value) {
33 + tabs[i].setAttribute('aria-selected', 'true');
34 + tabs[i].setAttribute('tabindex', '0');
35 + } else {
36 + tabs[i].setAttribute('aria-selected', 'false');
37 + tabs[i].setAttribute('tabindex', '-1');
38 + }
39 + }
40 +}
41 +
42 +function keyToggle(e, value, prevTab, nextTab) {
43 + // left arrow <-
44 + if (e.keyCode === 37) {
45 + document.getElementById(prevTab).focus();
46 + display('target', prevTab);
47 + }
48 + // right arrow ->
49 + if (e.keyCode === 39) {
50 + document.getElementById(nextTab).focus();
51 + display('target', nextTab);
52 + }
53 +}
54 +
55 +function display(type, value) {
56 + setSelected(value);
57 + var container = document.getElementsByTagName('section')[0].parentNode
58 + .parentNode;
59 + container.className =
60 + 'display-' +
61 + type +
62 + '-' +
63 + value +
64 + ' ' +
65 + container.className.replace(RegExp('display-' + type + '-[a-z]+ ?'), '');
66 +}
67 +
68 +var foundHash = false;
69 +function selectTabForHashLink(location) {
70 + var hashLinks = document.querySelectorAll('a.anchor');
71 + for (var i = 0; i < hashLinks.length && !foundHash; ++i) {
72 + if (location && hashLinks[i].hash === location.hash) {
73 + var parent = hashLinks[i].parentElement;
74 + while (parent) {
75 + if (parent.tagName === 'SECTION') {
76 + var target = null;
77 + if (parent.className.indexOf('fiddle') > -1) {
78 + target = 'fiddle';
79 + } else if (parent.className.indexOf('newapp') > -1) {
80 + target = 'newapp';
81 + } else if (parent.className.indexOf('existingapp') > -1) {
82 + target = 'existingapp';
83 + } else {
84 + break; // assume we don't have anything.
85 + }
86 + display('target', target);
87 + foundHash = true;
88 + break;
89 + }
90 + parent = parent.parentElement;
91 + }
92 + }
93 + }
94 +}
95 +
96 +// HACK Expose toggle functions global for markup-defined event handlers.
97 +// Don't acceess the 'window' object without checking first though,
98 +// Because it would break the (Node only) Gatsby build step.
99 +if (typeof window !== 'undefined') {
100 + window.keyToggle = keyToggle;
101 + window.display = display;
102 +}
103 +
104 +class InstallationPage extends Component {
105 + componentDidMount() {
106 + const location = this.props.location;
107 + // If we are coming to the page with a hash in it (i.e. from a search, for example), try to get
108 + // us as close as possible to the correct platform and dev os using the hashtag and section walk up.
109 + if (location && location.hash !== '' && location.hash !== 'content') {
110 + // content is default
111 + // Hash links are added a bit later so we wait for them.
112 + // HACK we don't have a window object if/when Gatsby executes this in node
113 + if (
114 + typeof window !== 'undefined' &&
115 + typeof window.addEventListener === 'function'
116 + ) {
117 + window.addEventListener(
118 + 'DOMContentLoaded',
119 + selectTabForHashLink.bind(null, location),
120 + );
121 + }
122 + }
123 + display('target', 'fiddle');
124 + }
125 +
126 + render() {
127 + const {data, location} = this.props;
128 + const {markdownRemark} = data;
129 +
130 + return (
131 + <Flex
132 + direction="column"
133 + grow="1"
134 + shrink="0"
135 + halign="stretch"
136 + css={{
137 + width: '100%',
138 + flex: '1 0 auto',
139 + position: 'relative',
140 + zIndex: 0,
141 + }}>
142 + <TitleAndMetaTags
143 + title="Installation - React"
144 + ogUrl={`${urlRoot}/${markdownRemark.fields.path || ''}`}
145 + />
146 + <div css={{flex: '1 0 auto'}}>
147 + <Container>
148 + <div css={sharedStyles.articleLayout.container}>
149 + <Flex type="article" direction="column" grow="1" halign="stretch">
150 + <MarkdownHeader title={markdownRemark.frontmatter.title} />
151 +
152 + <div css={sharedStyles.articleLayout.content}>
153 + <div
154 + css={[sharedStyles.markdown]}
155 + dangerouslySetInnerHTML={{__html: markdownRemark.html}}
156 + />
157 + {markdownRemark.fields.path &&
158 + <div css={{marginTop: 80}}>
159 + <a
160 + css={sharedStyles.articleLayout.editLink}
161 + href={`https://github.com/facebook/react/tree/master/docs/${markdownRemark.fields.path}`}>
162 + Edit this page
163 + </a>
164 + </div>}
165 + </div>
166 + </Flex>
167 +
168 + <div css={sharedStyles.articleLayout.sidebar}>
169 + <StickyResponsiveSidebar
170 + createLink={createLinkDocs}
171 + defaultActiveSection={findSectionForPath(
172 + location.pathname,
173 + sectionListDocs,
174 + )}
175 + location={location}
176 + sectionList={sectionListDocs}
177 + title="Installation"
178 + />
179 + </div>
180 + </div>
181 + </Container>
182 + </div>
183 +
184 + {/* TODO Read prev/next from index map, not this way */}
185 + {(markdownRemark.frontmatter.next || markdownRemark.frontmatter.prev) &&
186 + <NavigationFooter
187 + location={location}
188 + next={markdownRemark.frontmatter.next}
189 + prev={markdownRemark.frontmatter.prev}
190 + />}
191 + </Flex>
192 + );
193 + }
194 +}
195 +
196 +InstallationPage.propTypes = {
197 + data: PropTypes.shape({markdownRemark: PropTypes.object.isRequired})
198 + .isRequired,
199 + location: PropTypes.object.isRequired,
200 +};
201 +
202 +// eslint-disable-next-line no-undef
203 +export const pageQuery = graphql`
204 + query InstallationMarkdown($slug: String!) {
205 + markdownRemark(fields: { slug: { eq: $slug } }) {
206 + html
207 + frontmatter {
208 + title
209 + next
210 + prev
211 + }
212 + fields {
213 + path
214 + }
215 + }
216 + }
217 +`;
218 +
219 +export default InstallationPage;
www/src/templates/tutorial.js new
+60
@@ -0,0 +1,60 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import MarkdownPage from 'components/MarkdownPage';
13 +import PropTypes from 'prop-types';
14 +import React from 'react';
15 +import {createLinkTutorial} from 'utils/createLink';
16 +import {sectionListTutorial} from 'utils/sectionList';
17 +
18 +const Tutorial = ({data, location}) => {
19 + // HACK The injected location prop doesn't update when hash changes
20 + // This might be a gatsby issue, or a react-router/history issue,
21 + // Or we might be using either library incorrectly.
22 + // For now this patch keeps the hash in sync by JIT copying it from window.
23 + // The undefined check prevents us from breaking on production build.
24 + if (typeof window !== 'undefined' && typeof window.location !== 'undefined') {
25 + location.hash = window.location.hash;
26 + }
27 +
28 + return (
29 + <MarkdownPage
30 + createLink={createLinkTutorial}
31 + location={location}
32 + markdownRemark={data.markdownRemark}
33 + sectionList={sectionListTutorial}
34 + titlePostfix=" - React"
35 + />
36 + );
37 +};
38 +
39 +Tutorial.propTypes = {
40 + data: PropTypes.object.isRequired,
41 +};
42 +
43 +// eslint-disable-next-line no-undef
44 +export const pageQuery = graphql`
45 + query TemplateTutorialMarkdown($slug: String!) {
46 + markdownRemark(fields: { slug: { eq: $slug } }) {
47 + html
48 + frontmatter {
49 + title
50 + next
51 + prev
52 + }
53 + fields {
54 + path
55 + }
56 + }
57 + }
58 +`;
59 +
60 +export default Tutorial;
www/src/theme.js new
+401
@@ -0,0 +1,401 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 + * @flow
9 +*/
10 +
11 +'use strict';
12 +
13 +/**
14 + * Theme contains variables shared by styles of multiple components.
15 + */
16 +
17 +import hex2rgba from 'hex2rgba';
18 +
19 +const colors = {
20 + lighter: '#373940', // light blue
21 + dark: '#282c34', // dark blue
22 + darker: '#20232a', // really dark blue
23 + brand: '#61dafb', // electric blue
24 + brandLight: '#bbeffd',
25 + text: '#1a1a1a', // very dark grey / black substitute
26 + subtle: '#6d6d6d', // light grey for text
27 + subtleOnDark: '#999',
28 + divider: '#ececec', // very light grey
29 + note: '#ffe564', // yellow
30 + error: '#ff6464', // yellow
31 + white: '#ffffff',
32 + black: '#000000',
33 +};
34 +
35 +const SIZES = {
36 + xsmall: {min: 0, max: 599},
37 + small: {min: 600, max: 779},
38 + medium: {min: 780, max: 979},
39 + large: {min: 980, max: 1279},
40 + xlarge: {min: 1280, max: 1339},
41 + xxlarge: {min: 1340, max: Infinity},
42 +
43 + // Sidebar/nav related tweakpoints
44 + largerSidebar: {min: 1100, max: 1339},
45 + sidebarFixed: {min: 2000, max: Infinity},
46 +};
47 +
48 +type Size = $Keys<typeof SIZES>;
49 +
50 +const media = {
51 + between(smallKey: Size, largeKey: Size, excludeLarge: boolean = false) {
52 + if (excludeLarge) {
53 + return `@media (min-width: ${SIZES[smallKey].min}px) and (max-width: ${SIZES[largeKey].min - 1}px)`;
54 + } else {
55 + if (SIZES[largeKey].max === Infinity) {
56 + return `@media (min-width: ${SIZES[smallKey].min}px)`;
57 + } else {
58 + return `@media (min-width: ${SIZES[smallKey].min}px) and (max-width: ${SIZES[largeKey].max}px)`;
59 + }
60 + }
61 + },
62 +
63 + greaterThan(key: Size) {
64 + return `@media (min-width: ${SIZES[key].min}px)`;
65 + },
66 +
67 + lessThan(key: Size) {
68 + return `@media (max-width: ${SIZES[key].min - 1}px)`;
69 + },
70 +
71 + size(key: Size) {
72 + const size = SIZES[key];
73 +
74 + if (size.min == null) {
75 + return media.lessThan(key);
76 + } else if (size.max == null) {
77 + return media.greaterThan(key);
78 + } else {
79 + return media.between(key, key);
80 + }
81 + },
82 +};
83 +
84 +const fonts = {
85 + header: {
86 + fontSize: 60,
87 + lineHeight: '65px',
88 + fontWeight: 700,
89 +
90 + [media.lessThan('medium')]: {
91 + fontSize: 40,
92 + lineHeight: '45px',
93 + },
94 + },
95 + small: {
96 + fontSize: 14,
97 + },
98 +};
99 +
100 +// Shared styles are generally better as components,
101 +// Except when they must be used within nested CSS selectors.
102 +// This is the case for eg markdown content.
103 +const linkStyle = {
104 + backgroundColor: hex2rgba(colors.brandLight, 0.5),
105 + borderBottom: `1px solid ${hex2rgba(colors.black, 0.2)}`,
106 + color: colors.text,
107 +
108 + ':hover': {
109 + backgroundColor: colors.brandLight,
110 + borderBottomColor: colors.text,
111 + },
112 +};
113 +const sharedStyles = {
114 + link: linkStyle,
115 +
116 + articleLayout: {
117 + container: {
118 + display: 'flex',
119 + minHeight: 'calc(100vh - 60px)',
120 + [media.greaterThan('sidebarFixed')]: {
121 + maxWidth: 840,
122 + marginLeft: 'auto',
123 + marginRight: 'auto',
124 + },
125 + },
126 + content: {
127 + marginTop: 40,
128 + marginBottom: 120,
129 +
130 + [media.greaterThan('medium')]: {
131 + marginTop: 50,
132 + },
133 + },
134 + sidebar: {
135 + display: 'flex',
136 + flexDirection: 'column',
137 +
138 + [media.between('small', 'sidebarFixed')]: {
139 + borderLeft: '1px solid #ececec',
140 + marginLeft: 80,
141 + },
142 +
143 + [media.between('small', 'largerSidebar')]: {
144 + flex: '0 0 200px',
145 + marginLeft: 80,
146 + },
147 +
148 + [media.between('small', 'medium')]: {
149 + marginLeft: 40,
150 + },
151 +
152 + [media.greaterThan('largerSidebar')]: {
153 + flex: '0 0 300px',
154 + },
155 +
156 + [media.greaterThan('sidebarFixed')]: {
157 + position: 'fixed',
158 + right: 0,
159 + width: 300,
160 + zIndex: 2,
161 + },
162 + },
163 +
164 + editLink: {
165 + color: colors.subtle,
166 + borderColor: colors.divider,
167 + transition: 'all 0.2s ease',
168 + transitionPropery: 'color, border-color',
169 + whiteSpace: 'nowrap',
170 + borderBottomWidth: 1,
171 + borderBottomStyle: 'solid',
172 +
173 + ':hover': {
174 + color: colors.text,
175 + borderColor: colors.text,
176 + },
177 + },
178 + },
179 +
180 + markdown: {
181 + lineHeight: '25px',
182 +
183 + '& .gatsby-highlight': {
184 + marginTop: 25,
185 + marginLeft: -30,
186 + marginRight: -30,
187 + paddingLeft: 15,
188 + paddingRight: 15,
189 +
190 + [media.lessThan('small')]: {
191 + marginLeft: -20,
192 + marginRight: -20,
193 + borderRadius: 0,
194 + },
195 + },
196 +
197 + '& a:not(.anchor):not(.gatsby-resp-image-link)': linkStyle,
198 +
199 + '& > p:first-child': {
200 + fontSize: 18,
201 + lineHeight: '30px',
202 + color: colors.subtle,
203 +
204 + [media.greaterThan('xlarge')]: {
205 + fontSize: 24,
206 + lineHeight: '40px',
207 + },
208 + },
209 +
210 + '& p': {
211 + marginTop: 35,
212 + fontSize: 18,
213 + lineHeight: 1.7,
214 + maxWidth: '42em',
215 +
216 + '&:first-of-type': {
217 + marginTop: 15,
218 + },
219 +
220 + '&:first-child': {
221 + marginTop: 0,
222 + },
223 +
224 + [media.lessThan('large')]: {
225 + fontSize: 16,
226 + lineHeight: '30px',
227 + },
228 + },
229 +
230 + '& h3 + p, & h3 + p:first-of-type': {
231 + marginTop: 20,
232 + },
233 +
234 + '& p > code, & li > code': {
235 + background: hex2rgba(colors.note, 0.3),
236 + padding: '0 3px',
237 + fontSize: 16,
238 + color: colors.text,
239 + wordBreak: 'break-word',
240 + },
241 +
242 + '& hr': {
243 + height: 1,
244 + marginBottom: -1,
245 + border: 'none',
246 + borderBottom: `1px solid ${colors.divider}`,
247 + marginTop: 40,
248 +
249 + ':first-child': {
250 + marginTop: 0,
251 + },
252 + },
253 +
254 + '& h1': {
255 + lineHeight: 1.2,
256 +
257 + [media.size('xsmall')]: {
258 + fontSize: 30,
259 + },
260 +
261 + [media.between('small', 'large')]: {
262 + fontSize: 45,
263 + },
264 +
265 + [media.greaterThan('xlarge')]: {
266 + fontSize: 60,
267 + },
268 + },
269 +
270 + '& h2': {
271 + borderTop: `1px solid ${colors.divider}`,
272 + marginTop: 44,
273 + paddingTop: 40,
274 + lineHeight: 1.2,
275 +
276 + ':first-child': {
277 + borderTop: 0,
278 + marginTop: 0,
279 + paddingTop: 0,
280 + },
281 +
282 + [media.lessThan('large')]: {
283 + fontSize: 20,
284 + },
285 + [media.greaterThan('xlarge')]: {
286 + fontSize: 35,
287 + },
288 + },
289 +
290 + '& hr + h2': {
291 + borderTop: 0,
292 + marginTop: 0,
293 + },
294 +
295 + '& h3': {
296 + paddingTop: 45,
297 +
298 + [media.greaterThan('xlarge')]: {
299 + fontSize: 25,
300 + lineHeight: 1.3,
301 + },
302 + },
303 +
304 + '& h2 + h3, & h2 + h3:first-of-type': {
305 + paddingTop: 30,
306 + },
307 +
308 + '& h4': {
309 + fontSize: 20,
310 + color: colors.subtle,
311 + lineHeight: 1.3,
312 + marginTop: 50,
313 + fontWeight: 400,
314 + },
315 +
316 + '& h4 + p': {
317 + marginTop: 20,
318 + },
319 +
320 + '& ol, & ul': {
321 + marginTop: 20,
322 + fontSize: 16,
323 + color: colors.text,
324 +
325 + [media.lessThan('small')]: {
326 + paddingLeft: 20,
327 + },
328 +
329 + '& p, & p:first-of-type': {
330 + fontSize: 16,
331 + marginTop: 0,
332 + lineHeight: 1.2,
333 + },
334 +
335 + '& li': {
336 + marginTop: 20,
337 + },
338 +
339 + '& li.button-newapp': {
340 + marginTop: 0,
341 + },
342 +
343 + '& ol, & ul': {
344 + marginLeft: 20,
345 + },
346 + },
347 +
348 + '& img': {
349 + maxWidth: '100%',
350 + },
351 +
352 + '& ol': {
353 + listStyle: 'decimal',
354 + },
355 +
356 + '& ul': {
357 + listStyle: 'disc',
358 + },
359 +
360 + '& blockquote': {
361 + backgroundColor: hex2rgba('#ffe564', 0.3),
362 + borderLeftColor: colors.note,
363 + borderLeftWidth: 9,
364 + borderLeftStyle: 'solid',
365 + padding: '20px 45px 20px 26px',
366 + marginBottom: 30,
367 + marginTop: 20,
368 + marginLeft: -30,
369 + marginRight: -30,
370 +
371 + [media.lessThan('small')]: {
372 + marginLeft: -20,
373 + marginRight: -20,
374 + },
375 +
376 + '& p': {
377 + marginTop: 15,
378 +
379 + '&:first-of-type': {
380 + fontWeight: 700,
381 + marginTop: 0,
382 + },
383 +
384 + '&:nth-of-type(2)': {
385 + marginTop: 0,
386 + },
387 + },
388 + },
389 +
390 + '& .gatsby-highlight + blockquote': {
391 + marginTop: 40,
392 + },
393 + },
394 +};
395 +
396 +export default {
397 + colors,
398 + fonts,
399 + media,
400 + sharedStyles,
401 +};
www/src/utils/createLink.js new
+118
@@ -0,0 +1,118 @@
1 +/**
2 + * Copyright 2015-present, Facebook, Inc.
3 + * All rights reserved.
4 + *
5 + * This source code is licensed under the BSD-style license found in the
6 + * LICENSE file in the root directory of this source tree. An additional grant
7 + * of patent rights can be found in the PATENTS file in the same directory.
8 + *
9 + * @emails react-core
10 +*/
11 +
12 +'use strict';
13 +
14 +import Link from 'gatsby-link';
15 +import React from 'react';
16 +import ExternalLinkSvg from 'templates/components/ExternalLinkSvg';
17 +import isItemActive from 'utils/isItemActive';
18 +import slugify from 'utils/slugify';
19 +import {colors, media} from 'theme';
20 +
21 +const createLinkBlog = ({item, location, section}) => {
22 + const isActive = isItemActive(location, item);
23 +
24 + return (
25 + <Link css={[linkCss, isActive && activeLinkCss]} to={item.id}>
26 + {isActive && <span css={activeLinkBefore} />}
27 + {item.title}
28 + </Link>
29 + );
30 +};
31 +
32 +const createLinkCommunity = ({item, location, section}) => {
33 + if (item.href) {
34 + return (
35 + <a css={[linkCss]} href={item.href}>
36 + {item.title}
37 + <ExternalLinkSvg
38 + cssProps={{
39 + verticalAlign: -2,
40 + display: 'inline-block',
41 + marginLeft: 5,
42 + color: colors.subtle,
43 + }}
44 + />
45 + </a>
46 + );
47 + } else {
48 + return createLinkDocs({
49 + item,
50 + location,
51 + section,
52 + });
53 + }
54 +};
55 +
56 +const createLinkDocs = ({item, location, section}) => {
57 + const isActive = isItemActive(location, item);
58 +
59 + return (
60 + <Link
61 + css={[linkCss, isActive && activeLinkCss]}
62 + to={slugify(item.id, section.directory)}>
63 + {isActive && <span css={activeLinkBefore} />}
64 + {item.title}
65 + </Link>
66 + );
67 +};
68 +
69 +const createLinkTutorial = ({item, location, onLinkClick, section}) => {
70 + const isActive = isItemActive(location, item);
71 +
72 + return (
73 + <Link
74 + css={[linkCss, isActive && activeLinkCss]}
75 + onClick={onLinkClick}
76 + to={item.href}>
77 + {isActive && <span css={activeLinkBefore} />}
78 + {item.title}
79 + </Link>
80 + );
81 +};
82 +
83 +const activeLinkCss = {
84 + fontWeight: 700,
85 +};
86 +
87 +const activeLinkBefore = {
88 + width: 4,
89 + height: 25,
90 + borderLeft: `4px solid ${colors.brand}`,
91 + paddingLeft: 16,
92 + position: 'absolute',
93 + left: 0,
94 + marginTop: -3,
95 +
96 + [media.greaterThan('largerSidebar')]: {
97 + left: 15,
98 + },
99 +};
100 +
101 +const linkCss = {
102 + color: colors.text,
103 + display: 'inline-block',
104 + borderBottom: '1px solid transparent',
105 + transition: 'border 0.2s ease',
106 + marginTop: 5,
107 +
108 + '&:hover': {
109 + color: colors.subtle,
110 + },
111 +};
112 +
113 +export default {
114 + createLinkBlog,
115 + createLinkCommunity,
116 + createLinkDocs,
117 + createLinkTutorial,
118 +};
www/src/utils/findSectionForPath.js new
+38
@@ -0,0 +1,38 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import slugify from './slugify';
13 +
14 +/**
15 + * Helper method to locate the section containing the current URL/path.
16 + * This method specifically works with the nav_*.yml format.
17 + */
18 +const findSectionForPath = (pathname, sections) => {
19 + let activeSection;
20 +
21 + sections.forEach(section => {
22 + const match = section.items.some(
23 + item =>
24 + pathname.includes(slugify(item.id)) ||
25 + (item.subitems &&
26 + item.subitems.some(subitem =>
27 + pathname.includes(slugify(subitem.id)),
28 + )),
29 + );
30 + if (match) {
31 + activeSection = section;
32 + }
33 + });
34 +
35 + return activeSection;
36 +};
37 +
38 +export default findSectionForPath;
www/src/utils/isItemActive.js new
+34
@@ -0,0 +1,34 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import slugify from 'utils/slugify';
13 +
14 +const toAnchor = (href = '') => {
15 + const index = href.indexOf('#');
16 + return index >= 0 ? href.substr(index) : '';
17 +};
18 +
19 +// TODO Account for redirect_from URLs somehow; they currently won't match.
20 +// This comment should not be true anymore since we're using 300 redirects
21 +
22 +const isItemActive = (location, item) => {
23 + if (location.hash) {
24 + if (item.href) {
25 + return location.hash === toAnchor(item.href);
26 + }
27 + } else if (item.id.includes('html')) {
28 + return location.pathname.includes(item.id);
29 + } else {
30 + return location.pathname.includes(slugify(item.id));
31 + }
32 +};
33 +
34 +export default isItemActive;
www/src/utils/mountCodeExample.js new
+41
@@ -0,0 +1,41 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import CodeEditor from '../components/CodeEditor';
13 +import React from 'react';
14 +import ReactDOM from 'react-dom';
15 +
16 +// TODO This is a huge hack.
17 +// Remark transform this template to split code examples and their targets apart.
18 +const mountCodeExample = (containerId, code) => {
19 + const container = document.getElementById(containerId);
20 + const parent = container.parentElement;
21 +
22 + const children = Array.prototype.filter.call(
23 + parent.children,
24 + child => child !== container,
25 + );
26 + children.forEach(child => parent.removeChild(child));
27 +
28 + const description = children
29 + .map(child => child.outerHTML)
30 + .join('')
31 + .replace(/`([^`]+)`/g, '<code>$1</code>');
32 +
33 + ReactDOM.render(
34 + <CodeEditor code={code}>
35 + {<div dangerouslySetInnerHTML={{__html: description}} />}
36 + </CodeEditor>,
37 + container,
38 + );
39 +};
40 +
41 +export default mountCodeExample;
www/src/utils/sectionList.js new
+40
@@ -0,0 +1,40 @@
1 +/**
2 + * Copyright 2015-present, Facebook, Inc.
3 + * All rights reserved.
4 + *
5 + * This source code is licensed under the BSD-style license found in the
6 + * LICENSE file in the root directory of this source tree. An additional grant
7 + * of patent rights can be found in the PATENTS file in the same directory.
8 + *
9 + * @emails react-core
10 +*/
11 +
12 +'use strict';
13 +
14 +import navCommunity from '../../../docs/_data/nav_community.yml';
15 +import navContributing from '../../../docs/_data/nav_contributing.yml';
16 +import navDocs from '../../../docs/_data/nav_docs.yml';
17 +import navTutorial from '../../../docs/_data/nav_tutorial.yml';
18 +
19 +const sectionListDocs = navDocs
20 + .map(item => {
21 + item.directory = 'docs';
22 + return item;
23 + })
24 + .concat(
25 + navContributing.map(item => {
26 + item.directory = 'contributing';
27 + return item;
28 + }),
29 + );
30 +
31 +const sectionListCommunity = navCommunity.map(item => {
32 + item.directory = 'community';
33 + return item;
34 +});
35 +
36 +export {
37 + sectionListCommunity,
38 + sectionListDocs,
39 + navTutorial as sectionListTutorial,
40 +};
www/src/utils/slugify.js new
+18
@@ -0,0 +1,18 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import slugify from 'slugify';
13 +
14 +export default (string, directory) => {
15 + const filename = slugify(string) + '.html';
16 +
17 + return directory ? `/${directory}/${filename}` : filename;
18 +};
www/src/utils/toCommaSeparatedList.js new
+39
@@ -0,0 +1,39 @@
1 +/**
2 + * Copyright (c) 2013-present, Facebook, Inc.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @emails react-core
8 +*/
9 +
10 +'use strict';
11 +
12 +import React from 'react';
13 +
14 +const addString = (list, string) =>
15 + list.push(<span key={`${list.length}-${string}`}>{string}</span>);
16 +
17 +const toCommaSeparatedList = (array, renderCallback) => {
18 + if (array.length <= 1) {
19 + return array.map(renderCallback);
20 + }
21 +
22 + const list = [];
23 +
24 + array.forEach((item, index) => {
25 + if (index === array.length - 1) {
26 + addString(list, array.length === 2 ? ' and ' : ', and ');
27 + list.push(renderCallback(item, index));
28 + } else if (index > 0) {
29 + addString(list, ', ');
30 + list.push(renderCallback(item, index));
31 + } else {
32 + list.push(renderCallback(item, index));
33 + }
34 + });
35 +
36 + return list;
37 +};
38 +
39 +export default toCommaSeparatedList;
www/static/external.png
Binary files /dev/null and b/www/static/external.png differ
www/static/favicon.ico
Binary files /dev/null and b/www/static/favicon.ico differ
www/static/large-logo.svg new
+1
@@ -0,0 +1 @@
1 +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 823.85795 733"><title>large-logo</title><g opacity="0.05"><path d="M677.3796,237.5782v-.00013q-13.15347-4.51184-26.52168-8.35682,2.2162-9.00546,4.09815-18.08832c20.07545-97.45293,6.9495-175.96071-37.87563-201.8043C574.10386-15.45755,503.81433,10.386,432.82482,72.16188q-10.49272,9.15182-20.513,18.8248-6.70815-6.42994-13.651-12.60818c-74.39859-66.06005-148.97227-93.89436-193.75-67.97423-42.93648,24.85548-55.65406,98.66342-37.5803,191.01912q2.69729,13.71891,6.08893,27.28742c-10.55176,2.99712-20.74263,6.19108-30.49228,9.58925C55.70506,268.70848,0,316.37033,0,365.80411c0,51.06,59.796,102.27313,150.64951,133.32334q11.05033,3.759,22.27764,6.96393-3.64625,14.61321-6.47177,29.4132c-17.23148,90.75134-3.77376,162.80916,39.04973,187.51155,44.23076,25.50438,118.46536-.71107,190.75293-63.898q8.57022-7.49254,17.19138-15.84583,10.8498,10.46823,22.27032,20.3197c70.01968,60.25168,139.17161,84.58221,181.9586,59.81425,44.19066-25.581,58.549-102.99126,39.90285-197.17376q-2.13293-10.79053-4.94043-22.02241,7.82091-2.308,15.32089-4.78369C762.41022,468.13563,823.858,417.546,823.858,365.80425,823.858,316.19178,766.35894,268.20914,677.3796,237.5782ZM455.93017,98.71275c60.82417-52.934,117.67049-73.83348,143.5724-58.89543h.00007c27.58633,15.9116,38.31685,80.072,20.98329,164.213q-1.70415,8.22186-3.70447,16.37829A843.11184,843.11184,0,0,0,506.62552,203.0058c-22.63859-32.23516-46.09393-61.54615-69.6405-86.91573Q446.24028,107.16747,455.93017,98.71275ZM243.25691,408.03318q11.17562,21.58674,23.35692,42.63018,12.4265,21.46008,25.86547,42.30946a749.41279,749.41279,0,0,1-75.92641-12.20726C223.8269,457.27737,232.789,432.86312,243.25691,408.03318Zm-.0401-82.7737c-10.24913-24.30852-19.018-48.20874-26.17895-71.28855,23.50634-5.26129,48.57329-9.56006,74.69032-12.82331q-13.1139,20.4542-25.25653,41.50721Q254.34864,303.68289,243.21681,325.25948ZM261.9249,366.65q16.266-33.856,35.04269-66.41735v.00731q18.75838-32.54479,39.94668-63.59526c24.50177-1.85227,49.62338-2.82209,75.01843-2.82209,25.50817,0,50.66256.97714,75.15708,2.844q20.95959,30.97974,39.695,63.38007,18.82881,32.46544,35.51663,66.10381-16.50682,33.96338-35.39993,66.68714l-.00366.00007q-18.71978,32.51932-39.52367,63.77022c-24.44345,1.7466-49.70364,2.64707-75.44509,2.64707-25.63571,0-50.575-.79833-74.5919-2.35527q-21.33273-31.16146-40.26388-63.86883Q278.245,400.51974,261.9249,366.65Zm295.46159,83.76919q12.43081-21.55706,23.8929-43.65115h.00007a747.44376,747.44376,0,0,1,27.66653,72.4735,746.90393,746.90393,0,0,1-76.85248,13.10041Q545.15579,471.63431,557.38649,450.41918ZM580.944,325.28495Q569.52351,303.615,557.24445,282.4141v.00007q-12.081-20.868-25.05238-41.20092c26.2884,3.31791,51.472,7.72974,75.12057,13.1296A750.753,750.753,0,0,1,580.944,325.28495ZM412.32291,141.25908A752.67935,752.67935,0,0,1,460.805,199.78624q-48.65887-2.29927-97.37267-.02188C379.43872,178.65711,395.83523,159.04842,412.32291,141.25908ZM222.5434,40.86376C250.10793,24.9084,311.05246,47.66,375.2895,104.696c4.10546,3.64609,8.22921,7.46354,12.36021,11.41226a843.39474,843.39474,0,0,0-70.18008,86.8501A859.96423,859.96423,0,0,0,207.53247,220.044q-3.15066-12.6187-5.66241-25.38408v.00359C186.38506,115.5322,196.667,55.84191,222.5434,40.86376ZM182.3707,472.19q-10.24566-2.93259-20.33792-6.3661c-40.17271-13.73122-73.34857-31.57522-96.0893-51.04533-20.43275-17.50133-30.75117-34.875-30.75117-48.97441,0-29.99646,44.72664-68.26231,119.3222-94.26995q14.04424-4.87509,28.35573-8.922A844.0802,844.0802,0,0,0,223.02473,366.661,856.90089,856.90089,0,0,0,182.3707,472.19ZM373.09815,632.61472c-31.96537,27.94364-63.99632,47.76386-92.22443,57.736l-.00366-.00013c-25.36593,8.95844-45.56892,9.21367-57.7797,2.17319-25.98942-14.9856-36.78916-72.84909-22.05526-150.45626q2.62813-13.75741,6.01605-27.35312c33.74463,7.46354,71.0989,12.83435,111.02376,16.07206a856.43741,856.43741,0,0,0,70.71972,87.37518Q381.12547,625.58012,373.09815,632.61472Zm40.19824-39.779c-16.68093-18.00074-33.318-37.90848-49.56871-59.322q23.65952.92986,48.20142.93338,25.19087,0,49.73277-1.10475A748.43012,748.43012,0,0,1,413.2964,592.83569Zm213.71969,48.96723c-4.90764,26.44873-14.774,44.0814-26.97381,51.14381-25.96389,15.02922-81.49033-4.50652-141.36655-56.0333q-10.29837-8.85989-20.71716-18.88671c23.21474-25.3914,46.41485-54.91026,69.05717-87.68879,39.83-3.53291,77.45769-9.31215,111.58149-17.19849q2.51586,10.17258,4.45924,19.92955v-.00013C631.3003,574.71465,632.47794,612.3679,627.01609,641.80291Zm29.87976-175.78216h-.00359c-4.50293,1.49124-9.12622,2.93148-13.837,4.3279-10.42787-33.00808-24.50177-68.10909-41.71868-104.36958a825.689,825.689,0,0,0,40.09617-102.84915c8.42612,2.44291,16.60791,5.01338,24.4908,7.72974,76.24,26.241,122.74232,65.0464,122.74232,94.94445C788.6659,397.65278,738.44091,438.99953,656.89585,466.02076Z" fill="#fff"/><path d="M411.929,292.23677a73.56917,73.56917,0,1,1-73.56735,73.56735A73.56713,73.56713,0,0,1,411.929,292.23677" fill="#fff"/></g></svg>
\ No newline at end of file
www/static/search.svg new
+14
@@ -0,0 +1,14 @@
1 +<svg
2 + alt="Search"
3 + xmlns="http://www.w3.org/2000/svg"
4 + viewBox="0 0 16 16"
5 +>
6 + <path
7 + d="
8 + M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,
9 + 0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,
10 + 0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,
11 + 4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z"
12 + fill="#ffffff"
13 + />
14 +</svg>
\ No newline at end of file
www/yarn.lock new
+9812
@@ -0,0 +1,9812 @@
1 +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 +# yarn lockfile v1
3 +
4 +
5 +"@gaearon/react-live@1.7.1-with-safari-fix":
6 + version "1.7.1-with-safari-fix"
7 + resolved "https://registry.yarnpkg.com/@gaearon/react-live/-/react-live-1.7.1-with-safari-fix.tgz#fef25ce045749b24c79f6475562530726e507876"
8 + dependencies:
9 + buble "^0.15.2"
10 + core-js "^2.4.1"
11 + dom-iterator "^0.3.0"
12 + prismjs "^1.6.0"
13 + prop-types "^15.5.8"
14 + unescape "^0.2.0"
15 +
16 +"@types/node@^6.0.46":
17 + version "6.0.79"
18 + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.79.tgz#5efe7d4a6d8c453c7e9eaf55d931f4a22fac5169"
19 +
20 +abbrev@1:
21 + version "1.1.0"
22 + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
23 +
24 +accept@1.x.x:
25 + version "1.1.0"
26 + resolved "https://registry.yarnpkg.com/accept/-/accept-1.1.0.tgz#c7b5567c99ade4ac7c937f2a9bc1c566160a30b5"
27 + dependencies:
28 + boom "2.x.x"
29 + hoek "2.x.x"
30 +
31 +accepts@1.3.3, accepts@^1.3.0, accepts@~1.3.3:
32 + version "1.3.3"
33 + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
34 + dependencies:
35 + mime-types "~2.1.11"
36 + negotiator "0.6.1"
37 +
38 +acorn-jsx@^3.0.1:
39 + version "3.0.1"
40 + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
41 + dependencies:
42 + acorn "^3.0.4"
43 +
44 +acorn-object-spread@^1.0.0:
45 + version "1.0.0"
46 + resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68"
47 + dependencies:
48 + acorn "^3.1.0"
49 +
50 +acorn@^3.0.0, acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0:
51 + version "3.3.0"
52 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
53 +
54 +address@^1.0.1:
55 + version "1.0.2"
56 + resolved "https://registry.yarnpkg.com/address/-/address-1.0.2.tgz#480081e82b587ba319459fef512f516fe03d58af"
57 +
58 +after@0.8.2:
59 + version "0.8.2"
60 + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
61 +
62 +ajv@^4.9.1:
63 + version "4.11.8"
64 + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
65 + dependencies:
66 + co "^4.6.0"
67 + json-stable-stringify "^1.0.1"
68 +
69 +align-text@^0.1.1, align-text@^0.1.3:
70 + version "0.1.4"
71 + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
72 + dependencies:
73 + kind-of "^3.0.2"
74 + longest "^1.0.1"
75 + repeat-string "^1.5.2"
76 +
77 +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
78 + version "1.0.2"
79 + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
80 +
81 +amdefine@>=0.0.4:
82 + version "1.0.1"
83 + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
84 +
85 +ammo@1.x.x:
86 + version "1.0.1"
87 + resolved "https://registry.yarnpkg.com/ammo/-/ammo-1.0.1.tgz#8f8add14cd49bdede3bab3a3e0ebcaf21d03de8b"
88 + dependencies:
89 + boom "2.x.x"
90 + hoek "2.x.x"
91 +
92 +ansi-escapes@^2.0.0:
93 + version "2.0.0"
94 + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
95 +
96 +ansi-html@0.0.7:
97 + version "0.0.7"
98 + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
99 +
100 +ansi-red@^0.1.1:
101 + version "0.1.1"
102 + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c"
103 + dependencies:
104 + ansi-wrap "0.1.0"
105 +
106 +ansi-regex@^2.0.0:
107 + version "2.1.1"
108 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
109 +
110 +ansi-regex@^3.0.0:
111 + version "3.0.0"
112 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
113 +
114 +ansi-styles@^2.2.1:
115 + version "2.2.1"
116 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
117 +
118 +ansi-styles@^3.1.0:
119 + version "3.1.0"
120 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750"
121 + dependencies:
122 + color-convert "^1.0.0"
123 +
124 +ansi-wrap@0.1.0:
125 + version "0.1.0"
126 + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
127 +
128 +ansi@^0.3.0, ansi@~0.3.1:
129 + version "0.3.1"
130 + resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21"
131 +
132 +any-promise@^0.1.0:
133 + version "0.1.0"
134 + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27"
135 +
136 +anymatch@^1.3.0:
137 + version "1.3.0"
138 + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
139 + dependencies:
140 + arrify "^1.0.0"
141 + micromatch "^2.1.5"
142 +
143 +aproba@^1.0.3:
144 + version "1.1.2"
145 + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
146 +
147 +archive-type@^3.0.0, archive-type@^3.0.1:
148 + version "3.2.0"
149 + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6"
150 + dependencies:
151 + file-type "^3.1.0"
152 +
153 +are-we-there-yet@~1.1.2:
154 + version "1.1.4"
155 + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
156 + dependencies:
157 + delegates "^1.0.0"
158 + readable-stream "^2.0.6"
159 +
160 +argparse@^1.0.7:
161 + version "1.0.9"
162 + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
163 + dependencies:
164 + sprintf-js "~1.0.2"
165 +
166 +argparse@~0.1.15:
167 + version "0.1.16"
168 + resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c"
169 + dependencies:
170 + underscore "~1.7.0"
171 + underscore.string "~2.4.0"
172 +
173 +arr-diff@^2.0.0:
174 + version "2.0.0"
175 + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
176 + dependencies:
177 + arr-flatten "^1.0.1"
178 +
179 +arr-diff@^4.0.0:
180 + version "4.0.0"
181 + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
182 +
183 +arr-flatten@^1.0.1:
184 + version "1.0.3"
185 + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
186 +
187 +arr-flatten@^1.0.3:
188 + version "1.1.0"
189 + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
190 +
191 +arr-union@^3.1.0:
192 + version "3.1.0"
193 + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
194 +
195 +array-differ@^1.0.0:
196 + version "1.0.0"
197 + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
198 +
199 +array-each@^1.0.1:
200 + version "1.0.1"
201 + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
202 +
203 +array-find-index@^1.0.1:
204 + version "1.0.2"
205 + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
206 +
207 +array-flatten@1.1.1:
208 + version "1.1.1"
209 + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
210 +
211 +array-from@^2.1.1:
212 + version "2.1.1"
213 + resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195"
214 +
215 +array-iterate@^1.0.0:
216 + version "1.1.1"
217 + resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.1.tgz#865bf7f8af39d6b0982c60902914ac76bc0108f6"
218 +
219 +array-slice@^1.0.0:
220 + version "1.0.0"
221 + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f"
222 +
223 +array-union@^1.0.1:
224 + version "1.0.2"
225 + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
226 + dependencies:
227 + array-uniq "^1.0.1"
228 +
229 +array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2:
230 + version "1.0.3"
231 + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
232 +
233 +array-unique@^0.2.1:
234 + version "0.2.1"
235 + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
236 +
237 +array-unique@^0.3.2:
238 + version "0.3.2"
239 + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
240 +
241 +arraybuffer.slice@0.0.6:
242 + version "0.0.6"
243 + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
244 +
245 +arrify@^1.0.0:
246 + version "1.0.1"
247 + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
248 +
249 +asap@~2.0.3:
250 + version "2.0.5"
251 + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
252 +
253 +asn1.js@^4.0.0:
254 + version "4.9.1"
255 + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
256 + dependencies:
257 + bn.js "^4.0.0"
258 + inherits "^2.0.1"
259 + minimalistic-assert "^1.0.0"
260 +
261 +asn1@~0.2.3:
262 + version "0.2.3"
263 + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
264 +
265 +assert-plus@1.0.0, assert-plus@^1.0.0:
266 + version "1.0.0"
267 + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
268 +
269 +assert-plus@^0.2.0:
270 + version "0.2.0"
271 + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
272 +
273 +assert@^1.1.1:
274 + version "1.4.1"
275 + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
276 + dependencies:
277 + util "0.10.3"
278 +
279 +async-each-series@^1.1.0:
280 + version "1.1.0"
281 + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138"
282 +
283 +async-each@^1.0.0, async-each@^1.0.1:
284 + version "1.0.1"
285 + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
286 +
287 +async@2.1.4:
288 + version "2.1.4"
289 + resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
290 + dependencies:
291 + lodash "^4.14.0"
292 +
293 +async@^0.9.0:
294 + version "0.9.2"
295 + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
296 +
297 +async@^1.3.0, async@^1.5.0:
298 + version "1.5.2"
299 + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
300 +
301 +async@^2.1.2:
302 + version "2.5.0"
303 + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d"
304 + dependencies:
305 + lodash "^4.14.0"
306 +
307 +async@~0.2.6:
308 + version "0.2.10"
309 + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
310 +
311 +asynckit@^0.4.0:
312 + version "0.4.0"
313 + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
314 +
315 +atob@^2.0.0:
316 + version "2.0.3"
317 + resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
318 +
319 +autolinker@~0.15.0:
320 + version "0.15.3"
321 + resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832"
322 +
323 +autoprefixer@^6.0.2, autoprefixer@^6.3.1:
324 + version "6.7.7"
325 + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
326 + dependencies:
327 + browserslist "^1.7.6"
328 + caniuse-db "^1.0.30000634"
329 + normalize-range "^0.1.2"
330 + num2fraction "^1.2.2"
331 + postcss "^5.2.16"
332 + postcss-value-parser "^3.2.3"
333 +
334 +aws-sign2@~0.6.0:
335 + version "0.6.0"
336 + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
337 +
338 +aws4@^1.2.1:
339 + version "1.6.0"
340 + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
341 +
342 +b64@2.x.x:
343 + version "2.0.1"
344 + resolved "https://registry.yarnpkg.com/b64/-/b64-2.0.1.tgz#d08c10719719ff1fe1b532ae49269409ce149ce9"
345 + dependencies:
346 + hoek "2.x.x"
347 +
348 +babel-cli@^6.26.0:
349 + version "6.26.0"
350 + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
351 + dependencies:
352 + babel-core "^6.26.0"
353 + babel-polyfill "^6.26.0"
354 + babel-register "^6.26.0"
355 + babel-runtime "^6.26.0"
356 + commander "^2.11.0"
357 + convert-source-map "^1.5.0"
358 + fs-readdir-recursive "^1.0.0"
359 + glob "^7.1.2"
360 + lodash "^4.17.4"
361 + output-file-sync "^1.1.2"
362 + path-is-absolute "^1.0.1"
363 + slash "^1.0.0"
364 + source-map "^0.5.6"
365 + v8flags "^2.1.1"
366 + optionalDependencies:
367 + chokidar "^1.6.1"
368 +
369 +babel-code-frame@^6.11.0, babel-code-frame@^6.22.0:
370 + version "6.22.0"
371 + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
372 + dependencies:
373 + chalk "^1.1.0"
374 + esutils "^2.0.2"
375 + js-tokens "^3.0.0"
376 +
377 +babel-code-frame@^6.26.0:
378 + version "6.26.0"
379 + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
380 + dependencies:
381 + chalk "^1.1.3"
382 + esutils "^2.0.2"
383 + js-tokens "^3.0.2"
384 +
385 +babel-core@^6.24.1:
386 + version "6.25.0"
387 + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
388 + dependencies:
389 + babel-code-frame "^6.22.0"
390 + babel-generator "^6.25.0"
391 + babel-helpers "^6.24.1"
392 + babel-messages "^6.23.0"
393 + babel-register "^6.24.1"
394 + babel-runtime "^6.22.0"
395 + babel-template "^6.25.0"
396 + babel-traverse "^6.25.0"
397 + babel-types "^6.25.0"
398 + babylon "^6.17.2"
399 + convert-source-map "^1.1.0"
400 + debug "^2.1.1"
401 + json5 "^0.5.0"
402 + lodash "^4.2.0"
403 + minimatch "^3.0.2"
404 + path-is-absolute "^1.0.0"
405 + private "^0.1.6"
406 + slash "^1.0.0"
407 + source-map "^0.5.0"
408 +
409 +babel-core@^6.26.0:
410 + version "6.26.0"
411 + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
412 + dependencies:
413 + babel-code-frame "^6.26.0"
414 + babel-generator "^6.26.0"
415 + babel-helpers "^6.24.1"
416 + babel-messages "^6.23.0"
417 + babel-register "^6.26.0"
418 + babel-runtime "^6.26.0"
419 + babel-template "^6.26.0"
420 + babel-traverse "^6.26.0"
421 + babel-types "^6.26.0"
422 + babylon "^6.18.0"
423 + convert-source-map "^1.5.0"
424 + debug "^2.6.8"
425 + json5 "^0.5.1"
426 + lodash "^4.17.4"
427 + minimatch "^3.0.4"
428 + path-is-absolute "^1.0.1"
429 + private "^0.1.7"
430 + slash "^1.0.0"
431 + source-map "^0.5.6"
432 +
433 +babel-generator@6.25.0, babel-generator@^6.25.0:
434 + version "6.25.0"
435 + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
436 + dependencies:
437 + babel-messages "^6.23.0"
438 + babel-runtime "^6.22.0"
439 + babel-types "^6.25.0"
440 + detect-indent "^4.0.0"
441 + jsesc "^1.3.0"
442 + lodash "^4.2.0"
443 + source-map "^0.5.0"
444 + trim-right "^1.0.1"
445 +
446 +babel-generator@^6.26.0:
447 + version "6.26.0"
448 + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
449 + dependencies:
450 + babel-messages "^6.23.0"
451 + babel-runtime "^6.26.0"
452 + babel-types "^6.26.0"
453 + detect-indent "^4.0.0"
454 + jsesc "^1.3.0"
455 + lodash "^4.17.4"
456 + source-map "^0.5.6"
457 + trim-right "^1.0.1"
458 +
459 +babel-helper-bindify-decorators@^6.24.1:
460 + version "6.24.1"
461 + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
462 + dependencies:
463 + babel-runtime "^6.22.0"
464 + babel-traverse "^6.24.1"
465 + babel-types "^6.24.1"
466 +
467 +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
468 + version "6.24.1"
469 + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
470 + dependencies:
471 + babel-helper-explode-assignable-expression "^6.24.1"
472 + babel-runtime "^6.22.0"
473 + babel-types "^6.24.1"
474 +
475 +babel-helper-builder-react-jsx@^6.24.1:
476 + version "6.24.1"
477 + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc"
478 + dependencies:
479 + babel-runtime "^6.22.0"
480 + babel-types "^6.24.1"
481 + esutils "^2.0.0"
482 +
483 +babel-helper-call-delegate@^6.24.1:
484 + version "6.24.1"
485 + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
486 + dependencies:
487 + babel-helper-hoist-variables "^6.24.1"
488 + babel-runtime "^6.22.0"
489 + babel-traverse "^6.24.1"
490 + babel-types "^6.24.1"
491 +
492 +babel-helper-define-map@^6.24.1:
493 + version "6.24.1"
494 + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
495 + dependencies:
496 + babel-helper-function-name "^6.24.1"
497 + babel-runtime "^6.22.0"
498 + babel-types "^6.24.1"
499 + lodash "^4.2.0"
500 +
501 +babel-helper-explode-assignable-expression@^6.24.1:
502 + version "6.24.1"
503 + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
504 + dependencies:
505 + babel-runtime "^6.22.0"
506 + babel-traverse "^6.24.1"
507 + babel-types "^6.24.1"
508 +
509 +babel-helper-explode-class@^6.24.1:
510 + version "6.24.1"
511 + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
512 + dependencies:
513 + babel-helper-bindify-decorators "^6.24.1"
514 + babel-runtime "^6.22.0"
515 + babel-traverse "^6.24.1"
516 + babel-types "^6.24.1"
517 +
518 +babel-helper-function-name@^6.24.1:
519 + version "6.24.1"
520 + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
521 + dependencies:
522 + babel-helper-get-function-arity "^6.24.1"
523 + babel-runtime "^6.22.0"
524 + babel-template "^6.24.1"
525 + babel-traverse "^6.24.1"
526 + babel-types "^6.24.1"
527 +
528 +babel-helper-get-function-arity@^6.24.1:
529 + version "6.24.1"
530 + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
531 + dependencies:
532 + babel-runtime "^6.22.0"
533 + babel-types "^6.24.1"
534 +
535 +babel-helper-hoist-variables@^6.24.1:
536 + version "6.24.1"
537 + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
538 + dependencies:
539 + babel-runtime "^6.22.0"
540 + babel-types "^6.24.1"
541 +
542 +babel-helper-optimise-call-expression@^6.24.1:
543 + version "6.24.1"
544 + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
545 + dependencies:
546 + babel-runtime "^6.22.0"
547 + babel-types "^6.24.1"
548 +
549 +babel-helper-regex@^6.24.1:
550 + version "6.24.1"
551 + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
552 + dependencies:
553 + babel-runtime "^6.22.0"
554 + babel-types "^6.24.1"
555 + lodash "^4.2.0"
556 +
557 +babel-helper-remap-async-to-generator@^6.24.1:
558 + version "6.24.1"
559 + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
560 + dependencies:
561 + babel-helper-function-name "^6.24.1"
562 + babel-runtime "^6.22.0"
563 + babel-template "^6.24.1"
564 + babel-traverse "^6.24.1"
565 + babel-types "^6.24.1"
566 +
567 +babel-helper-replace-supers@^6.24.1:
568 + version "6.24.1"
569 + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
570 + dependencies:
571 + babel-helper-optimise-call-expression "^6.24.1"
572 + babel-messages "^6.23.0"
573 + babel-runtime "^6.22.0"
574 + babel-template "^6.24.1"
575 + babel-traverse "^6.24.1"
576 + babel-types "^6.24.1"
577 +
578 +babel-helpers@^6.24.1:
579 + version "6.24.1"
580 + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
581 + dependencies:
582 + babel-runtime "^6.22.0"
583 + babel-template "^6.24.1"
584 +
585 +babel-loader@^6.0.0:
586 + version "6.4.1"
587 + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
588 + dependencies:
589 + find-cache-dir "^0.1.1"
590 + loader-utils "^0.2.16"
591 + mkdirp "^0.5.1"
592 + object-assign "^4.0.1"
593 +
594 +babel-messages@^6.23.0:
595 + version "6.23.0"
596 + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
597 + dependencies:
598 + babel-runtime "^6.22.0"
599 +
600 +babel-plugin-add-module-exports@^0.2.1:
601 + version "0.2.1"
602 + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25"
603 +
604 +babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.8.0:
605 + version "6.22.0"
606 + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
607 + dependencies:
608 + babel-runtime "^6.22.0"
609 +
610 +babel-plugin-syntax-async-functions@^6.8.0:
611 + version "6.13.0"
612 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
613 +
614 +babel-plugin-syntax-async-generators@^6.5.0:
615 + version "6.13.0"
616 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
617 +
618 +babel-plugin-syntax-class-constructor-call@^6.18.0:
619 + version "6.18.0"
620 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
621 +
622 +babel-plugin-syntax-class-properties@^6.8.0:
623 + version "6.13.0"
624 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
625 +
626 +babel-plugin-syntax-decorators@^6.13.0:
627 + version "6.13.0"
628 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
629 +
630 +babel-plugin-syntax-do-expressions@^6.8.0:
631 + version "6.13.0"
632 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
633 +
634 +babel-plugin-syntax-dynamic-import@^6.18.0:
635 + version "6.18.0"
636 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
637 +
638 +babel-plugin-syntax-exponentiation-operator@^6.8.0:
639 + version "6.13.0"
640 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
641 +
642 +babel-plugin-syntax-export-extensions@^6.8.0:
643 + version "6.13.0"
644 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
645 +
646 +babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.8.0:
647 + version "6.18.0"
648 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
649 +
650 +babel-plugin-syntax-function-bind@^6.8.0:
651 + version "6.13.0"
652 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
653 +
654 +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
655 + version "6.18.0"
656 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
657 +
658 +babel-plugin-syntax-object-rest-spread@^6.8.0:
659 + version "6.13.0"
660 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
661 +
662 +babel-plugin-syntax-trailing-function-commas@^6.22.0, babel-plugin-syntax-trailing-function-commas@^6.8.0:
663 + version "6.22.0"
664 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
665 +
666 +babel-plugin-transform-amd-system-wrapper@^0.3.7:
667 + version "0.3.7"
668 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-amd-system-wrapper/-/babel-plugin-transform-amd-system-wrapper-0.3.7.tgz#521c782d35644491c979ea683e8a5e1caff0ba42"
669 + dependencies:
670 + babel-template "^6.9.0"
671 +
672 +babel-plugin-transform-async-generator-functions@^6.24.1:
673 + version "6.24.1"
674 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
675 + dependencies:
676 + babel-helper-remap-async-to-generator "^6.24.1"
677 + babel-plugin-syntax-async-generators "^6.5.0"
678 + babel-runtime "^6.22.0"
679 +
680 +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1:
681 + version "6.24.1"
682 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
683 + dependencies:
684 + babel-helper-remap-async-to-generator "^6.24.1"
685 + babel-plugin-syntax-async-functions "^6.8.0"
686 + babel-runtime "^6.22.0"
687 +
688 +babel-plugin-transform-cjs-system-wrapper@^0.6.2:
689 + version "0.6.2"
690 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.6.2.tgz#bd7494775289424ff493b6ed455de495bd71ba1d"
691 + dependencies:
692 + babel-template "^6.9.0"
693 +
694 +babel-plugin-transform-class-constructor-call@^6.24.1:
695 + version "6.24.1"
696 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
697 + dependencies:
698 + babel-plugin-syntax-class-constructor-call "^6.18.0"
699 + babel-runtime "^6.22.0"
700 + babel-template "^6.24.1"
701 +
702 +babel-plugin-transform-class-properties@^6.24.1, babel-plugin-transform-class-properties@^6.8.0:
703 + version "6.24.1"
704 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
705 + dependencies:
706 + babel-helper-function-name "^6.24.1"
707 + babel-plugin-syntax-class-properties "^6.8.0"
708 + babel-runtime "^6.22.0"
709 + babel-template "^6.24.1"
710 +
711 +babel-plugin-transform-decorators@^6.24.1:
712 + version "6.24.1"
713 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
714 + dependencies:
715 + babel-helper-explode-class "^6.24.1"
716 + babel-plugin-syntax-decorators "^6.13.0"
717 + babel-runtime "^6.22.0"
718 + babel-template "^6.24.1"
719 + babel-types "^6.24.1"
720 +
721 +babel-plugin-transform-do-expressions@^6.22.0:
722 + version "6.22.0"
723 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb"
724 + dependencies:
725 + babel-plugin-syntax-do-expressions "^6.8.0"
726 + babel-runtime "^6.22.0"
727 +
728 +babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.8.0:
729 + version "6.22.0"
730 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
731 + dependencies:
732 + babel-runtime "^6.22.0"
733 +
734 +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.8.0:
735 + version "6.22.0"
736 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
737 + dependencies:
738 + babel-runtime "^6.22.0"
739 +
740 +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1:
741 + version "6.24.1"
742 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
743 + dependencies:
744 + babel-runtime "^6.22.0"
745 + babel-template "^6.24.1"
746 + babel-traverse "^6.24.1"
747 + babel-types "^6.24.1"
748 + lodash "^4.2.0"
749 +
750 +babel-plugin-transform-es2015-block-scoping@^6.8.0:
751 + version "6.26.0"
752 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
753 + dependencies:
754 + babel-runtime "^6.26.0"
755 + babel-template "^6.26.0"
756 + babel-traverse "^6.26.0"
757 + babel-types "^6.26.0"
758 + lodash "^4.17.4"
759 +
760 +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.8.0:
761 + version "6.24.1"
762 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
763 + dependencies:
764 + babel-helper-define-map "^6.24.1"
765 + babel-helper-function-name "^6.24.1"
766 + babel-helper-optimise-call-expression "^6.24.1"
767 + babel-helper-replace-supers "^6.24.1"
768 + babel-messages "^6.23.0"
769 + babel-runtime "^6.22.0"
770 + babel-template "^6.24.1"
771 + babel-traverse "^6.24.1"
772 + babel-types "^6.24.1"
773 +
774 +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1, babel-plugin-transform-es2015-computed-properties@^6.8.0:
775 + version "6.24.1"
776 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
777 + dependencies:
778 + babel-runtime "^6.22.0"
779 + babel-template "^6.24.1"
780 +
781 +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0, babel-plugin-transform-es2015-destructuring@^6.8.0:
782 + version "6.23.0"
783 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
784 + dependencies:
785 + babel-runtime "^6.22.0"
786 +
787 +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
788 + version "6.24.1"
789 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
790 + dependencies:
791 + babel-runtime "^6.22.0"
792 + babel-types "^6.24.1"
793 +
794 +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0, babel-plugin-transform-es2015-for-of@^6.8.0:
795 + version "6.23.0"
796 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
797 + dependencies:
798 + babel-runtime "^6.22.0"
799 +
800 +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es2015-function-name@^6.8.0:
801 + version "6.24.1"
802 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
803 + dependencies:
804 + babel-helper-function-name "^6.24.1"
805 + babel-runtime "^6.22.0"
806 + babel-types "^6.24.1"
807 +
808 +babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.8.0:
809 + version "6.22.0"
810 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
811 + dependencies:
812 + babel-runtime "^6.22.0"
813 +
814 +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
815 + version "6.24.1"
816 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
817 + dependencies:
818 + babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
819 + babel-runtime "^6.22.0"
820 + babel-template "^6.24.1"
821 +
822 +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
823 + version "6.24.1"
824 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
825 + dependencies:
826 + babel-plugin-transform-strict-mode "^6.24.1"
827 + babel-runtime "^6.22.0"
828 + babel-template "^6.24.1"
829 + babel-types "^6.24.1"
830 +
831 +babel-plugin-transform-es2015-modules-commonjs@^6.8.0:
832 + version "6.26.0"
833 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
834 + dependencies:
835 + babel-plugin-transform-strict-mode "^6.24.1"
836 + babel-runtime "^6.26.0"
837 + babel-template "^6.26.0"
838 + babel-types "^6.26.0"
839 +
840 +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1, babel-plugin-transform-es2015-modules-systemjs@^6.6.5:
841 + version "6.24.1"
842 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
843 + dependencies:
844 + babel-helper-hoist-variables "^6.24.1"
845 + babel-runtime "^6.22.0"
846 + babel-template "^6.24.1"
847 +
848 +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1:
849 + version "6.24.1"
850 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
851 + dependencies:
852 + babel-plugin-transform-es2015-modules-amd "^6.24.1"
853 + babel-runtime "^6.22.0"
854 + babel-template "^6.24.1"
855 +
856 +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1, babel-plugin-transform-es2015-object-super@^6.8.0:
857 + version "6.24.1"
858 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
859 + dependencies:
860 + babel-helper-replace-supers "^6.24.1"
861 + babel-runtime "^6.22.0"
862 +
863 +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1, babel-plugin-transform-es2015-parameters@^6.8.0:
864 + version "6.24.1"
865 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
866 + dependencies:
867 + babel-helper-call-delegate "^6.24.1"
868 + babel-helper-get-function-arity "^6.24.1"
869 + babel-runtime "^6.22.0"
870 + babel-template "^6.24.1"
871 + babel-traverse "^6.24.1"
872 + babel-types "^6.24.1"
873 +
874 +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1, babel-plugin-transform-es2015-shorthand-properties@^6.8.0:
875 + version "6.24.1"
876 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
877 + dependencies:
878 + babel-runtime "^6.22.0"
879 + babel-types "^6.24.1"
880 +
881 +babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.8.0:
882 + version "6.22.0"
883 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
884 + dependencies:
885 + babel-runtime "^6.22.0"
886 +
887 +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1:
888 + version "6.24.1"
889 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
890 + dependencies:
891 + babel-helper-regex "^6.24.1"
892 + babel-runtime "^6.22.0"
893 + babel-types "^6.24.1"
894 +
895 +babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.8.0:
896 + version "6.22.0"
897 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
898 + dependencies:
899 + babel-runtime "^6.22.0"
900 +
901 +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
902 + version "6.23.0"
903 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
904 + dependencies:
905 + babel-runtime "^6.22.0"
906 +
907 +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1:
908 + version "6.24.1"
909 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
910 + dependencies:
911 + babel-helper-regex "^6.24.1"
912 + babel-runtime "^6.22.0"
913 + regexpu-core "^2.0.0"
914 +
915 +babel-plugin-transform-es3-member-expression-literals@^6.8.0:
916 + version "6.22.0"
917 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz#733d3444f3ecc41bef8ed1a6a4e09657b8969ebb"
918 + dependencies:
919 + babel-runtime "^6.22.0"
920 +
921 +babel-plugin-transform-es3-property-literals@^6.8.0:
922 + version "6.22.0"
923 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz#b2078d5842e22abf40f73e8cde9cd3711abd5758"
924 + dependencies:
925 + babel-runtime "^6.22.0"
926 +
927 +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1:
928 + version "6.24.1"
929 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
930 + dependencies:
931 + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
932 + babel-plugin-syntax-exponentiation-operator "^6.8.0"
933 + babel-runtime "^6.22.0"
934 +
935 +babel-plugin-transform-export-extensions@^6.22.0:
936 + version "6.22.0"
937 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
938 + dependencies:
939 + babel-plugin-syntax-export-extensions "^6.8.0"
940 + babel-runtime "^6.22.0"
941 +
942 +babel-plugin-transform-flow-strip-types@^6.22.0, babel-plugin-transform-flow-strip-types@^6.8.0:
943 + version "6.22.0"
944 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
945 + dependencies:
946 + babel-plugin-syntax-flow "^6.18.0"
947 + babel-runtime "^6.22.0"
948 +
949 +babel-plugin-transform-function-bind@^6.22.0:
950 + version "6.22.0"
951 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97"
952 + dependencies:
953 + babel-plugin-syntax-function-bind "^6.8.0"
954 + babel-runtime "^6.22.0"
955 +
956 +babel-plugin-transform-global-system-wrapper@^0.3.4:
957 + version "0.3.4"
958 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.3.4.tgz#948dd7d29fc21447e39bd3447f2debc7f2f73aac"
959 + dependencies:
960 + babel-template "^6.9.0"
961 +
962 +babel-plugin-transform-object-assign@^6.8.0:
963 + version "6.22.0"
964 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz#f99d2f66f1a0b0d498e346c5359684740caa20ba"
965 + dependencies:
966 + babel-runtime "^6.22.0"
967 +
968 +babel-plugin-transform-object-rest-spread@^6.22.0:
969 + version "6.23.0"
970 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
971 + dependencies:
972 + babel-plugin-syntax-object-rest-spread "^6.8.0"
973 + babel-runtime "^6.22.0"
974 +
975 +babel-plugin-transform-object-rest-spread@^6.8.0:
976 + version "6.26.0"
977 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
978 + dependencies:
979 + babel-plugin-syntax-object-rest-spread "^6.8.0"
980 + babel-runtime "^6.26.0"
981 +
982 +babel-plugin-transform-react-display-name@^6.23.0, babel-plugin-transform-react-display-name@^6.8.0:
983 + version "6.25.0"
984 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
985 + dependencies:
986 + babel-runtime "^6.22.0"
987 +
988 +babel-plugin-transform-react-jsx-self@^6.22.0:
989 + version "6.22.0"
990 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
991 + dependencies:
992 + babel-plugin-syntax-jsx "^6.8.0"
993 + babel-runtime "^6.22.0"
994 +
995 +babel-plugin-transform-react-jsx-source@^6.22.0:
996 + version "6.22.0"
997 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
998 + dependencies:
999 + babel-plugin-syntax-jsx "^6.8.0"
1000 + babel-runtime "^6.22.0"
1001 +
1002 +babel-plugin-transform-react-jsx@^6.24.1, babel-plugin-transform-react-jsx@^6.8.0:
1003 + version "6.24.1"
1004 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
1005 + dependencies:
1006 + babel-helper-builder-react-jsx "^6.24.1"
1007 + babel-plugin-syntax-jsx "^6.8.0"
1008 + babel-runtime "^6.22.0"
1009 +
1010 +babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1:
1011 + version "6.24.1"
1012 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
1013 + dependencies:
1014 + regenerator-transform "0.9.11"
1015 +
1016 +babel-plugin-transform-strict-mode@^6.24.1:
1017 + version "6.24.1"
1018 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
1019 + dependencies:
1020 + babel-runtime "^6.22.0"
1021 + babel-types "^6.24.1"
1022 +
1023 +babel-plugin-transform-system-register@^0.0.1:
1024 + version "0.0.1"
1025 + resolved "https://registry.yarnpkg.com/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz#9dff40390c2763ac518f0b2ad7c5ea4f65a5be25"
1026 +
1027 +babel-polyfill@^6.23.0:
1028 + version "6.23.0"
1029 + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
1030 + dependencies:
1031 + babel-runtime "^6.22.0"
1032 + core-js "^2.4.0"
1033 + regenerator-runtime "^0.10.0"
1034 +
1035 +babel-polyfill@^6.26.0:
1036 + version "6.26.0"
1037 + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
1038 + dependencies:
1039 + babel-runtime "^6.26.0"
1040 + core-js "^2.5.0"
1041 + regenerator-runtime "^0.10.5"
1042 +
1043 +babel-preset-env@^1.6.0:
1044 + version "1.6.0"
1045 + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4"
1046 + dependencies:
1047 + babel-plugin-check-es2015-constants "^6.22.0"
1048 + babel-plugin-syntax-trailing-function-commas "^6.22.0"
1049 + babel-plugin-transform-async-to-generator "^6.22.0"
1050 + babel-plugin-transform-es2015-arrow-functions "^6.22.0"
1051 + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
1052 + babel-plugin-transform-es2015-block-scoping "^6.23.0"
1053 + babel-plugin-transform-es2015-classes "^6.23.0"
1054 + babel-plugin-transform-es2015-computed-properties "^6.22.0"
1055 + babel-plugin-transform-es2015-destructuring "^6.23.0"
1056 + babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
1057 + babel-plugin-transform-es2015-for-of "^6.23.0"
1058 + babel-plugin-transform-es2015-function-name "^6.22.0"
1059 + babel-plugin-transform-es2015-literals "^6.22.0"
1060 + babel-plugin-transform-es2015-modules-amd "^6.22.0"
1061 + babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
1062 + babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
1063 + babel-plugin-transform-es2015-modules-umd "^6.23.0"
1064 + babel-plugin-transform-es2015-object-super "^6.22.0"
1065 + babel-plugin-transform-es2015-parameters "^6.23.0"
1066 + babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
1067 + babel-plugin-transform-es2015-spread "^6.22.0"
1068 + babel-plugin-transform-es2015-sticky-regex "^6.22.0"
1069 + babel-plugin-transform-es2015-template-literals "^6.22.0"
1070 + babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
1071 + babel-plugin-transform-es2015-unicode-regex "^6.22.0"
1072 + babel-plugin-transform-exponentiation-operator "^6.22.0"
1073 + babel-plugin-transform-regenerator "^6.22.0"
1074 + browserslist "^2.1.2"
1075 + invariant "^2.2.2"
1076 + semver "^5.3.0"
1077 +
1078 +babel-preset-es2015@^6.24.1:
1079 + version "6.24.1"
1080 + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
1081 + dependencies:
1082 + babel-plugin-check-es2015-constants "^6.22.0"
1083 + babel-plugin-transform-es2015-arrow-functions "^6.22.0"
1084 + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
1085 + babel-plugin-transform-es2015-block-scoping "^6.24.1"
1086 + babel-plugin-transform-es2015-classes "^6.24.1"
1087 + babel-plugin-transform-es2015-computed-properties "^6.24.1"
1088 + babel-plugin-transform-es2015-destructuring "^6.22.0"
1089 + babel-plugin-transform-es2015-duplicate-keys "^6.24.1"
1090 + babel-plugin-transform-es2015-for-of "^6.22.0"
1091 + babel-plugin-transform-es2015-function-name "^6.24.1"
1092 + babel-plugin-transform-es2015-literals "^6.22.0"
1093 + babel-plugin-transform-es2015-modules-amd "^6.24.1"
1094 + babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
1095 + babel-plugin-transform-es2015-modules-systemjs "^6.24.1"
1096 + babel-plugin-transform-es2015-modules-umd "^6.24.1"
1097 + babel-plugin-transform-es2015-object-super "^6.24.1"
1098 + babel-plugin-transform-es2015-parameters "^6.24.1"
1099 + babel-plugin-transform-es2015-shorthand-properties "^6.24.1"
1100 + babel-plugin-transform-es2015-spread "^6.22.0"
1101 + babel-plugin-transform-es2015-sticky-regex "^6.24.1"
1102 + babel-plugin-transform-es2015-template-literals "^6.22.0"
1103 + babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
1104 + babel-plugin-transform-es2015-unicode-regex "^6.24.1"
1105 + babel-plugin-transform-regenerator "^6.24.1"
1106 +
1107 +babel-preset-fbjs@^2.1.0:
1108 + version "2.1.4"
1109 + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-2.1.4.tgz#22f358e6654073acf61e47a052a777d7bccf03af"
1110 + dependencies:
1111 + babel-plugin-check-es2015-constants "^6.8.0"
1112 + babel-plugin-syntax-class-properties "^6.8.0"
1113 + babel-plugin-syntax-flow "^6.8.0"
1114 + babel-plugin-syntax-jsx "^6.8.0"
1115 + babel-plugin-syntax-object-rest-spread "^6.8.0"
1116 + babel-plugin-syntax-trailing-function-commas "^6.8.0"
1117 + babel-plugin-transform-class-properties "^6.8.0"
1118 + babel-plugin-transform-es2015-arrow-functions "^6.8.0"
1119 + babel-plugin-transform-es2015-block-scoped-functions "^6.8.0"
1120 + babel-plugin-transform-es2015-block-scoping "^6.8.0"
1121 + babel-plugin-transform-es2015-classes "^6.8.0"
1122 + babel-plugin-transform-es2015-computed-properties "^6.8.0"
1123 + babel-plugin-transform-es2015-destructuring "^6.8.0"
1124 + babel-plugin-transform-es2015-for-of "^6.8.0"
1125 + babel-plugin-transform-es2015-function-name "^6.8.0"
1126 + babel-plugin-transform-es2015-literals "^6.8.0"
1127 + babel-plugin-transform-es2015-modules-commonjs "^6.8.0"
1128 + babel-plugin-transform-es2015-object-super "^6.8.0"
1129 + babel-plugin-transform-es2015-parameters "^6.8.0"
1130 + babel-plugin-transform-es2015-shorthand-properties "^6.8.0"
1131 + babel-plugin-transform-es2015-spread "^6.8.0"
1132 + babel-plugin-transform-es2015-template-literals "^6.8.0"
1133 + babel-plugin-transform-es3-member-expression-literals "^6.8.0"
1134 + babel-plugin-transform-es3-property-literals "^6.8.0"
1135 + babel-plugin-transform-flow-strip-types "^6.8.0"
1136 + babel-plugin-transform-object-rest-spread "^6.8.0"
1137 + babel-plugin-transform-react-display-name "^6.8.0"
1138 + babel-plugin-transform-react-jsx "^6.8.0"
1139 +
1140 +babel-preset-flow@^6.23.0:
1141 + version "6.23.0"
1142 + resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
1143 + dependencies:
1144 + babel-plugin-transform-flow-strip-types "^6.22.0"
1145 +
1146 +babel-preset-react@^6.24.1:
1147 + version "6.24.1"
1148 + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
1149 + dependencies:
1150 + babel-plugin-syntax-jsx "^6.3.13"
1151 + babel-plugin-transform-react-display-name "^6.23.0"
1152 + babel-plugin-transform-react-jsx "^6.24.1"
1153 + babel-plugin-transform-react-jsx-self "^6.22.0"
1154 + babel-plugin-transform-react-jsx-source "^6.22.0"
1155 + babel-preset-flow "^6.23.0"
1156 +
1157 +babel-preset-stage-0@^6.24.1:
1158 + version "6.24.1"
1159 + resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a"
1160 + dependencies:
1161 + babel-plugin-transform-do-expressions "^6.22.0"
1162 + babel-plugin-transform-function-bind "^6.22.0"
1163 + babel-preset-stage-1 "^6.24.1"
1164 +
1165 +babel-preset-stage-1@^6.24.1:
1166 + version "6.24.1"
1167 + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
1168 + dependencies:
1169 + babel-plugin-transform-class-constructor-call "^6.24.1"
1170 + babel-plugin-transform-export-extensions "^6.22.0"
1171 + babel-preset-stage-2 "^6.24.1"
1172 +
1173 +babel-preset-stage-2@^6.24.1:
1174 + version "6.24.1"
1175 + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
1176 + dependencies:
1177 + babel-plugin-syntax-dynamic-import "^6.18.0"
1178 + babel-plugin-transform-class-properties "^6.24.1"
1179 + babel-plugin-transform-decorators "^6.24.1"
1180 + babel-preset-stage-3 "^6.24.1"
1181 +
1182 +babel-preset-stage-3@^6.24.1:
1183 + version "6.24.1"
1184 + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
1185 + dependencies:
1186 + babel-plugin-syntax-trailing-function-commas "^6.22.0"
1187 + babel-plugin-transform-async-generator-functions "^6.24.1"
1188 + babel-plugin-transform-async-to-generator "^6.24.1"
1189 + babel-plugin-transform-exponentiation-operator "^6.24.1"
1190 + babel-plugin-transform-object-rest-spread "^6.22.0"
1191 +
1192 +babel-register@^6.24.1:
1193 + version "6.24.1"
1194 + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
1195 + dependencies:
1196 + babel-core "^6.24.1"
1197 + babel-runtime "^6.22.0"
1198 + core-js "^2.4.0"
1199 + home-or-tmp "^2.0.0"
1200 + lodash "^4.2.0"
1201 + mkdirp "^0.5.1"
1202 + source-map-support "^0.4.2"
1203 +
1204 +babel-register@^6.26.0:
1205 + version "6.26.0"
1206 + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
1207 + dependencies:
1208 + babel-core "^6.26.0"
1209 + babel-runtime "^6.26.0"
1210 + core-js "^2.5.0"
1211 + home-or-tmp "^2.0.0"
1212 + lodash "^4.17.4"
1213 + mkdirp "^0.5.1"
1214 + source-map-support "^0.4.15"
1215 +
1216 +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.6.1:
1217 + version "6.23.0"
1218 + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
1219 + dependencies:
1220 + core-js "^2.4.0"
1221 + regenerator-runtime "^0.10.0"
1222 +
1223 +babel-runtime@^6.26.0:
1224 + version "6.26.0"
1225 + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
1226 + dependencies:
1227 + core-js "^2.4.0"
1228 + regenerator-runtime "^0.11.0"
1229 +
1230 +babel-template@^6.24.1, babel-template@^6.25.0, babel-template@^6.7.0, babel-template@^6.9.0:
1231 + version "6.25.0"
1232 + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
1233 + dependencies:
1234 + babel-runtime "^6.22.0"
1235 + babel-traverse "^6.25.0"
1236 + babel-types "^6.25.0"
1237 + babylon "^6.17.2"
1238 + lodash "^4.2.0"
1239 +
1240 +babel-template@^6.26.0:
1241 + version "6.26.0"
1242 + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
1243 + dependencies:
1244 + babel-runtime "^6.26.0"
1245 + babel-traverse "^6.26.0"
1246 + babel-types "^6.26.0"
1247 + babylon "^6.18.0"
1248 + lodash "^4.17.4"
1249 +
1250 +babel-traverse@6.25.0, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
1251 + version "6.25.0"
1252 + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
1253 + dependencies:
1254 + babel-code-frame "^6.22.0"
1255 + babel-messages "^6.23.0"
1256 + babel-runtime "^6.22.0"
1257 + babel-types "^6.25.0"
1258 + babylon "^6.17.2"
1259 + debug "^2.2.0"
1260 + globals "^9.0.0"
1261 + invariant "^2.2.0"
1262 + lodash "^4.2.0"
1263 +
1264 +babel-traverse@^6.26.0:
1265 + version "6.26.0"
1266 + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
1267 + dependencies:
1268 + babel-code-frame "^6.26.0"
1269 + babel-messages "^6.23.0"
1270 + babel-runtime "^6.26.0"
1271 + babel-types "^6.26.0"
1272 + babylon "^6.18.0"
1273 + debug "^2.6.8"
1274 + globals "^9.18.0"
1275 + invariant "^2.2.2"
1276 + lodash "^4.17.4"
1277 +
1278 +babel-types@6.25.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0:
1279 + version "6.25.0"
1280 + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
1281 + dependencies:
1282 + babel-runtime "^6.22.0"
1283 + esutils "^2.0.2"
1284 + lodash "^4.2.0"
1285 + to-fast-properties "^1.0.1"
1286 +
1287 +babel-types@^6.26.0:
1288 + version "6.26.0"
1289 + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
1290 + dependencies:
1291 + babel-runtime "^6.26.0"
1292 + esutils "^2.0.2"
1293 + lodash "^4.17.4"
1294 + to-fast-properties "^1.0.3"
1295 +
1296 +babylon@6.18.0, babylon@^6.18.0:
1297 + version "6.18.0"
1298 + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
1299 +
1300 +babylon@^6.17.2, babylon@^6.17.3:
1301 + version "6.17.4"
1302 + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
1303 +
1304 +backo2@1.0.2:
1305 + version "1.0.2"
1306 + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
1307 +
1308 +bail@^1.0.0:
1309 + version "1.0.1"
1310 + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.1.tgz#912579de8b391aadf3c5fdf4cd2a0fc225df3bc2"
1311 +
1312 +balanced-match@0.1.0:
1313 + version "0.1.0"
1314 + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a"
1315 +
1316 +balanced-match@^0.2.0:
1317 + version "0.2.1"
1318 + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.2.1.tgz#7bc658b4bed61eee424ad74f75f5c3e2c4df3cc7"
1319 +
1320 +balanced-match@^0.4.1, balanced-match@^0.4.2:
1321 + version "0.4.2"
1322 + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
1323 +
1324 +balanced-match@^1.0.0:
1325 + version "1.0.0"
1326 + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
1327 +
1328 +base-64@0.1.0:
1329 + version "0.1.0"
1330 + resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
1331 +
1332 +base64-arraybuffer@0.1.5:
1333 + version "0.1.5"
1334 + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
1335 +
1336 +base64-js@^1.0.2:
1337 + version "1.2.1"
1338 + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
1339 +
1340 +base64id@1.0.0:
1341 + version "1.0.0"
1342 + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
1343 +
1344 +base64url@^2.0.0:
1345 + version "2.0.0"
1346 + resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb"
1347 +
1348 +base@^0.11.1:
1349 + version "0.11.2"
1350 + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
1351 + dependencies:
1352 + cache-base "^1.0.1"
1353 + class-utils "^0.3.5"
1354 + component-emitter "^1.2.1"
1355 + define-property "^1.0.0"
1356 + isobject "^3.0.1"
1357 + mixin-deep "^1.2.0"
1358 + pascalcase "^0.1.1"
1359 +
1360 +basename@0.1.2:
1361 + version "0.1.2"
1362 + resolved "https://registry.yarnpkg.com/basename/-/basename-0.1.2.tgz#d6039bef939863160c78048cced3c5e7f88cb261"
1363 +
1364 +bash-glob@^1.0.1:
1365 + version "1.0.1"
1366 + resolved "https://registry.yarnpkg.com/bash-glob/-/bash-glob-1.0.1.tgz#d1bce5d2fd6875a5a2b24bdaa707c190731bc26e"
1367 + dependencies:
1368 + async-each "^1.0.1"
1369 + component-emitter "^1.2.1"
1370 + cross-spawn "^5.1.0"
1371 + extend-shallow "^2.0.1"
1372 + is-extglob "^2.1.1"
1373 + is-glob "^3.1.0"
1374 +
1375 +batch@0.6.1:
1376 + version "0.6.1"
1377 + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
1378 +
1379 +bcrypt-pbkdf@^1.0.0:
1380 + version "1.0.1"
1381 + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
1382 + dependencies:
1383 + tweetnacl "^0.14.3"
1384 +
1385 +beeper@^1.0.0:
1386 + version "1.1.1"
1387 + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
1388 +
1389 +better-assert@~1.0.0:
1390 + version "1.0.2"
1391 + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
1392 + dependencies:
1393 + callsite "1.0.0"
1394 +
1395 +big.js@^3.1.3:
1396 + version "3.1.3"
1397 + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
1398 +
1399 +bin-build@^2.0.0:
1400 + version "2.2.0"
1401 + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc"
1402 + dependencies:
1403 + archive-type "^3.0.1"
1404 + decompress "^3.0.0"
1405 + download "^4.1.2"
1406 + exec-series "^1.0.0"
1407 + rimraf "^2.2.6"
1408 + tempfile "^1.0.0"
1409 + url-regex "^3.0.0"
1410 +
1411 +bin-check@^2.0.0:
1412 + version "2.0.0"
1413 + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930"
1414 + dependencies:
1415 + executable "^1.0.0"
1416 +
1417 +bin-version-check@^2.1.0:
1418 + version "2.1.0"
1419 + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0"
1420 + dependencies:
1421 + bin-version "^1.0.0"
1422 + minimist "^1.1.0"
1423 + semver "^4.0.3"
1424 + semver-truncate "^1.0.0"
1425 +
1426 +bin-version@^1.0.0:
1427 + version "1.0.4"
1428 + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e"
1429 + dependencies:
1430 + find-versions "^1.0.0"
1431 +
1432 +bin-wrapper@^3.0.0:
1433 + version "3.0.2"
1434 + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb"
1435 + dependencies:
1436 + bin-check "^2.0.0"
1437 + bin-version-check "^2.1.0"
1438 + download "^4.0.0"
1439 + each-async "^1.1.1"
1440 + lazy-req "^1.0.0"
1441 + os-filter-obj "^1.0.0"
1442 +
1443 +binary-extensions@^1.0.0:
1444 + version "1.8.0"
1445 + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
1446 +
1447 +bl@^1.0.0:
1448 + version "1.2.1"
1449 + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
1450 + dependencies:
1451 + readable-stream "^2.0.5"
1452 +
1453 +blob@0.0.4:
1454 + version "0.0.4"
1455 + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
1456 +
1457 +block-stream@*:
1458 + version "0.0.9"
1459 + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
1460 + dependencies:
1461 + inherits "~2.0.0"
1462 +
1463 +bluebird@^3.0.5, bluebird@^3.3.4, bluebird@^3.5.0:
1464 + version "3.5.0"
1465 + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
1466 +
1467 +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
1468 + version "4.11.7"
1469 + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.7.tgz#ddb048e50d9482790094c13eb3fcfc833ce7ab46"
1470 +
1471 +boolbase@~1.0.0:
1472 + version "1.0.0"
1473 + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
1474 +
1475 +boom@2.x.x, boom@^2.5.x, boom@^2.7.2:
1476 + version "2.10.1"
1477 + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
1478 + dependencies:
1479 + hoek "2.x.x"
1480 +
1481 +bowser@^1.6.0:
1482 + version "1.7.1"
1483 + resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.7.1.tgz#a4de8f18a1a0dc9531eb2a92a1521fb6a9ba96a5"
1484 +
1485 +brace-expansion@^1.1.7:
1486 + version "1.1.8"
1487 + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
1488 + dependencies:
1489 + balanced-match "^1.0.0"
1490 + concat-map "0.0.1"
1491 +
1492 +braces@^1.8.2:
1493 + version "1.8.5"
1494 + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
1495 + dependencies:
1496 + expand-range "^1.8.1"
1497 + preserve "^0.2.0"
1498 + repeat-element "^1.1.2"
1499 +
1500 +braces@^2.2.2:
1501 + version "2.2.2"
1502 + resolved "https://registry.yarnpkg.com/braces/-/braces-2.2.2.tgz#241f868c2b2690d9febeee5a7c83fbbf25d00b1b"
1503 + dependencies:
1504 + arr-flatten "^1.0.3"
1505 + array-unique "^0.3.2"
1506 + define-property "^1.0.0"
1507 + extend-shallow "^2.0.1"
1508 + fill-range "^4.0.0"
1509 + isobject "^3.0.0"
1510 + repeat-element "^1.1.2"
1511 + snapdragon "^0.8.1"
1512 + snapdragon-node "^2.0.1"
1513 + split-string "^2.1.0"
1514 + to-regex "^3.0.1"
1515 +
1516 +brorand@^1.0.1:
1517 + version "1.1.0"
1518 + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
1519 +
1520 +browserify-aes@0.4.0:
1521 + version "0.4.0"
1522 + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
1523 + dependencies:
1524 + inherits "^2.0.1"
1525 +
1526 +browserify-aes@^1.0.0, browserify-aes@^1.0.4:
1527 + version "1.0.6"
1528 + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
1529 + dependencies:
1530 + buffer-xor "^1.0.2"
1531 + cipher-base "^1.0.0"
1532 + create-hash "^1.1.0"
1533 + evp_bytestokey "^1.0.0"
1534 + inherits "^2.0.1"
1535 +
1536 +browserify-cipher@^1.0.0:
1537 + version "1.0.0"
1538 + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
1539 + dependencies:
1540 + browserify-aes "^1.0.4"
1541 + browserify-des "^1.0.0"
1542 + evp_bytestokey "^1.0.0"
1543 +
1544 +browserify-des@^1.0.0:
1545 + version "1.0.0"
1546 + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
1547 + dependencies:
1548 + cipher-base "^1.0.1"
1549 + des.js "^1.0.0"
1550 + inherits "^2.0.1"
1551 +
1552 +browserify-rsa@^4.0.0:
1553 + version "4.0.1"
1554 + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
1555 + dependencies:
1556 + bn.js "^4.1.0"
1557 + randombytes "^2.0.1"
1558 +
1559 +browserify-sign@^4.0.0:
1560 + version "4.0.4"
1561 + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
1562 + dependencies:
1563 + bn.js "^4.1.1"
1564 + browserify-rsa "^4.0.0"
1565 + create-hash "^1.1.0"
1566 + create-hmac "^1.1.2"
1567 + elliptic "^6.0.0"
1568 + inherits "^2.0.1"
1569 + parse-asn1 "^5.0.0"
1570 +
1571 +browserify-zlib@^0.1.4:
1572 + version "0.1.4"
1573 + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
1574 + dependencies:
1575 + pako "~0.2.0"
1576 +
1577 +browserslist@^1.0.0, browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
1578 + version "1.7.7"
1579 + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
1580 + dependencies:
1581 + caniuse-db "^1.0.30000639"
1582 + electron-to-chromium "^1.2.7"
1583 +
1584 +browserslist@^2.1.2:
1585 + version "2.1.5"
1586 + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.5.tgz#e882550df3d1cd6d481c1a3e0038f2baf13a4711"
1587 + dependencies:
1588 + caniuse-lite "^1.0.30000684"
1589 + electron-to-chromium "^1.3.14"
1590 +
1591 +bser@^2.0.0:
1592 + version "2.0.0"
1593 + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
1594 + dependencies:
1595 + node-int64 "^0.4.0"
1596 +
1597 +buble@^0.15.2:
1598 + version "0.15.2"
1599 + resolved "https://registry.yarnpkg.com/buble/-/buble-0.15.2.tgz#547fc47483f8e5e8176d82aa5ebccb183b02d613"
1600 + dependencies:
1601 + acorn "^3.3.0"
1602 + acorn-jsx "^3.0.1"
1603 + acorn-object-spread "^1.0.0"
1604 + chalk "^1.1.3"
1605 + magic-string "^0.14.0"
1606 + minimist "^1.2.0"
1607 + os-homedir "^1.0.1"
1608 +
1609 +buffer-crc32@~0.2.3:
1610 + version "0.2.13"
1611 + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
1612 +
1613 +buffer-peek-stream@^1.0.1:
1614 + version "1.0.1"
1615 + resolved "https://registry.yarnpkg.com/buffer-peek-stream/-/buffer-peek-stream-1.0.1.tgz#53b47570a1347787c5bad4ca2ca3021f9d8b3cfd"
1616 +
1617 +buffer-to-vinyl@^1.0.0:
1618 + version "1.1.0"
1619 + resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262"
1620 + dependencies:
1621 + file-type "^3.1.0"
1622 + readable-stream "^2.0.2"
1623 + uuid "^2.0.1"
1624 + vinyl "^1.0.0"
1625 +
1626 +buffer-xor@^1.0.2:
1627 + version "1.0.3"
1628 + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
1629 +
1630 +buffer@^4.3.0, buffer@^4.9.0:
1631 + version "4.9.1"
1632 + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
1633 + dependencies:
1634 + base64-js "^1.0.2"
1635 + ieee754 "^1.1.4"
1636 + isarray "^1.0.0"
1637 +
1638 +builtin-modules@^1.0.0:
1639 + version "1.1.1"
1640 + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
1641 +
1642 +builtin-status-codes@^3.0.0:
1643 + version "3.0.0"
1644 + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
1645 +
1646 +bundle-loader@^0.5.4:
1647 + version "0.5.5"
1648 + resolved "https://registry.yarnpkg.com/bundle-loader/-/bundle-loader-0.5.5.tgz#11fd7b08edf86a1d708efcb1eca62ca51f6c368a"
1649 + dependencies:
1650 + loader-utils "^1.0.2"
1651 +
1652 +bytes@2.3.0:
1653 + version "2.3.0"
1654 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070"
1655 +
1656 +bytes@2.4.0:
1657 + version "2.4.0"
1658 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339"
1659 +
1660 +cache-base@^1.0.1:
1661 + version "1.0.1"
1662 + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
1663 + dependencies:
1664 + collection-visit "^1.0.0"
1665 + component-emitter "^1.2.1"
1666 + get-value "^2.0.6"
1667 + has-value "^1.0.0"
1668 + isobject "^3.0.1"
1669 + set-value "^2.0.0"
1670 + to-object-path "^0.3.0"
1671 + union-value "^1.0.0"
1672 + unset-value "^1.0.0"
1673 +
1674 +call-me-maybe@^1.0.1:
1675 + version "1.0.1"
1676 + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
1677 +
1678 +call@2.x.x:
1679 + version "2.0.2"
1680 + resolved "https://registry.yarnpkg.com/call/-/call-2.0.2.tgz#9c9831abd0769486fdee83a41149b829b32d06c0"
1681 + dependencies:
1682 + boom "2.x.x"
1683 + hoek "2.x.x"
1684 +
1685 +callsite@1.0.0:
1686 + version "1.0.0"
1687 + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
1688 +
1689 +camelcase-keys@^2.0.0:
1690 + version "2.1.0"
1691 + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
1692 + dependencies:
1693 + camelcase "^2.0.0"
1694 + map-obj "^1.0.0"
1695 +
1696 +camelcase@^1.0.2:
1697 + version "1.2.1"
1698 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
1699 +
1700 +camelcase@^2.0.0:
1701 + version "2.1.1"
1702 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
1703 +
1704 +camelcase@^3.0.0:
1705 + version "3.0.0"
1706 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
1707 +
1708 +caniuse-api@^1.5.2, caniuse-api@^1.5.3:
1709 + version "1.6.1"
1710 + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
1711 + dependencies:
1712 + browserslist "^1.3.6"
1713 + caniuse-db "^1.0.30000529"
1714 + lodash.memoize "^4.1.2"
1715 + lodash.uniq "^4.5.0"
1716 +
1717 +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
1718 + version "1.0.30000696"
1719 + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000696.tgz#e71f5c61e1f96c7a3af4e791ac5db55e11737604"
1720 +
1721 +caniuse-lite@^1.0.30000684:
1722 + version "1.0.30000696"
1723 + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000696.tgz#30f2695d2a01a0dfd779a26ab83f4d134b3da5cc"
1724 +
1725 +capture-stack-trace@^1.0.0:
1726 + version "1.0.0"
1727 + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
1728 +
1729 +caseless@~0.12.0:
1730 + version "0.12.0"
1731 + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
1732 +
1733 +catbox-memory@1.x.x:
1734 + version "1.1.2"
1735 + resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-1.1.2.tgz#33c9183a32b31945ee8a484d0e3c3cbb82eaec1a"
1736 + dependencies:
1737 + hoek "2.x.x"
1738 +
1739 +catbox@^4.2.x:
1740 + version "4.3.0"
1741 + resolved "https://registry.yarnpkg.com/catbox/-/catbox-4.3.0.tgz#222377bd67f1291ac0e25d00002d065a9df7f39a"
1742 + dependencies:
1743 + boom "2.x.x"
1744 + hoek "2.x.x"
1745 + joi "6.x.x"
1746 +
1747 +caw@^1.0.1:
1748 + version "1.2.0"
1749 + resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034"
1750 + dependencies:
1751 + get-proxy "^1.0.1"
1752 + is-obj "^1.0.0"
1753 + object-assign "^3.0.0"
1754 + tunnel-agent "^0.4.0"
1755 +
1756 +caw@^2.0.0:
1757 + version "2.0.0"
1758 + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.0.tgz#11f8bddc2f801469952d5e3225ba98495a2fa0ff"
1759 + dependencies:
1760 + get-proxy "^1.0.1"
1761 + tunnel-agent "^0.4.0"
1762 +
1763 +ccount@^1.0.0:
1764 + version "1.0.1"
1765 + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.1.tgz#665687945168c218ec77ff61a4155ae00227a96c"
1766 +
1767 +center-align@^0.1.1:
1768 + version "0.1.3"
1769 + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
1770 + dependencies:
1771 + align-text "^0.1.3"
1772 + lazy-cache "^1.0.3"
1773 +
1774 +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
1775 + version "1.1.3"
1776 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
1777 + dependencies:
1778 + ansi-styles "^2.2.1"
1779 + escape-string-regexp "^1.0.2"
1780 + has-ansi "^2.0.0"
1781 + strip-ansi "^3.0.0"
1782 + supports-color "^2.0.0"
1783 +
1784 +chalk@^2.0:
1785 + version "2.1.0"
1786 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
1787 + dependencies:
1788 + ansi-styles "^3.1.0"
1789 + escape-string-regexp "^1.0.5"
1790 + supports-color "^4.0.0"
1791 +
1792 +chalk@^2.0.1:
1793 + version "2.0.1"
1794 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
1795 + dependencies:
1796 + ansi-styles "^3.1.0"
1797 + escape-string-regexp "^1.0.5"
1798 + supports-color "^4.0.0"
1799 +
1800 +character-entities-html4@^1.0.0:
1801 + version "1.1.0"
1802 + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.0.tgz#1ab08551d3ce1fa1df08d00fb9ca1defb147a06c"
1803 +
1804 +character-entities-legacy@^1.0.0:
1805 + version "1.1.0"
1806 + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.0.tgz#b18aad98f6b7bcc646c1e4c81f9f1956376a561a"
1807 +
1808 +character-entities@^1.0.0:
1809 + version "1.2.0"
1810 + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.0.tgz#a683e2cf75dbe8b171963531364e58e18a1b155f"
1811 +
1812 +character-reference-invalid@^1.0.0:
1813 + version "1.1.0"
1814 + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.0.tgz#dec9ad1dfb9f8d06b4fcdaa2adc3c4fd97af1e68"
1815 +
1816 +charenc@~0.0.1:
1817 + version "0.0.2"
1818 + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
1819 +
1820 +cheerio@^0.22.0:
1821 + version "0.22.0"
1822 + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
1823 + dependencies:
1824 + css-select "~1.2.0"
1825 + dom-serializer "~0.1.0"
1826 + entities "~1.1.1"
1827 + htmlparser2 "^3.9.1"
1828 + lodash.assignin "^4.0.9"
1829 + lodash.bind "^4.1.4"
1830 + lodash.defaults "^4.0.1"
1831 + lodash.filter "^4.4.0"
1832 + lodash.flatten "^4.2.0"
1833 + lodash.foreach "^4.3.0"
1834 + lodash.map "^4.4.0"
1835 + lodash.merge "^4.4.0"
1836 + lodash.pick "^4.2.1"
1837 + lodash.reduce "^4.4.0"
1838 + lodash.reject "^4.4.0"
1839 + lodash.some "^4.4.0"
1840 +
1841 +cheerio@^1.0.0-rc.2:
1842 + version "1.0.0-rc.2"
1843 + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
1844 + dependencies:
1845 + css-select "~1.2.0"
1846 + dom-serializer "~0.1.0"
1847 + entities "~1.1.1"
1848 + htmlparser2 "^3.9.1"
1849 + lodash "^4.15.0"
1850 + parse5 "^3.0.1"
1851 +
1852 +chokidar@^1.0.0, chokidar@^1.6.1, chokidar@^1.7.0:
1853 + version "1.7.0"
1854 + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
1855 + dependencies:
1856 + anymatch "^1.3.0"
1857 + async-each "^1.0.0"
1858 + glob-parent "^2.0.0"
1859 + inherits "^2.0.1"
1860 + is-binary-path "^1.0.0"
1861 + is-glob "^2.0.0"
1862 + path-is-absolute "^1.0.0"
1863 + readdirp "^2.0.0"
1864 + optionalDependencies:
1865 + fsevents "^1.0.0"
1866 +
1867 +chownr@^1.0.1:
1868 + version "1.0.1"
1869 + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
1870 +
1871 +chunk-manifest-webpack-plugin@0.1.0:
1872 + version "0.1.0"
1873 + resolved "https://registry.yarnpkg.com/chunk-manifest-webpack-plugin/-/chunk-manifest-webpack-plugin-0.1.0.tgz#6138488fc21ddab4ccfb7c1c11d51bb80a943186"
1874 + dependencies:
1875 + webpack-core "^0.4.8"
1876 +
1877 +ci-info@^1.0.0:
1878 + version "1.0.0"
1879 + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
1880 +
1881 +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
1882 + version "1.0.3"
1883 + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
1884 + dependencies:
1885 + inherits "^2.0.1"
1886 +
1887 +clap@^1.0.9:
1888 + version "1.2.0"
1889 + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857"
1890 + dependencies:
1891 + chalk "^1.1.3"
1892 +
1893 +class-utils@^0.3.5:
1894 + version "0.3.5"
1895 + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.5.tgz#17e793103750f9627b2176ea34cfd1b565903c80"
1896 + dependencies:
1897 + arr-union "^3.1.0"
1898 + define-property "^0.2.5"
1899 + isobject "^3.0.0"
1900 + lazy-cache "^2.0.2"
1901 + static-extend "^0.1.1"
1902 +
1903 +cli-cursor@^2.1.0:
1904 + version "2.1.0"
1905 + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
1906 + dependencies:
1907 + restore-cursor "^2.0.0"
1908 +
1909 +cli-width@^2.0.0:
1910 + version "2.1.0"
1911 + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
1912 +
1913 +clipboard@^1.5.5:
1914 + version "1.7.1"
1915 + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b"
1916 + dependencies:
1917 + good-listener "^1.2.2"
1918 + select "^1.1.2"
1919 + tiny-emitter "^2.0.0"
1920 +
1921 +cliui@^2.1.0:
1922 + version "2.1.0"
1923 + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
1924 + dependencies:
1925 + center-align "^0.1.1"
1926 + right-align "^0.1.1"
1927 + wordwrap "0.0.2"
1928 +
1929 +cliui@^3.2.0:
1930 + version "3.2.0"
1931 + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
1932 + dependencies:
1933 + string-width "^1.0.1"
1934 + strip-ansi "^3.0.1"
1935 + wrap-ansi "^2.0.0"
1936 +
1937 +clone-stats@^0.0.1:
1938 + version "0.0.1"
1939 + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
1940 +
1941 +clone@2.1.1:
1942 + version "2.1.1"
1943 + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
1944 +
1945 +clone@^0.2.0:
1946 + version "0.2.0"
1947 + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
1948 +
1949 +clone@^1.0.0, clone@^1.0.2:
1950 + version "1.0.2"
1951 + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
1952 +
1953 +co@3.1.0:
1954 + version "3.1.0"
1955 + resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
1956 +
1957 +co@^4.6.0:
1958 + version "4.6.0"
1959 + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
1960 +
1961 +coa@~1.0.1:
1962 + version "1.0.3"
1963 + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.3.tgz#1b54a5e1dcf77c990455d4deea98c564416dc893"
1964 + dependencies:
1965 + q "^1.1.2"
1966 +
1967 +code-point-at@^1.0.0:
1968 + version "1.1.0"
1969 + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
1970 +
1971 +coffee-script@^1.12.4:
1972 + version "1.12.6"
1973 + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.6.tgz#285a3f7115689065064d6bf9ef4572db66695cbf"
1974 +
1975 +collapse-white-space@^1.0.0, collapse-white-space@^1.0.2:
1976 + version "1.0.3"
1977 + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c"
1978 +
1979 +collection-visit@^1.0.0:
1980 + version "1.0.0"
1981 + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
1982 + dependencies:
1983 + map-visit "^1.0.0"
1984 + object-visit "^1.0.0"
1985 +
1986 +color-convert@^0.5.3:
1987 + version "0.5.3"
1988 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd"
1989 +
1990 +color-convert@^1.0.0, color-convert@^1.3.0, color-convert@^1.8.2:
1991 + version "1.9.0"
1992 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
1993 + dependencies:
1994 + color-name "^1.1.1"
1995 +
1996 +color-name@^1.0.0, color-name@^1.1.1:
1997 + version "1.1.2"
1998 + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d"
1999 +
2000 +color-string@^0.3.0:
2001 + version "0.3.0"
2002 + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
2003 + dependencies:
2004 + color-name "^1.0.0"
2005 +
2006 +color-string@^1.4.0:
2007 + version "1.5.2"
2008 + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9"
2009 + dependencies:
2010 + color-name "^1.0.0"
2011 + simple-swizzle "^0.2.2"
2012 +
2013 +color@^0.10.1:
2014 + version "0.10.1"
2015 + resolved "https://registry.yarnpkg.com/color/-/color-0.10.1.tgz#c04188df82a209ddebccecdacd3ec320f193739f"
2016 + dependencies:
2017 + color-convert "^0.5.3"
2018 + color-string "^0.3.0"
2019 +
2020 +color@^0.11.0, color@^0.11.3, color@^0.11.4:
2021 + version "0.11.4"
2022 + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
2023 + dependencies:
2024 + clone "^1.0.2"
2025 + color-convert "^1.3.0"
2026 + color-string "^0.3.0"
2027 +
2028 +color@^1.0.3:
2029 + version "1.0.3"
2030 + resolved "https://registry.yarnpkg.com/color/-/color-1.0.3.tgz#e48e832d85f14ef694fb468811c2d5cfe729b55d"
2031 + dependencies:
2032 + color-convert "^1.8.2"
2033 + color-string "^1.4.0"
2034 +
2035 +colormin@^1.0.5:
2036 + version "1.1.2"
2037 + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
2038 + dependencies:
2039 + color "^0.11.0"
2040 + css-color-names "0.0.4"
2041 + has "^1.0.1"
2042 +
2043 +colors@1.1.2, colors@~1.1.2:
2044 + version "1.1.2"
2045 + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
2046 +
2047 +combined-stream@^1.0.5, combined-stream@~1.0.5:
2048 + version "1.0.5"
2049 + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
2050 + dependencies:
2051 + delayed-stream "~1.0.0"
2052 +
2053 +comma-separated-tokens@^1.0.1:
2054 + version "1.0.4"
2055 + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.4.tgz#72083e58d4a462f01866f6617f4d98a3cd3b8a46"
2056 + dependencies:
2057 + trim "0.0.1"
2058 +
2059 +commander@2.9.0, commander@2.9.x:
2060 + version "2.9.0"
2061 + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
2062 + dependencies:
2063 + graceful-readlink ">= 1.0.0"
2064 +
2065 +commander@^2.11.0:
2066 + version "2.11.0"
2067 + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
2068 +
2069 +commander@~2.8.1:
2070 + version "2.8.1"
2071 + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
2072 + dependencies:
2073 + graceful-readlink ">= 1.0.0"
2074 +
2075 +common-tags@0.1.1:
2076 + version "0.1.1"
2077 + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-0.1.1.tgz#d893486ecc6df22cffe6c393c88c12f71e7e8871"
2078 + dependencies:
2079 + babel-runtime "^6.6.1"
2080 +
2081 +common-tags@^1.4.0:
2082 + version "1.4.0"
2083 + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0"
2084 + dependencies:
2085 + babel-runtime "^6.18.0"
2086 +
2087 +commondir@^1.0.1:
2088 + version "1.0.1"
2089 + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
2090 +
2091 +component-bind@1.0.0:
2092 + version "1.0.0"
2093 + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
2094 +
2095 +component-emitter@1.2.0:
2096 + version "1.2.0"
2097 + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe"
2098 +
2099 +component-emitter@1.2.1, component-emitter@^1.2.1:
2100 + version "1.2.1"
2101 + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
2102 +
2103 +component-inherit@0.0.3:
2104 + version "0.0.3"
2105 + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
2106 +
2107 +component-props@1.1.1:
2108 + version "1.1.1"
2109 + resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944"
2110 +
2111 +component-xor@0.0.3:
2112 + version "0.0.3"
2113 + resolved "https://registry.yarnpkg.com/component-xor/-/component-xor-0.0.3.tgz#68ae7f1c40b78d843d69f2a829cfb31d6afbf051"
2114 +
2115 +compressible@~2.0.8:
2116 + version "2.0.10"
2117 + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd"
2118 + dependencies:
2119 + mime-db ">= 1.27.0 < 2"
2120 +
2121 +compression@^1.5.2:
2122 + version "1.6.2"
2123 + resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3"
2124 + dependencies:
2125 + accepts "~1.3.3"
2126 + bytes "2.3.0"
2127 + compressible "~2.0.8"
2128 + debug "~2.2.0"
2129 + on-headers "~1.0.1"
2130 + vary "~1.1.0"
2131 +
2132 +concat-map@0.0.1:
2133 + version "0.0.1"
2134 + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
2135 +
2136 +concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.2:
2137 + version "1.6.0"
2138 + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
2139 + dependencies:
2140 + inherits "^2.0.3"
2141 + readable-stream "^2.2.2"
2142 + typedarray "^0.0.6"
2143 +
2144 +connect-history-api-fallback@^1.3.0:
2145 + version "1.3.0"
2146 + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169"
2147 +
2148 +console-browserify@^1.1.0:
2149 + version "1.1.0"
2150 + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
2151 + dependencies:
2152 + date-now "^0.1.4"
2153 +
2154 +console-control-strings@^1.0.0, console-control-strings@~1.1.0:
2155 + version "1.1.0"
2156 + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
2157 +
2158 +console-stream@^0.1.1:
2159 + version "0.1.1"
2160 + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44"
2161 +
2162 +constants-browserify@^1.0.0:
2163 + version "1.0.0"
2164 + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
2165 +
2166 +content-disposition@0.5.2:
2167 + version "0.5.2"
2168 + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
2169 +
2170 +content-type@^1.0.2, content-type@~1.0.2:
2171 + version "1.0.2"
2172 + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
2173 +
2174 +content@1.x.x:
2175 + version "1.0.2"
2176 + resolved "https://registry.yarnpkg.com/content/-/content-1.0.2.tgz#cb7edf32afef17c48acfdbd21ff98c23315ae824"
2177 + dependencies:
2178 + boom "2.x.x"
2179 + hoek "2.x.x"
2180 +
2181 +convert-hrtime@^2.0.0:
2182 + version "2.0.0"
2183 + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-2.0.0.tgz#19bfb2c9162f9e11c2f04c2c79de2b7e8095c627"
2184 +
2185 +convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.5.0:
2186 + version "1.5.0"
2187 + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
2188 +
2189 +cookie-signature@1.0.6:
2190 + version "1.0.6"
2191 + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
2192 +
2193 +cookie@0.3.1:
2194 + version "0.3.1"
2195 + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
2196 +
2197 +copy-descriptor@^0.1.0:
2198 + version "0.1.1"
2199 + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
2200 +
2201 +copyfiles@^1.2.0:
2202 + version "1.2.0"
2203 + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-1.2.0.tgz#a8da3ac41aa2220ae29bd3c58b6984294f2c593c"
2204 + dependencies:
2205 + glob "^7.0.5"
2206 + ltcdr "^2.2.1"
2207 + minimatch "^3.0.3"
2208 + mkdirp "^0.5.1"
2209 + noms "0.0.0"
2210 + through2 "^2.0.1"
2211 +
2212 +core-js@^1.0.0, core-js@^1.2.6:
2213 + version "1.2.7"
2214 + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
2215 +
2216 +core-js@^2.4.0, core-js@^2.4.1:
2217 + version "2.4.1"
2218 + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
2219 +
2220 +core-js@^2.5.0:
2221 + version "2.5.0"
2222 + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086"
2223 +
2224 +core-js@^2.5.1:
2225 + version "2.5.1"
2226 + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
2227 +
2228 +core-util-is@~1.0.0:
2229 + version "1.0.2"
2230 + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
2231 +
2232 +create-ecdh@^4.0.0:
2233 + version "4.0.0"
2234 + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
2235 + dependencies:
2236 + bn.js "^4.1.0"
2237 + elliptic "^6.0.0"
2238 +
2239 +create-error-class@^3.0.0, create-error-class@^3.0.1:
2240 + version "3.0.2"
2241 + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
2242 + dependencies:
2243 + capture-stack-trace "^1.0.0"
2244 +
2245 +create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2:
2246 + version "1.1.3"
2247 + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
2248 + dependencies:
2249 + cipher-base "^1.0.1"
2250 + inherits "^2.0.1"
2251 + ripemd160 "^2.0.0"
2252 + sha.js "^2.4.0"
2253 +
2254 +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
2255 + version "1.1.6"
2256 + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
2257 + dependencies:
2258 + cipher-base "^1.0.3"
2259 + create-hash "^1.1.0"
2260 + inherits "^2.0.1"
2261 + ripemd160 "^2.0.0"
2262 + safe-buffer "^5.0.1"
2263 + sha.js "^2.4.8"
2264 +
2265 +cross-env@^3.1.1:
2266 + version "3.2.4"
2267 + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-3.2.4.tgz#9e0585f277864ed421ce756f81a980ff0d698aba"
2268 + dependencies:
2269 + cross-spawn "^5.1.0"
2270 + is-windows "^1.0.0"
2271 +
2272 +cross-spawn@^4.0.0:
2273 + version "4.0.2"
2274 + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
2275 + dependencies:
2276 + lru-cache "^4.0.1"
2277 + which "^1.2.9"
2278 +
2279 +cross-spawn@^5.1.0:
2280 + version "5.1.0"
2281 + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
2282 + dependencies:
2283 + lru-cache "^4.0.1"
2284 + shebang-command "^1.2.0"
2285 + which "^1.2.9"
2286 +
2287 +crypt@~0.0.1:
2288 + version "0.0.2"
2289 + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
2290 +
2291 +cryptiles@2.x.x:
2292 + version "2.0.5"
2293 + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
2294 + dependencies:
2295 + boom "2.x.x"
2296 +
2297 +crypto-browserify@3.3.0:
2298 + version "3.3.0"
2299 + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
2300 + dependencies:
2301 + browserify-aes "0.4.0"
2302 + pbkdf2-compat "2.0.1"
2303 + ripemd160 "0.2.0"
2304 + sha.js "2.2.6"
2305 +
2306 +crypto-browserify@^3.11.0:
2307 + version "3.11.0"
2308 + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
2309 + dependencies:
2310 + browserify-cipher "^1.0.0"
2311 + browserify-sign "^4.0.0"
2312 + create-ecdh "^4.0.0"
2313 + create-hash "^1.1.0"
2314 + create-hmac "^1.1.0"
2315 + diffie-hellman "^5.0.0"
2316 + inherits "^2.0.1"
2317 + pbkdf2 "^3.0.3"
2318 + public-encrypt "^4.0.0"
2319 + randombytes "^2.0.0"
2320 +
2321 +css-color-function@^1.2.0:
2322 + version "1.3.0"
2323 + resolved "https://registry.yarnpkg.com/css-color-function/-/css-color-function-1.3.0.tgz#72c767baf978f01b8a8a94f42f17ba5d22a776fc"
2324 + dependencies:
2325 + balanced-match "0.1.0"
2326 + color "^0.11.0"
2327 + debug "~0.7.4"
2328 + rgb "~0.1.0"
2329 +
2330 +css-color-names@0.0.4:
2331 + version "0.0.4"
2332 + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
2333 +
2334 +css-in-js-utils@^1.0.3:
2335 + version "1.0.3"
2336 + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-1.0.3.tgz#9ac7e02f763cf85d94017666565ed68a5b5f3215"
2337 + dependencies:
2338 + hyphenate-style-name "^1.0.2"
2339 +
2340 +css-loader@^0.26.1:
2341 + version "0.26.4"
2342 + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.4.tgz#b61e9e30db94303e6ffc892f10ecd09ad025a1fd"
2343 + dependencies:
2344 + babel-code-frame "^6.11.0"
2345 + css-selector-tokenizer "^0.7.0"
2346 + cssnano ">=2.6.1 <4"
2347 + loader-utils "^1.0.2"
2348 + lodash.camelcase "^4.3.0"
2349 + object-assign "^4.0.1"
2350 + postcss "^5.0.6"
2351 + postcss-modules-extract-imports "^1.0.0"
2352 + postcss-modules-local-by-default "^1.0.1"
2353 + postcss-modules-scope "^1.0.0"
2354 + postcss-modules-values "^1.1.0"
2355 + source-list-map "^0.1.7"
2356 +
2357 +css-select@^1.1.0, css-select@~1.2.0:
2358 + version "1.2.0"
2359 + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
2360 + dependencies:
2361 + boolbase "~1.0.0"
2362 + css-what "2.1"
2363 + domutils "1.5.1"
2364 + nth-check "~1.0.1"
2365 +
2366 +css-selector-parser@^1.1.0:
2367 + version "1.3.0"
2368 + resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.3.0.tgz#5f1ad43e2d8eefbfdc304fcd39a521664943e3eb"
2369 +
2370 +css-selector-tokenizer@^0.7.0:
2371 + version "0.7.0"
2372 + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
2373 + dependencies:
2374 + cssesc "^0.1.0"
2375 + fastparse "^1.1.1"
2376 + regexpu-core "^1.0.0"
2377 +
2378 +css-what@2.1:
2379 + version "2.1.0"
2380 + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
2381 +
2382 +cssesc@^0.1.0:
2383 + version "0.1.0"
2384 + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
2385 +
2386 +"cssnano@>=2.6.1 <4":
2387 + version "3.10.0"
2388 + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
2389 + dependencies:
2390 + autoprefixer "^6.3.1"
2391 + decamelize "^1.1.2"
2392 + defined "^1.0.0"
2393 + has "^1.0.1"
2394 + object-assign "^4.0.1"
2395 + postcss "^5.0.14"
2396 + postcss-calc "^5.2.0"
2397 + postcss-colormin "^2.1.8"
2398 + postcss-convert-values "^2.3.4"
2399 + postcss-discard-comments "^2.0.4"
2400 + postcss-discard-duplicates "^2.0.1"
2401 + postcss-discard-empty "^2.0.1"
2402 + postcss-discard-overridden "^0.1.1"
2403 + postcss-discard-unused "^2.2.1"
2404 + postcss-filter-plugins "^2.0.0"
2405 + postcss-merge-idents "^2.1.5"
2406 + postcss-merge-longhand "^2.0.1"
2407 + postcss-merge-rules "^2.0.3"
2408 + postcss-minify-font-values "^1.0.2"
2409 + postcss-minify-gradients "^1.0.1"
2410 + postcss-minify-params "^1.0.4"
2411 + postcss-minify-selectors "^2.0.4"
2412 + postcss-normalize-charset "^1.1.0"
2413 + postcss-normalize-url "^3.0.7"
2414 + postcss-ordered-values "^2.1.0"
2415 + postcss-reduce-idents "^2.2.2"
2416 + postcss-reduce-initial "^1.0.0"
2417 + postcss-reduce-transforms "^1.0.3"
2418 + postcss-svgo "^2.1.1"
2419 + postcss-unique-selectors "^2.0.2"
2420 + postcss-value-parser "^3.2.3"
2421 + postcss-zindex "^2.0.1"
2422 +
2423 +csso@~2.3.1:
2424 + version "2.3.2"
2425 + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
2426 + dependencies:
2427 + clap "^1.0.9"
2428 + source-map "^0.5.3"
2429 +
2430 +currently-unhandled@^0.4.1:
2431 + version "0.4.1"
2432 + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
2433 + dependencies:
2434 + array-find-index "^1.0.1"
2435 +
2436 +d@1:
2437 + version "1.0.0"
2438 + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
2439 + dependencies:
2440 + es5-ext "^0.10.9"
2441 +
2442 +dashdash@^1.12.0:
2443 + version "1.14.1"
2444 + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
2445 + dependencies:
2446 + assert-plus "^1.0.0"
2447 +
2448 +data-uri-to-buffer@0.0.4:
2449 + version "0.0.4"
2450 + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz#46e13ab9da8e309745c8d01ce547213ebdb2fe3f"
2451 +
2452 +date-now@^0.1.4:
2453 + version "0.1.4"
2454 + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
2455 +
2456 +dateformat@2.0.0, dateformat@^2.0.0:
2457 + version "2.0.0"
2458 + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
2459 +
2460 +death@^1.0.0:
2461 + version "1.1.0"
2462 + resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318"
2463 +
2464 +debug@2.3.3:
2465 + version "2.3.3"
2466 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c"
2467 + dependencies:
2468 + ms "0.7.2"
2469 +
2470 +debug@2.6.7:
2471 + version "2.6.7"
2472 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
2473 + dependencies:
2474 + ms "2.0.0"
2475 +
2476 +debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@~2.6.4, debug@~2.6.6:
2477 + version "2.6.8"
2478 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
2479 + dependencies:
2480 + ms "2.0.0"
2481 +
2482 +debug@^2.3.3:
2483 + version "2.6.9"
2484 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
2485 + dependencies:
2486 + ms "2.0.0"
2487 +
2488 +debug@~0.7.4:
2489 + version "0.7.4"
2490 + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
2491 +
2492 +debug@~2.2.0:
2493 + version "2.2.0"
2494 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
2495 + dependencies:
2496 + ms "0.7.1"
2497 +
2498 +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
2499 + version "1.2.0"
2500 + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
2501 +
2502 +decompress-response@^3.2.0:
2503 + version "3.3.0"
2504 + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
2505 + dependencies:
2506 + mimic-response "^1.0.0"
2507 +
2508 +decompress-tar@^3.0.0:
2509 + version "3.1.0"
2510 + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466"
2511 + dependencies:
2512 + is-tar "^1.0.0"
2513 + object-assign "^2.0.0"
2514 + strip-dirs "^1.0.0"
2515 + tar-stream "^1.1.1"
2516 + through2 "^0.6.1"
2517 + vinyl "^0.4.3"
2518 +
2519 +decompress-tarbz2@^3.0.0:
2520 + version "3.1.0"
2521 + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d"
2522 + dependencies:
2523 + is-bzip2 "^1.0.0"
2524 + object-assign "^2.0.0"
2525 + seek-bzip "^1.0.3"
2526 + strip-dirs "^1.0.0"
2527 + tar-stream "^1.1.1"
2528 + through2 "^0.6.1"
2529 + vinyl "^0.4.3"
2530 +
2531 +decompress-targz@^3.0.0:
2532 + version "3.1.0"
2533 + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0"
2534 + dependencies:
2535 + is-gzip "^1.0.0"
2536 + object-assign "^2.0.0"
2537 + strip-dirs "^1.0.0"
2538 + tar-stream "^1.1.1"
2539 + through2 "^0.6.1"
2540 + vinyl "^0.4.3"
2541 +
2542 +decompress-unzip@^3.0.0:
2543 + version "3.4.0"
2544 + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb"
2545 + dependencies:
2546 + is-zip "^1.0.0"
2547 + read-all-stream "^3.0.0"
2548 + stat-mode "^0.2.0"
2549 + strip-dirs "^1.0.0"
2550 + through2 "^2.0.0"
2551 + vinyl "^1.0.0"
2552 + yauzl "^2.2.1"
2553 +
2554 +decompress@^3.0.0:
2555 + version "3.0.0"
2556 + resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed"
2557 + dependencies:
2558 + buffer-to-vinyl "^1.0.0"
2559 + concat-stream "^1.4.6"
2560 + decompress-tar "^3.0.0"
2561 + decompress-tarbz2 "^3.0.0"
2562 + decompress-targz "^3.0.0"
2563 + decompress-unzip "^3.0.0"
2564 + stream-combiner2 "^1.1.1"
2565 + vinyl-assign "^1.0.1"
2566 + vinyl-fs "^2.2.0"
2567 +
2568 +deep-equal@^1.0.1:
2569 + version "1.0.1"
2570 + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
2571 +
2572 +deep-extend@~0.4.0:
2573 + version "0.4.2"
2574 + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
2575 +
2576 +define-property@^0.2.5:
2577 + version "0.2.5"
2578 + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
2579 + dependencies:
2580 + is-descriptor "^0.1.0"
2581 +
2582 +define-property@^1.0.0:
2583 + version "1.0.0"
2584 + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
2585 + dependencies:
2586 + is-descriptor "^1.0.0"
2587 +
2588 +defined@^1.0.0:
2589 + version "1.0.0"
2590 + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
2591 +
2592 +del@^3.0.0:
2593 + version "3.0.0"
2594 + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
2595 + dependencies:
2596 + globby "^6.1.0"
2597 + is-path-cwd "^1.0.0"
2598 + is-path-in-cwd "^1.0.0"
2599 + p-map "^1.1.1"
2600 + pify "^3.0.0"
2601 + rimraf "^2.2.8"
2602 +
2603 +delayed-stream@~1.0.0:
2604 + version "1.0.0"
2605 + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
2606 +
2607 +delegate@^3.1.2:
2608 + version "3.1.3"
2609 + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.1.3.tgz#9a8251a777d7025faa55737bc3b071742127a9fd"
2610 +
2611 +delegates@^1.0.0:
2612 + version "1.0.0"
2613 + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
2614 +
2615 +depd@1.1.0, depd@~1.1.0:
2616 + version "1.1.0"
2617 + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
2618 +
2619 +des.js@^1.0.0:
2620 + version "1.0.0"
2621 + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
2622 + dependencies:
2623 + inherits "^2.0.1"
2624 + minimalistic-assert "^1.0.0"
2625 +
2626 +destroy@~1.0.4:
2627 + version "1.0.4"
2628 + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
2629 +
2630 +detab@^2.0.0:
2631 + version "2.0.0"
2632 + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.0.tgz#485bd7954d2348092e998f7ff1a79fd9869d9b50"
2633 + dependencies:
2634 + repeat-string "^1.5.4"
2635 +
2636 +detect-file@^0.1.0:
2637 + version "0.1.0"
2638 + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
2639 + dependencies:
2640 + fs-exists-sync "^0.1.0"
2641 +
2642 +detect-indent@^4.0.0:
2643 + version "4.0.0"
2644 + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
2645 + dependencies:
2646 + repeating "^2.0.0"
2647 +
2648 +detect-indent@^5.0.0:
2649 + version "5.0.0"
2650 + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
2651 +
2652 +detect-port@^1.2.1:
2653 + version "1.2.1"
2654 + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.1.tgz#a2c0a048aa9df2b703fc54bb4436ce2118f09b5a"
2655 + dependencies:
2656 + address "^1.0.1"
2657 + debug "^2.6.0"
2658 +
2659 +diacritics-map@^0.1.0:
2660 + version "0.1.0"
2661 + resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af"
2662 +
2663 +diffie-hellman@^5.0.0:
2664 + version "5.0.2"
2665 + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
2666 + dependencies:
2667 + bn.js "^4.1.0"
2668 + miller-rabin "^4.0.0"
2669 + randombytes "^2.0.0"
2670 +
2671 +dom-converter@~0.1:
2672 + version "0.1.4"
2673 + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
2674 + dependencies:
2675 + utila "~0.3"
2676 +
2677 +dom-helpers@^3.0.0:
2678 + version "3.2.1"
2679 + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a"
2680 +
2681 +dom-iterator@^0.3.0:
2682 + version "0.3.0"
2683 + resolved "https://registry.yarnpkg.com/dom-iterator/-/dom-iterator-0.3.0.tgz#5a745bf47bc692ac0fa3c0c385396ff2cbd55882"
2684 + dependencies:
2685 + component-props "1.1.1"
2686 + component-xor "0.0.3"
2687 +
2688 +dom-serializer@0, dom-serializer@~0.1.0:
2689 + version "0.1.0"
2690 + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
2691 + dependencies:
2692 + domelementtype "~1.1.1"
2693 + entities "~1.1.1"
2694 +
2695 +dom-walk@^0.1.0:
2696 + version "0.1.1"
2697 + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
2698 +
2699 +domain-browser@^1.1.1:
2700 + version "1.1.7"
2701 + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
2702 +
2703 +domelementtype@1, domelementtype@^1.3.0:
2704 + version "1.3.0"
2705 + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
2706 +
2707 +domelementtype@~1.1.1:
2708 + version "1.1.3"
2709 + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
2710 +
2711 +domhandler@2.1:
2712 + version "2.1.0"
2713 + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
2714 + dependencies:
2715 + domelementtype "1"
2716 +
2717 +domhandler@^2.3.0:
2718 + version "2.4.1"
2719 + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
2720 + dependencies:
2721 + domelementtype "1"
2722 +
2723 +domready@^1.0.8:
2724 + version "1.0.8"
2725 + resolved "https://registry.yarnpkg.com/domready/-/domready-1.0.8.tgz#91f252e597b65af77e745ae24dd0185d5e26d58c"
2726 +
2727 +domutils@1.1:
2728 + version "1.1.6"
2729 + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
2730 + dependencies:
2731 + domelementtype "1"
2732 +
2733 +domutils@1.5.1, domutils@^1.5.1:
2734 + version "1.5.1"
2735 + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
2736 + dependencies:
2737 + dom-serializer "0"
2738 + domelementtype "1"
2739 +
2740 +dotenv@^4.0.0:
2741 + version "4.0.0"
2742 + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
2743 +
2744 +download@^4.0.0, download@^4.1.2:
2745 + version "4.4.3"
2746 + resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac"
2747 + dependencies:
2748 + caw "^1.0.1"
2749 + concat-stream "^1.4.7"
2750 + each-async "^1.0.0"
2751 + filenamify "^1.0.1"
2752 + got "^5.0.0"
2753 + gulp-decompress "^1.2.0"
2754 + gulp-rename "^1.2.0"
2755 + is-url "^1.2.0"
2756 + object-assign "^4.0.1"
2757 + read-all-stream "^3.0.0"
2758 + readable-stream "^2.0.2"
2759 + stream-combiner2 "^1.1.1"
2760 + vinyl "^1.0.0"
2761 + vinyl-fs "^2.2.0"
2762 + ware "^1.2.0"
2763 +
2764 +duplexer2@0.0.2:
2765 + version "0.0.2"
2766 + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
2767 + dependencies:
2768 + readable-stream "~1.1.9"
2769 +
2770 +duplexer2@^0.1.4, duplexer2@~0.1.0:
2771 + version "0.1.4"
2772 + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
2773 + dependencies:
2774 + readable-stream "^2.0.2"
2775 +
2776 +duplexer3@^0.1.4:
2777 + version "0.1.4"
2778 + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
2779 +
2780 +duplexify@^3.2.0:
2781 + version "3.5.0"
2782 + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
2783 + dependencies:
2784 + end-of-stream "1.0.0"
2785 + inherits "^2.0.1"
2786 + readable-stream "^2.0.0"
2787 + stream-shift "^1.0.0"
2788 +
2789 +each-async@^1.0.0, each-async@^1.1.1:
2790 + version "1.1.1"
2791 + resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473"
2792 + dependencies:
2793 + onetime "^1.0.0"
2794 + set-immediate-shim "^1.0.0"
2795 +
2796 +ecc-jsbn@~0.1.1:
2797 + version "0.1.1"
2798 + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
2799 + dependencies:
2800 + jsbn "~0.1.0"
2801 +
2802 +ee-first@1.1.1:
2803 + version "1.1.1"
2804 + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
2805 +
2806 +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.14:
2807 + version "1.3.15"
2808 + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz#08397934891cbcfaebbd18b82a95b5a481138369"
2809 +
2810 +elliptic@^6.0.0:
2811 + version "6.4.0"
2812 + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
2813 + dependencies:
2814 + bn.js "^4.4.0"
2815 + brorand "^1.0.1"
2816 + hash.js "^1.0.0"
2817 + hmac-drbg "^1.0.0"
2818 + inherits "^2.0.1"
2819 + minimalistic-assert "^1.0.0"
2820 + minimalistic-crypto-utils "^1.0.0"
2821 +
2822 +"emoji-regex@>=6.0.0 <=6.1.1":
2823 + version "6.1.1"
2824 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e"
2825 +
2826 +emojis-list@^2.0.0:
2827 + version "2.1.0"
2828 + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
2829 +
2830 +encodeurl@~1.0.1:
2831 + version "1.0.1"
2832 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
2833 +
2834 +encoding@^0.1.11:
2835 + version "0.1.12"
2836 + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
2837 + dependencies:
2838 + iconv-lite "~0.4.13"
2839 +
2840 +end-of-stream@1.0.0:
2841 + version "1.0.0"
2842 + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
2843 + dependencies:
2844 + once "~1.3.0"
2845 +
2846 +end-of-stream@^1.0.0, end-of-stream@^1.1.0:
2847 + version "1.4.0"
2848 + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206"
2849 + dependencies:
2850 + once "^1.4.0"
2851 +
2852 +engine.io-client@~3.1.0:
2853 + version "3.1.1"
2854 + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.1.tgz#415a9852badb14fa008fa3ef1e31608db6761325"
2855 + dependencies:
2856 + component-emitter "1.2.1"
2857 + component-inherit "0.0.3"
2858 + debug "~2.6.4"
2859 + engine.io-parser "~2.1.1"
2860 + has-cors "1.1.0"
2861 + indexof "0.0.1"
2862 + parsejson "0.0.3"
2863 + parseqs "0.0.5"
2864 + parseuri "0.0.5"
2865 + ws "~2.3.1"
2866 + xmlhttprequest-ssl "1.5.3"
2867 + yeast "0.1.2"
2868 +
2869 +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
2870 + version "2.1.1"
2871 + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.1.tgz#e0fb3f0e0462f7f58bb77c1a52e9f5a7e26e4668"
2872 + dependencies:
2873 + after "0.8.2"
2874 + arraybuffer.slice "0.0.6"
2875 + base64-arraybuffer "0.1.5"
2876 + blob "0.0.4"
2877 + has-binary2 "~1.0.2"
2878 +
2879 +engine.io@~3.1.0:
2880 + version "3.1.0"
2881 + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.0.tgz#5ca438e3ce9fdbc915c4a21c8dd9e1266706e57e"
2882 + dependencies:
2883 + accepts "1.3.3"
2884 + base64id "1.0.0"
2885 + cookie "0.3.1"
2886 + debug "~2.6.4"
2887 + engine.io-parser "~2.1.0"
2888 + ws "~2.3.1"
2889 + optionalDependencies:
2890 + uws "~0.14.4"
2891 +
2892 +enhanced-resolve@~0.9.0:
2893 + version "0.9.1"
2894 + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
2895 + dependencies:
2896 + graceful-fs "^4.1.2"
2897 + memory-fs "^0.2.0"
2898 + tapable "^0.1.8"
2899 +
2900 +entities@^1.1.1, entities@~1.1.1:
2901 + version "1.1.1"
2902 + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
2903 +
2904 +err-code@^1.0.0:
2905 + version "1.1.2"
2906 + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
2907 +
2908 +errno@^0.1.3:
2909 + version "0.1.4"
2910 + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
2911 + dependencies:
2912 + prr "~0.0.0"
2913 +
2914 +error-ex@^1.2.0:
2915 + version "1.3.1"
2916 + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
2917 + dependencies:
2918 + is-arrayish "^0.2.1"
2919 +
2920 +error-stack-parser@^1.3.6:
2921 + version "1.3.6"
2922 + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292"
2923 + dependencies:
2924 + stackframe "^0.3.1"
2925 +
2926 +error-stack-parser@^2.0.0:
2927 + version "2.0.1"
2928 + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.1.tgz#a3202b8fb03114aa9b40a0e3669e48b2b65a010a"
2929 + dependencies:
2930 + stackframe "^1.0.3"
2931 +
2932 +es5-ext@^0.10.12, es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
2933 + version "0.10.23"
2934 + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.23.tgz#7578b51be974207a5487821b56538c224e4e7b38"
2935 + dependencies:
2936 + es6-iterator "2"
2937 + es6-symbol "~3.1"
2938 +
2939 +es6-iterator@2:
2940 + version "2.0.1"
2941 + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
2942 + dependencies:
2943 + d "1"
2944 + es5-ext "^0.10.14"
2945 + es6-symbol "^3.1"
2946 +
2947 +es6-promise@^4.1.0:
2948 + version "4.1.1"
2949 + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a"
2950 +
2951 +es6-symbol@^3.1, es6-symbol@~3.1:
2952 + version "3.1.1"
2953 + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
2954 + dependencies:
2955 + d "1"
2956 + es5-ext "~0.10.14"
2957 +
2958 +es6-template-strings@^2.0.0:
2959 + version "2.0.1"
2960 + resolved "https://registry.yarnpkg.com/es6-template-strings/-/es6-template-strings-2.0.1.tgz#b166c6a62562f478bb7775f6ca96103a599b4b2c"
2961 + dependencies:
2962 + es5-ext "^0.10.12"
2963 + esniff "^1.1"
2964 +
2965 +escape-html@~1.0.3:
2966 + version "1.0.3"
2967 + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
2968 +
2969 +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
2970 + version "1.0.5"
2971 + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
2972 +
2973 +esniff@^1.1:
2974 + version "1.1.0"
2975 + resolved "https://registry.yarnpkg.com/esniff/-/esniff-1.1.0.tgz#c66849229f91464dede2e0d40201ed6abf65f2ac"
2976 + dependencies:
2977 + d "1"
2978 + es5-ext "^0.10.12"
2979 +
2980 +esprima@^2.6.0:
2981 + version "2.7.3"
2982 + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
2983 +
2984 +esprima@^3.1.1:
2985 + version "3.1.3"
2986 + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
2987 +
2988 +esutils@^2.0.0, esutils@^2.0.2:
2989 + version "2.0.2"
2990 + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
2991 +
2992 +etag@~1.8.0:
2993 + version "1.8.0"
2994 + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
2995 +
2996 +eval@^0.1.0:
2997 + version "0.1.2"
2998 + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.2.tgz#9f7103284c105a66df4030b2b3273165837013da"
2999 + dependencies:
3000 + require-like ">= 0.1.1"
3001 +
3002 +eventemitter2@^4.1.0:
3003 + version "4.1.0"
3004 + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-4.1.0.tgz#b1fb8a1144e7dfcf80cecce9877ff6d68e7d8506"
3005 +
3006 +eventemitter3@1.x.x:
3007 + version "1.2.0"
3008 + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
3009 +
3010 +events@^1.0.0:
3011 + version "1.1.1"
3012 + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
3013 +
3014 +eventsource@0.1.6:
3015 + version "0.1.6"
3016 + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
3017 + dependencies:
3018 + original ">=0.0.5"
3019 +
3020 +evp_bytestokey@^1.0.0:
3021 + version "1.0.0"
3022 + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
3023 + dependencies:
3024 + create-hash "^1.1.1"
3025 +
3026 +exec-buffer@^3.0.0:
3027 + version "3.1.0"
3028 + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.1.0.tgz#851b46d062fca9bcbc6ff8781693e28e8da80402"
3029 + dependencies:
3030 + execa "^0.5.0"
3031 + p-finally "^1.0.0"
3032 + pify "^2.3.0"
3033 + rimraf "^2.5.4"
3034 + tempfile "^1.0.0"
3035 +
3036 +exec-series@^1.0.0:
3037 + version "1.0.3"
3038 + resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a"
3039 + dependencies:
3040 + async-each-series "^1.1.0"
3041 + object-assign "^4.1.0"
3042 +
3043 +exec-sh@^0.2.0:
3044 + version "0.2.0"
3045 + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10"
3046 + dependencies:
3047 + merge "^1.1.3"
3048 +
3049 +execa@^0.5.0:
3050 + version "0.5.1"
3051 + resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36"
3052 + dependencies:
3053 + cross-spawn "^4.0.0"
3054 + get-stream "^2.2.0"
3055 + is-stream "^1.1.0"
3056 + npm-run-path "^2.0.0"
3057 + p-finally "^1.0.0"
3058 + signal-exit "^3.0.0"
3059 + strip-eof "^1.0.0"
3060 +
3061 +executable@^1.0.0:
3062 + version "1.1.0"
3063 + resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9"
3064 + dependencies:
3065 + meow "^3.1.0"
3066 +
3067 +exenv@^1.2.1:
3068 + version "1.2.2"
3069 + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
3070 +
3071 +expand-brackets@^0.1.4:
3072 + version "0.1.5"
3073 + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
3074 + dependencies:
3075 + is-posix-bracket "^0.1.0"
3076 +
3077 +expand-brackets@^2.1.4:
3078 + version "2.1.4"
3079 + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
3080 + dependencies:
3081 + debug "^2.3.3"
3082 + define-property "^0.2.5"
3083 + extend-shallow "^2.0.1"
3084 + posix-character-classes "^0.1.0"
3085 + regex-not "^1.0.0"
3086 + snapdragon "^0.8.1"
3087 + to-regex "^3.0.1"
3088 +
3089 +expand-range@^1.8.1:
3090 + version "1.8.2"
3091 + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
3092 + dependencies:
3093 + fill-range "^2.1.0"
3094 +
3095 +expand-tilde@^1.2.0, expand-tilde@^1.2.2:
3096 + version "1.2.2"
3097 + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
3098 + dependencies:
3099 + os-homedir "^1.0.1"
3100 +
3101 +expand-tilde@^2.0.2:
3102 + version "2.0.2"
3103 + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
3104 + dependencies:
3105 + homedir-polyfill "^1.0.1"
3106 +
3107 +express-graphql@^0.6.6:
3108 + version "0.6.6"
3109 + resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.6.6.tgz#fdf5c7b5af600b8ef920e4095e03dfc784f9094d"
3110 + dependencies:
3111 + accepts "^1.3.0"
3112 + content-type "^1.0.2"
3113 + http-errors "^1.3.0"
3114 + prettier "^1.3.1"
3115 + raw-body "^2.1.0"
3116 +
3117 +express@^4.13.3, express@^4.14.0:
3118 + version "4.15.3"
3119 + resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662"
3120 + dependencies:
3121 + accepts "~1.3.3"
3122 + array-flatten "1.1.1"
3123 + content-disposition "0.5.2"
3124 + content-type "~1.0.2"
3125 + cookie "0.3.1"
3126 + cookie-signature "1.0.6"
3127 + debug "2.6.7"
3128 + depd "~1.1.0"
3129 + encodeurl "~1.0.1"
3130 + escape-html "~1.0.3"
3131 + etag "~1.8.0"
3132 + finalhandler "~1.0.3"
3133 + fresh "0.5.0"
3134 + merge-descriptors "1.0.1"
3135 + methods "~1.1.2"
3136 + on-finished "~2.3.0"
3137 + parseurl "~1.3.1"
3138 + path-to-regexp "0.1.7"
3139 + proxy-addr "~1.1.4"
3140 + qs "6.4.0"
3141 + range-parser "~1.2.0"
3142 + send "0.15.3"
3143 + serve-static "1.12.3"
3144 + setprototypeof "1.0.3"
3145 + statuses "~1.3.1"
3146 + type-is "~1.6.15"
3147 + utils-merge "1.0.0"
3148 + vary "~1.1.1"
3149 +
3150 +extend-shallow@^2.0.1:
3151 + version "2.0.1"
3152 + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
3153 + dependencies:
3154 + is-extendable "^0.1.0"
3155 +
3156 +extend@^3.0.0, extend@~3.0.0:
3157 + version "3.0.1"
3158 + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
3159 +
3160 +external-editor@^2.0.4:
3161 + version "2.0.4"
3162 + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972"
3163 + dependencies:
3164 + iconv-lite "^0.4.17"
3165 + jschardet "^1.4.2"
3166 + tmp "^0.0.31"
3167 +
3168 +extglob@^0.3.1:
3169 + version "0.3.2"
3170 + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
3171 + dependencies:
3172 + is-extglob "^1.0.0"
3173 +
3174 +extglob@^2.0.2:
3175 + version "2.0.2"
3176 + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.2.tgz#3290f46208db1b2e8eb8be0c94ed9e6ad80edbe2"
3177 + dependencies:
3178 + array-unique "^0.3.2"
3179 + define-property "^1.0.0"
3180 + expand-brackets "^2.1.4"
3181 + extend-shallow "^2.0.1"
3182 + fragment-cache "^0.2.1"
3183 + regex-not "^1.0.0"
3184 + snapdragon "^0.8.1"
3185 + to-regex "^3.0.1"
3186 +
3187 +extract-text-webpack-plugin@^1.0.1:
3188 + version "1.0.1"
3189 + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-1.0.1.tgz#c95bf3cbaac49dc96f1dc6e072549fbb654ccd2c"
3190 + dependencies:
3191 + async "^1.5.0"
3192 + loader-utils "^0.2.3"
3193 + webpack-sources "^0.1.0"
3194 +
3195 +extsprintf@1.0.2:
3196 + version "1.0.2"
3197 + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
3198 +
3199 +fancy-log@^1.1.0:
3200 + version "1.3.0"
3201 + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948"
3202 + dependencies:
3203 + chalk "^1.1.1"
3204 + time-stamp "^1.0.0"
3205 +
3206 +fast-glob@^1.0.1:
3207 + version "1.0.1"
3208 + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-1.0.1.tgz#30f9b1120fd57a7f172364a6458fbdbd98187b3c"
3209 + dependencies:
3210 + bash-glob "^1.0.1"
3211 + glob-parent "^3.1.0"
3212 + micromatch "^3.0.3"
3213 + readdir-enhanced "^1.5.2"
3214 +
3215 +fastparse@^1.1.1:
3216 + version "1.1.1"
3217 + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
3218 +
3219 +faye-websocket@^0.10.0:
3220 + version "0.10.0"
3221 + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
3222 + dependencies:
3223 + websocket-driver ">=0.5.1"
3224 +
3225 +faye-websocket@~0.11.0:
3226 + version "0.11.1"
3227 + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
3228 + dependencies:
3229 + websocket-driver ">=0.5.1"
3230 +
3231 +fb-watchman@^2.0.0:
3232 + version "2.0.0"
3233 + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
3234 + dependencies:
3235 + bser "^2.0.0"
3236 +
3237 +fbjs@^0.8.1, fbjs@^0.8.8, fbjs@^0.8.9:
3238 + version "0.8.12"
3239 + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
3240 + dependencies:
3241 + core-js "^1.0.0"
3242 + isomorphic-fetch "^2.1.1"
3243 + loose-envify "^1.0.0"
3244 + object-assign "^4.1.0"
3245 + promise "^7.1.1"
3246 + setimmediate "^1.0.5"
3247 + ua-parser-js "^0.7.9"
3248 +
3249 +fbjs@^0.8.12:
3250 + version "0.8.14"
3251 + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.14.tgz#d1dbe2be254c35a91e09f31f9cd50a40b2a0ed1c"
3252 + dependencies:
3253 + core-js "^1.0.0"
3254 + isomorphic-fetch "^2.1.1"
3255 + loose-envify "^1.0.0"
3256 + object-assign "^4.1.0"
3257 + promise "^7.1.1"
3258 + setimmediate "^1.0.5"
3259 + ua-parser-js "^0.7.9"
3260 +
3261 +fbjs@^0.8.16:
3262 + version "0.8.16"
3263 + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
3264 + dependencies:
3265 + core-js "^1.0.0"
3266 + isomorphic-fetch "^2.1.1"
3267 + loose-envify "^1.0.0"
3268 + object-assign "^4.1.0"
3269 + promise "^7.1.1"
3270 + setimmediate "^1.0.5"
3271 + ua-parser-js "^0.7.9"
3272 +
3273 +fd-slicer@~1.0.1:
3274 + version "1.0.1"
3275 + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
3276 + dependencies:
3277 + pend "~1.2.0"
3278 +
3279 +figures@^1.3.5:
3280 + version "1.7.0"
3281 + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
3282 + dependencies:
3283 + escape-string-regexp "^1.0.5"
3284 + object-assign "^4.1.0"
3285 +
3286 +figures@^2.0.0:
3287 + version "2.0.0"
3288 + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
3289 + dependencies:
3290 + escape-string-regexp "^1.0.5"
3291 +
3292 +file-loader@^0.9.0:
3293 + version "0.9.0"
3294 + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42"
3295 + dependencies:
3296 + loader-utils "~0.2.5"
3297 +
3298 +file-type@^3.1.0:
3299 + version "3.9.0"
3300 + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
3301 +
3302 +file-type@^4.1.0:
3303 + version "4.4.0"
3304 + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5"
3305 +
3306 +filename-regex@^2.0.0:
3307 + version "2.0.1"
3308 + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
3309 +
3310 +filename-reserved-regex@^1.0.0:
3311 + version "1.0.0"
3312 + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4"
3313 +
3314 +filenamify@^1.0.1:
3315 + version "1.2.1"
3316 + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5"
3317 + dependencies:
3318 + filename-reserved-regex "^1.0.0"
3319 + strip-outer "^1.0.0"
3320 + trim-repeated "^1.0.0"
3321 +
3322 +fill-range@^2.1.0:
3323 + version "2.2.3"
3324 + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
3325 + dependencies:
3326 + is-number "^2.1.0"
3327 + isobject "^2.0.0"
3328 + randomatic "^1.1.3"
3329 + repeat-element "^1.1.2"
3330 + repeat-string "^1.5.2"
3331 +
3332 +fill-range@^4.0.0:
3333 + version "4.0.0"
3334 + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
3335 + dependencies:
3336 + extend-shallow "^2.0.1"
3337 + is-number "^3.0.0"
3338 + repeat-string "^1.6.1"
3339 + to-regex-range "^2.1.0"
3340 +
3341 +finalhandler@~1.0.3:
3342 + version "1.0.3"
3343 + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89"
3344 + dependencies:
3345 + debug "2.6.7"
3346 + encodeurl "~1.0.1"
3347 + escape-html "~1.0.3"
3348 + on-finished "~2.3.0"
3349 + parseurl "~1.3.1"
3350 + statuses "~1.3.1"
3351 + unpipe "~1.0.0"
3352 +
3353 +find-cache-dir@^0.1.1:
3354 + version "0.1.1"
3355 + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
3356 + dependencies:
3357 + commondir "^1.0.1"
3358 + mkdirp "^0.5.1"
3359 + pkg-dir "^1.0.0"
3360 +
3361 +find-node-modules@^1.0.1:
3362 + version "1.0.4"
3363 + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-1.0.4.tgz#b6deb3cccb699c87037677bcede2c5f5862b2550"
3364 + dependencies:
3365 + findup-sync "0.4.2"
3366 + merge "^1.2.0"
3367 +
3368 +find-up@^1.0.0:
3369 + version "1.1.2"
3370 + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
3371 + dependencies:
3372 + path-exists "^2.0.0"
3373 + pinkie-promise "^2.0.0"
3374 +
3375 +find-versions@^1.0.0:
3376 + version "1.2.1"
3377 + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62"
3378 + dependencies:
3379 + array-uniq "^1.0.0"
3380 + get-stdin "^4.0.1"
3381 + meow "^3.5.0"
3382 + semver-regex "^1.0.0"
3383 +
3384 +findup-sync@0.4.2, findup-sync@^0.4.2:
3385 + version "0.4.2"
3386 + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.2.tgz#a8117d0f73124f5a4546839579fe52d7129fb5e5"
3387 + dependencies:
3388 + detect-file "^0.1.0"
3389 + is-glob "^2.0.1"
3390 + micromatch "^2.3.7"
3391 + resolve-dir "^0.1.0"
3392 +
3393 +fined@^1.0.1:
3394 + version "1.1.0"
3395 + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476"
3396 + dependencies:
3397 + expand-tilde "^2.0.2"
3398 + is-plain-object "^2.0.3"
3399 + object.defaults "^1.1.0"
3400 + object.pick "^1.2.0"
3401 + parse-filepath "^1.0.1"
3402 +
3403 +first-chunk-stream@^1.0.0:
3404 + version "1.0.0"
3405 + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
3406 +
3407 +flagged-respawn@^0.3.2:
3408 + version "0.3.2"
3409 + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5"
3410 +
3411 +flat@^2.0.1:
3412 + version "2.0.1"
3413 + resolved "https://registry.yarnpkg.com/flat/-/flat-2.0.1.tgz#70e29188a74be0c3c89409eed1fa9577907ae32f"
3414 + dependencies:
3415 + is-buffer "~1.1.2"
3416 +
3417 +flatten@^1.0.2:
3418 + version "1.0.2"
3419 + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
3420 +
3421 +for-in@^1.0.1, for-in@^1.0.2:
3422 + version "1.0.2"
3423 + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
3424 +
3425 +for-own@^0.1.4:
3426 + version "0.1.5"
3427 + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
3428 + dependencies:
3429 + for-in "^1.0.1"
3430 +
3431 +for-own@^1.0.0:
3432 + version "1.0.0"
3433 + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
3434 + dependencies:
3435 + for-in "^1.0.1"
3436 +
3437 +forever-agent@~0.6.1:
3438 + version "0.6.1"
3439 + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
3440 +
3441 +form-data@~2.1.1:
3442 + version "2.1.4"
3443 + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
3444 + dependencies:
3445 + asynckit "^0.4.0"
3446 + combined-stream "^1.0.5"
3447 + mime-types "^2.1.12"
3448 +
3449 +forwarded@~0.1.0:
3450 + version "0.1.0"
3451 + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
3452 +
3453 +fragment-cache@^0.2.1:
3454 + version "0.2.1"
3455 + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
3456 + dependencies:
3457 + map-cache "^0.2.2"
3458 +
3459 +fresh@0.5.0:
3460 + version "0.5.0"
3461 + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e"
3462 +
3463 +friendly-errors-webpack-plugin@^1.6.1:
3464 + version "1.6.1"
3465 + resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz#e32781c4722f546a06a9b5d7a7cfa28520375d70"
3466 + dependencies:
3467 + chalk "^1.1.3"
3468 + error-stack-parser "^2.0.0"
3469 + string-length "^1.0.1"
3470 +
3471 +front-matter@^2.1.0:
3472 + version "2.1.2"
3473 + resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb"
3474 + dependencies:
3475 + js-yaml "^3.4.6"
3476 +
3477 +fs-exists-sync@^0.1.0:
3478 + version "0.1.0"
3479 + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
3480 +
3481 +fs-extra@^3.0.1:
3482 + version "3.0.1"
3483 + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
3484 + dependencies:
3485 + graceful-fs "^4.1.2"
3486 + jsonfile "^3.0.0"
3487 + universalify "^0.1.0"
3488 +
3489 +fs-extra@^4.0.1:
3490 + version "4.0.1"
3491 + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880"
3492 + dependencies:
3493 + graceful-fs "^4.1.2"
3494 + jsonfile "^3.0.0"
3495 + universalify "^0.1.0"
3496 +
3497 +fs-extra@^4.0.2:
3498 + version "4.0.2"
3499 + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
3500 + dependencies:
3501 + graceful-fs "^4.1.2"
3502 + jsonfile "^4.0.0"
3503 + universalify "^0.1.0"
3504 +
3505 +fs-readdir-recursive@^1.0.0:
3506 + version "1.0.0"
3507 + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
3508 +
3509 +fs.realpath@^1.0.0:
3510 + version "1.0.0"
3511 + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
3512 +
3513 +fsevents@^1.0.0:
3514 + version "1.1.2"
3515 + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
3516 + dependencies:
3517 + nan "^2.3.0"
3518 + node-pre-gyp "^0.6.36"
3519 +
3520 +fstream-ignore@^1.0.5:
3521 + version "1.0.5"
3522 + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
3523 + dependencies:
3524 + fstream "^1.0.0"
3525 + inherits "2"
3526 + minimatch "^3.0.0"
3527 +
3528 +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
3529 + version "1.0.11"
3530 + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
3531 + dependencies:
3532 + graceful-fs "^4.1.2"
3533 + inherits "~2.0.0"
3534 + mkdirp ">=0.5 0"
3535 + rimraf "2"
3536 +
3537 +function-bind@^1.0.2:
3538 + version "1.1.0"
3539 + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
3540 +
3541 +gatsby-1-config-css-modules@^1.0.4:
3542 + version "1.0.5"
3543 + resolved "https://registry.yarnpkg.com/gatsby-1-config-css-modules/-/gatsby-1-config-css-modules-1.0.5.tgz#0e28c59d4cf5b09bd3d58051f216f40bbc436a69"
3544 + dependencies:
3545 + babel-runtime "^6.26.0"
3546 +
3547 +gatsby-link@^1.6.9:
3548 + version "1.6.17"
3549 + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-1.6.17.tgz#4182d608798b72fd4ec716f118c4d1f649b214bb"
3550 + dependencies:
3551 + babel-runtime "^6.26.0"
3552 + prop-types "^15.5.8"
3553 + ric "^1.3.0"
3554 +
3555 +gatsby-module-loader@^1.0.5:
3556 + version "1.0.6"
3557 + resolved "https://registry.yarnpkg.com/gatsby-module-loader/-/gatsby-module-loader-1.0.6.tgz#d0c4c10fa8df7a2dde1515cbc1389be186aa4a47"
3558 + dependencies:
3559 + babel-runtime "^6.26.0"
3560 + loader-utils "^0.2.16"
3561 +
3562 +gatsby-plugin-glamor@^1.6.4:
3563 + version "1.6.7"
3564 + resolved "https://registry.yarnpkg.com/gatsby-plugin-glamor/-/gatsby-plugin-glamor-1.6.7.tgz#cb4be8536acd8ce7b35053962b8fd6cb4186e337"
3565 + dependencies:
3566 + babel-runtime "^6.26.0"
3567 + glamor "^2.20.29"
3568 +
3569 +gatsby-plugin-google-analytics@^1.0.4:
3570 + version "1.0.7"
3571 + resolved "https://registry.yarnpkg.com/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-1.0.7.tgz#4d83f6fba7c884552c94f54c202661855c31a59d"
3572 + dependencies:
3573 + babel-runtime "^6.26.0"
3574 +
3575 +gatsby-plugin-manifest@^1.0.4:
3576 + version "1.0.8"
3577 + resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-1.0.8.tgz#8c155cd2aed54759554c25bf9efb4a2c48de6429"
3578 + dependencies:
3579 + babel-runtime "^6.26.0"
3580 + bluebird "^3.5.0"
3581 +
3582 +gatsby-plugin-netlify@^1.0.4:
3583 + version "1.0.5"
3584 + resolved "https://registry.yarnpkg.com/gatsby-plugin-netlify/-/gatsby-plugin-netlify-1.0.5.tgz#7dab7dfdd92ce95953a9bad05ca054c69eb01e83"
3585 + dependencies:
3586 + babel-runtime "^6.26.0"
3587 + fs-extra "^4.0.2"
3588 + lodash "^4.17.4"
3589 + webpack-assets-manifest "^1.0.0"
3590 +
3591 +gatsby-plugin-nprogress@^1.0.7:
3592 + version "1.0.7"
3593 + resolved "https://registry.yarnpkg.com/gatsby-plugin-nprogress/-/gatsby-plugin-nprogress-1.0.7.tgz#36cf18776d22c282d3355d32b8c212afdf1a2907"
3594 + dependencies:
3595 + babel-runtime "^6.26.0"
3596 + nprogress "^0.2.0"
3597 +
3598 +gatsby-plugin-react-helmet@^1.0.3:
3599 + version "1.0.6"
3600 + resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-1.0.6.tgz#32431fbfd072b05453080ed304142f4747868848"
3601 + dependencies:
3602 + babel-runtime "^6.26.0"
3603 + react-helmet "^5.1.3"
3604 +
3605 +gatsby-plugin-react-next@^1.0.3:
3606 + version "1.0.4"
3607 + resolved "https://registry.yarnpkg.com/gatsby-plugin-react-next/-/gatsby-plugin-react-next-1.0.4.tgz#256e919f01d4af088564a5a975f6613c2a7d1ead"
3608 + dependencies:
3609 + babel-runtime "^6.26.0"
3610 + core-js "^2.5.1"
3611 + react "^16.0.0"
3612 + react-dom "^16.0.0"
3613 +
3614 +gatsby-plugin-sharp@^1.6.2, gatsby-plugin-sharp@^1.6.8:
3615 + version "1.6.8"
3616 + resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-1.6.8.tgz#289f11f3f54c5cdd51f78f17403b8f318fd68cfa"
3617 + dependencies:
3618 + async "^2.1.2"
3619 + babel-runtime "^6.26.0"
3620 + bluebird "^3.5.0"
3621 + image-size "^0.5.1"
3622 + imagemin "^5.2.2"
3623 + imagemin-pngquant "^5.0.0"
3624 + lodash "^4.17.4"
3625 + progress "^1.1.8"
3626 + sharp "^0.17.3"
3627 +
3628 +gatsby-react-router-scroll@^1.0.1:
3629 + version "1.0.1"
3630 + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-1.0.1.tgz#2e0132807273e544f05bed016645b6e2dfe08c48"
3631 + dependencies:
3632 + babel-runtime "^6.26.0"
3633 + scroll-behavior "^0.9.1"
3634 + warning "^3.0.0"
3635 +
3636 +gatsby-remark-autolink-headers@^1.4.4:
3637 + version "1.4.7"
3638 + resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-1.4.7.tgz#81fbeb02e07855d1e63237031d5655ae71f5e5d5"
3639 + dependencies:
3640 + babel-runtime "^6.26.0"
3641 + github-slugger "^1.1.1"
3642 + mdast-util-to-string "^1.0.2"
3643 + unist-util-visit "^1.1.1"
3644 +
3645 +gatsby-remark-copy-linked-files@^1.5.2:
3646 + version "1.5.7"
3647 + resolved "https://registry.yarnpkg.com/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-1.5.7.tgz#59817877cb2978a6a72df62f2353033f0f8a6e35"
3648 + dependencies:
3649 + babel-runtime "^6.26.0"
3650 + cheerio "^1.0.0-rc.2"
3651 + fs-extra "^4.0.1"
3652 + is-relative-url "^2.0.0"
3653 + lodash "^4.17.4"
3654 + unist-util-visit "^1.1.1"
3655 +
3656 +gatsby-remark-images@^1.5.11:
3657 + version "1.5.13"
3658 + resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-1.5.13.tgz#7e383cea60aa624e8775256702eaa57c0ea55515"
3659 + dependencies:
3660 + babel-runtime "^6.26.0"
3661 + cheerio "^1.0.0-rc.2"
3662 + gatsby-plugin-sharp "^1.6.8"
3663 + is-relative-url "^2.0.0"
3664 + lodash "^4.17.4"
3665 + slash "^1.0.0"
3666 + unist-util-select "^1.5.0"
3667 +
3668 +gatsby-remark-prismjs@^1.2.1:
3669 + version "1.2.8"
3670 + resolved "https://registry.yarnpkg.com/gatsby-remark-prismjs/-/gatsby-remark-prismjs-1.2.8.tgz#0ca9732c8c5034d1331f420ff75aa380fbc22c91"
3671 + dependencies:
3672 + babel-runtime "^6.26.0"
3673 + parse-numeric-range "^0.0.2"
3674 + prismjs "^1.7.0"
3675 + unist-util-visit "^1.1.1"
3676 +
3677 +gatsby-remark-responsive-iframe@^1.4.3:
3678 + version "1.4.7"
3679 + resolved "https://registry.yarnpkg.com/gatsby-remark-responsive-iframe/-/gatsby-remark-responsive-iframe-1.4.7.tgz#38a360ab8d978ee694fc42084afea8734d2dee14"
3680 + dependencies:
3681 + babel-runtime "^6.26.0"
3682 + bluebird "^3.5.0"
3683 + cheerio "^1.0.0-rc.2"
3684 + lodash "^4.17.4"
3685 + unist-util-visit "^1.1.1"
3686 +
3687 +gatsby-remark-smartypants@^1.4.3:
3688 + version "1.4.7"
3689 + resolved "https://registry.yarnpkg.com/gatsby-remark-smartypants/-/gatsby-remark-smartypants-1.4.7.tgz#2fc191b3945bc82c039069b0681ec5399db936b9"
3690 + dependencies:
3691 + babel-runtime "^6.26.0"
3692 + retext "^4.0.0"
3693 + retext-smartypants "^2.0.0"
3694 + unist-util-visit "^1.1.1"
3695 +
3696 +gatsby-source-filesystem@^1.4.4:
3697 + version "1.5.1"
3698 + resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-1.5.1.tgz#7aae50bdd75cad01641468bc82a99976f8c9de3b"
3699 + dependencies:
3700 + babel-cli "^6.26.0"
3701 + babel-runtime "^6.26.0"
3702 + bluebird "^3.5.0"
3703 + chokidar "^1.7.0"
3704 + fs-extra "^4.0.1"
3705 + got "^7.1.0"
3706 + md5-file "^3.1.1"
3707 + mime "^1.3.6"
3708 + pretty-bytes "^4.0.2"
3709 + slash "^1.0.0"
3710 +
3711 +gatsby-transformer-remark@^1.7.2:
3712 + version "1.7.12"
3713 + resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-1.7.12.tgz#698117cf29659404092675176cd973aa940415d6"
3714 + dependencies:
3715 + babel-runtime "^6.26.0"
3716 + bluebird "^3.5.0"
3717 + gray-matter "^2.1.0"
3718 + hast-util-to-html "^3.0.0"
3719 + lodash "^4.17.4"
3720 + mdast-util-to-hast "^2.4.0"
3721 + mdast-util-toc "^2.0.1"
3722 + remark "^7.0.1"
3723 + sanitize-html "^1.14.1"
3724 + underscore.string "^3.3.4"
3725 + unist-util-select "^1.5.0"
3726 + unist-util-visit "^1.1.1"
3727 +
3728 +gatsby-transformer-sharp@^1.6.1:
3729 + version "1.6.6"
3730 + resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-1.6.6.tgz#2ad1e4e6702d6f317fb0277941fdfb8d82f06494"
3731 + dependencies:
3732 + babel-runtime "^6.26.0"
3733 + bluebird "^3.5.0"
3734 + fs-extra "^4.0.1"
3735 + image-size "^0.6.0"
3736 +
3737 +gatsby@^1.9.9:
3738 + version "1.9.49"
3739 + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.49.tgz#ff934a985493e731ada7e81ec77b17dd474e3e61"
3740 + dependencies:
3741 + async "^2.1.2"
3742 + babel-code-frame "^6.22.0"
3743 + babel-core "^6.24.1"
3744 + babel-loader "^6.0.0"
3745 + babel-plugin-add-module-exports "^0.2.1"
3746 + babel-plugin-transform-object-assign "^6.8.0"
3747 + babel-polyfill "^6.23.0"
3748 + babel-preset-env "^1.6.0"
3749 + babel-preset-es2015 "^6.24.1"
3750 + babel-preset-react "^6.24.1"
3751 + babel-preset-stage-0 "^6.24.1"
3752 + babel-runtime "^6.26.0"
3753 + babel-traverse "^6.24.1"
3754 + babylon "^6.17.3"
3755 + bluebird "^3.5.0"
3756 + boom "^2.7.2"
3757 + bundle-loader "^0.5.4"
3758 + chalk "^1.1.3"
3759 + chokidar "^1.7.0"
3760 + chunk-manifest-webpack-plugin "0.1.0"
3761 + commander "^2.11.0"
3762 + common-tags "^1.4.0"
3763 + convert-hrtime "^2.0.0"
3764 + copyfiles "^1.2.0"
3765 + core-js "^2.5.0"
3766 + css-loader "^0.26.1"
3767 + debug "^2.6.0"
3768 + del "^3.0.0"
3769 + detect-port "^1.2.1"
3770 + domready "^1.0.8"
3771 + dotenv "^4.0.0"
3772 + eventemitter2 "^4.1.0"
3773 + express "^4.14.0"
3774 + express-graphql "^0.6.6"
3775 + extract-text-webpack-plugin "^1.0.1"
3776 + file-loader "^0.9.0"
3777 + flat "^2.0.1"
3778 + friendly-errors-webpack-plugin "^1.6.1"
3779 + front-matter "^2.1.0"
3780 + fs-extra "^4.0.1"
3781 + gatsby-1-config-css-modules "^1.0.4"
3782 + gatsby-module-loader "^1.0.5"
3783 + gatsby-react-router-scroll "^1.0.1"
3784 + glob "^7.1.1"
3785 + graphql "^0.10.3"
3786 + graphql-relay "^0.5.1"
3787 + graphql-skip-limit "^1.0.5"
3788 + gray-matter "^2.1.0"
3789 + hapi "^8.5.1"
3790 + history "^4.6.2"
3791 + hosted-git-info "^2.4.2"
3792 + invariant "^2.2.2"
3793 + is-relative "^0.2.1"
3794 + is-relative-url "^2.0.0"
3795 + joi "^9.1.1"
3796 + json-loader "^0.5.2"
3797 + json-stringify-safe "^5.0.1"
3798 + json5 "^0.5.0"
3799 + lodash "^4.17.4"
3800 + lodash-id "^0.14.0"
3801 + lowdb "^0.16.2"
3802 + md5-file "^3.1.1"
3803 + mime "^1.3.6"
3804 + mitt "^1.1.2"
3805 + mkdirp "^0.5.1"
3806 + moment "^2.16.0"
3807 + node-libs-browser "^2.0.0"
3808 + normalize-path "^2.1.1"
3809 + null-loader "^0.1.1"
3810 + object-assign "^4.1.0"
3811 + observable "^2.1.4"
3812 + opn "^5.1.0"
3813 + parse-filepath "^1.0.1"
3814 + path-exists "^3.0.0"
3815 + postcss-browser-reporter "^0.5.0"
3816 + postcss-cssnext "^2.8.0"
3817 + postcss-import "^8.2.0"
3818 + postcss-loader "^0.13.0"
3819 + postcss-reporter "^1.4.1"
3820 + pretty-error "^2.1.1"
3821 + raw-loader "^0.5.1"
3822 + react "^15.6.0"
3823 + react-dom "^15.6.0"
3824 + react-hot-loader "^3.0.0-beta.6"
3825 + react-router "^4.1.1"
3826 + react-router-dom "^4.1.1"
3827 + redux "^3.6.0"
3828 + relay-compiler "1.3.0"
3829 + remote-redux-devtools "^0.5.7"
3830 + resolve-cwd "^2.0.0"
3831 + sift "^3.2.6"
3832 + slash "^1.0.0"
3833 + socket.io "^2.0.3"
3834 + source-map "^0.5.7"
3835 + stack-trace "^0.0.10"
3836 + static-site-generator-webpack-plugin "^3.4.1"
3837 + string-similarity "^1.2.0"
3838 + style-loader "^0.13.0"
3839 + tracer "^0.8.9"
3840 + type-of "^2.0.1"
3841 + underscore.string "^3.3.4"
3842 + url-loader "^0.5.7"
3843 + webpack "^1.13.3"
3844 + webpack-configurator "^0.3.0"
3845 + webpack-dev-middleware "^1.8.4"
3846 + webpack-dev-server "^1.16.1"
3847 + webpack-hot-middleware "^2.13.2"
3848 + webpack-md5-hash "0.0.5"
3849 + webpack-stats-plugin "^0.1.4"
3850 + webpack-validator "^2.2.7"
3851 + yaml-loader "^0.4.0"
3852 + yurnalist "^0.1.10"
3853 +
3854 +gauge@~1.2.5:
3855 + version "1.2.7"
3856 + resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93"
3857 + dependencies:
3858 + ansi "^0.3.0"
3859 + has-unicode "^2.0.0"
3860 + lodash.pad "^4.1.0"
3861 + lodash.padend "^4.1.0"
3862 + lodash.padstart "^4.1.0"
3863 +
3864 +gauge@~2.7.3:
3865 + version "2.7.4"
3866 + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
3867 + dependencies:
3868 + aproba "^1.0.3"
3869 + console-control-strings "^1.0.0"
3870 + has-unicode "^2.0.0"
3871 + object-assign "^4.1.0"
3872 + signal-exit "^3.0.0"
3873 + string-width "^1.0.1"
3874 + strip-ansi "^3.0.1"
3875 + wide-align "^1.1.0"
3876 +
3877 +get-caller-file@^1.0.1:
3878 + version "1.0.2"
3879 + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
3880 +
3881 +get-params@^0.1.2:
3882 + version "0.1.2"
3883 + resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe"
3884 +
3885 +get-proxy@^1.0.1:
3886 + version "1.1.0"
3887 + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb"
3888 + dependencies:
3889 + rc "^1.1.2"
3890 +
3891 +get-stdin@^4.0.1:
3892 + version "4.0.1"
3893 + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
3894 +
3895 +get-stream@^2.2.0:
3896 + version "2.3.1"
3897 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
3898 + dependencies:
3899 + object-assign "^4.0.1"
3900 + pinkie-promise "^2.0.0"
3901 +
3902 +get-stream@^3.0.0:
3903 + version "3.0.0"
3904 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
3905 +
3906 +get-value@^2.0.3, get-value@^2.0.6:
3907 + version "2.0.6"
3908 + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
3909 +
3910 +getpass@^0.1.1:
3911 + version "0.1.7"
3912 + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
3913 + dependencies:
3914 + assert-plus "^1.0.0"
3915 +
3916 +gh-pages@^1.0.0:
3917 + version "1.0.0"
3918 + resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-1.0.0.tgz#4a46f4c25439f7a2b7e6835504d4a49e949f04ca"
3919 + dependencies:
3920 + async "2.1.4"
3921 + base64url "^2.0.0"
3922 + commander "2.9.0"
3923 + fs-extra "^3.0.1"
3924 + globby "^6.1.0"
3925 + graceful-fs "4.1.11"
3926 + rimraf "^2.5.4"
3927 +
3928 +github-slugger@^1.1.1:
3929 + version "1.1.3"
3930 + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.1.3.tgz#314a6e759a18c2b0cc5760d512ccbab549c549a7"
3931 + dependencies:
3932 + emoji-regex ">=6.0.0 <=6.1.1"
3933 +
3934 +glamor@^2.20.29:
3935 + version "2.20.29"
3936 + resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.29.tgz#2ee87bf48d1d4040033cab1151e324c6c380fd6f"
3937 + dependencies:
3938 + babel-runtime "^6.18.0"
3939 + fbjs "^0.8.8"
3940 + object-assign "^4.1.0"
3941 + prop-types "^15.5.8"
3942 +
3943 +glamor@^2.20.40:
3944 + version "2.20.40"
3945 + resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05"
3946 + dependencies:
3947 + fbjs "^0.8.12"
3948 + inline-style-prefixer "^3.0.6"
3949 + object-assign "^4.1.1"
3950 + prop-types "^15.5.10"
3951 + through "^2.3.8"
3952 +
3953 +glob-base@^0.3.0:
3954 + version "0.3.0"
3955 + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
3956 + dependencies:
3957 + glob-parent "^2.0.0"
3958 + is-glob "^2.0.0"
3959 +
3960 +glob-parent@^2.0.0:
3961 + version "2.0.0"
3962 + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
3963 + dependencies:
3964 + is-glob "^2.0.0"
3965 +
3966 +glob-parent@^3.0.0, glob-parent@^3.1.0:
3967 + version "3.1.0"
3968 + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
3969 + dependencies:
3970 + is-glob "^3.1.0"
3971 + path-dirname "^1.0.0"
3972 +
3973 +glob-stream@^5.3.2:
3974 + version "5.3.5"
3975 + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22"
3976 + dependencies:
3977 + extend "^3.0.0"
3978 + glob "^5.0.3"
3979 + glob-parent "^3.0.0"
3980 + micromatch "^2.3.7"
3981 + ordered-read-streams "^0.3.0"
3982 + through2 "^0.6.0"
3983 + to-absolute-glob "^0.1.1"
3984 + unique-stream "^2.0.2"
3985 +
3986 +glob-to-regexp@^0.3.0:
3987 + version "0.3.0"
3988 + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
3989 +
3990 +glob@5.0.x, glob@^5.0.3:
3991 + version "5.0.15"
3992 + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
3993 + dependencies:
3994 + inflight "^1.0.4"
3995 + inherits "2"
3996 + minimatch "2 || 3"
3997 + once "^1.3.0"
3998 + path-is-absolute "^1.0.0"
3999 +
4000 +glob@^6.0.1:
4001 + version "6.0.4"
4002 + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
4003 + dependencies:
4004 + inflight "^1.0.4"
4005 + inherits "2"
4006 + minimatch "2 || 3"
4007 + once "^1.3.0"
4008 + path-is-absolute "^1.0.0"
4009 +
4010 +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
4011 + version "7.1.2"
4012 + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
4013 + dependencies:
4014 + fs.realpath "^1.0.0"
4015 + inflight "^1.0.4"
4016 + inherits "2"
4017 + minimatch "^3.0.4"
4018 + once "^1.3.0"
4019 + path-is-absolute "^1.0.0"
4020 +
4021 +global-modules@^0.2.3:
4022 + version "0.2.3"
4023 + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
4024 + dependencies:
4025 + global-prefix "^0.1.4"
4026 + is-windows "^0.2.0"
4027 +
4028 +global-prefix@^0.1.4:
4029 + version "0.1.5"
4030 + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
4031 + dependencies:
4032 + homedir-polyfill "^1.0.0"
4033 + ini "^1.3.4"
4034 + is-windows "^0.2.0"
4035 + which "^1.2.12"
4036 +
4037 +global@^4.3.0:
4038 + version "4.3.2"
4039 + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
4040 + dependencies:
4041 + min-document "^2.19.0"
4042 + process "~0.5.1"
4043 +
4044 +globals@^9.0.0, globals@^9.18.0:
4045 + version "9.18.0"
4046 + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
4047 +
4048 +globby@^6.1.0:
4049 + version "6.1.0"
4050 + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
4051 + dependencies:
4052 + array-union "^1.0.1"
4053 + glob "^7.0.3"
4054 + object-assign "^4.0.1"
4055 + pify "^2.0.0"
4056 + pinkie-promise "^2.0.0"
4057 +
4058 +glogg@^1.0.0:
4059 + version "1.0.0"
4060 + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
4061 + dependencies:
4062 + sparkles "^1.0.0"
4063 +
4064 +good-listener@^1.2.2:
4065 + version "1.2.2"
4066 + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
4067 + dependencies:
4068 + delegate "^3.1.2"
4069 +
4070 +got@^5.0.0:
4071 + version "5.7.1"
4072 + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
4073 + dependencies:
4074 + create-error-class "^3.0.1"
4075 + duplexer2 "^0.1.4"
4076 + is-redirect "^1.0.0"
4077 + is-retry-allowed "^1.0.0"
4078 + is-stream "^1.0.0"
4079 + lowercase-keys "^1.0.0"
4080 + node-status-codes "^1.0.0"
4081 + object-assign "^4.0.1"
4082 + parse-json "^2.1.0"
4083 + pinkie-promise "^2.0.0"
4084 + read-all-stream "^3.0.0"
4085 + readable-stream "^2.0.5"
4086 + timed-out "^3.0.0"
4087 + unzip-response "^1.0.2"
4088 + url-parse-lax "^1.0.0"
4089 +
4090 +got@^6.7.1:
4091 + version "6.7.1"
4092 + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
4093 + dependencies:
4094 + create-error-class "^3.0.0"
4095 + duplexer3 "^0.1.4"
4096 + get-stream "^3.0.0"
4097 + is-redirect "^1.0.0"
4098 + is-retry-allowed "^1.0.0"
4099 + is-stream "^1.0.0"
4100 + lowercase-keys "^1.0.0"
4101 + safe-buffer "^5.0.1"
4102 + timed-out "^4.0.0"
4103 + unzip-response "^2.0.1"
4104 + url-parse-lax "^1.0.0"
4105 +
4106 +got@^7.1.0:
4107 + version "7.1.0"
4108 + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a"
4109 + dependencies:
4110 + decompress-response "^3.2.0"
4111 + duplexer3 "^0.1.4"
4112 + get-stream "^3.0.0"
4113 + is-plain-obj "^1.1.0"
4114 + is-retry-allowed "^1.0.0"
4115 + is-stream "^1.0.0"
4116 + isurl "^1.0.0-alpha5"
4117 + lowercase-keys "^1.0.0"
4118 + p-cancelable "^0.3.0"
4119 + p-timeout "^1.1.1"
4120 + safe-buffer "^5.0.1"
4121 + timed-out "^4.0.0"
4122 + url-parse-lax "^1.0.0"
4123 + url-to-options "^1.0.1"
4124 +
4125 +graceful-fs@4.1.11, graceful-fs@^4.0.0:
4126 + version "4.1.11"
4127 + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
4128 +
4129 +graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
4130 + version "4.1.10"
4131 + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.10.tgz#f2d720c22092f743228775c75e3612632501f131"
4132 +
4133 +"graceful-readlink@>= 1.0.0":
4134 + version "1.0.1"
4135 + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
4136 +
4137 +graphql-relay@^0.5.1:
4138 + version "0.5.2"
4139 + resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.5.2.tgz#40ff714efd60c2cd89e0bcc79e2afa6d87fa8673"
4140 +
4141 +graphql-skip-limit@^1.0.5:
4142 + version "1.0.5"
4143 + resolved "https://registry.yarnpkg.com/graphql-skip-limit/-/graphql-skip-limit-1.0.5.tgz#88d7a513340c4afb16c87fb37f1987eeae84933f"
4144 + dependencies:
4145 + babel-runtime "^6.26.0"
4146 +
4147 +graphql@0.10.5, graphql@^0.10.3, graphql@^0.10.5:
4148 + version "0.10.5"
4149 + resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.10.5.tgz#c9be17ca2bdfdbd134077ffd9bbaa48b8becd298"
4150 + dependencies:
4151 + iterall "^1.1.0"
4152 +
4153 +gray-matter@^2.1.0:
4154 + version "2.1.1"
4155 + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.1.tgz#3042d9adec2a1ded6a7707a9ed2380f8a17a430e"
4156 + dependencies:
4157 + ansi-red "^0.1.1"
4158 + coffee-script "^1.12.4"
4159 + extend-shallow "^2.0.1"
4160 + js-yaml "^3.8.1"
4161 + toml "^2.3.2"
4162 +
4163 +gulp-decompress@^1.2.0:
4164 + version "1.2.0"
4165 + resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7"
4166 + dependencies:
4167 + archive-type "^3.0.0"
4168 + decompress "^3.0.0"
4169 + gulp-util "^3.0.1"
4170 + readable-stream "^2.0.2"
4171 +
4172 +gulp-rename@^1.2.0:
4173 + version "1.2.2"
4174 + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817"
4175 +
4176 +gulp-sourcemaps@1.6.0:
4177 + version "1.6.0"
4178 + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c"
4179 + dependencies:
4180 + convert-source-map "^1.1.1"
4181 + graceful-fs "^4.1.2"
4182 + strip-bom "^2.0.0"
4183 + through2 "^2.0.0"
4184 + vinyl "^1.0.0"
4185 +
4186 +gulp-util@^3.0.1:
4187 + version "3.0.8"
4188 + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
4189 + dependencies:
4190 + array-differ "^1.0.0"
4191 + array-uniq "^1.0.2"
4192 + beeper "^1.0.0"
4193 + chalk "^1.0.0"
4194 + dateformat "^2.0.0"
4195 + fancy-log "^1.1.0"
4196 + gulplog "^1.0.0"
4197 + has-gulplog "^0.1.0"
4198 + lodash._reescape "^3.0.0"
4199 + lodash._reevaluate "^3.0.0"
4200 + lodash._reinterpolate "^3.0.0"
4201 + lodash.template "^3.0.0"
4202 + minimist "^1.1.0"
4203 + multipipe "^0.1.2"
4204 + object-assign "^3.0.0"
4205 + replace-ext "0.0.1"
4206 + through2 "^2.0.0"
4207 + vinyl "^0.5.0"
4208 +
4209 +gulplog@^1.0.0:
4210 + version "1.0.0"
4211 + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
4212 + dependencies:
4213 + glogg "^1.0.0"
4214 +
4215 +h2o2@4.x.x:
4216 + version "4.0.2"
4217 + resolved "https://registry.yarnpkg.com/h2o2/-/h2o2-4.0.2.tgz#87cb960dc0f5b495964fa928253e6cf13ba22486"
4218 + dependencies:
4219 + boom "2.x.x"
4220 + hoek "2.x.x"
4221 + joi "6.x.x"
4222 + wreck "6.x.x"
4223 +
4224 +hapi@^8.5.1:
4225 + version "8.8.1"
4226 + resolved "https://registry.yarnpkg.com/hapi/-/hapi-8.8.1.tgz#c7066fe9322e41b9e0e08315fd79f2d9985fa2ea"
4227 + dependencies:
4228 + accept "1.x.x"
4229 + ammo "1.x.x"
4230 + boom "^2.5.x"
4231 + call "2.x.x"
4232 + catbox "^4.2.x"
4233 + catbox-memory "1.x.x"
4234 + cryptiles "2.x.x"
4235 + h2o2 "4.x.x"
4236 + heavy "3.x.x"
4237 + hoek "^2.14.x"
4238 + inert "2.x.x"
4239 + iron "2.x.x"
4240 + items "1.x.x"
4241 + joi "6.x.x"
4242 + kilt "^1.1.x"
4243 + mimos "2.x.x"
4244 + peekaboo "1.x.x"
4245 + qs "4.x.x"
4246 + shot "1.x.x"
4247 + statehood "2.x.x"
4248 + subtext "1.x.x"
4249 + topo "1.x.x"
4250 + vision "2.x.x"
4251 +
4252 +har-schema@^1.0.5:
4253 + version "1.0.5"
4254 + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
4255 +
4256 +har-validator@~4.2.1:
4257 + version "4.2.1"
4258 + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
4259 + dependencies:
4260 + ajv "^4.9.1"
4261 + har-schema "^1.0.5"
4262 +
4263 +has-ansi@^2.0.0:
4264 + version "2.0.0"
4265 + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
4266 + dependencies:
4267 + ansi-regex "^2.0.0"
4268 +
4269 +has-binary2@~1.0.2:
4270 + version "1.0.2"
4271 + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98"
4272 + dependencies:
4273 + isarray "2.0.1"
4274 +
4275 +has-cors@1.1.0:
4276 + version "1.1.0"
4277 + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
4278 +
4279 +has-flag@^1.0.0:
4280 + version "1.0.0"
4281 + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
4282 +
4283 +has-flag@^2.0.0:
4284 + version "2.0.0"
4285 + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
4286 +
4287 +has-gulplog@^0.1.0:
4288 + version "0.1.0"
4289 + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
4290 + dependencies:
4291 + sparkles "^1.0.0"
4292 +
4293 +has-symbol-support-x@^1.4.1:
4294 + version "1.4.1"
4295 + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c"
4296 +
4297 +has-to-string-tag-x@^1.2.0:
4298 + version "1.4.1"
4299 + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
4300 + dependencies:
4301 + has-symbol-support-x "^1.4.1"
4302 +
4303 +has-unicode@^2.0.0:
4304 + version "2.0.1"
4305 + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
4306 +
4307 +has-value@^0.3.1:
4308 + version "0.3.1"
4309 + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
4310 + dependencies:
4311 + get-value "^2.0.3"
4312 + has-values "^0.1.4"
4313 + isobject "^2.0.0"
4314 +
4315 +has-value@^1.0.0:
4316 + version "1.0.0"
4317 + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
4318 + dependencies:
4319 + get-value "^2.0.6"
4320 + has-values "^1.0.0"
4321 + isobject "^3.0.0"
4322 +
4323 +has-values@^0.1.4:
4324 + version "0.1.4"
4325 + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
4326 +
4327 +has-values@^1.0.0:
4328 + version "1.0.0"
4329 + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
4330 + dependencies:
4331 + is-number "^3.0.0"
4332 + kind-of "^4.0.0"
4333 +
4334 +has@^1.0.1:
4335 + version "1.0.1"
4336 + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
4337 + dependencies:
4338 + function-bind "^1.0.2"
4339 +
4340 +hash-base@^2.0.0:
4341 + version "2.0.2"
4342 + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
4343 + dependencies:
4344 + inherits "^2.0.1"
4345 +
4346 +hash.js@^1.0.0, hash.js@^1.0.3:
4347 + version "1.1.3"
4348 + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
4349 + dependencies:
4350 + inherits "^2.0.3"
4351 + minimalistic-assert "^1.0.0"
4352 +
4353 +hast-util-is-element@^1.0.0:
4354 + version "1.0.0"
4355 + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.0.tgz#3f7216978b2ae14d98749878782675f33be3ce00"
4356 +
4357 +hast-util-to-html@^3.0.0:
4358 + version "3.0.1"
4359 + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-3.0.1.tgz#9cdefb69772888db5f4253d08e1fcd533b716ba8"
4360 + dependencies:
4361 + ccount "^1.0.0"
4362 + comma-separated-tokens "^1.0.1"
4363 + hast-util-is-element "^1.0.0"
4364 + hast-util-whitespace "^1.0.0"
4365 + html-void-elements "^1.0.0"
4366 + kebab-case "^1.0.0"
4367 + property-information "^3.1.0"
4368 + space-separated-tokens "^1.0.0"
4369 + stringify-entities "^1.0.1"
4370 + unist-util-is "^2.0.0"
4371 + xtend "^4.0.1"
4372 +
4373 +hast-util-whitespace@^1.0.0:
4374 + version "1.0.0"
4375 + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.0.tgz#bd096919625d2936e1ff17bc4df7fd727f17ece9"
4376 +
4377 +hawk@~3.1.3:
4378 + version "3.1.3"
4379 + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
4380 + dependencies:
4381 + boom "2.x.x"
4382 + cryptiles "2.x.x"
4383 + hoek "2.x.x"
4384 + sntp "1.x.x"
4385 +
4386 +heavy@3.x.x:
4387 + version "3.0.1"
4388 + resolved "https://registry.yarnpkg.com/heavy/-/heavy-3.0.1.tgz#f2867e6e3515bf83ab1a8bb1e73e5d28e85ab3cd"
4389 + dependencies:
4390 + boom "2.x.x"
4391 + hoek "2.x.x"
4392 + joi "6.x.x"
4393 +
4394 +hex2rgba@^0.0.1:
4395 + version "0.0.1"
4396 + resolved "https://registry.yarnpkg.com/hex2rgba/-/hex2rgba-0.0.1.tgz#8701ba1c6ec02c204504158407c1c4b47a9336ed"
4397 +
4398 +history@^4.5.1, history@^4.6.0, history@^4.6.2:
4399 + version "4.6.3"
4400 + resolved "https://registry.yarnpkg.com/history/-/history-4.6.3.tgz#6d723a8712c581d6bef37e8c26f4aedc6eb86967"
4401 + dependencies:
4402 + invariant "^2.2.1"
4403 + loose-envify "^1.2.0"
4404 + resolve-pathname "^2.0.0"
4405 + value-equal "^0.2.0"
4406 + warning "^3.0.0"
4407 +
4408 +hmac-drbg@^1.0.0:
4409 + version "1.0.1"
4410 + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
4411 + dependencies:
4412 + hash.js "^1.0.3"
4413 + minimalistic-assert "^1.0.0"
4414 + minimalistic-crypto-utils "^1.0.1"
4415 +
4416 +hoek@2.x.x, hoek@^2.14.x, hoek@^2.9.x:
4417 + version "2.16.3"
4418 + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
4419 +
4420 +hoek@4.x.x:
4421 + version "4.1.1"
4422 + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.1.1.tgz#9cc573ffba2b7b408fb5e9c2a13796be94cddce9"
4423 +
4424 +hoist-non-react-statics@^1.2.0:
4425 + version "1.2.0"
4426 + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
4427 +
4428 +home-or-tmp@^2.0.0:
4429 + version "2.0.0"
4430 + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
4431 + dependencies:
4432 + os-homedir "^1.0.0"
4433 + os-tmpdir "^1.0.1"
4434 +
4435 +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
4436 + version "1.0.1"
4437 + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
4438 + dependencies:
4439 + parse-passwd "^1.0.0"
4440 +
4441 +hosted-git-info@^2.1.4, hosted-git-info@^2.4.2:
4442 + version "2.5.0"
4443 + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
4444 +
4445 +html-comment-regex@^1.1.0:
4446 + version "1.1.1"
4447 + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
4448 +
4449 +html-entities@^1.2.0:
4450 + version "1.2.1"
4451 + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
4452 +
4453 +html-void-elements@^1.0.0:
4454 + version "1.0.2"
4455 + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.2.tgz#9d22e0ca32acc95b3f45b8d5b4f6fbdc05affd55"
4456 +
4457 +htmlparser2@^3.9.0, htmlparser2@^3.9.1:
4458 + version "3.9.2"
4459 + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
4460 + dependencies:
4461 + domelementtype "^1.3.0"
4462 + domhandler "^2.3.0"
4463 + domutils "^1.5.1"
4464 + entities "^1.1.1"
4465 + inherits "^2.0.1"
4466 + readable-stream "^2.0.2"
4467 +
4468 +htmlparser2@~3.3.0:
4469 + version "3.3.0"
4470 + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
4471 + dependencies:
4472 + domelementtype "1"
4473 + domhandler "2.1"
4474 + domutils "1.1"
4475 + readable-stream "1.0"
4476 +
4477 +http-errors@^1.3.0, http-errors@~1.6.1:
4478 + version "1.6.1"
4479 + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257"
4480 + dependencies:
4481 + depd "1.1.0"
4482 + inherits "2.0.3"
4483 + setprototypeof "1.0.3"
4484 + statuses ">= 1.3.1 < 2"
4485 +
4486 +http-proxy-middleware@~0.17.1:
4487 + version "0.17.4"
4488 + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
4489 + dependencies:
4490 + http-proxy "^1.16.2"
4491 + is-glob "^3.1.0"
4492 + lodash "^4.17.2"
4493 + micromatch "^2.3.11"
4494 +
4495 +http-proxy@^1.16.2:
4496 + version "1.16.2"
4497 + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
4498 + dependencies:
4499 + eventemitter3 "1.x.x"
4500 + requires-port "1.x.x"
4501 +
4502 +http-signature@~1.1.0:
4503 + version "1.1.1"
4504 + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
4505 + dependencies:
4506 + assert-plus "^0.2.0"
4507 + jsprim "^1.2.2"
4508 + sshpk "^1.7.0"
4509 +
4510 +https-browserify@0.0.1:
4511 + version "0.0.1"
4512 + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
4513 +
4514 +hyphenate-style-name@^1.0.2:
4515 + version "1.0.2"
4516 + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b"
4517 +
4518 +iconv-lite@0.4.15:
4519 + version "0.4.15"
4520 + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
4521 +
4522 +iconv-lite@^0.4.17, iconv-lite@~0.4.13:
4523 + version "0.4.18"
4524 + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
4525 +
4526 +icss-replace-symbols@^1.1.0:
4527 + version "1.1.0"
4528 + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
4529 +
4530 +ieee754@^1.1.4:
4531 + version "1.1.8"
4532 + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
4533 +
4534 +image-size@^0.5.1:
4535 + version "0.5.5"
4536 + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
4537 +
4538 +image-size@^0.6.0:
4539 + version "0.6.1"
4540 + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.1.tgz#98122a562d59dcc097ef1b2c8191866eb8f5d663"
4541 +
4542 +imagemin-pngquant@^5.0.0:
4543 + version "5.0.1"
4544 + resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-5.0.1.tgz#d8a329da553afa226b11ce62debe0b7e37b439e6"
4545 + dependencies:
4546 + exec-buffer "^3.0.0"
4547 + is-png "^1.0.0"
4548 + pngquant-bin "^3.0.0"
4549 +
4550 +imagemin@^5.2.2:
4551 + version "5.3.1"
4552 + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-5.3.1.tgz#f19c2eee1e71ba6c6558c515f9fc96680189a6d4"
4553 + dependencies:
4554 + file-type "^4.1.0"
4555 + globby "^6.1.0"
4556 + make-dir "^1.0.0"
4557 + p-pipe "^1.1.0"
4558 + pify "^2.3.0"
4559 + replace-ext "^1.0.0"
4560 +
4561 +immutable@^3.8.1:
4562 + version "3.8.1"
4563 + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2"
4564 +
4565 +indent-string@^2.1.0:
4566 + version "2.1.0"
4567 + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
4568 + dependencies:
4569 + repeating "^2.0.0"
4570 +
4571 +indexes-of@^1.0.1:
4572 + version "1.0.1"
4573 + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
4574 +
4575 +indexof@0.0.1:
4576 + version "0.0.1"
4577 + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
4578 +
4579 +inert@2.x.x:
4580 + version "2.1.6"
4581 + resolved "https://registry.yarnpkg.com/inert/-/inert-2.1.6.tgz#8f1d74bfeca59a098bd3ee0dc17b648b7ef1e3da"
4582 + dependencies:
4583 + ammo "1.x.x"
4584 + boom "2.x.x"
4585 + hoek "2.x.x"
4586 + items "1.x.x"
4587 + joi "6.x.x"
4588 + lru-cache "2.6.x"
4589 +
4590 +inflight@^1.0.4:
4591 + version "1.0.6"
4592 + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
4593 + dependencies:
4594 + once "^1.3.0"
4595 + wrappy "1"
4596 +
4597 +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
4598 + version "2.0.3"
4599 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
4600 +
4601 +inherits@2.0.1:
4602 + version "2.0.1"
4603 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
4604 +
4605 +ini@^1.3.4, ini@~1.3.0:
4606 + version "1.3.4"
4607 + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
4608 +
4609 +inline-style-prefixer@^3.0.6:
4610 + version "3.0.7"
4611 + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.7.tgz#0ccc92e5902fe6e0d28d975c4258443f880615f8"
4612 + dependencies:
4613 + bowser "^1.6.0"
4614 + css-in-js-utils "^1.0.3"
4615 +
4616 +inquirer@^3.0.1:
4617 + version "3.1.1"
4618 + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.1.1.tgz#87621c4fba4072f48a8dd71c9f9df6f100b2d534"
4619 + dependencies:
4620 + ansi-escapes "^2.0.0"
4621 + chalk "^1.0.0"
4622 + cli-cursor "^2.1.0"
4623 + cli-width "^2.0.0"
4624 + external-editor "^2.0.4"
4625 + figures "^2.0.0"
4626 + lodash "^4.3.0"
4627 + mute-stream "0.0.7"
4628 + run-async "^2.2.0"
4629 + rx-lite "^4.0.8"
4630 + rx-lite-aggregates "^4.0.8"
4631 + string-width "^2.0.0"
4632 + strip-ansi "^3.0.0"
4633 + through "^2.3.6"
4634 +
4635 +interpret@^0.6.4:
4636 + version "0.6.6"
4637 + resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
4638 +
4639 +interpret@^1.0.0:
4640 + version "1.0.3"
4641 + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
4642 +
4643 +invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2:
4644 + version "2.2.2"
4645 + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
4646 + dependencies:
4647 + loose-envify "^1.0.0"
4648 +
4649 +invert-kv@^1.0.0:
4650 + version "1.0.0"
4651 + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
4652 +
4653 +ip-regex@^1.0.1:
4654 + version "1.0.3"
4655 + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
4656 +
4657 +ipaddr.js@1.3.0:
4658 + version "1.3.0"
4659 + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
4660 +
4661 +iron@2.x.x:
4662 + version "2.1.3"
4663 + resolved "https://registry.yarnpkg.com/iron/-/iron-2.1.3.tgz#71b8f357d806aae03a90a745b9aaaffec7e2dde4"
4664 + dependencies:
4665 + boom "2.x.x"
4666 + cryptiles "2.x.x"
4667 + hoek "2.x.x"
4668 +
4669 +is-absolute-url@^2.0.0:
4670 + version "2.1.0"
4671 + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
4672 +
4673 +is-absolute@^0.1.5:
4674 + version "0.1.7"
4675 + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f"
4676 + dependencies:
4677 + is-relative "^0.1.0"
4678 +
4679 +is-absolute@^0.2.3:
4680 + version "0.2.6"
4681 + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb"
4682 + dependencies:
4683 + is-relative "^0.2.1"
4684 + is-windows "^0.2.0"
4685 +
4686 +is-accessor-descriptor@^0.1.6:
4687 + version "0.1.6"
4688 + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
4689 + dependencies:
4690 + kind-of "^3.0.2"
4691 +
4692 +is-alphabetical@^1.0.0:
4693 + version "1.0.0"
4694 + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.0.tgz#e2544c13058255f2144cb757066cd3342a1c8c46"
4695 +
4696 +is-alphanumeric@^1.0.0:
4697 + version "1.0.0"
4698 + resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
4699 +
4700 +is-alphanumerical@^1.0.0:
4701 + version "1.0.0"
4702 + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.0.tgz#e06492e719c1bf15dec239e4f1af5f67b4d6e7bf"
4703 + dependencies:
4704 + is-alphabetical "^1.0.0"
4705 + is-decimal "^1.0.0"
4706 +
4707 +is-arrayish@^0.2.1:
4708 + version "0.2.1"
4709 + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
4710 +
4711 +is-arrayish@^0.3.1:
4712 + version "0.3.1"
4713 + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.1.tgz#c2dfc386abaa0c3e33c48db3fe87059e69065efd"
4714 +
4715 +is-binary-path@^1.0.0:
4716 + version "1.0.1"
4717 + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
4718 + dependencies:
4719 + binary-extensions "^1.0.0"
4720 +
4721 +is-buffer@^1.1.4, is-buffer@^1.1.5, is-buffer@~1.1.1, is-buffer@~1.1.2:
4722 + version "1.1.5"
4723 + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
4724 +
4725 +is-builtin-module@^1.0.0:
4726 + version "1.0.0"
4727 + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
4728 + dependencies:
4729 + builtin-modules "^1.0.0"
4730 +
4731 +is-bzip2@^1.0.0:
4732 + version "1.0.0"
4733 + resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc"
4734 +
4735 +is-ci@^1.0.10:
4736 + version "1.0.10"
4737 + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
4738 + dependencies:
4739 + ci-info "^1.0.0"
4740 +
4741 +is-data-descriptor@^0.1.4:
4742 + version "0.1.4"
4743 + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
4744 + dependencies:
4745 + kind-of "^3.0.2"
4746 +
4747 +is-decimal@^1.0.0:
4748 + version "1.0.0"
4749 + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.0.tgz#940579b6ea63c628080a69e62bda88c8470b4fe0"
4750 +
4751 +is-descriptor@^0.1.0:
4752 + version "0.1.6"
4753 + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
4754 + dependencies:
4755 + is-accessor-descriptor "^0.1.6"
4756 + is-data-descriptor "^0.1.4"
4757 + kind-of "^5.0.0"
4758 +
4759 +is-descriptor@^1.0.0:
4760 + version "1.0.1"
4761 + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.1.tgz#2c6023599bde2de9d5d2c8b9a9d94082036b6ef2"
4762 + dependencies:
4763 + is-accessor-descriptor "^0.1.6"
4764 + is-data-descriptor "^0.1.4"
4765 + kind-of "^5.0.0"
4766 +
4767 +is-dotfile@^1.0.0:
4768 + version "1.0.3"
4769 + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
4770 +
4771 +is-equal-shallow@^0.1.3:
4772 + version "0.1.3"
4773 + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
4774 + dependencies:
4775 + is-primitive "^2.0.0"
4776 +
4777 +is-extendable@^0.1.0, is-extendable@^0.1.1:
4778 + version "0.1.1"
4779 + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
4780 +
4781 +is-extglob@^1.0.0:
4782 + version "1.0.0"
4783 + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
4784 +
4785 +is-extglob@^2.1.0, is-extglob@^2.1.1:
4786 + version "2.1.1"
4787 + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
4788 +
4789 +is-finite@^1.0.0:
4790 + version "1.0.2"
4791 + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
4792 + dependencies:
4793 + number-is-nan "^1.0.0"
4794 +
4795 +is-fullwidth-code-point@^1.0.0:
4796 + version "1.0.0"
4797 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
4798 + dependencies:
4799 + number-is-nan "^1.0.0"
4800 +
4801 +is-fullwidth-code-point@^2.0.0:
4802 + version "2.0.0"
4803 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
4804 +
4805 +is-glob@^2.0.0, is-glob@^2.0.1:
4806 + version "2.0.1"
4807 + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
4808 + dependencies:
4809 + is-extglob "^1.0.0"
4810 +
4811 +is-glob@^3.1.0:
4812 + version "3.1.0"
4813 + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
4814 + dependencies:
4815 + is-extglob "^2.1.0"
4816 +
4817 +is-gzip@^1.0.0:
4818 + version "1.0.0"
4819 + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83"
4820 +
4821 +is-hexadecimal@^1.0.0:
4822 + version "1.0.0"
4823 + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.0.tgz#5c459771d2af9a2e3952781fd54fcb1bcfe4113c"
4824 +
4825 +is-natural-number@^2.0.0:
4826 + version "2.1.1"
4827 + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7"
4828 +
4829 +is-number@^2.1.0:
4830 + version "2.1.0"
4831 + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
4832 + dependencies:
4833 + kind-of "^3.0.2"
4834 +
4835 +is-number@^3.0.0:
4836 + version "3.0.0"
4837 + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
4838 + dependencies:
4839 + kind-of "^3.0.2"
4840 +
4841 +is-obj@^1.0.0:
4842 + version "1.0.1"
4843 + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
4844 +
4845 +is-object@^1.0.1:
4846 + version "1.0.1"
4847 + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
4848 +
4849 +is-odd@^1.0.0:
4850 + version "1.0.0"
4851 + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088"
4852 + dependencies:
4853 + is-number "^3.0.0"
4854 +
4855 +is-path-cwd@^1.0.0:
4856 + version "1.0.0"
4857 + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
4858 +
4859 +is-path-in-cwd@^1.0.0:
4860 + version "1.0.0"
4861 + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
4862 + dependencies:
4863 + is-path-inside "^1.0.0"
4864 +
4865 +is-path-inside@^1.0.0:
4866 + version "1.0.0"
4867 + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
4868 + dependencies:
4869 + path-is-inside "^1.0.1"
4870 +
4871 +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
4872 + version "1.1.0"
4873 + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
4874 +
4875 +is-plain-object@^2.0.1:
4876 + version "2.0.4"
4877 + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
4878 + dependencies:
4879 + isobject "^3.0.1"
4880 +
4881 +is-plain-object@^2.0.3:
4882 + version "2.0.3"
4883 + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.3.tgz#c15bf3e4b66b62d72efaf2925848663ecbc619b6"
4884 + dependencies:
4885 + isobject "^3.0.0"
4886 +
4887 +is-png@^1.0.0:
4888 + version "1.1.0"
4889 + resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce"
4890 +
4891 +is-posix-bracket@^0.1.0:
4892 + version "0.1.1"
4893 + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
4894 +
4895 +is-primitive@^2.0.0:
4896 + version "2.0.0"
4897 + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
4898 +
4899 +is-promise@^2.1.0:
4900 + version "2.1.0"
4901 + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
4902 +
4903 +is-redirect@^1.0.0:
4904 + version "1.0.0"
4905 + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
4906 +
4907 +is-relative-url@^2.0.0:
4908 + version "2.0.0"
4909 + resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-2.0.0.tgz#72902d7fe04b3d4792e7db15f9db84b7204c9cef"
4910 + dependencies:
4911 + is-absolute-url "^2.0.0"
4912 +
4913 +is-relative@^0.1.0:
4914 + version "0.1.3"
4915 + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82"
4916 +
4917 +is-relative@^0.2.1:
4918 + version "0.2.1"
4919 + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5"
4920 + dependencies:
4921 + is-unc-path "^0.1.1"
4922 +
4923 +is-retry-allowed@^1.0.0:
4924 + version "1.1.0"
4925 + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
4926 +
4927 +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
4928 + version "1.1.0"
4929 + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
4930 +
4931 +is-svg@^2.0.0:
4932 + version "2.1.0"
4933 + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
4934 + dependencies:
4935 + html-comment-regex "^1.1.0"
4936 +
4937 +is-tar@^1.0.0:
4938 + version "1.0.0"
4939 + resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d"
4940 +
4941 +is-typedarray@~1.0.0:
4942 + version "1.0.0"
4943 + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
4944 +
4945 +is-unc-path@^0.1.1:
4946 + version "0.1.2"
4947 + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9"
4948 + dependencies:
4949 + unc-path-regex "^0.1.0"
4950 +
4951 +is-url@^1.2.0:
4952 + version "1.2.2"
4953 + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
4954 +
4955 +is-utf8@^0.2.0:
4956 + version "0.2.1"
4957 + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
4958 +
4959 +is-valid-glob@^0.3.0:
4960 + version "0.3.0"
4961 + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe"
4962 +
4963 +is-whitespace-character@^1.0.0:
4964 + version "1.0.0"
4965 + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.0.tgz#bbf4a83764ead0d451bec2a55218e91961adc275"
4966 +
4967 +is-windows@^0.2.0:
4968 + version "0.2.0"
4969 + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
4970 +
4971 +is-windows@^1.0.0:
4972 + version "1.0.1"
4973 + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9"
4974 +
4975 +is-word-character@^1.0.0:
4976 + version "1.0.0"
4977 + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.0.tgz#a3a9e5ddad70c5c2ee36f4a9cfc9a53f44535247"
4978 +
4979 +is-wsl@^1.1.0:
4980 + version "1.1.0"
4981 + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
4982 +
4983 +is-zip@^1.0.0:
4984 + version "1.0.0"
4985 + resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325"
4986 +
4987 +isarray@0.0.1:
4988 + version "0.0.1"
4989 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
4990 +
4991 +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
4992 + version "1.0.0"
4993 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
4994 +
4995 +isarray@2.0.1:
4996 + version "2.0.1"
4997 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
4998 +
4999 +isemail@1.x.x:

This file is too large to show in full.