react-rails 2.7.1 → 3.0.0.rc.0
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.
- 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
|
[](http://rubygems.org/gems/react-rails)
|
4
4
|
[](https://www.npmjs.com/package/react_ujs)
|
5
5
|
[](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__})()));
|