├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .mailmap ├── .travis.yml ├── AUTHORS ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Gruntfile.js ├── LICENSE ├── LICENSE-docs ├── LICENSE-examples ├── PATENTS ├── README.md ├── circle.yml ├── docs ├── 404.md ├── Gemfile ├── Gemfile.lock ├── README.md ├── Rakefile ├── _config.yml ├── _css │ ├── _solarized.scss │ ├── _typography.scss │ ├── _variables.scss │ └── bourbon │ │ ├── _bourbon-deprecated-upcoming.scss │ │ ├── _bourbon.scss │ │ ├── addons │ │ ├── _button.scss │ │ ├── _clearfix.scss │ │ ├── _directional-values.scss │ │ ├── _ellipsis.scss │ │ ├── _font-family.scss │ │ ├── _hide-text.scss │ │ ├── _html5-input-types.scss │ │ ├── _position.scss │ │ ├── _prefixer.scss │ │ ├── _retina-image.scss │ │ ├── _size.scss │ │ ├── _timing-functions.scss │ │ ├── _triangle.scss │ │ └── _word-wrap.scss │ │ ├── css3 │ │ ├── _animation.scss │ │ ├── _appearance.scss │ │ ├── _backface-visibility.scss │ │ ├── _background-image.scss │ │ ├── _background.scss │ │ ├── _border-image.scss │ │ ├── _border-radius.scss │ │ ├── _box-sizing.scss │ │ ├── _calc.scss │ │ ├── _columns.scss │ │ ├── _filter.scss │ │ ├── _flex-box.scss │ │ ├── _font-face.scss │ │ ├── _font-feature-settings.scss │ │ ├── _hidpi-media-query.scss │ │ ├── _hyphens.scss │ │ ├── _image-rendering.scss │ │ ├── _keyframes.scss │ │ ├── _linear-gradient.scss │ │ ├── _perspective.scss │ │ ├── _placeholder.scss │ │ ├── _radial-gradient.scss │ │ ├── _transform.scss │ │ ├── _transition.scss │ │ └── _user-select.scss │ │ ├── functions │ │ ├── _assign.scss │ │ ├── _color-lightness.scss │ │ ├── _flex-grid.scss │ │ ├── _golden-ratio.scss │ │ ├── _grid-width.scss │ │ ├── _modular-scale.scss │ │ ├── _px-to-em.scss │ │ ├── _px-to-rem.scss │ │ ├── _strip-units.scss │ │ ├── _tint-shade.scss │ │ ├── _transition-property-name.scss │ │ └── _unpack.scss │ │ ├── helpers │ │ ├── _convert-units.scss │ │ ├── _gradient-positions-parser.scss │ │ ├── _is-num.scss │ │ ├── _linear-angle-parser.scss │ │ ├── _linear-gradient-parser.scss │ │ ├── _linear-positions-parser.scss │ │ ├── _linear-side-corner-parser.scss │ │ ├── _radial-arg-parser.scss │ │ ├── _radial-gradient-parser.scss │ │ ├── _radial-positions-parser.scss │ │ ├── _render-gradients.scss │ │ ├── _shape-size-stripper.scss │ │ └── _str-to-num.scss │ │ └── settings │ │ ├── _asset-pipeline.scss │ │ ├── _prefixer.scss │ │ └── _px-to-em.scss ├── _data │ ├── acknowledgements.yml │ ├── authors.yml │ ├── nav_community.yml │ ├── nav_contributing.yml │ ├── nav_docs.yml │ └── nav_tutorial.yml ├── _includes │ ├── blog_post.html │ ├── footer.html │ ├── hero.html │ ├── nav_blog.html │ ├── nav_community.html │ ├── nav_docs.html │ ├── nav_tutorial.html │ └── navigation.html ├── _js │ ├── ErrorDecoderComponent.js │ ├── examples │ │ ├── .eslintrc │ │ ├── hello.js │ │ ├── markdown.js │ │ ├── timer.js │ │ └── todo.js │ ├── html-jsx-lib.js │ ├── jsfiddle-integration.js │ └── live_editor.js ├── _layouts │ ├── community.html │ ├── contributing.html │ ├── default.html │ ├── docs.html │ ├── hero.html │ ├── page.html │ ├── post.html │ ├── redirect.html │ ├── single.html │ └── tutorial.html ├── _plugins │ ├── authors.rb │ ├── header_links.rb │ ├── highlight_lines.rb │ └── sidebar_item.rb ├── _posts │ ├── 2013-06-02-jsfiddle-integration.md │ ├── 2013-06-05-why-react.md │ ├── 2013-06-12-community-roundup.md │ ├── 2013-06-19-community-roundup-2.md │ ├── 2013-06-21-react-v0-3-3.md │ ├── 2013-06-27-community-roundup-3.md │ ├── 2013-07-02-react-v0-4-autobind-by-default.md │ ├── 2013-07-03-community-roundup-4.md │ ├── 2013-07-11-react-v0-4-prop-validation-and-default-values.md │ ├── 2013-07-17-react-v0-4-0.md │ ├── 2013-07-23-community-roundup-5.md │ ├── 2013-07-26-react-v0-4-1.md │ ├── 2013-07-30-use-react-and-jsx-in-ruby-on-rails.md │ ├── 2013-08-05-community-roundup-6.md │ ├── 2013-08-19-use-react-and-jsx-in-python-applications.md │ ├── 2013-08-26-community-roundup-7.md │ ├── 2013-09-24-community-roundup-8.md │ ├── 2013-10-16-react-v0.5.0.md │ ├── 2013-10-29-react-v0-5-1.md │ ├── 2013-10-3-community-roundup-9.md │ ├── 2013-11-06-community-roundup-10.md │ ├── 2013-11-18-community-roundup-11.md │ ├── 2013-12-18-react-v0.5.2-v0.4.2.md │ ├── 2013-12-19-react-v0.8.0.md │ ├── 2013-12-23-community-roundup-12.md │ ├── 2013-12-30-community-roundup-13.md │ ├── 2014-01-02-react-chrome-developer-tools.md │ ├── 2014-01-06-community-roundup-14.md │ ├── 2014-02-05-community-roundup-15.md │ ├── 2014-02-15-community-roundup-16.md │ ├── 2014-02-16-react-v0.9-rc1.md │ ├── 2014-02-20-react-v0.9.md │ ├── 2014-02-24-community-roundup-17.md │ ├── 2014-03-14-community-roundup-18.md │ ├── 2014-03-19-react-v0.10-rc1.md │ ├── 2014-03-21-react-v0.10.md │ ├── 2014-03-28-the-road-to-1.0.md │ ├── 2014-04-04-reactnet.md │ ├── 2014-05-06-flux.md │ ├── 2014-05-29-one-year-of-open-source-react.md │ ├── 2014-06-27-community-roundup-19.md │ ├── 2014-07-13-react-v0.11-rc1.md │ ├── 2014-07-17-react-v0.11.md │ ├── 2014-07-25-react-v0.11.1.md │ ├── 2014-07-28-community-roundup-20.md │ ├── 2014-07-30-flux-actions-and-the-dispatcher.md │ ├── 2014-08-03-community-roundup-21.md │ ├── 2014-09-03-introducing-the-jsx-specification.md │ ├── 2014-09-12-community-round-up-22.md │ ├── 2014-09-16-react-v0.11.2.md │ ├── 2014-09-24-testing-flux-applications.md │ ├── 2014-10-14-introducing-react-elements.md │ ├── 2014-10-16-react-v0.12-rc1.md │ ├── 2014-10-17-community-roundup-23.md │ ├── 2014-10-27-react-js-conf.md │ ├── 2014-10-28-react-v0.12.md │ ├── 2014-11-24-react-js-conf-updates.md │ ├── 2014-11-25-community-roundup-24.md │ ├── 2014-12-18-react-v0.12.2.md │ ├── 2014-12-19-react-js-conf-diversity-scholarship.md │ ├── 2015-01-27-react-v0.13.0-beta-1.md │ ├── 2015-02-18-react-conf-roundup-2015.md │ ├── 2015-02-20-introducing-relay-and-graphql.md │ ├── 2015-02-24-react-v0.13-rc1.md │ ├── 2015-02-24-streamlining-react-elements.md │ ├── 2015-03-03-react-v0.13-rc2.md │ ├── 2015-03-04-community-roundup-25.md │ ├── 2015-03-10-react-v0.13.md │ ├── 2015-03-16-react-v0.13.1.md │ ├── 2015-03-19-building-the-facebook-news-feed-with-relay.md │ ├── 2015-03-26-introducing-react-native.md │ ├── 2015-03-30-community-roundup-26.md │ ├── 2015-04-17-react-native-v0.4.md │ ├── 2015-04-18-react-v0.13.2.md │ ├── 2015-05-01-graphql-introduction.md │ ├── 2015-05-08-react-v0.13.3.md │ ├── 2015-05-22-react-native-release-process.md │ ├── 2015-06-12-deprecating-jstransform-and-react-tools.md │ ├── 2015-07-03-react-v0.14-beta-1.md │ ├── 2015-08-03-new-react-devtools-beta.md │ ├── 2015-08-11-relay-technical-preview.md │ ├── 2015-08-13-reacteurope-roundup.md │ ├── 2015-09-02-new-react-developer-tools.md │ ├── 2015-09-10-react-v0.14-rc1.md │ ├── 2015-09-14-community-roundup-27.md │ ├── 2015-10-01-react-render-and-top-level-api.md │ ├── 2015-10-07-react-v0.14.md │ ├── 2015-10-19-reactiflux-is-moving-to-discord.md │ ├── 2015-10-28-react-v0.14.1.md │ ├── 2015-11-02-react-v0.14.2.md │ ├── 2015-11-18-react-v0.14.3.md │ ├── 2015-12-04-react-js-conf-2016-diversity-scholarship.md │ ├── 2015-12-16-ismounted-antipattern.md │ ├── 2015-12-18-react-components-elements-and-instances.md │ ├── 2015-12-29-react-v0.14.4.md │ ├── 2016-01-08-A-implies-B-does-not-imply-B-implies-A.md │ ├── 2016-01-12-discontinuing-ie8-support.md │ ├── 2016-02-19-new-versioning-scheme.md │ ├── 2016-03-07-react-v15-rc1.md │ ├── 2016-03-16-react-v15-rc2.md │ ├── 2016-03-29-react-v0.14.8.md │ ├── 2016-04-07-react-v15.md │ ├── 2016-04-08-react-v15.0.1.md │ ├── 2016-07-11-introducing-reacts-error-code-system.md │ ├── 2016-07-13-mixins-considered-harmful.md │ ├── 2016-07-22-create-apps-with-no-configuration.md │ ├── 2016-08-05-relay-state-of-the-state.md │ ├── 2016-09-28-our-first-50000-stars.md │ └── 2016-11-16-react-v15.4.0.md ├── acknowledgements.md ├── blog │ ├── all.html │ └── index.html ├── community │ ├── complementary-tools.it-IT.md │ ├── complementary-tools.ko-KR.md │ ├── complementary-tools.md │ ├── complementary-tools.zh-CN.md │ ├── conferences.it-IT.md │ ├── conferences.ko-KR.md │ ├── conferences.md │ ├── conferences.zh-CN.md │ ├── examples.it-IT.md │ ├── examples.ko-KR.md │ ├── examples.md │ ├── examples.zh-CN.md │ ├── support.md │ ├── videos.it-IT.md │ ├── videos.ko-KR.md │ ├── videos.md │ └── videos.zh-CN.md ├── contributing │ ├── codebase-overview.md │ ├── design-principles.md │ ├── how-to-contribute.md │ └── implementation-notes.md ├── css │ ├── codemirror.css │ ├── main.css │ ├── react.scss │ └── syntax.css ├── docs │ ├── addons-animation.md │ ├── addons-create-fragment.md │ ├── addons-perf.md │ ├── addons-pure-render-mixin.md │ ├── addons-shallow-compare.md │ ├── addons-test-utils.md │ ├── addons-two-way-binding-helpers.md │ ├── addons-update.md │ ├── addons.md │ ├── components-and-props.md │ ├── composition-vs-inheritance.md │ ├── conditional-rendering.md │ ├── context.md │ ├── error-decoder.md │ ├── forms.md │ ├── handling-events.md │ ├── hello-world.md │ ├── higher-order-components.md │ ├── installation.md │ ├── introducing-jsx.md │ ├── jsx-in-depth.md │ ├── lifting-state-up.md │ ├── lists-and-keys.md │ ├── optimizing-performance.md │ ├── react-without-es6.md │ ├── react-without-jsx.md │ ├── reconciliation.md │ ├── reference-dom-elements.md │ ├── reference-events.md │ ├── reference-pure-render-mixin.md │ ├── reference-react-component.md │ ├── reference-react-dom-server.md │ ├── reference-react-dom.md │ ├── reference-react.md │ ├── refs-and-the-dom.md │ ├── rendering-elements.md │ ├── state-and-lifecycle.md │ ├── thinking-in-react.md │ ├── typechecking-with-proptypes.md │ ├── uncontrolled-components.md │ └── web-components.md ├── downloads │ ├── react-0.10.0-rc1.zip │ ├── react-0.10.0.zip │ ├── react-0.11.0-rc1.zip │ ├── react-0.11.0.zip │ ├── react-0.11.1.zip │ ├── react-0.11.2.zip │ ├── react-0.12.0-rc1.zip │ ├── react-0.12.0.zip │ ├── react-0.12.1.zip │ ├── react-0.12.2.zip │ ├── react-0.13.0-rc1.zip │ ├── react-0.13.0-rc2.zip │ ├── react-0.13.0.zip │ ├── react-0.13.1.zip │ ├── react-0.13.2.zip │ ├── react-0.13.3.zip │ ├── react-0.14.0.zip │ ├── react-0.14.1.zip │ ├── react-0.14.2.zip │ ├── react-0.14.3.zip │ ├── react-0.14.4.zip │ ├── react-0.14.5.zip │ ├── react-0.14.6.zip │ ├── react-0.14.7.zip │ ├── react-0.14.8.zip │ ├── react-0.3.0.zip │ ├── react-0.3.1.zip │ ├── react-0.3.2.zip │ ├── react-0.3.3.zip │ ├── react-0.4.0.zip │ ├── react-0.4.1.zip │ ├── react-0.4.2.zip │ ├── react-0.5.0.zip │ ├── react-0.5.1.zip │ ├── react-0.5.2.zip │ ├── react-0.8.0.zip │ ├── react-0.9.0-rc1.zip │ ├── react-15.0.0-rc.1.zip │ ├── react-15.0.0-rc.2.zip │ ├── react-15.0.0.zip │ ├── react-15.0.1.zip │ ├── react-15.0.2.zip │ ├── react-15.1.0.zip │ ├── react-15.2.0.zip │ ├── react-15.2.1.zip │ ├── react-15.3.0.zip │ ├── react-15.3.1.zip │ ├── react-15.3.2.zip │ ├── react-15.4.0-rc.3.zip │ ├── react-15.4.0.zip │ └── single-file-example.html ├── favicon.ico ├── feed.xml ├── html-jsx.html ├── img │ ├── blog │ │ ├── animal-sounds.jpg │ │ ├── chatapp.png │ │ ├── create-apps-with-no-configuration │ │ │ ├── compiled-successfully.png │ │ │ ├── compiled-with-warnings.png │ │ │ ├── created-folder.png │ │ │ ├── failed-to-compile.png │ │ │ └── npm-run-build.png │ │ ├── devtools-full.gif │ │ ├── devtools-search.gif │ │ ├── devtools-side-pane.gif │ │ ├── devtools-tree-view.png │ │ ├── dog-tutorial.png │ │ ├── first-look.png │ │ ├── flux-chart.png │ │ ├── flux-diagram.png │ │ ├── genesis_skeleton.png │ │ ├── gpu-cursor-move.gif │ │ ├── guess_filter.jpg │ │ ├── hacker-news-react-native.png │ │ ├── jsx-compiler.png │ │ ├── kendoui.png │ │ ├── khan-academy-editor.png │ │ ├── landoflisp.png │ │ ├── lights-out.png │ │ ├── makona-editor.png │ │ ├── markdown_refactor.png │ │ ├── modus-create.gif │ │ ├── monkeys.gif │ │ ├── ngreact.png │ │ ├── om-backbone.png │ │ ├── parse-react.jpg │ │ ├── polarr.jpg │ │ ├── propeller-logo.png │ │ ├── property-finder.png │ │ ├── quiztime.png │ │ ├── react-50k-mock-full.jpg │ │ ├── react-50k-mock.jpg │ │ ├── react-50k-tshirt.jpg │ │ ├── react-browserify-gulp.jpg │ │ ├── react-dev-tools.jpg │ │ ├── react-diff-tree.png │ │ ├── react-draggable.png │ │ ├── react-hackathon.jpg │ │ ├── react-page.png │ │ ├── react-perf-chrome-timeline.png │ │ ├── react-php.png │ │ ├── react-svg-fbp.png │ │ ├── reactive-bookmarklet.png │ │ ├── reflux-flux.png │ │ ├── relay-components │ │ │ ├── relay-architecture.png │ │ │ ├── relay-containers-data-flow.png │ │ │ ├── relay-containers.png │ │ │ └── sample-newsfeed.png │ │ ├── relay-visual-architecture-tour.png │ │ ├── resistance-calculator.png │ │ ├── skills-matter.png │ │ ├── snake.png │ │ ├── steve_reverse.gif │ │ ├── sweet-jsx.png │ │ ├── tcomb-react-native.png │ │ ├── thinking-in-react-components.png │ │ ├── thinking-in-react-mock.png │ │ ├── todomvc.png │ │ ├── turboreact.png │ │ ├── tutsplus.png │ │ ├── unite.png │ │ ├── versioning-1.png │ │ ├── versioning-2.png │ │ ├── versioning-3.png │ │ ├── versioning-4.png │ │ ├── versioning-5.png │ │ ├── versioning-6.png │ │ ├── versioning-poll.png │ │ ├── weather.png │ │ ├── wolfenstein_react.png │ │ ├── xoxo2013.png │ │ └── xreact.png │ ├── docs │ │ ├── codewinds-004.png │ │ ├── granular-dom-updates.gif │ │ ├── implementation-notes-tree.png │ │ ├── javascript-jabber.png │ │ ├── perf-dom.png │ │ ├── perf-exclusive.png │ │ ├── perf-inclusive.png │ │ ├── perf-wasted.png │ │ ├── react-devtools-state.gif │ │ ├── should-component-update.png │ │ └── thinking-in-react-tagtree.png │ ├── external.png │ ├── external_2x.png │ ├── logo.svg │ ├── logo_og.png │ ├── logo_small.png │ ├── logo_small_2x.png │ ├── logo_small_gray.png │ ├── logo_small_gray_2x.png │ ├── noise.png │ ├── oss_logo.png │ ├── search.png │ └── tutorial │ │ ├── devtools.png │ │ ├── tictac-empty.png │ │ └── tictac-numbers.png ├── index.md ├── js │ ├── codemirror.js │ ├── es5-sham.min.js │ ├── es5-shim.min.js │ ├── html5shiv.min.js │ ├── javascript.js │ ├── jsfiddle-integration-babel.js │ ├── jsx.js │ ├── react-dom.js │ ├── react.js │ ├── remarkable.min.js │ └── xml.js ├── jsx-compiler.md ├── tutorial │ └── tutorial.md └── warnings │ ├── dont-call-proptypes.md │ ├── invalid-aria-prop.md │ ├── legacy-factories.md │ ├── refs-must-have-owner.md │ ├── special-props.md │ └── unknown-prop.md ├── eslint-rules ├── README.md ├── __tests__ │ └── warning-and-invariant-args-test.js ├── index.js ├── package.json └── warning-and-invariant-args.js ├── examples ├── README.md ├── basic-click-counter │ └── index.html ├── basic-commonjs │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── index.js │ └── package.json ├── basic-jsx-external │ ├── example.js │ └── index.html ├── basic-jsx-harmony │ └── index.html ├── basic-jsx-precompile │ ├── example.js │ └── index.html ├── basic-jsx │ └── index.html ├── basic │ └── index.html ├── fiber │ ├── debugger │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ └── index.html │ │ ├── src │ │ │ ├── App.js │ │ │ ├── Editor.js │ │ │ ├── Fibers.js │ │ │ ├── describeFibers.js │ │ │ ├── index.css │ │ │ └── index.js │ │ └── yarn.lock │ └── index.html ├── jquery-bootstrap │ ├── css │ │ └── example.css │ ├── index.html │ └── js │ │ └── app.js ├── jquery-mobile │ ├── README.md │ ├── index.html │ └── js │ │ └── app.js ├── quadratic │ ├── example.js │ └── index.html ├── shared │ └── css │ │ └── base.css ├── transitions │ ├── index.html │ └── transition.css └── webcomponents │ └── index.html ├── flow ├── environment.js └── react-native-host-hooks.js ├── grunt ├── config │ ├── browserify.js │ ├── compare_size.js │ ├── compress.js │ └── npm.js ├── data │ ├── header-template-extended.txt │ └── header-template-short.txt └── tasks │ ├── browserify.js │ ├── jest.js │ ├── npm-react-addons.js │ ├── npm-react-dom.js │ ├── npm-react-native.js │ ├── npm-react-noop.js │ ├── npm-react-test.js │ ├── npm-react.js │ ├── npm.js │ └── release.js ├── gulp └── tasks │ ├── eslint.js │ ├── flow.js │ └── version-check.js ├── gulpfile.js ├── mocks ├── ReactElementTestChild.js └── ReactMockedComponentTestComponent.js ├── package.json ├── packages ├── jsx_orphaned_brackets_transformer │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── run.js │ └── transforms │ │ └── react.js ├── react-addons │ └── package.json ├── react-dom │ ├── README.md │ ├── fiber.js │ ├── index.js │ ├── package.json │ └── server.js ├── react-linked-input │ ├── LinkedInput.js │ ├── README.md │ ├── __test__ │ │ └── LinkedInput-test.js │ └── package.json ├── react-native-renderer │ ├── README.md │ ├── index.js │ └── package.json ├── react-noop-renderer │ ├── README.md │ ├── index.js │ └── package.json ├── react-test-renderer │ ├── README.md │ ├── index.js │ └── package.json └── react │ ├── README.md │ ├── package.json │ └── react.js ├── scripts ├── authors ├── babel │ └── transform-object-assign-require.js ├── bench │ ├── README.md │ ├── analyze.py │ ├── bench-createclass.js │ ├── bench-pe-es5.js │ ├── bench-pe-sfc-es5.js │ ├── bench-pe-sfc.js │ ├── bench-pe.js │ ├── extract-component.js │ └── measure.py ├── circleci │ ├── build_gh_pages.sh │ ├── set_up_github_keys.sh │ ├── test_coverage.sh │ ├── test_entry_point.sh │ ├── test_extract_errors.sh │ ├── test_fiber.sh │ ├── test_html_generation.sh │ ├── track_stats.sh │ └── upload_build.sh ├── error-codes │ ├── README.md │ ├── Types.js │ ├── __tests__ │ │ ├── dev-expression-with-codes-test.js │ │ ├── evalToString-test.js │ │ └── invertObject-test.js │ ├── codes.json │ ├── dev-expression-with-codes.js │ ├── evalToString.js │ ├── gulp-extract-errors.js │ └── invertObject.js ├── facts-tracker │ └── index.js ├── fiber │ ├── record-tests │ ├── tests-failing.txt │ ├── tests-passing-except-dev.txt │ └── tests-passing.txt ├── git │ └── pre-commit ├── jest │ ├── environment.js │ ├── jest.d.ts │ ├── preprocessor.js │ ├── setupSpecEquivalenceReporter.js │ ├── test-framework-setup.js │ └── ts-preprocessor.js └── perf-counters │ ├── Makefile │ ├── README.md │ ├── binding.gyp │ ├── index.js │ ├── package.json │ └── src │ ├── hardware-counter.cpp │ ├── hardware-counter.h │ ├── jsc-perf.cpp │ ├── perf-counters.cpp │ ├── portability.h │ ├── thread-local.cpp │ └── thread-local.h ├── src ├── ReactVersion.js ├── addons │ ├── ReactAddonsDOMDependencies.js │ ├── ReactComponentWithPureRenderMixin.js │ ├── ReactFragment.js │ ├── ReactWithAddons.js │ ├── __tests__ │ │ ├── ReactComponentWithPureRenderMixin-test.js │ │ ├── ReactFragment-test.js │ │ ├── renderSubtreeIntoContainer-test.js │ │ └── update-test.js │ ├── link │ │ └── ReactStateSetters.js │ ├── shallowCompare.js │ ├── transitions │ │ ├── ReactCSSTransitionGroup.js │ │ ├── ReactCSSTransitionGroupChild.js │ │ ├── ReactTransitionChildMapping.js │ │ ├── ReactTransitionEvents.js │ │ ├── ReactTransitionGroup.js │ │ └── __tests__ │ │ │ ├── ReactCSSTransitionGroup-test.js │ │ │ ├── ReactTransitionChildMapping-test.js │ │ │ └── ReactTransitionGroup-test.js │ └── update.js ├── isomorphic │ ├── React.js │ ├── children │ │ ├── ReactChildren.js │ │ ├── __tests__ │ │ │ ├── ReactChildren-test.js │ │ │ ├── onlyChild-test.js │ │ │ └── sliceChildren-test.js │ │ ├── onlyChild.js │ │ └── sliceChildren.js │ ├── classic │ │ ├── __tests__ │ │ │ └── ReactContextValidator-test.js │ │ ├── class │ │ │ ├── ReactClass.js │ │ │ └── __tests__ │ │ │ │ ├── ReactBind-test.js │ │ │ │ ├── ReactBindOptout-test.js │ │ │ │ ├── ReactClass-test.js │ │ │ │ └── ReactClassMixin-test.js │ │ ├── element │ │ │ ├── ReactCurrentOwner.js │ │ │ ├── ReactDOMFactories.js │ │ │ ├── ReactElement.js │ │ │ ├── ReactElementType.js │ │ │ ├── ReactElementValidator.js │ │ │ └── __tests__ │ │ │ │ ├── ReactElement-test.js │ │ │ │ ├── ReactElementClone-test.js │ │ │ │ └── ReactElementValidator-test.js │ │ └── types │ │ │ ├── ReactPropTypes.js │ │ │ └── __tests__ │ │ │ ├── ReactPropTypes-test.js │ │ │ └── ReactPropTypesProduction-test.js │ ├── hooks │ │ └── ReactComponentTreeHook.js │ └── modern │ │ ├── class │ │ ├── React.d.ts │ │ ├── ReactComponent.js │ │ ├── ReactDOM.d.ts │ │ ├── ReactNoopUpdateQueue.js │ │ ├── ReactPureComponent.js │ │ └── __tests__ │ │ │ ├── ReactClassEquivalence-test.js │ │ │ ├── ReactCoffeeScriptClass-test.coffee │ │ │ ├── ReactES6Class-test.js │ │ │ ├── ReactPureComponent-test.js │ │ │ └── ReactTypeScriptClass-test.ts │ │ └── element │ │ └── __tests__ │ │ ├── ReactJSXElement-test.js │ │ └── ReactJSXElementValidator-test.js ├── package.json ├── renderers │ ├── art │ │ ├── ReactART.js │ │ ├── ReactARTFiber.js │ │ ├── ReactARTStack.js │ │ └── __tests__ │ │ │ └── ReactART-test.js │ ├── dom │ │ ├── ReactDOM.js │ │ ├── ReactDOMServer.js │ │ ├── __mocks__ │ │ │ └── ReactDOM.js │ │ ├── __tests__ │ │ │ └── ReactDOMProduction-test.js │ │ ├── fiber │ │ │ ├── ReactDOMFiber.js │ │ │ ├── ReactDOMFiberComponent.js │ │ │ ├── __tests__ │ │ │ │ └── ReactDOMFiber-test.js │ │ │ └── wrappers │ │ │ │ ├── ReactDOMFiberInput.js │ │ │ │ ├── ReactDOMFiberOption.js │ │ │ │ ├── ReactDOMFiberSelect.js │ │ │ │ └── ReactDOMFiberTextarea.js │ │ ├── shared │ │ │ ├── ARIADOMPropertyConfig.js │ │ │ ├── CSSProperty.js │ │ │ ├── CSSPropertyOperations.js │ │ │ ├── DOMNamespaces.js │ │ │ ├── DOMProperty.js │ │ │ ├── DOMPropertyOperations.js │ │ │ ├── HTMLDOMPropertyConfig.js │ │ │ ├── ReactBrowserEventEmitter.js │ │ │ ├── ReactDOMComponentFlags.js │ │ │ ├── ReactDOMComponentTree.js │ │ │ ├── ReactDOMFeatureFlags.js │ │ │ ├── ReactDOMInjection.js │ │ │ ├── ReactDOMSelection.js │ │ │ ├── ReactEventListener.js │ │ │ ├── ReactInputSelection.js │ │ │ ├── SVGDOMPropertyConfig.js │ │ │ ├── __tests__ │ │ │ │ ├── CSSProperty-test.js │ │ │ │ ├── CSSPropertyOperations-test.js │ │ │ │ ├── DOMPropertyOperations-test.js │ │ │ │ ├── ReactBrowserEventEmitter-test.js │ │ │ │ ├── ReactDOM-test.js │ │ │ │ ├── ReactDOMComponent-test.js │ │ │ │ ├── ReactDOMComponentTree-test.js │ │ │ │ ├── ReactDOMIDOperations-test.js │ │ │ │ ├── ReactDOMInvalidARIAHook-test.js │ │ │ │ ├── ReactDOMSVG-test.js │ │ │ │ ├── ReactDOMTextComponent-test.js │ │ │ │ ├── ReactEventIndependence-test.js │ │ │ │ ├── ReactEventListener-test.js │ │ │ │ ├── ReactMount-test.js │ │ │ │ ├── ReactMountDestruction-test.js │ │ │ │ ├── ReactRenderDocument-test.js │ │ │ │ ├── ReactServerRendering-test.js │ │ │ │ ├── escapeTextContentForBrowser-test.js │ │ │ │ ├── findDOMNode-test.js │ │ │ │ ├── inputValueTracking-test.js │ │ │ │ ├── quoteAttributeValueForBrowser-test.js │ │ │ │ └── validateDOMNesting-test.js │ │ │ ├── createMicrosoftUnsafeLocalFunction.js │ │ │ ├── dangerousStyleValue.js │ │ │ ├── escapeTextContentForBrowser.js │ │ │ ├── eventPlugins │ │ │ │ ├── BeforeInputEventPlugin.js │ │ │ │ ├── ChangeEventPlugin.js │ │ │ │ ├── DOMEventPluginOrder.js │ │ │ │ ├── EnterLeaveEventPlugin.js │ │ │ │ ├── FallbackCompositionState.js │ │ │ │ ├── SelectEventPlugin.js │ │ │ │ ├── SimpleEventPlugin.js │ │ │ │ ├── TapEventPlugin.js │ │ │ │ └── __tests__ │ │ │ │ │ ├── BeforeInputEventPlugin-test.js │ │ │ │ │ ├── ChangeEventPlugin-test.js │ │ │ │ │ ├── EnterLeaveEventPlugin-test.js │ │ │ │ │ ├── FallbackCompositionState-test.js │ │ │ │ │ ├── SelectEventPlugin-test.js │ │ │ │ │ └── SimpleEventPlugin-test.js │ │ │ ├── findDOMNode.js │ │ │ ├── hooks │ │ │ │ ├── ReactDOMInvalidARIAHook.js │ │ │ │ ├── ReactDOMNullInputValuePropHook.js │ │ │ │ └── ReactDOMUnknownPropertyHook.js │ │ │ ├── inputValueTracking.js │ │ │ ├── quoteAttributeValueForBrowser.js │ │ │ ├── renderSubtreeIntoContainer.js │ │ │ ├── setInnerHTML.js │ │ │ ├── setTextContent.js │ │ │ ├── syntheticEvents │ │ │ │ ├── SyntheticAnimationEvent.js │ │ │ │ ├── SyntheticClipboardEvent.js │ │ │ │ ├── SyntheticCompositionEvent.js │ │ │ │ ├── SyntheticDragEvent.js │ │ │ │ ├── SyntheticFocusEvent.js │ │ │ │ ├── SyntheticInputEvent.js │ │ │ │ ├── SyntheticKeyboardEvent.js │ │ │ │ ├── SyntheticMouseEvent.js │ │ │ │ ├── SyntheticTouchEvent.js │ │ │ │ ├── SyntheticTransitionEvent.js │ │ │ │ ├── SyntheticUIEvent.js │ │ │ │ ├── SyntheticWheelEvent.js │ │ │ │ └── __tests__ │ │ │ │ │ ├── SyntheticClipboardEvent-test.js │ │ │ │ │ ├── SyntheticEvent-test.js │ │ │ │ │ ├── SyntheticKeyboardEvent-test.js │ │ │ │ │ └── SyntheticWheelEvent-test.js │ │ │ ├── utils │ │ │ │ ├── AutoFocusUtils.js │ │ │ │ ├── ReactControlledValuePropTypes.js │ │ │ │ ├── ViewportMetrics.js │ │ │ │ ├── __tests__ │ │ │ │ │ ├── getEventCharCode-test.js │ │ │ │ │ ├── getEventKey-test.js │ │ │ │ │ ├── getNodeForCharacterOffset-test.js │ │ │ │ │ └── setInnerHTML-test.js │ │ │ │ ├── getEventCharCode.js │ │ │ │ ├── getEventKey.js │ │ │ │ ├── getEventModifierState.js │ │ │ │ ├── getEventTarget.js │ │ │ │ ├── getNodeForCharacterOffset.js │ │ │ │ ├── getTextContentAccessor.js │ │ │ │ ├── getVendorPrefixedEventName.js │ │ │ │ └── isEventSupported.js │ │ │ ├── validateDOMNesting.js │ │ │ └── wrappers │ │ │ │ └── __tests__ │ │ │ │ ├── ReactDOMIframe-test.js │ │ │ │ ├── ReactDOMInput-test.js │ │ │ │ ├── ReactDOMOption-test.js │ │ │ │ ├── ReactDOMSelect-test.js │ │ │ │ └── ReactDOMTextarea-test.js │ │ └── stack │ │ │ ├── client │ │ │ ├── DOMChildrenOperations.js │ │ │ ├── DOMLazyTree.js │ │ │ ├── Danger.js │ │ │ ├── ReactComponentBrowserEnvironment.js │ │ │ ├── ReactDOMComponent.js │ │ │ ├── ReactDOMContainerInfo.js │ │ │ ├── ReactDOMEmptyComponent.js │ │ │ ├── ReactDOMIDOperations.js │ │ │ ├── ReactDOMStackInjection.js │ │ │ ├── ReactDOMTextComponent.js │ │ │ ├── ReactMount.js │ │ │ ├── ReactReconcileTransaction.js │ │ │ └── wrappers │ │ │ │ ├── ReactDOMInput.js │ │ │ │ ├── ReactDOMOption.js │ │ │ │ ├── ReactDOMSelect.js │ │ │ │ └── ReactDOMTextarea.js │ │ │ └── server │ │ │ ├── ReactMarkupChecksum.js │ │ │ ├── ReactServerBatchingStrategy.js │ │ │ ├── ReactServerRendering.js │ │ │ ├── ReactServerRenderingTransaction.js │ │ │ └── ReactServerUpdateQueue.js │ ├── native │ │ ├── NativeMethodsMixin.js │ │ ├── ReactNative.js │ │ ├── ReactNativeAttributePayload.js │ │ ├── ReactNativeBaseComponent.js │ │ ├── ReactNativeBridgeEventPlugin.js │ │ ├── ReactNativeComponentEnvironment.js │ │ ├── ReactNativeComponentTree.js │ │ ├── ReactNativeContainerInfo.js │ │ ├── ReactNativeDOMIDOperations.js │ │ ├── ReactNativeEventEmitter.js │ │ ├── ReactNativeEventPluginOrder.js │ │ ├── ReactNativeGlobalResponderHandler.js │ │ ├── ReactNativeInjection.js │ │ ├── ReactNativeMount.js │ │ ├── ReactNativePropRegistry.js │ │ ├── ReactNativeReconcileTransaction.js │ │ ├── ReactNativeStackInjection.js │ │ ├── ReactNativeTagHandles.js │ │ ├── ReactNativeTextComponent.js │ │ ├── __mocks__ │ │ │ ├── InitializeJavaScriptAppEngine.js │ │ │ ├── RCTEventEmitter.js │ │ │ ├── TextInputState.js │ │ │ ├── UIManager.js │ │ │ ├── View.js │ │ │ ├── deepDiffer.js │ │ │ ├── deepFreezeAndThrowOnMutationInDev.js │ │ │ └── flattenStyle.js │ │ ├── __tests__ │ │ │ ├── ReactNativeAttributePayload-test.js │ │ │ ├── ReactNativeEvents-test.js │ │ │ └── ReactNativeMount-test.js │ │ ├── createReactNativeComponentClass.js │ │ └── findNodeHandle.js │ ├── noop │ │ └── ReactNoop.js │ ├── shared │ │ ├── ReactDebugTool.js │ │ ├── ReactInstrumentation.js │ │ ├── ReactPerf.js │ │ ├── __tests__ │ │ │ ├── ReactDebugTool-test.js │ │ │ └── ReactPerf-test.js │ │ ├── fiber │ │ │ ├── ReactChildFiber.js │ │ │ ├── ReactFiber.js │ │ │ ├── ReactFiberBeginWork.js │ │ │ ├── ReactFiberClassComponent.js │ │ │ ├── ReactFiberCommitWork.js │ │ │ ├── ReactFiberCompleteWork.js │ │ │ ├── ReactFiberContext.js │ │ │ ├── ReactFiberHostContext.js │ │ │ ├── ReactFiberInstrumentation.js │ │ │ ├── ReactFiberReconciler.js │ │ │ ├── ReactFiberRoot.js │ │ │ ├── ReactFiberScheduler.js │ │ │ ├── ReactFiberTreeReflection.js │ │ │ ├── ReactFiberUpdateQueue.js │ │ │ ├── ReactPriorityLevel.js │ │ │ ├── ReactReifiedYield.js │ │ │ ├── ReactTypeOfSideEffect.js │ │ │ ├── ReactTypeOfWork.js │ │ │ ├── __tests__ │ │ │ │ ├── ReactCoroutine-test.js │ │ │ │ ├── ReactIncremental-test.js │ │ │ │ ├── ReactIncrementalErrorHandling-test.js │ │ │ │ ├── ReactIncrementalReflection-test.js │ │ │ │ ├── ReactIncrementalScheduling-test.js │ │ │ │ ├── ReactIncrementalSideEffects-test.js │ │ │ │ ├── ReactTopLevelFragment-test.js │ │ │ │ └── ReactTopLevelText-test.js │ │ │ ├── getCurrentOwnerName.js │ │ │ └── isomorphic │ │ │ │ ├── ReactCoroutine.js │ │ │ │ ├── ReactPortal.js │ │ │ │ └── ReactTypes.js │ │ ├── hooks │ │ │ ├── ReactHostOperationHistoryHook.js │ │ │ ├── ReactInvalidSetStateWarningHook.js │ │ │ └── __tests__ │ │ │ │ ├── ReactComponentTreeHook-test.js │ │ │ │ ├── ReactComponentTreeHook-test.native.js │ │ │ │ └── ReactHostOperationHistoryHook-test.js │ │ ├── shared │ │ │ ├── ReactInstanceMap.js │ │ │ ├── ReactTreeTraversal.js │ │ │ ├── __tests__ │ │ │ │ ├── ReactChildReconciler-test.js │ │ │ │ ├── ReactComponent-test.js │ │ │ │ ├── ReactComponentLifeCycle-test.js │ │ │ │ ├── ReactCompositeComponent-test.js │ │ │ │ ├── ReactCompositeComponentDOMMinimalism-test.js │ │ │ │ ├── ReactCompositeComponentNestedState-test.js │ │ │ │ ├── ReactCompositeComponentState-test.js │ │ │ │ ├── ReactEmptyComponent-test.js │ │ │ │ ├── ReactErrorBoundaries-test.js │ │ │ │ ├── ReactIdentity-test.js │ │ │ │ ├── ReactMockedComponent-test.js │ │ │ │ ├── ReactMultiChild-test.js │ │ │ │ ├── ReactMultiChildReconcile-test.js │ │ │ │ ├── ReactMultiChildText-test.js │ │ │ │ ├── ReactStateSetters-test.js │ │ │ │ ├── ReactStatelessComponent-test.js │ │ │ │ ├── ReactTreeTraversal-test.js │ │ │ │ ├── ReactUpdates-test.js │ │ │ │ ├── refs-destruction-test.js │ │ │ │ └── refs-test.js │ │ │ ├── event │ │ │ │ ├── EventConstants.js │ │ │ │ ├── EventPluginHub.js │ │ │ │ ├── EventPluginRegistry.js │ │ │ │ ├── EventPluginUtils.js │ │ │ │ ├── EventPropagators.js │ │ │ │ ├── PluginModuleType.js │ │ │ │ ├── ReactControlledComponent.js │ │ │ │ ├── ReactEventEmitterMixin.js │ │ │ │ ├── ReactGenericBatching.js │ │ │ │ ├── ReactSyntheticEventType.js │ │ │ │ ├── SyntheticEvent.js │ │ │ │ ├── __tests__ │ │ │ │ │ ├── EventPluginHub-test.js │ │ │ │ │ └── EventPluginRegistry-test.js │ │ │ │ └── eventPlugins │ │ │ │ │ ├── ResponderEventPlugin.js │ │ │ │ │ ├── ResponderSyntheticEvent.js │ │ │ │ │ ├── ResponderTouchHistoryStore.js │ │ │ │ │ ├── TouchHistoryMath.js │ │ │ │ │ └── __tests__ │ │ │ │ │ └── ResponderEventPlugin-test.js │ │ │ ├── getContextForSubtree.js │ │ │ └── shouldUpdateReactComponent.js │ │ ├── stack │ │ │ └── reconciler │ │ │ │ ├── CallbackQueue.js │ │ │ │ ├── ReactChildReconciler.js │ │ │ │ ├── ReactComponentEnvironment.js │ │ │ │ ├── ReactCompositeComponent.js │ │ │ │ ├── ReactDefaultBatchingStrategy.js │ │ │ │ ├── ReactEmptyComponent.js │ │ │ │ ├── ReactHostComponent.js │ │ │ │ ├── ReactInstanceType.js │ │ │ │ ├── ReactMultiChild.js │ │ │ │ ├── ReactMultiChildUpdateTypes.js │ │ │ │ ├── ReactNodeTypes.js │ │ │ │ ├── ReactOwner.js │ │ │ │ ├── ReactReconciler.js │ │ │ │ ├── ReactRef.js │ │ │ │ ├── ReactSimpleEmptyComponent.js │ │ │ │ ├── ReactUpdateQueue.js │ │ │ │ ├── ReactUpdates.js │ │ │ │ ├── Transaction.js │ │ │ │ ├── __tests__ │ │ │ │ └── Transaction-test.js │ │ │ │ ├── getHostComponentFromComposite.js │ │ │ │ └── instantiateReactComponent.js │ │ └── utils │ │ │ ├── ReactErrorUtils.js │ │ │ ├── ReactFeatureFlags.js │ │ │ ├── __tests__ │ │ │ ├── ReactErrorUtils-test.js │ │ │ ├── accumulateInto-test.js │ │ │ └── adler32-test.js │ │ │ ├── accumulate.js │ │ │ ├── accumulateInto.js │ │ │ ├── adler32.js │ │ │ ├── forEachAccumulated.js │ │ │ └── isTextInputElement.js │ └── testing │ │ ├── ReactTestEmptyComponent.js │ │ ├── ReactTestMount.js │ │ ├── ReactTestReconcileTransaction.js │ │ ├── ReactTestRenderer.js │ │ ├── ReactTestTextComponent.js │ │ └── __tests__ │ │ └── ReactTestRenderer-test.js ├── shared │ ├── types │ │ ├── ReactPropTypeLocationNames.js │ │ ├── ReactPropTypeLocations.js │ │ └── checkReactTypeSpec.js │ ├── utils │ │ ├── KeyEscapeUtils.js │ │ ├── PooledClass.js │ │ ├── ReactElementSymbol.js │ │ ├── __tests__ │ │ │ ├── KeyEscapeUtils-test.js │ │ │ ├── PooledClass-test.js │ │ │ └── reactProdInvariant-test.js │ │ ├── canDefineProperty.js │ │ ├── deprecated.js │ │ ├── flattenChildren.js │ │ ├── getComponentName.js │ │ ├── getIteratorFn.js │ │ ├── getNextDebugID.js │ │ ├── reactProdInvariant.js │ │ └── traverseAllChildren.js │ └── vendor │ │ └── third_party │ │ └── webcomponents.js ├── test │ ├── ReactComponentTreeTestUtils.js │ ├── ReactShallowRenderer.js │ ├── ReactTestUtils.js │ ├── __tests__ │ │ ├── ReactTestUtils-test.js │ │ └── reactComponentExpect-test.js │ ├── getTestDocument.js │ └── reactComponentExpect.js └── umd │ ├── ReactDOMServerUMDEntry.js │ ├── ReactDOMUMDEntry.js │ ├── ReactUMDEntry.js │ ├── ReactWithAddonsUMDEntry.js │ └── shims │ ├── ReactAddonsDOMDependenciesUMDShim.js │ ├── ReactComponentTreeHookUMDShim.js │ ├── ReactCurrentOwnerUMDShim.js │ └── ReactUMDShim.js ├── starter └── README.md └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react"], 3 | "ignore": ["third_party"], 4 | "plugins": [ 5 | "transform-class-properties", 6 | "syntax-trailing-function-commas", 7 | "transform-object-rest-spread", 8 | "transform-es2015-template-literals", 9 | "transform-es2015-literals", 10 | "transform-es2015-arrow-functions", 11 | "transform-es2015-block-scoped-functions", 12 | ["transform-es2015-classes", { "loose": true }], 13 | "transform-es2015-object-super", 14 | "transform-es2015-shorthand-properties", 15 | "transform-es2015-computed-properties", 16 | "transform-es2015-for-of", 17 | "check-es2015-constants", 18 | ["transform-es2015-spread", { "loose": true }], 19 | "transform-es2015-parameters", 20 | ["transform-es2015-destructuring", { "loose": true }], 21 | "transform-es2015-block-scoping", 22 | "transform-es2015-modules-commonjs", 23 | "transform-es3-member-expression-literals", 24 | "transform-es3-property-literals", 25 | "./scripts/babel/transform-object-assign-require", 26 | "transform-react-jsx-source" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | max_line_length = 80 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | max_line_length = 0 15 | trim_trailing_whitespace = false 16 | 17 | [COMMIT_EDITMSG] 18 | max_line_length = 0 19 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # We can probably lint these later but not important at this point 2 | src/renderers/art 3 | src/shared/vendor 4 | # But not in docs/_js/examples/* 5 | docs/_js/*.js 6 | docs/js/ 7 | docs/_site/ 8 | # gems 9 | docs/vendor/bundle/ 10 | # This should be more like examples/**/thirdparty/** but 11 | # we should fix https://github.com/facebook/esprima/pull/85 first 12 | examples/ 13 | # Ignore built files. 14 | build/ 15 | coverage/ 16 | scripts/bench/bench-*.js 17 | vendor/* 18 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | /examples/.* 4 | /build/.* 5 | /.*/node_modules/y18n/.* 6 | /.*/__mocks__/.* 7 | /.*/__tests__/.* 8 | 9 | # Ignore Docs 10 | /docs/.* 11 | /.*/docs/.* 12 | 13 | [include] 14 | 15 | [libs] 16 | ./node_modules/fbjs/flow/lib/dev.js 17 | ./flow 18 | 19 | [options] 20 | module.system=haste 21 | 22 | esproposal.class_static_fields=enable 23 | esproposal.class_instance_fields=enable 24 | 25 | munge_underscores=false 26 | 27 | suppress_type=$FlowIssue 28 | suppress_type=$FlowFixMe 29 | suppress_type=$FixMe 30 | suppress_type=$FlowExpectedError 31 | 32 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-3]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\) 33 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-3]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\)?:? #[0-9]+ 34 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 35 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 36 | 37 | [version] 38 | ^0.36.0 39 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Do you want to request a *feature* or report a *bug*?** 2 | 3 | **What is the current behavior?** 4 | 5 | **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://jsfiddle.net or similar (template: https://jsfiddle.net/reactjs/69z2wepo/).** 6 | 7 | **What is the expected behavior?** 8 | 9 | **Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?** 10 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | *Before* submitting a pull request, please make sure the following is done... 2 | 3 | 1. Fork the repo and create your branch from `master`. 4 | 2. If you've added code that should be tested, add tests! 5 | 3. If you've changed APIs, update the documentation. 6 | 4. Ensure the test suite passes (`npm test`). 7 | 5. Make sure your code lints (`npm run lint`) - we've done our best to make sure these rules match our internal linting guidelines. 8 | 6. If you haven't already, complete the [CLA](https://code.facebook.com/cla). 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_STORE 2 | node_modules 3 | *~ 4 | *.pyc 5 | static 6 | .grunt 7 | _SpecRunner.html 8 | __benchmarks__ 9 | build/ 10 | coverage/ 11 | .module-cache 12 | *.gem 13 | docs/.bundle 14 | docs/code 15 | docs/_site 16 | docs/.sass-cache 17 | docs/js/* 18 | docs/downloads/*.zip 19 | docs/vendor/bundle 20 | examples/shared/*.js 21 | examples/**/bundle.js 22 | test/the-files-to-test.generated.js 23 | *.log* 24 | chrome-user-data 25 | *.sublime-project 26 | *.sublime-workspace 27 | .idea 28 | *.iml 29 | .vscode 30 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to React 2 | 3 | Want to contribute to React? There are a few things you need to know. 4 | 5 | We wrote a **[contribution guide](https://facebook.github.io/react/contributing/how-to-contribute.html)** to help you get started. 6 | -------------------------------------------------------------------------------- /LICENSE-examples: -------------------------------------------------------------------------------- 1 | The examples provided by Facebook are for non-commercial testing and evaluation 2 | purposes only. Facebook reserves all rights not expressly granted. 3 | 4 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 5 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 6 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 7 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 8 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 9 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /docs/404.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: single 3 | title: Page Not Found 4 | permalink: 404.html 5 | --- 6 | 7 | We couldn't find what you were looking for. 8 | 9 | Please contact the owner of the site that linked you to the original URL and let them know their link is broken. 10 | -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'rake' 4 | 5 | # jekyll, which builds it all 6 | # 3.0 includes sass processing 7 | gem 'jekyll', '~>3.1' 8 | 9 | # Jekyll extensions 10 | gem 'jekyll-redirect-from' 11 | gem 'jekyll-paginate' 12 | 13 | # JSON 14 | gem 'json' 15 | 16 | # For `rake watch` 17 | gem 'rb-fsevent' 18 | 19 | # For markdown header cleanup 20 | gem 'sanitize', '~>2.0' 21 | 22 | # Markdown 23 | gem 'redcarpet' 24 | 25 | # Syntax highlighting 26 | gem 'pygments.rb' 27 | 28 | # Avoid having to poll for changes on Windows 29 | gem 'wdm', '>= 0.1.0' if Gem.win_platform? -------------------------------------------------------------------------------- /docs/_css/_variables.scss: -------------------------------------------------------------------------------- 1 | $primary: #cc7a6f; 2 | $linkColor: darken($primary, 9%); 3 | $linkInteract: darken($linkColor, 9%); 4 | $pageBg: #f9f9f9; 5 | 6 | $lightColor: #e9e9e9; 7 | $mediumestColor: #666; 8 | $mediumColor: #484848; 9 | $darkColor: #2d2d2d; 10 | $darkestColor: #222222; 11 | $blueColor: #61dafb; 12 | $orangeColor: complement($blueColor); 13 | 14 | $lightTextColor: #fafafa; 15 | $mediumTextColor: #aaa; 16 | $darkTextColor: $mediumColor; 17 | 18 | $buttonBlueTop: #77a3d2; 19 | $buttonBlueBottom: #4783c2; 20 | $buttonGreyTop: #9a9a9a; 21 | $buttonGreyBottom: #646464; 22 | 23 | -------------------------------------------------------------------------------- /docs/_css/bourbon/_bourbon-deprecated-upcoming.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // These mixins/functions are deprecated 3 | // They will be removed in the next MAJOR version release 4 | //************************************************************************// 5 | @mixin inline-block { 6 | display: inline-block; 7 | @warn "inline-block mixin is deprecated and will be removed in the next major version release"; 8 | } 9 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // Modern micro clearfix provides an easy way to contain floats without adding additional markup. 2 | // 3 | // Example usage: 4 | // 5 | // // Contain all floats within .wrapper 6 | // .wrapper { 7 | // @include clearfix; 8 | // .content, 9 | // .sidebar { 10 | // float : left; 11 | // } 12 | // } 13 | 14 | @mixin clearfix { 15 | &:after { 16 | content:""; 17 | display:table; 18 | clear:both; 19 | } 20 | } 21 | 22 | // Acknowledgements 23 | // Beat *that* clearfix: [Thierry Koblentz](http://www.css-101.org/articles/clearfix/latest-new-clearfix-so-far.php) 24 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_ellipsis.scss: -------------------------------------------------------------------------------- 1 | @mixin ellipsis($width: 100%) { 2 | display: inline-block; 3 | max-width: $width; 4 | overflow: hidden; 5 | text-overflow: ellipsis; 6 | white-space: nowrap; 7 | } 8 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_font-family.scss: -------------------------------------------------------------------------------- 1 | $georgia: Georgia, Cambria, "Times New Roman", Times, serif; 2 | $helvetica: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; 3 | $lucida-grande: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif; 4 | $monospace: "Bitstream Vera Sans Mono", Consolas, Courier, monospace; 5 | $verdana: Verdana, Geneva, sans-serif; 6 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_hide-text.scss: -------------------------------------------------------------------------------- 1 | @mixin hide-text { 2 | overflow: hidden; 3 | 4 | &:before { 5 | content: ""; 6 | display: block; 7 | width: 0; 8 | height: 100%; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_position.scss: -------------------------------------------------------------------------------- 1 | @mixin position ($position: relative, $coordinates: null null null null) { 2 | 3 | @if type-of($position) == list { 4 | $coordinates: $position; 5 | $position: relative; 6 | } 7 | 8 | $coordinates: unpack($coordinates); 9 | 10 | $top: nth($coordinates, 1); 11 | $right: nth($coordinates, 2); 12 | $bottom: nth($coordinates, 3); 13 | $left: nth($coordinates, 4); 14 | 15 | position: $position; 16 | 17 | @if ($top and $top == auto) or (type-of($top) == number) { 18 | top: $top; 19 | } 20 | 21 | @if ($right and $right == auto) or (type-of($right) == number) { 22 | right: $right; 23 | } 24 | 25 | @if ($bottom and $bottom == auto) or (type-of($bottom) == number) { 26 | bottom: $bottom; 27 | } 28 | 29 | @if ($left and $left == auto) or (type-of($left) == number) { 30 | left: $left; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_retina-image.scss: -------------------------------------------------------------------------------- 1 | @mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) { 2 | @if $asset-pipeline { 3 | background-image: image-url("#{$filename}.#{$extension}"); 4 | } 5 | @else { 6 | background-image: url("#{$filename}.#{$extension}"); 7 | } 8 | 9 | @include hidpi { 10 | @if $asset-pipeline { 11 | @if $retina-filename { 12 | background-image: image-url("#{$retina-filename}.#{$extension}"); 13 | } 14 | @else { 15 | background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}"); 16 | } 17 | } 18 | 19 | @else { 20 | @if $retina-filename { 21 | background-image: url("#{$retina-filename}.#{$extension}"); 22 | } 23 | @else { 24 | background-image: url("#{$filename}#{$retina-suffix}.#{$extension}"); 25 | } 26 | } 27 | 28 | background-size: $background-size; 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_size.scss: -------------------------------------------------------------------------------- 1 | @mixin size($size) { 2 | $height: nth($size, 1); 3 | $width: $height; 4 | 5 | @if length($size) > 1 { 6 | $height: nth($size, 2); 7 | } 8 | 9 | @if $height == auto or (type-of($height) == number and not unitless($height)) { 10 | height: $height; 11 | } 12 | 13 | @if $width == auto or (type-of($width) == number and not unitless($width)) { 14 | width: $width; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /docs/_css/bourbon/addons/_word-wrap.scss: -------------------------------------------------------------------------------- 1 | @mixin word-wrap($wrap: break-word) { 2 | word-wrap: $wrap; 3 | 4 | @if $wrap == break-word { 5 | overflow-wrap: break-word; 6 | word-break: break-all; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_appearance.scss: -------------------------------------------------------------------------------- 1 | @mixin appearance ($value) { 2 | @include prefixer(appearance, $value, webkit moz ms o spec); 3 | } 4 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_backface-visibility.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Backface-visibility mixin 3 | //************************************************************************// 4 | @mixin backface-visibility($visibility) { 5 | @include prefixer(backface-visibility, $visibility, webkit spec); 6 | } 7 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_border-radius.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Shorthand Border-radius mixins 3 | //************************************************************************// 4 | @mixin border-top-radius($radii) { 5 | @include prefixer(border-top-left-radius, $radii, spec); 6 | @include prefixer(border-top-right-radius, $radii, spec); 7 | } 8 | 9 | @mixin border-bottom-radius($radii) { 10 | @include prefixer(border-bottom-left-radius, $radii, spec); 11 | @include prefixer(border-bottom-right-radius, $radii, spec); 12 | } 13 | 14 | @mixin border-left-radius($radii) { 15 | @include prefixer(border-top-left-radius, $radii, spec); 16 | @include prefixer(border-bottom-left-radius, $radii, spec); 17 | } 18 | 19 | @mixin border-right-radius($radii) { 20 | @include prefixer(border-top-right-radius, $radii, spec); 21 | @include prefixer(border-bottom-right-radius, $radii, spec); 22 | } 23 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_box-sizing.scss: -------------------------------------------------------------------------------- 1 | @mixin box-sizing ($box) { 2 | // content-box | border-box | inherit 3 | @include prefixer(box-sizing, $box, webkit moz spec); 4 | } 5 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_calc.scss: -------------------------------------------------------------------------------- 1 | @mixin calc($property, $value) { 2 | #{$property}: -webkit-calc(#{$value}); 3 | #{$property}: calc(#{$value}); 4 | } 5 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_filter.scss: -------------------------------------------------------------------------------- 1 | @mixin filter($function: none) { 2 | // [ 3 | @include prefixer(perspective, $depth, webkit moz spec); 4 | } 5 | 6 | @mixin perspective-origin($value: 50% 50%) { 7 | @include prefixer(perspective-origin, $value, webkit moz spec); 8 | } 9 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_placeholder.scss: -------------------------------------------------------------------------------- 1 | @mixin placeholder { 2 | $placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input"; 3 | @each $placeholder in $placeholders { 4 | &:#{$placeholder}-placeholder { 5 | @content; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_transform.scss: -------------------------------------------------------------------------------- 1 | @mixin transform($property: none) { 2 | // none | 3 | @include prefixer(transform, $property, webkit moz ms o spec); 4 | } 5 | 6 | @mixin transform-origin($axes: 50%) { 7 | // x-axis - left | center | right | length | % 8 | // y-axis - top | center | bottom | length | % 9 | // z-axis - length 10 | @include prefixer(transform-origin, $axes, webkit moz ms o spec); 11 | } 12 | 13 | @mixin transform-style ($style: flat) { 14 | @include prefixer(transform-style, $style, webkit moz ms o spec); 15 | } 16 | -------------------------------------------------------------------------------- /docs/_css/bourbon/css3/_user-select.scss: -------------------------------------------------------------------------------- 1 | @mixin user-select($arg: none) { 2 | @include prefixer(user-select, $arg, webkit moz ms spec); 3 | } 4 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_assign.scss: -------------------------------------------------------------------------------- 1 | @function assign-inputs($inputs, $pseudo: null) { 2 | $list : (); 3 | 4 | @each $input in $inputs { 5 | $input: unquote($input); 6 | $input: if($pseudo, $input + ":" + $pseudo, $input); 7 | $list: append($list, $input, comma); 8 | } 9 | 10 | @return $list; 11 | } -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_color-lightness.scss: -------------------------------------------------------------------------------- 1 | // Programatically determines whether a color is light or dark 2 | // Returns a boolean 3 | // More details here http://robots.thoughtbot.com/closer-look-color-lightness 4 | 5 | @function is-light($hex-color) { 6 | $-local-red: red(rgba($hex-color, 1.0)); 7 | $-local-green: green(rgba($hex-color, 1.0)); 8 | $-local-blue: blue(rgba($hex-color, 1.0)); 9 | 10 | $-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255; 11 | 12 | @return $-local-lightness > .6; 13 | } 14 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_golden-ratio.scss: -------------------------------------------------------------------------------- 1 | @function golden-ratio($value, $increment) { 2 | @return modular-scale($value, $increment, $golden) 3 | } 4 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_grid-width.scss: -------------------------------------------------------------------------------- 1 | @function grid-width($n) { 2 | @return $n * $gw-column + ($n - 1) * $gw-gutter; 3 | } 4 | 5 | // The $gw-column and $gw-gutter variables must be defined in your base stylesheet to properly use the grid-width function. 6 | // 7 | // $gw-column: 100px; // Column Width 8 | // $gw-gutter: 40px; // Gutter Width 9 | // 10 | // div { 11 | // width: grid-width(4); // returns 520px; 12 | // margin-left: $gw-gutter; // returns 40px; 13 | // } 14 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_px-to-em.scss: -------------------------------------------------------------------------------- 1 | // Convert pixels to ems 2 | // eg. for a relational value of 12px write em(12) when the parent is 16px 3 | // if the parent is another value say 24px write em(12, 24) 4 | 5 | @function em($pxval, $base: $em-base) { 6 | @if not unitless($pxval) { 7 | $pxval: strip-units($pxval); 8 | } 9 | @if not unitless($base) { 10 | $base: strip-units($base); 11 | } 12 | @return ($pxval / $base) * 1em; 13 | } 14 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_px-to-rem.scss: -------------------------------------------------------------------------------- 1 | // Convert pixels to rems 2 | // eg. for a relational value of 12px write rem(12) 3 | // Assumes $em-base is the font-size of 4 | 5 | @function rem($pxval) { 6 | @if not unitless($pxval) { 7 | $pxval: strip-units($pxval); 8 | } 9 | 10 | $base: $em-base; 11 | @if not unitless($base) { 12 | $base: strip-units($base); 13 | } 14 | @return ($pxval / $base) * 1rem; 15 | } 16 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_strip-units.scss: -------------------------------------------------------------------------------- 1 | // Srtips the units from a value. e.g. 12px -> 12 2 | 3 | @function strip-units($val) { 4 | @return ($val / ($val * 0 + 1)); 5 | } 6 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_tint-shade.scss: -------------------------------------------------------------------------------- 1 | // Add percentage of white to a color 2 | @function tint($color, $percent){ 3 | @return mix(white, $color, $percent); 4 | } 5 | 6 | // Add percentage of black to a color 7 | @function shade($color, $percent){ 8 | @return mix(black, $color, $percent); 9 | } 10 | -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_transition-property-name.scss: -------------------------------------------------------------------------------- 1 | // Return vendor-prefixed property names if appropriate 2 | // Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background 3 | //************************************************************************// 4 | @function transition-property-names($props, $vendor: false) { 5 | $new-props: (); 6 | 7 | @each $prop in $props { 8 | $new-props: append($new-props, transition-property-name($prop, $vendor), comma); 9 | } 10 | 11 | @return $new-props; 12 | } 13 | 14 | @function transition-property-name($prop, $vendor: false) { 15 | // put other properties that need to be prefixed here aswell 16 | @if $vendor and $prop == transform { 17 | @return unquote('-'+$vendor+'-'+$prop); 18 | } 19 | @else { 20 | @return $prop; 21 | } 22 | } -------------------------------------------------------------------------------- /docs/_css/bourbon/functions/_unpack.scss: -------------------------------------------------------------------------------- 1 | // Convert shorthand to the 4-value syntax 2 | 3 | @function unpack($shorthand) { 4 | @if length($shorthand) == 1 { 5 | @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1); 6 | } 7 | @else if length($shorthand) == 2 { 8 | @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2); 9 | } 10 | @else if length($shorthand) == 3 { 11 | @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2); 12 | } 13 | @else { 14 | @return $shorthand; 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_convert-units.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Helper function for str-to-num fn. 3 | // Source: http://sassmeister.com/gist/9647408 4 | //************************************************************************// 5 | @function _convert-units($number, $unit) { 6 | $strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax', 'deg', 'rad', 'grad', 'turn'; 7 | $units: 1px 1cm 1mm 1% 1ch 1pica 1in 1em 1rem 1pt 1pc 1ex 1vw 1vh 1vmin 1vmax, 1deg, 1rad, 1grad, 1turn; 8 | $index: index($strings, $unit); 9 | 10 | @if not $index { 11 | @warn "Unknown unit `#{$unit}`."; 12 | @return false; 13 | } 14 | @return $number * nth($units, $index); 15 | } 16 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_gradient-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _gradient-positions-parser($gradient-type, $gradient-positions) { 2 | @if $gradient-positions 3 | and ($gradient-type == linear) 4 | and (type-of($gradient-positions) != color) { 5 | $gradient-positions: _linear-positions-parser($gradient-positions); 6 | } 7 | @else if $gradient-positions 8 | and ($gradient-type == radial) 9 | and (type-of($gradient-positions) != color) { 10 | $gradient-positions: _radial-positions-parser($gradient-positions); 11 | } 12 | @return $gradient-positions; 13 | } 14 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_is-num.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Helper for linear-gradient-parser 3 | //************************************************************************// 4 | @function _is-num($char) { 5 | $values: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 0 1 2 3 4 5 6 7 8 9; 6 | $index: index($values, $char); 7 | @return if($index, true, false); 8 | } 9 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_linear-angle-parser.scss: -------------------------------------------------------------------------------- 1 | // Private function for linear-gradient-parser 2 | @function _linear-angle-parser($image, $first-val, $prefix, $suffix) { 3 | $offset: null; 4 | $unit-short: str-slice($first-val, str-length($first-val) - 2, str-length($first-val)); 5 | $unit-long: str-slice($first-val, str-length($first-val) - 3, str-length($first-val)); 6 | 7 | @if ($unit-long == "grad") or 8 | ($unit-long == "turn") { 9 | $offset: if($unit-long == "grad", -100grad * 3, -0.75turn); 10 | } 11 | 12 | @else if ($unit-short == "deg") or 13 | ($unit-short == "rad") { 14 | $offset: if($unit-short == "deg", -90 * 3, 1.6rad); 15 | } 16 | 17 | @if $offset { 18 | $num: _str-to-num($first-val); 19 | 20 | @return ( 21 | webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix, 22 | spec-image: $image 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_linear-side-corner-parser.scss: -------------------------------------------------------------------------------- 1 | // Private function for linear-gradient-parser 2 | @function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) { 3 | $val-1: str-slice($first-val, 0, $has-multiple-vals - 1 ); 4 | $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val)); 5 | $val-3: null; 6 | $has-val-3: str-index($val-2, " "); 7 | 8 | @if $has-val-3 { 9 | $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2)); 10 | $val-2: str-slice($val-2, 0, $has-val-3 - 1); 11 | } 12 | 13 | $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3); 14 | $pos: unquote($pos + ""); 15 | 16 | // Use old spec for webkit 17 | @if $val-1 == "to" { 18 | @return ( 19 | webkit-image: -webkit- + $prefix + $pos + $suffix, 20 | spec-image: $image 21 | ); 22 | } 23 | 24 | // Bring the code up to spec 25 | @else { 26 | @return ( 27 | webkit-image: -webkit- + $image, 28 | spec-image: $prefix + "to " + $pos + $suffix 29 | ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_radial-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _radial-positions-parser($gradient-pos) { 2 | $shape-size: nth($gradient-pos, 1); 3 | $pos: nth($gradient-pos, 2); 4 | $shape-size-spec: _shape-size-stripper($shape-size); 5 | 6 | $pre-spec: unquote(if($pos, "#{$pos}, ", null)) 7 | unquote(if($shape-size, "#{$shape-size},", null)); 8 | $pos-spec: if($pos, "at #{$pos}", null); 9 | 10 | $spec: "#{$shape-size-spec} #{$pos-spec}"; 11 | 12 | // Add comma 13 | @if ($spec != ' ') { 14 | $spec: "#{$spec}," 15 | } 16 | 17 | @return $pre-spec $spec; 18 | } 19 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_render-gradients.scss: -------------------------------------------------------------------------------- 1 | // User for linear and radial gradients within background-image or border-image properties 2 | 3 | @function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) { 4 | $pre-spec: null; 5 | $spec: null; 6 | $vendor-gradients: null; 7 | @if $gradient-type == linear { 8 | @if $gradient-positions { 9 | $pre-spec: nth($gradient-positions, 1); 10 | $spec: nth($gradient-positions, 2); 11 | } 12 | } 13 | @else if $gradient-type == radial { 14 | $pre-spec: nth($gradient-positions, 1); 15 | $spec: nth($gradient-positions, 2); 16 | } 17 | 18 | @if $vendor { 19 | $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients); 20 | } 21 | @else if $vendor == false { 22 | $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})"; 23 | $vendor-gradients: unquote($vendor-gradients); 24 | } 25 | @return $vendor-gradients; 26 | } 27 | -------------------------------------------------------------------------------- /docs/_css/bourbon/helpers/_shape-size-stripper.scss: -------------------------------------------------------------------------------- 1 | @function _shape-size-stripper($shape-size) { 2 | $shape-size-spec: null; 3 | @each $value in $shape-size { 4 | @if ($value == "cover") or ($value == "contain") { 5 | $value: null; 6 | } 7 | $shape-size-spec: "#{$shape-size-spec} #{$value}"; 8 | } 9 | @return $shape-size-spec; 10 | } 11 | -------------------------------------------------------------------------------- /docs/_css/bourbon/settings/_asset-pipeline.scss: -------------------------------------------------------------------------------- 1 | $asset-pipeline: false !default; 2 | -------------------------------------------------------------------------------- /docs/_css/bourbon/settings/_prefixer.scss: -------------------------------------------------------------------------------- 1 | // Variable settings for /addons/prefixer.scss 2 | $prefix-for-webkit: true !default; 3 | $prefix-for-mozilla: true !default; 4 | $prefix-for-microsoft: true !default; 5 | $prefix-for-opera: true !default; 6 | $prefix-for-spec: true !default; // required for keyframe mixin 7 | -------------------------------------------------------------------------------- /docs/_css/bourbon/settings/_px-to-em.scss: -------------------------------------------------------------------------------- 1 | $em-base: 16px !default; 2 | -------------------------------------------------------------------------------- /docs/_data/nav_community.yml: -------------------------------------------------------------------------------- 1 | - title: Community Resources 2 | items: 3 | - id: support 4 | title: Where To Get Support 5 | - id: conferences 6 | title: Conferences 7 | - id: videos 8 | title: Videos 9 | - id: complementary-tools 10 | title: Complementary Tools 11 | href: https://github.com/facebook/react/wiki/Complementary-Tools 12 | - id: examples 13 | title: Examples 14 | href: https://github.com/facebook/react/wiki/Examples 15 | -------------------------------------------------------------------------------- /docs/_data/nav_contributing.yml: -------------------------------------------------------------------------------- 1 | - title: Contributing 2 | items: 3 | - id: how-to-contribute 4 | title: How to Contribute 5 | - id: codebase-overview 6 | title: Codebase Overview 7 | - id: implementation-notes 8 | title: Implementation Notes 9 | - id: design-principles 10 | title: Design Principles 11 | -------------------------------------------------------------------------------- /docs/_includes/blog_post.html: -------------------------------------------------------------------------------- 1 | {% assign page = include.page %} 2 | 3 |

4 | {% if include.isPermalink %} 5 | {{ page.title }} 6 | {% else %} 7 | {{ page.title }} 8 | {% endif %} 9 |

10 | 11 |

12 | {{ page.date | date: "%B %e, %Y" }} 13 | by 14 | {% for author in page.authors %} 15 | {% if author.url %} 16 | {{ author.name }} 17 | {% else %} 18 | {{ author.name }} 19 | {% endif %} 20 | {% if forloop.last == false %} and {% endif %} 21 | {% endfor %} 22 |

23 | 24 |
25 | 26 |
27 | {{ include.content }} 28 |
29 | 30 | {% if include.isPermalink %} 31 |
32 | {% endif %} 33 | -------------------------------------------------------------------------------- /docs/_includes/hero.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
React
4 |
5 | A JavaScript library for building user interfaces 6 |
7 | 8 | 12 |
13 |
14 | -------------------------------------------------------------------------------- /docs/_includes/nav_blog.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /docs/_includes/nav_community.html: -------------------------------------------------------------------------------- 1 | 25 | -------------------------------------------------------------------------------- /docs/_includes/nav_tutorial.html: -------------------------------------------------------------------------------- 1 | 25 | -------------------------------------------------------------------------------- /docs/_js/examples/.eslintrc: -------------------------------------------------------------------------------- 1 | --- 2 | rules: 3 | block-scoped-var: 0 4 | no-undef: 0 5 | strict: 0 6 | react/react-in-jsx-scope: 0 7 | react/jsx-no-undef: 0 8 | -------------------------------------------------------------------------------- /docs/_js/examples/hello.js: -------------------------------------------------------------------------------- 1 | var name = Math.random() > 0.5 ? 'Jane' : 'John'; 2 | var HELLO_COMPONENT = ` 3 | class HelloMessage extends React.Component { 4 | render() { 5 | return
Hello {this.props.name}
; 6 | } 7 | } 8 | 9 | ReactDOM.render(, mountNode); 10 | `.trim(); 11 | 12 | ReactDOM.render( 13 | , 14 | document.getElementById('helloExample') 15 | ); 16 | -------------------------------------------------------------------------------- /docs/_js/examples/markdown.js: -------------------------------------------------------------------------------- 1 | var MARKDOWN_COMPONENT = ` 2 | class MarkdownEditor extends React.Component { 3 | constructor(props) { 4 | super(props); 5 | this.handleChange = this.handleChange.bind(this); 6 | this.state = {value: 'Type some *markdown* here!'}; 7 | } 8 | 9 | handleChange() { 10 | this.setState({value: this.refs.textarea.value}); 11 | } 12 | 13 | getRawMarkup() { 14 | var md = new Remarkable(); 15 | return { __html: md.render(this.state.value) }; 16 | } 17 | 18 | render() { 19 | return ( 20 |
21 |

Input

22 |