react-rails 2.7.0.rc.0 → 2.7.0.rc.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34e2141d97fafdc9f052046cca1b328162c2e629c5a766ee446280db9ce2ca76
4
- data.tar.gz: 42f9d30392a3c215f2e9e97cd837437ad5051b9de694b557ff73a508143c0204
3
+ metadata.gz: 62aac1b130be2ccd36d0412fb3078560c38daccdb08dcb88fb85a55f0abe4e45
4
+ data.tar.gz: a047ab347feba6ed50cebab0b08e0b2f2e717f87e05ca9041eb8a47f8671fa06
5
5
  SHA512:
6
- metadata.gz: 8da70ab5914716f3f5679aaaa2881085232537b35ab76fa1a0a8c3f540738730e55820f3e94ff8d91dd53005395c7b307ca6ad152fd3f9b5b6fdf823b400f0d1
7
- data.tar.gz: 9dab395f855aae1468910bc91dd8c8edbd23fd5e508ade3623f5b71a82c88d81abe9c60aa1b8516241bbe823f651f215d94edb527b522c07e0b79193d9a1cba3
6
+ metadata.gz: a581433841efb1b1fc11d11c928eb87c5d86e52837ce0076fe75fbdae37f5bf5943b4cdd935a94a1207f463cad7ab36edaa98dc6b6e5ee7897359da1fba07664
7
+ data.tar.gz: ae92fb8ae8d1a84204ef0cc6b61141032479bd6562f3658fdf44efbfda91dea8eac09528a7f3d58af4814050172a831abb87c101175774b1073dadc006933116
data/README.md CHANGED
@@ -2,9 +2,12 @@
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
- [![Ruby](https://github.com/reactjs/react-rails/actions/workflows/ruby.yml/badge.svg)](https://github.com/reactjs/react-rails/actions/workflows/ruby.yml)[![Maintainers Wanted](https://img.shields.io/badge/Maintainers-Wanted-red.svg?style=flat-square)]()
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
+ ## News
8
+ v2.7.0.rc.0 is out on [Ruby Gems](https://rubygems.org/gems/react-rails/versions/2.7.0.rc.0) and [NPM](https://www.npmjs.com/package/react_ujs/v/2.7.0-rc.0). Please try it out!
7
9
 
10
+ ## Summary
8
11
  React-Rails is a flexible tool to use [React](http://facebook.github.io/react/) with Rails. The benefits:
9
12
  * Automatically renders React server-side and client-side
10
13
  * Supports Webpacker 4.x, 3.x, 2.x, 1.1+ or Shakapacker v6+
@@ -1,568 +1 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("react-dom"), require("react"), require("react-dom/server"));
4
- else if(typeof define === 'function' && define.amd)
5
- define(["react-dom", "react", "react-dom/server"], factory);
6
- else if(typeof exports === 'object')
7
- exports["ReactRailsUJS"] = factory(require("react-dom"), require("react"), require("react-dom/server"));
8
- else
9
- root["ReactRailsUJS"] = factory(root["ReactDOM"], root["React"], root["ReactDOMServer"]);
10
- })(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_6__, __WEBPACK_EXTERNAL_MODULE_7__) {
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 = 8);
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) {
110
-
111
- // Load React components by requiring them from "components/", for example:
112
- //
113
- // - "pages/index" -> `require("components/pages/index")`
114
- // - "pages/show.Header" -> `require("components/pages/show").Header`
115
- // - "pages/show.Body.Content" -> `require("components/pages/show").Body.Content`
116
- //
117
- module.exports = function(reqctx) {
118
- return function(className) {
119
- var parts = className.split(".")
120
- var filename = parts.shift()
121
- var keys = parts
122
- // Load the module:
123
- var component = reqctx("./" + filename)
124
- // Then access each key:
125
- keys.forEach(function(k) {
126
- component = component[k]
127
- })
128
- // support `export default`
129
- if (component.__esModule) {
130
- component = component["default"]
131
- }
132
- return component
133
- }
134
- }
135
-
136
-
137
- /***/ }),
138
- /* 2 */
139
- /***/ (function(module, exports) {
140
-
141
- module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
142
-
143
- /***/ }),
144
- /* 3 */
145
- /***/ (function(module, exports, __webpack_require__) {
146
-
147
- var nativeEvents = __webpack_require__(9)
148
- var pjaxEvents = __webpack_require__(10)
149
- var turbolinksEvents = __webpack_require__(11)
150
- var turbolinksClassicDeprecatedEvents = __webpack_require__(13)
151
- var turbolinksClassicEvents = __webpack_require__(12)
152
-
153
- // see what things are globally available
154
- // and setup event handlers to those things
155
- module.exports = function(ujs) {
156
- if (ujs.handleEvent) {
157
- // We're calling this a second time -- remove previous handlers
158
- if (typeof Turbolinks !== "undefined" && typeof Turbolinks.EVENTS !== "undefined") {
159
- turbolinksClassicEvents.teardown(ujs);
160
- }
161
- turbolinksEvents.teardown(ujs);
162
- turbolinksClassicDeprecatedEvents.teardown(ujs);
163
- pjaxEvents.teardown(ujs);
164
- nativeEvents.teardown(ujs);
165
- }
166
-
167
- if ('addEventListener' in window) {
168
- ujs.handleEvent = function(eventName, callback) {
169
- document.addEventListener(eventName, callback);
170
- };
171
- ujs.removeEvent = function(eventName, callback) {
172
- document.removeEventListener(eventName, callback);
173
- };
174
- } else {
175
- ujs.handleEvent = function(eventName, callback) {
176
- window.attachEvent(eventName, callback);
177
- };
178
- ujs.removeEvent = function(eventName, callback) {
179
- window.detachEvent(eventName, callback);
180
- };
181
- }
182
-
183
- // Detect which kind of events to set up:
184
- if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
185
- if (typeof Turbolinks.EVENTS !== 'undefined') {
186
- // Turbolinks.EVENTS is in classic version 2.4.0+
187
- turbolinksClassicEvents.setup(ujs)
188
- } else if (typeof Turbolinks.controller !== "undefined") {
189
- // Turbolinks.controller is in version 5+
190
- turbolinksEvents.setup(ujs);
191
- } else {
192
- turbolinksClassicDeprecatedEvents.setup(ujs);
193
- }
194
- } else if (typeof $ !== "undefined" && typeof $.pjax === 'function') {
195
- pjaxEvents.setup(ujs);
196
- } else {
197
- nativeEvents.setup(ujs);
198
- }
199
- }
200
-
201
-
202
- /***/ }),
203
- /* 4 */
204
- /***/ (function(module, exports, __webpack_require__) {
205
-
206
- // Make a function which:
207
- // - First tries to require the name
208
- // - Then falls back to global lookup
209
- var fromGlobal = __webpack_require__(0)
210
- var fromRequireContext = __webpack_require__(1)
211
-
212
- module.exports = function(reqctx) {
213
- var fromCtx = fromRequireContext(reqctx)
214
- return function(className) {
215
- var component;
216
- try {
217
- // `require` will raise an error if this className isn't found:
218
- component = fromCtx(className)
219
- } catch (firstErr) {
220
- // fallback to global:
221
- try {
222
- component = fromGlobal(className)
223
- } catch (secondErr) {
224
- console.error(firstErr)
225
- console.error(secondErr)
226
- }
227
- }
228
- return component
229
- }
230
- }
231
-
232
-
233
- /***/ }),
234
- /* 5 */
235
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
236
-
237
- "use strict";
238
- Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
239
- /* harmony export (immutable) */ __webpack_exports__["supportsHydration"] = supportsHydration;
240
- /* harmony export (immutable) */ __webpack_exports__["reactHydrate"] = reactHydrate;
241
- /* harmony export (immutable) */ __webpack_exports__["createReactRootLike"] = createReactRootLike;
242
- const ReactDOM = __webpack_require__(2)
243
-
244
- function supportsHydration() {
245
- return typeof ReactDOM.hydrate === "function" || typeof ReactDOM.hydrateRoot === "function"
246
- }
247
-
248
- function reactHydrate(node, component) {
249
- if (typeof ReactDOM.hydrateRoot === "function") {
250
- return ReactDOM.hydrateRoot(node, component)
251
- } else {
252
- return ReactDOM.hydrate(component, node)
253
- }
254
- }
255
-
256
- function createReactRootLike(node) {
257
- return ReactDOM.createRoot ? ReactDOM.createRoot(node) : legacyReactRootLike(node)
258
- }
259
-
260
- function legacyReactRootLike(node) {
261
- const root = {
262
- render(component) {
263
- return ReactDOM.render(component, node)
264
- }
265
- }
266
- return root
267
- }
268
-
269
-
270
- /***/ }),
271
- /* 6 */
272
- /***/ (function(module, exports) {
273
-
274
- module.exports = __WEBPACK_EXTERNAL_MODULE_6__;
275
-
276
- /***/ }),
277
- /* 7 */
278
- /***/ (function(module, exports) {
279
-
280
- module.exports = __WEBPACK_EXTERNAL_MODULE_7__;
281
-
282
- /***/ }),
283
- /* 8 */
284
- /***/ (function(module, exports, __webpack_require__) {
285
-
286
- var React = __webpack_require__(6)
287
- var ReactDOM = __webpack_require__(2)
288
- var ReactDOMServer = __webpack_require__(7)
289
-
290
- var detectEvents = __webpack_require__(3)
291
- var constructorFromGlobal = __webpack_require__(0)
292
- var constructorFromRequireContext = __webpack_require__(1)
293
- var constructorFromRequireContextWithGlobalFallback = __webpack_require__(4)
294
- const { supportsHydration, reactHydrate, createReactRootLike } = __webpack_require__(5)
295
-
296
- var ReactRailsUJS = {
297
- // This attribute holds the name of component which should be mounted
298
- // example: `data-react-class="MyApp.Items.EditForm"`
299
- CLASS_NAME_ATTR: 'data-react-class',
300
-
301
- // This attribute holds JSON stringified props for initializing the component
302
- // example: `data-react-props="{\"item\": { \"id\": 1, \"name\": \"My Item\"} }"`
303
- PROPS_ATTR: 'data-react-props',
304
-
305
- // This attribute holds which method to use between: ReactDOM.hydrate, ReactDOM.render
306
- RENDER_ATTR: 'data-hydrate',
307
-
308
- // A unique identifier to identify a node
309
- CACHE_ID_ATTR: "data-react-cache-id",
310
-
311
- TURBOLINKS_PERMANENT_ATTR: "data-turbolinks-permanent",
312
-
313
- // If jQuery is detected, save a reference to it for event handlers
314
- jQuery: (typeof window !== 'undefined') && (typeof window.jQuery !== 'undefined') && window.jQuery,
315
-
316
- components: {},
317
-
318
- // helper method for the mount and unmount methods to find the
319
- // `data-react-class` DOM elements
320
- findDOMNodes: function(searchSelector) {
321
- var classNameAttr = ReactRailsUJS.CLASS_NAME_ATTR
322
- // we will use fully qualified paths as we do not bind the callbacks
323
- var selector, parent;
324
-
325
- switch (typeof searchSelector) {
326
- case 'undefined':
327
- selector = '[' + classNameAttr + ']';
328
- parent = document;
329
- break;
330
- case 'object':
331
- selector = '[' + classNameAttr + ']';
332
- parent = searchSelector;
333
- break;
334
- case 'string':
335
- selector = searchSelector + '[' + classNameAttr + '], ' +
336
- searchSelector + ' [' + classNameAttr + ']';
337
- parent = document;
338
- break
339
- default:
340
- break;
341
- }
342
-
343
- if (ReactRailsUJS.jQuery) {
344
- return ReactRailsUJS.jQuery(selector, parent);
345
- } else {
346
- return parent.querySelectorAll(selector);
347
- }
348
- },
349
-
350
- // Get the constructor for a className (returns a React class)
351
- // Override this function to lookup classes in a custom way,
352
- // the default is ReactRailsUJS.ComponentGlobal
353
- getConstructor: constructorFromGlobal,
354
-
355
- // Available for customizing `getConstructor`
356
- constructorFromGlobal: constructorFromGlobal,
357
- constructorFromRequireContext: constructorFromRequireContext,
358
- constructorFromRequireContextWithGlobalFallback: constructorFromRequireContextWithGlobalFallback,
359
-
360
- // Given a Webpack `require.context`,
361
- // try finding components with `require`,
362
- // then falling back to global lookup.
363
- useContext: function(requireContext) {
364
- this.getConstructor = constructorFromRequireContextWithGlobalFallback(requireContext)
365
- },
366
-
367
- // Render `componentName` with `props` to a string,
368
- // using the specified `renderFunction` from `react-dom/server`.
369
- serverRender: function(renderFunction, componentName, props) {
370
- var componentClass = this.getConstructor(componentName)
371
- var element = React.createElement(componentClass, props)
372
- return ReactDOMServer[renderFunction](element)
373
- },
374
-
375
- // Within `searchSelector`, find nodes which should have React components
376
- // inside them, and mount them with their props.
377
- mountComponents: function(searchSelector) {
378
- var ujs = ReactRailsUJS
379
- var nodes = ujs.findDOMNodes(searchSelector);
380
-
381
- for (var i = 0; i < nodes.length; ++i) {
382
- var node = nodes[i];
383
- var className = node.getAttribute(ujs.CLASS_NAME_ATTR);
384
- var constructor = ujs.getConstructor(className);
385
- var propsJson = node.getAttribute(ujs.PROPS_ATTR);
386
- var props = propsJson && JSON.parse(propsJson);
387
- var hydrate = node.getAttribute(ujs.RENDER_ATTR);
388
- var cacheId = node.getAttribute(ujs.CACHE_ID_ATTR);
389
- var turbolinksPermanent = node.hasAttribute(ujs.TURBOLINKS_PERMANENT_ATTR);
390
-
391
- if (!constructor) {
392
- var message = "Cannot find component: '" + className + "'"
393
- if (console && console.log) {
394
- console.log("%c[react-rails] %c" + message + " for element", "font-weight: bold", "", node)
395
- }
396
- throw new Error(message + ". Make sure your component is available to render.")
397
- } else {
398
- var component = this.components[cacheId];
399
- if(component === undefined) {
400
- component = React.createElement(constructor, props);
401
- if(turbolinksPermanent) {
402
- this.components[cacheId] = component;
403
- }
404
- }
405
-
406
- if (hydrate && supportsHydration()) {
407
- component = reactHydrate(node, component);
408
- } else {
409
- const root = createReactRootLike(node)
410
- component = root.render(component);
411
- }
412
- }
413
- }
414
- },
415
-
416
- // Within `searchSelector`, find nodes which have React components
417
- // inside them, and unmount those components.
418
- unmountComponents: function(searchSelector) {
419
- var nodes = ReactRailsUJS.findDOMNodes(searchSelector);
420
-
421
- for (var i = 0; i < nodes.length; ++i) {
422
- var node = nodes[i];
423
- ReactDOM.unmountComponentAtNode(node);
424
- }
425
- },
426
-
427
- // Check the global context for installed libraries
428
- // and figure out which library to hook up to (pjax, Turbolinks, jQuery)
429
- // This is called on load, but you can call it again if needed
430
- // (It will unmount itself)
431
- detectEvents: function() {
432
- detectEvents(this)
433
- },
434
-
435
- }
436
-
437
- // These stable references are so that handlers can be added and removed:
438
- ReactRailsUJS.handleMount = function(e) {
439
- var target = undefined;
440
- if (e && e.target) {
441
- target = e.target;
442
- }
443
- ReactRailsUJS.mountComponents(target);
444
- }
445
- ReactRailsUJS.handleUnmount = function(e) {
446
- var target = undefined;
447
- if (e && e.target) {
448
- target = e.target;
449
- }
450
- ReactRailsUJS.unmountComponents(target);
451
- }
452
-
453
-
454
- if (typeof window !== "undefined") {
455
- // Only setup events for browser (not server-rendering)
456
- ReactRailsUJS.detectEvents()
457
- }
458
-
459
- // It's a bit of a no-no to populate the global namespace,
460
- // but we really need it!
461
- // We need access to this object for server rendering, and
462
- // we can't do a dynamic `require`, so we'll grab it from here:
463
- self.ReactRailsUJS = ReactRailsUJS
464
-
465
- module.exports = ReactRailsUJS
466
-
467
-
468
- /***/ }),
469
- /* 9 */
470
- /***/ (function(module, exports) {
471
-
472
- module.exports = {
473
- // Attach handlers to browser events to mount
474
- // (There are no unmount handlers since the page is destroyed on navigation)
475
- setup: function(ujs) {
476
- if ('addEventListener' in window) {
477
- ujs.handleEvent('DOMContentLoaded', ujs.handleMount);
478
- } else {
479
- // add support to IE8 without jQuery
480
- ujs.handleEvent('onload', ujs.handleMount);
481
- }
482
- },
483
-
484
- teardown: function(ujs) {
485
- ujs.removeEvent('DOMContentLoaded', ujs.handleMount);
486
- ujs.removeEvent('onload', ujs.handleMount);
487
- }
488
- }
489
-
490
-
491
- /***/ }),
492
- /* 10 */
493
- /***/ (function(module, exports) {
494
-
495
- module.exports = {
496
- // pjax support
497
- setup: function(ujs) {
498
- ujs.handleEvent('ready', ujs.handleMount);
499
- ujs.handleEvent('pjax:end', ujs.handleMount);
500
- ujs.handleEvent('pjax:beforeReplace', ujs.handleUnmount);
501
- },
502
-
503
- teardown: function(ujs) {
504
- ujs.removeEvent('ready', ujs.handleMount);
505
- ujs.removeEvent('pjax:end', ujs.handleMount);
506
- ujs.removeEvent('pjax:beforeReplace', ujs.handleUnmount);
507
- },
508
- }
509
-
510
-
511
- /***/ }),
512
- /* 11 */
513
- /***/ (function(module, exports) {
514
-
515
- module.exports = {
516
- // Turbolinks 5+ got rid of named events (?!)
517
- setup: function(ujs) {
518
- ujs.handleEvent('turbolinks:load', ujs.handleMount);
519
- },
520
-
521
- teardown: function(ujs) {
522
- ujs.removeEvent('turbolinks:load', ujs.handleMount);
523
- },
524
- }
525
-
526
-
527
- /***/ }),
528
- /* 12 */
529
- /***/ (function(module, exports) {
530
-
531
- module.exports = {
532
- // Attach handlers to Turbolinks-Classic events
533
- // for mounting and unmounting components
534
- setup: function(ujs) {
535
- ujs.handleEvent(Turbolinks.EVENTS.CHANGE, ujs.handleMount);
536
- ujs.handleEvent(Turbolinks.EVENTS.BEFORE_UNLOAD, ujs.handleUnmount);
537
- },
538
- teardown: function(ujs) {
539
- ujs.removeEvent(Turbolinks.EVENTS.CHANGE, ujs.handleMount);
540
- ujs.removeEvent(Turbolinks.EVENTS.BEFORE_UNLOAD, ujs.handleUnmount);
541
- }
542
- }
543
-
544
-
545
- /***/ }),
546
- /* 13 */
547
- /***/ (function(module, exports) {
548
-
549
- module.exports = {
550
- // Before Turbolinks 2.4.0, Turbolinks didn't
551
- // have named events and didn't have a before-unload event.
552
- // Also, it didn't work with the Turbolinks cache, see
553
- // https://github.com/reactjs/react-rails/issues/87
554
- setup: function(ujs) {
555
- Turbolinks.pagesCached(0)
556
- ujs.handleEvent('page:change', ujs.handleMount);
557
- ujs.handleEvent('page:receive', ujs.handleUnmount);
558
- },
559
- teardown: function(ujs) {
560
- ujs.removeEvent('page:change', ujs.handleMount);
561
- ujs.removeEvent('page:receive', ujs.handleUnmount);
562
- }
563
- }
564
-
565
-
566
- /***/ })
567
- /******/ ]);
568
- });
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),_=n(37),i=n(39);const{supportsHydration:s,reactHydrate:l,createReactRootLike:p}=n(244);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:_,useContext:function(e){this.getConstructor=_(e)},useContexts:function(e){this.getConstructor=i(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),_=d&&JSON.parse(d),i=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,_),E&&(this.components[f]=m)),m=i&&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}}},244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createReactRootLike:()=>c,reactHydrate:()=>u,supportsHydration:()=>a});var o=n(156),r=n.n(o);function a(){return"function"==typeof r().hydrate||"function"==typeof r().hydrateRoot}function u(e,t){return"function"==typeof r().hydrateRoot?r().hydrateRoot(e,t):r().hydrate(t,e)}function c(e){return r().createRoot?r().createRoot(e):function(e){return{render:t=>r().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__})()));