unpoly-rails 3.0.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly-migrate.js +136 -34
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +70 -44
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +70 -43
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/version.rb +1 -1
- metadata +2 -2
data/assets/unpoly/unpoly.es6.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.
|
8
|
+
version: '3.1.1'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -194,6 +194,9 @@ up.util = (function () {
|
|
194
194
|
function isRegExp(object) {
|
195
195
|
return object instanceof RegExp;
|
196
196
|
}
|
197
|
+
function isError(object) {
|
198
|
+
return object instanceof Error;
|
199
|
+
}
|
197
200
|
function isJQuery(object) {
|
198
201
|
return up.browser.canJQuery() && object instanceof jQuery;
|
199
202
|
}
|
@@ -390,8 +393,8 @@ up.util = (function () {
|
|
390
393
|
function queueMicrotask(task) {
|
391
394
|
return Promise.resolve().then(task);
|
392
395
|
}
|
393
|
-
function last(
|
394
|
-
return
|
396
|
+
function last(value) {
|
397
|
+
return value[value.length - 1];
|
395
398
|
}
|
396
399
|
function contains(value, subValue) {
|
397
400
|
return value.indexOf(subValue) >= 0;
|
@@ -616,14 +619,20 @@ up.util = (function () {
|
|
616
619
|
});
|
617
620
|
}
|
618
621
|
}
|
619
|
-
function stringifyArg(arg) {
|
622
|
+
function stringifyArg(arg, placeholder = '%o') {
|
620
623
|
let string;
|
621
624
|
const maxLength = 200;
|
622
|
-
|
625
|
+
if (placeholder === '%c') {
|
626
|
+
return '';
|
627
|
+
}
|
628
|
+
if (placeholder === '%s' && isGiven(arg)) {
|
629
|
+
arg = arg.toString();
|
630
|
+
}
|
623
631
|
if (isString(arg)) {
|
624
|
-
string = arg.replace(/[\n\r\t ]+/g, ' ');
|
625
|
-
|
626
|
-
|
632
|
+
string = arg.trim().replace(/[\n\r\t ]+/g, ' ');
|
633
|
+
if (placeholder === '%o') {
|
634
|
+
string = JSON.stringify(string);
|
635
|
+
}
|
627
636
|
}
|
628
637
|
else if (isUndefined(arg)) {
|
629
638
|
string = 'undefined';
|
@@ -633,24 +642,21 @@ up.util = (function () {
|
|
633
642
|
}
|
634
643
|
else if (isArray(arg)) {
|
635
644
|
string = `[${map(arg, stringifyArg).join(', ')}]`;
|
636
|
-
closer = ']';
|
637
645
|
}
|
638
646
|
else if (isJQuery(arg)) {
|
639
647
|
string = `$(${map(arg, stringifyArg).join(', ')})`;
|
640
|
-
closer = ')';
|
641
648
|
}
|
642
649
|
else if (isElement(arg)) {
|
643
650
|
string = `<${arg.tagName.toLowerCase()}`;
|
644
|
-
for (let attr of ['id', 'name', 'class']) {
|
651
|
+
for (let attr of ['id', 'up-id', 'name', 'class']) {
|
645
652
|
let value = arg.getAttribute(attr);
|
646
653
|
if (value) {
|
647
654
|
string += ` ${attr}="${value}"`;
|
648
655
|
}
|
649
656
|
}
|
650
657
|
string += ">";
|
651
|
-
closer = '>';
|
652
658
|
}
|
653
|
-
else if (isRegExp(arg)) {
|
659
|
+
else if (isRegExp(arg) || isError(arg)) {
|
654
660
|
string = arg.toString();
|
655
661
|
}
|
656
662
|
else {
|
@@ -667,14 +673,13 @@ up.util = (function () {
|
|
667
673
|
}
|
668
674
|
}
|
669
675
|
if (string.length > maxLength) {
|
670
|
-
string = `${string.substr(0, maxLength)}
|
671
|
-
string += closer;
|
676
|
+
string = `${string.substr(0, maxLength)}…${last(string)}`;
|
672
677
|
}
|
673
678
|
return string;
|
674
679
|
}
|
675
|
-
const SPRINTF_PLACEHOLDERS = /%[
|
680
|
+
const SPRINTF_PLACEHOLDERS = /%[oOdisfc]/g;
|
676
681
|
function sprintf(message, ...args) {
|
677
|
-
return message.replace(SPRINTF_PLACEHOLDERS, () => stringifyArg(args.shift()));
|
682
|
+
return message.replace(SPRINTF_PLACEHOLDERS, (placeholder) => stringifyArg(args.shift(), placeholder));
|
678
683
|
}
|
679
684
|
function negate(fn) {
|
680
685
|
return function (...args) {
|
@@ -2352,7 +2357,12 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2352
2357
|
let cursorProps = up.viewport.copyCursorProps(viewport);
|
2353
2358
|
return () => up.viewport.copyCursorProps(cursorProps, viewport);
|
2354
2359
|
});
|
2355
|
-
document.body
|
2360
|
+
if (this.willChangeElement(document.body)) {
|
2361
|
+
keepPlan.newElement.replaceWith(keepable);
|
2362
|
+
}
|
2363
|
+
else {
|
2364
|
+
document.body.append(keepable);
|
2365
|
+
}
|
2356
2366
|
keepPlans.push(keepPlan);
|
2357
2367
|
}
|
2358
2368
|
}
|
@@ -2456,6 +2466,9 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2456
2466
|
const oldFragments = u.map(this.steps, 'oldElement');
|
2457
2467
|
return u.some(oldFragments, up.fragment.hasAutoHistory);
|
2458
2468
|
}
|
2469
|
+
willChangeElement(element) {
|
2470
|
+
return u.some(this.steps, (step) => step.oldElement.contains(element));
|
2471
|
+
}
|
2459
2472
|
},
|
2460
2473
|
(() => {
|
2461
2474
|
u.memoizeMethod(_a.prototype, [
|
@@ -3574,16 +3587,19 @@ up.FormValidator = class FormValidator {
|
|
3574
3587
|
this.honorAbort();
|
3575
3588
|
}
|
3576
3589
|
honorAbort() {
|
3577
|
-
up.fragment.onAborted(this.form, ({ target }) =>
|
3578
|
-
|
3579
|
-
|
3590
|
+
up.fragment.onAborted(this.form, { around: true }, ({ target }) => this.unscheduleSolutionsWithin(target));
|
3591
|
+
}
|
3592
|
+
unscheduleSolutionsWithin(container) {
|
3593
|
+
this.dirtySolutions = u.reject(this.dirtySolutions, ({ element }) => container.contains(element));
|
3580
3594
|
}
|
3581
3595
|
resetNextRenderPromise() {
|
3582
3596
|
this.nextRenderPromise = u.newDeferred();
|
3583
3597
|
}
|
3584
3598
|
watchContainer(fieldOrForm) {
|
3585
3599
|
let { event } = this.originOptions(fieldOrForm);
|
3586
|
-
|
3600
|
+
let guard = () => up.fragment.isAlive(fieldOrForm);
|
3601
|
+
let callback = () => up.error.muteUncriticalRejection(this.validate({ origin: fieldOrForm }));
|
3602
|
+
up.on(fieldOrForm, event, { guard }, callback);
|
3587
3603
|
}
|
3588
3604
|
validate(options = {}) {
|
3589
3605
|
let solutions = this.getSolutions(options);
|
@@ -3620,13 +3636,19 @@ up.FormValidator = class FormValidator {
|
|
3620
3636
|
if (u.isString(target) && target) {
|
3621
3637
|
up.puts('up.validate()', 'Validating target "%s"', target);
|
3622
3638
|
let simpleSelectors = up.fragment.splitTarget(target);
|
3623
|
-
return simpleSelectors.map(function (simpleSelector) {
|
3624
|
-
|
3625
|
-
|
3626
|
-
|
3627
|
-
|
3628
|
-
|
3629
|
-
|
3639
|
+
return u.compact(simpleSelectors.map(function (simpleSelector) {
|
3640
|
+
let element = up.fragment.get(simpleSelector, { origin });
|
3641
|
+
if (element) {
|
3642
|
+
return {
|
3643
|
+
element,
|
3644
|
+
target: simpleSelector,
|
3645
|
+
origin
|
3646
|
+
};
|
3647
|
+
}
|
3648
|
+
else {
|
3649
|
+
up.fail('Validation target "%s" does not match an element', simpleSelector);
|
3650
|
+
}
|
3651
|
+
}));
|
3630
3652
|
}
|
3631
3653
|
}
|
3632
3654
|
getElementSolutions(element) {
|
@@ -3662,7 +3684,7 @@ up.FormValidator = class FormValidator {
|
|
3662
3684
|
doRenderDirtySolutions() {
|
3663
3685
|
var _a;
|
3664
3686
|
return __awaiter(this, void 0, void 0, function* () {
|
3665
|
-
this.dirtySolutions = u.filter(this.dirtySolutions, ({ element, origin }) => element
|
3687
|
+
this.dirtySolutions = u.filter(this.dirtySolutions, ({ element, origin }) => up.fragment.isAlive(element) && up.fragment.isAlive(origin));
|
3666
3688
|
if (!this.dirtySolutions.length || this.rendering) {
|
3667
3689
|
return;
|
3668
3690
|
}
|
@@ -5736,7 +5758,6 @@ up.RenderOptions = (function () {
|
|
5736
5758
|
saveFocus: true,
|
5737
5759
|
focus: 'keep',
|
5738
5760
|
abort: 'target',
|
5739
|
-
revalidate: 'auto',
|
5740
5761
|
failOptions: true,
|
5741
5762
|
};
|
5742
5763
|
const PRELOAD_OVERRIDES = {
|
@@ -7412,6 +7433,7 @@ up.protocol = (function () {
|
|
7412
7433
|
/***/ (() => {
|
7413
7434
|
|
7414
7435
|
up.log = (function () {
|
7436
|
+
const u = up.util;
|
7415
7437
|
const config = new up.LogConfig();
|
7416
7438
|
function reset() {
|
7417
7439
|
config.reset();
|
@@ -7429,13 +7451,11 @@ up.log = (function () {
|
|
7429
7451
|
function printToStreamStyled(stream, trace, customStyles, message, ...args) {
|
7430
7452
|
if (message) {
|
7431
7453
|
if (config.format) {
|
7432
|
-
|
7433
|
-
message = `%c${trace}%c ${message}`;
|
7454
|
+
console[stream](`%c${trace}%c ${message}`, 'color: #666666; padding: 1px 3px; border: 1px solid #bbbbbb; border-radius: 2px; font-size: 90%; display: inline-block;' + customStyles, '', ...args);
|
7434
7455
|
}
|
7435
7456
|
else {
|
7436
|
-
|
7457
|
+
console[stream](`[${trace}] ${u.sprintf(message, ...args)}`);
|
7437
7458
|
}
|
7438
|
-
console[stream](message, ...args);
|
7439
7459
|
}
|
7440
7460
|
}
|
7441
7461
|
function printUserEvent(event) {
|
@@ -7816,12 +7836,13 @@ up.fragment = (function () {
|
|
7816
7836
|
verifyDerivedTarget: true,
|
7817
7837
|
navigateOptions: {
|
7818
7838
|
cache: 'auto',
|
7839
|
+
revalidate: 'auto',
|
7819
7840
|
feedback: true,
|
7820
7841
|
fallback: true,
|
7821
7842
|
focus: 'auto',
|
7822
7843
|
scroll: 'auto',
|
7823
7844
|
history: 'auto',
|
7824
|
-
peel: true
|
7845
|
+
peel: true,
|
7825
7846
|
},
|
7826
7847
|
matchAroundOrigin: true,
|
7827
7848
|
runScripts: true,
|
@@ -7889,10 +7910,12 @@ up.fragment = (function () {
|
|
7889
7910
|
const parent = options.parent || document;
|
7890
7911
|
return up.emit(parent, 'up:fragment:destroyed', { fragment, parent, log });
|
7891
7912
|
}
|
7892
|
-
function
|
7893
|
-
return
|
7913
|
+
function isNotDestroying(element) {
|
7914
|
+
return !element.closest('.up-destroying');
|
7915
|
+
}
|
7916
|
+
function isAlive(fragment) {
|
7917
|
+
return fragment.isConnected && isNotDestroying(fragment);
|
7894
7918
|
}
|
7895
|
-
const isNotDestroying = u.negate(isDestroying);
|
7896
7919
|
function getSmart(...args) {
|
7897
7920
|
const options = u.extractOptions(args);
|
7898
7921
|
const selector = args.pop();
|
@@ -8242,8 +8265,10 @@ up.fragment = (function () {
|
|
8242
8265
|
up.emit(element, 'up:fragment:aborted', { log: false });
|
8243
8266
|
}
|
8244
8267
|
}
|
8245
|
-
function onAborted(fragment,
|
8246
|
-
let
|
8268
|
+
function onAborted(fragment, ...args) {
|
8269
|
+
let callback = u.extractCallback(args);
|
8270
|
+
let options = u.extractOptions(args);
|
8271
|
+
let guard = (event) => event.target.contains(fragment) || (options.around && fragment.contains(event.target));
|
8247
8272
|
let unsubscribe = up.on('up:fragment:aborted', { guard }, callback);
|
8248
8273
|
up.destructor(fragment, unsubscribe);
|
8249
8274
|
return unsubscribe;
|
@@ -8291,6 +8316,7 @@ up.fragment = (function () {
|
|
8291
8316
|
onAborted,
|
8292
8317
|
splitTarget,
|
8293
8318
|
parseTargetSteps,
|
8319
|
+
isAlive,
|
8294
8320
|
};
|
8295
8321
|
})();
|
8296
8322
|
up.reload = up.fragment.reload;
|
@@ -9408,7 +9434,6 @@ up.link = (function () {
|
|
9408
9434
|
return options;
|
9409
9435
|
}
|
9410
9436
|
function followOptions(link, options, parserOptions) {
|
9411
|
-
var _a, _b;
|
9412
9437
|
link = up.fragment.get(link);
|
9413
9438
|
options = parseRequestOptions(link, options, parserOptions);
|
9414
9439
|
const parser = new up.OptionsParser(link, options, Object.assign({ fail: true }, parserOptions));
|
@@ -9463,7 +9488,6 @@ up.link = (function () {
|
|
9463
9488
|
parser.booleanOrString('transition');
|
9464
9489
|
parser.string('easing');
|
9465
9490
|
parser.number('duration');
|
9466
|
-
(_b = (_a = up.migrate).parseFollowOptions) === null || _b === void 0 ? void 0 : _b.call(_a, parser);
|
9467
9491
|
if (!options.guardEvent) {
|
9468
9492
|
options.guardEvent = up.event.build('up:link:follow', { log: 'Following link' });
|
9469
9493
|
}
|
@@ -9606,7 +9630,8 @@ up.link = (function () {
|
|
9606
9630
|
convertClicks,
|
9607
9631
|
config,
|
9608
9632
|
combineFollowableSelectors,
|
9609
|
-
preloadSelector: fullPreloadSelector
|
9633
|
+
preloadSelector: fullPreloadSelector,
|
9634
|
+
followSelector: fullFollowSelector,
|
9610
9635
|
};
|
9611
9636
|
})();
|
9612
9637
|
up.follow = up.link.follow;
|
@@ -10004,6 +10029,7 @@ up.form = (function () {
|
|
10004
10029
|
disable: disableContainer,
|
10005
10030
|
group: findGroup,
|
10006
10031
|
groupSolution: findGroupSolution,
|
10032
|
+
groupSelectors: getGroupSelectors,
|
10007
10033
|
get: getForm,
|
10008
10034
|
};
|
10009
10035
|
})();
|