unpoly-rails 2.7.2.2 → 3.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +96 -52
- data/assets/unpoly/unpoly-bootstrap3.js +10 -8
- data/assets/unpoly/unpoly-bootstrap3.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap4.js +10 -8
- data/assets/unpoly/unpoly-bootstrap4.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap5.js +9 -7
- data/assets/unpoly/unpoly-bootstrap5.min.js +1 -1
- data/assets/unpoly/unpoly-migrate.js +448 -350
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +223 -337
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +3105 -2282
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/change/cache.rb +14 -2
- data/lib/unpoly/rails/change/field.rb +52 -14
- data/lib/unpoly/rails/change/field_definition.rb +42 -4
- data/lib/unpoly/rails/change/layer.rb +3 -3
- data/lib/unpoly/rails/change.rb +106 -58
- data/lib/unpoly/rails/controller.rb +6 -4
- data/lib/unpoly/rails/engine.rb +1 -1
- data/lib/unpoly/rails/request_echo_headers.rb +2 -6
- data/lib/unpoly/rails/version.rb +1 -1
- data/lib/unpoly-rails.rb +0 -1
- metadata +4 -7
- data/assets/unpoly/unpoly.es5.js +0 -11181
- data/assets/unpoly/unpoly.es5.min.js +0 -1
- data/lib/unpoly/rails/util.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dd03173a9608fd149bb8169aab86440421c0dc4ce3d3709857cf4196a35c817
|
4
|
+
data.tar.gz: a424e2dbb80879bd5d291a627e74b8b75e7c4bd31ca7708287e77792c7f0aead
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 993b1979ccff04c25fb4ea0b64ca071d25333e858723e560b5f9e9209dc2a4f4c1aa0c7bda6c76b2020c4edcf9f9672743d2f97608327be68e18005303cc2770
|
7
|
+
data.tar.gz: d85796e74cf2520c9e7d1f4aea33b14ee25002b5b92fd0d2671fb8d2b5c77ae1a1af4f29e2d3950f593d21e7fbee60c37aafa361d94e379b5116abb772f210a3
|
data/README.md
CHANGED
@@ -5,6 +5,10 @@ unpoly-rails: Ruby on Rails bindings for Unpoly
|
|
5
5
|
|
6
6
|
The `unpoly-rails` gem helps integrating Unpoly with [Ruby on Rails](https://rubyonrails.org/) applications.
|
7
7
|
|
8
|
+
This branch tracks the next major version, Unpoly **3.x**.\
|
9
|
+
If you're using Unpoly **2.x**, use the [`2.x-stable`](https://github.com/unpoly/unpoly-rails/tree/2.x-stable) branch.\
|
10
|
+
If you're using Unpoly **1.x** or **0.x**, use the [`1.x-stable`](https://github.com/unpoly/unpoly/tree/1.x-stable/lib/unpoly/rails) branch in the [`unpoly`](https://github.com/unpoly/unpoly-rails/tree/2.x-stable) repository.
|
11
|
+
|
8
12
|
|
9
13
|
Installing the gem
|
10
14
|
------------------
|
@@ -21,9 +25,9 @@ Now run `bundle install` and restart your development server.
|
|
21
25
|
Installing frontend assets
|
22
26
|
--------------------------
|
23
27
|
|
24
|
-
### With Webpacker
|
28
|
+
### With esbuild or Webpacker
|
25
29
|
|
26
|
-
If you're using [Webpacker](https://edgeguides.rubyonrails.org/webpacker.html), install the [`unpoly` npm package](https://unpoly.com/install/npm) to get Unpoly's frontend files.
|
30
|
+
If you're using [esbuild](https://esbuild.github.io/) or [Webpacker](https://edgeguides.rubyonrails.org/webpacker.html), install the [`unpoly` npm package](https://unpoly.com/install/npm) to get Unpoly's frontend files.
|
27
31
|
|
28
32
|
Now `import` Unpoly from your `application.js` pack:
|
29
33
|
|
@@ -109,7 +113,7 @@ The frontend will use the server-provided target for both successful (HTTP statu
|
|
109
113
|
|
110
114
|
Sometimes it's OK to render nothing, e.g. when you know that the current layer is to be closed.
|
111
115
|
|
112
|
-
In this case
|
116
|
+
In this case use `head(:no_content)`:
|
113
117
|
|
114
118
|
```ruby
|
115
119
|
class NotesController < ApplicationController
|
@@ -118,7 +122,7 @@ class NotesController < ApplicationController
|
|
118
122
|
if @note.save
|
119
123
|
if up.layer.overlay?
|
120
124
|
up.accept_layer(@note.id)
|
121
|
-
|
125
|
+
head :no_content
|
122
126
|
else
|
123
127
|
redirect_to @note
|
124
128
|
end
|
@@ -127,14 +131,6 @@ class NotesController < ApplicationController
|
|
127
131
|
end
|
128
132
|
```
|
129
133
|
|
130
|
-
This will render a 200 OK response with a header `X-Up-Target: none` and an empty body.
|
131
|
-
|
132
|
-
You may render nothing with a different HTTP status by passing a `:status` option:
|
133
|
-
|
134
|
-
```ruby
|
135
|
-
up.render_nothing(status: :bad_request)
|
136
|
-
```
|
137
|
-
|
138
134
|
|
139
135
|
### Pushing a document title to the client
|
140
136
|
|
@@ -205,41 +201,39 @@ class UsersController < ApplicationController
|
|
205
201
|
end
|
206
202
|
```
|
207
203
|
|
208
|
-
|
209
|
-
|
210
|
-
To test whether the current request was made to [reload](https://unpoly.com/up.reload) or [poll](https://unpoly.com/up-poll) a fragment:
|
204
|
+
You may also access the [names of the fields that triggered the validation request](https://unpoly.com/X-Up-Validate):
|
211
205
|
|
212
206
|
```ruby
|
213
|
-
up.
|
207
|
+
up.validate_names # => ['email', 'password']
|
214
208
|
```
|
215
209
|
|
216
|
-
You also retrieve the time when the fragment being reloaded was previously inserted into the DOM:
|
217
210
|
|
218
|
-
|
219
|
-
|
220
|
-
|
211
|
+
### Detecting a fragment reload
|
212
|
+
|
213
|
+
When Unpoly [reloads](https://unpoly.com/up.reload) or [polls](https://unpoly.com/up-poll) a fragment, the server will often render the same HTML. You can configure your controller actions to only render HTML if the underlying content changed since an earlier request.
|
214
|
+
|
215
|
+
Only rendering when needed saves <b>CPU time</b> on your server, which spends most of its response time rendering HTML. This also reduces the <b>bandwidth cost</b> for a request/response exchange to **~1 KB**.
|
216
|
+
|
217
|
+
When a fragment is reloaded, Unpoly sends an [`If-Modified-Since`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since) request header with the fragment's earlier [`Last-Modified`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified) time. It also sends an [`If-None-Match`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) header with the fragment's earlier [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag).
|
221
218
|
|
222
|
-
|
223
|
-
If no more recent data is available, the server can [render nothing](/X-Up-Target):
|
219
|
+
Rails' [conditional GET support](https://guides.rubyonrails.org/caching_with_rails.html#conditional-get-support) lets you compare and set modification times and ETags with methods like `#fresh_when` or `#stale?`:
|
224
220
|
|
225
221
|
```ruby
|
226
222
|
class MessagesController < ApplicationController
|
227
223
|
|
228
224
|
def index
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
225
|
+
@messages = current_user.messages.order(time: :desc)
|
226
|
+
|
227
|
+
# If the request's ETag and last modification time matches the given `@messages`,
|
228
|
+
# does not render and send a a `304 Not Modified` response.
|
229
|
+
# If the request's ETag or last modification time does not match, we will render
|
230
|
+
# the `index` view with fresh `ETag` and `Last-Modified` headers.
|
231
|
+
fresh_when(@messages)
|
235
232
|
end
|
236
233
|
|
237
234
|
end
|
238
235
|
```
|
239
236
|
|
240
|
-
Only rendering when needed saves <b>CPU time</b> on your server, which spends most of its response time rendering HTML.
|
241
|
-
|
242
|
-
This also reduces the <b>bandwidth cost</b> for a request/response exchange to **~1 KB**.
|
243
237
|
|
244
238
|
|
245
239
|
### Allowing callbacks with a strict CSP
|
@@ -374,36 +368,30 @@ Returns whether the layer targeted for a failed response is an overlay.
|
|
374
368
|
Returns the [context](https://unpoly.com/up.context) object of the layer targeted for a failed response.
|
375
369
|
|
376
370
|
|
377
|
-
###
|
371
|
+
### Expiring the client-side cache
|
378
372
|
|
379
|
-
The Unpoly frontend caches server responses for a few minutes, making requests to these URLs return instantly.
|
380
|
-
Only `GET` requests are cached. The
|
381
|
-
|
382
|
-
The server may override these defaults. For instance, the server can clear Unpoly's client-side response cache, even for `GET` requests:
|
383
|
-
|
384
|
-
```ruby
|
385
|
-
up.cache.clear
|
386
|
-
```
|
373
|
+
The Unpoly frontend [caches server responses](https://unpoly.com/caching) for a few minutes, making requests to these URLs return instantly.
|
374
|
+
Only `GET` requests are cached. The entire cache is expired after every non-`GET` request (like `POST` or `PUT`).
|
387
375
|
|
388
|
-
|
376
|
+
The server may override these defaults. For instance, the server can expire Unpoly's client-side response cache, even for `GET` requests:
|
389
377
|
|
390
378
|
```ruby
|
391
|
-
up.cache.
|
379
|
+
up.cache.expire
|
392
380
|
```
|
393
381
|
|
394
|
-
You may also
|
382
|
+
You may also expire a single URL or [URL pattern](https://unpoly.com/url-patterns):
|
395
383
|
|
396
384
|
```ruby
|
397
|
-
up.cache.
|
385
|
+
up.cache.expire('/notes/*')
|
398
386
|
```
|
399
387
|
|
400
|
-
You may also prevent cache
|
388
|
+
You may also prevent cache expiration for an unsafe request:
|
401
389
|
|
402
390
|
```ruby
|
403
|
-
up.cache.
|
391
|
+
up.cache.expire(false)
|
404
392
|
```
|
405
393
|
|
406
|
-
Here is an longer example where the server uses careful cache management to
|
394
|
+
Here is an longer example where the server uses careful cache management to avoid expiring too much of the client-side cache:
|
407
395
|
|
408
396
|
```ruby
|
409
397
|
def NotesController < ApplicationController
|
@@ -411,10 +399,10 @@ def NotesController < ApplicationController
|
|
411
399
|
def create
|
412
400
|
@note = Note.create!(params[:note].permit(...))
|
413
401
|
if @note.save
|
414
|
-
up.cache.
|
402
|
+
up.cache.expire('/notes/*') # Only expire affected entries
|
415
403
|
redirect_to(@note)
|
416
404
|
else
|
417
|
-
up.cache.
|
405
|
+
up.cache.expire(false) # Keep the cache fresh because we haven't saved
|
418
406
|
render 'new'
|
419
407
|
end
|
420
408
|
end
|
@@ -422,12 +410,68 @@ def NotesController < ApplicationController
|
|
422
410
|
end
|
423
411
|
```
|
424
412
|
|
413
|
+
### Evicting pages from the client-side cache
|
414
|
+
|
415
|
+
Instead of *expiring* pages from the cache you may also *evict*. The difference is that expired pages can still be rendered instantly and are then [revalidated](/caching#revalidation) with the server. Evicted pages are erased from the cache.
|
416
|
+
|
417
|
+
You may also expire all entries matching an [URL pattern](https://unpoly.com/url-patterns):
|
418
|
+
|
419
|
+
To evict the entire client-side cache:
|
420
|
+
|
421
|
+
```ruby
|
422
|
+
up.cache.evict
|
423
|
+
```
|
425
424
|
|
426
|
-
|
425
|
+
You may also evict a single URL or [URL pattern](https://unpoly.com/url-patterns):
|
426
|
+
|
427
|
+
```ruby
|
428
|
+
up.cache.evict('/notes/*')
|
429
|
+
```
|
430
|
+
|
431
|
+
|
432
|
+
### Unpoly headers are preserved through redirects
|
427
433
|
|
428
434
|
`unpoly-rails` patches [`redirect_to`](https://api.rubyonrails.org/classes/ActionController/Redirecting.html#method-i-redirect_to)
|
429
|
-
so Unpoly-related request
|
430
|
-
|
435
|
+
so [Unpoly-related request and response headers](https://unpoly.com/up.protocol) are preserved for the action you redirect to.
|
436
|
+
|
437
|
+
|
438
|
+
### Accessing Unpoly request headers automatically sets a `Vary` response header
|
439
|
+
|
440
|
+
Accessing [Unpoly-related request headers](https://unpoly.com/up.protocol) through helper methods like `up.target` will automatically add a [`Vary`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary) response header. This is to indicate that the request header influenced the response and the response should be cached separately for each request header value.
|
441
|
+
|
442
|
+
For example, a controller may access the request's `X-Up-Mode` through the `up.layer.mode` helper:
|
443
|
+
|
444
|
+
```ruby
|
445
|
+
def create
|
446
|
+
# ...
|
447
|
+
|
448
|
+
if up.layer.mode == 'modal' # Sets Vary header
|
449
|
+
up.layer.accept
|
450
|
+
else
|
451
|
+
redirect_to :show
|
452
|
+
end
|
453
|
+
end
|
454
|
+
```
|
455
|
+
|
456
|
+
`unpoly-rails` will automatically add a `Vary` header to the response:
|
457
|
+
|
458
|
+
```http
|
459
|
+
Vary: X-Up-Mode
|
460
|
+
```
|
461
|
+
|
462
|
+
There are cases when reading an Unpoly request header does not necessarily influence the response, e.g. for logging. In that cases no `Vary` header should be set. To do so, call the helper method inside an `up.no_vary` block:
|
463
|
+
|
464
|
+
```ruby
|
465
|
+
up.no_vary do
|
466
|
+
Rails.logger.info("Unpoly mode is " + up.layer.mode.inspect) # No Vary header is set
|
467
|
+
end
|
468
|
+
````
|
469
|
+
|
470
|
+
Note that accessing `response.headers[]` directly never sets a `Vary` header:
|
471
|
+
|
472
|
+
```ruby
|
473
|
+
Rails.logger.info("Unpoly mode is " + response.headers['X-Up-Mode']) # No Vary header is set
|
474
|
+
```
|
431
475
|
|
432
476
|
|
433
477
|
### Automatic redirect detection
|
@@ -1,8 +1,8 @@
|
|
1
|
-
/******/ (
|
1
|
+
/******/ (() => { // webpackBootstrap
|
2
2
|
/******/ var __webpack_modules__ = ([
|
3
3
|
/* 0 */,
|
4
4
|
/* 1 */
|
5
|
-
/***/ (
|
5
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
6
6
|
|
7
7
|
"use strict";
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
@@ -38,29 +38,31 @@ __webpack_require__.r(__webpack_exports__);
|
|
38
38
|
/******/
|
39
39
|
/************************************************************************/
|
40
40
|
/******/ /* webpack/runtime/make namespace object */
|
41
|
-
/******/
|
41
|
+
/******/ (() => {
|
42
42
|
/******/ // define __esModule on exports
|
43
|
-
/******/ __webpack_require__.r =
|
43
|
+
/******/ __webpack_require__.r = (exports) => {
|
44
44
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
45
45
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
46
46
|
/******/ }
|
47
47
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
48
48
|
/******/ };
|
49
|
-
/******/ }();
|
49
|
+
/******/ })();
|
50
50
|
/******/
|
51
51
|
/************************************************************************/
|
52
52
|
var __webpack_exports__ = {};
|
53
53
|
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
54
|
-
|
54
|
+
(() => {
|
55
55
|
up.feedback.config.currentClasses.push('active');
|
56
56
|
up.feedback.config.navSelectors.push('.nav', '.navbar');
|
57
|
-
up.form.config.
|
57
|
+
up.form.config.groupSelectors.unshift('.form-group');
|
58
58
|
up.viewport.config.fixedTop.push('.navbar-fixed-top');
|
59
59
|
up.viewport.config.fixedBottom.push('.navbar-fixed-bottom');
|
60
60
|
up.viewport.config.anchoredRight.push('.navbar-fixed-top', '.navbar-fixed-bottom');
|
61
61
|
up.fragment.config.badTargetClasses.push('row', /^col(-xs|-sm|-md|-lg)?(-\d+)?$/);
|
62
|
+
up.layer.config.foreignOverlaySelectors.push('.modal:not(up-modal)', '.popover:not(up-popup)', '.dropdown-menu:not(up-popup)');
|
62
63
|
__webpack_require__(1);
|
63
64
|
|
64
|
-
}();
|
65
|
+
})();
|
66
|
+
|
65
67
|
/******/ })()
|
66
68
|
;
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
(()=>{var o={303:(o,e,r)=>{"use strict";r.r(e)}},e={};function r(p){var t=e[p];if(void 0!==t)return t.exports;var n=e[p]={exports:{}};return o[p](n,n.exports,r),n.exports}r.r=o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},up.feedback.config.currentClasses.push("active"),up.feedback.config.navSelectors.push(".nav",".navbar"),up.form.config.groupSelectors.unshift(".form-group"),up.viewport.config.fixedTop.push(".navbar-fixed-top"),up.viewport.config.fixedBottom.push(".navbar-fixed-bottom"),up.viewport.config.anchoredRight.push(".navbar-fixed-top",".navbar-fixed-bottom"),up.fragment.config.badTargetClasses.push("row",/^col(-xs|-sm|-md|-lg)?(-\d+)?$/),up.layer.config.foreignOverlaySelectors.push(".modal:not(up-modal)",".popover:not(up-popup)",".dropdown-menu:not(up-popup)"),r(303)})();
|
@@ -1,8 +1,8 @@
|
|
1
|
-
/******/ (
|
1
|
+
/******/ (() => { // webpackBootstrap
|
2
2
|
/******/ var __webpack_modules__ = ([
|
3
3
|
/* 0 */,
|
4
4
|
/* 1 */
|
5
|
-
/***/ (
|
5
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
6
6
|
|
7
7
|
"use strict";
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
@@ -38,29 +38,31 @@ __webpack_require__.r(__webpack_exports__);
|
|
38
38
|
/******/
|
39
39
|
/************************************************************************/
|
40
40
|
/******/ /* webpack/runtime/make namespace object */
|
41
|
-
/******/
|
41
|
+
/******/ (() => {
|
42
42
|
/******/ // define __esModule on exports
|
43
|
-
/******/ __webpack_require__.r =
|
43
|
+
/******/ __webpack_require__.r = (exports) => {
|
44
44
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
45
45
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
46
46
|
/******/ }
|
47
47
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
48
48
|
/******/ };
|
49
|
-
/******/ }();
|
49
|
+
/******/ })();
|
50
50
|
/******/
|
51
51
|
/************************************************************************/
|
52
52
|
var __webpack_exports__ = {};
|
53
53
|
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
54
|
-
|
54
|
+
(() => {
|
55
55
|
up.feedback.config.currentClasses.push('active');
|
56
56
|
up.feedback.config.navSelectors.push('.nav', '.navbar');
|
57
|
-
up.form.config.
|
57
|
+
up.form.config.groupSelectors.unshift('.form-group');
|
58
58
|
up.viewport.config.fixedTop.push('.navbar.fixed-top');
|
59
59
|
up.viewport.config.fixedBottom.push('.navbar.fixed-bottom');
|
60
60
|
up.viewport.config.anchoredRight.push('.navbar.fixed-top', '.navbar.fixed-bottom');
|
61
61
|
up.fragment.config.badTargetClasses.push('row', /^col(-xs|-sm|-md|-lg|-xl)?(-\d+)?$/, /^[mp][tblrxy]?-\d+$/);
|
62
|
+
up.layer.config.foreignOverlaySelectors.push('.modal:not(up-modal)', '.popover:not(up-popup)', '.dropdown-menu:not(up-popup)');
|
62
63
|
__webpack_require__(1);
|
63
64
|
|
64
|
-
}();
|
65
|
+
})();
|
66
|
+
|
65
67
|
/******/ })()
|
66
68
|
;
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
(()=>{var o={79:(o,e,r)=>{"use strict";r.r(e)}},e={};function r(p){var t=e[p];if(void 0!==t)return t.exports;var n=e[p]={exports:{}};return o[p](n,n.exports,r),n.exports}r.r=o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},up.feedback.config.currentClasses.push("active"),up.feedback.config.navSelectors.push(".nav",".navbar"),up.form.config.groupSelectors.unshift(".form-group"),up.viewport.config.fixedTop.push(".navbar.fixed-top"),up.viewport.config.fixedBottom.push(".navbar.fixed-bottom"),up.viewport.config.anchoredRight.push(".navbar.fixed-top",".navbar.fixed-bottom"),up.fragment.config.badTargetClasses.push("row",/^col(-xs|-sm|-md|-lg|-xl)?(-\d+)?$/,/^[mp][tblrxy]?-\d+$/),up.layer.config.foreignOverlaySelectors.push(".modal:not(up-modal)",".popover:not(up-popup)",".dropdown-menu:not(up-popup)"),r(79)})();
|
@@ -1,8 +1,8 @@
|
|
1
|
-
/******/ (
|
1
|
+
/******/ (() => { // webpackBootstrap
|
2
2
|
/******/ var __webpack_modules__ = ([
|
3
3
|
/* 0 */,
|
4
4
|
/* 1 */
|
5
|
-
/***/ (
|
5
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
6
6
|
|
7
7
|
"use strict";
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
@@ -38,28 +38,30 @@ __webpack_require__.r(__webpack_exports__);
|
|
38
38
|
/******/
|
39
39
|
/************************************************************************/
|
40
40
|
/******/ /* webpack/runtime/make namespace object */
|
41
|
-
/******/
|
41
|
+
/******/ (() => {
|
42
42
|
/******/ // define __esModule on exports
|
43
|
-
/******/ __webpack_require__.r =
|
43
|
+
/******/ __webpack_require__.r = (exports) => {
|
44
44
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
45
45
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
46
46
|
/******/ }
|
47
47
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
48
48
|
/******/ };
|
49
|
-
/******/ }();
|
49
|
+
/******/ })();
|
50
50
|
/******/
|
51
51
|
/************************************************************************/
|
52
52
|
var __webpack_exports__ = {};
|
53
53
|
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
54
|
-
|
54
|
+
(() => {
|
55
55
|
up.feedback.config.currentClasses.push('active');
|
56
56
|
up.feedback.config.navSelectors.push('.nav', '.navbar');
|
57
57
|
up.viewport.config.fixedTop.push('.navbar.fixed-top');
|
58
58
|
up.viewport.config.fixedBottom.push('.navbar.fixed-bottom');
|
59
59
|
up.viewport.config.anchoredRight.push('.navbar.fixed-top', '.navbar.fixed-bottom');
|
60
60
|
up.fragment.config.badTargetClasses.push('row', /^col(-xs|-sm|-md|-lg|-xl|-xxl)?(-\d+)?$/, /^[mp][tbsexy]?-\d+$/);
|
61
|
+
up.layer.config.foreignOverlaySelectors.push('.modal:not(up-modal)', '.popover:not(up-popup)', '.dropdown-menu:not(up-popup)');
|
61
62
|
__webpack_require__(1);
|
62
63
|
|
63
|
-
}();
|
64
|
+
})();
|
65
|
+
|
64
66
|
/******/ })()
|
65
67
|
;
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
(()=>{var e={313:(e,o,r)=>{"use strict";r.r(o)}},o={};function r(p){var t=o[p];if(void 0!==t)return t.exports;var n=o[p]={exports:{}};return e[p](n,n.exports,r),n.exports}r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},up.feedback.config.currentClasses.push("active"),up.feedback.config.navSelectors.push(".nav",".navbar"),up.viewport.config.fixedTop.push(".navbar.fixed-top"),up.viewport.config.fixedBottom.push(".navbar.fixed-bottom"),up.viewport.config.anchoredRight.push(".navbar.fixed-top",".navbar.fixed-bottom"),up.fragment.config.badTargetClasses.push("row",/^col(-xs|-sm|-md|-lg|-xl|-xxl)?(-\d+)?$/,/^[mp][tbsexy]?-\d+$/),up.layer.config.foreignOverlaySelectors.push(".modal:not(up-modal)",".popover:not(up-popup)",".dropdown-menu:not(up-popup)"),r(313)})();
|