@modern-js/module-tools-docs 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/doc_build/html/main/index.html +16 -0
- package/doc_build/route.json +10 -0
- package/doc_build/static/css/main.css +3370 -0
- package/doc_build/static/css/main.css.map +1 -0
- package/doc_build/static/css/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.css +85 -0
- package/doc_build/static/css/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.css.map +1 -0
- package/doc_build/static/js/async/api_.js +56 -0
- package/doc_build/static/js/async/api_.js.map +1 -0
- package/doc_build/static/js/async/api_config_build-config.js +11309 -0
- package/doc_build/static/js/async/api_config_build-config.js.map +1 -0
- package/doc_build/static/js/async/api_config_build-preset.js +7849 -0
- package/doc_build/static/js/async/api_config_build-preset.js.map +1 -0
- package/doc_build/static/js/async/api_config_design-system.js +48708 -0
- package/doc_build/static/js/async/api_config_design-system.js.map +1 -0
- package/doc_build/static/js/async/api_config_plugins.js +1492 -0
- package/doc_build/static/js/async/api_config_plugins.js.map +1 -0
- package/doc_build/static/js/async/api_config_testing.js +2130 -0
- package/doc_build/static/js/async/api_config_testing.js.map +1 -0
- package/doc_build/static/js/async/api_plugin-api_plugin-hooks.js +14394 -0
- package/doc_build/static/js/async/api_plugin-api_plugin-hooks.js.map +1 -0
- package/doc_build/static/js/async/en_.js +85 -0
- package/doc_build/static/js/async/en_.js.map +1 -0
- package/doc_build/static/js/async/en_api_.js +55 -0
- package/doc_build/static/js/async/en_api_.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_build-config.js +8363 -0
- package/doc_build/static/js/async/en_api_config_build-config.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_build-preset.js +7845 -0
- package/doc_build/static/js/async/en_api_config_build-preset.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_design-system.js +16345 -0
- package/doc_build/static/js/async/en_api_config_design-system.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_plugins.js +1492 -0
- package/doc_build/static/js/async/en_api_config_plugins.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_testing.js +2137 -0
- package/doc_build/static/js/async/en_api_config_testing.js.map +1 -0
- package/doc_build/static/js/async/en_api_plugin-api_plugin-hooks.js +14362 -0
- package/doc_build/static/js/async/en_api_plugin-api_plugin-hooks.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_asset.js +3997 -0
- package/doc_build/static/js/async/en_guide_advance_asset.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_build-umd.js +9861 -0
- package/doc_build/static/js/async/en_guide_advance_build-umd.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_copy.js +6539 -0
- package/doc_build/static/js/async/en_guide_advance_copy.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_external-dependency.js +3810 -0
- package/doc_build/static/js/async/en_guide_advance_external-dependency.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-build.js +5046 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-build.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-dev-command.js +150 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-dev-command.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_theme-config.js +2484 -0
- package/doc_build/static/js/async/en_guide_advance_theme-config.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_before-getting-started.js +3671 -0
- package/doc_build/static/js/async/en_guide_basic_before-getting-started.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_command-preview.js +3961 -0
- package/doc_build/static/js/async/en_guide_basic_command-preview.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_modify-output-product.js +2970 -0
- package/doc_build/static/js/async/en_guide_basic_modify-output-product.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_publish-your-project.js +2182 -0
- package/doc_build/static/js/async/en_guide_basic_publish-your-project.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_test-your-project.js +3892 -0
- package/doc_build/static/js/async/en_guide_basic_test-your-project.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_use-micro-generator.js +168 -0
- package/doc_build/static/js/async/en_guide_basic_use-micro-generator.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_using-storybook.js +4762 -0
- package/doc_build/static/js/async/en_guide_basic_using-storybook.js.map +1 -0
- package/doc_build/static/js/async/en_guide_best-practices_components.js +21388 -0
- package/doc_build/static/js/async/en_guide_best-practices_components.js.map +1 -0
- package/doc_build/static/js/async/en_guide_intro_getting-started.js +1906 -0
- package/doc_build/static/js/async/en_guide_intro_getting-started.js.map +1 -0
- package/doc_build/static/js/async/en_guide_intro_welcome.js +148 -0
- package/doc_build/static/js/async/en_guide_intro_welcome.js.map +1 -0
- package/doc_build/static/js/async/en_guide_intro_why-module-engineering-solution.js +92 -0
- package/doc_build/static/js/async/en_guide_intro_why-module-engineering-solution.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_guide_getting-started.js +2560 -0
- package/doc_build/static/js/async/en_plugins_guide_getting-started.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_guide_plugin-object.js +4177 -0
- package/doc_build/static/js/async/en_plugins_guide_plugin-object.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_guide_setup-function.js +3819 -0
- package/doc_build/static/js/async/en_plugins_guide_setup-function.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_official-list_overview.js +70 -0
- package/doc_build/static/js/async/en_plugins_official-list_overview.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_asset.js +3997 -0
- package/doc_build/static/js/async/guide_advance_asset.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_build-umd.js +9863 -0
- package/doc_build/static/js/async/guide_advance_build-umd.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_copy.js +6539 -0
- package/doc_build/static/js/async/guide_advance_copy.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_external-dependency.js +3812 -0
- package/doc_build/static/js/async/guide_advance_external-dependency.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-build.js +5046 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-build.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-dev-command.js +152 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-dev-command.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_theme-config.js +2475 -0
- package/doc_build/static/js/async/guide_advance_theme-config.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_before-getting-started.js +3662 -0
- package/doc_build/static/js/async/guide_basic_before-getting-started.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_command-preview.js +3793 -0
- package/doc_build/static/js/async/guide_basic_command-preview.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_modify-output-product.js +2949 -0
- package/doc_build/static/js/async/guide_basic_modify-output-product.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_publish-your-project.js +2243 -0
- package/doc_build/static/js/async/guide_basic_publish-your-project.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_test-your-project.js +3892 -0
- package/doc_build/static/js/async/guide_basic_test-your-project.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_use-micro-generator.js +172 -0
- package/doc_build/static/js/async/guide_basic_use-micro-generator.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_using-storybook.js +4762 -0
- package/doc_build/static/js/async/guide_basic_using-storybook.js.map +1 -0
- package/doc_build/static/js/async/guide_best-practices_components.js +21088 -0
- package/doc_build/static/js/async/guide_best-practices_components.js.map +1 -0
- package/doc_build/static/js/async/guide_intro_getting-started.js +1782 -0
- package/doc_build/static/js/async/guide_intro_getting-started.js.map +1 -0
- package/doc_build/static/js/async/guide_intro_welcome.js +148 -0
- package/doc_build/static/js/async/guide_intro_welcome.js.map +1 -0
- package/doc_build/static/js/async/guide_intro_why-module-engineering-solution.js +92 -0
- package/doc_build/static/js/async/guide_intro_why-module-engineering-solution.js.map +1 -0
- package/doc_build/static/js/async/index.js +85 -0
- package/doc_build/static/js/async/index.js.map +1 -0
- package/doc_build/static/js/async/packages_cli_doc-core_src_theme-default_components_Search_logic_search_ts.js +447 -0
- package/doc_build/static/js/async/packages_cli_doc-core_src_theme-default_components_Search_logic_search_ts.js.map +1 -0
- package/doc_build/static/js/async/plugins_guide_getting-started.js +2608 -0
- package/doc_build/static/js/async/plugins_guide_getting-started.js.map +1 -0
- package/doc_build/static/js/async/plugins_guide_plugin-object.js +4173 -0
- package/doc_build/static/js/async/plugins_guide_plugin-object.js.map +1 -0
- package/doc_build/static/js/async/plugins_guide_setup-function.js +3819 -0
- package/doc_build/static/js/async/plugins_guide_setup-function.js.map +1 -0
- package/doc_build/static/js/async/plugins_official-list_overview.js +70 -0
- package/doc_build/static/js/async/plugins_official-list_overview.js.map +1 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_code-hike_mdx_0_7_4_react_18_2_0_node_modules_code-hike_mdx_dist_co-06dd41.js +6656 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_code-hike_mdx_0_7_4_react_18_2_0_node_modules_code-hike_mdx_dist_co-06dd41.js.map +1 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_flexsearch_0_6_32_node_modules_flexsearch_dist_flexsearch_min_js.js +54 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_flexsearch_0_6_32_node_modules_flexsearch_dist_flexsearch_min_js.js.map +1 -0
- package/doc_build/static/js/builder-runtime.js +1375 -0
- package/doc_build/static/js/builder-runtime.js.map +1 -0
- package/doc_build/static/js/lib-lodash.js +4907 -0
- package/doc_build/static/js/lib-lodash.js.map +1 -0
- package/doc_build/static/js/lib-polyfill.js +24769 -0
- package/doc_build/static/js/lib-polyfill.js.map +1 -0
- package/doc_build/static/js/lib-react.js +39510 -0
- package/doc_build/static/js/lib-react.js.map +1 -0
- package/doc_build/static/js/main.js +9237 -0
- package/doc_build/static/js/main.js.map +1 -0
- package/doc_build/static/js/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.js +8532 -0
- package/doc_build/static/js/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.js.map +1 -0
- package/docs/en/api/config/build-config.md +5 -5
- package/docs/en/api/plugin-api/plugin-hooks.md +1 -1
- package/docs/en/guide/advance/asset.mdx +1 -1
- package/docs/en/guide/advance/build-umd.mdx +3 -3
- package/docs/en/guide/advance/copy.md +5 -5
- package/docs/en/guide/advance/external-dependency.mdx +2 -2
- package/docs/en/guide/advance/in-depth-about-build.md +7 -7
- package/docs/en/guide/advance/in-depth-about-dev-command.md +1 -1
- package/docs/en/guide/advance/theme-config.mdx +2 -2
- package/docs/en/guide/basic/before-getting-started.md +1 -1
- package/docs/en/guide/basic/command-preview.md +2 -2
- package/docs/en/guide/basic/modify-output-product.md +23 -22
- package/docs/en/guide/basic/publish-your-project.md +4 -4
- package/docs/en/guide/basic/test-your-project.mdx +5 -3
- package/docs/en/guide/basic/use-micro-generator.md +9 -5
- package/docs/en/guide/basic/using-storybook.mdx +6 -4
- package/docs/en/guide/best-practices/components.mdx +103 -97
- package/docs/en/guide/intro/getting-started.md +2 -2
- package/docs/en/index.md +14 -17
- package/docs/en/plugins/guide/getting-started.mdx +2 -2
- package/docs/en/plugins/guide/setup-function.mdx +2 -2
- package/docs/zh/api/config/_category_.json +1 -1
- package/docs/zh/api/config/build-config.md +16 -5
- package/docs/zh/api/config/plugins.md +1 -1
- package/docs/zh/api/index.md +1 -0
- package/docs/zh/api/plugin-api/_category_.json +1 -1
- package/docs/zh/api/plugin-api/plugin-hooks.md +56 -55
- package/docs/zh/guide/advance/asset.mdx +1 -1
- package/docs/zh/guide/advance/build-umd.mdx +3 -3
- package/docs/zh/guide/advance/copy.md +5 -5
- package/docs/zh/guide/advance/external-dependency.mdx +3 -3
- package/docs/zh/guide/advance/in-depth-about-build.md +7 -7
- package/docs/zh/guide/advance/in-depth-about-dev-command.md +1 -1
- package/docs/zh/guide/advance/theme-config.mdx +2 -2
- package/docs/zh/guide/basic/before-getting-started.md +1 -1
- package/docs/zh/guide/basic/command-preview.md +2 -2
- package/docs/zh/guide/basic/modify-output-product.md +30 -30
- package/docs/zh/guide/basic/publish-your-project.md +4 -4
- package/docs/zh/guide/basic/test-your-project.mdx +5 -3
- package/docs/zh/guide/basic/use-micro-generator.md +5 -5
- package/docs/zh/guide/basic/using-storybook.mdx +6 -4
- package/docs/zh/guide/best-practices/components.mdx +10 -10
- package/docs/zh/guide/intro/getting-started.md +2 -2
- package/docs/zh/index.md +1 -1
- package/docs/zh/plugins/guide/getting-started.mdx +3 -3
- package/docs/zh/plugins/guide/setup-function.mdx +2 -2
- package/modern.config.ts +4 -3
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/main.js","mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AA8BA;AAAA;AA9BA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAIA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AApBA;AAEA;AAAA;AAFA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AARA;AACA;AAAA;AADA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAuBA;AAAA;AAvBA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAFA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAdA;AAAA;AAAA;AAAA;AAAA;AAeA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAzBA;AAAA;AAAA;AAAA;AA4BA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAjGA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AAYA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAGA;AAAA;AAzBA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AADA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAE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;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AA5BA;AAAA;AAAA;AAAA;AA6BA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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CA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AA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;;;;;;;;;;;;;;;;AC7BA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAOA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBA;AAEA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AAEA;AAEA;AACA;AAKA;AAKA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAAA;AA5BA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AA3CA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AAQA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAFA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AApDA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;AAEA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACvJA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/arrow-down.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/arrow-right.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/down.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/menu.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/moon.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/right.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/sun.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/assets/translator.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Search/assets/loading.svg","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Search/assets/search.svg","webpack://@modern-js/module-tools-docs/./virtual:windi.css","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/index.css","webpack://@modern-js/module-tools-docs/./theme/index.css","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Button/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/DocFooter/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/HomeFeatures/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/HomeHero/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Link/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/LocalSideBar/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Nav/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/NavHambmger/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/NavScreen/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/NavScreenMenuGroup/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Overview/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Search/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Siderbar/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SocialLinks/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Switch/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SwitchAppearance/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Tabs/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/layout/DocLayout/index.module.scss","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/runtime/App.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/runtime/Content.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/runtime/clientEntry.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Aside/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Button/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/DocFooter/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/HomeFeatures/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/HomeFooter/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/HomeHero/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Link/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/LocalSideBar/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Nav/NavMenuGroup.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Nav/NavMenuSingleItem.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Nav/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/NavHambmger/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/NavScreen/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/NavScreenMenuGroup/NavScreenMenuGroup.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Overview/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Search/Suggestion.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Search/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Siderbar/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SocialLinks/HiddenLinks.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SocialLinks/LinkContent.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SocialLinks/ShownLinks.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SocialLinks/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SocialLinks/presetIcons.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Switch/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/SwitchAppearance/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/components/Tabs/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/layout/DocLayout/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/layout/HomeLayout/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/layout/Layout/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/layout/NotFountLayout/index.tsx","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/runtime/hooks.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/runtime/utils.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/shared/utils/index.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/index.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/copyCode.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/sideEffects.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/useAppearance.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/useLocaleSiteData.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/useNav.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/usePrevNextPage.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/useSidebarData.ts","webpack://@modern-js/module-tools-docs/../../packages/cli/doc-core/src/theme-default/logic/utils.ts","webpack://@modern-js/module-tools-docs/./theme/index.ts","webpack://@modern-js/module-tools-docs/../../packages/server/server/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js","webpack://@modern-js/module-tools-docs/../../packages/server/server/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js","webpack://@modern-js/module-tools-docs/../../packages/solutions/doc-tools/theme.ts","webpack://@modern-js/module-tools-docs/../../packages/toolkit/utils/compiled/strip-ansi/index.js","webpack://@modern-js/module-tools-docs/../../packages/toolkit/utils/dist/constants.js","webpack://@modern-js/module-tools-docs/../../packages/toolkit/utils/dist/format.js"],"sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgArrowDown = function SvgArrowDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z\"\n })));\n};\nexport default SvgArrowDown;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgArrowRight = function SvgArrowRight(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M22 16L12 26l-1.4-1.4l8.6-8.6l-8.6-8.6L12 6z\"\n })));\n};\nexport default SvgArrowRight;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDown = function SvgDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z\"\n })));\n};\nexport default SvgDown;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgMenu = function SvgMenu(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M4 6h24v2H4zm0 18h24v2H4zm0-12h24v2H4zm0 6h24v2H4z\"\n })));\n};\nexport default SvgMenu;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgMoon = function SvgMoon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z\"\n })));\n};\nexport default SvgMoon;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgRight = function SvgRight(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M10 6v2h12.59L6 24.59L7.41 26L24 9.41V22h2V6H10z\"\n })));\n};\nexport default SvgRight;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgSun = function SvgSun(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z\"\n })));\n};\nexport default SvgSun;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgTranslator = function SvgTranslator(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M27.85 29H30l-6-15h-2.35l-6 15h2.15l1.6-4h6.85zm-7.65-6l2.62-6.56L25.45 23zM18 7V5h-7V2H9v3H2v2h10.74a14.71 14.71 0 0 1-3.19 6.18A13.5 13.5 0 0 1 7.26 9h-2.1a16.47 16.47 0 0 0 3 5.58A16.84 16.84 0 0 1 3 18l.75 1.86A18.47 18.47 0 0 0 9.53 16a16.92 16.92 0 0 0 5.76 3.84L16 18a14.48 14.48 0 0 1-5.12-3.37A17.64 17.64 0 0 0 14.8 7z\"\n })));\n};\nexport default SvgTranslator;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgLoading = function SvgLoading(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 24 24\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"var(--modern-c-brand)\",\n strokeLinecap: \"round\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"path\", {\n strokeDasharray: 60,\n strokeDashoffset: 60,\n strokeOpacity: 0.3,\n d: \"M12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3Z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n fill: \"freeze\",\n attributeName: \"stroke-dashoffset\",\n dur: \"1.3s\",\n values: \"60;0\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n strokeDasharray: 15,\n strokeDashoffset: 15,\n d: \"M12 3C16.9706 3 21 7.02944 21 12\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n fill: \"freeze\",\n attributeName: \"stroke-dashoffset\",\n dur: \"0.3s\",\n values: \"15;0\"\n }), /*#__PURE__*/React.createElement(\"animateTransform\", {\n attributeName: \"transform\",\n dur: \"1.5s\",\n repeatCount: \"indefinite\",\n type: \"rotate\",\n values: \"0 12 12;360 12 12\"\n })))));\n};\nexport default SvgLoading;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgSearch = function SvgSearch(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#888888\",\n d: \"m29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9Z\"\n })));\n};\nexport default SvgSearch;","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n // 1672913101634\n var cssReload = require(\"../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n // 1672913089599\n var cssReload = require(\"../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n // 1672913089537\n var cssReload = require(\"../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"------packages-cli-doc-core-src-theme-default-components-Button-index-module__button--B0JQV\",\"medium\":\"------packages-cli-doc-core-src-theme-default-components-Button-index-module__medium--WNEsY\",\"big\":\"------packages-cli-doc-core-src-theme-default-components-Button-index-module__big--U1msm\",\"brand\":\"------packages-cli-doc-core-src-theme-default-components-Button-index-module__brand--zXehA\",\"alt\":\"------packages-cli-doc-core-src-theme-default-components-Button-index-module__alt--ZSwJp\"};\n if(module.hot) {\n // 1672913089302\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"pager\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__pager--C_zBL\",\"has-next\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__has-next--Ldy33\",\"hasNext\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__has-next--Ldy33\",\"prev\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__prev--ajVjQ\",\"next\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__next--A2aco\",\"pager-link\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__pager-link--pAnzs\",\"pagerLink\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__pager-link--pAnzs\",\"title\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__title--jr5Zr\",\"desc\":\"------packages-cli-doc-core-src-theme-default-components-DocFooter-index-module__desc--rVEMI\"};\n if(module.hot) {\n // 1672913089411\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"grid-2\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-2--m2JAU\",\"grid2\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-2--m2JAU\",\"grid-4\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-4--cKq0u\",\"grid4\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-4--cKq0u\",\"grid-6\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-6--zyyfo\",\"grid6\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-6--zyyfo\",\"grid-3\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-3--FTep1\",\"grid3\":\"------packages-cli-doc-core-src-theme-default-components-HomeFeatures-index-module__grid-3--FTep1\"};\n if(module.hot) {\n // 1672913089331\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"clip\":\"------packages-cli-doc-core-src-theme-default-components-HomeHero-index-module__clip--QG9Rc\"};\n if(module.hot) {\n // 1672913089321\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"link\":\"------packages-cli-doc-core-src-theme-default-components-Link-index-module__link--R5q4o\"};\n if(module.hot) {\n // 1672913089366\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"localNav\":\"------packages-cli-doc-core-src-theme-default-components-LocalSideBar-index-module__localNav--_aGGP\",\"menu\":\"------packages-cli-doc-core-src-theme-default-components-LocalSideBar-index-module__menu--wNUbj\",\"backDrop\":\"------packages-cli-doc-core-src-theme-default-components-LocalSideBar-index-module__backDrop--wvTRL\"};\n if(module.hot) {\n // 1672913089449\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"------packages-cli-doc-core-src-theme-default-components-Nav-index-module__container--Be7Bu\",\"rightNav\":\"------packages-cli-doc-core-src-theme-default-components-Nav-index-module__rightNav--fxz4T\",\"social-links-icon\":\"------packages-cli-doc-core-src-theme-default-components-Nav-index-module__social-links-icon--aVv_y\",\"socialLinksIcon\":\"------packages-cli-doc-core-src-theme-default-components-Nav-index-module__social-links-icon--aVv_y\",\"menu-item\":\"------packages-cli-doc-core-src-theme-default-components-Nav-index-module__menu-item--WjR05\",\"menuItem\":\"------packages-cli-doc-core-src-theme-default-components-Nav-index-module__menu-item--WjR05\"};\n if(module.hot) {\n // 1672913089280\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"navHamburger\":\"------packages-cli-doc-core-src-theme-default-components-NavHambmger-index-module__navHamburger--wzxr1\",\"container\":\"------packages-cli-doc-core-src-theme-default-components-NavHambmger-index-module__container--kECx4\",\"top\":\"------packages-cli-doc-core-src-theme-default-components-NavHambmger-index-module__top--wzOB6\",\"middle\":\"------packages-cli-doc-core-src-theme-default-components-NavHambmger-index-module__middle--coO8e\",\"bottom\":\"------packages-cli-doc-core-src-theme-default-components-NavHambmger-index-module__bottom--RrwJk\",\"active\":\"------packages-cli-doc-core-src-theme-default-components-NavHambmger-index-module__active--hb8AN\"};\n if(module.hot) {\n // 1672913089383\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"navScreen\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__navScreen--NeczB\",\"active\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__active--qQFFd\",\"container\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__container--WLObZ\",\"navMenu\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__navMenu--3YuLy\",\"navMenuItem\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__navMenuItem--osgV9\",\"navAppearance\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__navAppearance--ctzdQ\",\"socialAndAppearance\":\"------packages-cli-doc-core-src-theme-default-components-NavScreen-index-module__socialAndAppearance--rp9pY\"};\n if(module.hot) {\n // 1672913089467\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"navScreenMenuGroup\":\"------packages-cli-doc-core-src-theme-default-components-NavScreenMenuGroup-index-module__navScreenMenuGroup--Tk5bz\",\"open\":\"------packages-cli-doc-core-src-theme-default-components-NavScreenMenuGroup-index-module__open--SenqS\",\"button\":\"------packages-cli-doc-core-src-theme-default-components-NavScreenMenuGroup-index-module__button--X7ejb\",\"buttonSpan\":\"------packages-cli-doc-core-src-theme-default-components-NavScreenMenuGroup-index-module__buttonSpan--IOfpr\",\"items\":\"------packages-cli-doc-core-src-theme-default-components-NavScreenMenuGroup-index-module__items--ciUdc\",\"down\":\"------packages-cli-doc-core-src-theme-default-components-NavScreenMenuGroup-index-module__down--uavm2\"};\n if(module.hot) {\n // 1672913089497\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"header-anchor\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__header-anchor--mPqs2\",\"headerAnchor\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__header-anchor--mPqs2\",\"overview-groups\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__overview-groups--_ecV6\",\"overviewGroups\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__overview-groups--_ecV6\",\"overview-group-li\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__overview-group-li--AhQcS\",\"overviewGroupLi\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__overview-group-li--AhQcS\",\"level-2\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__level-2--EdouY\",\"level2\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__level-2--EdouY\",\"overview-group\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__overview-group--mLD5f\",\"overviewGroup\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__overview-group--mLD5f\",\"header\":\"------packages-cli-doc-core-src-theme-default-components-Overview-index-module__header--GBUJO\"};\n if(module.hot) {\n // 1672913089431\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"searchInput\":\"------packages-cli-doc-core-src-theme-default-components-Search-index-module__searchInput--SjSZ2\",\"suggestionItem\":\"------packages-cli-doc-core-src-theme-default-components-Search-index-module__suggestionItem--ahvvD\",\"suggestionItemFirst\":\"------packages-cli-doc-core-src-theme-default-components-Search-index-module__suggestionItemFirst--Xu405\",\"searchCommand\":\"------packages-cli-doc-core-src-theme-default-components-Search-index-module__searchCommand--iUJv9\",\"focus\":\"------packages-cli-doc-core-src-theme-default-components-Search-index-module__focus--HZkzZ\"};\n if(module.hot) {\n // 1672913089282\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"sidebar\":\"------packages-cli-doc-core-src-theme-default-components-Siderbar-index-module__sidebar--UroNu\",\"open\":\"------packages-cli-doc-core-src-theme-default-components-Siderbar-index-module__open--ackUn\",\"menuLink\":\"------packages-cli-doc-core-src-theme-default-components-Siderbar-index-module__menuLink--EZlU3\",\"menuItem\":\"------packages-cli-doc-core-src-theme-default-components-Siderbar-index-module__menuItem--r3Oz1\",\"collapseContainer\":\"------packages-cli-doc-core-src-theme-default-components-Siderbar-index-module__collapseContainer--BgJSm\",\"menuItemActive\":\"------packages-cli-doc-core-src-theme-default-components-Siderbar-index-module__menuItemActive--RCb_U\"};\n if(module.hot) {\n // 1672913089508\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"social-links-icon\":\"------packages-cli-doc-core-src-theme-default-components-SocialLinks-index-module__social-links-icon--_8YjQ\",\"socialLinksIcon\":\"------packages-cli-doc-core-src-theme-default-components-SocialLinks-index-module__social-links-icon--_8YjQ\",\"menu-item\":\"------packages-cli-doc-core-src-theme-default-components-SocialLinks-index-module__menu-item--FU7nx\",\"menuItem\":\"------packages-cli-doc-core-src-theme-default-components-SocialLinks-index-module__menu-item--FU7nx\"};\n if(module.hot) {\n // 1672913089361\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"switch\":\"------packages-cli-doc-core-src-theme-default-components-Switch-index-module__switch--DdK0_\",\"check\":\"------packages-cli-doc-core-src-theme-default-components-Switch-index-module__check--WLpap\",\"icon\":\"------packages-cli-doc-core-src-theme-default-components-Switch-index-module__icon--Q_Ula\",\"dark\":\"------packages-cli-doc-core-src-theme-default-components-Switch-index-module__dark--O_IZ5\"};\n if(module.hot) {\n // 1672913089470\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"sun\":\"------packages-cli-doc-core-src-theme-default-components-SwitchAppearance-index-module__sun--JMkpU\",\"moon\":\"------packages-cli-doc-core-src-theme-default-components-SwitchAppearance-index-module__moon--tgdgB\"};\n if(module.hot) {\n // 1672913089364\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"tab\":\"------packages-cli-doc-core-src-theme-default-components-Tabs-index-module__tab--lUaxE\",\"not-selected\":\"------packages-cli-doc-core-src-theme-default-components-Tabs-index-module__not-selected--O8LId\",\"notSelected\":\"------packages-cli-doc-core-src-theme-default-components-Tabs-index-module__not-selected--O8LId\",\"selected\":\"------packages-cli-doc-core-src-theme-default-components-Tabs-index-module__selected--PfRUQ\"};\n if(module.hot) {\n // 1672913089299\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","// extracted by mini-css-extract-plugin\nexport default {\"content\":\"------packages-cli-doc-core-src-theme-default-layout-DocLayout-index-module__content--TP8A7\",\"docLayout\":\"------packages-cli-doc-core-src-theme-default-layout-DocLayout-index-module__docLayout--Q34AI\",\"aside-container\":\"------packages-cli-doc-core-src-theme-default-layout-DocLayout-index-module__aside-container--RsCtL\",\"asideContainer\":\"------packages-cli-doc-core-src-theme-default-layout-DocLayout-index-module__aside-container--RsCtL\"};\n if(module.hot) {\n // 1672913089343\n var cssReload = require(\"../../../../../../../node_modules/.pnpm/mini-css-extract-plugin@2.7.0_webpack@5.75.0/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","import siteData from 'virtual-site-data';\nimport { matchRoutes, useLocation } from 'react-router-dom';\nimport { routes } from 'virtual-routes';\nimport { HelmetProvider } from 'react-helmet-async';\nimport { useContext, useLayoutEffect } from 'react';\nimport Theme from '../theme-default';\nimport { getRelativePagePath, normalizeRoutePath } from './utils';\nimport { DataContext } from './hooks';\nimport { PageData } from '@/shared/types';\nimport { cleanUrl, omit } from '@/shared/utils';\n\nexport async function initPageData(routePath: string): Promise<PageData> {\n const matched = matchRoutes(routes, routePath)!;\n if (matched) {\n // Preload route component\n const matchedRoute = matched[0].route;\n const mod = await matchedRoute.preload();\n const pagePath = cleanUrl(matched[0].route.filePath);\n const relativePagePath = getRelativePagePath(\n routePath,\n pagePath,\n siteData?.base || '/',\n );\n return {\n siteData,\n pagePath,\n relativePagePath,\n ...omit(mod, ['default']),\n pageType: mod?.frontmatter?.pageType || 'doc',\n routePath,\n } as PageData;\n } else {\n // 404 Page\n return {\n siteData,\n pagePath: '',\n relativePagePath: '',\n pageType: '404',\n routePath: '/404',\n };\n }\n}\n\nexport function App({ helmetContext }: { helmetContext?: object }) {\n const { setData: setPageData } = useContext(DataContext);\n const { pathname } = useLocation();\n useLayoutEffect(() => {\n async function refetchData() {\n try {\n const pageData = await initPageData(normalizeRoutePath(pathname));\n setPageData!(pageData);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n }\n }\n refetchData();\n }, [pathname, setPageData]);\n return (\n <HelmetProvider context={helmetContext}>\n <Theme.Layout />\n </HelmetProvider>\n );\n}\n","import { routes } from 'virtual-routes';\nimport { matchRoutes, useLocation } from 'react-router-dom';\nimport { Suspense } from 'react';\nimport { normalizeRoutePath } from './utils';\n\nexport const Content = () => {\n const { pathname } = useLocation();\n const matched = matchRoutes(routes, normalizeRoutePath(pathname));\n if (!matched) {\n return <div></div>;\n }\n const routesElement = matched[0].route.element;\n return <Suspense>{routesElement}</Suspense>;\n};\n","import Theme from '@theme';\nimport { useState } from 'react';\nimport { createRoot, hydrateRoot } from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport { App, initPageData } from './App';\nimport { DataContext } from './hooks';\nimport { normalizeRoutePath } from './utils';\nimport { isProduction } from '@/shared/utils/index';\n\nexport async function renderInBrowser() {\n const container = document.getElementById('root')!;\n const enhancedApp = async () => {\n const initialPageData = await initPageData(\n normalizeRoutePath(window.location.pathname),\n );\n return function RootApp() {\n const [data, setData] = useState(initialPageData);\n return (\n <DataContext.Provider value={{ data, setData }}>\n <BrowserRouter>\n <App />\n </BrowserRouter>\n </DataContext.Provider>\n );\n };\n };\n const RootApp = await enhancedApp();\n if (isProduction()) {\n hydrateRoot(container, <RootApp />);\n } else {\n createRoot(container).render(<RootApp />);\n }\n}\n\nrenderInBrowser().then(() => {\n Theme.setup();\n});\n","import { useRef, useEffect } from 'react';\nimport { Header } from 'shared/types/index';\nimport { bindingAsideScroll, scrollToTarget } from '../../logic';\n\nexport function Aside(props: { headers: Header[]; outlineTitle: string }) {\n const { headers } = props;\n const hasOutline = headers.length > 0;\n // For outline text highlight\n const markerRef = useRef<HTMLDivElement>(null);\n const baseHeaderLevel = headers[0]?.depth || 2;\n\n useEffect(() => {\n let unbinding: (() => void) | undefined;\n if (markerRef.current) {\n markerRef.current.style.opacity = '0';\n }\n setTimeout(() => {\n unbinding = bindingAsideScroll();\n }, 100);\n if (!window.location.hash) {\n window.scrollTo(0, 0);\n }\n return () => {\n if (unbinding) {\n unbinding();\n }\n };\n }, [headers]);\n\n // const handleHeaderClick = e => {};\n\n const renderHeader = (header: Header) => {\n return (\n <li key={header.id}>\n <a\n href={`#${header.id}`}\n block=\"~\"\n text=\"text-2\"\n font=\"medium\"\n hover=\"text-text-1\"\n transition=\"color duration-300\"\n className=\"leading-7\"\n style={{\n fontSize: '13px',\n paddingLeft: (header.depth - baseHeaderLevel) * 12,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n onClick={e => {\n e.preventDefault();\n const target = document.getElementById(header.id);\n if (target) {\n scrollToTarget(target, false);\n }\n }}\n >\n {header.text}\n </a>\n </li>\n );\n };\n\n return (\n <div flex=\"~ col\" className=\"max-w-256px\">\n <div className={hasOutline ? `<lg:hidden` : 'hidden'}>\n <div\n p=\"l-4\"\n text=\"sm\"\n font-medium=\"~\"\n id=\"aside-container\"\n style={{\n borderLeft: '1px solid var(--modern-c-divider-light)',\n }}\n className=\"relative\"\n >\n <div\n className=\"absolute\"\n opacity=\"0\"\n w=\"1px\"\n h=\"18px\"\n bg=\"brand\"\n ref={markerRef}\n style={{\n top: '33px',\n left: '-1px',\n transition:\n 'top 0.25s cubic-bezier(0, 1, 0.5, 1), background-color 0.5s, opacity 0.25s',\n }}\n id=\"aside-marker\"\n ></div>\n <div block=\"~\" className=\"leading-7\" text=\"sm\" font=\"semibold\">\n {props.outlineTitle}\n </div>\n <nav>\n <ul className=\"relative\">{headers.map(renderHeader)}</ul>\n </nav>\n </div>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Link } from '../Link';\nimport styles from './index.module.scss';\n\ninterface ButtonProps {\n type?: string;\n size?: 'medium' | 'big';\n theme?: 'brand' | 'alt';\n text: string;\n href?: string;\n external?: boolean;\n className?: string;\n}\n\nexport function Button(props: ButtonProps) {\n const {\n theme = 'brand',\n size = 'big',\n href = '/',\n external = false,\n className = '',\n } = props;\n let type: string | typeof Link | null = null;\n\n if (props.type === 'button') {\n type = 'button';\n } else if (props.type === 'a') {\n // Will be tree shaking in production in modern mode.\n type = external ? 'a' : Link;\n }\n\n return React.createElement(\n type ?? 'a',\n {\n className: `${styles.button} ${styles[theme]} ${styles[size]} ${className}`,\n href,\n },\n props.text,\n );\n}\n","import { useLocaleSiteData, usePrevNextPage } from '../../logic';\nimport { Link } from '../Link';\nimport styles from './index.module.scss';\nimport { normalizeHref } from '@/runtime';\n\nexport function DocFooter() {\n const { prevPage, nextPage } = usePrevNextPage();\n const { prevPageText = 'Previous Page', nextPageText = 'Next page' } =\n useLocaleSiteData();\n\n return (\n <footer m=\"t-8\">\n <div flex=\"~ col sm:row\" justify=\"sm:around\" gap=\"2\" p=\"t-6\">\n <div flex=\"~ col\" className={styles.prev}>\n {prevPage ? (\n <Link\n href={normalizeHref(prevPage.link)}\n className={styles.pagerLink}\n >\n <span className={styles.desc}>{prevPageText}</span>\n <span className={styles.title}>{prevPage.text}</span>\n </Link>\n ) : null}\n </div>\n <div flex=\"~ col\" className={styles.next}>\n {nextPage ? (\n <Link\n href={normalizeHref(nextPage.link)}\n className={`${styles.pagerLink} ${styles.next}`}\n >\n <span className={styles.desc}>{nextPageText}</span>\n <span className={styles.title}>{nextPage.text}</span>\n </Link>\n ) : null}\n </div>\n </div>\n </footer>\n );\n}\n","import styles from './index.module.scss';\nimport { usePageData } from '@/runtime';\n\nconst getGridClass = (count?: number): string => {\n if (!count) {\n return '';\n } else if (count === 2) {\n return 'grid2';\n } else if (count === 3) {\n return 'grid3';\n } else if (count % 3 === 0) {\n return 'grid4';\n } else if (count % 2 === 0) {\n return 'grid6';\n }\n return '';\n};\n\nexport function HomeFeature() {\n const { frontmatter } = usePageData();\n const features = frontmatter?.features;\n const gridClass = getGridClass(features?.length);\n\n return (\n <div className=\"max-w-1152px\" m=\"auto\" flex=\"~ wrap\" justify=\"between\">\n {features?.map(feature => {\n const { icon, title, details } = feature;\n return (\n <div\n key={title}\n border=\"rounded-md\"\n p=\"r-0 md:r-4 b-4\"\n className={`${gridClass ? styles[gridClass] : 'w-full'}`}\n >\n <article\n key={title}\n h=\"full\"\n p=\"6\"\n bg=\"soft\"\n border=\"~ bg-soft solid rounded-xl\"\n >\n <div\n flex=\"~ center\"\n m=\"b-5\"\n w=\"12\"\n h=\"12\"\n text=\"3xl\"\n bg=\"gray-light-4 dark:bg-white\"\n border=\"rounded-md\"\n >\n {icon}\n </div>\n <h2 font=\"bold\">{title}</h2>\n <p p=\"t-2\" text=\"sm text-2\" font=\"medium\" className=\"leading-6\">\n {details}\n </p>\n </article>\n </div>\n );\n })}\n </div>\n );\n}\n","import { usePageData } from '@/runtime';\n\nexport function Footer() {\n const { siteData } = usePageData();\n const { message } = siteData.themeConfig.footer || {};\n return (\n <footer\n p=\"y-8 x-6 sm:8\"\n bg=\"white\"\n pos=\"relative\"\n border=\"t-1 b-0 solid divider-light\"\n >\n <div m=\"auto\" w=\"full\" text=\"center\">\n {message && (\n <div font=\"medium\" text=\"sm text-2\">\n {message}\n </div>\n )}\n </div>\n </footer>\n );\n}\n","import { Button } from '../Button';\nimport styles from './index.module.scss';\nimport { normalizeHref, withBase, usePageData } from '@/runtime';\n\nconst DEFAULT_HERO = {\n name: 'modern',\n text: 'modern ssg',\n tagline: 'modern ssg',\n actions: [],\n image: undefined,\n};\n\nexport function HomeHero() {\n const { frontmatter } = usePageData();\n const hero = frontmatter?.hero || DEFAULT_HERO;\n const hasImage = hero.image !== undefined;\n return (\n <div\n m=\"auto\"\n p=\"t-12 x-6 b-12 sm:t-0 sm:x-8 sm:x-16 md:t-20 md:x-16 md:b-16\"\n >\n <div className=\"max-w-1152px\" m=\"auto\" flex=\"~ col md:row\">\n <div\n m=\"auto md:0\"\n order=\"2 md:1\"\n text=\"center md:left\"\n flex=\"~ col lt-sm:c\"\n className=\"max-w-592px\"\n >\n <h1\n font=\"bold\"\n text=\"3xl sm:5xl md:6xl\"\n m=\"auto md:0\"\n p=\"b-3\"\n className=\"max-w-392px sm:max-w-576px\"\n >\n <span className={styles.clip}>{hero.name}</span>\n </h1>\n <p\n m=\"x-auto md:0\"\n text=\"3xl sm:5xl md:6xl\"\n font=\"bold\"\n className=\"max-w-392px sm:max-w-576px\"\n >\n {hero.text}\n </p>\n <p\n p=\"t-4\"\n m=\"auto md:0\"\n text=\"sm sm:xl md:2xl text-2\"\n font=\"medium\"\n className=\"whitespace-pre-wrap max-w-392px sm:max-w-576px\"\n >\n {hero.tagline}\n </p>\n <div flex=\"~ wrap\" justify=\"center md:start\" m=\"-1.5\" p=\"t-8\">\n {hero.actions.map(action => (\n <div p=\"1\" flex=\"shrink-0\" key={action.link}>\n <Button\n type=\"a\"\n text={action.text}\n href={normalizeHref(withBase(action.link))}\n theme={action.theme}\n />\n </div>\n ))}\n </div>\n </div>\n\n {hasImage ? (\n <div\n w=\"sm:max-80\"\n h=\"sm:max-80\"\n flex=\"md:center\"\n m=\"auto\"\n order=\"1 md:2\"\n display=\"flex sm:flex md:none lg:flex\"\n >\n <img src={hero.image?.src} alt={hero.image?.alt} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { matchRoutes, useNavigate } from 'react-router-dom';\nimport { routes } from 'virtual-routes';\nimport nprogress from 'nprogress';\nimport styles from './index.module.scss';\nimport { normalizeRoutePath, withBase } from '@/runtime';\n\nexport interface LinkProps {\n href?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nnprogress.configure({ showSpinner: false });\n\nconst EXTERNAL_URL_RE = /^(https?:)?\\/\\//;\n\nexport function Link(props: LinkProps) {\n const { href = '/', children, className = '' } = props;\n const isExternal = EXTERNAL_URL_RE.test(href);\n const target = isExternal ? '_blank' : '';\n const rel = isExternal ? 'noopener noreferrer' : undefined;\n const withBaseUrl = isExternal ? href : withBase(href);\n const navigate = useNavigate();\n const handleNavigate = async (\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent>,\n ) => {\n e.preventDefault();\n const matchedRoutes = matchRoutes(routes, normalizeRoutePath(withBaseUrl));\n if (matchedRoutes?.length) {\n const timer = setTimeout(() => {\n nprogress.start();\n }, 200);\n await matchedRoutes[0].route.preload();\n clearTimeout(timer);\n nprogress.done();\n }\n navigate(withBaseUrl, { replace: false });\n };\n if (!isExternal) {\n return (\n <a\n className={`${styles.link} ${className}`}\n rel={rel}\n target={target}\n onClick={handleNavigate}\n cursor=\"pointer\"\n >\n {children}\n </a>\n );\n } else {\n return (\n <a\n href={withBaseUrl}\n target={target}\n rel={rel}\n className={`${styles.link} ${className}`}\n >\n {children}\n </a>\n );\n }\n}\n","import { Fragment, useState } from 'react';\nimport { SidebarGroup, SidebarItem } from 'shared/types';\nimport { SideBar } from '../Siderbar';\nimport MenuIcon from '../../assets/menu.svg';\nimport styles from './index.module.scss';\n\ninterface Props {\n pathname: string;\n langRoutePrefix: string;\n sidebarData: (SidebarGroup | SidebarItem)[];\n}\n\nexport function SideMenu(props: Props) {\n const { langRoutePrefix, pathname, sidebarData } = props;\n const [isSidebarOpen, setIsOpen] = useState<boolean>(false);\n function openSidebar() {\n setIsOpen(true);\n }\n\n function closeSidebar() {\n setIsOpen(false);\n }\n return (\n <Fragment>\n <div className={styles.localNav}>\n <button flex=\"~ center\" onClick={openSidebar} className={styles.menu}>\n <div text=\"md\" m=\"r-2\">\n <MenuIcon />\n </div>\n <span text=\"sm\">Menu</span>\n </button>\n </div>\n <SideBar\n langRoutePrefix={langRoutePrefix}\n pathname={pathname}\n sidebarData={sidebarData}\n isSidebarOpen={isSidebarOpen}\n />\n {isSidebarOpen ? (\n <div onClick={closeSidebar} className={styles.backDrop} />\n ) : null}\n </Fragment>\n );\n}\n","import { useState } from 'react';\nimport { NavItemWithLink } from 'shared/types';\nimport { Link } from '../Link';\nimport Translator from '../../assets/translator.svg';\nimport Down from '../../assets/down.svg';\nimport Right from '../../assets/right.svg';\n\nexport interface NavMenuGroupItem {\n text: string | React.ReactElement;\n items: NavItemWithLink[];\n activeIndex?: number;\n // When the item is transition, we need to give a react element instead of a string.\n isTranslation?: boolean;\n}\n\nexport function NavMenuGroup(item: NavMenuGroupItem) {\n const { activeIndex, isTranslation } = item;\n const [isOpen, setIsOpen] = useState(false);\n return (\n <div\n h=\"14\"\n className=\"relative\"\n flex=\"~ center\"\n onMouseLeave={() => setIsOpen(false)}\n >\n <button\n onMouseEnter={() => setIsOpen(true)}\n flex=\"~ center\"\n align=\"items-center\"\n font=\"medium\"\n text=\"sm text-1 hover:text-2\"\n transition=\"color duration-200\"\n className=\"nav-menu-group-button\"\n >\n <span m=\"r-1\" text=\"sm\" font=\"medium\">\n {isTranslation ? <Translator w=\"18px\" h=\"18px\" /> : item.text}\n </span>\n <Down />\n </button>\n <div\n pos=\"top-13 right-0\"\n m=\"x-0.8\"\n transition=\"opacity duration-300\"\n className=\"nav-menu-group-content absolute\"\n style={{\n opacity: isOpen ? 1 : 0,\n visibility: isOpen ? 'visible' : 'hidden',\n }}\n >\n <div\n p=\"3\"\n w=\"full\"\n h=\"full\"\n className=\"min-w-128px max-h-100vh rounded-xl\"\n bg=\"white\"\n style={{\n boxShadow: 'var(--modern-shadow-3)',\n marginRight: '-1.5rem',\n zIndex: 100,\n border: '1px solid var(--modern-c-divider-light)',\n }}\n >\n {item.items.map((child, index) => {\n if (index === activeIndex) {\n return (\n <div key={child.link} className=\"rounded-md\" p=\"y-1.6 l-3\">\n <span m=\"r-1\" text=\"brand\">\n {child.text}\n </span>\n </div>\n );\n } else {\n return (\n <div key={child.link} font=\"medium\">\n <Link href={child.link}>\n <div className=\"rounded-md\" hover=\"bg-mute\" p=\"y-1.6 l-3\">\n <div flex=\"~\">\n <span m=\"r-1\">{child.text}</span>\n <Right w=\"11px\" h=\"11px\" text=\"text-3\" m=\"t-1 r-1\" />\n </div>\n </div>\n </Link>\n </div>\n );\n }\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { NavItemWithLink } from 'shared/types';\nimport { Link } from '../Link';\nimport { normalizeHref } from '@/runtime';\nimport { withoutBase, withoutLang } from '@/shared/utils';\n\ninterface Props {\n pathname: string;\n langs: string[];\n base: string;\n}\n\nexport function NavMenuSingleItem(item: NavItemWithLink & Props) {\n const { pathname, base, langs } = item;\n const isActive = new RegExp(item.activeMatch || item.link).test(\n withoutLang(withoutBase(pathname, base), langs),\n );\n return (\n <div\n key={item.text}\n text=\"sm\"\n font=\"medium\"\n m=\"x-3\"\n className={`${isActive ? 'text-brand' : ''}`}\n >\n <Link href={normalizeHref(item.link)}>{item.text}</Link>\n </div>\n );\n}\n","import { NavItem } from 'shared/types';\nimport { useLocation } from 'react-router-dom';\nimport { Search } from '@theme';\nimport { useLocaleSiteData } from '../../logic';\nimport { SwitchAppearance } from '../SwitchAppearance';\nimport { NavHamburger } from '../NavHambmger';\nimport { SocialLinks } from '../SocialLinks';\nimport { NavMenuGroup, NavMenuGroupItem } from './NavMenuGroup';\nimport { NavMenuSingleItem } from './NavMenuSingleItem';\nimport styles from './index.module.scss';\nimport { usePageData, withBase } from '@/runtime';\nimport { replaceLang } from '@/shared/utils';\n\nexport interface NavProps {\n beforeNavTitle?: React.ReactNode;\n afterNavTitle?: React.ReactNode;\n}\n\ninterface NavBarTitleProps {\n title: string;\n langRoutePrefix: string;\n logo?: string;\n}\n\nconst NavBarTitle = ({ title, langRoutePrefix, logo }: NavBarTitleProps) => {\n return (\n <div className={`${styles.navBarTitle}`}>\n <a\n href={withBase(langRoutePrefix)}\n w=\"full\"\n h=\"full\"\n text=\"1rem\"\n font=\"semibold\"\n transition=\"opacity duration-300\"\n hover=\"opacity-60\"\n className=\"flex items-center\"\n >\n {logo ? (\n <img src={logo} alt=\"logo\" id=\"logo\" m=\"r-4\" className=\"w-24\" />\n ) : (\n <span>{title}</span>\n )}\n </a>\n </div>\n );\n};\n\nconst NavTranslations = ({\n translationMenuData,\n}: {\n translationMenuData: NavMenuGroupItem;\n}) => {\n return (\n <div\n flex=\"~\"\n text=\"sm\"\n font=\"bold\"\n align=\"items-center\"\n className={`translation ${styles.menuItem}`}\n >\n <div m=\"x-1.5\">\n <NavMenuGroup {...translationMenuData} isTranslation />\n </div>\n </div>\n );\n};\n\nexport function Nav(props: NavProps) {\n const { beforeNavTitle, afterNavTitle } = props;\n const { siteData } = usePageData();\n const { pathname } = useLocation();\n const hasAppearanceSwitch = siteData.themeConfig.darkMode !== false;\n const localeData = useLocaleSiteData();\n const localeLanguages = Object.values(siteData.themeConfig.locales || {});\n const hasMultiLanguage = localeLanguages.length > 1;\n const socialLinks = siteData?.themeConfig?.socialLinks || [];\n const hasSocialLinks = socialLinks.length > 0;\n const defaultLang = siteData.lang || 'zh';\n const langs = localeLanguages.map(item => item.lang || 'zh') || [];\n const { logo, base } = siteData;\n\n const translationMenuData = hasMultiLanguage\n ? {\n items: localeLanguages.map(item => ({\n text: item.label,\n link: replaceLang(pathname, item.lang, defaultLang, langs),\n })),\n activeIndex: localeLanguages.findIndex(\n item => item.lang === localeData.lang,\n ),\n }\n : null;\n const NavAppearance = () => {\n return (\n <div\n className={`appearance ${styles.menuItem}`}\n display=\"none sm:flex\"\n align-items-center=\"center\"\n >\n <SwitchAppearance />\n </div>\n );\n };\n const NavMenu = ({ menuItems }: { menuItems: NavItem[] }) => {\n return (\n <div className=\"menu\" h=\"14\">\n {menuItems.map(item =>\n 'items' in item ? (\n <div m=\"x-3\" last=\"mr-0\" key={item.text}>\n <NavMenuGroup {...item} />\n </div>\n ) : (\n <NavMenuSingleItem\n pathname={pathname}\n langs={langs}\n base={base}\n key={item.link}\n {...item}\n />\n ),\n )}\n </div>\n );\n };\n\n const menuItems = localeData.nav || [];\n const hasSearch = siteData?.themeConfig?.search !== false;\n\n const title = localeData.title ?? siteData.title;\n\n const rightNav = () => {\n return (\n <div className={styles.rightNav}>\n {hasSearch && (\n <div className=\"search\" flex=\"sm:1\" p=\"sm:l-8\">\n <Search\n langRoutePrefix={localeData.langRoutePrefix || ''}\n defaultLang={defaultLang}\n langs={langs}\n />\n </div>\n )}\n <NavMenu menuItems={menuItems} />\n {hasMultiLanguage && (\n <NavTranslations translationMenuData={translationMenuData!} />\n )}\n {hasAppearanceSwitch && <NavAppearance />}\n {hasSocialLinks && <SocialLinks socialLinks={socialLinks} />}\n </div>\n );\n };\n return (\n <header\n z=\"4\"\n className=\"top-0 left-0 md:border-b lg:border-b relative md:fixed\"\n style={{\n borderBottom: '1px solid var(--modern-c-divider-light)',\n }}\n w=\"full\"\n >\n <div\n className=\"relative\"\n p=\"x-6\"\n transition=\"background-color duration-500\"\n >\n <div\n flex=\"~\"\n justify=\"between\"\n align=\"items-center\"\n h=\"full\"\n className={`${styles.container}`}\n >\n {beforeNavTitle}\n <NavBarTitle\n title={title}\n langRoutePrefix={localeData.langRoutePrefix || '/'}\n logo={logo}\n />\n {afterNavTitle}\n <div\n className={styles.content}\n flex=\"~ 1\"\n justify=\"end\"\n align-items-center=\"~\"\n >\n {rightNav()}\n <NavHamburger\n localeData={localeData}\n siteData={siteData}\n pathname={pathname}\n />\n </div>\n </div>\n </div>\n </header>\n );\n}\n","import { Fragment } from 'react';\nimport type { LocaleConfig, SiteData, DefaultThemeConfig } from 'shared/types';\nimport { NavScreen } from '../NavScreen';\nimport { useNav } from '../../logic/useNav';\nimport styles from './index.module.scss';\n\ninterface Props {\n localeData: LocaleConfig;\n siteData: SiteData<DefaultThemeConfig>;\n pathname: string;\n}\n\nexport function NavHamburger(props: Props) {\n const { localeData, siteData, pathname } = props;\n const { isScreenOpen, toggleScreen } = useNav();\n return (\n <Fragment>\n <button\n onClick={toggleScreen}\n className={`${isScreenOpen ? styles.active : ''} ${\n styles.navHamburger\n }`}\n >\n <span className={styles.container}>\n <span className={styles.top} />\n <span className={styles.middle} />\n <span className={styles.bottom} />\n </span>\n </button>\n <NavScreen\n isScreenOpen={isScreenOpen}\n localeData={localeData}\n siteData={siteData}\n pathname={pathname}\n />\n </Fragment>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport { LocaleConfig, NavItem, DefaultThemeConfig } from 'shared/types';\nimport type { SiteData } from 'shared/types';\nimport {\n NavScreenMenuGroup,\n NavScreenMenuGroupItem,\n} from '../NavScreenMenuGroup/NavScreenMenuGroup';\nimport { NavMenuSingleItem } from '../Nav/NavMenuSingleItem';\nimport { SwitchAppearance } from '../SwitchAppearance';\nimport Translator from '../../assets/translator.svg';\nimport { SocialLinks } from '../SocialLinks';\nimport styles from './index.module.scss';\n\ninterface Props {\n isScreenOpen: boolean;\n localeData: LocaleConfig;\n siteData: SiteData<DefaultThemeConfig>;\n pathname: string;\n}\n\nconst NavScreenTranslations = ({\n translationMenuData,\n}: {\n translationMenuData: NavScreenMenuGroupItem;\n}) => {\n return (\n <div\n className={styles.navTranslations}\n flex=\"~\"\n text=\"sm\"\n font=\"bold\"\n justify=\"center\"\n >\n <div m=\"x-1.5\">\n <NavScreenMenuGroup {...translationMenuData} />\n </div>\n </div>\n );\n};\n\nexport function NavScreen(props: Props) {\n const { isScreenOpen, localeData, siteData, pathname } = props;\n const screen = useRef<HTMLDivElement | null>(null);\n const localesData = siteData.themeConfig.locales || [];\n const hasMultiLanguage = localesData.length > 1;\n const menuItems = localeData.nav || [];\n const hasAppearanceSwitch = siteData.themeConfig.darkMode !== false;\n const socialLinks = siteData?.themeConfig?.socialLinks || [];\n const hasSocialLinks = socialLinks.length > 0;\n const langs = localesData.map(item => item.lang || 'zh') || [];\n const { base } = siteData;\n\n const translationMenuData = hasMultiLanguage\n ? {\n text: <Translator w=\"18px\" h=\"18px\" />,\n items: localesData.map(item => ({\n text: item.label,\n link: `/${item.lang}`,\n })),\n activeIndex: localesData.findIndex(\n item => item.lang === localeData.lang,\n ),\n }\n : null;\n const NavScreenAppearance = () => {\n return (\n <div\n className={`align-items-center appearance pa-2 ${styles.navAppearance}`}\n flex=\"~\"\n justify=\"center\"\n >\n <SwitchAppearance />\n </div>\n );\n };\n const NavScreenMenu = ({ menuItems }: { menuItems: NavItem[] }) => {\n return (\n <div className={styles.navMenu}>\n {menuItems.map((item, index) => {\n return (\n <div key={index} w=\"full\" className={styles.navMenuItem}>\n {'link' in item ? (\n <NavMenuSingleItem\n pathname={pathname}\n key={index}\n base={base}\n langs={langs}\n {...item}\n />\n ) : (\n <div m=\"x-3\" last=\"mr-0\" key={index}>\n <NavScreenMenuGroup {...item} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n };\n useEffect(() => {\n screen.current &&\n isScreenOpen &&\n disableBodyScroll(screen.current, { reserveScrollBarGap: true });\n return () => {\n clearAllBodyScrollLocks();\n };\n }, [isScreenOpen]);\n return (\n <div\n className={`${styles.navScreen} ${isScreenOpen ? styles.active : ''}`}\n ref={screen}\n id=\"navScreen\"\n >\n <div className={styles.container}>\n <NavScreenMenu menuItems={menuItems} />\n <div\n className={styles.socialAndAppearance}\n flex=\"~\"\n justify=\"center\"\n align-items-center=\"center\"\n >\n {hasAppearanceSwitch && <NavScreenAppearance />}\n </div>\n {hasMultiLanguage && (\n <NavScreenTranslations translationMenuData={translationMenuData!} />\n )}\n {hasSocialLinks && <SocialLinks socialLinks={socialLinks} />}\n </div>\n </div>\n );\n}\n","import { NavItemWithLink } from 'shared/types';\nimport { useState } from 'react';\nimport Down from '../../assets/down.svg';\nimport Right from '../../assets/right.svg';\nimport { Link } from '../Link';\nimport styles from './index.module.scss';\n\nexport interface NavScreenMenuGroupItem {\n text?: string | React.ReactElement;\n items: NavItemWithLink[];\n activeIndex?: number;\n}\n\nexport function NavScreenMenuGroup(item: NavScreenMenuGroupItem) {\n const { activeIndex } = item;\n const [isOpen, setIsOpen] = useState(false);\n return (\n <div\n pos=\"relative\"\n className={`${isOpen ? styles.open : ''} ${styles.navScreenMenuGroup}`}\n >\n <button\n className={styles.button}\n onClick={() => {\n setIsOpen(!isOpen);\n }}\n >\n <span className={styles.buttonSpan}>{item.text}</span>\n <Down className={`${isOpen ? styles.open : ''} ${styles.down} `} />\n </button>\n <div>\n <div className={styles.items}>\n {item.items.map((child, index) => {\n if (index === activeIndex) {\n return (\n <div className=\"pa-1\" key={child.link}>\n <span m=\"r-1\" text=\"brand\">\n {child.text}\n </span>\n </div>\n );\n } else {\n return (\n <div className=\"pa-1\" key={child.link} font=\"medium\">\n <Link href={child.link}>\n <div>\n <div flex=\"~\">\n <span m=\"r-1\">{child.text}</span>\n <Right w=\"11px\" h=\"11px\" text=\"text-3\" m=\"t-1 r-1\" />\n </div>\n </div>\n </Link>\n </div>\n );\n }\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport { Header, NormalizedSidebarGroup, SidebarItem } from 'shared/types';\nimport { useSidebarData } from '../../logic';\nimport { Link } from '../Link';\nimport { isEqualPath } from '../../logic/utils';\nimport styles from './index.module.scss';\nimport { usePageData, normalizeHref, withBase } from '@/runtime';\n\ninterface GroupItem {\n text?: string;\n link?: string;\n headers?: Header[];\n}\n\ninterface Group {\n name: string;\n items: GroupItem[];\n}\n\nexport function Overview() {\n const { siteData, routePath } = usePageData();\n const { pages } = siteData;\n const overviewPageModules = pages.filter(\n page =>\n page.routePath.startsWith(routePath.replace(/overview$/, '')) &&\n page.routePath !== routePath,\n );\n const { items: overviewSidebarGroups } = useSidebarData() as {\n items: (NormalizedSidebarGroup | SidebarItem)[];\n };\n const groups = useMemo(() => {\n return overviewSidebarGroups\n .filter(item => 'items' in item)\n .map(sidebarGroup => ({\n name: sidebarGroup.text || '',\n items: (sidebarGroup as NormalizedSidebarGroup).items.map(\n (item: NormalizedSidebarGroup | SidebarItem) => {\n const pageModule = overviewPageModules.find(m =>\n isEqualPath(m.routePath, withBase(item.link || '')),\n );\n const getChildLink = (\n traverseItem: SidebarItem | NormalizedSidebarGroup,\n ): string => {\n if (traverseItem.link) {\n return traverseItem.link;\n }\n if ('items' in traverseItem) {\n return getChildLink(traverseItem.items[0]);\n }\n return '';\n };\n const link = getChildLink(item);\n return {\n ...item,\n link,\n headers:\n (pageModule?.toc as Header[])?.filter(\n header => header.depth === 2,\n ) || [],\n };\n },\n ),\n })) as Group[];\n }, [overviewSidebarGroups]);\n\n return (\n <div className=\"overview-index\" m=\"x-auto\" p=\"y-8 x-8\">\n <div flex=\"~\" align-items-center=\"~\" justify=\"between\">\n <h1>Overview</h1>\n </div>\n\n {groups.map(group => (\n <div m=\"b-16\" key={group.name}>\n <h2>{group.name}</h2>\n <div className={styles.overviewGroups}>\n {group.items.map(item => (\n <div className={styles.overviewGroup} key={item.link}>\n <div flex=\"~ center\">\n <h3 style={{ marginBottom: 0 }}>\n <Link href={normalizeHref(item.link)}>{item.text}</Link>\n </h3>\n </div>\n <ul list=\"none\">\n {item.headers?.map(header => (\n <li\n key={header.id}\n m=\"first:t-2\"\n className={`${styles.overviewGroupLi} ${\n styles[`level${header.depth}`]\n }`}\n >\n <Link href={`${normalizeHref(item.link)}#${header.id}`}>\n {header.text}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import type { MatchResultItem } from './logic/search';\nimport styles from './index.module.scss';\n\nexport function SuggestionContent(props: {\n suggestion: MatchResultItem;\n query: string;\n isCurrent: boolean;\n isFirst: boolean;\n}) {\n const { suggestion, query } = props;\n const renderHeaderMatch = () => {\n if (suggestion.type === 'header') {\n const { header, headerHighlightIndex } = suggestion;\n const headerPrefix = header.slice(0, headerHighlightIndex);\n const headerSuffix = header.slice(headerHighlightIndex + query.length);\n return (\n <div font=\"medium\">\n <span>{headerPrefix}</span>\n <span text=\"brand-light\">{query}</span>\n <span>{headerSuffix}</span>\n </div>\n );\n } else {\n return <div font=\"medium\">{suggestion.header}</div>;\n }\n };\n const renderStatementMatch = () => {\n if (suggestion.type !== 'content') {\n return <div></div>;\n }\n const { statementHighlightIndex, statement } = suggestion;\n const statementPrefix = statement.slice(0, statementHighlightIndex);\n const statementSuffix = statement.slice(\n statementHighlightIndex + query.length,\n );\n return (\n <div font=\"normal\" text=\"sm gray-light\" w=\"full\">\n <span>{statementPrefix}</span>\n <span text=\"brand-light\">{query}</span>\n <span>{statementSuffix}</span>\n </div>\n );\n };\n return (\n <div\n table-cell=\"~\"\n p=\"x-3 y-2\"\n hover=\"bg-[#f3f4f5] \"\n text=\"#2c3e50\"\n className={`${props.isCurrent ? 'bg-[#f3f4f5]' : 'bg-white'} ${\n styles.suggestionItem\n } ${props.isFirst ? styles.suggestionItemFirst : ''}`}\n transition=\"bg duration-200\"\n >\n <div font=\"medium\" text=\"sm\">\n {renderHeaderMatch()}\n </div>\n {suggestion.type === 'content' && renderStatementMatch()}\n </div>\n );\n}\n","import { ChangeEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport SearchSvg from './assets/search.svg';\nimport LoadingSvg from './assets/loading.svg';\nimport type { MatchResultItem, PageSearcher } from './logic/search';\nimport styles from './index.module.scss';\nimport { SuggestionContent } from './Suggestion';\nimport { usePageData } from '@/runtime';\n\nconst KEY_CODE = {\n ARROW_UP: 'ArrowUp',\n ARROW_DOWN: 'ArrowDown',\n ENTER: 'Enter',\n SEARCH: 'KeyK',\n};\n\nexport interface SearchOptions {\n langRoutePrefix: string;\n defaultLang: string;\n langs: string[];\n}\n\nexport function Search(props: SearchOptions) {\n const [query, setQuery] = useState('');\n const [suggestions, setSuggestions] = useState<MatchResultItem[]>([]);\n const [initialized, setInitialized] = useState(false);\n const [searching, setSearching] = useState(false);\n const [focused, setFocused] = useState(false);\n const [currentSuggestionIndex, setCurrentSuggestionIndex] = useState(-1);\n const psRef = useRef<PageSearcher>();\n const initPageSearcherPromiseRef = useRef<Promise<void>>();\n const [disableInput, setDisableInput] = useState(true);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const { siteData } = usePageData();\n // initializing or searching\n const showLoading = !initialized || searching;\n // 1. page searcher has been initialized and finish searching\n // 2. result is empty\n const showNotFound = !showLoading && suggestions.length === 0;\n // eslint-disable-next-line consistent-return\n const initPageSearcher = useCallback(async () => {\n if (!psRef.current) {\n const { PageSearcher } = await import('./logic/search');\n const { defaultLang, langs, langRoutePrefix } = props;\n psRef.current = new PageSearcher({\n defaultLang,\n langs,\n langRoutePrefix,\n pages: siteData.pages,\n });\n await psRef.current.init();\n setInitialized(true);\n } else {\n return Promise.resolve();\n }\n }, [props.langRoutePrefix]);\n\n const onQueryChanged = useCallback(\n async (e: ChangeEvent<HTMLInputElement>) => {\n const newQuery = e.target.value;\n setQuery(newQuery);\n initPageSearcherPromiseRef.current =\n initPageSearcherPromiseRef.current || initPageSearcher();\n await initPageSearcherPromiseRef.current;\n setSearching(true);\n const matched = await psRef.current!.match(newQuery);\n setSearching(false);\n setSuggestions(matched);\n },\n [initPageSearcher],\n );\n\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n switch (e.code) {\n case KEY_CODE.SEARCH:\n if ((e.ctrlKey || e.metaKey) && searchInputRef.current) {\n e.preventDefault();\n if (!focused) {\n setFocused(true);\n searchInputRef.current.focus();\n } else {\n setFocused(false);\n searchInputRef.current.blur();\n }\n }\n break;\n case KEY_CODE.ARROW_DOWN:\n e.preventDefault();\n setCurrentSuggestionIndex(\n (currentSuggestionIndex + 1) % suggestions.length,\n );\n break;\n case KEY_CODE.ARROW_UP:\n e.preventDefault();\n setCurrentSuggestionIndex(\n (currentSuggestionIndex - 1 + suggestions.length) %\n suggestions.length,\n );\n break;\n case KEY_CODE.ENTER:\n if (currentSuggestionIndex >= 0) {\n const suggestion = suggestions[currentSuggestionIndex];\n window.location.href = suggestion.link;\n }\n break;\n default:\n break;\n }\n };\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [currentSuggestionIndex, focused, suggestions]);\n\n useEffect(() => {\n setDisableInput(false);\n }, []);\n return (\n <div flex=\"~\" align=\"items-center\" pos=\"relative\" m=\"r-2\" font=\"semibold\">\n <SearchSvg\n w=\"5\"\n h=\"5\"\n fill=\"currentColor\"\n onClick={() => {\n setFocused(true);\n searchInputRef.current?.focus();\n }}\n />\n <input\n disabled={disableInput}\n cursor=\"text focus:auto\"\n placeholder=\"Search\"\n height=\"8\"\n border=\"none\"\n type=\"text\"\n text=\"sm\"\n p=\"t-0 r-2 b-0 l-2\"\n transition=\"all duration-200 ease\"\n className={`rounded-sm ${styles.searchInput} ${\n focused ? styles.focus : ''\n }`}\n aria-label=\"Search\"\n autoComplete=\"off\"\n onChange={onQueryChanged}\n onBlur={() => setTimeout(() => setFocused(false), 200)}\n onFocus={() => {\n setFocused(true);\n initPageSearcherPromiseRef.current = initPageSearcher();\n }}\n ref={searchInputRef}\n />\n <div\n m=\"r-3\"\n w=\"10\"\n h=\"6\"\n p=\"x-1.5\"\n border=\"1px solid gray-light-3 rounded-md\"\n text=\"xs gray-light-3\"\n flex=\"~\"\n align=\"items-center\"\n justify=\"around\"\n className={`${styles.searchCommand}`}\n >\n <span>⌘</span>\n <span>K</span>\n </div>\n {focused && query && (\n <ul\n pos=\"fixed sm:absolute top-12 sm:top-8 right--10\"\n z=\"60\"\n p=\"2\"\n list=\"none\"\n bg=\"white\"\n className=\"w-full sm:min-w-600px sm:max-w-800px\"\n style={{ border: '1px solid var(--modern-c-divider-light)' }}\n >\n {/* Show the suggestions */}\n {suggestions.map((item, index) => (\n <li\n key={item.title}\n cursor=\"pointer\"\n w=\"full\"\n className=\"border-collapse rounded-sm\"\n >\n <a block=\"~\" href={item.link} className=\"whitespace-normal\">\n <div table=\"~\" w=\"full\" className=\"border-collapse\">\n <div\n border-left=\"none\"\n display=\"table-cell\"\n p=\"1.2\"\n text=\"sm right [#2c3e50]\"\n font=\"semibold\"\n className={`bg-[#f5f5f5] align-middle`}\n style={{\n borderBottom: '1px solid var(--modern-c-divider-light)',\n width: '35%',\n }}\n >\n {item.title}\n </div>\n <SuggestionContent\n suggestion={item}\n query={query}\n isCurrent={index === currentSuggestionIndex}\n isFirst={index === 0}\n />\n </div>\n </a>\n </li>\n ))}\n {/* Show the not found info */}\n {showNotFound && (\n <li flex=\"~ center\">\n <div p=\"2\" text=\"sm #2c3e50\">\n No results found\n </div>\n </li>\n )}\n {/* Show the loading info */}\n {showLoading && (\n <li flex=\"~ center\">\n <div p=\"2\" text=\"sm\">\n <LoadingSvg />\n </div>\n </li>\n )}\n </ul>\n )}\n </div>\n );\n}\n\nexport default Search;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { NormalizedSidebarGroup, SidebarItem } from 'shared/types';\nimport { matchRoutes, useNavigate } from 'react-router-dom';\nimport { routes } from 'virtual-routes';\nimport { Link } from '../Link';\nimport { isActive } from '../../logic';\nimport ArrowRight from '../../assets/arrow-right.svg';\nimport styles from './index.module.scss';\nimport { removeBase, normalizeHref } from '@/runtime';\n\ninterface Props {\n isSidebarOpen?: boolean;\n pathname: string;\n langRoutePrefix: string;\n sidebarData: (NormalizedSidebarGroup | SidebarItem)[];\n}\n\nconst SINGLE_MENU_ITEM_HEIGHT = 28;\nconst MENU_ITEM_MARGIN = 4;\nconst singleItemHeight = SINGLE_MENU_ITEM_HEIGHT + MENU_ITEM_MARGIN;\n\ninterface SidebarItemProps {\n id: string;\n item: SidebarItem | NormalizedSidebarGroup;\n depth: number;\n activeMatcher: (link: string) => boolean;\n collapsed?: boolean;\n setSidebarData: React.Dispatch<\n React.SetStateAction<(NormalizedSidebarGroup | SidebarItem)[]>\n >;\n preloadLink: (link: string) => void;\n}\n\n// Notice: we must compute the height of children here, otherwise the animation of collapse will not work\nconst getHeight = (item: NormalizedSidebarGroup | SidebarItem): number => {\n if ('items' in item) {\n return item.collapsed\n ? singleItemHeight\n : singleItemHeight +\n item.items.reduce((acc, item) => {\n return acc + getHeight(item);\n }, 0);\n } else {\n return singleItemHeight;\n }\n};\n\nexport function SidebarItemComp(props: SidebarItemProps) {\n const { item, depth = 0, activeMatcher, id, setSidebarData } = props;\n const active = item.link && activeMatcher(item.link);\n if ('items' in item) {\n return (\n <SidebarGroupComp\n id={id}\n key={item.text}\n item={item}\n depth={depth}\n activeMatcher={activeMatcher}\n collapsed={item.collapsed}\n setSidebarData={setSidebarData}\n preloadLink={props.preloadLink}\n />\n );\n } else {\n return (\n <Link href={normalizeHref(item.link)} className={styles.menuLink}>\n <div\n m=\"t-1\"\n p=\"y-1 x-2\"\n block=\"~\"\n text=\"sm\"\n border=\"rounded-sm\"\n font-medium=\"~\"\n onMouseEnter={() => props.preloadLink(item.link)}\n className={active ? styles.menuItemActive : styles.menuItem}\n >\n {item.text}\n </div>\n </Link>\n );\n }\n}\n\nexport function SidebarGroupComp(props: SidebarItemProps) {\n const { item, depth = 0, activeMatcher, id, setSidebarData } = props;\n const navigate = useNavigate();\n const containerRef = useRef<HTMLDivElement>(null);\n const active = item.link && activeMatcher(item.link);\n const { collapsed, collapsible = true } = item as NormalizedSidebarGroup;\n const collapsibleIcon = (\n <div\n cursor-pointer=\"~\"\n style={{\n transition: 'transform 0.2s ease-out',\n transform: collapsed ? 'rotate(0deg)' : 'rotate(90deg)',\n }}\n >\n <ArrowRight />\n </div>\n );\n\n const toggleCollapse: React.MouseEventHandler<HTMLDivElement> = (e): void => {\n e.stopPropagation();\n // update collapsed state\n setSidebarData(sidebarData => {\n const newSidebarData = [...sidebarData];\n const indexes = id.split('-').map(Number);\n const initialIndex = indexes.shift()!;\n const root = newSidebarData[initialIndex];\n let current = root;\n for (const index of indexes) {\n current = (current as NormalizedSidebarGroup).items[index];\n }\n if ('items' in current) {\n current.collapsed = !current.collapsed;\n }\n return newSidebarData;\n });\n };\n\n return (\n <section key={item.text} block=\"~\">\n <div\n flex=\"~\"\n justify=\"between\"\n items-start=\"~\"\n cursor=\"pointer\"\n className={`items-center ${\n active ? styles.menuItemActive : styles.menuItem\n }`}\n onMouseEnter={() => item.link && props.preloadLink(item.link)}\n onClick={e => {\n if (item.link) {\n navigate(normalizeHref(item.link));\n collapsed && toggleCollapse(e);\n } else {\n collapsible && toggleCollapse(e);\n }\n }}\n >\n <h2 p=\"y-1 x-2\" text=\"sm\" font=\"semibold\">\n {item.text}\n </h2>\n {collapsible && (\n <div\n p=\"2\"\n className={styles.collapseContainer}\n onClick={toggleCollapse}\n >\n {collapsibleIcon}\n </div>\n )}\n </div>\n <div\n ref={containerRef}\n style={{\n transition: 'height 0.2s ease-in-out',\n overflow: 'hidden',\n height:\n !collapsed || !collapsible\n ? `${getHeight(item) - singleItemHeight}px`\n : '0px',\n }}\n >\n {(item as NormalizedSidebarGroup)?.items?.map((item, index) => (\n <div key={item.link} m=\"last:b-0.5 l-4\">\n <SidebarItemComp\n {...props}\n item={item}\n depth={depth + 1}\n id={`${id}-${index}`}\n preloadLink={props.preloadLink}\n />\n </div>\n ))}\n </div>\n </section>\n );\n}\n\nexport function SideBar(props: Props) {\n const {\n isSidebarOpen,\n langRoutePrefix,\n pathname,\n sidebarData: rawSidebarData,\n } = props;\n const [sidebarData, setSidebarData] = useState<\n (SidebarItem | NormalizedSidebarGroup)[]\n >(rawSidebarData.filter(Boolean).flat());\n useEffect(() => {\n // 1. Update sidebarData when pathname changes\n // 2. For current active item, expand its parent group\n // Cache, Avoid redundant calculation\n const matchCache = new WeakMap<\n NormalizedSidebarGroup | SidebarItem,\n boolean\n >();\n const match = (item: NormalizedSidebarGroup | SidebarItem) => {\n if (matchCache.has(item)) {\n return matchCache.get(item);\n }\n if (item.link && activeMatcher(item.link)) {\n matchCache.set(item, true);\n return true;\n }\n if ('items' in item) {\n const result = item.items.some(child => match(child));\n if (result) {\n matchCache.set(item, true);\n return true;\n }\n }\n matchCache.set(item, false);\n return false;\n };\n const traverse = (item: NormalizedSidebarGroup | SidebarItem) => {\n if ('items' in item) {\n item.items.forEach(traverse);\n if (match(item)) {\n item.collapsed = false;\n }\n }\n };\n sidebarData.forEach(traverse);\n setSidebarData(rawSidebarData.filter(Boolean).flat());\n }, [props.sidebarData]);\n\n const removeLangPrefix = (path: string) => {\n return path.replace(langRoutePrefix, '');\n };\n const activeMatcher = (path: string) =>\n isActive(\n removeBase(removeLangPrefix(pathname)),\n removeLangPrefix(path),\n true,\n );\n const preloadLink = (link: string) => {\n const match = matchRoutes(routes, link);\n if (match?.length) {\n const { route } = match[0];\n route.preload();\n }\n };\n return (\n <aside\n className={`${styles.sidebar} ${isSidebarOpen ? styles.open : ''}`}\n style={{\n borderRight: '1px solid var(--modern-c-divider-light)',\n }}\n >\n <nav m=\"t-1\">\n {sidebarData.map(\n (item: NormalizedSidebarGroup | SidebarItem, index: number) => (\n <SidebarItemComp\n id={String(index)}\n item={item}\n depth={0}\n activeMatcher={activeMatcher}\n key={item.text}\n collapsed={(item as NormalizedSidebarGroup).collapsed ?? true}\n setSidebarData={setSidebarData}\n preloadLink={preloadLink}\n />\n ),\n )}\n </nav>\n </aside>\n );\n}\n","import { SocialLink } from 'shared/types';\nimport { LinkContent } from './LinkContent';\n\ninterface IHiddenLinksProps {\n links: SocialLink[];\n}\n\nexport const HiddenLinks = (props: IHiddenLinksProps) => {\n const { links } = props;\n\n return (\n <div\n pos=\"absolute top-13 right-0\"\n z=\"1\"\n p=\"3\"\n w=\"32\"\n border=\"rounded-xl\"\n bg=\"white\"\n style={{\n boxShadow: 'var(--modern-shadow-3)',\n marginRight: '-2px',\n border: '1px solid var(--modern-c-divider-light)',\n }}\n flex=\"~ wrap\"\n gap=\"4\"\n >\n {links.map(item => (\n <LinkContent\n key={item.content}\n link={item}\n popperStyle={{ top: '1.25rem' }}\n />\n ))}\n </div>\n );\n};\n","import { useState } from 'react';\nimport { SocialLink } from 'shared/types';\nimport styles from './index.module.scss';\nimport presetIcons from './presetIcons';\n\ninterface ILinkContentComp {\n link: SocialLink;\n popperStyle?: Record<string, unknown>;\n}\n\nexport const LinkContent = (props: ILinkContentComp) => {\n const { link, popperStyle = {} } = props;\n const { icon, mode = 'link', content } = link;\n const IconComp =\n typeof icon === 'object' ? (\n // eslint-disable-next-line react/no-danger\n <div dangerouslySetInnerHTML={{ __html: icon.svg }}></div>\n ) : (\n presetIcons[icon as keyof typeof presetIcons]\n );\n\n const [contentVisible, setContentVisible] = useState(false);\n const mouseEnterIcon = () => {\n setContentVisible(true);\n };\n const mouseLeavePopper = () => {\n setContentVisible(false);\n };\n\n if (mode === 'link') {\n return (\n <a key={content} href={content} target=\"_blank\" rel=\"noopener noreferrer\">\n <div className={`${styles.socialLinksIcon}`}>{IconComp}</div>\n </a>\n );\n }\n if (mode === 'text') {\n return (\n <div\n className={`${styles.socialLinksIcon}`}\n cursor=\"pointer\"\n pos=\"relative\"\n onMouseEnter={mouseEnterIcon}\n onMouseLeave={mouseLeavePopper}\n >\n {IconComp}\n {contentVisible ? (\n <div\n z=\"1\"\n p=\"3\"\n w=\"50\"\n pos=\"absolute right-0\"\n border=\"rounded-xl\"\n bg=\"white\"\n style={{\n boxShadow: 'var(--island-shadow-3)',\n border: '1px solid var(--modern-c-divider-light)',\n ...popperStyle,\n }}\n >\n <div text=\"ml\">{content}</div>\n </div>\n ) : null}\n </div>\n );\n }\n if (mode === 'img') {\n return (\n <div\n className={`${styles.socialLinksIcon}`}\n cursor=\"pointer\"\n pos=\"relative\"\n onMouseEnter={mouseEnterIcon}\n onMouseLeave={mouseLeavePopper}\n >\n {IconComp}\n {contentVisible ? (\n <div\n z=\"1\"\n p=\"3\"\n w=\"50\"\n pos=\"absolute right-0\"\n border=\"rounded-xl\"\n bg=\"white\"\n className=\"break-all\"\n style={{\n boxShadow: 'var(--modern-shadow-3)',\n\n ...popperStyle,\n }}\n >\n <img src={content} alt=\"img\" />\n </div>\n ) : null}\n </div>\n );\n }\n\n return <div></div>;\n};\n","import { SocialLink } from 'shared/types';\nimport ArrowDown from '../../assets/arrow-down.svg';\nimport { LinkContent } from './LinkContent';\n\ninterface IShownLinksProps {\n links: SocialLink[];\n moreIconVisible?: boolean;\n mouseEnter: () => void;\n}\n\nexport const ShownLinks = (props: IShownLinksProps) => {\n const { links, moreIconVisible = false, mouseEnter } = props;\n\n return (\n <>\n <div\n h=\"full\"\n flex=\"~\"\n gap=\"x-4\"\n align-items-center=\"~\"\n transition=\"color duration-300\"\n >\n {links.map((item, index) => (\n <LinkContent\n key={index}\n link={item}\n popperStyle={{ top: '2.5rem' }}\n />\n ))}\n </div>\n {moreIconVisible ? (\n <div className=\"ml-1\" onMouseEnter={mouseEnter}>\n <ArrowDown />\n </div>\n ) : null}\n </>\n );\n};\n","import { useState } from 'react';\nimport { SocialLink } from 'shared/types';\nimport { ShownLinks } from './ShownLinks';\nimport { HiddenLinks } from './HiddenLinks';\nimport styles from './index.module.scss';\n\nexport const SocialLinks = ({ socialLinks }: { socialLinks: SocialLink[] }) => {\n const moreThanThree = socialLinks.length > 3;\n\n const shownLinks: SocialLink[] = [];\n const hiddenLinks: SocialLink[] = [];\n\n socialLinks.forEach((item, index) => {\n if (index < 3) {\n shownLinks.push(item);\n } else {\n hiddenLinks.push(item);\n }\n });\n\n const [moreLinksVisible, setMoreLinksVisible] = useState(false);\n\n return (\n <div\n className={`social-links ${styles.menuItem}`}\n nav-h=\"mobile sm:desktop\"\n flex=\"~\"\n align-items-center=\"~\"\n pos=\"relative\"\n onMouseLeave={() => setMoreLinksVisible(false)}\n >\n <ShownLinks\n links={shownLinks}\n moreIconVisible={moreThanThree}\n mouseEnter={() => setMoreLinksVisible(true)}\n />\n {moreLinksVisible ? <HiddenLinks links={hiddenLinks} /> : null}\n </div>\n );\n};\n","export default {\n discord: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Discord</title>\n <path d=\"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z\" />\n </svg>\n ),\n facebook: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Facebook</title>\n <path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\" />\n </svg>\n ),\n github: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>GitHub</title>\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\" />\n </svg>\n ),\n instagram: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Instagram</title>\n <path d=\"M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z\" />\n </svg>\n ),\n linkedin: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>LinkedIn</title>\n <path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\" />\n </svg>\n ),\n slack: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Slack</title>\n <path d=\"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z\" />\n </svg>\n ),\n twitter: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Twitter</title>\n <path d=\"M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z\" />\n </svg>\n ),\n youtube: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>YouTube</title>\n <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />\n </svg>\n ),\n juejin: (\n <svg\n t=\"1666949308602\"\n className=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"1858\"\n data-spm-anchor-id=\"a313x.7781069.0.i5\"\n >\n <path\n d=\"M465.189 161.792c-22.967 18.14-44.325 35.109-47.397 37.742l-5.851 4.68 10.971 8.632c5.998 4.827 11.85 9.508 13.02 10.532 1.17 1.024 17.993 14.336 37.156 29.696l34.962 27.795 5.267-3.95c2.925-2.194 23.259-18.432 45.348-35.986 21.943-17.555 41.253-32.768 42.716-33.646 1.609-1.024 2.779-2.194 2.779-2.78 0-0.438-9.655-8.63-21.504-17.846-11.995-9.363-22.674-17.847-23.845-18.871-15.945-13.02-49.737-39.059-50.76-39.059-0.586 0.147-19.896 14.922-42.862 33.061z m233.325 180.37C507.465 493.275 508.928 492.105 505.417 489.911c-3.072-1.902-11.556-8.485-64.073-50.03-9.07-7.168-18.578-14.775-21.358-16.823-2.78-2.194-8.777-6.875-13.312-10.532-4.68-3.657-10.679-8.339-13.312-10.533-13.165-10.24-71.095-56.027-102.107-80.457-5.852-4.681-11.41-8.485-12.142-8.485-0.731 0-10.971 7.754-22.674 17.116-11.703 9.508-22.674 18.286-24.284 19.456-1.755 1.17-5.12 3.95-7.46 6.144-2.34 2.34-4.828 4.096-5.413 4.096-3.072 0-0.731 3.072 6.437 8.777 4.096 3.218 8.777 6.875 10.094 8.046 1.316 1.024 10.24 8.045 19.748 15.506s23.26 18.286 30.428 23.99c19.31 15.215 31.89 25.308 127.853 101.084 47.836 37.742 88.796 69.779 90.844 71.095 3.657 2.487 3.95 2.487 7.46-0.292a1041.42 1041.42 0 0 0 16.092-12.727c6.875-5.413 14.775-11.703 17.554-13.897 30.135-23.699 80.018-63.05 81.774-64.512 1.17-1.024 12.434-9.802 24.868-19.603s37.888-29.696 56.32-44.324c18.579-14.629 46.227-36.425 61.733-48.567 15.506-12.142 27.794-22.528 27.502-23.26-0.878-1.17-57.637-47.104-59.978-48.274-0.731-0.439-18.578 12.727-39.497 29.257z\"\n p-id=\"1859\"\n data-spm-anchor-id=\"a313x.7781069.0.i2\"\n ></path>\n <path\n d=\"M57.93 489.326c-15.215 12.288-28.527 23.405-29.697 24.576-2.34 2.194-5.412-0.44 80.018 66.852 33.207 26.185 32.622 25.747 57.637 45.495 10.386 8.192 36.279 28.672 57.783 45.495 38.18 30.135 44.91 35.401 52.663 41.545 2.048 1.756 22.967 18.14 46.372 36.572 23.26 18.432 74.167 58.514 112.933 89.088 38.912 30.573 71.095 55.734 71.826 56.027 0.732 0.293 7.46-4.389 14.921-10.386 21.797-16.97 90.259-70.949 101.523-79.872 5.705-4.535 12.873-10.24 15.945-12.58 3.072-2.488 6.436-5.12 7.314-5.852 0.878-0.878 11.85-9.509 24.283-19.31 20.773-16.091 59.1-46.226 64.366-50.615 1.17-1.024 5.12-4.096 8.777-6.875 3.657-2.78 7.9-6.29 9.509-7.607 1.609-1.317 14.775-11.703 29.257-23.113 29.11-22.82 42.277-33.207 88.503-69.632 17.262-13.605 32.475-25.454 33.646-26.478 2.486-2.048 31.451-24.869 44.617-35.255 4.827-3.657 9.07-7.168 9.508-7.607 0.44-0.585 5.998-4.827 12.435-9.8 6.436-4.828 13.165-10.24 15.067-11.85l3.365-2.926-9.948-7.753c-5.412-4.388-10.24-8.192-10.679-8.63-1.17-1.317-22.381-18.433-30.135-24.284-3.95-3.072-7.314-5.998-7.606-6.73-1.317-3.071-6.73 0.147-29.258 17.994-13.458 10.532-25.746 20.187-27.355 21.504-1.61 1.463-10.533 8.338-19.749 15.652-9.216 7.168-17.115 13.459-17.554 13.898-0.439 0.438-6.583 5.412-13.897 10.971-7.168 5.559-15.214 11.703-17.7 13.75-4.974 4.097-5.413 4.39-20.334 16.239-5.56 4.388-11.264 8.777-12.435 9.8-1.17 1.025-20.333 16.092-42.422 33.354-22.09 17.408-41.546 32.768-43.155 34.084-1.609 1.463-14.482 11.557-28.525 22.528s-40.814 32.037-59.539 46.812c-18.578 14.775-42.276 33.353-52.516 41.399s-23.26 18.285-28.965 22.82l-10.386 8.339-4.389-3.072c-2.34-1.756-4.68-3.511-5.12-3.95-0.439-0.439-4.973-4.096-10.24-8.046-11.849-9.216-14.482-11.264-16.676-13.166-0.878-0.877-4.243-3.51-7.46-5.851-3.22-2.487-6.145-4.681-6.584-5.12-0.439-0.439-6.875-5.705-14.482-11.703-7.607-5.851-14.921-11.556-16.091-12.58-1.317-1.17-17.116-13.605-35.255-27.795-17.993-14.19-35.109-27.648-38.035-29.842-5.705-4.681-33.499-26.624-125.074-98.743-34.523-27.209-72.704-57.344-84.846-66.852-49.737-39.498-55.15-43.594-56.905-43.447-0.877 0-14.043 10.24-29.257 22.528z\"\n p-id=\"1860\"\n data-spm-anchor-id=\"a313x.7781069.0.i3\"\n ></path>\n </svg>\n ),\n qq: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n className=\"iconify iconify--ri\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M19.913 14.529a31.977 31.977 0 0 0-.675-1.886l-.91-2.246c0-.026.012-.468.012-.696C18.34 5.86 16.507 2 12 2S5.66 5.86 5.66 9.7c0 .229.011.671.012.697l-.91 2.246a32.777 32.777 0 0 0-.675 1.886c-.86 2.737-.581 3.87-.369 3.895c.455.054 1.771-2.06 1.771-2.06c0 1.224.637 2.822 2.016 3.976c-.515.157-1.147.399-1.554.695c-.365.267-.319.54-.253.65c.289.481 4.955.307 6.303.157c1.347.15 6.014.324 6.302-.158c.066-.11.112-.382-.253-.649c-.407-.296-1.039-.538-1.555-.696c1.379-1.153 2.016-2.751 2.016-3.976c0 0 1.316 2.115 1.771 2.06c.212-.025.49-1.157-.37-3.894\"\n ></path>\n </svg>\n ),\n wechat: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n className=\"iconify iconify--ri\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M18.574 13.711a.91.91 0 0 0 .898-.898c0-.498-.399-.898-.898-.898s-.898.4-.898.898c0 .5.4.898.898.898zm-4.425 0a.91.91 0 0 0 .898-.898c0-.498-.4-.898-.898-.898c-.5 0-.898.4-.898.898c0 .5.399.898.898.898zm6.567 5.04a.347.347 0 0 0-.172.37c0 .048 0 .097.025.147c.098.417.294 1.081.294 1.106c0 .073.025.122.025.172a.22.22 0 0 1-.221.22c-.05 0-.074-.024-.123-.048l-1.449-.836a.799.799 0 0 0-.344-.098c-.073 0-.147 0-.196.024c-.688.197-1.4.295-2.161.295c-3.66 0-6.607-2.457-6.607-5.505c0-3.047 2.947-5.505 6.607-5.505c3.659 0 6.606 2.458 6.606 5.505c0 1.647-.884 3.146-2.284 4.154zM16.673 8.099a9.105 9.105 0 0 0-.28-.005c-4.174 0-7.606 2.86-7.606 6.505c0 .554.08 1.09.228 1.6h-.089a9.963 9.963 0 0 1-2.584-.368c-.074-.025-.148-.025-.222-.025a.832.832 0 0 0-.418.123l-1.748 1.005c-.05.025-.099.05-.148.05a.273.273 0 0 1-.27-.27c0-.074.024-.123.049-.197c.024-.024.246-.834.369-1.324c0-.05.024-.123.024-.172a.556.556 0 0 0-.221-.442C2.058 13.376 1 11.586 1 9.598C1 5.945 4.57 3 8.95 3c3.765 0 6.93 2.169 7.723 5.098zm-5.154.418c.573 0 1.026-.477 1.026-1.026c0-.573-.453-1.026-1.026-1.026s-1.026.453-1.026 1.026s.453 1.026 1.026 1.026zm-5.26 0c.573 0 1.027-.477 1.027-1.026c0-.573-.454-1.026-1.027-1.026c-.572 0-1.026.453-1.026 1.026s.454 1.026 1.026 1.026z\"\n ></path>\n </svg>\n ),\n weibo: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n className=\"iconify iconify--ri\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M17.525 11.378c1.263.392 2.669 1.336 2.669 3.004c0 2.763-3.98 6.239-9.964 6.239c-4.565 0-9.23-2.213-9.23-5.852c0-1.902 1.204-4.102 3.277-6.177c2.773-2.77 6.004-4.033 7.219-2.816c.537.537.588 1.464.244 2.572c-.178.557.525.25.525.25c2.24-.938 4.196-.994 4.909.027c.38.543.343 1.306-.008 2.19c-.163.407.048.471.36.563zm-7.282 7.939c3.641-.362 6.401-2.592 6.167-4.983c-.237-2.391-3.382-4.038-7.023-3.677c-3.64.36-6.403 2.59-6.167 4.98c.237 2.394 3.382 4.039 7.023 3.68zM6.16 14.438c.754-1.527 2.712-2.39 4.446-1.94c1.793.463 2.707 2.154 1.976 3.8c-.744 1.682-2.882 2.578-4.695 1.993c-1.752-.566-2.493-2.294-1.727-3.853zm1.446 2.587c.568.257 1.325.013 1.676-.55c.346-.568.163-1.217-.407-1.459c-.563-.237-1.291.008-1.64.553c-.354.547-.189 1.202.371 1.456zm2.206-1.808c.219.092.501-.012.628-.231c.123-.22.044-.466-.178-.548c-.216-.084-.486.018-.613.232c-.123.214-.054.458.163.547zM19.873 9.5a.725.725 0 1 1-1.378-.451a1.38 1.38 0 0 0-.288-1.357a1.395 1.395 0 0 0-1.321-.425a.723.723 0 1 1-.303-1.416a2.836 2.836 0 0 1 3.29 3.649zm-3.916-6.575A5.831 5.831 0 0 1 21.5 4.72a5.836 5.836 0 0 1 1.22 5.704a.838.838 0 0 1-1.06.54a.844.844 0 0 1-.542-1.062a4.143 4.143 0 0 0-4.807-5.327a.845.845 0 0 1-.354-1.65z\"\n ></path>\n </svg>\n ),\n zhihu: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n className=\"iconify iconify--ri\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"m12.344 17.963l-1.688 1.074l-2.131-3.35c-.44 1.402-1.172 2.665-2.139 3.825c-.402.483-.82.918-1.301 1.375c-.155.147-.775.717-.878.82l-1.414-1.414c.139-.139.787-.735.915-.856c.43-.408.795-.79 1.142-1.206c1.266-1.518 2.03-3.21 2.137-5.231H3v-2h4V7h-.868c-.689 1.266-1.558 2.222-2.618 2.857L2.486 8.143c1.395-.838 2.425-2.604 3.038-5.36l1.952.434c-.14.633-.303 1.227-.489 1.783H11.5v2H9v4h2.5v2H9.185l3.159 4.963zm3.838-.07L17.298 17H19V7h-4v10h.736l.446.893zM13 5h8v14h-3l-2.5 2l-1-2H13V5z\"\n ></path>\n </svg>\n ),\n bilibili: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n className=\"iconify iconify--ri\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M18.223 3.086a1.25 1.25 0 0 1 0 1.768L17.08 5.996h1.17A3.75 3.75 0 0 1 22 9.747v7.5a3.75 3.75 0 0 1-3.75 3.75H5.75A3.75 3.75 0 0 1 2 17.247v-7.5a3.75 3.75 0 0 1 3.75-3.75h1.166L5.775 4.855a1.25 1.25 0 1 1 1.767-1.768l2.652 2.652c.079.079.145.165.198.257h3.213c.053-.092.12-.18.199-.258l2.651-2.652a1.25 1.25 0 0 1 1.768 0zm.027 5.42H5.75a1.25 1.25 0 0 0-1.247 1.157l-.003.094v7.5c0 .659.51 1.199 1.157 1.246l.093.004h12.5a1.25 1.25 0 0 0 1.247-1.157l.003-.093v-7.5c0-.69-.56-1.25-1.25-1.25zm-10 2.5c.69 0 1.25.56 1.25 1.25v1.25a1.25 1.25 0 1 1-2.5 0v-1.25c0-.69.56-1.25 1.25-1.25zm7.5 0c.69 0 1.25.56 1.25 1.25v1.25a1.25 1.25 0 1 1-2.5 0v-1.25c0-.69.56-1.25 1.25-1.25z\"\n ></path>\n </svg>\n ),\n};\n","import React from 'react';\nimport styles from './index.module.scss';\n\ninterface Props {\n onClick?: () => void;\n children: React.ReactNode;\n className?: string;\n id?: string;\n}\nexport function Switch(props: Props) {\n return (\n <button\n className={`${styles.switch} ${props.className}`}\n id={props.id ?? ''}\n type=\"button\"\n role=\"switch\"\n {...(props.onClick ? { onClick: props.onClick } : {})}\n >\n <span className={styles.check}>\n <span className={styles.icon}>{props.children}</span>\n </span>\n </button>\n );\n}\n","import { Switch } from '../Switch';\nimport SunSvg from '../../assets/sun.svg';\nimport MoonSvg from '../../assets/moon.svg';\nimport { getToggle } from '../../logic/useAppearance';\nimport styles from './index.module.scss';\n\nexport function SwitchAppearance() {\n const toggle = getToggle();\n return (\n <Switch onClick={toggle}>\n <SunSvg className={styles.sun} />\n <MoonSvg className={styles.moon} />\n </Switch>\n );\n}\n","import { ComponentProps, ReactElement, ReactNode } from 'react';\nimport { Tab as HeadlessTab } from '@headlessui/react';\nimport styles from './index.module.scss';\n\ntype TabItem = {\n value?: string;\n label?: string;\n disabled?: boolean;\n};\n\nfunction isTabItem(item: unknown): item is TabItem {\n if (item && typeof item === 'object' && 'label' in item) {\n return true;\n }\n return false;\n}\n\nconst renderTab = (item: ReactNode | TabItem) => {\n if (isTabItem(item)) {\n return item.label || item.value;\n }\n return item;\n};\n\nexport function Tabs({\n values,\n defaultValue,\n onChange,\n children,\n}: {\n values: ReactNode[] | ReadonlyArray<ReactNode> | TabItem[];\n defaultValue?: string;\n onChange?: (index: number) => void;\n children: ReactNode;\n}): ReactElement {\n let tabValues = values || [];\n if (tabValues.length === 0) {\n tabValues = (children as ReactElement[]).map(child => child.props);\n }\n const defaultIndex = tabValues.findIndex(item => {\n if (typeof item === 'string') {\n return item === defaultValue;\n } else if (item && typeof item === 'object' && 'value' in item) {\n return item.value === defaultValue;\n }\n return false;\n });\n return (\n <HeadlessTab.Group defaultIndex={defaultIndex} onChange={onChange}>\n <div>\n <HeadlessTab.List className=\"mt-4 flex w-max min-w-full border-b border-gray-200\">\n {tabValues.map((item, index) => {\n const disabled = Boolean(\n item &&\n typeof item === 'object' &&\n 'disabled' in item &&\n item.disabled,\n );\n\n return (\n <HeadlessTab\n key={index}\n disabled={disabled}\n className={({ selected }) =>\n `${styles.tab} ${\n selected ? styles.selected : styles.notSelected\n }`\n }\n >\n {renderTab(item)}\n </HeadlessTab>\n );\n })}\n </HeadlessTab.List>\n </div>\n <HeadlessTab.Panels>{children}</HeadlessTab.Panels>\n </HeadlessTab.Group>\n );\n}\n\nexport function Tab({\n children,\n ...props\n}: ComponentProps<'div'>): ReactElement {\n return (\n <HeadlessTab.Panel {...props} className=\"rounded pt-4\">\n {children}\n </HeadlessTab.Panel>\n );\n}\n","import { useLocation } from 'react-router-dom';\nimport { Aside } from '../../components/Aside';\nimport { DocFooter } from '../../components/DocFooter';\nimport { useLocaleSiteData, useSidebarData } from '../../logic';\nimport { SideMenu } from '../../components/LocalSideBar';\nimport { Overview } from '../../components/Overview';\nimport styles from './index.module.scss';\nimport { Content, usePageData, normalizeSlash } from '@/runtime';\n\nexport interface DocLayoutProps {\n beforeDocFooter?: React.ReactNode;\n beforeDoc?: React.ReactNode;\n afterDoc?: React.ReactNode;\n beforeOutline?: React.ReactNode;\n afterOutline?: React.ReactNode;\n}\n\nexport function DocLayout(props: DocLayoutProps) {\n const { beforeDocFooter, beforeDoc, afterDoc, beforeOutline, afterOutline } =\n props;\n const { toc = [], siteData, frontmatter } = usePageData();\n const headers = toc;\n const { themeConfig } = siteData;\n const localesData = useLocaleSiteData();\n const sidebar = localesData.sidebar || [];\n const { pathname } = useLocation();\n const { items: sidebarData } = useSidebarData();\n const langRoutePrefix = normalizeSlash(localesData.langRoutePrefix || '');\n // siderbar Priority\n // 1. frontmatter.sidebar\n // 2. themeConfig.locales.sidebar\n // 3. themeConfig.sidebar\n const hasSidebar =\n frontmatter?.sidebar !== false && Object.keys(sidebar).length > 0;\n const outlineTitle =\n localesData?.outlineTitle || themeConfig?.outlineTitle || 'ON THIS PAGE';\n const hasAside =\n headers.length > 0 &&\n (frontmatter?.outline ?? themeConfig?.outline ?? true);\n const isOverviewPage = frontmatter?.overview ?? false;\n return (\n <div p=\"t-0 b-24 md:6\" m=\"md:t-14\" className={styles.docLayout}>\n {beforeDoc}\n {hasSidebar ? (\n <SideMenu\n pathname={pathname}\n langRoutePrefix={langRoutePrefix}\n sidebarData={sidebarData}\n />\n ) : null}\n <div flex=\"~ 1 shrink-0\" className={`${styles.content}`}>\n <div className={`max-w-full md:max-w-3/4 lg:min-w-640px relative`}>\n {isOverviewPage ? (\n <Overview />\n ) : (\n <div className=\"modern-doc\">\n <Content />\n </div>\n )}\n\n {beforeDocFooter}\n <DocFooter />\n </div>\n <div className=\"relative\" display=\"none lg:block\">\n <div className={styles.asideContainer}>\n <div\n style={{\n minHeight: 'calc(100vh - (var(--modern-nav-height) + 32px))',\n }}\n >\n {hasAside ? (\n <div m=\"l-16\">\n {beforeOutline}\n <Aside headers={headers} outlineTitle={outlineTitle} />\n {afterOutline}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n {afterDoc}\n </div>\n );\n}\n","import { HomeHero } from '../../components/HomeHero';\nimport { HomeFeature } from '../../components/HomeFeatures';\nimport { Footer } from '../../components/HomeFooter';\n\nexport interface HomeLayoutProps {\n beforeHero?: React.ReactNode;\n afterHero?: React.ReactNode;\n beforeFeatures?: React.ReactNode;\n afterFeatures?: React.ReactNode;\n}\n\nexport function HomeLayout(props: HomeLayoutProps) {\n const { beforeHero, afterHero, beforeFeatures, afterFeatures } = props;\n return (\n <>\n <div className=\"mt-14 pb-12\">\n {beforeHero}\n <HomeHero />\n {afterHero}\n {beforeFeatures}\n <HomeFeature />\n {afterFeatures}\n </div>\n <Footer />\n </>\n );\n}\n","import 'windi.css';\nimport 'nprogress/nprogress.css';\nimport '../../index.css';\nimport React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport Theme, { Nav } from '@theme';\nimport { DocLayout, DocLayoutProps } from '../DocLayout';\nimport { HomeLayoutProps } from '../HomeLayout';\nimport type { NavProps } from '../../components/Nav';\nimport { usePageData, Content } from '@/runtime';\nimport { useLocaleSiteData } from '@/theme-default/logic';\n\nexport type LayoutProps = {\n top?: React.ReactNode;\n bottom?: React.ReactNode;\n} & DocLayoutProps &\n HomeLayoutProps &\n NavProps;\n\nexport const Layout: React.FC<LayoutProps> = props => {\n const {\n top,\n bottom,\n beforeDocFooter,\n beforeDoc,\n afterDoc,\n beforeOutline,\n afterOutline,\n beforeNavTitle,\n afterNavTitle,\n } = props;\n const docProps: DocLayoutProps = {\n beforeDocFooter,\n beforeDoc,\n afterDoc,\n beforeOutline,\n afterOutline,\n };\n const {\n // Inject by remark-plugin-toc\n title: articleTitle,\n frontmatter,\n siteData,\n pageType,\n } = usePageData();\n const localesData = useLocaleSiteData();\n\n // Priority: front matter title > h1 title > site title\n const title =\n (frontmatter?.title ?? articleTitle) || siteData.title || localesData.title;\n const description =\n frontmatter?.description || siteData.description || localesData.description;\n // Use doc layout by default\n const getContentLayout = () => {\n switch (pageType) {\n case 'home':\n return <Theme.HomeLayout />;\n case 'doc':\n return <DocLayout {...docProps} />;\n case '404':\n return <Theme.NotFoundLayout />;\n case 'custom':\n return <Content />;\n default:\n return <DocLayout {...docProps} />;\n }\n };\n\n return (\n <div style={{ height: '100%' }}>\n <Helmet>\n {title ? <title>{title}</title> : null}\n {description ? <meta name=\"description\" content={description} /> : null}\n </Helmet>\n {top}\n <Nav beforeNavTitle={beforeNavTitle} afterNavTitle={afterNavTitle} />\n <section>{getContentLayout()}</section>\n {bottom}\n </div>\n );\n};\n","import { usePageData } from '@/runtime';\n\nexport function NotFoundLayout() {\n const { siteData } = usePageData();\n return (\n <div\n m=\"auto t-50\"\n p=\"t-16 x-6 b-24 sm:t-24 x-8 b-40\"\n text=\"center\"\n flex=\"center col\"\n >\n <p text=\"6xl\" font=\"semibold\">\n 404\n </p>\n <h1 p=\"t-3\" text=\"xl\" className=\"leading-5\" font=\"bold\">\n PAGE NOT FOUND\n </h1>\n <div\n m=\"t-6 x-auto b-4.5\"\n w=\"16\"\n style={{ height: '1px' }}\n bg=\"gray-light-1\"\n />\n\n <div p=\"t-5\">\n <a\n inline-block=\"~\"\n border=\"1px solid brand\"\n className=\"rounded-2xl\"\n p=\"y-2 x-4\"\n text=\"sm brand\"\n font-medium=\"~\"\n transition=\"border-color duration-300 color duration-300\"\n hover=\"border-color-brand-dark color-brand-dark\"\n href={siteData.base}\n aria-label=\"go to home\"\n >\n Take me home\n </a>\n </div>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\nimport { PageData } from 'shared/types';\nimport siteData from 'virtual-site-data';\nimport { addLeadingSlash, normalizeSlash } from '@/shared/utils';\n\n// Type shim for window.__EDEN_PAGE_DATA__\ndeclare global {\n interface Window {\n __MODERN_PAGE_DATA__: any;\n }\n}\ninterface IDataContext {\n data: PageData;\n setData?: (data: PageData) => void;\n}\n\nexport const DataContext = createContext({} as IDataContext);\n\nexport function usePageData() {\n const ctx = useContext(DataContext);\n return ctx.data;\n}\n\nexport function withBase(url = '/'): string {\n const normalizedBase = normalizeSlash(siteData.base);\n const normalizedUrl = addLeadingSlash(url);\n return `${normalizedBase}${normalizedUrl}`;\n}\n\nexport function removeBase(url: string): string {\n const normalizedBase = normalizeSlash(siteData.base);\n return url.replace(normalizedBase, '');\n}\n","import {\n cleanUrl,\n addLeadingSlash,\n removeTrailingSlash,\n normalizeSlash,\n isProduction,\n normalizeHref,\n} from '../shared/utils';\n\nexport const getRelativePagePath = (\n routePath: string,\n filePath: string,\n base: string,\n) => {\n const extname = filePath.split('.').pop();\n let pagePath = cleanUrl(routePath);\n if (pagePath.startsWith(base)) {\n pagePath = pagePath.slice(base.length);\n }\n if (extname) {\n pagePath += `.${extname}`;\n }\n return pagePath.replace(/^\\//, '');\n};\n\nexport function normalizeRoutePath(routePath: string) {\n return routePath.replace(/\\.html$/, '').replace(/\\/index$/, '/');\n}\n\nexport {\n addLeadingSlash,\n removeTrailingSlash,\n normalizeSlash,\n isProduction,\n normalizeHref,\n};\n","export const queryRE = /\\?.*$/s;\nexport const hashRE = /#.*$/s;\n\nexport const isProduction = () => process.env.NODE_ENV === 'production';\n\nexport const cleanUrl = (url: string): string =>\n url.replace(hashRE, '').replace(queryRE, '');\n\nexport const inBrowser = () => typeof window !== 'undefined';\n\nexport function addLeadingSlash(url: string) {\n return url.charAt(0) === '/' || url.startsWith('https') ? url : `/${url}`;\n}\n\nexport function removeLeadingSlash(url: string) {\n return url.charAt(0) === '/' ? url.slice(1) : url;\n}\n\nexport function removeTrailingSlash(url: string) {\n return url.charAt(url.length - 1) === '/' ? url.slice(0, -1) : url;\n}\n\nexport function normalizeSlash(url: string) {\n return removeTrailingSlash(addLeadingSlash(url));\n}\n\nexport function withBase(url: string, base: string) {\n const normalizedBase = normalizeSlash(base);\n const normalizedUrl = addLeadingSlash(url);\n return normalizedBase ? `${normalizedBase}${normalizedUrl}` : normalizedUrl;\n}\n\nexport function replaceLang(\n rawUrl: string,\n targetLang: string,\n defaultLang: string,\n langs: string[],\n) {\n const url = addLeadingSlash(rawUrl);\n const originalLang = url.split('/')[1];\n const inDefaultLang = !langs.includes(originalLang);\n if (inDefaultLang) {\n if (targetLang === defaultLang) {\n return url;\n } else {\n return addLeadingSlash(`${targetLang}${url}`);\n }\n } else if (targetLang === defaultLang) {\n return url.replace(`/${originalLang}`, '');\n } else {\n return url.replace(originalLang, targetLang);\n }\n}\n\nexport const omit = (obj: Record<string, unknown>, keys: string[]) => {\n const ret = { ...obj };\n for (const key of keys) {\n delete ret[key];\n }\n return ret;\n};\n\nexport const parseUrl = (\n url: string,\n): {\n url: string;\n query: string;\n hash: string;\n} => {\n const [withoutHash, hash = ''] = url.split('#');\n const [cleanedUrl, query = ''] = withoutHash.split('?');\n return {\n url: cleanedUrl,\n query,\n hash,\n };\n};\n\nexport function normalizeHref(url?: string) {\n if (!url) {\n return '/';\n }\n let cleanUrl = url;\n if (!cleanUrl.endsWith('.html')) {\n if (cleanUrl.endsWith('/')) {\n cleanUrl += 'index.html';\n } else {\n cleanUrl += '.html';\n }\n }\n\n return addLeadingSlash(cleanUrl);\n}\n\nexport function withoutLang(path: string, langs: string[]) {\n const langRegexp = new RegExp(`^\\\\/(${langs.join('|')})`);\n return addLeadingSlash(path).replace(langRegexp, '');\n}\n\nexport function withoutBase(path: string, base = '') {\n return addLeadingSlash(path).replace(normalizeSlash(base), '');\n}\n","import { NotFoundLayout } from './layout/NotFountLayout';\nimport { Layout } from './layout/Layout';\nimport { HomeLayout } from './layout/HomeLayout';\nimport { setup } from './logic';\nimport { Nav } from './components/Nav';\nimport { Search } from './components/Search';\nimport { Tab, Tabs } from './components/Tabs';\nimport { Button } from './components/Button';\n\nexport { Nav, Search, Tab, Tabs, Button };\n\nexport default {\n Layout,\n NotFoundLayout,\n HomeLayout,\n setup,\n};\n","import copy from 'copy-to-clipboard';\n\nexport function setupCopyCodeButton() {\n const timeoutIdMap: Map<HTMLElement, NodeJS.Timeout> = new Map();\n window.addEventListener('click', e => {\n const el = e.target as HTMLElement;\n\n if (\n el.matches('div[class*=\"language-\"] .modern-code-content > button.copy')\n ) {\n const parent = el.parentElement;\n const sibling = el.nextElementSibling as HTMLPreElement | null;\n if (!parent || !sibling) {\n return;\n }\n\n const { innerText: text = '' } = sibling;\n\n const isCopied = copy(text);\n\n if (isCopied) {\n el.style.transform = 'scale(0.33)';\n el.classList.add('copied');\n setTimeout(() => {\n el.style.transform = 'scale(1)';\n }, 160);\n clearTimeout(timeoutIdMap.get(el));\n const timeoutId = setTimeout(() => {\n el.classList.remove('copied');\n el.style.transform = 'scale(1)';\n el.blur();\n timeoutIdMap.delete(el);\n }, 2000);\n timeoutIdMap.set(el, timeoutId);\n }\n }\n });\n}\n","import { throttle } from 'lodash-es';\nimport { setupCopyCodeButton } from './copyCode';\nimport { inBrowser } from '@/shared/utils';\n\nconst DEFAULT_NAV_HEIGHT = 56;\n\nexport function scrollToTarget(target: HTMLElement, isSmooth: boolean) {\n const targetPadding = parseInt(\n window.getComputedStyle(target).paddingTop,\n 10,\n );\n\n const targetTop =\n window.scrollY +\n target.getBoundingClientRect().top -\n DEFAULT_NAV_HEIGHT +\n targetPadding;\n // Only scroll smoothly in page header anchor\n window.scrollTo({\n left: 0,\n top: targetTop,\n ...(isSmooth ? { behavior: 'smooth' } : {}),\n });\n}\n\n// Control the scroll behavior of the browser when user clicks on a link\nfunction bindingWindowScroll() {\n // Initial scroll position\n function scrollTo(el: HTMLElement, hash: string, isSmooth = false) {\n let target: HTMLElement | null = null;\n try {\n target = el.classList.contains('header-anchor')\n ? el\n : document.getElementById(decodeURIComponent(hash.slice(1)));\n } catch (e) {\n console.warn(e);\n }\n if (target) {\n scrollToTarget(target, isSmooth);\n }\n }\n\n window.addEventListener(\n 'click',\n e => {\n // Only handle a tag click\n const link = (e.target as Element).closest('a');\n if (link) {\n const { origin, hash, target, pathname, search } = link;\n const currentUrl = window.location;\n // only intercept inbound links\n if (hash && target !== '_blank' && origin === currentUrl.origin) {\n // scroll between hash anchors in the same page\n if (\n pathname === currentUrl.pathname &&\n search === currentUrl.search &&\n hash &&\n hash !== currentUrl.hash &&\n link.classList.contains('header-anchor')\n ) {\n e.preventDefault();\n history.pushState(null, '', hash);\n // use smooth scroll when clicking on header anchor links\n scrollTo(link, hash, true);\n // still emit the event so we can listen to it in themes\n window.dispatchEvent(new Event('hashchange'));\n }\n }\n }\n },\n { capture: true },\n );\n window.addEventListener('hashchange', e => {\n e.preventDefault();\n });\n}\n\n// Binding the scroll event to the aside element\nexport function bindingAsideScroll() {\n function isBottom() {\n return (\n document.documentElement.scrollTop + window.innerHeight >=\n document.documentElement.scrollHeight\n );\n }\n const NAV_HEIGHT = 56;\n const marker = document.getElementById('aside-marker');\n const aside = document.getElementById('aside-container');\n const links = Array.from(\n document.querySelectorAll<HTMLAnchorElement>('.modern-doc .header-anchor'),\n ).filter(item => item.parentElement?.tagName !== 'H1');\n\n if (!aside || !links.length) {\n return;\n }\n\n let prevActiveLink: null | HTMLAnchorElement = null;\n const headers = Array.from(aside?.getElementsByTagName('a') || []).map(item =>\n decodeURIComponent(item.hash),\n );\n if (marker && !headers.length) {\n marker.style.opacity = '0';\n return;\n }\n // Util function to set dom ref after determining the active link\n const activate = (links: HTMLAnchorElement[], index: number) => {\n if (prevActiveLink) {\n prevActiveLink.classList.remove('aside-active');\n }\n if (links[index]) {\n links[index].classList.add('aside-active');\n const id = links[index].getAttribute('href');\n const tocIndex = headers.findIndex(item => item === id);\n const currentLink = aside?.querySelector(`a[href=\"#${id?.slice(1)}\"]`);\n if (currentLink) {\n prevActiveLink = currentLink as HTMLAnchorElement;\n // Activate the a link element in aside\n prevActiveLink.classList.add('aside-active');\n // Activate the marker element\n marker!.style.top = `${33 + tocIndex * 28}px`;\n marker!.style.opacity = '1';\n }\n }\n };\n const setActiveLink = () => {\n if (isBottom()) {\n activate(links, links.length - 1);\n } else {\n // Compute current index\n for (let i = 0; i < links.length; i++) {\n const currentAnchor = links[i];\n const nextAnchor = links[i + 1];\n const scrollTop = window.scrollY;\n const currentAnchorTop =\n currentAnchor.parentElement!.offsetTop - NAV_HEIGHT;\n if ((i === 0 && scrollTop < currentAnchorTop) || scrollTop === 0) {\n activate(links, 0);\n break;\n }\n\n if (!nextAnchor) {\n activate(links, i);\n break;\n }\n\n const nextAnchorTop = nextAnchor.parentElement!.offsetTop - NAV_HEIGHT;\n\n if (scrollTop > currentAnchorTop && scrollTop < nextAnchorTop) {\n activate(links, i);\n break;\n }\n }\n }\n };\n const throttledSetLink = throttle(setActiveLink, 200);\n\n window.addEventListener('scroll', throttledSetLink);\n\n // eslint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('scroll', throttledSetLink);\n };\n}\n\nexport function setup() {\n if (!inBrowser()) {\n return;\n }\n bindingWindowScroll();\n setupCopyCodeButton();\n}\n","const APPEARANCE_KEY = 'modern-theme-appearance';\nlet isDark = true;\nlet classList: DOMTokenList;\n// Determine if the theme mode of the user's operating system is dark\nlet userPreference: string;\nlet query: MediaQueryList;\nif (typeof window !== 'undefined' && typeof localStorage !== 'undefined') {\n userPreference = localStorage.getItem(APPEARANCE_KEY) || 'auto';\n query = window.matchMedia('(prefers-color-scheme: dark)');\n // When user preference is auto,the modern theme will change with the system user's operating system theme.\n isDark =\n userPreference === 'auto' ? query.matches : userPreference === 'dark';\n query.onchange = e => {\n // If user preference is not auto, the modern theme will not change with the system user's operating system theme.\n if (userPreference === 'auto') {\n setClass((isDark = e.matches));\n }\n };\n}\n\nconst setClass = (dark: boolean): void => {\n classList[dark ? 'add' : 'remove']('dark');\n};\n\nexport const getToggle = () => {\n if (typeof window !== 'undefined' && classList === undefined) {\n ({ classList } = document.documentElement);\n const storageChange = (): void => {\n const userPreference = localStorage.getItem(APPEARANCE_KEY) || 'auto';\n if (classList) {\n setClass(\n userPreference === 'auto' ? query.matches : userPreference === 'dark',\n );\n isDark = !isDark;\n }\n };\n window.addEventListener('storage', storageChange);\n }\n return () => {\n setClass((isDark = !isDark));\n if (typeof window !== 'undefined' && typeof localStorage !== 'undefined') {\n if (isDark) {\n // When the user's operating system theme is light, and actively switch the theme to dark,that mean the user preference is dark.\n userPreference = query.matches ? 'auto' : 'dark';\n } else {\n // When the user's operating system theme is dark, and actively switch the theme to light,that mean user Preference is light\n userPreference = query.matches ? 'light' : 'auto';\n }\n localStorage.setItem(APPEARANCE_KEY, userPreference);\n }\n };\n};\n","import { NormalizedLocales } from 'shared/types';\nimport { useLocation } from 'react-router-dom';\nimport { usePageData, withBase } from '@/runtime';\nimport { normalizeSlash } from '@/shared/utils/index';\n\nexport function useLocaleSiteData(): NormalizedLocales {\n const pageData = usePageData();\n const { pathname } =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n process.env.NODE_ENV === 'production' ? useLocation() : location;\n const themeConfig = pageData?.siteData?.themeConfig ?? {};\n const defaultLang = pageData.siteData.lang ?? 'zh';\n const locales = themeConfig?.locales;\n if (!locales || locales.length === 0) {\n return {\n nav: themeConfig.nav,\n sidebar: themeConfig.sidebar,\n prevPageText: themeConfig.prevPageText,\n nextPageText: themeConfig.nextPageText,\n } as NormalizedLocales;\n }\n const localeKeys = locales.map(locale => locale.lang);\n const localeKey =\n localeKeys.find(locale => {\n const normalizedLocalePrefix = withBase(normalizeSlash(locale));\n return pathname.startsWith(normalizedLocalePrefix);\n }) || localeKeys[0];\n const localeInfo = locales.find(locale => locale.lang === localeKey)!;\n return {\n ...localeInfo,\n langRoutePrefix:\n localeKey === defaultLang ? withBase('/') : withBase(localeKey),\n } as NormalizedLocales;\n}\n","import { useState } from 'react';\n\nexport function useNav() {\n const [isScreenOpen, setIsScreenOpen] = useState(false);\n function openScreen() {\n setIsScreenOpen(true);\n window.addEventListener('resize', closeScreenOnTabletWindow);\n }\n\n function closeScreen() {\n setIsScreenOpen(false);\n window.removeEventListener('resize', closeScreenOnTabletWindow);\n }\n\n function toggleScreen() {\n if (isScreenOpen) {\n closeScreen();\n } else {\n openScreen();\n }\n }\n\n /**\n * Close screen when the user resizes the window wider than tablet size.\n */\n function closeScreenOnTabletWindow() {\n window.outerWidth >= 768 && closeScreen();\n }\n\n return {\n isScreenOpen,\n openScreen,\n closeScreen,\n toggleScreen,\n };\n}\n","import {\n NormalizedSidebar,\n NormalizedSidebarGroup,\n SidebarItem,\n} from 'shared/types';\nimport { useLocation } from 'react-router-dom';\nimport { useLocaleSiteData } from './useLocaleSiteData';\nimport { isEqualPath } from './utils';\n\nexport function usePrevNextPage() {\n const { pathname } = useLocation();\n const localesData = useLocaleSiteData();\n const sidebar = localesData.sidebar || {};\n const flattenTitles: SidebarItem[] = [];\n\n const walkThroughSidebar = (sidebar: NormalizedSidebar) => {\n const walk = (sidebarItem: NormalizedSidebarGroup | SidebarItem) => {\n if ('items' in sidebarItem) {\n if (sidebarItem.link) {\n flattenTitles.push({\n text: sidebarItem.text,\n link: sidebarItem.link,\n });\n }\n sidebarItem.items.forEach(item => {\n walk(item);\n });\n } else {\n flattenTitles.push(sidebarItem);\n }\n };\n\n Object.values(sidebar).forEach(sidebarItem => {\n sidebarItem.forEach(item => {\n walk(item);\n });\n });\n };\n\n walkThroughSidebar(sidebar);\n\n const pageIndex = flattenTitles.findIndex(item =>\n isEqualPath(item.link, pathname),\n );\n\n const prevPage = flattenTitles[pageIndex - 1] || null;\n const nextPage = flattenTitles[pageIndex + 1] || null;\n\n return {\n prevPage,\n nextPage,\n };\n}\n","import {\n NormalizedSidebarGroup,\n SidebarItem,\n} from 'shared/types/default-theme';\nimport { useEffect, useState } from 'react';\nimport { useLocaleSiteData } from './useLocaleSiteData';\nimport { isEqualPath } from './utils';\nimport { useLocation, withBase } from '@/runtime';\n\ninterface SidebarData {\n // The group name for the sidebar\n group: string;\n items: (NormalizedSidebarGroup | SidebarItem)[];\n}\n\nexport function useSidebarData(): SidebarData {\n const localeData = useLocaleSiteData();\n const sidebar = localeData.sidebar ?? {};\n const location = useLocation();\n const computeSidebarData = () => {\n const currentPathname = location.pathname;\n for (const name of Object.keys(sidebar)) {\n // Such as `/api/`,it will return all the sidebar group\n if (isEqualPath(withBase(name), currentPathname)) {\n return {\n group: '',\n items: sidebar[name],\n };\n }\n // Such as `/guide/getting-started`, it will return the guide groups and the group name `Introduction`\n const result = sidebar[name].find(group => {\n const match = (item: NormalizedSidebarGroup | SidebarItem): boolean => {\n const equalFunc = () =>\n isEqualPath(withBase(item.link), currentPathname);\n if ('items' in item) {\n // If the current path is the same as the group link, return true\n if (equalFunc()) {\n return true;\n }\n return item.items.some(i => match(i));\n } else {\n return equalFunc();\n }\n };\n return match(group);\n });\n\n if (result) {\n const sidebarGroup = sidebar[name];\n return {\n group: result.text || '',\n items: sidebarGroup,\n };\n }\n }\n return {\n group: '',\n items: [],\n };\n };\n const [sidebarData, setSidebarData] = useState<SidebarData>(\n computeSidebarData(),\n );\n useEffect(() => {\n setSidebarData(computeSidebarData());\n }, [location.pathname]);\n return sidebarData;\n}\n","import { normalizeHref } from '@/runtime';\n\nexport function isEqualPath(a: string, b: string) {\n return normalizeHref(a) === normalizeHref(b);\n}\n\nexport function isActive(\n currentPath: string,\n targetLink?: string,\n strict = false,\n) {\n if (!targetLink) {\n return false;\n }\n if (strict) {\n return isEqualPath(currentPath, targetLink);\n } else {\n return (\n isEqualPath(currentPath, targetLink) || currentPath.startsWith(targetLink)\n );\n }\n}\n","import './index.css';\n\nexport * from '@modern-js/doc-tools/theme';\nexport { default } from '@modern-js/doc-tools/theme';\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar createSocketUrl_exports = {};\n__export(createSocketUrl_exports, {\n createSocketUrl: () => createSocketUrl,\n formatURL: () => formatURL\n});\nmodule.exports = __toCommonJS(createSocketUrl_exports);\nvar import_constants = require(\"@modern-js/utils/constants\");\nfunction createSocketUrl(resourceQuery) {\n const searchParams = resourceQuery.substr(1).split(\"&\");\n const options = {};\n for (const pair of searchParams) {\n const ary = pair.split(\"=\");\n options[ary[0]] = decodeURIComponent(ary[1]);\n }\n const currentLocation = self.location;\n return getSocketUrl(options, currentLocation);\n}\nfunction formatURL({\n port,\n protocol,\n hostname,\n pathname\n}) {\n if (window.URL) {\n const url = new URL(\"http://localhost\");\n url.port = port;\n url.hostname = hostname;\n url.protocol = protocol;\n url.pathname = pathname;\n return url.toString();\n }\n const colon = protocol.indexOf(\":\") === -1 ? \":\" : \"\";\n return `${protocol}${colon}//${hostname}:${port}${pathname}`;\n}\nfunction getSocketUrl(urlParts, location) {\n const { host, port, path, protocol } = urlParts;\n return formatURL({\n protocol: protocol || location.protocol === \"https:\" ? \"wss\" : \"ws\",\n hostname: host || location.hostname,\n port: port || location.port,\n pathname: path || import_constants.HMR_SOCK_PATH\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createSocketUrl,\n formatURL\n});\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar import_strip_ansi = __toESM(require(\"@modern-js/utils/strip-ansi\"));\nvar import_format = require(\"@modern-js/utils/format\");\nvar import_createSocketUrl = require(\"./createSocketUrl\");\nconst hadRuntimeError = false;\nconst socketUrl = (0, import_createSocketUrl.createSocketUrl)(__resourceQuery);\nconst connection = new WebSocket(socketUrl);\nconnection.onclose = function() {\n if (typeof console !== \"undefined\" && typeof console.info === \"function\") {\n console.info(\n \"The development server has disconnected.\\nRefresh the page if necessary.\"\n );\n }\n};\nlet isFirstCompilation = true;\nlet mostRecentCompilationHash = null;\nlet hasCompileErrors = false;\nfunction clearOutdatedErrors() {\n if (typeof console !== \"undefined\" && typeof console.clear === \"function\") {\n if (hasCompileErrors) {\n console.clear();\n }\n }\n}\nfunction handleSuccess() {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation;\n isFirstCompilation = false;\n hasCompileErrors = false;\n if (isHotUpdate) {\n tryApplyUpdates();\n }\n}\nfunction handleWarnings(warnings) {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation;\n isFirstCompilation = false;\n hasCompileErrors = false;\n function printWarnings() {\n const formatted = (0, import_format.formatWebpackMessages)({\n warnings,\n errors: []\n });\n if (typeof console !== \"undefined\" && typeof console.warn === \"function\") {\n for (let i = 0; i < formatted.warnings.length; i++) {\n if (i === 5) {\n console.warn(\n \"There were more warnings in other files.\\nYou can find a complete log in the terminal.\"\n );\n break;\n }\n console.warn((0, import_strip_ansi.default)(formatted.warnings[i]));\n }\n }\n }\n printWarnings();\n if (isHotUpdate) {\n tryApplyUpdates();\n }\n}\nfunction handleErrors(errors) {\n clearOutdatedErrors();\n isFirstCompilation = false;\n hasCompileErrors = true;\n const formatted = (0, import_format.formatWebpackMessages)({\n errors,\n warnings: []\n });\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n for (const error of formatted.errors) {\n console.error((0, import_strip_ansi.default)(error));\n }\n }\n}\nfunction handleAvailableHash(hash) {\n mostRecentCompilationHash = hash;\n}\nconnection.onmessage = function(e) {\n const message = JSON.parse(e.data);\n switch (message.type) {\n case \"hash\":\n handleAvailableHash(message.data);\n break;\n case \"still-ok\":\n case \"ok\":\n handleSuccess();\n break;\n case \"content-changed\":\n window.location.reload();\n break;\n case \"warnings\":\n handleWarnings(message.data);\n break;\n case \"errors\":\n handleErrors(message.data);\n break;\n default:\n }\n};\nfunction isUpdateAvailable() {\n return mostRecentCompilationHash !== __webpack_hash__;\n}\nfunction canApplyUpdates() {\n return module.hot.status() === \"idle\";\n}\nfunction tryApplyUpdates() {\n if (!module.hot) {\n window.location.reload();\n return;\n }\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n const wantsForcedReload = err || !updatedModules || hadRuntimeError;\n if (wantsForcedReload) {\n window.location.reload();\n return;\n }\n if (isUpdateAvailable()) {\n tryApplyUpdates();\n }\n }\n const result = module.hot.check(true, handleApplyUpdates);\n if (result == null ? void 0 : result.then) {\n result.then(\n (updatedModules) => {\n handleApplyUpdates(null, updatedModules);\n },\n (err) => {\n handleApplyUpdates(err, null);\n }\n );\n }\n}\n","export * from '@modern-js/doc-core/theme';\nexport { default } from '@modern-js/doc-core/theme';\n","(()=>{\"use strict\";var e={275:e=>{e.exports=({onlyFirst:e=false}={})=>{const r=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(r,e?undefined:\"g\")}},647:(e,r,_)=>{const t=_(275);e.exports=e=>typeof e===\"string\"?e.replace(t(),\"\"):e}};var r={};function __nccwpck_require__(_){var t=r[_];if(t!==undefined){return t.exports}var a=r[_]={exports:{}};var n=true;try{e[_](a,a.exports,__nccwpck_require__);n=false}finally{if(n)delete r[_]}return a.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var _=__nccwpck_require__(647);module.exports=_})();","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PLUGIN_SCHEMAS = exports.INTERNAL_SERVER_PLUGINS = exports.SERVER_PLUGIN_POLYFILL = exports.SERVER_PLUGIN_SERVER = exports.SERVER_PLUGIN_NEST = exports.SERVER_PLUGIN_KOA = exports.SERVER_PLUGIN_EGG = exports.SERVER_PLUGIN_EXPRESS = exports.SERVER_PLUGIN_BFF = exports.INTERNAL_CLI_PLUGINS = exports.INTERNAL_DOC_TOOLS_PLUGINS = exports.INTERNAL_MONOREPO_TOOLS_PLUGINS = exports.INTERNAL_MODULE_TOOLS_PLUGINS = exports.INTERNAL_APP_TOOLS_RUNTIME_PLUGINS = exports.INTERNAL_APP_TOOLS_PLUGINS = exports.LOADER_ROUTES_DIR = exports.ROUTE_MANIFEST = exports.ROUTE_MINIFEST_FILE = exports.DEFAULT_SERVER_CONFIG = exports.OUTPUT_CONFIG_FILE = exports.CONFIG_FILE_EXTENSIONS = exports.CONFIG_CACHE_DIR = exports.SHARED_DIR = exports.SERVER_DIR = exports.API_DIR = exports.LOADABLE_STATS_FILE = exports.SERVER_RENDER_FUNCTION_NAME = exports.ENTRY_NAME_PATTERN = exports.SERVER_BUNDLE_DIRECTORY = exports.LAUNCH_EDITOR_ENDPOINT = exports.MAIN_ENTRY_NAME = exports.ROUTE_SPEC_FILE = exports.HMR_SOCK_PATH = void 0;\n/**\n * hmr socket connect path\n */\nexports.HMR_SOCK_PATH = '/webpack-hmr';\n/**\n * route specification file\n */\nexports.ROUTE_SPEC_FILE = 'route.json';\n/**\n * main entry name\n */\nexports.MAIN_ENTRY_NAME = 'main';\n/**\n * open editor request path\n */\nexports.LAUNCH_EDITOR_ENDPOINT = '/__open-stack-frame-in-editor';\n/**\n * server side bundles directory, which relative to dist.\n */\nexports.SERVER_BUNDLE_DIRECTORY = 'bundles';\n/**\n * entry name pattern used for ajv pattern properties.\n */\nexports.ENTRY_NAME_PATTERN = '^[a-zA-Z0-9_-]+$';\n/**\n * SSR server render function name\n */\nexports.SERVER_RENDER_FUNCTION_NAME = 'serverRender';\n/**\n * loadbale manifest json file\n */\nexports.LOADABLE_STATS_FILE = 'loadable-stats.json';\n/**\n * internal specified folder\n */\nexports.API_DIR = 'api';\nexports.SERVER_DIR = 'server';\nexports.SHARED_DIR = 'shared';\n/**\n * Modern.config.ts cached dir\n */\nexports.CONFIG_CACHE_DIR = './node_modules/.cache/node-bundle-require';\nexports.CONFIG_FILE_EXTENSIONS = ['.js', '.ts', '.ejs', '.mjs'];\n/**\n * Serialized config path\n */\nexports.OUTPUT_CONFIG_FILE = 'modern.config.json';\n/**\n * Default server config basename\n */\nexports.DEFAULT_SERVER_CONFIG = 'modern.server-runtime.config';\n/**\n * Routes manifest filename\n */\nexports.ROUTE_MINIFEST_FILE = 'routes-manifest.json';\n/**\n * Property mounted on window that describes route manifest\n */\nexports.ROUTE_MANIFEST = `_MODERNJS_ROUTE_MANIFEST`;\n/**\n * directory name for loader routes\n */\nexports.LOADER_ROUTES_DIR = `loader-routes`;\n/**\n * Internal app-tools plugins that work as soon as they are installed.\n */\nexports.INTERNAL_APP_TOOLS_PLUGINS = {\n '@modern-js/app-tools': '@modern-js/app-tools/cli',\n '@modern-js/plugin-proxy': '@modern-js/plugin-proxy/cli',\n '@modern-js/plugin-ssg': '@modern-js/plugin-ssg/cli',\n '@modern-js/plugin-bff': '@modern-js/plugin-bff/cli',\n '@modern-js/plugin-testing': '@modern-js/plugin-testing/cli',\n '@modern-js/plugin-storybook': '@modern-js/plugin-storybook/cli',\n '@modern-js/plugin-express': '@modern-js/plugin-express/cli',\n '@modern-js/plugin-egg': '@modern-js/plugin-egg/cli',\n '@modern-js/plugin-koa': '@modern-js/plugin-koa/cli',\n '@modern-js/plugin-nest': '@modern-js/plugin-nest/cli',\n '@modern-js/plugin-server': '@modern-js/plugin-server/cli',\n '@modern-js/plugin-garfish': '@modern-js/plugin-garfish/cli',\n '@modern-js/plugin-tailwindcss': '@modern-js/plugin-tailwindcss/cli',\n '@modern-js/plugin-polyfill': '@modern-js/plugin-polyfill/cli',\n // legacy router (inner react-router-dom v5)\n '@modern-js/plugin-router-v5': '@modern-js/plugin-router-v5/cli',\n};\nexports.INTERNAL_APP_TOOLS_RUNTIME_PLUGINS = {\n '@modern-js/runtime': '@modern-js/runtime/cli',\n};\n/**\n * Internal module-tools plugins that work as soon as they are installed.\n */\nexports.INTERNAL_MODULE_TOOLS_PLUGINS = {\n '@modern-js/module-tools': '@modern-js/module-tools',\n '@modern-js/doc-tools': '@modern-js/doc-tools',\n '@modern-js/runtime': '@modern-js/runtime/cli',\n '@modern-js/plugin-testing': '@modern-js/plugin-testing/cli',\n '@modern-js/plugin-storybook': '@modern-js/plugin-storybook/cli',\n '@modern-js/plugin-tailwindcss': '@modern-js/plugin-tailwindcss/cli',\n // TODO: Maybe can remove it\n '@modern-js/plugin-nocode': '@modern-js/plugin-nocode/cli',\n // legacy router (inner react-router-dom v5)\n '@modern-js/plugin-router-legacy': '@modern-js/plugin-router-legacy/cli',\n};\n/**\n * Internal monorepo-tools plugins that work as soon as they are installed.\n */\nexports.INTERNAL_MONOREPO_TOOLS_PLUGINS = {\n '@modern-js/monorepo-tools': '@modern-js/monorepo-tools/cli',\n '@modern-js/plugin-testing': '@modern-js/plugin-testing/cli',\n};\n/**\n * Internal doc-tools plugins that work as soon as they are installed.\n */\nexports.INTERNAL_DOC_TOOLS_PLUGINS = {\n '@modern-js/doc-tools': '@modern-js/doc-tools',\n '@modern-js/runtime': '@modern-js/runtime/cli',\n '@modern-js/plugin-testing': '@modern-js/plugin-testing/cli',\n};\n/**\n * Internal plugins that work as soon as they are installed.\n */\nexports.INTERNAL_CLI_PLUGINS = {\n '@modern-js/app-tools': '@modern-js/app-tools/cli',\n '@modern-js/monorepo-tools': '@modern-js/monorepo-tools/cli',\n '@modern-js/module-tools': '@modern-js/module-tools',\n '@modern-js/doc-tools': '@modern-js/doc-tools',\n '@modern-js/runtime': '@modern-js/runtime/cli',\n '@modern-js/plugin-proxy': '@modern-js/plugin-proxy/cli',\n '@modern-js/plugin-ssg': '@modern-js/plugin-ssg/cli',\n '@modern-js/plugin-bff': '@modern-js/plugin-bff/cli',\n '@modern-js/plugin-testing': '@modern-js/plugin-testing/cli',\n '@modern-js/plugin-storybook': '@modern-js/plugin-storybook/cli',\n '@modern-js/plugin-express': '@modern-js/plugin-express/cli',\n '@modern-js/plugin-egg': '@modern-js/plugin-egg/cli',\n '@modern-js/plugin-koa': '@modern-js/plugin-koa/cli',\n '@modern-js/plugin-nest': '@modern-js/plugin-nest/cli',\n '@modern-js/plugin-server': '@modern-js/plugin-server/cli',\n '@modern-js/plugin-swc': '@modern-js/plugin-swc',\n '@modern-js/plugin-garfish': '@modern-js/plugin-garfish/cli',\n '@modern-js/plugin-tailwindcss': '@modern-js/plugin-tailwindcss/cli',\n '@modern-js/plugin-polyfill': '@modern-js/plugin-polyfill/cli',\n // TODO: Maybe can remove it\n '@modern-js/plugin-nocode': '@modern-js/plugin-nocode/cli',\n // legacy router (inner react-router-dom v5)\n '@modern-js/plugin-router-v5': '@modern-js/plugin-router-v5/cli',\n};\nexports.SERVER_PLUGIN_BFF = '@modern-js/plugin-bff';\nexports.SERVER_PLUGIN_EXPRESS = '@modern-js/plugin-express';\nexports.SERVER_PLUGIN_EGG = '@modern-js/plugin-egg';\nexports.SERVER_PLUGIN_KOA = '@modern-js/plugin-koa';\nexports.SERVER_PLUGIN_NEST = '@modern-js/plugin-nest';\nexports.SERVER_PLUGIN_SERVER = '@modern-js/plugin-server';\nexports.SERVER_PLUGIN_POLYFILL = '@modern-js/plugin-polyfill';\nexports.INTERNAL_SERVER_PLUGINS = {\n [exports.SERVER_PLUGIN_BFF]: '@modern-js/plugin-bff/server',\n [exports.SERVER_PLUGIN_EXPRESS]: '@modern-js/plugin-express/server',\n [exports.SERVER_PLUGIN_EGG]: '@modern-js/plugin-egg/server',\n [exports.SERVER_PLUGIN_KOA]: '@modern-js/plugin-koa/server',\n [exports.SERVER_PLUGIN_NEST]: '@modern-js/plugin-nest/server',\n [exports.SERVER_PLUGIN_SERVER]: '@modern-js/plugin-server/server',\n [exports.SERVER_PLUGIN_POLYFILL]: '@modern-js/plugin-polyfill/server',\n};\n/**\n * The schema registered in the plugin.\n */\nexports.PLUGIN_SCHEMAS = {\n '@modern-js/runtime': [\n {\n target: 'runtime',\n schema: {\n type: 'object',\n additionalProperties: false,\n },\n },\n {\n target: 'runtimeByEntries',\n schema: {\n type: 'object',\n patternProperties: { [exports.ENTRY_NAME_PATTERN]: { type: 'object' } },\n additionalProperties: false,\n },\n },\n ],\n '@modern-js/plugin-swc': [\n {\n target: 'tools.swc',\n schema: { typeof: ['object'] },\n },\n ],\n '@modern-js/plugin-bff': [\n {\n target: 'bff',\n schema: {\n type: 'object',\n properties: {\n prefix: {\n type: ['string', 'array'],\n items: { type: 'string' },\n },\n fetcher: { type: 'string' },\n proxy: { type: 'object' },\n requestCreator: { type: 'string' },\n },\n },\n },\n ],\n '@modern-js/plugin-tailwindcss': [\n {\n target: 'tools.tailwindcss',\n schema: { typeof: ['object', 'function'] },\n },\n ],\n '@modern-js/plugin-proxy': [\n {\n target: 'dev.proxy',\n schema: { typeof: ['string', 'object'] },\n },\n ],\n '@modern-js/plugin-ssg': [\n {\n target: 'output.ssg',\n schema: {\n oneOf: [\n { type: 'boolean' },\n { type: 'object' },\n { instanceof: 'Function' },\n ],\n },\n },\n ],\n '@modern-js/plugin-state': [\n {\n target: 'runtime.state',\n schema: { type: ['boolean', 'object'] },\n },\n ],\n '@modern-js/plugin-design-token': [\n // Legacy Features\n {\n target: 'source.designSystem',\n schema: { typeof: ['object'] },\n },\n {\n target: 'source.designSystem.supportStyledComponents',\n schema: { type: ['boolean'] },\n },\n {\n target: 'designSystem',\n schema: { typeof: ['object'] },\n },\n ],\n '@modern-js/plugin-router': [\n {\n target: 'runtime.router',\n schema: { type: ['boolean', 'object'] },\n },\n ],\n '@modern-js/plugin-testing': [\n {\n target: 'testing',\n schema: { typeof: ['object'] },\n },\n {\n target: 'tools.jest',\n schema: { typeof: ['object', 'function'] },\n },\n ],\n '@modern-js/plugin-garfish': [\n {\n target: 'runtime.masterApp',\n schema: { type: ['boolean', 'object'] },\n },\n {\n target: 'dev.withMasterApp',\n schema: { type: ['object'] },\n },\n {\n target: 'deploy.microFrontend',\n schema: { type: ['boolean', 'object'] },\n },\n ],\n '@modern-js/plugin-nocode': [],\n};\n","\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file at\n * https://github.com/facebook/create-react-app/blob/master/LICENSE\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatWebpackMessages = void 0;\nconst friendlySyntaxErrorLabel = 'SyntaxError:';\nfunction isLikelyASyntaxError(message) {\n return message.includes(friendlySyntaxErrorLabel);\n}\n// Cleans up webpack error messages.\nfunction formatMessage(stats) {\n let lines = [];\n let message;\n // webpack 5 stats error object\n if (typeof stats === 'object') {\n const fileName = stats.moduleName ? `File: ${stats.moduleName}\\n` : '';\n const mainMessage = stats.message;\n const details = stats.details ? `\\nDetails: ${stats.details}\\n` : '';\n const stack = stats.stack ? `\\n${stats.stack}` : '';\n message = `${fileName}${mainMessage}${details}${stack}`;\n }\n else {\n message = stats;\n }\n lines = message.split('\\n');\n // Transform parsing error into syntax error\n lines = lines.map(line => {\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return `${friendlySyntaxErrorLabel} ${errorMessage} (${errorLine}:${errorColumn})`;\n });\n message = lines.join('\\n');\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, `${friendlySyntaxErrorLabel} $3 ($1:$2)\\n`);\n lines = message.split('\\n');\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === '') {\n lines.splice(1, 1);\n }\n // Clean up file name\n lines[0] = lines[0].replace(/^(.*) \\d+:\\d+-\\d+$/, '$1');\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].indexOf('Module not found:') !== -1) {\n lines[1] = lines[1].replace('Error: ', '');\n }\n message = lines.join('\\n');\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, ''); // at ... ...:x:y\n message = message.replace(/^\\s*at\\s<anonymous>(\\n|$)/gm, ''); // at <anonymous>\n lines = message.split('\\n');\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr) => index === 0 ||\n line.trim() !== '' ||\n line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join('\\n');\n return message.trim();\n}\nfunction formatWebpackMessages(json) {\n var _a, _b, _c;\n const formattedErrors = (_a = json === null || json === void 0 ? void 0 : json.errors) === null || _a === void 0 ? void 0 : _a.map(formatMessage);\n const formattedWarnings = (_b = json === null || json === void 0 ? void 0 : json.warnings) === null || _b === void 0 ? void 0 : _b.map(formatMessage);\n const result = {\n errors: formattedErrors || [],\n warnings: formattedWarnings || [],\n };\n if ((_c = result.errors) === null || _c === void 0 ? void 0 : _c.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n }\n // First error is usually it.\n if (result.errors.length > 1) {\n result.errors.length = 1;\n }\n return result;\n}\nexports.formatWebpackMessages = formatWebpackMessages;\n"],"names":[],"sourceRoot":""}
|