diff --git a/.env.development b/.env.development old mode 100644 new mode 100755 diff --git a/.env.production b/.env.production old mode 100644 new mode 100755 diff --git a/.eslintignore b/.eslintignore old mode 100644 new mode 100755 diff --git a/.eslintrc b/.eslintrc old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/0-bug.yml b/.github/ISSUE_TEMPLATE/0-bug.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/1-typo.yml b/.github/ISSUE_TEMPLATE/1-typo.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/2-suggestion.yml b/.github/ISSUE_TEMPLATE/2-suggestion.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/3-framework.yml b/.github/ISSUE_TEMPLATE/3-framework.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml old mode 100644 new mode 100755 diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md old mode 100644 new mode 100755 diff --git a/.github/dependabot.yml b/.github/dependabot.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/analyze_comment.yml b/.github/workflows/analyze_comment.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/discord_notify.yml b/.github/workflows/discord_notify.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/label_core_team_prs.yml b/.github/workflows/label_core_team_prs.yml old mode 100644 new mode 100755 index f9b3328ee..7473ce0a7 --- a/.github/workflows/label_core_team_prs.yml +++ b/.github/workflows/label_core_team_prs.yml @@ -11,31 +11,33 @@ env: SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1 jobs: - check_maintainer: - uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main - permissions: - # Used by check_maintainer - contents: read - with: - actor: ${{ github.event.pull_request.user.login }} - - label: - if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }} + # Disabled in fork — reusable workflow from facebook/react is not accessible + # check_maintainer: + # uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main + # permissions: + # contents: read + # with: + # actor: ${{ github.event.pull_request.user.login }} + # + # label: + # if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }} + # runs-on: ubuntu-latest + # needs: check_maintainer + # permissions: + # issues: write + # pull-requests: write + # steps: + # - name: Label PR as React Core Team + # uses: actions/github-script@v7 + # with: + # script: | + # github.rest.issues.addLabels({ + # owner: context.repo.owner, + # repo: context.repo.repo, + # issue_number: ${{ github.event.number }}, + # labels: ['React Core Team'] + # }); + noop: runs-on: ubuntu-latest - needs: check_maintainer - permissions: - # Used to add labels on issues - issues: write - # Used to add labels on PRs - pull-requests: write steps: - - name: Label PR as React Core Team - uses: actions/github-script@v7 - with: - script: | - github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: ${{ github.event.number }}, - labels: ['React Core Team'] - }); + - run: echo "No-op in fork" diff --git a/.github/workflows/site_lint.yml b/.github/workflows/site_lint.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.prettierignore b/.prettierignore old mode 100644 new mode 100755 diff --git a/.prettierrc b/.prettierrc old mode 100644 new mode 100755 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md old mode 100644 new mode 100755 index f049d4c53..e1ad260ee --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,76 +1,48 @@ -# Code of Conduct +# قوانین رفتاری -## Our Pledge +## عهد ما -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to make participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. +ما به عنوان مشارکت‌کنندگان و نگه‌دارندگان پروژه، در راستای ایجاد محیطی باز و صمیمی، متعهد می‌شویم که مشارکت در پروژه و جامعه ما برای همه بدون آزار و اذیت باشد، صرف‌نظر از سن، اندازه بدن، ناتوانی، قومیت، ویژگی‌های جنسی، هویت و بیان جنسیتی، سطح تجربه، تحصیلات، وضعیت اقتصادی-اجتماعی، ملیت، ظاهر شخصی، نژاد، دین، یا هویت و گرایش جنسی. -## Our Standards +## استانداردهای ما -Examples of behavior that contributes to creating a positive environment -include: +نمونه‌هایی از رفتارهایی که به ایجاد محیطی مثبت کمک می‌کنند: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* استفاده از زبان خوشایند و فراگیر +* احترام به دیدگاه‌ها و تجربیات متفاوت +* پذیرش محترمانه انتقاد سازنده +* تمرکز بر آنچه برای جامعه بهتر است +* نشان دادن همدلی نسبت به سایر اعضای جامعه -Examples of unacceptable behavior by participants include: +نمونه‌هایی از رفتارهای غیرقابل قبول توسط شرکت‌کنندگان: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +* استفاده از زبان یا تصاویر جنسی و توجه یا پیشنهادهای جنسی ناخواسته +* ترول، توهین/کامنت‌های تحقیرآمیز، و حملات شخصی یا سیاسی +* آزار و اذیت عمومی یا خصوصی +* انتشار اطلاعات خصوصی دیگران، مانند آدرس فیزیکی یا الکترونیکی، بدون اجازه صریح +* سایر رفتارهایی که به طور معقولانه‌ای در محیط حرفه‌ای نامناسب تلقی می‌شوند -## Our Responsibilities +## مسئولیت‌های ما -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +نگه‌دارندگان پروژه مسئول شفاف‌سازی استانداردهای رفتار قابل قبول هستند و انتظار می‌رود در پاسخ به هرگونه رفتار غیرقابل قبول، اقدامات اصلاحی مناسب و منصفانه انجام دهند. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +نگه‌دارندگان پروژه حق و مسئولیت دارند که نظرات، کامیت‌ها، کد، ویرایش‌های ویکی، issues و سایر مشارکت‌هایی که با این قوانین رفتاری همسو نیستند را حذف، ویرایش یا رد کنند، و یا هر مشارکت‌کننده‌ای را به طور موقت یا دائم برای رفتارهایی که نامناسب، تهدیدآمیز، توهین‌آمیز یا مضر می‌دانند مسدود کنند. -## Scope +## دامنه -This Code of Conduct applies within all project spaces, and it also applies when -an individual is representing the project or its community in public spaces. -Examples of representing a project or community include using an official -project e-mail address, posting via an official social media account, or acting -as an appointed representative at an online or offline event. Representation of -a project may be further defined and clarified by project maintainers. +این قوانین رفتاری در تمام فضاهای پروژه اعمال می‌شود و همچنین زمانی اعمال می‌شود که یک فرد نماینده پروژه یا جامعه آن در فضاهای عمومی باشد. نمونه‌هایی از نمایندگی یک پروژه یا جامعه شامل استفاده از آدرس ایمیل رسمی پروژه، ارسال از طریق حساب رسمی شبکه اجتماعی، یا عمل به عنوان نماینده منصوب در یک رویداد آنلاین یا آفلاین است. نمایندگی یک پروژه ممکن است توسط نگه‌دارندگان پروژه بیشتر تعریف و شفاف شود. -## Enforcement +## اجرا -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at . All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +موارد آزار، اذیت یا سایر رفتارهای غیرقابل قبول را می‌توانید از طریق تماس با تیم پروژه به آدرس گزارش دهید. تمام شکایات بررسی و بررسی خواهند شد و منجر به پاسخی خواهند شد که برای شرایط لازم و مناسب تلقی می‌شود. تیم پروژه موظف است محرمانگی گزارش‌دهنده یک حادثه را حفظ کند. جزئیات بیشتر سیاست‌های اجرایی خاص ممکن است به طور جداگانه منتشر شود. -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +نگه‌دارندگان پروژه که این قوانین رفتاری را با حسن نیت دنبال یا اجرا نمی‌کنند، ممکن است با پیامدهای موقت یا دائمی مطابق با تصمیم سایر اعضای رهبری پروژه مواجه شوند. -## Attribution +## ارجاع -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +این قوانین رفتاری از [Contributor Covenant][homepage]، نسخه 1.4، الگوبرداری شده است. +نسخه اصلی در https://www.contributor-covenant.org/version/1/4/code-of-conduct.html موجود است. [homepage]: https://www.contributor-covenant.org -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq +برای پاسخ به سوالات متداول درباره این قوانین رفتاری، به https://www.contributor-covenant.org/faq مراجعه کنید. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/LICENSE-DOCS.md b/LICENSE-DOCS.md old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/STYLE-GUIDE.md b/STYLE-GUIDE.md old mode 100644 new mode 100755 diff --git a/TRANSLATION.md b/TRANSLATION.md old mode 100644 new mode 100755 diff --git a/colors.js b/colors.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/fixtures/src/content/basic-error.md b/eslint-local-rules/__tests__/fixtures/src/content/basic-error.md old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/fixtures/src/content/duplicate-metadata.md b/eslint-local-rules/__tests__/fixtures/src/content/duplicate-metadata.md old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/fixtures/src/content/malformed-metadata.md b/eslint-local-rules/__tests__/fixtures/src/content/malformed-metadata.md old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/fixtures/src/content/mixed-language.md b/eslint-local-rules/__tests__/fixtures/src/content/mixed-language.md old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/fixtures/src/content/stale-expected-error.md b/eslint-local-rules/__tests__/fixtures/src/content/stale-expected-error.md old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/fixtures/src/content/suppressed-error.md b/eslint-local-rules/__tests__/fixtures/src/content/suppressed-error.md old mode 100644 new mode 100755 diff --git a/eslint-local-rules/__tests__/lint-markdown-code-blocks.test.js b/eslint-local-rules/__tests__/lint-markdown-code-blocks.test.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/index.js b/eslint-local-rules/index.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/package.json b/eslint-local-rules/package.json old mode 100644 new mode 100755 diff --git a/eslint-local-rules/parser.js b/eslint-local-rules/parser.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/rules/diagnostics.js b/eslint-local-rules/rules/diagnostics.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/rules/lint-markdown-code-blocks.js b/eslint-local-rules/rules/lint-markdown-code-blocks.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/rules/markdown.js b/eslint-local-rules/rules/markdown.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/rules/metadata.js b/eslint-local-rules/rules/metadata.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/rules/react-compiler.js b/eslint-local-rules/rules/react-compiler.js old mode 100644 new mode 100755 diff --git a/eslint-local-rules/yarn.lock b/eslint-local-rules/yarn.lock old mode 100644 new mode 100755 diff --git a/next-env.d.ts b/next-env.d.ts old mode 100644 new mode 100755 index 3cd7048ed..52e831b43 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,5 @@ /// /// -/// // NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. +// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/next.config.js b/next.config.js old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 diff --git a/plugins/markdownToHtml.js b/plugins/markdownToHtml.js old mode 100644 new mode 100755 diff --git a/plugins/remark-header-custom-ids.js b/plugins/remark-header-custom-ids.js old mode 100644 new mode 100755 diff --git a/plugins/remark-smartypants.js b/plugins/remark-smartypants.js old mode 100644 new mode 100755 diff --git a/postcss.config.js b/postcss.config.js old mode 100644 new mode 100755 diff --git a/public/.well-known/atproto-did b/public/.well-known/atproto-did old mode 100644 new mode 100755 diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png old mode 100644 new mode 100755 diff --git a/public/android-chrome-384x384.png b/public/android-chrome-384x384.png old mode 100644 new mode 100755 diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png old mode 100644 new mode 100755 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png old mode 100644 new mode 100755 diff --git a/public/browserconfig.xml b/public/browserconfig.xml old mode 100644 new mode 100755 diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png old mode 100644 new mode 100755 diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png old mode 100644 new mode 100755 diff --git a/public/favicon.ico b/public/favicon.ico old mode 100644 new mode 100755 diff --git a/public/favicon_old.ico b/public/favicon_old.ico old mode 100644 new mode 100755 diff --git a/public/fonts/Source-Code-Pro-Bold.woff2 b/public/fonts/Source-Code-Pro-Bold.woff2 old mode 100644 new mode 100755 diff --git a/public/fonts/Source-Code-Pro-Regular.woff2 b/public/fonts/Source-Code-Pro-Regular.woff2 old mode 100644 new mode 100755 diff --git a/public/html/single-file-example.html b/public/html/single-file-example.html old mode 100644 new mode 100755 diff --git a/public/images/blog/introducing-react-dev/home-dark.png b/public/images/blog/introducing-react-dev/home-dark.png old mode 100644 new mode 100755 diff --git a/public/images/blog/introducing-react-dev/home-light.png b/public/images/blog/introducing-react-dev/home-light.png old mode 100644 new mode 100755 diff --git a/public/images/blog/react-labs-april-2025/perf_tracks.png b/public/images/blog/react-labs-april-2025/perf_tracks.png old mode 100644 new mode 100755 diff --git a/public/images/blog/react-labs-april-2025/perf_tracks.webp b/public/images/blog/react-labs-april-2025/perf_tracks.webp old mode 100644 new mode 100755 diff --git a/public/images/blog/react-labs-april-2025/perf_tracks_dark.png b/public/images/blog/react-labs-april-2025/perf_tracks_dark.png old mode 100644 new mode 100755 diff --git a/public/images/blog/react-labs-april-2025/perf_tracks_dark.webp b/public/images/blog/react-labs-april-2025/perf_tracks_dark.webp old mode 100644 new mode 100755 diff --git a/public/images/brand/logo_dark.svg b/public/images/brand/logo_dark.svg old mode 100644 new mode 100755 diff --git a/public/images/brand/logo_light.svg b/public/images/brand/logo_light.svg old mode 100644 new mode 100755 diff --git a/public/images/brand/wordmark_dark.svg b/public/images/brand/wordmark_dark.svg old mode 100644 new mode 100755 diff --git a/public/images/brand/wordmark_light.svg b/public/images/brand/wordmark_light.svg old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/conditional_render_tree.dark.png b/public/images/docs/diagrams/conditional_render_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/conditional_render_tree.png b/public/images/docs/diagrams/conditional_render_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/generic_dependency_tree.dark.png b/public/images/docs/diagrams/generic_dependency_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/generic_dependency_tree.png b/public/images/docs/diagrams/generic_dependency_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/generic_render_tree.dark.png b/public/images/docs/diagrams/generic_render_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/generic_render_tree.png b/public/images/docs/diagrams/generic_render_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/module_dependency_tree.dark.png b/public/images/docs/diagrams/module_dependency_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/module_dependency_tree.png b/public/images/docs/diagrams/module_dependency_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_context_close.dark.png b/public/images/docs/diagrams/passing_data_context_close.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_context_close.png b/public/images/docs/diagrams/passing_data_context_close.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_context_far.dark.png b/public/images/docs/diagrams/passing_data_context_far.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_context_far.png b/public/images/docs/diagrams/passing_data_context_far.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_lifting_state.dark.png b/public/images/docs/diagrams/passing_data_lifting_state.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_lifting_state.png b/public/images/docs/diagrams/passing_data_lifting_state.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_prop_drilling.dark.png b/public/images/docs/diagrams/passing_data_prop_drilling.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/passing_data_prop_drilling.png b/public/images/docs/diagrams/passing_data_prop_drilling.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/prerender.dark.png b/public/images/docs/diagrams/prerender.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/prerender.png b/public/images/docs/diagrams/prerender.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_add_component.dark.png b/public/images/docs/diagrams/preserving_state_add_component.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_add_component.png b/public/images/docs/diagrams/preserving_state_add_component.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_position_p1.dark.png b/public/images/docs/diagrams/preserving_state_diff_position_p1.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_position_p1.png b/public/images/docs/diagrams/preserving_state_diff_position_p1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_position_p2.dark.png b/public/images/docs/diagrams/preserving_state_diff_position_p2.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_position_p2.png b/public/images/docs/diagrams/preserving_state_diff_position_p2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_position_p3.dark.png b/public/images/docs/diagrams/preserving_state_diff_position_p3.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_position_p3.png b/public/images/docs/diagrams/preserving_state_diff_position_p3.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_pt1.dark.png b/public/images/docs/diagrams/preserving_state_diff_pt1.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_pt1.png b/public/images/docs/diagrams/preserving_state_diff_pt1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_pt2.dark.png b/public/images/docs/diagrams/preserving_state_diff_pt2.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_pt2.png b/public/images/docs/diagrams/preserving_state_diff_pt2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_same_pt1.dark.png b/public/images/docs/diagrams/preserving_state_diff_same_pt1.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_same_pt1.png b/public/images/docs/diagrams/preserving_state_diff_same_pt1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_same_pt2.dark.png b/public/images/docs/diagrams/preserving_state_diff_same_pt2.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_diff_same_pt2.png b/public/images/docs/diagrams/preserving_state_diff_same_pt2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_dom_tree.dark.png b/public/images/docs/diagrams/preserving_state_dom_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_dom_tree.png b/public/images/docs/diagrams/preserving_state_dom_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_increment.dark.png b/public/images/docs/diagrams/preserving_state_increment.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_increment.png b/public/images/docs/diagrams/preserving_state_increment.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_remove_component.dark.png b/public/images/docs/diagrams/preserving_state_remove_component.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_remove_component.png b/public/images/docs/diagrams/preserving_state_remove_component.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_same_component.dark.png b/public/images/docs/diagrams/preserving_state_same_component.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_same_component.png b/public/images/docs/diagrams/preserving_state_same_component.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_tree.dark.png b/public/images/docs/diagrams/preserving_state_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/preserving_state_tree.png b/public/images/docs/diagrams/preserving_state_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/prewarm.dark.png b/public/images/docs/diagrams/prewarm.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/prewarm.png b/public/images/docs/diagrams/prewarm.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/render_tree.dark.png b/public/images/docs/diagrams/render_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/render_tree.png b/public/images/docs/diagrams/render_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/responding_to_input_flow.dark.png b/public/images/docs/diagrams/responding_to_input_flow.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/responding_to_input_flow.png b/public/images/docs/diagrams/responding_to_input_flow.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_child.dark.png b/public/images/docs/diagrams/sharing_data_child.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_child.png b/public/images/docs/diagrams/sharing_data_child.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_child_clicked.dark.png b/public/images/docs/diagrams/sharing_data_child_clicked.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_child_clicked.png b/public/images/docs/diagrams/sharing_data_child_clicked.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_parent.dark.png b/public/images/docs/diagrams/sharing_data_parent.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_parent.png b/public/images/docs/diagrams/sharing_data_parent.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_parent_clicked.dark.png b/public/images/docs/diagrams/sharing_data_parent_clicked.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_data_parent_clicked.png b/public/images/docs/diagrams/sharing_data_parent_clicked.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_child.dark.png b/public/images/docs/diagrams/sharing_state_child.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_child.png b/public/images/docs/diagrams/sharing_state_child.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_child_clicked.dark.png b/public/images/docs/diagrams/sharing_state_child_clicked.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_child_clicked.png b/public/images/docs/diagrams/sharing_state_child_clicked.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_parent.dark.png b/public/images/docs/diagrams/sharing_state_parent.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_parent.png b/public/images/docs/diagrams/sharing_state_parent.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_parent_clicked.dark.png b/public/images/docs/diagrams/sharing_state_parent_clicked.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/sharing_state_parent_clicked.png b/public/images/docs/diagrams/sharing_state_parent_clicked.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/use_client_module_dependency.dark.png b/public/images/docs/diagrams/use_client_module_dependency.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/use_client_module_dependency.png b/public/images/docs/diagrams/use_client_module_dependency.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/use_client_render_tree.dark.png b/public/images/docs/diagrams/use_client_render_tree.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/use_client_render_tree.png b/public/images/docs/diagrams/use_client_render_tree.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_form.dark.png b/public/images/docs/diagrams/writing_jsx_form.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_form.png b/public/images/docs/diagrams/writing_jsx_form.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_html.dark.png b/public/images/docs/diagrams/writing_jsx_html.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_html.png b/public/images/docs/diagrams/writing_jsx_html.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_js.dark.png b/public/images/docs/diagrams/writing_jsx_js.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_js.png b/public/images/docs/diagrams/writing_jsx_js.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_sidebar.dark.png b/public/images/docs/diagrams/writing_jsx_sidebar.dark.png old mode 100644 new mode 100755 diff --git a/public/images/docs/diagrams/writing_jsx_sidebar.png b/public/images/docs/diagrams/writing_jsx_sidebar.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_browser-paint.png b/public/images/docs/illustrations/i_browser-paint.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_children-prop.png b/public/images/docs/illustrations/i_children-prop.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_declarative-ui-programming.png b/public/images/docs/illustrations/i_declarative-ui-programming.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_imperative-ui-programming.png b/public/images/docs/illustrations/i_imperative-ui-programming.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_import-export.svg b/public/images/docs/illustrations/i_import-export.svg old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_inputs1.png b/public/images/docs/illustrations/i_inputs1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_inputs2.png b/public/images/docs/illustrations/i_inputs2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_puritea-recipe.png b/public/images/docs/illustrations/i_puritea-recipe.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_react-batching.png b/public/images/docs/illustrations/i_react-batching.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_ref.png b/public/images/docs/illustrations/i_ref.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_render-and-commit1.png b/public/images/docs/illustrations/i_render-and-commit1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_render-and-commit2.png b/public/images/docs/illustrations/i_render-and-commit2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_render-and-commit3.png b/public/images/docs/illustrations/i_render-and-commit3.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_render1.png b/public/images/docs/illustrations/i_render1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_render2.png b/public/images/docs/illustrations/i_render2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_render3.png b/public/images/docs/illustrations/i_render3.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_rerender1.png b/public/images/docs/illustrations/i_rerender1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_rerender2.png b/public/images/docs/illustrations/i_rerender2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_rerender3.png b/public/images/docs/illustrations/i_rerender3.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_state-snapshot1.png b/public/images/docs/illustrations/i_state-snapshot1.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_state-snapshot2.png b/public/images/docs/illustrations/i_state-snapshot2.png old mode 100644 new mode 100755 diff --git a/public/images/docs/illustrations/i_state-snapshot3.png b/public/images/docs/illustrations/i_state-snapshot3.png old mode 100644 new mode 100755 diff --git a/public/images/docs/react-devtools-extension.png b/public/images/docs/react-devtools-extension.png old mode 100644 new mode 100755 diff --git a/public/images/docs/react-devtools-standalone.png b/public/images/docs/react-devtools-standalone.png old mode 100644 new mode 100755 diff --git a/public/images/docs/react-devtools-usedebugvalue.png b/public/images/docs/react-devtools-usedebugvalue.png old mode 100644 new mode 100755 diff --git a/public/images/docs/s_thinking-in-react_ui.png b/public/images/docs/s_thinking-in-react_ui.png old mode 100644 new mode 100755 diff --git a/public/images/docs/s_thinking-in-react_ui_outline.png b/public/images/docs/s_thinking-in-react_ui_outline.png old mode 100644 new mode 100755 diff --git a/public/images/g_arrow.png b/public/images/g_arrow.png old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_conf_elizabet.webp b/public/images/home/community/react_conf_elizabet.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_conf_fun.webp b/public/images/home/community/react_conf_fun.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_conf_hallway.webp b/public/images/home/community/react_conf_hallway.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_conf_nat.webp b/public/images/home/community/react_conf_nat.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_conf_selfie.webp b/public/images/home/community/react_conf_selfie.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_india_hallway.webp b/public/images/home/community/react_india_hallway.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_india_selfie.webp b/public/images/home/community/react_india_selfie.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_india_sunil.webp b/public/images/home/community/react_india_sunil.webp old mode 100644 new mode 100755 diff --git a/public/images/home/community/react_india_team.webp b/public/images/home/community/react_india_team.webp old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/alex.jpg b/public/images/home/conf2019/alex.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/alexandra.jpg b/public/images/home/conf2019/alexandra.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/ashley.jpg b/public/images/home/conf2019/ashley.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/becca.jpg b/public/images/home/conf2019/becca.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/brian.jpg b/public/images/home/conf2019/brian.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/brittany.jpg b/public/images/home/conf2019/brittany.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/cameron.jpg b/public/images/home/conf2019/cameron.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/cover.svg b/public/images/home/conf2019/cover.svg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/frank.jpg b/public/images/home/conf2019/frank.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/jed.jpg b/public/images/home/conf2019/jed.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/jenn.jpg b/public/images/home/conf2019/jenn.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/joe.jpg b/public/images/home/conf2019/joe.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/lee.jpg b/public/images/home/conf2019/lee.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/lizzie.jpg b/public/images/home/conf2019/lizzie.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/luca.jpg b/public/images/home/conf2019/luca.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/maja.jpg b/public/images/home/conf2019/maja.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/nat.jpg b/public/images/home/conf2019/nat.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/sophie.jpg b/public/images/home/conf2019/sophie.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/tae.jpg b/public/images/home/conf2019/tae.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/tania.jpg b/public/images/home/conf2019/tania.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/tejas.jpg b/public/images/home/conf2019/tejas.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/tom.jpg b/public/images/home/conf2019/tom.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2019/yuzhi.jpg b/public/images/home/conf2019/yuzhi.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/aakansha.jpg b/public/images/home/conf2021/aakansha.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/andrew.jpg b/public/images/home/conf2021/andrew.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/brian.jpg b/public/images/home/conf2021/brian.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/cover.svg b/public/images/home/conf2021/cover.svg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/daishi.jpg b/public/images/home/conf2021/daishi.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/debbie.jpg b/public/images/home/conf2021/debbie.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/delba.jpg b/public/images/home/conf2021/delba.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/diego.jpg b/public/images/home/conf2021/diego.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/eric.jpg b/public/images/home/conf2021/eric.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/helen.jpg b/public/images/home/conf2021/helen.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/juan.jpg b/public/images/home/conf2021/juan.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/lauren.jpg b/public/images/home/conf2021/lauren.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/linton.jpg b/public/images/home/conf2021/linton.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/lyle.jpg b/public/images/home/conf2021/lyle.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/rachel.jpg b/public/images/home/conf2021/rachel.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/rick.jpg b/public/images/home/conf2021/rick.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/robert.jpg b/public/images/home/conf2021/robert.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/roman.jpg b/public/images/home/conf2021/roman.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/sarah.jpg b/public/images/home/conf2021/sarah.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/shaundai.jpg b/public/images/home/conf2021/shaundai.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/shruti.jpg b/public/images/home/conf2021/shruti.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/steven.jpg b/public/images/home/conf2021/steven.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/tafu.jpg b/public/images/home/conf2021/tafu.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/conf2021/xuan.jpg b/public/images/home/conf2021/xuan.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/videos/documentary.webp b/public/images/home/videos/documentary.webp old mode 100644 new mode 100755 diff --git a/public/images/home/videos/hooks.jpg b/public/images/home/videos/hooks.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/videos/rethinking.jpg b/public/images/home/videos/rethinking.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/videos/rn.jpg b/public/images/home/videos/rn.jpg old mode 100644 new mode 100755 diff --git a/public/images/home/videos/rsc.jpg b/public/images/home/videos/rsc.jpg old mode 100644 new mode 100755 diff --git a/public/images/meta-gradient-dark.png b/public/images/meta-gradient-dark.png old mode 100644 new mode 100755 diff --git a/public/images/meta-gradient.png b/public/images/meta-gradient.png old mode 100644 new mode 100755 diff --git a/public/images/og-blog.png b/public/images/og-blog.png old mode 100644 new mode 100755 diff --git a/public/images/og-community.png b/public/images/og-community.png old mode 100644 new mode 100755 diff --git a/public/images/og-home.png b/public/images/og-home.png old mode 100644 new mode 100755 diff --git a/public/images/og-learn.png b/public/images/og-learn.png old mode 100644 new mode 100755 diff --git a/public/images/og-reference.png b/public/images/og-reference.png old mode 100644 new mode 100755 diff --git a/public/images/og-unknown.png b/public/images/og-unknown.png old mode 100644 new mode 100755 diff --git a/public/images/team/acdlite.jpg b/public/images/team/acdlite.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/eli-white.jpg b/public/images/team/eli-white.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/gaearon.jpg b/public/images/team/gaearon.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/hendrik.jpg b/public/images/team/hendrik.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/jack-pope.jpg b/public/images/team/jack-pope.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/jasonbonta.jpg b/public/images/team/jasonbonta.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/joe.jpg b/public/images/team/joe.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/jordan.jpg b/public/images/team/jordan.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/josh.jpg b/public/images/team/josh.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/lauren.jpg b/public/images/team/lauren.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/lesiutin.jpg b/public/images/team/lesiutin.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/matt-carroll.png b/public/images/team/matt-carroll.png old mode 100644 new mode 100755 diff --git a/public/images/team/mike.jpg b/public/images/team/mike.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/mofei-zhang.png b/public/images/team/mofei-zhang.png old mode 100644 new mode 100755 diff --git a/public/images/team/pieter.jpg b/public/images/team/pieter.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/rickhanlonii.jpg b/public/images/team/rickhanlonii.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/sebmarkbage.jpg b/public/images/team/sebmarkbage.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/sebsilbermann.jpg b/public/images/team/sebsilbermann.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/seth.jpg b/public/images/team/seth.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/sophiebits.jpg b/public/images/team/sophiebits.jpg old mode 100644 new mode 100755 diff --git a/public/images/team/yuzhi.jpg b/public/images/team/yuzhi.jpg old mode 100644 new mode 100755 diff --git a/public/images/tutorial/board-filled-with-ones.png b/public/images/tutorial/board-filled-with-ones.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/board-filled-with-value.png b/public/images/tutorial/board-filled-with-value.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/codesandbox-devtools.png b/public/images/tutorial/codesandbox-devtools.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/devtools-select.gif b/public/images/tutorial/devtools-select.gif old mode 100644 new mode 100755 diff --git a/public/images/tutorial/empty-board.png b/public/images/tutorial/empty-board.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/nine-x-filled-squares.png b/public/images/tutorial/nine-x-filled-squares.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/number-filled-board.png b/public/images/tutorial/number-filled-board.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/o-replaces-x.gif b/public/images/tutorial/o-replaces-x.gif old mode 100644 new mode 100755 diff --git a/public/images/tutorial/tictac-adding-x-s.gif b/public/images/tutorial/tictac-adding-x-s.gif old mode 100644 new mode 100755 diff --git a/public/images/tutorial/two-x-filled-squares.png b/public/images/tutorial/two-x-filled-squares.png old mode 100644 new mode 100755 diff --git a/public/images/tutorial/x-filled-square.png b/public/images/tutorial/x-filled-square.png old mode 100644 new mode 100755 diff --git a/public/images/uwu.png b/public/images/uwu.png old mode 100644 new mode 100755 diff --git a/public/js/jsfiddle-integration-babel.js b/public/js/jsfiddle-integration-babel.js old mode 100644 new mode 100755 diff --git a/public/js/jsfiddle-integration.js b/public/js/jsfiddle-integration.js old mode 100644 new mode 100755 diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png old mode 100644 new mode 100755 diff --git a/public/robots.txt b/public/robots.txt old mode 100644 new mode 100755 diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg old mode 100644 new mode 100755 diff --git a/public/site.webmanifest b/public/site.webmanifest old mode 100644 new mode 100755 diff --git a/scripts/copyright.js b/scripts/copyright.js old mode 100644 new mode 100755 diff --git a/scripts/deadLinkChecker.js b/scripts/deadLinkChecker.js old mode 100644 new mode 100755 diff --git a/scripts/downloadFonts.mjs b/scripts/downloadFonts.mjs old mode 100644 new mode 100755 diff --git a/scripts/generateRss.js b/scripts/generateRss.js old mode 100644 new mode 100755 diff --git a/scripts/headingIDHelpers/generateHeadingIDs.js b/scripts/headingIDHelpers/generateHeadingIDs.js old mode 100644 new mode 100755 diff --git a/scripts/headingIDHelpers/validateHeadingIDs.js b/scripts/headingIDHelpers/validateHeadingIDs.js old mode 100644 new mode 100755 diff --git a/scripts/headingIDHelpers/walk.js b/scripts/headingIDHelpers/walk.js old mode 100644 new mode 100755 diff --git a/scripts/headingIdLinter.js b/scripts/headingIdLinter.js old mode 100644 new mode 100755 diff --git a/src.zip b/src.zip new file mode 100644 index 000000000..ac38d0381 Binary files /dev/null and b/src.zip differ diff --git a/src/components/Breadcrumbs.tsx b/src/components/Breadcrumbs.tsx old mode 100644 new mode 100755 diff --git a/src/components/Button.tsx b/src/components/Button.tsx old mode 100644 new mode 100755 diff --git a/src/components/ButtonLink.tsx b/src/components/ButtonLink.tsx old mode 100644 new mode 100755 diff --git a/src/components/DocsFooter.tsx b/src/components/DocsFooter.tsx old mode 100644 new mode 100755 diff --git a/src/components/ErrorDecoderContext.tsx b/src/components/ErrorDecoderContext.tsx old mode 100644 new mode 100755 diff --git a/src/components/ExternalLink.tsx b/src/components/ExternalLink.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconArrow.tsx b/src/components/Icon/IconArrow.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconArrowSmall.tsx b/src/components/Icon/IconArrowSmall.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconBsky.tsx b/src/components/Icon/IconBsky.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconCanary.tsx b/src/components/Icon/IconCanary.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconChevron.tsx b/src/components/Icon/IconChevron.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconClose.tsx b/src/components/Icon/IconClose.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconCodeBlock.tsx b/src/components/Icon/IconCodeBlock.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconCopy.tsx b/src/components/Icon/IconCopy.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconDeepDive.tsx b/src/components/Icon/IconDeepDive.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconDownload.tsx b/src/components/Icon/IconDownload.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconError.tsx b/src/components/Icon/IconError.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconExperimental.tsx b/src/components/Icon/IconExperimental.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconFacebookCircle.tsx b/src/components/Icon/IconFacebookCircle.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconGitHub.tsx b/src/components/Icon/IconGitHub.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconHamburger.tsx b/src/components/Icon/IconHamburger.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconHint.tsx b/src/components/Icon/IconHint.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconInstagram.tsx b/src/components/Icon/IconInstagram.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconLink.tsx b/src/components/Icon/IconLink.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconNavArrow.tsx b/src/components/Icon/IconNavArrow.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconNewPage.tsx b/src/components/Icon/IconNewPage.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconNote.tsx b/src/components/Icon/IconNote.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconPitfall.tsx b/src/components/Icon/IconPitfall.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconRestart.tsx b/src/components/Icon/IconRestart.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconRocket.tsx b/src/components/Icon/IconRocket.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconRss.tsx b/src/components/Icon/IconRss.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconSearch.tsx b/src/components/Icon/IconSearch.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconSolution.tsx b/src/components/Icon/IconSolution.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconTerminal.tsx b/src/components/Icon/IconTerminal.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconThreads.tsx b/src/components/Icon/IconThreads.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconTwitter.tsx b/src/components/Icon/IconTwitter.tsx old mode 100644 new mode 100755 diff --git a/src/components/Icon/IconWarning.tsx b/src/components/Icon/IconWarning.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Feedback.tsx b/src/components/Layout/Feedback.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Footer.tsx b/src/components/Layout/Footer.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/HomeContent.js b/src/components/Layout/HomeContent.js old mode 100644 new mode 100755 diff --git a/src/components/Layout/Page.tsx b/src/components/Layout/Page.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Sidebar/SidebarButton.tsx b/src/components/Layout/Sidebar/SidebarButton.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Sidebar/SidebarLink.tsx b/src/components/Layout/Sidebar/SidebarLink.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Sidebar/SidebarRouteTree.tsx b/src/components/Layout/Sidebar/SidebarRouteTree.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Sidebar/index.tsx b/src/components/Layout/Sidebar/index.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/SidebarNav/SidebarNav.tsx b/src/components/Layout/SidebarNav/SidebarNav.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/SidebarNav/index.tsx b/src/components/Layout/SidebarNav/index.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/Toc.tsx b/src/components/Layout/Toc.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/TopNav/BrandMenu.tsx b/src/components/Layout/TopNav/BrandMenu.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/TopNav/TopNav.tsx b/src/components/Layout/TopNav/TopNav.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/TopNav/index.tsx b/src/components/Layout/TopNav/index.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/getRouteMeta.tsx b/src/components/Layout/getRouteMeta.tsx old mode 100644 new mode 100755 diff --git a/src/components/Layout/useTocHighlight.tsx b/src/components/Layout/useTocHighlight.tsx old mode 100644 new mode 100755 diff --git a/src/components/Logo.tsx b/src/components/Logo.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/BlogCard.tsx b/src/components/MDX/BlogCard.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Challenges/Challenge.tsx b/src/components/MDX/Challenges/Challenge.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Challenges/Challenges.tsx b/src/components/MDX/Challenges/Challenges.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Challenges/Navigation.tsx b/src/components/MDX/Challenges/Navigation.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Challenges/index.tsx b/src/components/MDX/Challenges/index.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/CodeBlock/CodeBlock.tsx b/src/components/MDX/CodeBlock/CodeBlock.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/CodeBlock/index.tsx b/src/components/MDX/CodeBlock/index.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/CodeDiagram.tsx b/src/components/MDX/CodeDiagram.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/ConsoleBlock.tsx b/src/components/MDX/ConsoleBlock.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Diagram.tsx b/src/components/MDX/Diagram.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/DiagramGroup.tsx b/src/components/MDX/DiagramGroup.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/ErrorDecoder.tsx b/src/components/MDX/ErrorDecoder.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/ExpandableCallout.tsx b/src/components/MDX/ExpandableCallout.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/ExpandableExample.tsx b/src/components/MDX/ExpandableExample.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Heading.tsx b/src/components/MDX/Heading.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/InlineCode.tsx b/src/components/MDX/InlineCode.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Intro.tsx b/src/components/MDX/Intro.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/LanguagesContext.tsx b/src/components/MDX/LanguagesContext.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Link.tsx b/src/components/MDX/Link.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/MDXComponents.module.css b/src/components/MDX/MDXComponents.module.css old mode 100644 new mode 100755 diff --git a/src/components/MDX/MDXComponents.tsx b/src/components/MDX/MDXComponents.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/PackageImport.tsx b/src/components/MDX/PackageImport.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Recap.tsx b/src/components/MDX/Recap.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/ClearButton.tsx b/src/components/MDX/Sandpack/ClearButton.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/Console.tsx b/src/components/MDX/Sandpack/Console.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/CustomPreset.tsx b/src/components/MDX/Sandpack/CustomPreset.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/DownloadButton.tsx b/src/components/MDX/Sandpack/DownloadButton.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/ErrorMessage.tsx b/src/components/MDX/Sandpack/ErrorMessage.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/LoadingOverlay.tsx b/src/components/MDX/Sandpack/LoadingOverlay.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/NavigationBar.tsx b/src/components/MDX/Sandpack/NavigationBar.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/OpenInCodeSandboxButton.tsx b/src/components/MDX/Sandpack/OpenInCodeSandboxButton.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/OpenInTypeScriptPlayground.tsx b/src/components/MDX/Sandpack/OpenInTypeScriptPlayground.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/Preview.tsx b/src/components/MDX/Sandpack/Preview.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/ReloadButton.tsx b/src/components/MDX/Sandpack/ReloadButton.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/SandpackRoot.tsx b/src/components/MDX/Sandpack/SandpackRoot.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/Themes.tsx b/src/components/MDX/Sandpack/Themes.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/createFileMap.ts b/src/components/MDX/Sandpack/createFileMap.ts old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/index.tsx b/src/components/MDX/Sandpack/index.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/runESLint.tsx b/src/components/MDX/Sandpack/runESLint.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/template.ts b/src/components/MDX/Sandpack/template.ts old mode 100644 new mode 100755 diff --git a/src/components/MDX/Sandpack/useSandpackLint.tsx b/src/components/MDX/Sandpack/useSandpackLint.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/SandpackWithHTMLOutput.tsx b/src/components/MDX/SandpackWithHTMLOutput.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/SimpleCallout.tsx b/src/components/MDX/SimpleCallout.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/TeamMember.tsx b/src/components/MDX/TeamMember.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/TerminalBlock.tsx b/src/components/MDX/TerminalBlock.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/TocContext.tsx b/src/components/MDX/TocContext.tsx old mode 100644 new mode 100755 diff --git a/src/components/MDX/YouWillLearnCard.tsx b/src/components/MDX/YouWillLearnCard.tsx old mode 100644 new mode 100755 diff --git a/src/components/PageHeading.tsx b/src/components/PageHeading.tsx old mode 100644 new mode 100755 diff --git a/src/components/Search.tsx b/src/components/Search.tsx old mode 100644 new mode 100755 diff --git a/src/components/Seo.tsx b/src/components/Seo.tsx old mode 100644 new mode 100755 diff --git a/src/components/SocialBanner.tsx b/src/components/SocialBanner.tsx old mode 100644 new mode 100755 diff --git a/src/components/Tag.tsx b/src/components/Tag.tsx old mode 100644 new mode 100755 diff --git a/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md b/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md old mode 100644 new mode 100755 index b0bc9f558..5e194e9ac --- a/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md +++ b/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md @@ -1,5 +1,5 @@ --- -title: "Introducing Zero-Bundle-Size React Server Components" +title: "معرفی کامپوننت‌های سرور ری‌اکت (React Server Components) با اندازهٔ باندل صفر" author: Dan Abramov, Lauren Tan, Joseph Savona, and Sebastian Markbage date: 2020/12/21 description: 2020 has been a long year. As it comes to an end we wanted to share a special Holiday Update on our research into zero-bundle-size React Server Components. @@ -11,24 +11,24 @@ December 21, 2020 by [Dan Abramov](https://bsky.app/profile/danabra.mov), [Laure -2020 has been a long year. As it comes to an end we wanted to share a special Holiday Update on our research into zero-bundle-size **React Server Components**. +سال ۲۰۲۰ سالی طولانی بود. وقتی به پایان می‌رسد، دوست داشتیم یک به‌روزرسانی ویژهٔ تعطیلات درباره تحقیقاتمان روی **کامپوننت‌های سرور ری‌اکت (React Server Components)** با اندازهٔ باندل صفر به اشتراک بگذاریم. --- -To introduce React Server Components, we have prepared a talk and a demo. If you want, you can check them out during the holidays, or later when work picks back up in the new year. +برای معرفی کامپوننت‌های سرور ری‌اکت، یک سخنرانی و یک دمو آماده کرده‌ایم. اگر مایل هستید، می‌توانید آن‌ها را در طول تعطیلات بررسی کنید، یا بعداً وقتی کار در سال جدید از سر گرفته می‌شود. -**React Server Components are still in research and development.** We are sharing this work in the spirit of transparency and to get initial feedback from the React community. There will be plenty of time for that, so **don't feel like you have to catch up right now!** +**کامپوننت‌های سرور ری‌اکت هنوز در مرحلهٔ تحقیق و توسعه هستند.** ما این کار را در راستای شفافیت و برای دریافت بازخورد اولیه از جامعهٔ ری‌اکت به اشتراک می‌گذاریم. زمان زیادی برای این کار وجود خواهد داشت، بنابراین **احساس نکنید که باید همین الان همه چیز را دنبال کنید!** -If you want to check them out, we recommend going in the following order: +اگر می‌خواهید آن‌ها را بررسی کنید، توصیه می‌کنیم به ترتیب زیر پیش بروید: -1. **Watch the talk** to learn about React Server Components and see the demo. +۱. **سخنرانی را تماشا کنید** تا دربارهٔ کامپوننت‌های سرور ری‌اکت بیاموزید و دمو را ببینید. -2. **[Clone the demo](http://github.com/reactjs/server-components-demo)** to play with React Server Components on your computer. +۲. **[دمو را کلون کنید](http://github.com/reactjs/server-components-demo)** تا با کامپوننت‌های سرور ری‌اکت روی کامپیوتر خودتان کار کنید. -3. **[Read the RFC (with FAQ at the end)](https://github.com/reactjs/rfcs/pull/188)** for a deeper technical breakdown and to provide feedback. +۳. **[RFC را بخوانید (که در انتها سوال‌های متداول دارد)](https://github.com/reactjs/rfcs/pull/188)** برای یک تحلیل فنی عمیق‌تر و ارائهٔ بازخورد. -We are excited to hear from you on the RFC or in replies to the [@reactjs](https://twitter.com/reactjs) Twitter handle. Happy holidays, stay safe, and see you next year! +ما مشتاقانه منتظر شنیدن نظرات شما در RFC یا در پاسخ‌ها به حساب توییتری [@reactjs](https://twitter.com/reactjs) هستیم. تعطیلات خوبی داشته باشید، در امان بمانید و سال دیگر می‌بینیمتان! diff --git a/src/content/blog/2021/06/08/the-plan-for-react-18.md b/src/content/blog/2021/06/08/the-plan-for-react-18.md old mode 100644 new mode 100755 index 38213389c..50401a041 --- a/src/content/blog/2021/06/08/the-plan-for-react-18.md +++ b/src/content/blog/2021/06/08/the-plan-for-react-18.md @@ -25,11 +25,11 @@ June 8, 2021 by [Andrew Clark](https://twitter.com/acdlite), [Brian Vaughn](http ## چه چیزهایی در ری‌اکت ۱۸ می‌آیند؟ {/*whats-coming-in-react-18*/} -زمانی که ری‌اکت ۱۸ منتشر شود، شامل بهبودهایی قابل لمس در همان لحظه اول (مانند [automatic batching](https://github.com/reactwg/react-18/discussions/21))، رابط‌های برنامه‌نویسی (API) جدید (همانند [`startTransition`](https://github.com/reactwg/react-18/discussions/41))، و یک [streaming server renderer](https://github.com/reactwg/react-18/discussions/37) جدید با پشتیبانی از `React.lazy` خواهد بود. +زمانی که ری‌اکت ۱۸ منتشر شود، شامل بهبودهایی قابل‌لمس در همان لحظه اول (مانند [دسته‌بندی خودکار (Automatic Batching)](https://github.com/reactwg/react-18/discussions/21))، رابط‌های برنامه‌نویسی (API) جدید (همانند [`startTransition`](https://github.com/reactwg/react-18/discussions/41))، و یک [رندرر سرور استریمی (Streaming Server Renderer)](https://github.com/reactwg/react-18/discussions/37) جدید با پشتیبانی از `React.lazy` خواهد بود. -این قابلیت‌ها به لطف مکانیزم جدید انتخابی که در حال اضافه کردن به ری‌اکت ۱۸ هستیم ممکن شده‌اند. این مکانیزم رندر همزمان (concurrent rendreing) نام دارد و به ری‌اکت اجازه میدهد تا چندین نسخه از رابط کاربری (UI) را به طور همزمان آماده کند. با اینکه این تغییر به طور عمده در پشت پرده اتفاق میافتد، اما قابلیت های جدیدی را برای بهبود کارآرایی نرم افزار شما (جه کارایی حقیقی و چه کارایی قابل درک در حین کار با نرم افزار) فراهم میکند. +این قابلیت‌ها به لطف مکانیزم جدید انتخابی که در حال اضافه کردن به ری‌اکت ۱۸ هستیم ممکن شده‌اند. این مکانیزم رندر همزمان (Concurrent Rendering) نام دارد و به ری‌اکت اجازه می‌دهد تا چندین نسخه از رابط کاربری (UI) را به‌طور همزمان آماده کند. با اینکه این تغییر به‌طور عمده در پشت پرده اتفاق می‌افتد، اما قابلیت‌های جدیدی را برای بهبود کارایی نرم‌افزار شما (چه کارایی حقیقی و چه کارایی قابل‌درک در حین کار با نرم‌افزار) فراهم می‌کند. -اگر در حال دنبال‌کردن تحقیقات در مورد آینده ری‌اکت بوده‌اید (که البته ما چنین توقعی از شما نداریم!)، ممکن است چیزی به اسم "concurrent mode" (مد همزمان) به گوشتان خورده باشد، یا اینکه این ممکن است اپ شما را بشکند. در جواب به این بازخورد از جامعه ری‌اکت، ما استراتژی بروزرسانی را در راستای پذیرش تدریجی بازطراحی کردیم. به جای یک "مد" همه یا هیچ چیز، رندر همزمان (concurrent rendring) تنها برای بروزرسانی‌هایی فعال خواهند بود که توسط یکی از قابلیت‌های جدید استفاده شده باشند. در عمل، این به معنی آن است که **شما میتوانید ری‌اکت ۱۸ را بدون بازنویسی بپذیرید و قابلیت های جدید را با سرعت خودتان امتحان کنید**. +اگر در حال دنبال‌کردن تحقیقات در مورد آینده ری‌اکت بوده‌اید (که البته ما چنین توقعی از شما نداریم!)، ممکن است چیزی به اسم «concurrent mode» (حالت همزمان) به گوشتان خورده باشد، یا اینکه این ممکن است برنامهٔ شما را بشکند. در جواب به این بازخورد از جامعه ری‌اکت، ما استراتژی به‌روزرسانی را در راستای پذیرش تدریجی بازطراحی کردیم. به‌جای یک «مد» همه یا هیچ، رندر همزمان (Concurrent Rendering) تنها برای به‌روزرسانی‌هایی فعال خواهد بود که توسط یکی از قابلیت‌های جدید استفاده شده باشند. در عمل، این به معنی آن است که **شما می‌توانید ری‌اکت ۱۸ را بدون بازنویسی بپذیرید و قابلیت‌های جدید را با سرعت خودتان امتحان کنید**. ## یک استراتژی پذیرش تدریجی {/*a-gradual-adoption-strategy*/} diff --git a/src/content/blog/2021/12/17/react-conf-2021-recap.md b/src/content/blog/2021/12/17/react-conf-2021-recap.md old mode 100644 new mode 100755 index c9e75ff7b..8f082787f --- a/src/content/blog/2021/12/17/react-conf-2021-recap.md +++ b/src/content/blog/2021/12/17/react-conf-2021-recap.md @@ -1,5 +1,5 @@ --- -title: "React Conf 2021 Recap" +title: "مرور React Conf 2021" author: Jesslyn Tannady and Rick Hanlon date: 2021/12/17 description: Last week we hosted our 6th React Conf. In previous years, we've used the React Conf stage to deliver industry changing announcements such as React Native and React Hooks. This year, we shared our multi-platform vision for React, starting with the release of React 18 and gradual adoption of concurrent features. @@ -11,43 +11,43 @@ December 17, 2021 by [Jesslyn Tannady](https://twitter.com/jtannady) and [Rick H -Last week we hosted our 6th React Conf. In previous years, we've used the React Conf stage to deliver industry changing announcements such as [_React Native_](https://engineering.fb.com/2015/03/26/android/react-native-bringing-modern-web-techniques-to-mobile/) and [_React Hooks_](https://reactjs.org/docs/hooks-intro.html). This year, we shared our multi-platform vision for React, starting with the release of React 18 and gradual adoption of concurrent features. +هفتهٔ گذشته میزبان ششمین React Conf بودیم. در سال‌های گذشته، از صحنهٔ React Conf برای ارائهٔ اعلامیه‌های تغییردهندهٔ صنعت مانند [_React Native_](https://engineering.fb.com/2015/03/26/android/react-native-bringing-modern-web-techniques-to-mobile/) و [_React Hooks_](https://reactjs.org/docs/hooks-intro.html) استفاده کرده‌ایم. امسال، چشم‌انداز چندسکویی خود برای ری‌اکت را به اشتراک گذاشتیم، که با انتشار React 18 و پذیرش تدریجی قابلیت‌های همزمان آغاز می‌شود. --- -This was the first time React Conf was hosted online, and it was streamed for free, translated to 8 different languages. Participants from all over the world joined our conference Discord and the replay event for accessibility in all timezones. Over 50,000 people registered, with over 60,000 views of 19 talks, and 5,000 participants in Discord across both events. +این اولین بار بود که React Conf به‌صورت آنلاین برگزار می‌شد، و به‌صورت رایگان پخش شد و به ۸ زبان مختلف ترجمه شد. شرکت‌کنندگانی از سراسر جهان به دیسکورد کنفرانس ما و رویداد پخش مجدد برای دسترسی‌پذیری در همهٔ مناطق زمانی پیوستند. بیش از ۵۰٬۰۰۰ نفر ثبت‌نام کردند، با بیش از ۶۰٬۰۰۰ بازدید از ۱۹ سخنرانی، و ۵٬۰۰۰ شرکت‌کننده در دیسکورد در طول هر دو رویداد. -All the talks are [available to stream online](https://www.youtube.com/watch?v=FZ0cG47msEk&list=PLNG_1j3cPCaZZ7etkzWA7JfdmKWT0pMsa). +تمام سخنرانی‌ها [برای پخش آنلاین در دسترس هستند](https://www.youtube.com/watch?v=FZ0cG47msEk&list=PLNG_1j3cPCaZZ7etkzWA7JfdmKWT0pMsa). -Here’s a summary of what was shared on stage: +در اینجا خلاصه‌ای از آنچه در صحنه به اشتراک گذاشته شد آمده است: -## React 18 and concurrent features {/*react-18-and-concurrent-features*/} +## React 18 و قابلیت‌های همزمان {/*react-18-and-concurrent-features*/} -In the keynote, we shared our vision for the future of React starting with React 18. +در سخنرانی اصلی، چشم‌انداز خود برای آیندهٔ ری‌اکت را که با React 18 آغاز می‌شود به اشتراک گذاشتیم. -React 18 adds the long-awaited concurrent renderer and updates to Suspense without any major breaking changes. Apps can upgrade to React 18 and begin gradually adopting concurrent features with the amount of effort on par with any other major release. +React 18 رندرر همزمان (Concurrent) مورد انتظار و به‌روزرسانی‌های ساسپنس (Suspense) را بدون هیچ تغییر عمدهٔ شکستن‌کننده‌ای اضافه می‌کند. برنامه‌ها می‌توانند به React 18 ارتقا یابند و شروع به پذیرش تدریجی قابلیت‌های همزمان کنند با میزان تلاشی هم‌تراز با هر انتشار عمدهٔ دیگر. -**This means there is no concurrent mode, only concurrent features.** +**این بدان معنا است که حالت همزمان (concurrent mode) وجود ندارد، فقط قابلیت‌های همزمان (concurrent features).** -In the keynote, we also shared our vision for Suspense, Server Components, new React working groups, and our long-term many-platform vision for React Native. +در سخنرانی اصلی، ما همچنین چشم‌انداز خود را برای ساسپنس (Suspense)، کامپوننت‌های سرور (Server Components)، گروه‌های کاری جدید ری‌اکت و چشم‌انداز بلندمدت چندسکویی خود برای React Native به اشتراک گذاشتیم. -Watch the full keynote from [Andrew Clark](https://twitter.com/acdlite), [Juan Tejada](https://twitter.com/_jstejada), [Lauren Tan](https://twitter.com/potetotes), and [Rick Hanlon](https://twitter.com/rickhanlonii) here: +سخنرانی اصلی کامل را از [Andrew Clark](https://twitter.com/acdlite)، [Juan Tejada](https://twitter.com/_jstejada)، [Lauren Tan](https://twitter.com/potetotes) و [Rick Hanlon](https://twitter.com/rickhanlonii) اینجا تماشا کنید: -## React 18 for Application Developers {/*react-18-for-application-developers*/} +## React 18 برای توسعه‌دهندگان برنامه‌های کاربری {/*react-18-for-application-developers*/} -In the keynote, we also announced that the React 18 RC is available to try now. Pending further feedback, this is the exact version of React that we will publish to stable early next year. +در سخنرانی اصلی، ما همچنین اعلام کردیم که React 18 RC اکنون برای امتحان در دسترس است. مشروط به دریافت بازخورد بیشتر، این دقیقاً همان نسخه‌ای از ری‌اکت است که اوایل سال آینده به‌صورت پایدار منتشر خواهیم کرد. -To try the React 18 RC, upgrade your dependencies: +برای امتحان کردن React 18 RC، وابستگی‌های خود را ارتقا دهید: ```bash npm install react@rc react-dom@rc ``` -and switch to the new `createRoot` API: +و به API جدید `createRoot` سوییچ کنید: ```js // before @@ -60,101 +60,101 @@ const root = ReactDOM.createRoot(container); root.render(); ``` -For a demo of upgrading to React 18, see [Shruti Kapoor](https://twitter.com/shrutikapoor08)’s talk here: +برای یک دمو از ارتقا به React 18، به سخنرانی [Shruti Kapoor](https://twitter.com/shrutikapoor08) اینجا نگاهی بیندازید: -## Streaming Server Rendering with Suspense {/*streaming-server-rendering-with-suspense*/} +## رندر سرور استریمی با ساسپنس {/*streaming-server-rendering-with-suspense*/} -React 18 also includes improvements to server-side rendering performance using Suspense. +React 18 همچنین شامل بهبودهایی در کارایی رندر سمت سرور با استفاده از ساسپنس (Suspense) است. -Streaming server rendering lets you generate HTML from React components on the server, and stream that HTML to your users. In React 18, you can use `Suspense` to break down your app into smaller independent units which can be streamed independently of each other without blocking the rest of the app. This means users will see your content sooner and be able to start interacting with it much faster. +رندر سرور استریمی به شما اجازه می‌دهد HTML را از کامپوننت‌های ری‌اکت روی سرور تولید کنید، و آن HTML را به کاربران خود استریم کنید. در React 18، می‌توانید از `Suspense` استفاده کنید تا برنامه‌تان را به واحدهای مستقل کوچک‌تری تقسیم کنید که می‌توانند مستقل از یکدیگر و بدون مسدود کردن بقیهٔ برنامه استریم شوند. این بدان معناست که کاربران محتوای شما را زودتر خواهند دید و می‌توانند خیلی سریع‌تر شروع به تعامل با آن کنند. -For a deep dive, see [Shaundai Person](https://twitter.com/shaundai)’s talk here: +برای یک بررسی عمیق، به سخنرانی [Shaundai Person](https://twitter.com/shaundai) اینجا نگاهی بیندازید: -## The first React working group {/*the-first-react-working-group*/} +## اولین گروه کاری ری‌اکت {/*the-first-react-working-group*/} -For React 18, we created our first Working Group to collaborate with a panel of experts, developers, library maintainers, and educators. Together we worked to create our gradual adoption strategy and refine new APIs such as `useId`, `useSyncExternalStore`, and `useInsertionEffect`. +برای React 18، اولین گروه کاری خود را برای همکاری با گروهی از متخصصان، توسعه‌دهندگان، نگهداران کتابخانه‌ها و مدرسان ایجاد کردیم. ما با هم استراتژی پذیرش تدریجی خود را ایجاد کردیم و APIهای جدیدی مانند `useId`، `useSyncExternalStore` و `useInsertionEffect` را اصلاح کردیم. -For an overview of this work, see [Aakansha' Doshi](https://twitter.com/aakansha1216)'s talk: +برای یک مرور از این کار، به سخنرانی [Aakansha' Doshi](https://twitter.com/aakansha1216) نگاهی بیندازید: -## React Developer Tooling {/*react-developer-tooling*/} +## ابزار توسعه‌دهندهٔ ری‌اکت {/*react-developer-tooling*/} -To support the new features in this release, we also announced the newly formed React DevTools team and a new Timeline Profiler to help developers debug their React apps. +برای پشتیبانی از قابلیت‌های جدید در این انتشار، ما همچنین تیم تازه‌تشکیل‌شدهٔ React DevTools و یک Timeline Profiler جدید را برای کمک به توسعه‌دهندگان در دیباگ برنامه‌های ری‌اکتشان اعلام کردیم. -For more information and a demo of new DevTools features, see [Brian Vaughn](https://twitter.com/brian_d_vaughn)’s talk: +برای اطلاعات بیشتر و دمویی از قابلیت‌های جدید DevTools، به سخنرانی [Brian Vaughn](https://twitter.com/brian_d_vaughn) نگاهی بیندازید: -## React without memo {/*react-without-memo*/} +## ری‌اکت بدون ممو {/*react-without-memo*/} -Looking further into the future, [Xuan Huang (黄玄)](https://twitter.com/Huxpro) shared an update from our React Labs research into an auto-memoizing compiler. Check out this talk for more information and a demo of the compiler prototype: +با نگاهی به آیندهٔ دورتر، [Xuan Huang (黄玄)](https://twitter.com/Huxpro) به‌روزرسانی‌ای از تحقیقات React Labs ما درباره یک کامپایلر مموری‌زیشن خودکار به اشتراک گذاشت. برای اطلاعات بیشتر و دمویی از نمونهٔ اولیهٔ کامپایلر، به این سخنرانی نگاهی بیندازید: -## React docs keynote {/*react-docs-keynote*/} +## سخنرانی اصلی مستندات ری‌اکت {/*react-docs-keynote*/} -[Rachel Nabors](https://twitter.com/rachelnabors) kicked off a section of talks about learning and designing with React with a keynote about our investment in React's new docs ([now shipped as react.dev](/blog/2023/03/16/introducing-react-dev)): +[Rachel Nabors](https://twitter.com/rachelnabors) بخشی از سخنرانی‌ها درباره یادگیری و طراحی با ری‌اکت را با سخنرانی اصلی درباره سرمایه‌گذاری ما در مستندات جدید ری‌اکت ([که اکنون به‌عنوان react.dev منتشر شده](/blog/2023/03/16/introducing-react-dev)) آغاز کرد: -## And more... {/*and-more*/} +## و بیشتر... {/*and-more*/} -**We also heard talks on learning and designing with React:** +**ما همچنین سخنرانی‌هایی درباره یادگیری و طراحی با ری‌اکت شنیدیم:** -* Debbie O'Brien: [Things I learnt from the new React docs](https://youtu.be/-7odLW_hG7s). -* Sarah Rainsberger: [Learning in the Browser](https://youtu.be/5X-WEQflCL0). -* Linton Ye: [The ROI of Designing with React](https://youtu.be/7cPWmID5XAk). -* Delba de Oliveira: [Interactive playgrounds with React](https://youtu.be/zL8cz2W0z34). +* Debbie O'Brien: [چیزهایی که از مستندات جدید ری‌اکت یاد گرفتم](https://youtu.be/-7odLW_hG7s). +* Sarah Rainsberger: [یادگیری در مرورگر](https://youtu.be/5X-WEQflCL0). +* Linton Ye: [بازگشت سرمایهٔ طراحی با ری‌اکت](https://youtu.be/7cPWmID5XAk). +* Delba de Oliveira: [زمین‌بازی‌های تعاملی با ری‌اکت](https://youtu.be/zL8cz2W0z34). -**Talks from the Relay, React Native, and PyTorch teams:** +**سخنرانی‌هایی از تیم‌های Relay، React Native و PyTorch:** -* Robert Balicki: [Re-introducing Relay](https://youtu.be/lhVGdErZuN4). -* Eric Rozell and Steven Moyes: [React Native Desktop](https://youtu.be/9L4FFrvwJwY). -* Roman Rädle: [On-device Machine Learning for React Native](https://youtu.be/NLj73vrc2I8) +* Robert Balicki: [معرفی دوبارهٔ Relay](https://youtu.be/lhVGdErZuN4). +* Eric Rozell و Steven Moyes: [React Native Desktop](https://youtu.be/9L4FFrvwJwY). +* Roman Rädle: [یادگیری ماشین روی‌دستگاه برای React Native](https://youtu.be/NLj73vrc2I8) -**And talks from the community on accessibility, tooling, and Server Components:** +**و سخنرانی‌هایی از جامعه درباره دسترسی‌پذیری، ابزارها و کامپوننت‌های سرور:** -* Daishi Kato: [React 18 for External Store Libraries](https://youtu.be/oPfSC5bQPR8). -* Diego Haz: [Building Accessible Components in React 18](https://youtu.be/dcm8fjBfro8). -* Tafu Nakazaki: [Accessible Japanese Form Components with React](https://youtu.be/S4a0QlsH0pU). -* Lyle Troxell: [UI tools for artists](https://youtu.be/b3l4WxipFsE). +* Daishi Kato: [React 18 برای کتابخانه‌های استور خارجی](https://youtu.be/oPfSC5bQPR8). +* Diego Haz: [ساختن کامپوننت‌های دسترسی‌پذیر در React 18](https://youtu.be/dcm8fjBfro8). +* Tafu Nakazaki: [کامپوننت‌های فرم ژاپنی دسترسی‌پذیر با ری‌اکت](https://youtu.be/S4a0QlsH0pU). +* Lyle Troxell: [ابزارهای رابط کاربری برای هنرمندان](https://youtu.be/b3l4WxipFsE). * Helen Lin: [Hydrogen + React 18](https://youtu.be/HS6vIYkSNks). -## Thank you {/*thank-you*/} +## از شما سپاسگزاریم {/*thank-you*/} -This was our first year planning a conference ourselves, and we have a lot of people to thank. +این اولین سالی بود که خودمان کنفرانسی را برنامه‌ریزی می‌کردیم، و افراد زیادی هستند که باید از آن‌ها تشکر کنیم. -First, thanks to all of our speakers [Aakansha Doshi](https://twitter.com/aakansha1216), [Andrew Clark](https://twitter.com/acdlite), [Brian Vaughn](https://twitter.com/brian_d_vaughn), [Daishi Kato](https://twitter.com/dai_shi), [Debbie O'Brien](https://twitter.com/debs_obrien), [Delba de Oliveira](https://twitter.com/delba_oliveira), [Diego Haz](https://twitter.com/diegohaz), [Eric Rozell](https://twitter.com/EricRozell), [Helen Lin](https://twitter.com/wizardlyhel), [Juan Tejada](https://twitter.com/_jstejada), [Lauren Tan](https://twitter.com/potetotes), [Linton Ye](https://twitter.com/lintonye), [Lyle Troxell](https://twitter.com/lyle), [Rachel Nabors](https://twitter.com/rachelnabors), [Rick Hanlon](https://twitter.com/rickhanlonii), [Robert Balicki](https://twitter.com/StatisticsFTW), [Roman Rädle](https://twitter.com/raedle), [Sarah Rainsberger](https://twitter.com/sarah11918), [Shaundai Person](https://twitter.com/shaundai), [Shruti Kapoor](https://twitter.com/shrutikapoor08), [Steven Moyes](https://twitter.com/moyessa), [Tafu Nakazaki](https://twitter.com/hawaiiman0), and [Xuan Huang (黄玄)](https://twitter.com/Huxpro). +اول، از همهٔ سخنرانانمان سپاسگزاریم: [Aakansha Doshi](https://twitter.com/aakansha1216)، [Andrew Clark](https://twitter.com/acdlite)، [Brian Vaughn](https://twitter.com/brian_d_vaughn)، [Daishi Kato](https://twitter.com/dai_shi)، [Debbie O'Brien](https://twitter.com/debs_obrien)، [Delba de Oliveira](https://twitter.com/delba_oliveira)، [Diego Haz](https://twitter.com/diegohaz)، [Eric Rozell](https://twitter.com/EricRozell)، [Helen Lin](https://twitter.com/wizardlyhel)، [Juan Tejada](https://twitter.com/_jstejada)، [Lauren Tan](https://twitter.com/potetotes)، [Linton Ye](https://twitter.com/lintonye)، [Lyle Troxell](https://twitter.com/lyle)، [Rachel Nabors](https://twitter.com/rachelnabors)، [Rick Hanlon](https://twitter.com/rickhanlonii)، [Robert Balicki](https://twitter.com/StatisticsFTW)، [Roman Rädle](https://twitter.com/raedle)، [Sarah Rainsberger](https://twitter.com/sarah11918)، [Shaundai Person](https://twitter.com/shaundai)، [Shruti Kapoor](https://twitter.com/shrutikapoor08)، [Steven Moyes](https://twitter.com/moyessa)، [Tafu Nakazaki](https://twitter.com/hawaiiman0) و [Xuan Huang (黄玄)](https://twitter.com/Huxpro). -Thanks to everyone who helped provide feedback on talks including [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Dave McCabe](https://twitter.com/mcc_abe), [Eli White](https://twitter.com/Eli_White), [Joe Savona](https://twitter.com/en_JS), [Lauren Tan](https://twitter.com/potetotes), [Rachel Nabors](https://twitter.com/rachelnabors), and [Tim Yung](https://twitter.com/yungsters). +از همه کسانی که در ارائهٔ بازخورد درباره سخنرانی‌ها کمک کردند سپاسگزاریم، از جمله [Andrew Clark](https://twitter.com/acdlite)، [Dan Abramov](https://bsky.app/profile/danabra.mov)، [Dave McCabe](https://twitter.com/mcc_abe)، [Eli White](https://twitter.com/Eli_White)، [Joe Savona](https://twitter.com/en_JS)، [Lauren Tan](https://twitter.com/potetotes)، [Rachel Nabors](https://twitter.com/rachelnabors) و [Tim Yung](https://twitter.com/yungsters). -Thanks to [Lauren Tan](https://twitter.com/potetotes) for setting up the conference Discord and serving as our Discord admin. +از [Lauren Tan](https://twitter.com/potetotes) برای راه‌اندازی دیسکورد کنفرانس و خدمت به‌عنوان مدیر دیسکورد ما سپاسگزاریم. -Thanks to [Seth Webster](https://twitter.com/sethwebster) for feedback on overall direction and making sure we were focused on diversity and inclusion. +از [Seth Webster](https://twitter.com/sethwebster) برای بازخورد درباره جهت‌گیری کلی و اطمینان از تمرکز ما بر تنوع و شمول سپاسگزاریم. -Thanks to [Rachel Nabors](https://twitter.com/rachelnabors) for spearheading our moderation effort, and [Aisha Blake](https://twitter.com/AishaBlake) for creating our moderation guide, leading our moderation team, training the translators and moderators, and helping to moderate both events. +از [Rachel Nabors](https://twitter.com/rachelnabors) برای پیشگامی در تلاش مدیریت ما، و از [Aisha Blake](https://twitter.com/AishaBlake) برای ایجاد راهنمای مدیریت ما، رهبری تیم مدیریت ما، آموزش مترجمان و مدیران، و کمک به مدیریت هر دو رویداد سپاسگزاریم. -Thanks to our moderators [Jesslyn Tannady](https://twitter.com/jtannady), [Suzie Grange](https://twitter.com/missuze), [Becca Bailey](https://twitter.com/beccaliz), [Luna Wei](https://twitter.com/lunaleaps), [Joe Previte](https://twitter.com/jsjoeio), [Nicola Corti](https://twitter.com/Cortinico), [Gijs Weterings](https://twitter.com/gweterings), [Claudio Procida](https://twitter.com/claudiopro), Julia Neumann, Mengdi Chen, Jean Zhang, Ricky Li, and [Xuan Huang (黄玄)](https://twitter.com/Huxpro). +از مدیران ما سپاسگزاریم: [Jesslyn Tannady](https://twitter.com/jtannady)، [Suzie Grange](https://twitter.com/missuze)، [Becca Bailey](https://twitter.com/beccaliz)، [Luna Wei](https://twitter.com/lunaleaps)، [Joe Previte](https://twitter.com/jsjoeio)، [Nicola Corti](https://twitter.com/Cortinico)، [Gijs Weterings](https://twitter.com/gweterings)، [Claudio Procida](https://twitter.com/claudiopro)، Julia Neumann، Mengdi Chen، Jean Zhang، Ricky Li و [Xuan Huang (黄玄)](https://twitter.com/Huxpro). -Thanks to [Manjula Dube](https://twitter.com/manjula_dube), [Sahil Mhapsekar](https://twitter.com/apheri0), and Vihang Patel from [React India](https://www.reactindia.io/), and [Jasmine Xie](https://twitter.com/jasmine_xby), [QiChang Li](https://twitter.com/QCL15), and [YanLun Li](https://twitter.com/anneincoding) from [React China](https://twitter.com/ReactChina) for helping moderate our replay event and keep it engaging for the community. +از [Manjula Dube](https://twitter.com/manjula_dube)، [Sahil Mhapsekar](https://twitter.com/apheri0) و Vihang Patel از [React India](https://www.reactindia.io/)، و [Jasmine Xie](https://twitter.com/jasmine_xby)، [QiChang Li](https://twitter.com/QCL15) و [YanLun Li](https://twitter.com/anneincoding) از [React China](https://twitter.com/ReactChina) برای کمک به مدیریت رویداد پخش مجدد ما و جذاب نگه‌داشتن آن برای جامعه سپاسگزاریم. -Thanks to Vercel for publishing their [Virtual Event Starter Kit](https://vercel.com/virtual-event-starter-kit), which the conference website was built on, and to [Lee Robinson](https://twitter.com/leeerob) and [Delba de Oliveira](https://twitter.com/delba_oliveira) for sharing their experience running Next.js Conf. +از Vercel برای انتشار [Virtual Event Starter Kit](https://vercel.com/virtual-event-starter-kit) خود سپاسگزاریم، که وب‌سایت کنفرانس بر پایهٔ آن ساخته شد، و از [Lee Robinson](https://twitter.com/leeerob) و [Delba de Oliveira](https://twitter.com/delba_oliveira) برای به اشتراک گذاشتن تجربه‌شان در برگزاری Next.js Conf. -Thanks to [Leah Silber](https://twitter.com/wifelette) for sharing her experience running conferences, learnings from running [RustConf](https://rustconf.com/), and for her book [Event Driven](https://leanpub.com/eventdriven/) and the advice it contains for running conferences. +از [Leah Silber](https://twitter.com/wifelette) برای به اشتراک گذاشتن تجربه‌اش در برگزاری کنفرانس‌ها، یادگیری‌هایش از برگزاری [RustConf](https://rustconf.com/)، و برای کتابش [Event Driven](https://leanpub.com/eventdriven/) و نصیحت‌هایی که برای برگزاری کنفرانس در آن است سپاسگزاریم. -Thanks to [Kevin Lewis](https://twitter.com/_phzn) and [Rachel Nabors](https://twitter.com/rachelnabors) for sharing their experience running Women of React Conf. +از [Kevin Lewis](https://twitter.com/_phzn) و [Rachel Nabors](https://twitter.com/rachelnabors) برای به اشتراک گذاشتن تجربه‌شان در برگزاری Women of React Conf سپاسگزاریم. -Thanks to [Aakansha Doshi](https://twitter.com/aakansha1216), [Laurie Barth](https://twitter.com/laurieontech), [Michael Chan](https://twitter.com/chantastic), and [Shaundai Person](https://twitter.com/shaundai) for their advice and ideas throughout planning. +از [Aakansha Doshi](https://twitter.com/aakansha1216)، [Laurie Barth](https://twitter.com/laurieontech)، [Michael Chan](https://twitter.com/chantastic) و [Shaundai Person](https://twitter.com/shaundai) برای نصیحت و ایده‌هایشان در طول برنامه‌ریزی سپاسگزاریم. -Thanks to [Dan Lebowitz](https://twitter.com/lebo) for help designing and building the conference website and tickets. +از [Dan Lebowitz](https://twitter.com/lebo) برای کمک به طراحی و ساخت وب‌سایت کنفرانس و بلیط‌ها سپاسگزاریم. -Thanks to Laura Podolak Waddell, Desmond Osei-Acheampong, Mark Rossi, Josh Toberman and others on the Facebook Video Productions team for recording the videos for the Keynote and Meta employee talks. +از Laura Podolak Waddell، Desmond Osei-Acheampong، Mark Rossi، Josh Toberman و دیگران در تیم Facebook Video Productions برای ضبط ویدیوهای سخنرانی اصلی و سخنرانی‌های کارکنان Meta سپاسگزاریم. -Thanks to our partner HitPlay for helping to organize the conference, editing all the videos in the stream, translating all the talks, and moderating the Discord in multiple languages. +از شریک ما HitPlay برای کمک به سازماندهی کنفرانس، ویرایش همهٔ ویدیوها در استریم، ترجمهٔ همهٔ سخنرانی‌ها و مدیریت دیسکورد به چند زبان سپاسگزاریم. -Finally, thanks to all of our participants for making this a great React Conf! +در نهایت، از همهٔ شرکت‌کنندگانمان برای اینکه این کنفرانس ری‌اکت بزرگی ساختند سپاسگزاریم! diff --git a/src/content/blog/2022/03/08/react-18-upgrade-guide.md b/src/content/blog/2022/03/08/react-18-upgrade-guide.md old mode 100644 new mode 100755 index 9d34dfaaa..c5883f9b1 --- a/src/content/blog/2022/03/08/react-18-upgrade-guide.md +++ b/src/content/blog/2022/03/08/react-18-upgrade-guide.md @@ -1,5 +1,5 @@ --- -title: "How to Upgrade to React 18" +title: "چگونه به React 18 ارتقا یابیم" author: Rick Hanlon date: 2022/03/08 description: As we shared in the release post, React 18 introduces features powered by our new concurrent renderer, with a gradual adoption strategy for existing applications. In this post, we will guide you through the steps for upgrading to React 18. @@ -11,37 +11,37 @@ March 08, 2022 by [Rick Hanlon](https://twitter.com/rickhanlonii) -As we shared in the [release post](/blog/2022/03/29/react-v18), React 18 introduces features powered by our new concurrent renderer, with a gradual adoption strategy for existing applications. In this post, we will guide you through the steps for upgrading to React 18. +همان‌طور که در [پست انتشار](/blog/2022/03/29/react-v18) به اشتراک گذاشتیم، React 18 قابلیت‌هایی را معرفی می‌کند که توسط رندرر همزمان (Concurrent) جدید ما نیرو می‌گیرند، با استراتژی پذیرش تدریجی برای برنامه‌های موجود. در این پست، شما را در مراحل ارتقا به React 18 راهنمایی می‌کنیم. -Please [report any issues](https://github.com/facebook/react/issues/new/choose) you encounter while upgrading to React 18. +لطفاً هر مشکلی را که هنگام ارتقا به React 18 با آن روبه‌رو می‌شوید [گزارش کنید](https://github.com/facebook/react/issues/new/choose). -For React Native users, React 18 will ship in a future version of React Native. This is because React 18 relies on the New React Native Architecture to benefit from the new capabilities presented in this blogpost. For more information, see the [React Conf keynote here](https://www.youtube.com/watch?v=FZ0cG47msEk&t=1530s). +برای کاربران React Native، React 18 در یک نسخهٔ آیندهٔ React Native منتشر خواهد شد. این به این دلیل است که React 18 برای بهره‌مندی از قابلیت‌های جدید ارائه‌شده در این پست بلاگ به معماری جدید React Native وابسته است. برای اطلاعات بیشتر، [سخنرانی اصلی React Conf را اینجا ببینید](https://www.youtube.com/watch?v=FZ0cG47msEk&t=1530s). --- -## Installing {/*installing*/} +## نصب {/*installing*/} -To install the latest version of React: +برای نصب آخرین نسخهٔ ری‌اکت: ```bash npm install react react-dom ``` -Or if you’re using yarn: +یا اگر از yarn استفاده می‌کنید: ```bash yarn add react react-dom ``` -## Updates to Client Rendering APIs {/*updates-to-client-rendering-apis*/} +## به‌روزرسانی‌های APIهای رندر سمت کلاینت {/*updates-to-client-rendering-apis*/} -When you first install React 18, you will see a warning in the console: +وقتی برای اولین بار React 18 را نصب می‌کنید، یک هشدار در کنسول خواهید دید: @@ -49,7 +49,7 @@ ReactDOM.render is no longer supported in React 18. Use createRoot instead. Unti -React 18 introduces a new root API which provides better ergonomics for managing roots. The new root API also enables the new concurrent renderer, which allows you to opt-into concurrent features. +React 18 یک API ریشه (root) جدید معرفی می‌کند که ارگونومی بهتری برای مدیریت ریشه‌ها ارائه می‌دهد. API ریشهٔ جدید همچنین رندرر همزمان (Concurrent) جدید را فعال می‌کند، که به شما اجازه می‌دهد در قابلیت‌های همزمان شرکت کنید. ```js // Before @@ -64,7 +64,7 @@ const root = createRoot(container); // createRoot(container!) if you use TypeScr root.render(); ``` -We’ve also changed `unmountComponentAtNode` to `root.unmount`: +ما همچنین `unmountComponentAtNode` را به `root.unmount` تغییر داده‌ایم: ```js // Before @@ -74,7 +74,7 @@ unmountComponentAtNode(container); root.unmount(); ``` -We've also removed the callback from render, since it usually does not have the expected result when using Suspense: +ما همچنین کالبک را از render حذف کرده‌ایم، زیرا معمولاً هنگام استفاده از ساسپنس (Suspense) نتیجهٔ مورد انتظار را ندارد: ```js // Before @@ -99,11 +99,11 @@ root.render(); -There is no one-to-one replacement for the old render callback API — it depends on your use case. See the working group post for [Replacing render with createRoot](https://github.com/reactwg/react-18/discussions/5) for more information. +هیچ جایگزین یک‌به‌یک برای API کالبک render قدیمی وجود ندارد — این به مورد استفادهٔ شما بستگی دارد. برای اطلاعات بیشتر، پست گروه کاری درباره [جایگزینی render با createRoot](https://github.com/reactwg/react-18/discussions/5) را ببینید. -Finally, if your app uses server-side rendering with hydration, upgrade `hydrate` to `hydrateRoot`: +در نهایت، اگر برنامه‌تان از رندر سمت سرور با hydration استفاده می‌کند، `hydrate` را به `hydrateRoot` ارتقا دهید: ```js // Before @@ -118,40 +118,40 @@ const root = hydrateRoot(container, ); // Unlike with createRoot, you don't need a separate root.render() call here. ``` -For more information, see the [working group discussion here](https://github.com/reactwg/react-18/discussions/5). +برای اطلاعات بیشتر، [بحث گروه کاری را اینجا ببینید](https://github.com/reactwg/react-18/discussions/5). -**If your app doesn't work after upgrading, check whether it's wrapped in ``.** [Strict Mode has gotten stricter in React 18](#updates-to-strict-mode), and not all your components may be resilient to the new checks it adds in development mode. If removing Strict Mode fixes your app, you can remove it during the upgrade, and then add it back (either at the top or for a part of the tree) after you fix the issues that it's pointing out. +**اگر برنامهٔ شما پس از ارتقا کار نمی‌کند، بررسی کنید که آیا در `` پیچیده شده است.** [حالت سخت‌گیرانه (Strict Mode) در React 18 سخت‌گیرانه‌تر شده است](#updates-to-strict-mode)، و ممکن است همهٔ کامپوننت‌های شما در برابر بررسی‌های جدیدی که در حالت توسعه اضافه می‌کند مقاوم نباشند. اگر حذف Strict Mode برنامهٔ شما را اصلاح می‌کند، می‌توانید آن را در طول ارتقا حذف کنید، و سپس (یا در بالای درخت کامپوننت یا برای بخشی از آن) پس از رفع مشکلاتی که به آن‌ها اشاره می‌کند، دوباره اضافه‌اش کنید. -## Updates to Server Rendering APIs {/*updates-to-server-rendering-apis*/} +## به‌روزرسانی‌های APIهای رندر سمت سرور {/*updates-to-server-rendering-apis*/} -In this release, we’re revamping our `react-dom/server` APIs to fully support Suspense on the server and Streaming SSR. As part of these changes, we're deprecating the old Node streaming API, which does not support incremental Suspense streaming on the server. +در این انتشار، ما APIهای `react-dom/server` خود را برای پشتیبانی کامل از ساسپنس (Suspense) روی سرور و Streaming SSR بازطراحی می‌کنیم. به‌عنوان بخشی از این تغییرات، ما API استریمی قدیمی Node را منسوخ می‌کنیم، که از استریم تدریجی ساسپنس روی سرور پشتیبانی نمی‌کند. -Using this API will now warn: +استفاده از این API اکنون هشدار خواهد داد: -* `renderToNodeStream`: **Deprecated ⛔️️** +* `renderToNodeStream`: **منسوخ‌شده ⛔️️** -Instead, for streaming in Node environments, use: -* `renderToPipeableStream`: **New ✨** +در عوض، برای استریم در محیط‌های Node، از این استفاده کنید: +* `renderToPipeableStream`: **جدید ✨** -We're also introducing a new API to support streaming SSR with Suspense for modern edge runtime environments, such as Deno and Cloudflare workers: -* `renderToReadableStream`: **New ✨** +ما همچنین یک API جدید برای پشتیبانی از Streaming SSR با ساسپنس برای محیط‌های اجرایی مدرن لبه (edge)، مانند Deno و Cloudflare workers معرفی می‌کنیم: +* `renderToReadableStream`: **جدید ✨** -The following APIs will continue working, but with limited support for Suspense: -* `renderToString`: **Limited** ⚠️ -* `renderToStaticMarkup`: **Limited** ⚠️ +APIهای زیر به کار خود ادامه خواهند داد، اما با پشتیبانی محدود از ساسپنس: +* `renderToString`: **محدود** ⚠️ +* `renderToStaticMarkup`: **محدود** ⚠️ -Finally, this API will continue to work for rendering e-mails: +در نهایت، این API برای رندر ایمیل‌ها به کار خود ادامه خواهد داد: * `renderToStaticNodeStream` -For more information on the changes to server rendering APIs, see the working group post on [Upgrading to React 18 on the server](https://github.com/reactwg/react-18/discussions/22), a [deep dive on the new Suspense SSR Architecture](https://github.com/reactwg/react-18/discussions/37), and [Shaundai Person’s](https://twitter.com/shaundai) talk on [Streaming Server Rendering with Suspense](https://www.youtube.com/watch?v=pj5N-Khihgc) at React Conf 2021. +برای اطلاعات بیشتر دربارهٔ تغییرات APIهای رندر سرور، پست گروه کاری درباره [ارتقا به React 18 روی سرور](https://github.com/reactwg/react-18/discussions/22)، یک [بررسی عمیق بر معماری جدید SSR با ساسپنس](https://github.com/reactwg/react-18/discussions/37) و سخنرانی [Shaundai Person](https://twitter.com/shaundai) درباره [رندر سرور استریمی با ساسپنس](https://www.youtube.com/watch?v=pj5N-Khihgc) در React Conf 2021 را ببینید. -## Updates to TypeScript definitions {/*updates-to-typescript-definitions*/} +## به‌روزرسانی‌های تعاریف TypeScript {/*updates-to-typescript-definitions*/} -If your project uses TypeScript, you will need to update your `@types/react` and `@types/react-dom` dependencies to the latest versions. The new types are safer and catch issues that used to be ignored by the type checker. The most notable change is that the `children` prop now needs to be listed explicitly when defining props, for example: +اگر پروژهٔ شما از TypeScript استفاده می‌کند، باید وابستگی‌های `@types/react` و `@types/react-dom` خود را به آخرین نسخه‌ها ارتقا دهید. تایپ‌های جدید امن‌تر هستند و مشکلاتی را که قبلاً توسط چک‌کنندهٔ تایپ نادیده گرفته می‌شد، شناسایی می‌کنند. قابل‌توجه‌ترین تغییر این است که پراپ `children` اکنون هنگام تعریف پراپس باید به‌صورت صریح فهرست شود، برای مثال: ```typescript{3} interface MyButtonProps { @@ -160,13 +160,13 @@ interface MyButtonProps { } ``` -See the [React 18 typings pull request](https://github.com/DefinitelyTyped/DefinitelyTyped/pull/56210) for a full list of type-only changes. It links to example fixes in library types so you can see how to adjust your code. You can use the [automated migration script](https://github.com/eps1lon/types-react-codemod) to help port your application code to the new and safer typings faster. +برای فهرست کامل تغییرات فقط-تایپ، [pull request تایپ‌های React 18](https://github.com/DefinitelyTyped/DefinitelyTyped/pull/56210) را ببینید. این به نمونه‌های رفع مشکل در تایپ‌های کتابخانه‌ها پیوند دارد تا ببینید چگونه کدتان را تنظیم کنید. می‌توانید از [اسکریپت مهاجرت خودکار](https://github.com/eps1lon/types-react-codemod) برای کمک به انتقال سریع‌تر کد برنامه‌تان به تایپ‌های جدید و امن‌تر استفاده کنید. -If you find a bug in the typings, please [file an issue](https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/new?category=issues-with-a-types-package) in the DefinitelyTyped repo. +اگر باگی در تایپ‌ها پیدا کردید، لطفاً یک issue در مخزن DefinitelyTyped [ثبت کنید](https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/new?category=issues-with-a-types-package). -## Automatic Batching {/*automatic-batching*/} +## دسته‌بندی خودکار (Automatic Batching) {/*automatic-batching*/} -React 18 adds out-of-the-box performance improvements by doing more batching by default. Batching is when React groups multiple state updates into a single re-render for better performance. Before React 18, we only batched updates inside React event handlers. Updates inside of promises, setTimeout, native event handlers, or any other event were not batched in React by default: +React 18 با انجام دسته‌بندی (Batching) بیشتر به‌صورت پیش‌فرض، بهبودهای کارایی خارج‌از-جعبه اضافه می‌کند. دسته‌بندی (Batching) زمانی است که ری‌اکت چندین به‌روزرسانی استیت را در یک رندر مجدد گروه‌بندی می‌کند تا کارایی بهتر شود. قبل از React 18، ما فقط به‌روزرسانی‌های داخل هندلرهای رویداد ری‌اکت را دسته‌بندی می‌کردیم. به‌روزرسانی‌های داخل پرامیس‌ها، setTimeout، هندلرهای رویداد بومی، یا هر رویداد دیگری به‌صورت پیش‌فرض در ری‌اکت دسته‌بندی نمی‌شدند: ```js // Before React 18 only React events were batched @@ -185,7 +185,7 @@ setTimeout(() => { ``` -Starting in React 18 with `createRoot`, all updates will be automatically batched, no matter where they originate from. This means that updates inside of timeouts, promises, native event handlers or any other event will batch the same way as updates inside of React events: +شروع از React 18 با `createRoot`، همهٔ به‌روزرسانی‌ها به‌طور خودکار دسته‌بندی خواهند شد، مهم نیست از کجا منشأ می‌گیرند. این بدان معناست که به‌روزرسانی‌های داخل timeoutها، پرامیس‌ها، هندلرهای رویداد بومی یا هر رویداد دیگر به همان روش به‌روزرسانی‌های داخل رویدادهای ری‌اکت دسته‌بندی خواهند شد: ```js // After React 18 updates inside of timeouts, promises, @@ -204,7 +204,7 @@ setTimeout(() => { }, 1000); ``` -This is a breaking change, but we expect this to result in less work rendering, and therefore better performance in your applications. To opt-out of automatic batching, you can use `flushSync`: +این یک تغییر شکستن‌کننده است، اما انتظار داریم منجر به کار کمتر برای رندر، و در نتیجه کارایی بهتر در برنامه‌های شما شود. برای انصراف از دسته‌بندی خودکار، می‌توانید از `flushSync` استفاده کنید: ```js import { flushSync } from 'react-dom'; @@ -221,26 +221,26 @@ function handleClick() { } ``` -For more information, see the [Automatic batching deep dive](https://github.com/reactwg/react-18/discussions/21). +برای اطلاعات بیشتر، [بررسی عمیق دسته‌بندی خودکار (Automatic Batching)](https://github.com/reactwg/react-18/discussions/21) را ببینید. -## New APIs for Libraries {/*new-apis-for-libraries*/} +## APIهای جدید برای کتابخانه‌ها {/*new-apis-for-libraries*/} -In the React 18 Working Group we worked with library maintainers to create new APIs needed to support concurrent rendering for use cases specific to their use case in areas like styles, and external stores. To support React 18, some libraries may need to switch to one of the following APIs: +در گروه کاری React 18 با نگهداران کتابخانه‌ها کار کردیم تا APIهای جدید مورد نیاز برای پشتیبانی از رندر همزمان (Concurrent) برای موارد استفادهٔ خاص حوزه‌هایی مانند استایل‌ها و استورهای خارجی ایجاد کنیم. برای پشتیبانی از React 18، ممکن است برخی کتابخانه‌ها نیاز به سوییچ به یکی از APIهای زیر داشته باشند: -* `useSyncExternalStore` is a new Hook that allows external stores to support concurrent reads by forcing updates to the store to be synchronous. This new API is recommended for any library that integrates with state external to React. For more information, see the [useSyncExternalStore overview post](https://github.com/reactwg/react-18/discussions/70) and [useSyncExternalStore API details](https://github.com/reactwg/react-18/discussions/86). -* `useInsertionEffect` is a new Hook that allows CSS-in-JS libraries to address performance issues of injecting styles in render. Unless you've already built a CSS-in-JS library we don't expect you to ever use this. This Hook will run after the DOM is mutated, but before layout effects read the new layout. This solves an issue that already exists in React 17 and below, but is even more important in React 18 because React yields to the browser during concurrent rendering, giving it a chance to recalculate layout. For more information, see the [Library Upgrade Guide for ``), require careful positioning in the DOM due to style precedence rules. Building a stylesheet capability that allows for composability within components is hard, so users often end up either loading all of their styles far from the components that may depend on them, or they use a style library which encapsulates this complexity. +استایل‌شیت‌ها، چه به‌صورت خارجی (``) چه inline (``)، به‌دلیل قواعد تقدم استایل، نیازمند موقعیت‌یابی دقیقی در DOM هستند. ساخت یک قابلیت استایل‌شیت که اجازهٔ ترکیب‌پذیری درون کامپوننت‌ها را بدهد دشوار است، بنابراین کاربران اغلب یا تمام استایل‌های خود را در فاصله‌ای دور از کامپوننت‌هایی که ممکن است به آن‌ها وابسته باشند بارگذاری می‌کنند، یا از یک کتابخانهٔ استایل استفاده می‌کنند که این پیچیدگی را کپسوله می‌کند. -In React 19, we're addressing this complexity and providing even deeper integration into Concurrent Rendering on the Client and Streaming Rendering on the Server with built in support for stylesheets. If you tell React the `precedence` of your stylesheet it will manage the insertion order of the stylesheet in the DOM and ensure that the stylesheet (if external) is loaded before revealing content that depends on those style rules. +در React 19، ما این پیچیدگی را برطرف کرده و یکپارچه‌سازی عمیق‌تری با رندر همزمان (Concurrent Rendering) در کلاینت و رندر استریمی در سرور با پشتیبانی داخلی از استایل‌شیت‌ها ارائه می‌کنیم. اگر `precedence` استایل‌شیت خود را به ری‌اکت بگویید، ترتیب درج استایل‌شیت در DOM را مدیریت می‌کند و اطمینان حاصل می‌کند که استایل‌شیت (در صورت خارجی‌بودن) پیش از آشکارکردن محتوایی که به آن قواعد استایل وابسته است، بارگذاری شده است. ```js {4,5,17} function ComponentOne() { @@ -626,9 +626,9 @@ function ComponentTwo() { } ``` -During Server Side Rendering React will include the stylesheet in the ``, which ensures that the browser will not paint until it has loaded. If the stylesheet is discovered late after we've already started streaming, React will ensure that the stylesheet is inserted into the `` on the client before revealing the content of a Suspense boundary that depends on that stylesheet. +در حین رندر سمت سرور، ری‌اکت استایل‌شیت را در `` قرار می‌دهد که اطمینان حاصل می‌کند مرورگر تا زمان بارگذاری، paint نخواهد کرد. اگر استایل‌شیت پس از آنکه از قبل استریم را آغاز کرده‌ایم، دیر کشف شود، ری‌اکت اطمینان حاصل می‌کند که استایل‌شیت در `` کلاینت پیش از آشکارکردن محتوای یک مرز ساسپنس که به آن استایل‌شیت وابسته است، درج شود. -During Client Side Rendering React will wait for newly rendered stylesheets to load before committing the render. If you render this component from multiple places within your application React will only include the stylesheet once in the document: +در حین رندر سمت کلاینت، ری‌اکت پیش از کامیت رندر، منتظر بارگذاری استایل‌شیت‌های تازه رندرشده می‌ماند. اگر این کامپوننت را از چندین مکان در اپلیکیشن خود رندر کنید، ری‌اکت فقط یک‌بار استایل‌شیت را در سند درج می‌کند: ```js {5} function App() { @@ -640,17 +640,17 @@ function App() { } ``` -For users accustomed to loading stylesheets manually this is an opportunity to locate those stylesheets alongside the components that depend on them allowing for better local reasoning and an easier time ensuring you only load the stylesheets that you actually depend on. +برای کاربرانی که به بارگذاری دستی استایل‌شیت‌ها عادت دارند، این فرصتی است تا آن استایل‌شیت‌ها را در کنار کامپوننت‌هایی که به آن‌ها وابسته‌اند قرار دهید که امکان استدلال محلی بهتر و آسان‌تری برای اطمینان از بارگذاری فقط استایل‌شیت‌هایی که واقعاً به آن‌ها وابسته‌اید را فراهم می‌کند. -Style libraries and style integrations with bundlers can also adopt this new capability so even if you don't directly render your own stylesheets, you can still benefit as your tools are upgraded to use this feature. +کتابخانه‌های استایل و یکپارچه‌سازی‌های استایل با باندلرها نیز می‌توانند این قابلیت جدید را به کار بگیرند، بنابراین حتی اگر مستقیماً استایل‌شیت‌های خود را رندر نکنید، با ارتقای ابزارهایتان به استفاده از این قابلیت بهره خواهند برد. -For more details, read the docs for [``](/reference/react-dom/components/link) and [` @@ -16,58 +16,58 @@ The [built-in browser ` ``` -[See more examples below.](#usage) +[نمونه‌های بیشتر را در ادامه ببینید.](#usage) -#### Props {/*props*/} +#### پراپس {/*props*/} -`