├── .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 ├── 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_contributing.yml │ ├── nav_docs.yml │ └── nav_tips.yml ├── _includes │ ├── blog_post.html │ ├── nav_blog.html │ └── nav_docs.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 │ ├── contributing.html │ ├── default.html │ ├── docs.html │ ├── page.html │ ├── post.html │ ├── redirect.html │ ├── single.html │ └── tips.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 ├── acknowledgements.md ├── blog │ ├── all.html │ └── index.html ├── contributing │ ├── codebase-overview.md │ ├── design-principles.md │ └── how-to-contribute.md ├── css │ ├── codemirror.css │ ├── main.css │ ├── react.scss │ └── syntax.css ├── docs │ ├── 01-why-react.de-DE.md │ ├── 01-why-react.it-IT.md │ ├── 01-why-react.ja-JP.md │ ├── 01-why-react.ko-KR.md │ ├── 01-why-react.md │ ├── 01-why-react.ru-RU.md │ ├── 01-why-react.zh-CN.md │ ├── 01-why-react.zh-TW.md │ ├── 02-displaying-data.it-IT.md │ ├── 02-displaying-data.ja-JP.md │ ├── 02-displaying-data.ko-KR.md │ ├── 02-displaying-data.md │ ├── 02-displaying-data.ru-RU.md │ ├── 02-displaying-data.zh-CN.md │ ├── 02-displaying-data.zh-TW.md │ ├── 02.1-jsx-in-depth.it-IT.md │ ├── 02.1-jsx-in-depth.ja-JP.md │ ├── 02.1-jsx-in-depth.ko-KR.md │ ├── 02.1-jsx-in-depth.md │ ├── 02.1-jsx-in-depth.zh-CN.md │ ├── 02.2-jsx-spread.it-IT.md │ ├── 02.2-jsx-spread.ja-JP.md │ ├── 02.2-jsx-spread.ko-KR.md │ ├── 02.2-jsx-spread.md │ ├── 02.2-jsx-spread.zh-CN.md │ ├── 02.3-jsx-gotchas.it-IT.md │ ├── 02.3-jsx-gotchas.ja-JP.md │ ├── 02.3-jsx-gotchas.ko-KR.md │ ├── 02.3-jsx-gotchas.md │ ├── 02.3-jsx-gotchas.zh-CN.md │ ├── 03-interactivity-and-dynamic-uis.it-IT.md │ ├── 03-interactivity-and-dynamic-uis.ja-JP.md │ ├── 03-interactivity-and-dynamic-uis.ko-KR.md │ ├── 03-interactivity-and-dynamic-uis.md │ ├── 03-interactivity-and-dynamic-uis.ru-RU.md │ ├── 03-interactivity-and-dynamic-uis.zh-CN.md │ ├── 04-multiple-components.it-IT.md │ ├── 04-multiple-components.ja-JP.md │ ├── 04-multiple-components.ko-KR.md │ ├── 04-multiple-components.md │ ├── 04-multiple-components.zh-CN.md │ ├── 05-reusable-components.it-IT.md │ ├── 05-reusable-components.ja-JP.md │ ├── 05-reusable-components.ko-KR.md │ ├── 05-reusable-components.md │ ├── 05-reusable-components.zh-CN.md │ ├── 06-transferring-props.it-IT.md │ ├── 06-transferring-props.ja-JP.md │ ├── 06-transferring-props.ko-KR.md │ ├── 06-transferring-props.md │ ├── 06-transferring-props.zh-CN.md │ ├── 07-forms.it-IT.md │ ├── 07-forms.ja-JP.md │ ├── 07-forms.ko-KR.md │ ├── 07-forms.md │ ├── 07-forms.zh-CN.md │ ├── 08-working-with-the-browser.it-IT.md │ ├── 08-working-with-the-browser.ja-JP.md │ ├── 08-working-with-the-browser.ko-KR.md │ ├── 08-working-with-the-browser.md │ ├── 08-working-with-the-browser.zh-CN.md │ ├── 08.1-more-about-refs.it-IT.md │ ├── 08.1-more-about-refs.ja-JP.md │ ├── 08.1-more-about-refs.ko-KR.md │ ├── 08.1-more-about-refs.md │ ├── 08.1-more-about-refs.zh-CN.md │ ├── 09-tooling-integration.it-IT.md │ ├── 09-tooling-integration.ja-JP.md │ ├── 09-tooling-integration.ko-KR.md │ ├── 09-tooling-integration.md │ ├── 09-tooling-integration.zh-CN.md │ ├── 09.1-language-tooling.md │ ├── 09.2-package-management.md │ ├── 09.3-environments.md │ ├── 10-addons.it-IT.md │ ├── 10-addons.ja-JP.md │ ├── 10-addons.ko-KR.md │ ├── 10-addons.md │ ├── 10-addons.zh-CN.md │ ├── 10.1-animation.it-IT.md │ ├── 10.1-animation.ja-JP.md │ ├── 10.1-animation.ko-KR.md │ ├── 10.1-animation.md │ ├── 10.1-animation.zh-CN.md │ ├── 10.10-shallow-compare.md │ ├── 10.10-shallow-compare.zh-CN.md │ ├── 10.2-form-input-binding-sugar.it-IT.md │ ├── 10.2-form-input-binding-sugar.ja-JP.md │ ├── 10.2-form-input-binding-sugar.ko-KR.md │ ├── 10.2-form-input-binding-sugar.md │ ├── 10.2-form-input-binding-sugar.zh-CN.md │ ├── 10.3-class-name-manipulation.it-IT.md │ ├── 10.3-class-name-manipulation.ja-JP.md │ ├── 10.3-class-name-manipulation.ko-KR.md │ ├── 10.3-class-name-manipulation.md │ ├── 10.3-class-name-manipulation.zh-CN.md │ ├── 10.4-test-utils.it-IT.md │ ├── 10.4-test-utils.ja-JP.md │ ├── 10.4-test-utils.ko-KR.md │ ├── 10.4-test-utils.md │ ├── 10.4-test-utils.zh-CN.md │ ├── 10.5-clone-with-props.it-IT.md │ ├── 10.5-clone-with-props.ja-JP.md │ ├── 10.5-clone-with-props.ko-KR.md │ ├── 10.5-clone-with-props.md │ ├── 10.5-clone-with-props.zh-CN.md │ ├── 10.6-create-fragment.it-IT.md │ ├── 10.6-create-fragment.ja-JP.md │ ├── 10.6-create-fragment.ko-KR.md │ ├── 10.6-create-fragment.md │ ├── 10.6-create-fragment.zh-CN.md │ ├── 10.7-update.it-IT.md │ ├── 10.7-update.ja-JP.md │ ├── 10.7-update.ko-KR.md │ ├── 10.7-update.md │ ├── 10.7-update.zh-CN.md │ ├── 10.8-pure-render-mixin.it-IT.md │ ├── 10.8-pure-render-mixin.ja-JP.md │ ├── 10.8-pure-render-mixin.ko-KR.md │ ├── 10.8-pure-render-mixin.md │ ├── 10.8-pure-render-mixin.zh-CN.md │ ├── 10.9-perf.it-IT.md │ ├── 10.9-perf.ja-JP.md │ ├── 10.9-perf.ko-KR.md │ ├── 10.9-perf.md │ ├── 10.9-perf.zh-CN.md │ ├── 11-advanced-performance.it-IT.md │ ├── 11-advanced-performance.ja-JP.md │ ├── 11-advanced-performance.ko-KR.md │ ├── 11-advanced-performance.md │ ├── 11-advanced-performance.zh-CN.md │ ├── 12-context.ko-KR.md │ ├── 12-context.md │ ├── 12-context.zh-CN.md │ ├── 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 │ ├── error-decoder.md │ ├── examples.it-IT.md │ ├── examples.ko-KR.md │ ├── examples.md │ ├── examples.zh-CN.md │ ├── flux-overview.it-IT.md │ ├── flux-overview.ko-KR.md │ ├── flux-overview.md │ ├── flux-overview.zh-CN.md │ ├── flux-todo-list.it-IT.md │ ├── flux-todo-list.ko-KR.md │ ├── flux-todo-list.md │ ├── flux-todo-list.zh-CN.md │ ├── getting-started.it-IT.md │ ├── getting-started.ja-JP.md │ ├── getting-started.ko-KR.md │ ├── getting-started.md │ ├── getting-started.zh-CN.md │ ├── ref-01-top-level-api.it-IT.md │ ├── ref-01-top-level-api.ja-JP.md │ ├── ref-01-top-level-api.ko-KR.md │ ├── ref-01-top-level-api.md │ ├── ref-01-top-level-api.zh-CN.md │ ├── ref-02-component-api.it-IT.md │ ├── ref-02-component-api.ko-KR.md │ ├── ref-02-component-api.md │ ├── ref-02-component-api.zh-CN.md │ ├── ref-03-component-specs.it-IT.md │ ├── ref-03-component-specs.ko-KR.md │ ├── ref-03-component-specs.md │ ├── ref-03-component-specs.zh-CN.md │ ├── ref-04-tags-and-attributes.it-IT.md │ ├── ref-04-tags-and-attributes.ko-KR.md │ ├── ref-04-tags-and-attributes.md │ ├── ref-04-tags-and-attributes.zh-CN.md │ ├── ref-05-events.it-IT.md │ ├── ref-05-events.ko-KR.md │ ├── ref-05-events.md │ ├── ref-05-events.zh-CN.md │ ├── ref-06-dom-differences.it-IT.md │ ├── ref-06-dom-differences.ko-KR.md │ ├── ref-06-dom-differences.md │ ├── ref-06-dom-differences.zh-CN.md │ ├── ref-07-special-non-dom-attributes.it-IT.md │ ├── ref-07-special-non-dom-attributes.ko-KR.md │ ├── ref-07-special-non-dom-attributes.md │ ├── ref-07-special-non-dom-attributes.zh-CN.md │ ├── ref-08-reconciliation.it-IT.md │ ├── ref-08-reconciliation.ko-KR.md │ ├── ref-08-reconciliation.md │ ├── ref-09-webcomponents.md │ ├── ref-09-webcomponents.zh-CN.md │ ├── ref-10-glossary.it-IT.md │ ├── ref-10-glossary.ko-KR.md │ ├── ref-10-glossary.md │ ├── ref-10-glossary.zh-CN.md │ ├── thinking-in-react.it-IT.md │ ├── thinking-in-react.ja-JP.md │ ├── thinking-in-react.ko-KR.md │ ├── thinking-in-react.md │ ├── thinking-in-react.zh-CN.md │ ├── tutorial.it-IT.md │ ├── tutorial.ja-JP.md │ ├── tutorial.ko-KR.md │ ├── tutorial.md │ ├── tutorial.zh-CN.md │ ├── videos.it-IT.md │ ├── videos.ko-KR.md │ ├── videos.md │ └── videos.zh-CN.md ├── downloads.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 ├── 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-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 │ │ ├── javascript-jabber.png │ │ ├── perf-dom.png │ │ ├── perf-exclusive.png │ │ ├── perf-inclusive.png │ │ ├── perf-wasted.png │ │ ├── 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 │ ├── noise.png │ └── search.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 ├── support.md ├── tips │ ├── 01-introduction.ja-JP.md │ ├── 01-introduction.ko-KR.md │ ├── 01-introduction.md │ ├── 01-introduction.ru-RU.md │ ├── 02-inline-styles.ko-KR.md │ ├── 02-inline-styles.md │ ├── 02-inline-styles.ru-RU.md │ ├── 03-if-else-in-JSX.ko-KR.md │ ├── 03-if-else-in-JSX.md │ ├── 03-if-else-in-JSX.ru-RU.md │ ├── 04-self-closing-tag.ja-JP.md │ ├── 04-self-closing-tag.ko-KR.md │ ├── 04-self-closing-tag.md │ ├── 04-self-closing-tag.ru-RU.md │ ├── 05-maximum-number-of-jsx-root-nodes.ko-KR.md │ ├── 05-maximum-number-of-jsx-root-nodes.md │ ├── 05-maximum-number-of-jsx-root-nodes.ru-RU.md │ ├── 06-style-props-value-px.ko-KR.md │ ├── 06-style-props-value-px.md │ ├── 06-style-props-value-px.ru-RU.md │ ├── 07-children-props-type.ko-KR.md │ ├── 07-children-props-type.md │ ├── 08-controlled-input-null-value.ko-KR.md │ ├── 08-controlled-input-null-value.md │ ├── 09-componentWillReceiveProps-not-triggered-after-mounting.ko-KR.md │ ├── 09-componentWillReceiveProps-not-triggered-after-mounting.md │ ├── 10-props-in-getInitialState-as-anti-pattern.ko-KR.md │ ├── 10-props-in-getInitialState-as-anti-pattern.md │ ├── 11-dom-event-listeners.ko-KR.md │ ├── 11-dom-event-listeners.md │ ├── 12-initial-ajax.ko-KR.md │ ├── 12-initial-ajax.md │ ├── 13-false-in-jsx.ko-KR.md │ ├── 13-false-in-jsx.md │ ├── 14-communicate-between-components.ko-KR.md │ ├── 14-communicate-between-components.md │ ├── 15-expose-component-functions.ko-KR.md │ ├── 15-expose-component-functions.md │ ├── 15-expose-component-functions.zh-CN.md │ ├── 16-references-to-components.ko-KR.md │ ├── 16-references-to-components.md │ ├── 17-children-undefined.ko-KR.md │ ├── 17-children-undefined.md │ ├── 18-use-react-with-other-libraries.ko-KR.md │ ├── 18-use-react-with-other-libraries.md │ ├── 19-dangerously-set-inner-html.ko-KR.md │ └── 19-dangerously-set-inner-html.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 │ └── 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-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-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 ├── error-codes │ ├── 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 ├── 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 │ │ ├── LinkedStateMixin.js │ │ ├── ReactLink.js │ │ ├── ReactStateSetters.js │ │ └── __tests__ │ │ │ ├── LinkedStateMixin-test.js │ │ │ └── ReactLinkPropTypes-test.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 │ ├── hooks │ │ ├── ReactComponentTreeDevtool.js │ │ └── 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 │ │ └── __tests__ │ │ │ └── ReactART-test.js │ ├── dom │ │ ├── ReactDOM.js │ │ ├── ReactDOMServer.js │ │ ├── __mocks__ │ │ │ └── ReactDOM.js │ │ ├── __tests__ │ │ │ └── ReactDOMProduction-test.js │ │ ├── client │ │ │ ├── ReactBrowserEventEmitter.js │ │ │ ├── ReactDOMComponentTree.js │ │ │ ├── ReactDOMIDOperations.js │ │ │ ├── ReactDOMSelection.js │ │ │ ├── ReactDOMTreeTraversal.js │ │ │ ├── ReactEventListener.js │ │ │ ├── ReactInputSelection.js │ │ │ ├── ReactMount.js │ │ │ ├── ReactReconcileTransaction.js │ │ │ ├── __tests__ │ │ │ │ ├── ReactBrowserEventEmitter-test.js │ │ │ │ ├── ReactDOM-test.js │ │ │ │ ├── ReactDOMComponentTree-test.js │ │ │ │ ├── ReactDOMIDOperations-test.js │ │ │ │ ├── ReactDOMSVG-test.js │ │ │ │ ├── ReactDOMTreeTraversal-test.js │ │ │ │ ├── ReactEventIndependence-test.js │ │ │ │ ├── ReactEventListener-test.js │ │ │ │ ├── ReactMount-test.js │ │ │ │ ├── ReactMountDestruction-test.js │ │ │ │ ├── ReactRenderDocument-test.js │ │ │ │ ├── findDOMNode-test.js │ │ │ │ ├── inputValueTracking-test.js │ │ │ │ └── validateDOMNesting-test.js │ │ │ ├── eventPlugins │ │ │ │ ├── BeforeInputEventPlugin.js │ │ │ │ ├── ChangeEventPlugin.js │ │ │ │ ├── DefaultEventPluginOrder.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 │ │ │ ├── inputValueTracking.js │ │ │ ├── renderSubtreeIntoContainer.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 │ │ │ │ ├── DOMChildrenOperations.js │ │ │ │ ├── DOMLazyTree.js │ │ │ │ ├── ViewportMetrics.js │ │ │ │ ├── __tests__ │ │ │ │ │ ├── getEventCharCode-test.js │ │ │ │ │ ├── getEventKey-test.js │ │ │ │ │ ├── getNodeForCharacterOffset-test.js │ │ │ │ │ └── setInnerHTML-test.js │ │ │ │ ├── createMicrosoftUnsafeLocalFunction.js │ │ │ │ ├── getEventCharCode.js │ │ │ │ ├── getEventKey.js │ │ │ │ ├── getEventModifierState.js │ │ │ │ ├── getEventTarget.js │ │ │ │ ├── getNodeForCharacterOffset.js │ │ │ │ ├── getTextContentAccessor.js │ │ │ │ ├── getVendorPrefixedEventName.js │ │ │ │ ├── isEventSupported.js │ │ │ │ ├── setInnerHTML.js │ │ │ │ └── setTextContent.js │ │ │ ├── validateDOMNesting.js │ │ │ └── wrappers │ │ │ │ ├── AutoFocusUtils.js │ │ │ │ ├── LinkedValueUtils.js │ │ │ │ ├── ReactDOMInput.js │ │ │ │ ├── ReactDOMOption.js │ │ │ │ ├── ReactDOMSelect.js │ │ │ │ ├── ReactDOMTextarea.js │ │ │ │ └── __tests__ │ │ │ │ ├── ReactDOMIframe-test.js │ │ │ │ ├── ReactDOMInput-test.js │ │ │ │ ├── ReactDOMOption-test.js │ │ │ │ ├── ReactDOMSelect-test.js │ │ │ │ └── ReactDOMTextarea-test.js │ │ ├── fiber │ │ │ └── ReactDOMFiber.js │ │ ├── server │ │ │ ├── ReactMarkupChecksum.js │ │ │ ├── ReactServerBatchingStrategy.js │ │ │ ├── ReactServerRendering.js │ │ │ ├── ReactServerRenderingTransaction.js │ │ │ ├── ReactServerUpdateQueue.js │ │ │ └── __tests__ │ │ │ │ └── ReactServerRendering-test.js │ │ └── shared │ │ │ ├── ARIADOMPropertyConfig.js │ │ │ ├── CSSProperty.js │ │ │ ├── CSSPropertyOperations.js │ │ │ ├── DOMNamespaces.js │ │ │ ├── DOMProperty.js │ │ │ ├── DOMPropertyOperations.js │ │ │ ├── Danger.js │ │ │ ├── HTMLDOMPropertyConfig.js │ │ │ ├── ReactComponentBrowserEnvironment.js │ │ │ ├── ReactDOMComponent.js │ │ │ ├── ReactDOMComponentFlags.js │ │ │ ├── ReactDOMContainerInfo.js │ │ │ ├── ReactDOMEmptyComponent.js │ │ │ ├── ReactDOMFeatureFlags.js │ │ │ ├── ReactDOMTextComponent.js │ │ │ ├── ReactDefaultInjection.js │ │ │ ├── ReactInjection.js │ │ │ ├── SVGDOMPropertyConfig.js │ │ │ ├── __tests__ │ │ │ ├── CSSProperty-test.js │ │ │ ├── CSSPropertyOperations-test.js │ │ │ ├── DOMPropertyOperations-test.js │ │ │ ├── ReactDOMComponent-test.js │ │ │ ├── ReactDOMInvalidARIAHook-test.js │ │ │ ├── ReactDOMTextComponent-test.js │ │ │ ├── escapeTextContentForBrowser-test.js │ │ │ └── quoteAttributeValueForBrowser-test.js │ │ │ ├── dangerousStyleValue.js │ │ │ ├── escapeTextContentForBrowser.js │ │ │ ├── hooks │ │ │ ├── ReactDOMInvalidARIAHook.js │ │ │ ├── ReactDOMNullInputValuePropHook.js │ │ │ └── ReactDOMUnknownPropertyHook.js │ │ │ └── quoteAttributeValueForBrowser.js │ ├── native │ │ ├── NativeMethodsMixin.js │ │ ├── ReactNative.js │ │ ├── ReactNativeAttributePayload.js │ │ ├── ReactNativeBaseComponent.js │ │ ├── ReactNativeBridgeEventPlugin.js │ │ ├── ReactNativeComponentEnvironment.js │ │ ├── ReactNativeComponentTree.js │ │ ├── ReactNativeContainerInfo.js │ │ ├── ReactNativeDOMIDOperations.js │ │ ├── ReactNativeDefaultInjection.js │ │ ├── ReactNativeEventEmitter.js │ │ ├── ReactNativeEventPluginOrder.js │ │ ├── ReactNativeGlobalResponderHandler.js │ │ ├── ReactNativeMount.js │ │ ├── ReactNativePropRegistry.js │ │ ├── ReactNativeReconcileTransaction.js │ │ ├── ReactNativeTagHandles.js │ │ ├── ReactNativeTextComponent.js │ │ ├── ReactNativeTreeTraversal.js │ │ ├── __mocks__ │ │ │ ├── InitializeJavaScriptAppEngine.js │ │ │ ├── RCTEventEmitter.js │ │ │ ├── TextInputState.js │ │ │ ├── UIManager.js │ │ │ ├── View.js │ │ │ ├── deepDiffer.js │ │ │ ├── deepFreezeAndThrowOnMutationInDev.js │ │ │ └── flattenStyle.js │ │ ├── __tests__ │ │ │ ├── ReactNativeAttributePayload-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 │ │ │ ├── ReactFiberCommitWork.js │ │ │ ├── ReactFiberCompleteWork.js │ │ │ ├── ReactFiberReconciler.js │ │ │ ├── ReactFiberRoot.js │ │ │ ├── ReactFiberScheduler.js │ │ │ ├── ReactFiberUpdateQueue.js │ │ │ ├── ReactPriorityLevel.js │ │ │ ├── ReactReifiedYield.js │ │ │ ├── ReactTypeOfWork.js │ │ │ ├── __tests__ │ │ │ │ ├── ReactCoroutine-test.js │ │ │ │ ├── ReactIncremental-test.js │ │ │ │ └── ReactIncrementalSideEffects-test.js │ │ │ └── isomorphic │ │ │ │ ├── ReactCoroutine.js │ │ │ │ └── ReactTypes.js │ │ ├── hooks │ │ │ ├── ReactHostOperationHistoryHook.js │ │ │ ├── ReactInvalidSetStateWarningHook.js │ │ │ └── __tests__ │ │ │ │ ├── ReactComponentTreeHook-test.js │ │ │ │ ├── ReactComponentTreeHook-test.native.js │ │ │ │ └── ReactHostOperationHistoryHook-test.js │ │ ├── shared │ │ │ ├── ReactInstanceMap.js │ │ │ └── shouldUpdateReactComponent.js │ │ ├── stack │ │ │ ├── event │ │ │ │ ├── EventConstants.js │ │ │ │ ├── EventPluginHub.js │ │ │ │ ├── EventPluginRegistry.js │ │ │ │ ├── EventPluginUtils.js │ │ │ │ ├── EventPropagators.js │ │ │ │ ├── PluginModuleType.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 │ │ │ └── reconciler │ │ │ │ ├── ReactChildReconciler.js │ │ │ │ ├── ReactComponentEnvironment.js │ │ │ │ ├── ReactCompositeComponent.js │ │ │ │ ├── ReactDefaultBatchingStrategy.js │ │ │ │ ├── ReactEmptyComponent.js │ │ │ │ ├── ReactEventEmitterMixin.js │ │ │ │ ├── ReactHostComponent.js │ │ │ │ ├── ReactInstanceType.js │ │ │ │ ├── ReactMultiChild.js │ │ │ │ ├── ReactMultiChildUpdateTypes.js │ │ │ │ ├── ReactNodeTypes.js │ │ │ │ ├── ReactOwner.js │ │ │ │ ├── ReactReconciler.js │ │ │ │ ├── ReactRef.js │ │ │ │ ├── ReactSimpleEmptyComponent.js │ │ │ │ ├── ReactUpdateQueue.js │ │ │ │ ├── ReactUpdates.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 │ │ │ │ ├── ReactUpdates-test.js │ │ │ │ ├── refs-destruction-test.js │ │ │ │ └── refs-test.js │ │ │ │ ├── getHostComponentFromComposite.js │ │ │ │ └── instantiateReactComponent.js │ │ └── utils │ │ │ ├── CallbackQueue.js │ │ │ ├── ReactErrorUtils.js │ │ │ ├── ReactFeatureFlags.js │ │ │ ├── Transaction.js │ │ │ ├── __tests__ │ │ │ ├── Transaction-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 │ │ ├── ReactPropTypesSecret.js │ │ └── checkReactTypeSpec.js │ ├── utils │ │ ├── KeyEscapeUtils.js │ │ ├── PooledClass.js │ │ ├── ReactElementSymbol.js │ │ ├── __tests__ │ │ │ ├── KeyEscapeUtils-test.js │ │ │ ├── PooledClass-test.js │ │ │ ├── reactProdInvariant-test.js │ │ │ └── traverseAllChildren-test.js │ │ ├── canDefineProperty.js │ │ ├── deprecated.js │ │ ├── flattenChildren.js │ │ ├── getIteratorFn.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 /.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 | 12 | [include] 13 | 14 | [libs] 15 | ./node_modules/fbjs/flow/lib 16 | ./flow 17 | 18 | [options] 19 | module.system=haste 20 | 21 | esproposal.class_static_fields=enable 22 | esproposal.class_instance_fields=enable 23 | 24 | munge_underscores=false 25 | 26 | suppress_type=$FlowIssue 27 | suppress_type=$FlowFixMe 28 | suppress_type=$FixMe 29 | suppress_type=$FlowExpectedError 30 | 31 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-1]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\) 32 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-1]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\)?:? #[0-9]+ 33 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 34 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 35 | 36 | [version] 37 | ^0.31.0 38 | -------------------------------------------------------------------------------- /.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 (`grunt test`). 7 | 5. Make sure your code lints (`grunt 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 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_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: design-principles 8 | title: Design Principles 9 | -------------------------------------------------------------------------------- /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/nav_blog.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /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/timer.js: -------------------------------------------------------------------------------- 1 | var TIMER_COMPONENT = ` 2 | class Timer extends React.Component { 3 | constructor(props) { 4 | super(props); 5 | this.state = {secondsElapsed: 0}; 6 | } 7 | 8 | tick() { 9 | this.setState((prevState) => ({ 10 | secondsElapsed: prevState.secondsElapsed + 1 11 | })); 12 | } 13 | 14 | componentDidMount() { 15 | this.interval = setInterval(() => this.tick(), 1000); 16 | } 17 | 18 | componentWillUnmount() { 19 | clearInterval(this.interval); 20 | } 21 | 22 | render() { 23 | return ( 24 |
Seconds Elapsed: {this.state.secondsElapsed}
25 | ); 26 | } 27 | } 28 | 29 | ReactDOM.render(, mountNode); 30 | `.trim(); 31 | 32 | ReactDOM.render( 33 | , 34 | document.getElementById('timerExample') 35 | ); 36 | -------------------------------------------------------------------------------- /docs/_js/html-jsx-lib.js: -------------------------------------------------------------------------------- 1 | // Ideally it would be nice to just redirect, but Github Pages is very basic and 2 | // lacks that functionality. 3 | console.warn( 4 | 'html-jsx-lib.js has moved to http://reactjs.github.io/react-magic/' + 5 | 'htmltojsx.min.js. If using React-Magic, you are no longer required to ' + 6 | 'link to this file. Please delete its 9 | -------------------------------------------------------------------------------- /docs/_layouts/single.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 |

{{ page.title }}

8 |
{{ page.description }}
9 | {{ content }} 10 | 11 | {% if page.prev or page.next %} 12 |
13 | {% if page.prev %} 14 | ← Prev 15 | {% endif %} 16 | {% if page.next %} 17 | Next → 18 | {% endif %} 19 |
20 | {% endif %} 21 |
22 |
23 | -------------------------------------------------------------------------------- /docs/_layouts/tips.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | sectionid: tips 4 | --- 5 | 6 |
7 | {% include nav_docs.html %} 8 | 9 |
10 |

{{ page.title }}

11 |
{{ page.description }}
12 | {{ content }} 13 | 14 |
15 | {% if page.prev %} 16 | ← Prev 17 | {% endif %} 18 | {% if page.next %} 19 | Next → 20 | {% endif %} 21 |
22 |
23 |
24 | -------------------------------------------------------------------------------- /docs/_plugins/authors.rb: -------------------------------------------------------------------------------- 1 | # This transforms the data associated with each post, specifically the author. 2 | # We store our author information in a yaml file and specify the keys in The 3 | # post front matter. Instead of looking up the complete data each time we need 4 | # it, we'll just look it up here and assign. This plays nicely with tools like 5 | # jekyll-feed which expect post.author to be in a specific format. 6 | module Authors 7 | class Generator < Jekyll::Generator 8 | def generate(site) 9 | site.posts.docs.each do |post| 10 | authors = [] 11 | if post['author'].kind_of?(Array) 12 | for author in post['author'] 13 | authors.push(site.data['authors'][author]) 14 | end 15 | else 16 | authors.push(site.data['authors'][post['author']]) 17 | end 18 | post.data['authors'] = authors 19 | end 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /docs/_plugins/header_links.rb: -------------------------------------------------------------------------------- 1 | require 'redcarpet' 2 | require 'sanitize' 3 | 4 | # Simple converter that is probably better than RedCarpet's built in TOC id 5 | # generator (which ends up with things like id="toc_1"... terrible). 6 | 7 | class Redcarpet::Render::HTML 8 | def header(title, level) 9 | # \p{Common} does not seem to include some of the Japanese alphabets and also includes 10 | # some undesired characters like colon and parentheses, so we have to write out the 11 | # necessary Unicode scripts individually. 12 | clean_title = Sanitize.clean(title) 13 | .downcase 14 | .gsub(/\s+/, "-") 15 | .gsub(/[^A-Za-z0-9\-_.\p{Cyrillic}\p{Hangul}\p{Hiragana}\p{Katakana}\p{Han}]/, "") 16 | 17 | return "#{title} #" 18 | end 19 | end 20 | 21 | -------------------------------------------------------------------------------- /docs/_plugins/sidebar_item.rb: -------------------------------------------------------------------------------- 1 | module Jekyll 2 | module SidebarItemFilter 3 | def sidebar_item_link(item) 4 | pageID = @context.registers[:page]["id"] 5 | itemID = item["id"] 6 | href = item["href"] || "/react/docs/#{itemID}.html" 7 | classes = [] 8 | if pageID == itemID 9 | classes.push("active") 10 | end 11 | if item["href"] 12 | classes.push("external") 13 | end 14 | className = classes.size > 0 ? " class=\"#{classes.join(' ')}\"" : "" 15 | 16 | return "#{item["title"]}" 17 | end 18 | end 19 | end 20 | 21 | Liquid::Template.register_filter(Jekyll::SidebarItemFilter) 22 | -------------------------------------------------------------------------------- /docs/_posts/2013-06-02-jsfiddle-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: JSFiddle Integration 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. 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/_posts/2013-06-21-react-v0-3-3.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "React v0.3.3" 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. 7 | 8 | 9 | ## react-tools 10 | 11 | * Upgrade Commoner so `require` statements are no longer relativized when passing through the transformer. This was a feature needed when building React, but doesn't translate well for other consumers of `bin/jsx`. 12 | * Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache. 13 | * Freeze our esprima dependency. 14 | 15 | 16 | ## React 17 | 18 | * Allow reusing the same DOM node to render different components. e.g. `React.renderComponent(
, domNode); React.renderComponent(, domNode);` will work now. 19 | 20 | 21 | ## JSXTransformer 22 | 23 | * Improved the in-browser transformer so that transformed scripts will execute in the expected scope. The allows components to be defined and used from separate files. 24 | -------------------------------------------------------------------------------- /docs/_posts/2013-07-26-react-v0-4-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "React v0.4.1" 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. 7 | 8 | 9 | ## React 10 | 11 | * `setState` callbacks are now executed in the scope of your component. 12 | * `click` events now work on Mobile Safari. 13 | * Prevent a potential error in event handling if `Object.prototype` is extended. 14 | * Don't set DOM attributes to the string `"undefined"` on update when previously defined. 15 | * Improved support for ` 15 | 16 | ### ReactEurope 2015 17 | 2 e 3 Luglio 18 | 19 | [Sito web](http://www.react-europe.org/) - [Agenda](http://www.react-europe.org/#schedule) 20 | -------------------------------------------------------------------------------- /docs/docs/conferences.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: conferences-ko-KR 3 | title: 컨퍼런스들 4 | permalink: docs/conferences-ko-KR.html 5 | prev: thinking-in-react-ko-KR.html 6 | next: videos-ko-KR.html 7 | --- 8 | 9 | ### React.js Conf 2015 10 | 1월 28일 & 29일 11 | 12 | [웹사이트](http://conf.reactjs.com/) - [스케줄](http://conf.reactjs.com/schedule.html) - [비디오들](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) 13 | 14 | 15 | 16 | ### ReactEurope 2015 17 | 7월 2일 & 3일 18 | 19 | [웹사이트](http://www.react-europe.org/) - [스케줄](http://www.react-europe.org/#schedule) 20 | -------------------------------------------------------------------------------- /docs/docs/conferences.zh-CN.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: conferences-zh-CN 3 | title: 会议 4 | permalink: docs/conferences-zh-CN.html 5 | prev: thinking-in-react-zh-CN.html 6 | next: videos-zh-CN.html 7 | --- 8 | 9 | ### React.js Conf 2015 10 | 一月 28 & 29 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 | 15 | 16 | ### ReactEurope 2015 17 | 七月 2 & 3 18 | 19 | [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) 20 | 21 | ### Reactive 2015 22 | 十一月 2-4 23 | 24 | [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule) 25 | 26 | ### ReactEurope 2016 27 | 六月 2 & 3 28 | 29 | [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) 30 | -------------------------------------------------------------------------------- /docs/docs/error-decoder.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: error-decoder 3 | title: Error Decoder 4 | permalink: docs/error-decoder.html 5 | --- 6 | 7 | In the minified production build of React, we avoid sending down full error messages in order to reduce the number of bytes sent over the wire. 8 | 9 | We highly recommend using the development build locally when debugging your app since it tracks additional debug info and provides helpful warnings about potential problems in your apps, but if you encounter an exception while using the production build, this page will reassemble the original text of the error. 10 | 11 | 12 |
13 | 14 | -------------------------------------------------------------------------------- /docs/docs/examples.it-IT.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: docs/examples-it-IT.html 3 | layout: redirect 4 | dest_url: https://github.com/facebook/react/wiki/Examples 5 | --- 6 | -------------------------------------------------------------------------------- /docs/docs/examples.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: docs/examples-ko-KR.html 3 | layout: redirect 4 | dest_url: https://github.com/facebook/react/wiki/Examples 5 | --- 6 | -------------------------------------------------------------------------------- /docs/docs/examples.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: docs/examples.html 3 | layout: redirect 4 | dest_url: https://github.com/facebook/react/wiki/Examples 5 | --- 6 | -------------------------------------------------------------------------------- /docs/docs/examples.zh-CN.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: docs/examples-zh-CN.html 3 | layout: redirect 4 | dest_url: https://github.com/facebook/react/wiki/Examples 5 | --- 6 | -------------------------------------------------------------------------------- /docs/docs/flux-overview.it-IT.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-overview-it-IT 3 | title: Architettura di un'Applicazione Flux 4 | permalink: docs/flux-overview-it-IT.html 5 | --- 6 | 7 | Questa pagina è stata spostata sul sito di Flux. [Leggila qui](https://facebook.github.io/flux/docs/overview.html). 8 | -------------------------------------------------------------------------------- /docs/docs/flux-overview.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-overview-ko-KR 3 | title: Flux 애플리케이션 아키텍쳐 4 | permalink: docs/flux-overview-ko-KR.html 5 | --- 6 | 7 | 이 페이지는 Flux 웹사이트로 이동되었습니다. [거기서 보세요](https://facebook.github.io/flux/docs/overview.html). 8 | -------------------------------------------------------------------------------- /docs/docs/flux-overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-overview 3 | title: Flux Application Architecture 4 | permalink: docs/flux-overview.html 5 | --- 6 | 7 | This page has been moved to the Flux website. [View it there](https://facebook.github.io/flux/docs/overview.html). 8 | -------------------------------------------------------------------------------- /docs/docs/flux-overview.zh-CN.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-overview-zh-CN 3 | title: Flux 应用架构 4 | permalink: docs/flux-overview-zh-CN.html 5 | --- 6 | 7 | 本页被移到了 Flux 网站。[点击访问](https://facebook.github.io/flux/docs/overview.html)。 8 | -------------------------------------------------------------------------------- /docs/docs/flux-todo-list.it-IT.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-todo-list-it-IT 3 | title: Tutorial TodoMVC Flux 4 | permalink: docs/flux-todo-list-it-IT.html 5 | --- 6 | 7 | Questa pagina è stata spostata sul sito di Flux. [Leggila qui](https://facebook.github.io/flux/docs/todo-list.html). 8 | -------------------------------------------------------------------------------- /docs/docs/flux-todo-list.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-todo-list-ko-KR 3 | title: Flux TodoMVC 튜토리얼 4 | permalink: docs/flux-todo-list-ko-KR.html 5 | --- 6 | 7 | 이 페이지는 Flux 웹사이트로 이동되었습니다. [거기서 보세요](https://facebook.github.io/flux/docs/todo-list.html). 8 | -------------------------------------------------------------------------------- /docs/docs/flux-todo-list.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-todo-list 3 | title: Flux TodoMVC Tutorial 4 | permalink: docs/flux-todo-list.html 5 | --- 6 | 7 | This page has been moved to the Flux website. [View it there](https://facebook.github.io/flux/docs/todo-list.html). 8 | -------------------------------------------------------------------------------- /docs/docs/flux-todo-list.zh-CN.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flux-todo-list-zh-CN 3 | title: Flux TodoMVC 教程 4 | permalink: docs/flux-todo-list-zh-CN.html 5 | --- 6 | 7 | 本页被移到了 Flux 网站。[点击访问](https://facebook.github.io/flux/docs/todo-list.html)。 8 | -------------------------------------------------------------------------------- /docs/docs/ref-07-special-non-dom-attributes.it-IT.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: special-non-dom-attributes-it-IT 3 | title: Attributi Speciali Non-DOM 4 | permalink: docs/special-non-dom-attributes-it-IT.html 5 | prev: dom-differences-it-IT.html 6 | next: reconciliation-it-IT.html 7 | --- 8 | 9 | Oltre alle [Differenze del DOM](/react/docs/dom-differences.html), React offre alcuni attributi che semplicemente non esistono nel DOM. 10 | 11 | - `key`: un identificatore univoco opzionale. Quando il tuo componente viene riordinato durante i passaggi di `render`, potrebbe essere distrutto e ricreato in base all'algoritmo di calcolo delle differenze. Assegnargli una chiave che persiste assicura che il componente venga preservato. Scopri maggiori dettagli [qui](/react/docs/multiple-components.html#dynamic-children). 12 | - `ref`: leggi [qui](/react/docs/more-about-refs.html). 13 | - `dangerouslySetInnerHTML`: Offre l'abilità di inserire HTML grezzo, principalmente per cooperare con librerie di manipolazione di stringhe DOM. Scopri maggiori dettagli [qui](/react/tips/dangerously-set-inner-html.html). 14 | -------------------------------------------------------------------------------- /docs/docs/ref-07-special-non-dom-attributes.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: special-non-dom-attributes-ko-KR 3 | title: DOM이 아닌 특별한 어트리뷰트 4 | permalink: docs/special-non-dom-attributes-ko-KR.html 5 | prev: dom-differences-ko-KR.html 6 | next: reconciliation-ko-KR.html 7 | --- 8 | 9 | [DOM 차이점](/react/docs/dom-differences-ko-KR.html)처럼, React는 DOM에는 존재하지 않는 몇몇 어트리뷰트도 제공합니다. 10 | 11 | - `key`: 선택적인 고유 식별자. 컴포넌트가 `render` 과정에서 섞일 때, diff 알고리즘에 의해 파괴되고, 다시 생성될 수 있습니다. 컴포넌트에 영속적인(persists) 키를 할당하면 컴포넌트가 확실히 유지되게 할 수 있습니다. 더 자세한 것은 [여기](/react/docs/multiple-components-ko-KR.html#동적-자식)에서 보세요. 12 | - `ref`: [여기](/react/docs/more-about-refs-ko-KR.html)를 보세요. 13 | - `dangerouslySetInnerHTML`: 생(raw) HTML을 넣을 수 있게 합니다. 주로 DOM 문자열 관리 라이브러리와의 협력하기 위해 사용합니다. 더 자세한 것은 [여기](/react/tips/dangerously-set-inner-html.html)를 보세요. 14 | -------------------------------------------------------------------------------- /docs/docs/ref-07-special-non-dom-attributes.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: special-non-dom-attributes 3 | title: Special Non-DOM Attributes 4 | permalink: docs/special-non-dom-attributes.html 5 | prev: dom-differences.html 6 | next: reconciliation.html 7 | --- 8 | 9 | Beside [DOM differences](/react/docs/dom-differences.html), React offers some attributes that simply don't exist in DOM. 10 | 11 | - `key`: an optional, unique identifier. When your component shuffles around during `render` passes, it might be destroyed and recreated due to the diff algorithm. Assigning it a key that persists makes sure the component stays. See more [here](/react/docs/multiple-components.html#dynamic-children). 12 | - `ref`: see [here](/react/docs/more-about-refs.html). 13 | - `dangerouslySetInnerHTML`: Provides the ability to insert raw HTML, mainly for cooperating with DOM string manipulation libraries. See more [here](/react/tips/dangerously-set-inner-html.html). 14 | -------------------------------------------------------------------------------- /docs/docs/ref-07-special-non-dom-attributes.zh-CN.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: special-non-dom-attributes-zh-CN 3 | title: 特殊的 Non-DOM Attributes 4 | permalink: docs/special-non-dom-attributes-zh-CN.html 5 | prev: dom-differences-zh-CN.html 6 | next: reconciliation-zh-CN.html 7 | --- 8 | 9 | 和 [DOM 的不同之处](/react/docs/dom-differences-zh-CN.html)相比, React 提供了一些不存在于DOM的 attributes . 10 | 11 | - `key`: 一个可选的.独特的标识.当你的组件穿梭于 `render` 的pass,它也许会因为diff算法被摧毁和重建.赋予它一个持久的key保证这个component可达.详见 [这里](/react/docs/multiple-components.html#dynamic-children). 12 | - `ref`: 见 [这里](/react/docs/more-about-refs.html). 13 | - `dangerouslySetInnerHTML`: 提供了直接插入raw HTML的能力,主要是为了与操纵DOM字符串的库协作.详见 [这里](/react/tips/dangerously-set-inner-html.html). 14 | -------------------------------------------------------------------------------- /docs/downloads/react-0.10.0-rc1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.10.0-rc1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.10.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.10.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.11.0-rc1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.11.0-rc1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.11.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.11.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.11.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.11.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.11.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.11.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.12.0-rc1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.12.0-rc1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.12.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.12.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.12.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.12.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.12.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.12.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.13.0-rc1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.13.0-rc1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.13.0-rc2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.13.0-rc2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.13.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.13.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.13.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.13.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.13.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.13.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.13.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.13.3.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.3.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.4.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.5.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.6.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.7.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.14.8.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.14.8.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.3.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.3.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.3.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.3.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.3.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.3.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.3.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.3.3.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.4.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.4.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.4.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.4.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.4.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.4.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.5.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.5.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.5.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.5.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.5.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.5.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.8.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.8.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-0.9.0-rc1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-0.9.0-rc1.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.0.0-rc.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.0.0-rc.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.0.0-rc.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.0.0-rc.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.0.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.0.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.0.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.0.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.0.2.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.1.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.2.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.2.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.2.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.3.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.3.0.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.3.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.3.1.zip -------------------------------------------------------------------------------- /docs/downloads/react-15.3.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/downloads/react-15.3.2.zip -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/favicon.ico -------------------------------------------------------------------------------- /docs/feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 6 | {{ site.name }} 7 | {{ site.description }} 8 | {{ site.url }}{{ site.baseurl }} 9 | 10 | {% for post in site.posts limit:10 %} 11 | 12 | {{ post.title | xml_escape }} 13 | {{ post.content | xml_escape }} 14 | {{ post.date | date_to_xmlschema }} 15 | {{ site.url }}{{ site.baseurl }}{{ post.url }} 16 | {{ site.url }}{{ site.baseurl }}{{ post.url }} 17 | 18 | {% endfor %} 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/html-jsx.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: html-jsx.html 3 | layout: redirect 4 | dest_url: http://magic.reactjs.net/htmltojsx.htm 5 | --- 6 | -------------------------------------------------------------------------------- /docs/img/blog/animal-sounds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/animal-sounds.jpg -------------------------------------------------------------------------------- /docs/img/blog/chatapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/chatapp.png -------------------------------------------------------------------------------- /docs/img/blog/create-apps-with-no-configuration/compiled-successfully.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/create-apps-with-no-configuration/compiled-successfully.png -------------------------------------------------------------------------------- /docs/img/blog/create-apps-with-no-configuration/compiled-with-warnings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/create-apps-with-no-configuration/compiled-with-warnings.png -------------------------------------------------------------------------------- /docs/img/blog/create-apps-with-no-configuration/created-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/create-apps-with-no-configuration/created-folder.png -------------------------------------------------------------------------------- /docs/img/blog/create-apps-with-no-configuration/failed-to-compile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/create-apps-with-no-configuration/failed-to-compile.png -------------------------------------------------------------------------------- /docs/img/blog/create-apps-with-no-configuration/npm-run-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/create-apps-with-no-configuration/npm-run-build.png -------------------------------------------------------------------------------- /docs/img/blog/devtools-full.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/devtools-full.gif -------------------------------------------------------------------------------- /docs/img/blog/devtools-search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/devtools-search.gif -------------------------------------------------------------------------------- /docs/img/blog/devtools-side-pane.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/devtools-side-pane.gif -------------------------------------------------------------------------------- /docs/img/blog/devtools-tree-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/devtools-tree-view.png -------------------------------------------------------------------------------- /docs/img/blog/dog-tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/dog-tutorial.png -------------------------------------------------------------------------------- /docs/img/blog/first-look.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/first-look.png -------------------------------------------------------------------------------- /docs/img/blog/flux-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/flux-chart.png -------------------------------------------------------------------------------- /docs/img/blog/flux-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/flux-diagram.png -------------------------------------------------------------------------------- /docs/img/blog/genesis_skeleton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/genesis_skeleton.png -------------------------------------------------------------------------------- /docs/img/blog/gpu-cursor-move.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/gpu-cursor-move.gif -------------------------------------------------------------------------------- /docs/img/blog/guess_filter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/guess_filter.jpg -------------------------------------------------------------------------------- /docs/img/blog/hacker-news-react-native.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/hacker-news-react-native.png -------------------------------------------------------------------------------- /docs/img/blog/jsx-compiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/jsx-compiler.png -------------------------------------------------------------------------------- /docs/img/blog/kendoui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/kendoui.png -------------------------------------------------------------------------------- /docs/img/blog/khan-academy-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/khan-academy-editor.png -------------------------------------------------------------------------------- /docs/img/blog/landoflisp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/landoflisp.png -------------------------------------------------------------------------------- /docs/img/blog/lights-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/lights-out.png -------------------------------------------------------------------------------- /docs/img/blog/makona-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/makona-editor.png -------------------------------------------------------------------------------- /docs/img/blog/markdown_refactor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/markdown_refactor.png -------------------------------------------------------------------------------- /docs/img/blog/modus-create.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/modus-create.gif -------------------------------------------------------------------------------- /docs/img/blog/monkeys.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/monkeys.gif -------------------------------------------------------------------------------- /docs/img/blog/ngreact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/ngreact.png -------------------------------------------------------------------------------- /docs/img/blog/om-backbone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/om-backbone.png -------------------------------------------------------------------------------- /docs/img/blog/parse-react.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/parse-react.jpg -------------------------------------------------------------------------------- /docs/img/blog/polarr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/polarr.jpg -------------------------------------------------------------------------------- /docs/img/blog/propeller-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/propeller-logo.png -------------------------------------------------------------------------------- /docs/img/blog/property-finder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/property-finder.png -------------------------------------------------------------------------------- /docs/img/blog/quiztime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/quiztime.png -------------------------------------------------------------------------------- /docs/img/blog/react-50k-mock-full.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-50k-mock-full.jpg -------------------------------------------------------------------------------- /docs/img/blog/react-50k-mock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-50k-mock.jpg -------------------------------------------------------------------------------- /docs/img/blog/react-50k-tshirt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-50k-tshirt.jpg -------------------------------------------------------------------------------- /docs/img/blog/react-browserify-gulp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-browserify-gulp.jpg -------------------------------------------------------------------------------- /docs/img/blog/react-dev-tools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-dev-tools.jpg -------------------------------------------------------------------------------- /docs/img/blog/react-diff-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-diff-tree.png -------------------------------------------------------------------------------- /docs/img/blog/react-draggable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-draggable.png -------------------------------------------------------------------------------- /docs/img/blog/react-hackathon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-hackathon.jpg -------------------------------------------------------------------------------- /docs/img/blog/react-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-page.png -------------------------------------------------------------------------------- /docs/img/blog/react-php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-php.png -------------------------------------------------------------------------------- /docs/img/blog/react-svg-fbp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/react-svg-fbp.png -------------------------------------------------------------------------------- /docs/img/blog/reactive-bookmarklet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/reactive-bookmarklet.png -------------------------------------------------------------------------------- /docs/img/blog/reflux-flux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/reflux-flux.png -------------------------------------------------------------------------------- /docs/img/blog/relay-components/relay-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/relay-components/relay-architecture.png -------------------------------------------------------------------------------- /docs/img/blog/relay-components/relay-containers-data-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/relay-components/relay-containers-data-flow.png -------------------------------------------------------------------------------- /docs/img/blog/relay-components/relay-containers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/relay-components/relay-containers.png -------------------------------------------------------------------------------- /docs/img/blog/relay-components/sample-newsfeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/relay-components/sample-newsfeed.png -------------------------------------------------------------------------------- /docs/img/blog/relay-visual-architecture-tour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/relay-visual-architecture-tour.png -------------------------------------------------------------------------------- /docs/img/blog/resistance-calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/resistance-calculator.png -------------------------------------------------------------------------------- /docs/img/blog/skills-matter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/skills-matter.png -------------------------------------------------------------------------------- /docs/img/blog/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/snake.png -------------------------------------------------------------------------------- /docs/img/blog/steve_reverse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/steve_reverse.gif -------------------------------------------------------------------------------- /docs/img/blog/sweet-jsx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/sweet-jsx.png -------------------------------------------------------------------------------- /docs/img/blog/tcomb-react-native.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/tcomb-react-native.png -------------------------------------------------------------------------------- /docs/img/blog/thinking-in-react-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/thinking-in-react-components.png -------------------------------------------------------------------------------- /docs/img/blog/thinking-in-react-mock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/thinking-in-react-mock.png -------------------------------------------------------------------------------- /docs/img/blog/todomvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/todomvc.png -------------------------------------------------------------------------------- /docs/img/blog/turboreact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/turboreact.png -------------------------------------------------------------------------------- /docs/img/blog/tutsplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/tutsplus.png -------------------------------------------------------------------------------- /docs/img/blog/unite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/unite.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-1.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-2.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-3.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-4.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-5.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-6.png -------------------------------------------------------------------------------- /docs/img/blog/versioning-poll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/versioning-poll.png -------------------------------------------------------------------------------- /docs/img/blog/weather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/weather.png -------------------------------------------------------------------------------- /docs/img/blog/wolfenstein_react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/wolfenstein_react.png -------------------------------------------------------------------------------- /docs/img/blog/xoxo2013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/xoxo2013.png -------------------------------------------------------------------------------- /docs/img/blog/xreact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/blog/xreact.png -------------------------------------------------------------------------------- /docs/img/docs/codewinds-004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/codewinds-004.png -------------------------------------------------------------------------------- /docs/img/docs/javascript-jabber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/javascript-jabber.png -------------------------------------------------------------------------------- /docs/img/docs/perf-dom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/perf-dom.png -------------------------------------------------------------------------------- /docs/img/docs/perf-exclusive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/perf-exclusive.png -------------------------------------------------------------------------------- /docs/img/docs/perf-inclusive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/perf-inclusive.png -------------------------------------------------------------------------------- /docs/img/docs/perf-wasted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/perf-wasted.png -------------------------------------------------------------------------------- /docs/img/docs/should-component-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/should-component-update.png -------------------------------------------------------------------------------- /docs/img/docs/thinking-in-react-tagtree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/docs/thinking-in-react-tagtree.png -------------------------------------------------------------------------------- /docs/img/external.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/external.png -------------------------------------------------------------------------------- /docs/img/external_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/external_2x.png -------------------------------------------------------------------------------- /docs/img/logo_og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/logo_og.png -------------------------------------------------------------------------------- /docs/img/logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/logo_small.png -------------------------------------------------------------------------------- /docs/img/logo_small_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/logo_small_2x.png -------------------------------------------------------------------------------- /docs/img/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/noise.png -------------------------------------------------------------------------------- /docs/img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactjs-bot/react/48ea2d47439806fae66aa740e4773c8d0d989774/docs/img/search.png -------------------------------------------------------------------------------- /docs/js/jsfiddle-integration-babel.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var tag = document.querySelector( 3 | 'script[type="application/javascript;version=1.7"]' 4 | ); 5 | if (!tag || tag.textContent.indexOf('window.onload=function(){') !== -1) { 6 | alert('Bad JSFiddle configuration, please fork the original React JSFiddle'); 7 | } 8 | tag.setAttribute('type', 'text/babel'); 9 | tag.textContent = tag.textContent.replace(/^\/\/Hello World!
, mountNode); 21 | ``` 22 | 23 | 스타일 키는 JS에서 DOM 노드의 프로퍼티에 접근하는 것과 일관성있도록 camelCased 형식입니다. (예를 들어 `node.style.backgroundImage`) [`ms`를 제외한](http://www.andismith.com/blog/2012/02/modernizr-prefixed/) 벤더 프리픽스는 대문자로 시작해야 합니다. 따라서 `WebkitTransition`은 대문자 "W"를 사용합니다. 24 | -------------------------------------------------------------------------------- /docs/tips/02-inline-styles.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: inline-styles 3 | title: Inline Styles 4 | layout: tips 5 | permalink: tips/inline-styles.html 6 | next: if-else-in-JSX.html 7 | prev: introduction.html 8 | --- 9 | 10 | In React, inline styles are not specified as a string. Instead they are specified with an object whose key is the camelCased version of the style name, and whose value is the style's value, usually a string ([more on that later](/react/tips/style-props-value-px.html)): 11 | 12 | ```js 13 | var divStyle = { 14 | color: 'white', 15 | backgroundImage: 'url(' + imgUrl + ')', 16 | WebkitTransition: 'all', // note the capital 'W' here 17 | msTransition: 'all' // 'ms' is the only lowercase vendor prefix 18 | }; 19 | 20 | ReactDOM.render(
Hello World!
, mountNode); 21 | ``` 22 | 23 | Style keys are camelCased in order to be consistent with accessing the properties on DOM nodes from JS (e.g. `node.style.backgroundImage`). Vendor prefixes [other than `ms`](http://www.andismith.com/blog/2012/02/modernizr-prefixed/) should begin with a capital letter. This is why `WebkitTransition` has an uppercase "W". 24 | -------------------------------------------------------------------------------- /docs/tips/04-self-closing-tag.ja-JP.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: self-closing-tag-ja-JP 3 | title: 自己終了タグ 4 | layout: tips 5 | permalink: tips/self-closing-tag-ja-JP.html 6 | prev: if-else-in-JSX-ja-JP.html 7 | next: maximum-number-of-jsx-root-nodes-ja-JP.html 8 | --- 9 | 10 | JSXでは、 `` 単体は正しいですが、 `` は正しくありません。 全てのタグは、自己終了の形式または対応する終了タグ( `` )で閉じるべきです。 11 | 12 | > 注意: 13 | > 14 | > 全てのReactコンポーネントは `
` のように自己終了タグになり得ます。 `
` もまた同様です。 15 | -------------------------------------------------------------------------------- /docs/tips/04-self-closing-tag.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: self-closing-tag-ko-KR 3 | title: 자기 자신을 닫는 태그 4 | layout: tips 5 | permalink: tips/self-closing-tag-ko-KR.html 6 | prev: if-else-in-JSX-ko-KR.html 7 | next: maximum-number-of-jsx-root-nodes-ko-KR.html 8 | --- 9 | 10 | JSX에서 ``는 유효하지 않고 ``만 유효합니다. 모든 태그는 닫혀야 합니다. 자기 자신을 닫는 형식을 사용하거나 대응되는 닫는 태그(``)가 필요합니다. 11 | 12 | > 주의: 13 | > 14 | > 모든 React 컴포넌트는 자기 자신을 닫을 수 있습니다: `
`. `
`와 동일합니다. 15 | -------------------------------------------------------------------------------- /docs/tips/04-self-closing-tag.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: self-closing-tag 3 | title: Self-Closing Tag 4 | layout: tips 5 | permalink: tips/self-closing-tag.html 6 | prev: if-else-in-JSX.html 7 | next: maximum-number-of-jsx-root-nodes.html 8 | --- 9 | 10 | In JSX, `` alone is valid while `` isn't. All tags must be closed, either with the self-closing format or with a corresponding closing tag (``). 11 | 12 | > Note: 13 | > 14 | > Every React component can be self-closing: `
`. `
` is also an equivalent. 15 | -------------------------------------------------------------------------------- /docs/tips/04-self-closing-tag.ru-RU.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: self-closing-tag-ru-RU 3 | title: Одиночный тег 4 | layout: tips 5 | permalink: tips/self-closing-tag-ru-RU.html 6 | prev: if-else-in-JSX-ru-RU.html 7 | next: maximum-number-of-jsx-root-nodes-ru-RU.html 8 | --- 9 | 10 | В JSX все теги необходимо закрывать. Это можно сделать либо в открывающем теге ``, либо отдельным закрывающим тегом ``. 11 | 12 | > Примечание: 13 | > 14 | > Любой React компонент может быть одиночным: `
` это то же самое, что `
`. 15 | -------------------------------------------------------------------------------- /docs/tips/05-maximum-number-of-jsx-root-nodes.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: maximum-number-of-jsx-root-nodes-ko-KR 3 | title: JSX 루트 노드의 최대 갯수 4 | layout: tips 5 | permalink: tips/maximum-number-of-jsx-root-nodes-ko-KR.html 6 | prev: self-closing-tag-ko-KR.html 7 | next: style-props-value-px-ko-KR.html 8 | --- 9 | 10 | 현재 컴포넌트의 `render`는 한 노드만 리턴할 수 있습니다. 만약 `div` 배열을 리턴하려면, `div`, `span`과 같은 다른 컴포넌트로 한 번 더 싸주어야 합니다. 11 | 12 | JSX는 일반 JS로 컴파일 함을 잊지말아야 합니다. 두개의 함수를 리턴하는 것은 문법적으로 맞지 않습니다. 이와 마찬가지로, 한 삼항 연산자 안에 한개 이상의 자식 컴포넌트를 넣으면 안됩니다. 13 | -------------------------------------------------------------------------------- /docs/tips/05-maximum-number-of-jsx-root-nodes.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: maximum-number-of-jsx-root-nodes 3 | title: Maximum Number of JSX Root Nodes 4 | layout: tips 5 | permalink: tips/maximum-number-of-jsx-root-nodes.html 6 | prev: self-closing-tag.html 7 | next: style-props-value-px.html 8 | --- 9 | 10 | Currently, in a component's `render`, you can only return one node; if you have, say, a list of `div`s to return, you must wrap your components within a `div`, `span` or any other component. 11 | 12 | Don't forget that JSX compiles into regular JS; returning two functions doesn't really make syntactic sense. Likewise, don't put more than one child in a ternary. 13 | -------------------------------------------------------------------------------- /docs/tips/05-maximum-number-of-jsx-root-nodes.ru-RU.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: maximum-number-of-jsx-root-nodes-ru-RU 3 | title: Максимальное количество корневых JSX-узлов 4 | layout: tips 5 | permalink: tips/maximum-number-of-jsx-root-nodes-ru-RU.html 6 | prev: self-closing-tag-ru-RU.html 7 | next: style-props-value-px-ru-RU.html 8 | --- 9 | 10 | Из метода `render` компонента пока что можно вернуть только один узел. Если нужно вернуть, например, несколько `div`, оберните их в `div`, `span` или любой другой компонент. 11 | 12 | Не забывайте, что JSX компилируется в обычный JS, и возвращение двух функций не имеет синтаксического смысла. Также не помещайте более одного дочернего элемента в тернарный оператор. 13 | -------------------------------------------------------------------------------- /docs/tips/08-controlled-input-null-value.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: controlled-input-null-value-ko-KR 3 | title: 제어되는 input 내의 null 값 4 | layout: tips 5 | permalink: tips/controlled-input-null-value-ko-KR.html 6 | prev: children-props-type-ko-KR.html 7 | next: componentWillReceiveProps-not-triggered-after-mounting-ko-KR.html 8 | --- 9 | 10 | [제어되는 컴포넌트들](/react/docs/forms-ko-KR.html)의 `value` 속성 값을 지정하면 유저에 의해 입력값을 바꿀 수 없습니다. 11 | 12 | `value`가 정해져 있는데도 입력값을 변경할 수 있는 문제를 겪고 있다면 실수로 `value`를 `undefined`나 `null`로 설정한 것일 수 있습니다. 13 | 14 | 아래 짧은 예제가 있습니다; 렌더링 후, 잠시 뒤에 텍스트를 고칠 수 있는 상태가 되는 것을 확인 하실 수 있습니다. 15 | 16 | ```js 17 | ReactDOM.render(, mountNode); 18 | 19 | setTimeout(function() { 20 | ReactDOM.render(, mountNode); 21 | }, 1000); 22 | ``` 23 | -------------------------------------------------------------------------------- /docs/tips/08-controlled-input-null-value.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: controlled-input-null-value 3 | title: Value of null for Controlled Input 4 | layout: tips 5 | permalink: tips/controlled-input-null-value.html 6 | prev: children-props-type.html 7 | next: componentWillReceiveProps-not-triggered-after-mounting.html 8 | --- 9 | 10 | Specifying the `value` prop on a [controlled component](/react/docs/forms.html) prevents the user from changing the input unless you desire so. 11 | 12 | You might have run into a problem where `value` is specified, but the input can still be changed without consent. In this case, you might have accidentally set `value` to `undefined` or `null`. 13 | 14 | The snippet below shows this phenomenon; after a second, the text becomes editable. 15 | 16 | ```js 17 | ReactDOM.render(, mountNode); 18 | 19 | setTimeout(function() { 20 | ReactDOM.render(, mountNode); 21 | }, 1000); 22 | ``` 23 | -------------------------------------------------------------------------------- /docs/tips/09-componentWillReceiveProps-not-triggered-after-mounting.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: componentWillReceiveProps-not-triggered-after-mounting-ko-KR 3 | title: 마운트 후에는 componentWillReceiveProps가 실행되지 않음. 4 | layout: tips 5 | permalink: tips/componentWillReceiveProps-not-triggered-after-mounting-ko-KR.html 6 | prev: controlled-input-null-value-ko-KR.html 7 | next: props-in-getInitialState-as-anti-pattern-ko-KR.html 8 | --- 9 | 10 | `componentWillReceiveProps`는 노드가 더해진 후엔 실행되지 않습니다. 이는 설계에 의한 것입니다. [다른 생명주기 메소드](/react/docs/component-specs-ko-KR.html)에서 요구사항에 적합한 것을 찾아보세요. 11 | 12 | 이러한 이유는 `componentWillReceiveProps`에 종종 예전 props와 액션의 차이를 비교하는 로직이 들어가기 때문입니다. 마운트할 때 트리거되지 않으면, (예전 props가 없다고 해도) 메소드의 형태를 구별하는 데 도움이 됩니다. 13 | 14 | -------------------------------------------------------------------------------- /docs/tips/09-componentWillReceiveProps-not-triggered-after-mounting.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: componentWillReceiveProps-not-triggered-after-mounting 3 | title: componentWillReceiveProps Not Triggered After Mounting 4 | layout: tips 5 | permalink: tips/componentWillReceiveProps-not-triggered-after-mounting.html 6 | prev: controlled-input-null-value.html 7 | next: props-in-getInitialState-as-anti-pattern.html 8 | --- 9 | 10 | `componentWillReceiveProps` isn't triggered after the node is put on scene. This is by design. Check out [other lifecycle methods](/react/docs/component-specs.html) for the one that suits your needs. 11 | 12 | The reason for that is because `componentWillReceiveProps` often handles the logic of comparing with the old props and acting upon changes; not triggering it at mounting (where there are no old props) helps in defining what the method does. 13 | -------------------------------------------------------------------------------- /docs/tips/13-false-in-jsx.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: false-in-jsx-ko-KR 3 | title: JSX에서 False 4 | layout: tips 5 | permalink: tips/false-in-jsx-ko-KR.html 6 | prev: initial-ajax-ko-KR.html 7 | next: communicate-between-components-ko-KR.html 8 | --- 9 | 10 | `false` 렌더링이 여러 상황에서 어떻게 다뤄지는지 봅시다. 11 | 12 | `id="false"`로 렌더링 13 | 14 | ```js 15 | ReactDOM.render(
, mountNode); 16 | ``` 17 | 18 | 문자열 `"false"`를 입력값으로 19 | 20 | ```js 21 | ReactDOM.render(, mountNode); 22 | ``` 23 | 24 | 자식 없음 25 | 26 | ```js 27 | ReactDOM.render(
{false}
, mountNode); 28 | ``` 29 | 30 | `div` 자식으로 쓰인 문자열 `"false"`를 렌더링하지 않은 것은 더 일반적인 사용 사례를 허용하기 위함입니다. `
{x > 1 && '하나 이상의 아이템을 가졌습니다.'}
` 31 | -------------------------------------------------------------------------------- /docs/tips/13-false-in-jsx.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: false-in-jsx 3 | title: False in JSX 4 | layout: tips 5 | permalink: tips/false-in-jsx.html 6 | prev: initial-ajax.html 7 | next: communicate-between-components.html 8 | --- 9 | 10 | Here's how `false` renders in different situations: 11 | 12 | Renders as `id="false"`: 13 | 14 | ```js 15 | ReactDOM.render(
, mountNode); 16 | ``` 17 | 18 | String `"false"` as input value: 19 | 20 | ```js 21 | ReactDOM.render(, mountNode); 22 | ``` 23 | 24 | No child: 25 | 26 | ```js 27 | ReactDOM.render(
{false}
, mountNode); 28 | ``` 29 | 30 | The reason why this one doesn't render as the string `"false"` as a `div` child is to allow the more common use-case: `
{x > 1 && 'You have more than one item'}
`. 31 | -------------------------------------------------------------------------------- /docs/tips/16-references-to-components.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: references-to-components-ko-KR 3 | title: 컴포넌트 참조 4 | layout: tips 5 | permalink: tips/references-to-components-ko-KR.html 6 | prev: expose-component-functions-ko-KR.html 7 | next: children-undefined-ko-KR.html 8 | --- 9 | 10 | 이 페이지는 이동되었습니다. [refs](/react/docs/more-about-refs-ko-KR.html) 11 | -------------------------------------------------------------------------------- /docs/tips/16-references-to-components.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: references-to-components 3 | title: References to Components 4 | layout: tips 5 | permalink: tips/references-to-components.html 6 | prev: expose-component-functions.html 7 | next: children-undefined.html 8 | --- 9 | 10 | This page has moved to: [refs](/react/docs/more-about-refs.html). 11 | -------------------------------------------------------------------------------- /docs/tips/17-children-undefined.ko-KR.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: children-undefined-ko-KR 3 | title: 정의되지 않은 this.props.children 4 | layout: tips 5 | permalink: tips/children-undefined-ko-KR.html 6 | prev: expose-component-functions-ko-KR.html 7 | next: use-react-with-other-libraries-ko-KR.html 8 | --- 9 | 10 | `this.props.children`을 통해 자식 컴포넌트에 접근할 수 없습니다. `this.props.children`은 소유자에 의해 자식이 **전달**되도록 지정합니다: 11 | 12 | ```js 13 | var App = React.createClass({ 14 | componentDidMount: function() { 15 | // 이는 `span`을 참조하지 않습니다! 16 | // 마지막 줄의 `` 사이의 정의되지 않은 자식을 참조합니다. 17 | console.log(this.props.children); 18 | }, 19 | 20 | render: function() { 21 | return
; 22 | } 23 | }); 24 | 25 | ReactDOM.render(, mountNode); 26 | ``` 27 | 28 | 서브 컴포넌트(`span`)에 억세스하려면, [refs](/react/docs/more-about-refs.html)를 넣으세요. 29 | -------------------------------------------------------------------------------- /docs/tips/17-children-undefined.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: children-undefined 3 | title: this.props.children undefined 4 | layout: tips 5 | permalink: tips/children-undefined.html 6 | prev: expose-component-functions.html 7 | next: use-react-with-other-libraries.html 8 | --- 9 | 10 | You can't access the children of your component through `this.props.children`. `this.props.children` designates the children being **passed onto you** by the owner: 11 | 12 | ```js 13 | var App = React.createClass({ 14 | componentDidMount: function() { 15 | // This doesn't refer to the `span`s! It refers to the children between 16 | // last line's ``, which are undefined. 17 | console.log(this.props.children); 18 | }, 19 | 20 | render: function() { 21 | return
; 22 | } 23 | }); 24 | 25 | ReactDOM.render(, mountNode); 26 | ``` 27 | 28 | To access your own subcomponents (the `span`s), place [refs](/react/docs/more-about-refs.html) on them. 29 | -------------------------------------------------------------------------------- /docs/warnings/invalid-aria-prop.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Invalid ARIA Prop Warning 3 | layout: single 4 | permalink: warnings/invalid-aria-prop.html 5 | --- 6 | 7 | The invalid-aria-prop warning will fire if you attempt to render a DOM element with an aria-* prop that does not exist in the Web Accessibility Initiative (WAI) Accessible Rich Internet Application (ARIA) [specification](https://www.w3.org/TR/wai-aria-1.1/#states_and_properties). 8 | 9 | 1. If you feel that you are using a valid prop, check the spelling carefully. `aria-labelledby` and `aria-activedescendant` are often misspelled. 10 | 11 | 2. 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 -------------------------------------------------------------------------------- /docs/warnings/special-props.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Special Props Warning 3 | layout: single 4 | permalink: warnings/special-props.html 5 | --- 6 | 7 | Most props on a JSX element are passed on to the component, however, there are two special props (`ref` and `key`) which are used by React, and are thus not forwarded to the component. 8 | 9 | For instance, attempting to access `this.props.key` from a component (eg. the render function) is not defined. If you need to access the same value within the child component, you should pass it as a different prop (ex: ``). While this may seem redundant, it's important to separate app logic from reconciling hints. 10 | -------------------------------------------------------------------------------- /eslint-rules/README.md: -------------------------------------------------------------------------------- 1 | # Custom ESLint Rules 2 | 3 | This is a dummy npm package that allows us to treat it as an eslint-plugin. It's not actually published, nor are the rules here useful for users of react. If you want to lint your react code, try . 4 | 5 | **If you modify this rule, you must re-run `npm install ./eslint-rules` for it to take effect.** 6 | -------------------------------------------------------------------------------- /eslint-rules/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | rules: { 5 | 'warning-and-invariant-args': require('./warning-and-invariant-args'), 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /eslint-rules/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-plugin-react-internal", 3 | "version": "0.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # React Examples 2 | 3 | Here are some small React demos. Some use [JSX](https://facebook.github.io/react/docs/jsx-in-depth.html) and some include third-party library integration. 4 | 5 | For more fully-featured examples, check out [React TodoMVC](http://todomvc.com/examples/react/) and [React + Backbone TodoMVC](http://todomvc.com/examples/react-backbone/). 6 | -------------------------------------------------------------------------------- /examples/basic-commonjs/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/basic-commonjs/README.md: -------------------------------------------------------------------------------- 1 | # Basic example of using React with Browserify 2 | 3 | Run `npm install` in the directory to install React from npm. Then run: 4 | 5 | ```sh 6 | npm start 7 | ``` 8 | 9 | to produce `bundle.js` with example code and React. 10 | -------------------------------------------------------------------------------- /examples/basic-commonjs/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var React = require('react'); 4 | var ReactDOM = require('react-dom'); 5 | 6 | var ExampleApplication = React.createClass({ 7 | render: function() { 8 | var elapsed = Math.round(this.props.elapsed / 100); 9 | var seconds = elapsed / 10 + (elapsed % 10 ? '' : '.0' ); 10 | var message = 11 | 'React has been successfully running for ' + seconds + ' seconds.'; 12 | 13 | return

{message}

; 14 | } 15 | }); 16 | 17 | var start = new Date().getTime(); 18 | 19 | setInterval(function() { 20 | ReactDOM.render( 21 | , 22 | document.getElementById('container') 23 | ); 24 | }, 50); 25 | -------------------------------------------------------------------------------- /examples/basic-commonjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-basic-commonjs-example", 3 | "description": "Basic example of using React with CommonJS", 4 | "private": true, 5 | "main": "index.js", 6 | "dependencies": { 7 | "babel-preset-es2015": "^6.6.0", 8 | "babel-preset-react": "^6.5.0", 9 | "babelify": "^7.3.0", 10 | "browserify": "^13.0.0", 11 | "react": "^15.0.2", 12 | "react-dom": "^15.0.2", 13 | "watchify": "^3.7.0" 14 | }, 15 | "scripts": { 16 | "build": "browserify ./index.js -t babelify -o bundle.js", 17 | "start": "watchify ./index.js -v -t babelify -o bundle.js" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /examples/basic-jsx-external/example.js: -------------------------------------------------------------------------------- 1 | var ExampleApplication = React.createClass({ 2 | render: function() { 3 | var elapsed = Math.round(this.props.elapsed / 100); 4 | var seconds = elapsed / 10 + (elapsed % 10 ? '' : '.0' ); 5 | var message = 6 | 'React has been successfully running for ' + seconds + ' seconds.'; 7 | 8 | return

{message}

; 9 | } 10 | }); 11 | 12 | var start = new Date().getTime(); 13 | 14 | setInterval(function() { 15 | ReactDOM.render( 16 | , 17 | document.getElementById('container') 18 | ); 19 | }, 50); 20 | -------------------------------------------------------------------------------- /examples/basic-jsx-precompile/example.js: -------------------------------------------------------------------------------- 1 | var ExampleApplication = React.createClass({ 2 | render: function() { 3 | var elapsed = Math.round(this.props.elapsed / 100); 4 | var seconds = elapsed / 10 + (elapsed % 10 ? '' : '.0' ); 5 | var message = 6 | 'React has been successfully running for ' + seconds + ' seconds.'; 7 | 8 | return

{message}

; 9 | } 10 | }); 11 | 12 | var start = new Date().getTime(); 13 | 14 | setInterval(function() { 15 | ReactDOM.render( 16 | , 17 | document.getElementById('container') 18 | ); 19 | }, 50); 20 | -------------------------------------------------------------------------------- /examples/jquery-bootstrap/css/example.css: -------------------------------------------------------------------------------- 1 | .example { 2 | margin: 20px; 3 | } -------------------------------------------------------------------------------- /examples/jquery-mobile/README.md: -------------------------------------------------------------------------------- 1 | jQuery Mobile React Example 2 | =========================== 3 | 4 | This example demonstrates how jQuery Mobile applications can be built with React. 5 | 6 | The source code is based on jQuery Mobile's [pages-multi-page example](https://github.com/jquery/jquery-mobile/tree/master/demos/pages-multi-page). 7 | -------------------------------------------------------------------------------- /examples/jquery-mobile/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | jQuery Mobile React Example 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /examples/transitions/transition.css: -------------------------------------------------------------------------------- 1 | .example-enter, 2 | .example-leave { 3 | -webkit-transition: all .25s; 4 | transition: all .25s; 5 | } 6 | 7 | .example-enter, 8 | .example-leave.example-leave-active { 9 | opacity: 0.01; 10 | } 11 | 12 | .example-leave.example-leave-active { 13 | margin-left: -128px; 14 | } 15 | 16 | .example-enter { 17 | margin-left: 128px; 18 | } 19 | 20 | .example-enter.example-enter-active, 21 | .example-leave { 22 | margin-left: 0; 23 | opacity: 1; 24 | } 25 | 26 | .animateExample { 27 | display: block; 28 | height: 128px; 29 | position: relative; 30 | width: 384px; 31 | } 32 | 33 | .animateItem { 34 | color: white; 35 | font-size: 36px; 36 | font-weight: bold; 37 | height: 128px; 38 | line-height: 128px; 39 | position: absolute; 40 | text-align: center; 41 | -webkit-transition: all .25s; /* TODO: make this a move animation */ 42 | transition: all .25s; /* TODO: make this a move animation */ 43 | width: 128px; 44 | } 45 | -------------------------------------------------------------------------------- /flow/environment.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 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 | * @flow 10 | */ 11 | 12 | /* eslint-disable */ 13 | 14 | declare var __REACT_DEVTOOLS_GLOBAL_HOOK__: any; /*?{ 15 | inject: ?((stuff: Object) => void) 16 | };*/ 17 | 18 | // temporary patches for React.Component and React.Element 19 | declare var ReactComponent: typeof React$Component; 20 | declare var ReactElement: typeof React$Element; 21 | -------------------------------------------------------------------------------- /grunt/config/compare_size.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gzip = require('gzip-js'); 4 | 5 | module.exports = { 6 | files: [ 7 | 'build/*.js', 8 | ], 9 | options: { 10 | compress: { 11 | gz: function(contents) { 12 | return gzip.zip(contents, {}).length; 13 | }, 14 | }, 15 | cache: '.grunt/sizecache.json', 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /grunt/config/compress.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var grunt = require('grunt'); 4 | 5 | var version = grunt.config.data.pkg.version; 6 | 7 | module.exports = { 8 | starter: { 9 | options: { 10 | archive: './build/react-' + version + '.zip', 11 | }, 12 | files: [ 13 | {cwd: './build/starter', src: ['**'], dot: true, dest: 'react-' + version + '/'}, 14 | ], 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /grunt/config/npm.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | exports.pack = {}; 4 | -------------------------------------------------------------------------------- /grunt/data/header-template-extended.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * <%= package %> v<%= version %> 3 | * 4 | * Copyright 2013-present, Facebook, Inc. 5 | * All rights reserved. 6 | * 7 | * This source code is licensed under the BSD-style license found in the 8 | * LICENSE file in the root directory of this source tree. An additional grant 9 | * of patent rights can be found in the PATENTS file in the same directory. 10 | * 11 | */ 12 | -------------------------------------------------------------------------------- /grunt/data/header-template-short.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * <%= package %> v<%= version %> 3 | */ 4 | -------------------------------------------------------------------------------- /mocks/ReactElementTestChild.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactElementTestChild 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var React = require('React'); 15 | 16 | var Child = React.createClass({ 17 | render: function() { 18 | return React.createElement('div'); 19 | }, 20 | }); 21 | 22 | module.exports = Child; 23 | -------------------------------------------------------------------------------- /mocks/ReactMockedComponentTestComponent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactMockedComponentTestComponent 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var React = require('React'); 15 | 16 | var ReactMockedComponentTestComponent = React.createClass({ 17 | getDefaultProps: function() { 18 | return {bar: 'baz'}; 19 | }, 20 | 21 | getInitialState: function() { 22 | return {foo: 'bar'}; 23 | }, 24 | 25 | hasCustomMethod: function() { 26 | return true; 27 | }, 28 | 29 | render: function() { 30 | return ; 31 | }, 32 | 33 | }); 34 | 35 | module.exports = ReactMockedComponentTestComponent; 36 | -------------------------------------------------------------------------------- /packages/jsx_orphaned_brackets_transformer/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/jsx_orphaned_brackets_transformer/README.md: -------------------------------------------------------------------------------- 1 | # JSX Orphaned Brackets Transformer 2 | 3 | React 0.13 no longer parses orphaned > and } as text. 4 | 5 | Take this example block: 6 | 7 | ```js 8 |
9 | > } 10 |
11 | ``` 12 | 13 | In 0.12 and below, this would be transformed to the following: 14 | 15 | ```js 16 | React.DOM.div(null, 17 | "> }", 18 | ) 19 | ``` 20 | 21 | In 0.13, this will instead throw a parser error. 22 | 23 | 24 | ## Usage 25 | 26 | The `jsx_orphaned_brackets_transformer` module ships an executable which transforms a file or directory of files. Files will be modified in place, so be sure you are prepared for that. 27 | 28 | ```sh 29 | $ npm -g install jsx_orphaned_brackets_transformer 30 | $ jsx_orphaned_brackets_transformer 31 | ``` 32 | -------------------------------------------------------------------------------- /packages/jsx_orphaned_brackets_transformer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsx_orphaned_brackets_transformer", 3 | "description": "A utility to update your JSX to work with React 0.13.", 4 | "version": "1.0.1", 5 | "main": "run.js", 6 | "dependencies": { 7 | "graceful-fs": "~2.0.0", 8 | "jstransform": "~8.2.0", 9 | "node-find-files": "0.0.2", 10 | "optimist": "~0.6.0" 11 | }, 12 | "bin": { 13 | "jsx_orphaned_brackets_transformer": "./run.js" 14 | }, 15 | "license": "BSD-3-Clause", 16 | "preferGlobal": true 17 | } 18 | -------------------------------------------------------------------------------- /packages/react-addons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-addons-template", 3 | "version": "16.0.0-alpha", 4 | "main": "index.js", 5 | "repository": "facebook/react", 6 | "keywords": [ 7 | "react", 8 | "react-addon" 9 | ], 10 | "license": "BSD-3-Clause", 11 | "dependencies": {}, 12 | "peerDependencies": { 13 | "react": "^16.0.0-alpha" 14 | }, 15 | "files": [ 16 | "LICENSE", 17 | "PATENTS", 18 | "README.md", 19 | "index.js" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /packages/react-dom/fiber.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./lib/ReactDOMFiber'); 4 | -------------------------------------------------------------------------------- /packages/react-dom/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./lib/ReactDOM'); 4 | -------------------------------------------------------------------------------- /packages/react-dom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-dom", 3 | "version": "16.0.0-alpha", 4 | "description": "React package for working with the DOM.", 5 | "main": "index.js", 6 | "repository": "facebook/react", 7 | "keywords": [ 8 | "react" 9 | ], 10 | "license": "BSD-3-Clause", 11 | "bugs": { 12 | "url": "https://github.com/facebook/react/issues" 13 | }, 14 | "homepage": "https://facebook.github.io/react/", 15 | "dependencies": { 16 | "fbjs": "^0.8.4", 17 | "loose-envify": "^1.1.0", 18 | "object-assign": "^4.1.0" 19 | }, 20 | "peerDependencies": { 21 | "react": "^16.0.0-alpha" 22 | }, 23 | "files": [ 24 | "LICENSE", 25 | "PATENTS", 26 | "README.md", 27 | "dist/", 28 | "lib/", 29 | "index.js", 30 | "server.js" 31 | ], 32 | "browserify": { 33 | "transform": [ 34 | "loose-envify" 35 | ] 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /packages/react-dom/server.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./lib/ReactDOMServer'); 4 | -------------------------------------------------------------------------------- /packages/react-linked-input/LinkedInput.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | 10 | 'use strict'; 11 | 12 | var React = require('react'); 13 | var LinkedValueUtils = require('react-dom/lib/LinkedValueUtils'); 14 | 15 | class LinkedInput extends React.Component { 16 | render() { 17 | var newProps = Object.assign({}, this.props); 18 | newProps.value = LinkedValueUtils.getValue(this.props); 19 | newProps.checked = LinkedValueUtils.getChecked(this.props); 20 | delete newProps.valueLink; 21 | delete newProps.checkedLink; 22 | return React.createElement('input', newProps); 23 | } 24 | } 25 | 26 | module.exports = LinkedInput; 27 | 28 | -------------------------------------------------------------------------------- /packages/react-linked-input/README.md: -------------------------------------------------------------------------------- 1 | This component supports the ReactLink API (valueLink, etc) for input components. Support for ReactLink on DOM elements will be removed from React. This component may be used as a migration plan (so your code doesn't break in the next version of React) or may be used if you just like the ReactLink data binding semantics. However, this component is not maintained, so use at your own risk. 2 | 3 | 4 | ``` 5 | var React = require('react'); 6 | var ReactDOM = require('react-dom'); 7 | var LinkedInput = require('react-linked-input'); 8 | 9 | var link = {value: 'boo', requestChange: function() {}}; 10 | React.render(, container); 11 | ``` 12 | -------------------------------------------------------------------------------- /packages/react-linked-input/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-linked-input", 3 | "version": "1.0.1", 4 | "description": "LinkedInput supports the ReactLink semantics", 5 | "main": "LinkedInput.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/facebook/react.git" 12 | }, 13 | "keywords": [ 14 | "react", 15 | "linkedinput", 16 | "input", 17 | "linked", 18 | "reactlink" 19 | ], 20 | "author": "", 21 | "license": "BSD-3-Clause", 22 | "peerDependencies": { 23 | "react": "^15.0.1" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /packages/react-native-renderer/README.md: -------------------------------------------------------------------------------- 1 | # `react-native-renderer` 2 | 3 | This package is the renderer that is used by the react-native package. 4 | It is intended to be used inside the react-native environment. It is not 5 | intended to be used stand alone. 6 | -------------------------------------------------------------------------------- /packages/react-native-renderer/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./lib/ReactNative'); 4 | -------------------------------------------------------------------------------- /packages/react-native-renderer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-renderer", 3 | "version": "16.0.0-alpha", 4 | "description": "React package for use inside react-native.", 5 | "main": "index.js", 6 | "repository": "facebook/react", 7 | "keywords": [ 8 | "react", 9 | "react-native" 10 | ], 11 | "license": "BSD-3-Clause", 12 | "bugs": { 13 | "url": "https://github.com/facebook/react/issues" 14 | }, 15 | "homepage": "https://facebook.github.io/react-native/", 16 | "dependencies": { 17 | "fbjs": "^0.8.4", 18 | "object-assign": "^4.1.0" 19 | }, 20 | "peerDependencies": { 21 | "react": "^16.0.0-alpha" 22 | }, 23 | "files": [ 24 | "LICENSE", 25 | "PATENTS", 26 | "README.md", 27 | "index.js", 28 | "lib/" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /packages/react-test-renderer/README.md: -------------------------------------------------------------------------------- 1 | # `react-test-renderer` 2 | 3 | This package provides an experimental React renderer that can be used to render React components to pure JavaScript objects, without depending on the DOM or a native mobile environment. 4 | 5 | Essentially, this package makes it easy to grab a snapshot of the "DOM tree" rendered by a React DOM or React Native component without using a browser or jsdom. 6 | 7 | Usage: 8 | 9 | ```jsx 10 | const ReactTestRenderer = require('react-test-renderer'); 11 | 12 | const renderer = ReactTestRenderer.create( 13 | Facebook 14 | ); 15 | 16 | console.log(renderer.toJSON()); 17 | // { type: 'a', 18 | // props: { href: 'https://www.facebook.com/' }, 19 | // children: [ 'Facebook' ] } 20 | ``` 21 | 22 | You can also use Jest's snapshot testing feature to automatically save a copy of the JSON tree to a file and check in your tests that it hasn't changed: http://facebook.github.io/jest/blog/2016/07/27/jest-14.html. 23 | -------------------------------------------------------------------------------- /packages/react-test-renderer/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./lib/ReactTestRenderer'); 4 | -------------------------------------------------------------------------------- /packages/react-test-renderer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-test-renderer", 3 | "version": "16.0.0-alpha", 4 | "description": "React package for snapshot testing.", 5 | "main": "index.js", 6 | "repository": "facebook/react", 7 | "keywords": [ 8 | "react", 9 | "react-native", 10 | "react-testing" 11 | ], 12 | "license": "BSD-3-Clause", 13 | "bugs": { 14 | "url": "https://github.com/facebook/react/issues" 15 | }, 16 | "homepage": "https://facebook.github.io/react/", 17 | "peerDependencies": { 18 | "react": "^16.0.0-alpha" 19 | }, 20 | "files": [ 21 | "LICENSE", 22 | "PATENTS", 23 | "README.md", 24 | "index.js" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /packages/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react", 3 | "description": "React is a JavaScript library for building user interfaces.", 4 | "version": "16.0.0-alpha", 5 | "keywords": [ 6 | "react" 7 | ], 8 | "homepage": "https://facebook.github.io/react/", 9 | "bugs": "https://github.com/facebook/react/issues", 10 | "license": "BSD-3-Clause", 11 | "files": [ 12 | "LICENSE", 13 | "PATENTS", 14 | "addons.js", 15 | "react.js", 16 | "addons/", 17 | "dist/", 18 | "lib/" 19 | ], 20 | "main": "react.js", 21 | "repository": "facebook/react", 22 | "engines": { 23 | "node": ">=0.10.0" 24 | }, 25 | "dependencies": { 26 | "fbjs": "^0.8.4", 27 | "loose-envify": "^1.1.0", 28 | "object-assign": "^4.1.0" 29 | }, 30 | "browserify": { 31 | "transform": [ 32 | "loose-envify" 33 | ] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /packages/react/react.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./lib/React'); 4 | -------------------------------------------------------------------------------- /scripts/authors: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # Generate an AUTHORS file based on the output of git shortlog. It uses ABC 4 | # order, strips out leading spaces and numbers, then filters out specific 5 | # authors. 6 | 7 | git shortlog -se \ 8 | | perl -spe 's/^\s+\d+\s+//' \ 9 | | sed -e '/^CommitSyncScript.*$/d' \ 10 | > AUTHORS 11 | -------------------------------------------------------------------------------- /scripts/error-codes/Types.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-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 | * @flow 10 | */ 11 | 'use strict'; 12 | 13 | /*:: export type ErrorMap = { [id: string]: string; }; */ 14 | -------------------------------------------------------------------------------- /scripts/error-codes/evalToString.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-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 | * @flow 10 | */ 11 | 'use strict'; 12 | 13 | function evalToString(ast/* : Object */)/* : string */ { 14 | switch (ast.type) { 15 | case 'StringLiteral': 16 | return ast.value; 17 | case 'BinaryExpression': // `+` 18 | if (ast.operator !== '+') { 19 | throw new Error('Unsupported binary operator ' + ast.operator); 20 | } 21 | return evalToString(ast.left) + evalToString(ast.right); 22 | default: 23 | throw new Error('Unsupported type ' + ast.type); 24 | } 25 | } 26 | 27 | module.exports = evalToString; 28 | -------------------------------------------------------------------------------- /scripts/error-codes/invertObject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-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 | * @flow 10 | */ 11 | 'use strict'; 12 | 13 | /*:: import type { ErrorMap } from './Types' */ 14 | 15 | /** 16 | * turns 17 | * { 'MUCH ERROR': '0', 'SUCH WRONG': '1' } 18 | * into 19 | * { 0: 'MUCH ERROR', 1: 'SUCH WRONG' } 20 | */ 21 | function invertObject(targetObj/* : ErrorMap */)/* : ErrorMap */ { 22 | var result = {}; 23 | var mapKeys = Object.keys(targetObj); 24 | 25 | for (let i = 0; i < mapKeys.length; i++) { 26 | var originalKey = mapKeys[i]; 27 | var originalVal = targetObj[originalKey]; 28 | 29 | result[originalVal] = originalKey; 30 | } 31 | 32 | return result; 33 | } 34 | 35 | module.exports = invertObject; 36 | -------------------------------------------------------------------------------- /scripts/git/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # To enable this hook, symlink or copy this file to .git/hooks/pre-commit. 4 | 5 | # Redirect output to stderr. 6 | exec 1>&2 7 | 8 | git diff --cached --name-only --diff-filter=ACMRTUB | \ 9 | grep '\.js$' | \ 10 | xargs ./node_modules/.bin/eslint -- 11 | -------------------------------------------------------------------------------- /scripts/jest/environment.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | global.__DEV__ = true; 3 | 4 | // For testing DOM Fiber, we synchronously invoke all the scheduling. 5 | global.requestAnimationFrame = function(callback) { 6 | callback(); 7 | }; 8 | 9 | global.requestIdleCallback = function(callback) { 10 | callback({ timeRemaining() { return Infinity; } }); 11 | }; 12 | -------------------------------------------------------------------------------- /scripts/jest/setupSpecEquivalenceReporter.js: -------------------------------------------------------------------------------- 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 | 10 | 'use strict'; 11 | 12 | var expect = global.expect; 13 | 14 | var numExpectations = 0; 15 | 16 | global.expect = function() { 17 | numExpectations += 1; 18 | return expect.apply(this, arguments); 19 | }; 20 | 21 | beforeEach(() => numExpectations = 0); 22 | 23 | jasmine.currentEnv_.addReporter({ 24 | specDone: (spec) => { 25 | console.log( 26 | `EQUIVALENCE: ${spec.description}, ` + 27 | `status: ${spec.status}, ` + 28 | `numExpectations: ${numExpectations}` 29 | ); 30 | }, 31 | }); 32 | -------------------------------------------------------------------------------- /scripts/perf-counters/Makefile: -------------------------------------------------------------------------------- 1 | build/jsc-perf: src/* 2 | mkdir -p build 3 | g++ -std=c++11 -I/usr/include/webkitgtk-1.0/ -ljavascriptcoregtk-1.0 src/jsc-perf.cpp src/hardware-counter.cpp src/thread-local.cpp -o build/jsc-perf 4 | -------------------------------------------------------------------------------- /scripts/perf-counters/README.md: -------------------------------------------------------------------------------- 1 | # perf-counters 2 | 3 | Lightweight bindings to Linux perf event counters. 4 | 5 | ``` 6 | $ node 7 | > var PerfCounters = require('perf-counters'); 8 | > PerfCounters.init(); 9 | > var start = PerfCounters.getCounters(); console.log('test'); var end = PerfCounters.getCounters(); 10 | test 11 | > start 12 | { instructions: 1382, loads: 421, stores: 309 } 13 | > end 14 | { instructions: 647633, loads: 195771, stores: 133246 } 15 | > 16 | ``` 17 | -------------------------------------------------------------------------------- /scripts/perf-counters/binding.gyp: -------------------------------------------------------------------------------- 1 | { 2 | "targets": [ 3 | { 4 | "target_name": "perfcounters", 5 | "sources": [ 6 | "src/hardware-counter.cpp", 7 | "src/perf-counters.cpp", 8 | "src/thread-local.cpp", 9 | ], 10 | "cflags": [ 11 | "-Wno-sign-compare", 12 | ], 13 | }, 14 | ], 15 | } 16 | -------------------------------------------------------------------------------- /scripts/perf-counters/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('bindings')('perfcounters'); 4 | -------------------------------------------------------------------------------- /scripts/perf-counters/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perf-counters", 3 | "version": "0.1.2", 4 | "description": "Lightweight bindings to Linux perf event counters.", 5 | "main": "index.js", 6 | "license": "BSD-3-Clause", 7 | "dependencies": { 8 | "bindings": "^1.2.1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/ReactVersion.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactVersion 10 | */ 11 | 12 | 'use strict'; 13 | 14 | module.exports = '16.0.0-alpha'; 15 | -------------------------------------------------------------------------------- /src/addons/ReactAddonsDOMDependencies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactAddonsDOMDependencies 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDOM = require('ReactDOM'); 15 | var ReactInstanceMap = require('ReactInstanceMap'); 16 | 17 | exports.getReactDOM = function() { 18 | return ReactDOM; 19 | }; 20 | 21 | exports.getReactInstanceMap = function() { 22 | return ReactInstanceMap; 23 | }; 24 | 25 | if (__DEV__) { 26 | var ReactPerf = require('ReactPerf'); 27 | var ReactTestUtils = require('ReactTestUtils'); 28 | 29 | exports.getReactPerf = function() { 30 | return ReactPerf; 31 | }; 32 | 33 | exports.getReactTestUtils = function() { 34 | return ReactTestUtils; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /src/addons/shallowCompare.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule shallowCompare 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var shallowEqual = require('shallowEqual'); 15 | 16 | /** 17 | * Does a shallow comparison for props and state. 18 | * See ReactComponentWithPureRenderMixin 19 | * See also https://facebook.github.io/react/docs/shallow-compare.html 20 | */ 21 | function shallowCompare(instance, nextProps, nextState) { 22 | return ( 23 | !shallowEqual(instance.props, nextProps) || 24 | !shallowEqual(instance.state, nextState) 25 | ); 26 | } 27 | 28 | module.exports = shallowCompare; 29 | -------------------------------------------------------------------------------- /src/isomorphic/classic/element/ReactCurrentOwner.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactCurrentOwner 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | import type { ReactInstance } from 'ReactInstanceType'; 16 | 17 | /** 18 | * Keeps track of the current owner. 19 | * 20 | * The current owner is the component who should own any components that are 21 | * currently being constructed. 22 | */ 23 | var ReactCurrentOwner = { 24 | 25 | /** 26 | * @internal 27 | * @type {ReactComponent} 28 | */ 29 | current: (null: null | ReactInstance), 30 | 31 | }; 32 | 33 | module.exports = ReactCurrentOwner; 34 | -------------------------------------------------------------------------------- /src/isomorphic/classic/element/ReactElementType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016-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 | * @flow 10 | * @providesModule ReactElementType 11 | */ 12 | 13 | 'use strict'; 14 | 15 | import type { ReactInstance } from 'ReactInstanceType'; 16 | 17 | export type Source = { 18 | fileName: string, 19 | lineNumber: number, 20 | }; 21 | 22 | export type ReactElement = { 23 | $$typeof: any, 24 | type: any, 25 | key: any, 26 | ref: any, 27 | props: any, 28 | _owner: ReactInstance, 29 | 30 | // __DEV__ 31 | _store: { 32 | validated: boolean, 33 | }, 34 | _self: ReactElement, 35 | _shadowChildren: any, 36 | _source: Source, 37 | }; 38 | -------------------------------------------------------------------------------- /src/isomorphic/hooks/ReactComponentTreeDevtool.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016-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 | * @providesModule ReactComponentTreeDevtool 10 | */ 11 | 'use strict'; 12 | 13 | // TODO remove this proxy when RN/www gets updated 14 | module.exports = require('ReactComponentTreeHook'); 15 | -------------------------------------------------------------------------------- /src/isomorphic/modern/class/React.d.ts: -------------------------------------------------------------------------------- 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 | 10 | /** 11 | * TypeScript Definition File for React. 12 | * 13 | * Full type definitions are not yet officially supported. These are mostly 14 | * just helpers for the unit test. 15 | */ 16 | 17 | declare module 'React' { 18 | export class Component { 19 | props: any; 20 | state: any; 21 | context: any; 22 | static name: string; 23 | constructor(props?, context?); 24 | setState(partial : any, callback ?: any) : void; 25 | forceUpdate(callback ?: any) : void; 26 | } 27 | export var PropTypes : any; 28 | export function createElement(tag : any, props ?: any, ...children : any[]) : any 29 | } 30 | -------------------------------------------------------------------------------- /src/isomorphic/modern/class/ReactDOM.d.ts: -------------------------------------------------------------------------------- 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 | 10 | /** 11 | * TypeScript Definition File for React. 12 | * 13 | * Full type definitions are not yet officially supported. These are mostly 14 | * just helpers for the unit test. 15 | */ 16 | 17 | declare module 'ReactDOM' { 18 | export function render(element : any, container : any) : any 19 | export function unmountComponentAtNode(container : any) : void 20 | export function findDOMNode(instance : any) : any 21 | } 22 | -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-haste", 3 | "version": "16.0.0-alpha", 4 | "license": "BSD-3-Clause" 5 | } 6 | -------------------------------------------------------------------------------- /src/renderers/dom/ReactDOMServer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactDOMServer 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDefaultInjection = require('ReactDefaultInjection'); 15 | var ReactServerRendering = require('ReactServerRendering'); 16 | var ReactVersion = require('ReactVersion'); 17 | 18 | ReactDefaultInjection.inject(); 19 | 20 | var ReactDOMServer = { 21 | renderToString: ReactServerRendering.renderToString, 22 | renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup, 23 | version: ReactVersion, 24 | }; 25 | 26 | module.exports = ReactDOMServer; 27 | -------------------------------------------------------------------------------- /src/renderers/dom/__mocks__/ReactDOM.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | var ReactDOMFeatureFlags = require('ReactDOMFeatureFlags'); 13 | 14 | var useFiber = ReactDOMFeatureFlags.useFiber; 15 | 16 | module.exports = 17 | useFiber ? require('ReactDOMFiber') : require.requireActual('ReactDOM'); 18 | -------------------------------------------------------------------------------- /src/renderers/dom/client/__tests__/ReactDOMSVG-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | var React; 15 | var ReactDOMServer; 16 | 17 | describe('ReactDOMSVG', () => { 18 | 19 | beforeEach(() => { 20 | React = require('React'); 21 | ReactDOMServer = require('ReactDOMServer'); 22 | }); 23 | 24 | it('creates initial namespaced markup', () => { 25 | var markup = ReactDOMServer.renderToString( 26 | 27 | 28 | 29 | ); 30 | expect(markup).toContain('xlink:href="http://i.imgur.com/w7GCRPb.png"'); 31 | }); 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /src/renderers/dom/client/renderSubtreeIntoContainer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule renderSubtreeIntoContainer 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactMount = require('ReactMount'); 15 | 16 | module.exports = ReactMount.renderSubtreeIntoContainer; 17 | -------------------------------------------------------------------------------- /src/renderers/dom/client/utils/ViewportMetrics.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ViewportMetrics 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ViewportMetrics = { 15 | 16 | currentScrollLeft: 0, 17 | 18 | currentScrollTop: 0, 19 | 20 | refreshScrollValues: function(scrollPosition) { 21 | ViewportMetrics.currentScrollLeft = scrollPosition.x; 22 | ViewportMetrics.currentScrollTop = scrollPosition.y; 23 | }, 24 | 25 | }; 26 | 27 | module.exports = ViewportMetrics; 28 | -------------------------------------------------------------------------------- /src/renderers/dom/client/utils/createMicrosoftUnsafeLocalFunction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule createMicrosoftUnsafeLocalFunction 10 | */ 11 | 12 | /* globals MSApp */ 13 | 14 | 'use strict'; 15 | 16 | /** 17 | * Create a function which has 'unsafe' privileges (required by windows8 apps) 18 | */ 19 | var createMicrosoftUnsafeLocalFunction = function(func) { 20 | if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) { 21 | return function(arg0, arg1, arg2, arg3) { 22 | MSApp.execUnsafeLocalFunction(function() { 23 | return func(arg0, arg1, arg2, arg3); 24 | }); 25 | }; 26 | } else { 27 | return func; 28 | } 29 | }; 30 | 31 | module.exports = createMicrosoftUnsafeLocalFunction; 32 | -------------------------------------------------------------------------------- /src/renderers/dom/client/wrappers/AutoFocusUtils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule AutoFocusUtils 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDOMComponentTree = require('ReactDOMComponentTree'); 15 | 16 | var focusNode = require('focusNode'); 17 | 18 | var AutoFocusUtils = { 19 | focusDOMComponent: function() { 20 | focusNode(ReactDOMComponentTree.getNodeFromInstance(this)); 21 | }, 22 | }; 23 | 24 | module.exports = AutoFocusUtils; 25 | -------------------------------------------------------------------------------- /src/renderers/dom/server/ReactServerBatchingStrategy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014-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 | * @providesModule ReactServerBatchingStrategy 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactServerBatchingStrategy = { 15 | isBatchingUpdates: false, 16 | batchedUpdates: function(callback) { 17 | // Don't do anything here. During the server rendering we don't want to 18 | // schedule any updates. We will simply ignore them. 19 | }, 20 | }; 21 | 22 | module.exports = ReactServerBatchingStrategy; 23 | -------------------------------------------------------------------------------- /src/renderers/dom/shared/DOMNamespaces.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule DOMNamespaces 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var DOMNamespaces = { 15 | html: 'http://www.w3.org/1999/xhtml', 16 | mathml: 'http://www.w3.org/1998/Math/MathML', 17 | svg: 'http://www.w3.org/2000/svg', 18 | }; 19 | 20 | module.exports = DOMNamespaces; 21 | -------------------------------------------------------------------------------- /src/renderers/dom/shared/ReactDOMComponentFlags.js: -------------------------------------------------------------------------------- 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 | * @providesModule ReactDOMComponentFlags 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDOMComponentFlags = { 15 | hasCachedChildNodes: 1 << 0, 16 | }; 17 | 18 | module.exports = ReactDOMComponentFlags; 19 | -------------------------------------------------------------------------------- /src/renderers/dom/shared/ReactDOMFeatureFlags.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactDOMFeatureFlags 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDOMFeatureFlags = { 15 | useCreateElement: true, 16 | useFiber: false, 17 | }; 18 | 19 | module.exports = ReactDOMFeatureFlags; 20 | -------------------------------------------------------------------------------- /src/renderers/dom/shared/quoteAttributeValueForBrowser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule quoteAttributeValueForBrowser 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var escapeTextContentForBrowser = require('escapeTextContentForBrowser'); 15 | 16 | /** 17 | * Escapes attribute value to prevent scripting attacks. 18 | * 19 | * @param {*} value Value to escape. 20 | * @return {string} An escaped string. 21 | */ 22 | function quoteAttributeValueForBrowser(value) { 23 | return '"' + escapeTextContentForBrowser(value) + '"'; 24 | } 25 | 26 | module.exports = quoteAttributeValueForBrowser; 27 | -------------------------------------------------------------------------------- /src/renderers/native/ReactNativeContainerInfo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 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 | * @providesModule ReactNativeContainerInfo 10 | * @flow 11 | */ 12 | 'use strict'; 13 | 14 | function ReactNativeContainerInfo(tag: number) { 15 | var info = { 16 | _tag: tag, 17 | }; 18 | return info; 19 | } 20 | 21 | module.exports = ReactNativeContainerInfo; 22 | -------------------------------------------------------------------------------- /src/renderers/native/ReactNativeEventPluginOrder.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 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 | * @providesModule ReactNativeEventPluginOrder 10 | * @flow 11 | */ 12 | 'use strict'; 13 | 14 | var ReactNativeEventPluginOrder = [ 15 | 'ResponderEventPlugin', 16 | 'ReactNativeBridgeEventPlugin', 17 | ]; 18 | 19 | module.exports = ReactNativeEventPluginOrder; 20 | -------------------------------------------------------------------------------- /src/renderers/native/ReactNativeGlobalResponderHandler.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 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 | * @providesModule ReactNativeGlobalResponderHandler 10 | */ 11 | 'use strict'; 12 | 13 | var UIManager = require('UIManager'); 14 | 15 | var ReactNativeGlobalResponderHandler = { 16 | onChange: function(from, to, blockNativeResponder) { 17 | if (to !== null) { 18 | UIManager.setJSResponder( 19 | to._rootNodeID, 20 | blockNativeResponder 21 | ); 22 | } else { 23 | UIManager.clearJSResponder(); 24 | } 25 | }, 26 | }; 27 | 28 | module.exports = ReactNativeGlobalResponderHandler; 29 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/InitializeJavaScriptAppEngine.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | // Noop 13 | 14 | // TODO #10932517: Move all initialization callers back into react-native 15 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/RCTEventEmitter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | var RCTEventEmitter = { 13 | register: jest.fn(), 14 | }; 15 | 16 | module.exports = RCTEventEmitter; 17 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/TextInputState.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | // Mock of the Native Hooks 13 | // TODO: Should this move into the components themselves? E.g. focusable 14 | 15 | var TextInputState = {}; 16 | 17 | module.exports = TextInputState; 18 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/UIManager.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | // Mock of the Native Hooks 13 | 14 | var RCTUIManager = { 15 | createView: jest.fn(), 16 | setChildren: jest.fn(), 17 | manageChildren: jest.fn(), 18 | updateView: jest.fn(), 19 | removeSubviewsFromContainerWithID: jest.fn(), 20 | replaceExistingNonRootView: jest.fn(), 21 | }; 22 | 23 | module.exports = RCTUIManager; 24 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/View.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | var createReactNativeComponentClass = require('createReactNativeComponentClass'); 13 | 14 | var View = createReactNativeComponentClass({ 15 | validAttributes: {}, 16 | uiViewClassName: 'View', 17 | }); 18 | 19 | module.exports = View; 20 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/deepFreezeAndThrowOnMutationInDev.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | // TODO: move into react or fbjs 13 | 14 | var deepFreezeAndThrowOnMutationInDev = function() { }; 15 | 16 | module.exports = deepFreezeAndThrowOnMutationInDev; 17 | -------------------------------------------------------------------------------- /src/renderers/native/__mocks__/flattenStyle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-2015, 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 | 10 | 'use strict'; 11 | 12 | // TODO: Move flattenStyle into react 13 | 14 | var flattenStyle = function() { }; 15 | 16 | module.exports = flattenStyle; 17 | -------------------------------------------------------------------------------- /src/renderers/shared/ReactInstrumentation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016-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 | * @providesModule ReactInstrumentation 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | // Trust the developer to only use ReactInstrumentation with a __DEV__ check 16 | var debugTool = ((null: any): typeof ReactDebugTool); 17 | 18 | if (__DEV__) { 19 | var ReactDebugTool = require('ReactDebugTool'); 20 | debugTool = ReactDebugTool; 21 | } 22 | 23 | module.exports = {debugTool}; 24 | -------------------------------------------------------------------------------- /src/renderers/shared/fiber/ReactPriorityLevel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactPriorityLevel 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | export type PriorityLevel = 0 | 1 | 2 | 3 | 4 | 5; 16 | 17 | module.exports = { 18 | NoWork: 0, // No work is pending. 19 | SynchronousPriority: 1, // For controlled text inputs. Synchronous side-effects. 20 | AnimationPriority: 2, // Needs to complete before the next frame. 21 | HighPriority: 3, // Interaction that needs to complete pretty soon to feel responsive. 22 | LowPriority: 4, // Data fetching, or result from updating stores. 23 | OffscreenPriority: 5, // Won't be visible but do the work in case it becomes visible. 24 | }; 25 | -------------------------------------------------------------------------------- /src/renderers/shared/fiber/ReactTypeOfWork.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactTypeOfWork 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | export type TypeOfWork = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7; 16 | 17 | module.exports = { 18 | IndeterminateComponent: 0, // Before we know whether it is functional or class 19 | FunctionalComponent: 1, 20 | ClassComponent: 2, 21 | HostContainer: 3, // Root of a host tree. Could be nested inside another node. 22 | HostComponent: 4, 23 | CoroutineComponent: 5, 24 | CoroutineHandlerPhase: 6, 25 | YieldComponent: 7, 26 | }; 27 | -------------------------------------------------------------------------------- /src/renderers/shared/fiber/isomorphic/ReactTypes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014-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 | * @providesModule ReactTypes 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | import type { ReactCoroutine, ReactYield } from 'ReactCoroutine'; 16 | 17 | export type ReactNode = ReactElement | ReactCoroutine | ReactYield | ReactText | ReactFragment; 18 | 19 | export type ReactFragment = ReactEmpty | Iterable; 20 | 21 | export type ReactNodeList = ReactEmpty | ReactNode; 22 | 23 | export type ReactText = string | number; 24 | 25 | export type ReactEmpty = null | void | boolean; 26 | -------------------------------------------------------------------------------- /src/renderers/shared/stack/event/__tests__/EventPluginHub-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | jest.mock('isEventSupported'); 15 | 16 | describe('EventPluginHub', () => { 17 | var EventPluginHub; 18 | var isEventSupported; 19 | 20 | beforeEach(() => { 21 | jest.resetModuleRegistry(); 22 | EventPluginHub = require('EventPluginHub'); 23 | isEventSupported = require('isEventSupported'); 24 | isEventSupported.mockReturnValueOnce(false); 25 | }); 26 | 27 | it('should prevent non-function listeners', () => { 28 | expect(function() { 29 | EventPluginHub.putListener(1, 'onClick', 'not a function'); 30 | }).toThrowError( 31 | 'Expected onClick listener to be a function, instead got type string' 32 | ); 33 | }); 34 | }); 35 | -------------------------------------------------------------------------------- /src/renderers/shared/stack/reconciler/ReactEmptyComponent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014-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 | * @providesModule ReactEmptyComponent 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var emptyComponentFactory; 15 | 16 | var ReactEmptyComponentInjection = { 17 | injectEmptyComponentFactory: function(factory) { 18 | emptyComponentFactory = factory; 19 | }, 20 | }; 21 | 22 | var ReactEmptyComponent = { 23 | create: function(instantiate) { 24 | return emptyComponentFactory(instantiate); 25 | }, 26 | }; 27 | 28 | ReactEmptyComponent.injection = ReactEmptyComponentInjection; 29 | 30 | module.exports = ReactEmptyComponent; 31 | -------------------------------------------------------------------------------- /src/renderers/shared/stack/reconciler/ReactMultiChildUpdateTypes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactMultiChildUpdateTypes 10 | */ 11 | 12 | 'use strict'; 13 | 14 | /** 15 | * When a component's children are updated, a series of update configuration 16 | * objects are created in order to batch and serialize the required changes. 17 | * 18 | * Enumerates all the possible types of update configurations. 19 | */ 20 | export type ReactMultiChildUpdateTypes = 21 | 'INSERT_MARKUP' | 22 | 'MOVE_EXISTING' | 23 | 'REMOVE_NODE' | 24 | 'SET_MARKUP' | 25 | 'TEXT_CONTENT'; 26 | -------------------------------------------------------------------------------- /src/renderers/shared/stack/reconciler/getHostComponentFromComposite.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule getHostComponentFromComposite 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactNodeTypes = require('ReactNodeTypes'); 15 | 16 | function getHostComponentFromComposite(inst) { 17 | var type; 18 | 19 | while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) { 20 | inst = inst._renderedComponent; 21 | } 22 | 23 | if (type === ReactNodeTypes.HOST) { 24 | return inst._renderedComponent; 25 | } else if (type === ReactNodeTypes.EMPTY) { 26 | return null; 27 | } 28 | } 29 | 30 | module.exports = getHostComponentFromComposite; 31 | -------------------------------------------------------------------------------- /src/renderers/shared/utils/ReactFeatureFlags.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactFeatureFlags 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | var ReactFeatureFlags = { 16 | // When true, call console.time() before and .timeEnd() after each top-level 17 | // render (both initial renders and updates). Useful when looking at prod-mode 18 | // timeline profiles in Chrome, for example. 19 | logTopLevelRenders: false, 20 | }; 21 | 22 | module.exports = ReactFeatureFlags; 23 | -------------------------------------------------------------------------------- /src/renderers/shared/utils/forEachAccumulated.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule forEachAccumulated 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | /** 16 | * @param {array} arr an "accumulation" of items which is either an Array or 17 | * a single item. Useful when paired with the `accumulate` module. This is a 18 | * simple utility that allows us to reason about a collection of items, but 19 | * handling the case when there is exactly one item (and we do not need to 20 | * allocate an array). 21 | */ 22 | function forEachAccumulated( 23 | arr: ?(T | Array), 24 | cb: ((elem: T) => void), 25 | scope: ?any, 26 | ) { 27 | if (Array.isArray(arr)) { 28 | arr.forEach(cb, scope); 29 | } else if (arr) { 30 | cb.call(scope, arr); 31 | } 32 | } 33 | 34 | module.exports = forEachAccumulated; 35 | -------------------------------------------------------------------------------- /src/renderers/testing/ReactTestEmptyComponent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactTestEmptyComponent 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | class ReactTestEmptyComponent { 16 | _currentElement: null; 17 | 18 | constructor() { 19 | this._currentElement = null; 20 | } 21 | receiveComponent(): void {} 22 | toJSON(): void {} 23 | mountComponent(): void {} 24 | getHostNode(): void {} 25 | unmountComponent(): void {} 26 | } 27 | 28 | module.exports = ReactTestEmptyComponent; 29 | -------------------------------------------------------------------------------- /src/renderers/testing/ReactTestTextComponent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactTestTextComponent 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | import type { ReactText } from 'ReactTypes'; 16 | 17 | class ReactTestTextComponent { 18 | _currentElement: ReactText; 19 | 20 | constructor(element: ReactText) { 21 | this._currentElement = element; 22 | } 23 | 24 | receiveComponent(nextElement: ReactText) { 25 | this._currentElement = nextElement; 26 | } 27 | 28 | toJSON(): ReactText { 29 | return this._currentElement; 30 | } 31 | 32 | mountComponent(): void {} 33 | getHostNode(): void {} 34 | unmountComponent(): void {} 35 | } 36 | 37 | module.exports = ReactTestTextComponent; 38 | -------------------------------------------------------------------------------- /src/shared/types/ReactPropTypeLocationNames.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @flow 10 | * @providesModule ReactPropTypeLocationNames 11 | */ 12 | 13 | 'use strict'; 14 | 15 | import type { ReactPropTypeLocations } from 'ReactPropTypeLocations'; 16 | 17 | type NamesType = {[key: ReactPropTypeLocations]: string}; 18 | 19 | var ReactPropTypeLocationNames: NamesType = {}; 20 | 21 | if (__DEV__) { 22 | ReactPropTypeLocationNames = { 23 | prop: 'prop', 24 | context: 'context', 25 | childContext: 'child context', 26 | }; 27 | } 28 | 29 | module.exports = ReactPropTypeLocationNames; 30 | -------------------------------------------------------------------------------- /src/shared/types/ReactPropTypeLocations.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @flow 10 | * @providesModule ReactPropTypeLocations 11 | */ 12 | 13 | 'use strict'; 14 | 15 | export type ReactPropTypeLocations = 16 | 'prop' | 17 | 'context' | 18 | 'childContext'; 19 | -------------------------------------------------------------------------------- /src/shared/types/ReactPropTypesSecret.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @flow 10 | * @providesModule ReactPropTypesSecret 11 | */ 12 | 13 | 'use strict'; 14 | 15 | const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; 16 | 17 | module.exports = ReactPropTypesSecret; 18 | -------------------------------------------------------------------------------- /src/shared/utils/ReactElementSymbol.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014-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 | * @providesModule ReactElementSymbol 10 | * @flow 11 | */ 12 | 13 | 'use strict'; 14 | 15 | // The Symbol used to tag the ReactElement type. If there is no native Symbol 16 | // nor polyfill, then a plain number is used for performance. 17 | var REACT_ELEMENT_TYPE = 18 | (typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element')) || 19 | 0xeac7; 20 | 21 | module.exports = REACT_ELEMENT_TYPE; 22 | -------------------------------------------------------------------------------- /src/shared/utils/canDefineProperty.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @flow 10 | * @providesModule canDefineProperty 11 | */ 12 | 13 | 'use strict'; 14 | 15 | var canDefineProperty = false; 16 | if (__DEV__) { 17 | try { 18 | // $FlowFixMe https://github.com/facebook/flow/issues/285 19 | Object.defineProperty({}, 'x', {get: function() {}}); 20 | canDefineProperty = true; 21 | } catch (x) { 22 | // IE will fail on defineProperty 23 | } 24 | } 25 | 26 | module.exports = canDefineProperty; 27 | -------------------------------------------------------------------------------- /src/test/getTestDocument.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule getTestDocument 10 | */ 11 | 12 | 'use strict'; 13 | 14 | function getTestDocument(markup) { 15 | document.open(); 16 | document.write( 17 | markup || 'test doc' 18 | ); 19 | document.close(); 20 | return document; 21 | } 22 | 23 | module.exports = getTestDocument; 24 | -------------------------------------------------------------------------------- /src/umd/ReactDOMServerUMDEntry.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactDOMServerUMDEntry 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDOMServer = require('ReactDOMServer'); 15 | 16 | module.exports = ReactDOMServer; 17 | -------------------------------------------------------------------------------- /src/umd/ReactDOMUMDEntry.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactDOMUMDEntry 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactDOM = require('ReactDOM'); 15 | 16 | var ReactDOMUMDEntry = Object.assign({ 17 | __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { 18 | ReactInstanceMap: require('ReactInstanceMap'), 19 | }, 20 | }, ReactDOM); 21 | 22 | if (__DEV__) { 23 | Object.assign( 24 | ReactDOMUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, 25 | { 26 | // ReactPerf and ReactTestUtils currently only work with the DOM renderer 27 | // so we expose them from here, but only in DEV mode. 28 | ReactPerf: require('ReactPerf'), 29 | ReactTestUtils: require('ReactTestUtils'), 30 | } 31 | ); 32 | } 33 | 34 | module.exports = ReactDOMUMDEntry; 35 | -------------------------------------------------------------------------------- /src/umd/ReactUMDEntry.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactUMDEntry 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var React = require('React'); 15 | 16 | // `version` will be added here by the React module. 17 | var ReactUMDEntry = Object.assign({ 18 | __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { 19 | ReactCurrentOwner: require('ReactCurrentOwner'), 20 | }, 21 | }, React); 22 | 23 | if (__DEV__) { 24 | Object.assign( 25 | ReactUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, 26 | { 27 | // ReactComponentTreeHook should not be included in production. 28 | ReactComponentTreeHook: require('ReactComponentTreeHook'), 29 | } 30 | ); 31 | } 32 | 33 | module.exports = ReactUMDEntry; 34 | -------------------------------------------------------------------------------- /src/umd/ReactWithAddonsUMDEntry.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactWithAddonsUMDEntry 10 | */ 11 | 12 | 'use strict'; 13 | 14 | var ReactWithAddons = require('ReactWithAddons'); 15 | 16 | // `version` will be added here by the React module. 17 | var ReactWithAddonsUMDEntry = Object.assign({ 18 | __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { 19 | ReactCurrentOwner: require('ReactCurrentOwner'), 20 | }, 21 | }, ReactWithAddons); 22 | 23 | if (__DEV__) { 24 | Object.assign( 25 | ReactWithAddonsUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, 26 | { 27 | // ReactComponentTreeHook should not be included in production. 28 | ReactComponentTreeHook: require('ReactComponentTreeHook'), 29 | } 30 | ); 31 | } 32 | 33 | module.exports = ReactWithAddonsUMDEntry; 34 | -------------------------------------------------------------------------------- /src/umd/shims/ReactAddonsDOMDependenciesUMDShim.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactAddonsDOMDependenciesUMDShim 10 | */ 11 | 12 | /* globals ReactDOM */ 13 | 14 | 'use strict'; 15 | 16 | exports.getReactDOM = function() { 17 | return ReactDOM; 18 | }; 19 | 20 | exports.getReactInstanceMap = function() { 21 | return ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactInstanceMap; 22 | }; 23 | 24 | if (__DEV__) { 25 | exports.getReactPerf = function() { 26 | return ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactPerf; 27 | }; 28 | 29 | exports.getReactTestUtils = function() { 30 | return ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactTestUtils; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /src/umd/shims/ReactComponentTreeHookUMDShim.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactComponentTreeHookUMDShim 10 | */ 11 | 12 | /* globals React */ 13 | 14 | 'use strict'; 15 | 16 | var ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; 17 | 18 | module.exports = ReactInternals.ReactComponentTreeHook; 19 | -------------------------------------------------------------------------------- /src/umd/shims/ReactCurrentOwnerUMDShim.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactCurrentOwnerUMDShim 10 | */ 11 | 12 | /* globals React */ 13 | 14 | 'use strict'; 15 | 16 | var ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; 17 | 18 | module.exports = ReactInternals.ReactCurrentOwner; 19 | -------------------------------------------------------------------------------- /src/umd/shims/ReactUMDShim.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2013-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 | * @providesModule ReactUMDShim 10 | */ 11 | 12 | /* globals React */ 13 | 14 | 'use strict'; 15 | 16 | module.exports = React; 17 | -------------------------------------------------------------------------------- /starter/README.md: -------------------------------------------------------------------------------- 1 | # Welcome to React! 2 | 3 | You've just downloaded the React starter kit... Congratulations! 4 | 5 | To begin, check out the `examples/` directory for a bunch of examples, or check out [Getting Started](https://facebook.github.io/react/docs/getting-started.html) for more information. 6 | 7 | In some browsers our examples won't work from the local file system; run `python -m SimpleHTTPServer` and visit `http://localhost:8000/` to view them. 8 | 9 | Want to start your own app? Just copy `examples/basic-jsx-external` and start hacking! Remember: before launching you'll want to precompile your JSX code as we do in `examples/basic-jsx-precompile`; this requires doing `npm install -g react-tools` and then running our `jsx` tool. See [Getting Started](https://facebook.github.io/react/docs/getting-started.html) for more information. 10 | 11 | Happy Hacking! 12 | --------------------------------------------------------------------------------