react-rails 2.4.7 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -10
  3. data/LICENSE +0 -0
  4. data/README.md +304 -41
  5. data/lib/assets/javascripts/JSXTransformer.js +0 -0
  6. data/lib/assets/javascripts/react_ujs.js +1 -507
  7. data/lib/assets/react-source/development/react-server.js +166 -6795
  8. data/lib/assets/react-source/development/react.js +184 -21874
  9. data/lib/assets/react-source/production/react-server.js +2 -22
  10. data/lib/assets/react-source/production/react.js +2 -24
  11. data/lib/generators/react/component_generator.rb +91 -15
  12. data/lib/generators/react/install_generator.rb +22 -4
  13. data/lib/generators/templates/component.es6.jsx +0 -0
  14. data/lib/generators/templates/component.js.jsx +0 -0
  15. data/lib/generators/templates/component.js.jsx.coffee +0 -0
  16. data/lib/generators/templates/component.js.jsx.tsx +36 -0
  17. data/lib/generators/templates/react_server_rendering.rb +0 -0
  18. data/lib/generators/templates/server_rendering.js +0 -0
  19. data/lib/generators/templates/server_rendering_pack.js +3 -3
  20. data/lib/react/jsx/babel_transformer.rb +0 -0
  21. data/lib/react/jsx/jsx_transformer.rb +0 -0
  22. data/lib/react/jsx/processor.rb +0 -0
  23. data/lib/react/jsx/sprockets_strategy.rb +1 -1
  24. data/lib/react/jsx/template.rb +0 -0
  25. data/lib/react/jsx.rb +0 -0
  26. data/lib/react/rails/asset_variant.rb +0 -0
  27. data/lib/react/rails/component_mount.rb +7 -0
  28. data/lib/react/rails/controller_lifecycle.rb +0 -0
  29. data/lib/react/rails/controller_renderer.rb +0 -0
  30. data/lib/react/rails/railtie.rb +1 -0
  31. data/lib/react/rails/test_helper.rb +23 -0
  32. data/lib/react/rails/version.rb +1 -1
  33. data/lib/react/rails/view_helper.rb +0 -0
  34. data/lib/react/rails.rb +0 -0
  35. data/lib/react/server_rendering/bundle_renderer/console_polyfill.js +0 -0
  36. data/lib/react/server_rendering/bundle_renderer/console_replay.js +0 -0
  37. data/lib/react/server_rendering/bundle_renderer/console_reset.js +0 -0
  38. data/lib/react/server_rendering/bundle_renderer/timeout_polyfill.js +0 -0
  39. data/lib/react/server_rendering/bundle_renderer.rb +0 -0
  40. data/lib/react/server_rendering/environment_container.rb +0 -0
  41. data/lib/react/server_rendering/exec_js_renderer.rb +0 -0
  42. data/lib/react/server_rendering/manifest_container.rb +0 -0
  43. data/lib/react/server_rendering/webpacker_manifest_container.rb +4 -4
  44. data/lib/react/server_rendering/yaml_manifest_container.rb +0 -0
  45. data/lib/react/server_rendering.rb +0 -0
  46. data/lib/react-rails.rb +6 -0
  47. data/lib/react.rb +6 -4
  48. metadata +55 -12
@@ -1,507 +1 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("react"), require("react-dom"), require("react-dom/server"));
4
- else if(typeof define === 'function' && define.amd)
5
- define(["react", "react-dom", "react-dom/server"], factory);
6
- else if(typeof exports === 'object')
7
- exports["ReactRailsUJS"] = factory(require("react"), require("react-dom"), require("react-dom/server"));
8
- else
9
- root["ReactRailsUJS"] = factory(root["React"], root["ReactDOM"], root["ReactDOMServer"]);
10
- })(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_5__) {
11
- return /******/ (function(modules) { // webpackBootstrap
12
- /******/ // The module cache
13
- /******/ var installedModules = {};
14
- /******/
15
- /******/ // The require function
16
- /******/ function __webpack_require__(moduleId) {
17
- /******/
18
- /******/ // Check if module is in cache
19
- /******/ if(installedModules[moduleId]) {
20
- /******/ return installedModules[moduleId].exports;
21
- /******/ }
22
- /******/ // Create a new module (and put it into the cache)
23
- /******/ var module = installedModules[moduleId] = {
24
- /******/ i: moduleId,
25
- /******/ l: false,
26
- /******/ exports: {}
27
- /******/ };
28
- /******/
29
- /******/ // Execute the module function
30
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
- /******/
32
- /******/ // Flag the module as loaded
33
- /******/ module.l = true;
34
- /******/
35
- /******/ // Return the exports of the module
36
- /******/ return module.exports;
37
- /******/ }
38
- /******/
39
- /******/
40
- /******/ // expose the modules object (__webpack_modules__)
41
- /******/ __webpack_require__.m = modules;
42
- /******/
43
- /******/ // expose the module cache
44
- /******/ __webpack_require__.c = installedModules;
45
- /******/
46
- /******/ // identity function for calling harmony imports with the correct context
47
- /******/ __webpack_require__.i = function(value) { return value; };
48
- /******/
49
- /******/ // define getter function for harmony exports
50
- /******/ __webpack_require__.d = function(exports, name, getter) {
51
- /******/ if(!__webpack_require__.o(exports, name)) {
52
- /******/ Object.defineProperty(exports, name, {
53
- /******/ configurable: false,
54
- /******/ enumerable: true,
55
- /******/ get: getter
56
- /******/ });
57
- /******/ }
58
- /******/ };
59
- /******/
60
- /******/ // getDefaultExport function for compatibility with non-harmony modules
61
- /******/ __webpack_require__.n = function(module) {
62
- /******/ var getter = module && module.__esModule ?
63
- /******/ function getDefault() { return module['default']; } :
64
- /******/ function getModuleExports() { return module; };
65
- /******/ __webpack_require__.d(getter, 'a', getter);
66
- /******/ return getter;
67
- /******/ };
68
- /******/
69
- /******/ // Object.prototype.hasOwnProperty.call
70
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
71
- /******/
72
- /******/ // __webpack_public_path__
73
- /******/ __webpack_require__.p = "";
74
- /******/
75
- /******/ // Load entry module and return exports
76
- /******/ return __webpack_require__(__webpack_require__.s = 6);
77
- /******/ })
78
- /************************************************************************/
79
- /******/ ([
80
- /* 0 */
81
- /***/ (function(module, exports) {
82
-
83
- // Assume className is simple and can be found at top-level (window).
84
- // Fallback to eval to handle cases like 'My.React.ComponentName'.
85
- // Also, try to gracefully import Babel 6 style default exports
86
- var topLevel = typeof window === "undefined" ? this : window;
87
-
88
- module.exports = function(className) {
89
- var constructor;
90
- // Try to access the class globally first
91
- constructor = topLevel[className];
92
-
93
- // If that didn't work, try eval
94
- if (!constructor) {
95
- constructor = eval(className);
96
- }
97
-
98
- // Lastly, if there is a default attribute try that
99
- if (constructor && constructor['default']) {
100
- constructor = constructor['default'];
101
- }
102
-
103
- return constructor;
104
- }
105
-
106
-
107
- /***/ }),
108
- /* 1 */
109
- /***/ (function(module, exports, __webpack_require__) {
110
-
111
- var nativeEvents = __webpack_require__(7)
112
- var pjaxEvents = __webpack_require__(8)
113
- var turbolinksEvents = __webpack_require__(9)
114
- var turbolinksClassicDeprecatedEvents = __webpack_require__(11)
115
- var turbolinksClassicEvents = __webpack_require__(10)
116
-
117
- // see what things are globally available
118
- // and setup event handlers to those things
119
- module.exports = function(ujs) {
120
- if (ujs.handleEvent) {
121
- // We're calling this a second time -- remove previous handlers
122
- if (typeof Turbolinks !== "undefined" && typeof Turbolinks.EVENTS !== "undefined") {
123
- turbolinksClassicEvents.teardown(ujs);
124
- }
125
- turbolinksEvents.teardown(ujs);
126
- turbolinksClassicDeprecatedEvents.teardown(ujs);
127
- pjaxEvents.teardown(ujs);
128
- nativeEvents.teardown(ujs);
129
- }
130
-
131
- if ('addEventListener' in window) {
132
- ujs.handleEvent = function(eventName, callback) {
133
- document.addEventListener(eventName, callback);
134
- };
135
- ujs.removeEvent = function(eventName, callback) {
136
- document.removeEventListener(eventName, callback);
137
- };
138
- } else {
139
- ujs.handleEvent = function(eventName, callback) {
140
- window.attachEvent(eventName, callback);
141
- };
142
- ujs.removeEvent = function(eventName, callback) {
143
- window.detachEvent(eventName, callback);
144
- };
145
- }
146
-
147
- // Detect which kind of events to set up:
148
- if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
149
- if (typeof Turbolinks.EVENTS !== 'undefined') {
150
- // Turbolinks.EVENTS is in classic version 2.4.0+
151
- turbolinksClassicEvents.setup(ujs)
152
- } else if (typeof Turbolinks.controller !== "undefined") {
153
- // Turbolinks.controller is in version 5+
154
- turbolinksEvents.setup(ujs);
155
- } else {
156
- turbolinksClassicDeprecatedEvents.setup(ujs);
157
- }
158
- } else if (typeof $ !== "undefined" && typeof $.pjax === 'function') {
159
- pjaxEvents.setup(ujs);
160
- } else {
161
- nativeEvents.setup(ujs);
162
- }
163
- }
164
-
165
-
166
- /***/ }),
167
- /* 2 */
168
- /***/ (function(module, exports, __webpack_require__) {
169
-
170
- // Make a function which:
171
- // - First tries to require the name
172
- // - Then falls back to global lookup
173
- var fromGlobal = __webpack_require__(0)
174
- var fromRequireContext = __webpack_require__(12)
175
-
176
- module.exports = function(reqctx) {
177
- var fromCtx = fromRequireContext(reqctx)
178
- return function(className) {
179
- var component;
180
- try {
181
- // `require` will raise an error if this className isn't found:
182
- component = fromCtx(className)
183
- } catch (firstErr) {
184
- // fallback to global:
185
- try {
186
- component = fromGlobal(className)
187
- } catch (secondErr) {
188
- console.error(firstErr)
189
- console.error(secondErr)
190
- }
191
- }
192
- return component
193
- }
194
- }
195
-
196
-
197
- /***/ }),
198
- /* 3 */
199
- /***/ (function(module, exports) {
200
-
201
- module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
202
-
203
- /***/ }),
204
- /* 4 */
205
- /***/ (function(module, exports) {
206
-
207
- module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
208
-
209
- /***/ }),
210
- /* 5 */
211
- /***/ (function(module, exports) {
212
-
213
- module.exports = __WEBPACK_EXTERNAL_MODULE_5__;
214
-
215
- /***/ }),
216
- /* 6 */
217
- /***/ (function(module, exports, __webpack_require__) {
218
-
219
- var React = __webpack_require__(3)
220
- var ReactDOM = __webpack_require__(4)
221
- var ReactDOMServer = __webpack_require__(5)
222
-
223
- var detectEvents = __webpack_require__(1)
224
- var constructorFromGlobal = __webpack_require__(0)
225
- var constructorFromRequireContextWithGlobalFallback = __webpack_require__(2)
226
-
227
- var ReactRailsUJS = {
228
- // This attribute holds the name of component which should be mounted
229
- // example: `data-react-class="MyApp.Items.EditForm"`
230
- CLASS_NAME_ATTR: 'data-react-class',
231
-
232
- // This attribute holds JSON stringified props for initializing the component
233
- // example: `data-react-props="{\"item\": { \"id\": 1, \"name\": \"My Item\"} }"`
234
- PROPS_ATTR: 'data-react-props',
235
-
236
- // This attribute holds which method to use between: ReactDOM.hydrate, ReactDOM.render
237
- RENDER_ATTR: 'data-hydrate',
238
-
239
- // If jQuery is detected, save a reference to it for event handlers
240
- jQuery: (typeof window !== 'undefined') && (typeof window.jQuery !== 'undefined') && window.jQuery,
241
-
242
- // helper method for the mount and unmount methods to find the
243
- // `data-react-class` DOM elements
244
- findDOMNodes: function(searchSelector) {
245
- var classNameAttr = ReactRailsUJS.CLASS_NAME_ATTR
246
- // we will use fully qualified paths as we do not bind the callbacks
247
- var selector, parent;
248
-
249
- switch (typeof searchSelector) {
250
- case 'undefined':
251
- selector = '[' + classNameAttr + ']';
252
- parent = document;
253
- break;
254
- case 'object':
255
- selector = '[' + classNameAttr + ']';
256
- parent = searchSelector;
257
- break;
258
- case 'string':
259
- selector = searchSelector + '[' + classNameAttr + '], ' +
260
- searchSelector + ' [' + classNameAttr + ']';
261
- parent = document;
262
- break
263
- default:
264
- break;
265
- }
266
-
267
- if (ReactRailsUJS.jQuery) {
268
- return ReactRailsUJS.jQuery(selector, parent);
269
- } else {
270
- return parent.querySelectorAll(selector);
271
- }
272
- },
273
-
274
- // Get the constructor for a className (returns a React class)
275
- // Override this function to lookup classes in a custom way,
276
- // the default is ReactRailsUJS.ComponentGlobal
277
- getConstructor: constructorFromGlobal,
278
-
279
- // Given a Webpack `require.context`,
280
- // try finding components with `require`,
281
- // then falling back to global lookup.
282
- useContext: function(requireContext) {
283
- this.getConstructor = constructorFromRequireContextWithGlobalFallback(requireContext)
284
- },
285
-
286
- // Render `componentName` with `props` to a string,
287
- // using the specified `renderFunction` from `react-dom/server`.
288
- serverRender: function(renderFunction, componentName, props) {
289
- var componentClass = this.getConstructor(componentName)
290
- var element = React.createElement(componentClass, props)
291
- return ReactDOMServer[renderFunction](element)
292
- },
293
-
294
- // Within `searchSelector`, find nodes which should have React components
295
- // inside them, and mount them with their props.
296
- mountComponents: function(searchSelector) {
297
- var ujs = ReactRailsUJS
298
- var nodes = ujs.findDOMNodes(searchSelector);
299
-
300
- for (var i = 0; i < nodes.length; ++i) {
301
- var node = nodes[i];
302
- var className = node.getAttribute(ujs.CLASS_NAME_ATTR);
303
- var constructor = ujs.getConstructor(className);
304
- var propsJson = node.getAttribute(ujs.PROPS_ATTR);
305
- var props = propsJson && JSON.parse(propsJson);
306
- var hydrate = node.getAttribute(ujs.RENDER_ATTR);
307
-
308
- if (!constructor) {
309
- var message = "Cannot find component: '" + className + "'"
310
- if (console && console.log) {
311
- console.log("%c[react-rails] %c" + message + " for element", "font-weight: bold", "", node)
312
- }
313
- throw new Error(message + ". Make sure your component is available to render.")
314
- } else {
315
- if (hydrate && typeof ReactDOM.hydrate === "function") {
316
- ReactDOM.hydrate(React.createElement(constructor, props), node);
317
- } else {
318
- ReactDOM.render(React.createElement(constructor, props), node);
319
- }
320
- }
321
- }
322
- },
323
-
324
- // Within `searchSelector`, find nodes which have React components
325
- // inside them, and unmount those components.
326
- unmountComponents: function(searchSelector) {
327
- var nodes = ReactRailsUJS.findDOMNodes(searchSelector);
328
-
329
- for (var i = 0; i < nodes.length; ++i) {
330
- var node = nodes[i];
331
- ReactDOM.unmountComponentAtNode(node);
332
- }
333
- },
334
-
335
- // Check the global context for installed libraries
336
- // and figure out which library to hook up to (pjax, Turbolinks, jQuery)
337
- // This is called on load, but you can call it again if needed
338
- // (It will unmount itself)
339
- detectEvents: function() {
340
- detectEvents(this)
341
- },
342
- }
343
-
344
- // These stable references are so that handlers can be added and removed:
345
- ReactRailsUJS.handleMount = function(e) {
346
- var target = undefined;
347
- if (e && e.target) {
348
- target = e.target;
349
- }
350
- ReactRailsUJS.mountComponents(target);
351
- }
352
- ReactRailsUJS.handleUnmount = function(e) {
353
- var target = undefined;
354
- if (e && e.target) {
355
- target = e.target;
356
- }
357
- ReactRailsUJS.unmountComponents(target);
358
- }
359
-
360
-
361
- if (typeof window !== "undefined") {
362
- // Only setup events for browser (not server-rendering)
363
- ReactRailsUJS.detectEvents()
364
- }
365
-
366
- // It's a bit of a no-no to populate the global namespace,
367
- // but we really need it!
368
- // We need access to this object for server rendering, and
369
- // we can't do a dynamic `require`, so we'll grab it from here:
370
- self.ReactRailsUJS = ReactRailsUJS
371
-
372
- module.exports = ReactRailsUJS
373
-
374
-
375
- /***/ }),
376
- /* 7 */
377
- /***/ (function(module, exports) {
378
-
379
- module.exports = {
380
- // Attach handlers to browser events to mount
381
- // (There are no unmount handlers since the page is destroyed on navigation)
382
- setup: function(ujs) {
383
- if ('addEventListener' in window) {
384
- ujs.handleEvent('DOMContentLoaded', ujs.handleMount);
385
- } else {
386
- // add support to IE8 without jQuery
387
- ujs.handleEvent('onload', ujs.handleMount);
388
- }
389
- },
390
-
391
- teardown: function(ujs) {
392
- ujs.removeEvent('DOMContentLoaded', ujs.handleMount);
393
- ujs.removeEvent('onload', ujs.handleMount);
394
- }
395
- }
396
-
397
-
398
- /***/ }),
399
- /* 8 */
400
- /***/ (function(module, exports) {
401
-
402
- module.exports = {
403
- // pjax support
404
- setup: function(ujs) {
405
- ujs.handleEvent('ready', ujs.handleMount);
406
- ujs.handleEvent('pjax:end', ujs.handleMount);
407
- ujs.handleEvent('pjax:beforeReplace', ujs.handleUnmount);
408
- },
409
-
410
- teardown: function(ujs) {
411
- ujs.removeEvent('ready', ujs.handleMount);
412
- ujs.removeEvent('pjax:end', ujs.handleMount);
413
- ujs.removeEvent('pjax:beforeReplace', ujs.handleUnmount);
414
- },
415
- }
416
-
417
-
418
- /***/ }),
419
- /* 9 */
420
- /***/ (function(module, exports) {
421
-
422
- module.exports = {
423
- // Turbolinks 5+ got rid of named events (?!)
424
- setup: function(ujs) {
425
- ujs.handleEvent('turbolinks:load', ujs.handleMount)
426
- ujs.handleEvent('turbolinks:before-render', ujs.handleUnmount)
427
- },
428
-
429
- teardown: function(ujs) {
430
- ujs.removeEvent('turbolinks:load', ujs.handleMount)
431
- ujs.removeEvent('turbolinks:before-render', ujs.handleUnmount)
432
- },
433
- }
434
-
435
-
436
- /***/ }),
437
- /* 10 */
438
- /***/ (function(module, exports) {
439
-
440
- module.exports = {
441
- // Attach handlers to Turbolinks-Classic events
442
- // for mounting and unmounting components
443
- setup: function(ujs) {
444
- ujs.handleEvent(Turbolinks.EVENTS.CHANGE, ujs.handleMount);
445
- ujs.handleEvent(Turbolinks.EVENTS.BEFORE_UNLOAD, ujs.handleUnmount);
446
- },
447
- teardown: function(ujs) {
448
- ujs.removeEvent(Turbolinks.EVENTS.CHANGE, ujs.handleMount);
449
- ujs.removeEvent(Turbolinks.EVENTS.BEFORE_UNLOAD, ujs.handleUnmount);
450
- }
451
- }
452
-
453
-
454
- /***/ }),
455
- /* 11 */
456
- /***/ (function(module, exports) {
457
-
458
- module.exports = {
459
- // Before Turbolinks 2.4.0, Turbolinks didn't
460
- // have named events and didn't have a before-unload event.
461
- // Also, it didn't work with the Turbolinks cache, see
462
- // https://github.com/reactjs/react-rails/issues/87
463
- setup: function(ujs) {
464
- Turbolinks.pagesCached(0)
465
- ujs.handleEvent('page:change', ujs.handleMount);
466
- ujs.handleEvent('page:receive', ujs.handleUnmount);
467
- },
468
- teardown: function(ujs) {
469
- ujs.removeEvent('page:change', ujs.handleMount);
470
- ujs.removeEvent('page:receive', ujs.handleUnmount);
471
- }
472
- }
473
-
474
-
475
- /***/ }),
476
- /* 12 */
477
- /***/ (function(module, exports) {
478
-
479
- // Load React components by requiring them from "components/", for example:
480
- //
481
- // - "pages/index" -> `require("components/pages/index")`
482
- // - "pages/show.Header" -> `require("components/pages/show").Header`
483
- // - "pages/show.Body.Content" -> `require("components/pages/show").Body.Content`
484
- //
485
- module.exports = function(reqctx) {
486
- return function(className) {
487
- var parts = className.split(".")
488
- var filename = parts.shift()
489
- var keys = parts
490
- // Load the module:
491
- var component = reqctx("./" + filename)
492
- // Then access each key:
493
- keys.forEach(function(k) {
494
- component = component[k]
495
- })
496
- // support `export default`
497
- if (component.__esModule) {
498
- component = component["default"]
499
- }
500
- return component
501
- }
502
- }
503
-
504
-
505
- /***/ })
506
- /******/ ]);
507
- });
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),_=n(39);const{supportsHydration:s,reactHydrate:l,createReactRootLike:p}=n(198);var 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:{},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=_(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),_=a.getAttribute(t.RENDER_ATTR),f=a.getAttribute(t.CACHE_ID_ATTR),E=a.hasAttribute(t.TURBOLINKS_PERMANENT_ATTR);if(!c){var h="Cannot find component: '"+u+"'";throw console&&console.log&&console.log("%c[react-rails] %c"+h+" for element","font-weight: bold","",a),new Error(h+". Make sure your component is available to render.")}var m=this.components[f];void 0===m&&(m=o.createElement(c,i),E&&(this.components[f]=m)),m=_&&s()?l(a,m):p(a).render(m)}},unmountComponents:function(e){for(var t=v.findDOMNodes(e),n=0;n<t.length;++n){var o=t[n];r.unmountComponentAtNode(o)}},detectEvents:function(){u(this)},handleMount:function(e){var t=void 0;e&&e.target&&(t=e.target),v.mountComponents(t)},handleUnmount:function(e){var t=void 0;e&&e.target&&(t=e.target),v.unmountComponents(t)}};"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:()=>i,reactHydrate:()=>d,supportsHydration:()=>c});var o=n(156),r=n.n(o);let a=r();if(void 0!==r()&&(r().version.split(".")[0]||16)>=18)try{a=n(Object(function(){var e=new Error("Cannot find module 'react-dom/client'");throw e.code="MODULE_NOT_FOUND",e}()))}catch(e){a=r()}const u=a;function c(){return"function"==typeof u.hydrate||"function"==typeof u.hydrateRoot}function d(e,t){return"function"==typeof u.hydrateRoot?u.hydrateRoot(e,t):u.hydrate(t,e)}function i(e){return u.createRoot?u.createRoot(e):function(e){return{render:t=>u.render(t,e)}}(e)}},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__})()));