react-rails 2.7.1 → 3.0.0.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +53 -41
- data/lib/assets/javascripts/react_ujs.js +1 -1
- data/lib/assets/react-source/development/react-server.js +333 -10
- data/lib/assets/react-source/development/react.js +19 -28
- data/lib/assets/react-source/production/react-server.js +1 -1
- data/lib/assets/react-source/production/react.js +1 -1
- data/lib/generators/react/component_generator.rb +126 -121
- data/lib/generators/react/install_generator.rb +50 -72
- data/lib/generators/templates/component.es6.jsx +8 -8
- data/lib/generators/templates/component.js.jsx +14 -14
- data/lib/generators/templates/react_server_rendering.rb +3 -1
- data/lib/react/jsx/babel_transformer.rb +12 -6
- data/lib/react/jsx/jsx_transformer.rb +7 -5
- data/lib/react/jsx/processor.rb +3 -1
- data/lib/react/jsx/sprockets_strategy.rb +17 -11
- data/lib/react/jsx/template.rb +7 -6
- data/lib/react/jsx.rb +9 -7
- data/lib/react/rails/asset_variant.rb +7 -6
- data/lib/react/rails/component_mount.rb +37 -29
- data/lib/react/rails/controller_lifecycle.rb +2 -0
- data/lib/react/rails/controller_renderer.rb +3 -1
- data/lib/react/rails/railtie.rb +19 -22
- data/lib/react/rails/test_helper.rb +3 -1
- data/lib/react/rails/version.rb +3 -1
- data/lib/react/rails/view_helper.rb +3 -1
- data/lib/react/rails.rb +9 -7
- data/lib/react/server_rendering/bundle_renderer.rb +34 -39
- data/lib/react/server_rendering/environment_container.rb +2 -0
- data/lib/react/server_rendering/exec_js_renderer.rb +15 -6
- data/lib/react/server_rendering/manifest_container.rb +6 -2
- data/lib/react/server_rendering/separate_server_bundle_container.rb +19 -0
- data/lib/react/server_rendering/yaml_manifest_container.rb +4 -2
- data/lib/react/server_rendering.rb +11 -9
- data/lib/react-rails.rb +8 -6
- data/lib/react.rb +2 -0
- metadata +7 -49
- data/lib/react/server_rendering/webpacker_manifest_container.rb +0 -96
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8d2a4cb3734964b0395e076976f0f518467d0ece8559e6fe46c50db07dbbef0
|
4
|
+
data.tar.gz: 5219597584239f5624dadd79049d295346017102bf2d28663ba533adc1c7481f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfbb05294e9838ba2044a47c7171e115d8ad27252cc38488f44009ce7e1518bf1cd03138a18f40d6dfb52b2d05f5a2a08e45a891ef27a3eeb2ab539091ddf63f
|
7
|
+
data.tar.gz: 42dadcb99c93a42584af25c9ab4dcfa09d30c236bec22a59f48be8d78079daf1c12711cbc5e75e7b1e2313ce1b39e3ddf556ea4bc65045d0f7a7bc4f3541c491
|
data/CHANGELOG.md
CHANGED
@@ -9,6 +9,15 @@ Changes since last non-beta release.
|
|
9
9
|
|
10
10
|
_Please add entries here for your pull requests that are not yet released._
|
11
11
|
|
12
|
+
### Breaking Changes
|
13
|
+
- Requires separate compilations for server & client bundles if using Shakapacker (see [Webpack config](https://github.com/reactjs/react-rails/tree/master/test/dummy/config/webpack)) #1274
|
14
|
+
- Replaces WebpackManifestContainer, which searched for assets in the webpack manifest, with SeparateServerBundleContainer, which expects a single server bundle file & does not use the webpack manifest at all. #1274
|
15
|
+
- Upgrades React-Rails' embedded react to v18.2.0. Uses node polyfill plugin & fast-text-encoder for SSR text encoding. #1290
|
16
|
+
- If using Webpacker/Shakapacker, requires upgrading to Shakapacker v7 #1274 and #1285
|
17
|
+
|
18
|
+
#### Changed
|
19
|
+
- The `react:component` generator now generates a function component by default #1271
|
20
|
+
|
12
21
|
## [2.7.1] - 2023-05-19
|
13
22
|
|
14
23
|
#### Bug Fixes
|
data/README.md
CHANGED
@@ -1,17 +1,19 @@
|
|
1
|
-
# React-Rails
|
1
|
+
# React-Rails v3
|
2
2
|
|
3
3
|
[![Gem](https://img.shields.io/gem/v/react-rails.svg?style=flat-square)](http://rubygems.org/gems/react-rails)
|
4
4
|
[![npm](https://img.shields.io/npm/v/react_ujs.svg?style=flat-square)](https://www.npmjs.com/package/react_ujs)
|
5
5
|
[![Ruby](https://github.com/reactjs/react-rails/actions/workflows/ruby.yml/badge.svg)](https://github.com/reactjs/react-rails/actions/workflows/ruby.yml)
|
6
6
|
|
7
7
|
## News
|
8
|
-
|
8
|
+
V3.0.0 is released with Shakapacker v6 support, including SSR. Please try it out and report any issues. We'll try to address any critical issues ASAP.
|
9
|
+
|
10
|
+
For version 2.7 documentation checkout [2.7-stable](https://github.com/reactjs/react-rails/tree/2.7-stable) branch.
|
9
11
|
|
10
12
|
## Summary
|
11
13
|
React-Rails is a flexible tool to use [React](http://facebook.github.io/react/) with Rails. The benefits:
|
12
14
|
* Automatically renders React server-side and client-side
|
13
|
-
* Supports
|
14
|
-
* Supports Sprockets 4.x, 3.x
|
15
|
+
* Supports [Shakapacker](https://github.com/shakacode/shakapacker) v7
|
16
|
+
* Supports Sprockets 4.x, 3.x
|
15
17
|
* Lets you use [JSX](http://facebook.github.io/react/docs/jsx-in-depth.html), [ES6](http://es6-features.org/), [TypeScript](https://www.typescriptlang.org/), [CoffeeScript](http://coffeescript.org/)
|
16
18
|
|
17
19
|
---
|
@@ -64,10 +66,10 @@ Read the [full review here](https://clutch.co/profile/shakacode#reviews?sort_by=
|
|
64
66
|
- [Camelize Props](#camelize-props)
|
65
67
|
- [Changing Component Templates](#changing-component-templates)
|
66
68
|
- [Upgrading](#upgrading)
|
69
|
+
- [2.7 to 3.0](#27-to-30)
|
67
70
|
- [2.3 to 2.4](#23-to-24)
|
68
71
|
- [Common Errors](#common-errors)
|
69
72
|
- [Getting warning for `Can't resolve 'react-dom/client'` in React < 18](#getting-warning-for-cant-resolve-react-domclient-in-react--18)
|
70
|
-
- [During installation](#during-installation)
|
71
73
|
- [Undefined Set](#undefined-set)
|
72
74
|
- [Using TheRubyRacer](#using-therubyracer)
|
73
75
|
- [HMR](#hmr)
|
@@ -90,20 +92,20 @@ _Alternatively, get started with [Sprockets](#use-with-asset-pipeline)_
|
|
90
92
|
Prevent installing default javascript dependencies by using `--skip-javascript` option:
|
91
93
|
|
92
94
|
```bash
|
93
|
-
|
94
|
-
|
95
|
+
rails new my-app --skip-javascript
|
96
|
+
cd my-app
|
95
97
|
```
|
96
98
|
|
97
99
|
2. Install `shakapacker`:
|
98
100
|
```bash
|
99
|
-
|
100
|
-
|
101
|
+
bundle add shakapacker --strict
|
102
|
+
rails shakapacker:install
|
101
103
|
```
|
102
104
|
|
103
105
|
3. Install `react` and some other required npm packages:
|
104
106
|
```bash
|
105
|
-
|
106
|
-
|
107
|
+
yarn add react react-dom @babel/preset-react prop-types \
|
108
|
+
css-loader style-loader mini-css-extract-plugin css-minimizer-webpack-plugin
|
107
109
|
```
|
108
110
|
|
109
111
|
Also update the Babel configuration in the `package.json` file:
|
@@ -167,7 +169,7 @@ Output: greeting: Hello from react-rails", inspect webpage in your browser to se
|
|
167
169
|
In order to run dev server with HMR feature you need to parallely run:
|
168
170
|
|
169
171
|
```bash
|
170
|
-
$ ./bin/
|
172
|
+
$ ./bin/shakapacker-dev-server
|
171
173
|
```
|
172
174
|
|
173
175
|
Note: On Rails 6 you need to specify `webpack-dev-server` host. To this end, update `config/initializers/content_security_policy.rb` and uncomment relevant lines.
|
@@ -491,7 +493,7 @@ ReactRailsUJS.detectEvents()
|
|
491
493
|
|
492
494
|
For example, if `Turbolinks` is loaded _after_ `ReactRailsUJS`, you'll need to call this again. This function removes previous handlers before adding new ones, so it's safe to call as often as needed.
|
493
495
|
|
494
|
-
If `Turbolinks` is `import`ed via
|
496
|
+
If `Turbolinks` is `import`ed via Shakapacker (and thus not available globally), `ReactRailsUJS` will be unable to locate it. To fix this, you can temporarily add it to the global namespace:
|
495
497
|
|
496
498
|
```js
|
497
499
|
// Order is particular. First start Turbolinks:
|
@@ -545,6 +547,7 @@ Server rendering is powered by [`ExecJS`](https://github.com/rails/execjs) and s
|
|
545
547
|
|
546
548
|
- `react-rails` must load your code. By convention, it uses `server_rendering.js`, which was created
|
547
549
|
by the install task. This file must include your components _and_ their dependencies (eg, Underscore.js).
|
550
|
+
- Requires separate compilations for server & client bundles (see [Webpack config](https://github.com/reactjs/react-rails/tree/master/test/dummy/config/webpack))
|
548
551
|
- Your code can't reference `document` or `window`. Prerender processes don't have access to `document` or `window`,
|
549
552
|
so jQuery and some other libs won't work in this environment :(
|
550
553
|
|
@@ -649,7 +652,7 @@ Prerendering is set to `true` by default, but can be turned off with `prerender:
|
|
649
652
|
You can generate a new component file with:
|
650
653
|
|
651
654
|
```sh
|
652
|
-
rails g react:component ComponentName prop1:type prop2:type ...
|
655
|
+
rails g react:component ComponentName prop1:type prop2:type ... [options]
|
653
656
|
```
|
654
657
|
|
655
658
|
For example,
|
@@ -682,9 +685,38 @@ var Post = createReactClass({
|
|
682
685
|
|
683
686
|
The generator also accepts options:
|
684
687
|
|
685
|
-
- `--es6`:
|
688
|
+
- `--es6`: generates a function component
|
686
689
|
- `--coffee`: use CoffeeScript
|
687
690
|
|
691
|
+
For example,
|
692
|
+
|
693
|
+
```sh
|
694
|
+
rails g react:component ButtonComponent title:string --es6
|
695
|
+
```
|
696
|
+
|
697
|
+
would generate:
|
698
|
+
|
699
|
+
```jsx
|
700
|
+
import React from "react"
|
701
|
+
import PropTypes from "prop-types"
|
702
|
+
|
703
|
+
function ButtonComponent(props) {
|
704
|
+
return (
|
705
|
+
<React.Fragment>
|
706
|
+
Title: {this.props.title}
|
707
|
+
</React.Fragment>
|
708
|
+
);
|
709
|
+
}
|
710
|
+
|
711
|
+
ButtonComponent.propTypes = {
|
712
|
+
title: PropTypes.string
|
713
|
+
};
|
714
|
+
|
715
|
+
export default ButtonComponent
|
716
|
+
```
|
717
|
+
|
718
|
+
**Note:** In a Shakapacker project, es6 template is the default template in the generator.
|
719
|
+
|
688
720
|
Accepted PropTypes are:
|
689
721
|
|
690
722
|
- Plain types: `any`, `array`, `bool`, `element`, `func`, `number`, `object`, `node`, `shape`, `string`
|
@@ -746,6 +778,11 @@ For example, to change the [ES6 Component template](https://github.com/reactjs/r
|
|
746
778
|
|
747
779
|
## Upgrading
|
748
780
|
|
781
|
+
### 2.7 to 3.0
|
782
|
+
- Keep your `react_ujs` up to date: `yarn upgrade`
|
783
|
+
- **Drop support for Webpacker:** Before any ReactRails upgrade, make sure upgrading from Webpacker to Shakapacker 7. For more information check out Shakapacker
|
784
|
+
- **SSR:** ReactRails 3.x requires separate compilations for server & client bundles. See [Webpack config](https://github.com/reactjs/react-rails/tree/master/test/dummy/config/webpack) directory in the dummy app to addapt the new implementation.
|
785
|
+
|
749
786
|
### 2.3 to 2.4
|
750
787
|
|
751
788
|
Keep your `react_ujs` up to date, `yarn upgrade`
|
@@ -781,30 +818,6 @@ You may see a warning like this when building a Webpack bundle using any version
|
|
781
818
|
+ module.exports = merge({}, webpackConfig, ignoreWarningsConfig)
|
782
819
|
```
|
783
820
|
|
784
|
-
### During installation
|
785
|
-
1) While using installers.(rails webpacker:install:react && rails webpacker:install)
|
786
|
-
Error:
|
787
|
-
```
|
788
|
-
public/packs/manifest.json. Possible causes:
|
789
|
-
1. You want to set webpacker.yml value of compile to true for your environment
|
790
|
-
unless you are using the `webpack -w` or the webpack-dev-server.
|
791
|
-
2. webpack has not yet re-run to reflect updates.
|
792
|
-
3. You have misconfigured Webpacker's config/webpacker.yml file.
|
793
|
-
4. Your webpack configuration is not creating a manifest.
|
794
|
-
or
|
795
|
-
yarn: error: no such option: --dev
|
796
|
-
ERROR: [Errno 2] No such file or directory: 'add'
|
797
|
-
```
|
798
|
-
Fix: Try updating yarn package.
|
799
|
-
```
|
800
|
-
sudo apt remove cmdtest
|
801
|
-
sudo apt remove yarn
|
802
|
-
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
803
|
-
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
804
|
-
sudo apt-get update && sudo apt-get install yarn
|
805
|
-
|
806
|
-
yarn install
|
807
|
-
```
|
808
821
|
### Undefined Set
|
809
822
|
```
|
810
823
|
ExecJS::ProgramError (identifier 'Set' undefined):
|
@@ -820,9 +833,8 @@ TheRubyRacer [hasn't updated LibV8](https://github.com/cowboyd/therubyracer/blob
|
|
820
833
|
LibV8 itself is already [beyond version 7](https://github.com/cowboyd/libv8/releases/tag/v7.3.492.27.1) therefore many serverside issues are caused by old JS engines and fixed by using an up to date one such as [MiniRacer](https://github.com/discourse/mini_racer) or [TheRubyRhino](https://github.com/cowboyd/therubyrhino) on JRuby.
|
821
834
|
|
822
835
|
### HMR
|
823
|
-
Hot Module Replacement is [possible with this gem](https://stackoverflow.com/a/54846330/193785) as it does just pass through to Webpacker. Please open an issue to let us know tips and tricks for it to add to the wiki.
|
824
836
|
|
825
|
-
|
837
|
+
Check out [Enabling Hot Module Replacement (HMR)](https://github.com/shakacode/shakapacker/blob/master/docs/react.md#enabling-hot-module-replacement-hmr) in Shakapacker documentation.
|
826
838
|
|
827
839
|
One caveat is that currently you [cannot Server-Side Render along with HMR](https://github.com/reactjs/react-rails/issues/925#issuecomment-415469572).
|
828
840
|
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom"),require("react-dom/server")):"function"==typeof define&&define.amd?define(["react","react-dom","react-dom/server"],t):"object"==typeof exports?exports.ReactRailsUJS=t(require("react"),require("react-dom"),require("react-dom/server")):e.ReactRailsUJS=t(e.React,e.ReactDOM,e.ReactDOMServer)}(self,((__WEBPACK_EXTERNAL_MODULE__787__,__WEBPACK_EXTERNAL_MODULE__156__,__WEBPACK_EXTERNAL_MODULE__997__)=>(()=>{var __webpack_modules__={10:(e,t,n)=>{var o=n(787),r=n(156),a=n(997),u=n(230),c=n(121),d=n(831),i=n(37),
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom"),require("react-dom/server")):"function"==typeof define&&define.amd?define(["react","react-dom","react-dom/server"],t):"object"==typeof exports?exports.ReactRailsUJS=t(require("react"),require("react-dom"),require("react-dom/server")):e.ReactRailsUJS=t(e.React,e.ReactDOM,e.ReactDOMServer)}(self,((__WEBPACK_EXTERNAL_MODULE__787__,__WEBPACK_EXTERNAL_MODULE__156__,__WEBPACK_EXTERNAL_MODULE__997__)=>(()=>{var __webpack_modules__={634:(e,t,n)=>{"use strict";var o=n(156);t.createRoot=o.createRoot,t.hydrateRoot=o.hydrateRoot},10:(e,t,n)=>{var o=n(787),r=n(156),a=n(997),u=n(230),c=n(121),d=n(831),i=n(37),s=n(39),{supportsHydration:_,reactHydrate:l,createReactRootLike:p}=n(198),f=n(613),v={CLASS_NAME_ATTR:"data-react-class",PROPS_ATTR:"data-react-props",RENDER_ATTR:"data-hydrate",CACHE_ID_ATTR:"data-react-cache-id",TURBOLINKS_PERMANENT_ATTR:"data-turbolinks-permanent",jQuery:"undefined"!=typeof window&&void 0!==window.jQuery&&window.jQuery,components:{},roots:[],findDOMNodes:function(e){var t,n,o=v.CLASS_NAME_ATTR;switch(typeof e){case"undefined":t="["+o+"]",n=document;break;case"object":t="["+o+"]",n=e;break;case"string":t=e+"["+o+"], "+e+" ["+o+"]",n=document}return v.jQuery?v.jQuery(t,n):n.querySelectorAll(t)},getConstructor:c,constructorFromGlobal:c,constructorFromRequireContext:d,constructorFromRequireContextWithGlobalFallback:i,useContext:function(e){this.getConstructor=i(e)},useContexts:function(e){this.getConstructor=s(e)},serverRender:function(e,t,n){var r=this.getConstructor(t),u=o.createElement(r,n);return a[e](u)},mountComponents:function(e){for(var t=v,n=t.findDOMNodes(e),r=0;r<n.length;++r){var a=n[r],u=a.getAttribute(t.CLASS_NAME_ATTR),c=t.getConstructor(u),d=a.getAttribute(t.PROPS_ATTR),i=d&&JSON.parse(d),s=a.getAttribute(t.RENDER_ATTR),E=a.getAttribute(t.CACHE_ID_ATTR),h=a.hasAttribute(t.TURBOLINKS_PERMANENT_ATTR);if(!c){var m="Cannot find component: '"+u+"'";throw console&&console.log&&console.log("%c[react-rails] %c"+m+" for element","font-weight: bold","",a),new Error(m+". Make sure your component is available to render.")}var b=this.components[E];if(void 0===b&&(b=o.createElement(c,i),h&&(this.components[E]=b)),s&&_())b=l(a,b);else{const e=p(a);b=e.render(b),f&&this.roots.push({node:a,root:e})}}},unmountComponents:function(e){for(var t=v.findDOMNodes(e),n=0;n<t.length;++n){var o=t[n];f?this.unmountRoot(o):r.unmountComponentAtNode(o)}},detectEvents:function(){u(this)},unmountRoot:function(e){this.roots.filter((function(t){return t.node&&t.node===e})).forEach((function(e){e.root.unmount(),e.root=null,e.node=null}))},handleMount:function(e){var t=void 0;e&&e.target&&(t=e.target),v.mountComponents(t)},handleUnmount:function(e){e&&e.target&&e.target}};"undefined"!=typeof window&&v.detectEvents(),self.ReactRailsUJS=v,e.exports=v},230:(e,t,n)=>{var o=n(528),r=n(921),a=n(228),u=n(724),c=n(968);e.exports=function(e){e.handleEvent&&("undefined"!=typeof Turbolinks&&void 0!==Turbolinks.EVENTS&&c.teardown(e),a.teardown(e),u.teardown(e),r.teardown(e),o.teardown(e)),"addEventListener"in window?(e.handleEvent=function(e,t){document.addEventListener(e,t)},e.removeEvent=function(e,t){document.removeEventListener(e,t)}):(e.handleEvent=function(e,t){window.attachEvent(e,t)},e.removeEvent=function(e,t){window.detachEvent(e,t)}),"undefined"!=typeof Turbolinks&&Turbolinks.supported?void 0!==Turbolinks.EVENTS?c.setup(e):void 0!==Turbolinks.controller?a.setup(e):u.setup(e):"undefined"!=typeof $&&"function"==typeof $.pjax?r.setup(e):o.setup(e)}},528:e=>{e.exports={setup:function(e){"addEventListener"in window?e.handleEvent("DOMContentLoaded",e.handleMount):e.handleEvent("onload",e.handleMount)},teardown:function(e){e.removeEvent("DOMContentLoaded",e.handleMount),e.removeEvent("onload",e.handleMount)}}},921:e=>{e.exports={setup:function(e){e.handleEvent("ready",e.handleMount),e.handleEvent("pjax:end",e.handleMount),e.handleEvent("pjax:beforeReplace",e.handleUnmount)},teardown:function(e){e.removeEvent("ready",e.handleMount),e.removeEvent("pjax:end",e.handleMount),e.removeEvent("pjax:beforeReplace",e.handleUnmount)}}},228:e=>{e.exports={setup:function(e){e.handleEvent("turbolinks:load",e.handleMount)},teardown:function(e){e.removeEvent("turbolinks:load",e.handleMount)}}},968:e=>{e.exports={setup:function(e){e.handleEvent(Turbolinks.EVENTS.CHANGE,e.handleMount),e.handleEvent(Turbolinks.EVENTS.BEFORE_UNLOAD,e.handleUnmount)},teardown:function(e){e.removeEvent(Turbolinks.EVENTS.CHANGE,e.handleMount),e.removeEvent(Turbolinks.EVENTS.BEFORE_UNLOAD,e.handleUnmount)}}},724:e=>{e.exports={setup:function(e){Turbolinks.pagesCached(0),e.handleEvent("page:change",e.handleMount),e.handleEvent("page:receive",e.handleUnmount)},teardown:function(e){e.removeEvent("page:change",e.handleMount),e.removeEvent("page:receive",e.handleUnmount)}}},121:function(module){var topLevel="undefined"==typeof window?this:window;module.exports=function(className){var constructor;return constructor=topLevel[className],constructor||(constructor=eval(className)),constructor&&constructor.default&&(constructor=constructor.default),constructor}},831:e=>{e.exports=function(e){return function(t){var n=t.split("."),o=n.shift(),r=n,a=e("./"+o);return r.forEach((function(e){a=a[e]})),a.__esModule&&(a=a.default),a}}},37:(e,t,n)=>{var o=n(121),r=n(831);e.exports=function(e){var t=r(e);return function(e){var n;try{n=t(e)}catch(t){try{n=o(e)}catch(e){console.error(t),console.error(e)}}return n}}},39:(e,t,n)=>{var o=n(121),r=n(831);e.exports=function(e){var t=e.map((e=>r(e)));return function(e){var n;try{var r,a,u=0;do{r=t[u];try{n=r(e)}catch(e){a||(a=e)}u+=1}while(u<t.length);if(!n)throw a}catch(a){try{n=o(e)}catch(e){console.error(a),console.error(e)}}return n}}},198:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createReactRootLike:()=>_,reactHydrate:()=>s,supportsHydration:()=>i});var o=n(156),r=n.n(o),a=n(613),u=n.n(a);let c=r();if(u())try{c=n(634)}catch(e){c=r()}const d=c;function i(){return"function"==typeof d.hydrate||"function"==typeof d.hydrateRoot}function s(e,t){return"function"==typeof d.hydrateRoot?d.hydrateRoot(e,t):d.hydrate(t,e)}function _(e){return u()?d.createRoot(e):function(e){return{render:t=>d.render(t,e)}}(e)}},613:(e,t,n)=>{var o,r=n(156);o=void 0!==r&&(r.version.split(".")[0]||16)>=18,e.exports=o},787:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__787__},156:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__156__},997:e=>{"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__997__}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(10);return __webpack_exports__})()));
|