unpoly-rails 3.9.5 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly-bootstrap3.js +3 -2
- data/assets/unpoly/unpoly-bootstrap3.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap4.js +3 -2
- data/assets/unpoly/unpoly-bootstrap4.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap5.js +3 -2
- data/assets/unpoly/unpoly-bootstrap5.min.js +1 -1
- data/assets/unpoly/unpoly-migrate.js +29 -6
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +1565 -1030
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +1540 -1013
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/change/field_definition.rb +12 -4
- data/lib/unpoly/rails/change.rb +26 -11
- data/lib/unpoly/rails/util.rb +8 -0
- data/lib/unpoly/rails/version.rb +1 -1
- metadata +3 -3
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.10.0'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -202,6 +202,9 @@ up.util = (function () {
|
|
202
202
|
function isElement(object) {
|
203
203
|
return object instanceof Element;
|
204
204
|
}
|
205
|
+
function isTextNode(object) {
|
206
|
+
return object instanceof Text;
|
207
|
+
}
|
205
208
|
function isRegExp(object) {
|
206
209
|
return object instanceof RegExp;
|
207
210
|
}
|
@@ -211,9 +214,9 @@ up.util = (function () {
|
|
211
214
|
function isJQuery(object) {
|
212
215
|
return up.browser.canJQuery() && object instanceof jQuery;
|
213
216
|
}
|
214
|
-
function
|
217
|
+
function isElementLike(object) {
|
215
218
|
var _a;
|
216
|
-
return !!(object && (object.addEventListener || ((_a = object[0]) === null || _a === void 0 ? void 0 : _a.addEventListener)));
|
219
|
+
return !!(object && (object.addEventListener || (isJQuery(object) && ((_a = object[0]) === null || _a === void 0 ? void 0 : _a.addEventListener))));
|
217
220
|
}
|
218
221
|
function isPromise(object) {
|
219
222
|
return isObject(object) && isFunction(object.then);
|
@@ -241,6 +244,9 @@ up.util = (function () {
|
|
241
244
|
function isArguments(value) {
|
242
245
|
return Object.prototype.toString.call(value) === '[object Arguments]';
|
243
246
|
}
|
247
|
+
function isAdjacentPosition(value) {
|
248
|
+
return /^(before|after)/.test(value);
|
249
|
+
}
|
244
250
|
function wrapList(value) {
|
245
251
|
if (isList(value)) {
|
246
252
|
return value;
|
@@ -298,10 +304,9 @@ up.util = (function () {
|
|
298
304
|
}
|
299
305
|
}
|
300
306
|
function parseArgIntoOptions(args, argKey) {
|
301
|
-
let options =
|
302
|
-
if (isDefined(
|
303
|
-
options =
|
304
|
-
options[argKey] = args[0];
|
307
|
+
let [positionalArg, options] = parseArgs(args, 'val', 'options');
|
308
|
+
if (isDefined(positionalArg)) {
|
309
|
+
options[argKey] = positionalArg;
|
305
310
|
}
|
306
311
|
return options;
|
307
312
|
}
|
@@ -469,7 +474,9 @@ up.util = (function () {
|
|
469
474
|
return value;
|
470
475
|
}
|
471
476
|
function renameKey(object, oldKey, newKey) {
|
472
|
-
|
477
|
+
if (oldKey in object) {
|
478
|
+
object[newKey] = pluckKey(object, oldKey);
|
479
|
+
}
|
473
480
|
}
|
474
481
|
function extractLastArg(args, tester) {
|
475
482
|
if (tester(last(args))) {
|
@@ -555,26 +562,35 @@ up.util = (function () {
|
|
555
562
|
function isEqualList(a, b) {
|
556
563
|
return (a.length === b.length) && every(a, (elem, index) => isEqual(elem, b[index]));
|
557
564
|
}
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
if (isString(value)) {
|
565
|
-
value = value.trim();
|
566
|
-
if (options.json && /^\[.*]$/.test(value)) {
|
567
|
-
return JSON.parse(value);
|
568
|
-
}
|
569
|
-
else {
|
570
|
-
let separator = options.separator || 'space/or';
|
571
|
-
let pattern = PARSE_TOKEN_PATTERNS[separator];
|
572
|
-
return value.split(pattern);
|
573
|
-
}
|
565
|
+
function getSimpleTokens(value, { json = false, separator = /[,\s]/ } = {}) {
|
566
|
+
if (!isString(value)) {
|
567
|
+
return wrapList(value);
|
568
|
+
}
|
569
|
+
else if (json && /^\[.*]$/.test(value)) {
|
570
|
+
return parseRelaxedJSON(value);
|
574
571
|
}
|
575
572
|
else {
|
573
|
+
return splitSimpleTokenString(value, separator);
|
574
|
+
}
|
575
|
+
}
|
576
|
+
function splitSimpleTokenString(value, separator) {
|
577
|
+
var _a, _b;
|
578
|
+
let parts = ((_b = (_a = up.migrate).splitAtOr) === null || _b === void 0 ? void 0 : _b.call(_a, value)) || value.split(separator);
|
579
|
+
return parts.map((s) => s.trim()).filter(identity);
|
580
|
+
}
|
581
|
+
function getComplexTokens(value) {
|
582
|
+
if (!isString(value)) {
|
576
583
|
return wrapList(value);
|
577
584
|
}
|
585
|
+
else {
|
586
|
+
let { maskedTokens, restore } = complexTokenOutlines(value);
|
587
|
+
return maskedTokens.map((token) => restore(token));
|
588
|
+
}
|
589
|
+
}
|
590
|
+
function complexTokenOutlines(string) {
|
591
|
+
let { masked, restore } = expressionOutline(string);
|
592
|
+
let maskedTokens = splitSimpleTokenString(masked, ',');
|
593
|
+
return { maskedTokens, restore };
|
578
594
|
}
|
579
595
|
function wrapValue(constructor, ...args) {
|
580
596
|
return (args[0] instanceof constructor) ? args[0] : new constructor(...args);
|
@@ -586,18 +602,13 @@ up.util = (function () {
|
|
586
602
|
function reverse(list) {
|
587
603
|
return copy(list).reverse();
|
588
604
|
}
|
589
|
-
function
|
590
|
-
if (value === matchValue) {
|
591
|
-
return replacementValue;
|
592
|
-
}
|
593
|
-
else {
|
594
|
-
return value;
|
595
|
-
}
|
596
|
-
}
|
597
|
-
function renameKeys(object, renameKeyFn) {
|
605
|
+
function withRenamedKeys(object, renameKeyFn) {
|
598
606
|
const renamed = {};
|
599
607
|
for (let key in object) {
|
600
|
-
|
608
|
+
let transformed = renameKeyFn(key);
|
609
|
+
if (isGiven(transformed)) {
|
610
|
+
renamed[transformed] = object[key];
|
611
|
+
}
|
601
612
|
}
|
602
613
|
return renamed;
|
603
614
|
}
|
@@ -628,6 +639,9 @@ up.util = (function () {
|
|
628
639
|
});
|
629
640
|
}
|
630
641
|
}
|
642
|
+
function delegatePromise(object, promiseProp) {
|
643
|
+
return defineDelegates(object, ['then', 'catch', 'finally'], function () { return this[promiseProp]; });
|
644
|
+
}
|
631
645
|
function stringifyArg(arg, placeholder = '%o') {
|
632
646
|
let string;
|
633
647
|
const maxLength = 200;
|
@@ -738,6 +752,122 @@ up.util = (function () {
|
|
738
752
|
Object.assign(variant, changes);
|
739
753
|
return variant;
|
740
754
|
}
|
755
|
+
function parseArgs(args, ...specs) {
|
756
|
+
let results = [];
|
757
|
+
while (specs.length) {
|
758
|
+
let lastSpec = specs.pop();
|
759
|
+
if (lastSpec === 'options') {
|
760
|
+
results.unshift(extractOptions(args));
|
761
|
+
}
|
762
|
+
else if (lastSpec === 'callback') {
|
763
|
+
results.unshift(extractCallback(args));
|
764
|
+
}
|
765
|
+
else if (lastSpec === 'val') {
|
766
|
+
results.unshift(args.pop());
|
767
|
+
}
|
768
|
+
else if (isFunction(lastSpec)) {
|
769
|
+
let value = lastSpec(last(args)) ? args.pop() : undefined;
|
770
|
+
results.unshift(value);
|
771
|
+
}
|
772
|
+
}
|
773
|
+
return results;
|
774
|
+
}
|
775
|
+
function scanFunctions(...values) {
|
776
|
+
return values.flat().filter(isFunction);
|
777
|
+
}
|
778
|
+
function cleaner() {
|
779
|
+
let fns = [];
|
780
|
+
let track = function (values, transform) {
|
781
|
+
values = scanFunctions(...values).map(transform);
|
782
|
+
fns.push(...scanFunctions(...values));
|
783
|
+
};
|
784
|
+
let api = function (...values) {
|
785
|
+
track(values, identity);
|
786
|
+
};
|
787
|
+
api.guard = function (...values) {
|
788
|
+
track(values, up.error.guardFn);
|
789
|
+
};
|
790
|
+
api.clean = function (...args) {
|
791
|
+
let { length } = fns;
|
792
|
+
for (let i = length - 1; i >= 0; i--)
|
793
|
+
fns[i](...args);
|
794
|
+
fns = [];
|
795
|
+
};
|
796
|
+
return api;
|
797
|
+
}
|
798
|
+
function maskPattern(str, patterns, { keepDelimiters = false } = {}) {
|
799
|
+
let maskCount = 0;
|
800
|
+
let maskPattern = /§(\d+)/g;
|
801
|
+
let matches = [];
|
802
|
+
let replaceLayers = 0;
|
803
|
+
let replace = (replacePattern) => {
|
804
|
+
let didReplace = false;
|
805
|
+
str = str.replaceAll(replacePattern, function (match) {
|
806
|
+
didReplace = true;
|
807
|
+
let glyph = '§' + (maskCount++);
|
808
|
+
let mask;
|
809
|
+
let masked;
|
810
|
+
if (keepDelimiters) {
|
811
|
+
let startDelimiter = match[0];
|
812
|
+
let endDelimiter = match.slice(-1);
|
813
|
+
masked = match.slice(1, -1);
|
814
|
+
mask = startDelimiter + glyph + endDelimiter;
|
815
|
+
}
|
816
|
+
else {
|
817
|
+
masked = match;
|
818
|
+
mask = glyph;
|
819
|
+
}
|
820
|
+
matches.push(masked);
|
821
|
+
return mask;
|
822
|
+
});
|
823
|
+
if (didReplace)
|
824
|
+
replaceLayers++;
|
825
|
+
};
|
826
|
+
[maskPattern, ...patterns].forEach(replace);
|
827
|
+
let restore = (s, transform = identity) => {
|
828
|
+
for (let i = 0; i < replaceLayers; i++) {
|
829
|
+
s = s.replace(maskPattern, (match, placeholderIndex) => transform(matches[placeholderIndex]));
|
830
|
+
}
|
831
|
+
return s;
|
832
|
+
};
|
833
|
+
return { masked: str, restore };
|
834
|
+
}
|
835
|
+
const QUOTED_STRING_PATTERN = /'(?:\\\\|\\'|[^'])*'|"(?:\\\\|\\"|[^"])*"/g;
|
836
|
+
const NESTED_GROUP_PATTERN = /{(?:[^{}]|{[^{}]*})*}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]/g;
|
837
|
+
function expressionOutline(str) {
|
838
|
+
return maskPattern(str, [QUOTED_STRING_PATTERN, NESTED_GROUP_PATTERN], { keepDelimiters: true });
|
839
|
+
}
|
840
|
+
function ensureDoubleQuotes(str) {
|
841
|
+
if (str[0] === '"')
|
842
|
+
return str;
|
843
|
+
str = str.slice(1, -1);
|
844
|
+
let transformed = str.replace(/(\\\\)|(\\')|(\\")|(")/g, function (_match, escapedBackslash, escapedSingleQuote, _doubleQuote) {
|
845
|
+
return escapedBackslash
|
846
|
+
|| (escapedSingleQuote && "'")
|
847
|
+
|| '\\"';
|
848
|
+
});
|
849
|
+
return '"' + transformed + '"';
|
850
|
+
}
|
851
|
+
function parseString(value) {
|
852
|
+
return JSON.parse(ensureDoubleQuotes(value));
|
853
|
+
}
|
854
|
+
function parseRelaxedJSON(str) {
|
855
|
+
let { masked, restore } = maskPattern(str, [QUOTED_STRING_PATTERN]);
|
856
|
+
masked = masked.replace(/([a-z_$][\w$]*:)/gi, (unquotedProperty) => ('"' + unquotedProperty.slice(0, -1) + '":'));
|
857
|
+
masked = masked.replace(/,\s*([}\]])/g, '$1');
|
858
|
+
masked = restore(masked, ensureDoubleQuotes);
|
859
|
+
return JSON.parse(masked);
|
860
|
+
}
|
861
|
+
function parseScalarJSONPairs(str) {
|
862
|
+
let { maskedTokens, restore } = complexTokenOutlines(str);
|
863
|
+
return maskedTokens.map((maskedToken) => {
|
864
|
+
let [_match, string, json] = maskedToken.match(/([^{]+)({[^}]*})?/);
|
865
|
+
return [
|
866
|
+
restore(string.trim()),
|
867
|
+
json && parseRelaxedJSON(restore(json))
|
868
|
+
];
|
869
|
+
});
|
870
|
+
}
|
741
871
|
return {
|
742
872
|
parseURL,
|
743
873
|
normalizeURL,
|
@@ -781,14 +911,16 @@ up.util = (function () {
|
|
781
911
|
isBoolean,
|
782
912
|
isNumber,
|
783
913
|
isElement,
|
914
|
+
isTextNode,
|
784
915
|
isJQuery,
|
785
|
-
|
916
|
+
isElementLike,
|
786
917
|
isPromise,
|
787
918
|
isOptions,
|
788
919
|
isArray,
|
789
920
|
isFormData,
|
790
921
|
isList,
|
791
922
|
isRegExp,
|
923
|
+
isAdjacentPosition,
|
792
924
|
timer: scheduleTimer,
|
793
925
|
contains,
|
794
926
|
containsAll,
|
@@ -819,21 +951,30 @@ up.util = (function () {
|
|
819
951
|
isCrossOrigin,
|
820
952
|
task: queueTask,
|
821
953
|
isEqual,
|
822
|
-
|
954
|
+
getSimpleTokens,
|
955
|
+
getComplexTokens,
|
823
956
|
wrapList,
|
824
957
|
wrapValue,
|
825
958
|
uid,
|
826
959
|
upperCaseFirst,
|
827
960
|
lowerCaseFirst,
|
828
961
|
delegate: defineDelegates,
|
962
|
+
delegatePromise,
|
829
963
|
reverse,
|
830
964
|
camelToKebabCase,
|
831
|
-
replaceValue,
|
832
965
|
sprintf,
|
833
|
-
|
966
|
+
withRenamedKeys,
|
834
967
|
memoizeMethod,
|
835
968
|
safeStringifyJSON,
|
836
969
|
variant,
|
970
|
+
cleaner,
|
971
|
+
scanFunctions,
|
972
|
+
args: parseArgs,
|
973
|
+
parseRelaxedJSON,
|
974
|
+
parseScalarJSONPairs,
|
975
|
+
maskPattern,
|
976
|
+
expressionOutline,
|
977
|
+
parseString,
|
837
978
|
};
|
838
979
|
})();
|
839
980
|
|
@@ -865,17 +1006,12 @@ up.error = (function () {
|
|
865
1006
|
throw value;
|
866
1007
|
}
|
867
1008
|
}
|
868
|
-
function
|
869
|
-
console.error('Uncaught %o', error);
|
870
|
-
let event = new ErrorEvent('error', { error, message: 'Uncaught ' + error });
|
871
|
-
window.dispatchEvent(event);
|
872
|
-
}
|
873
|
-
function guard(fn) {
|
1009
|
+
function guard(fn, ...args) {
|
874
1010
|
try {
|
875
|
-
return fn();
|
1011
|
+
return fn(...args);
|
876
1012
|
}
|
877
1013
|
catch (error) {
|
878
|
-
|
1014
|
+
reportError(error);
|
879
1015
|
}
|
880
1016
|
}
|
881
1017
|
function guardFn(fn) {
|
@@ -907,7 +1043,6 @@ up.migrate = {
|
|
907
1043
|
/***/ (() => {
|
908
1044
|
|
909
1045
|
up.browser = (function () {
|
910
|
-
const u = up.util;
|
911
1046
|
function submitForm(form) {
|
912
1047
|
form.submit();
|
913
1048
|
}
|
@@ -917,7 +1052,6 @@ up.browser = (function () {
|
|
917
1052
|
function canJQuery() {
|
918
1053
|
return !!window.jQuery;
|
919
1054
|
}
|
920
|
-
const canHasSelector = u.memoize(() => CSS.supports('selector(:has(*))'));
|
921
1055
|
function popCookie(name) {
|
922
1056
|
var _a;
|
923
1057
|
let value = (_a = document.cookie.match(new RegExp(name + "=(\\w+)"))) === null || _a === void 0 ? void 0 : _a[1];
|
@@ -939,7 +1073,6 @@ up.browser = (function () {
|
|
939
1073
|
canJQuery,
|
940
1074
|
assertConfirmed,
|
941
1075
|
popCookie,
|
942
|
-
canHasSelector,
|
943
1076
|
};
|
944
1077
|
})();
|
945
1078
|
|
@@ -952,18 +1085,23 @@ __webpack_require__(8);
|
|
952
1085
|
up.element = (function () {
|
953
1086
|
const u = up.util;
|
954
1087
|
function first(...args) {
|
955
|
-
|
956
|
-
const root = args[0] || document;
|
1088
|
+
let [root = document, selector] = u.args(args, 'val', 'val');
|
957
1089
|
return root.querySelector(selector);
|
958
1090
|
}
|
959
1091
|
function subtree(root, selector) {
|
960
1092
|
const results = [];
|
961
|
-
if (root
|
1093
|
+
if (elementLikeMatches(root, selector)) {
|
962
1094
|
results.push(root);
|
963
1095
|
}
|
964
1096
|
results.push(...root.querySelectorAll(selector));
|
965
1097
|
return results;
|
966
1098
|
}
|
1099
|
+
function subtreeFirst(root, selector) {
|
1100
|
+
return elementLikeMatches(root, selector) ? root : root.querySelector(selector);
|
1101
|
+
}
|
1102
|
+
function elementLikeMatches(elementLike, selector) {
|
1103
|
+
return u.isElement(elementLike) && elementLike.matches(selector);
|
1104
|
+
}
|
967
1105
|
function contains(root, selectorOrElement) {
|
968
1106
|
const element = getOne(selectorOrElement);
|
969
1107
|
return Node.prototype.contains.call(root, element);
|
@@ -1005,24 +1143,38 @@ up.element = (function () {
|
|
1005
1143
|
}
|
1006
1144
|
}
|
1007
1145
|
function hide(element) {
|
1008
|
-
element
|
1146
|
+
setVisible(element, false);
|
1009
1147
|
}
|
1010
1148
|
function show(element) {
|
1011
|
-
element
|
1012
|
-
if (element.style.display === 'none') {
|
1013
|
-
element.style.display = '';
|
1014
|
-
}
|
1149
|
+
setVisible(element, true);
|
1015
1150
|
}
|
1016
|
-
function
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1151
|
+
function showTemp(element) {
|
1152
|
+
return setVisibleTemp(element, true);
|
1153
|
+
}
|
1154
|
+
function hideTemp(element) {
|
1155
|
+
return setVisibleTemp(element, false);
|
1021
1156
|
}
|
1022
|
-
function
|
1023
|
-
if (
|
1024
|
-
|
1157
|
+
function setVisibleTemp(element, newVisible) {
|
1158
|
+
if (newVisible === isVisible(element))
|
1159
|
+
return u.noop;
|
1160
|
+
setVisible(element, newVisible);
|
1161
|
+
return () => setVisible(element, !newVisible);
|
1162
|
+
}
|
1163
|
+
function setVisible(element, newVisible) {
|
1164
|
+
if (newVisible) {
|
1165
|
+
element.removeAttribute('hidden');
|
1166
|
+
if (element.style.display === 'none') {
|
1167
|
+
element.style.display = '';
|
1168
|
+
}
|
1169
|
+
}
|
1170
|
+
else {
|
1171
|
+
element.setAttribute('hidden', '');
|
1025
1172
|
}
|
1173
|
+
}
|
1174
|
+
function toggle(element, newVisible = !isVisible(element)) {
|
1175
|
+
setVisible(element, newVisible);
|
1176
|
+
}
|
1177
|
+
function setAttrPresence(element, attr, value, newPresent) {
|
1026
1178
|
if (newPresent) {
|
1027
1179
|
return element.setAttribute(attr, value);
|
1028
1180
|
}
|
@@ -1041,11 +1193,9 @@ up.element = (function () {
|
|
1041
1193
|
}
|
1042
1194
|
}
|
1043
1195
|
}
|
1044
|
-
function
|
1045
|
-
|
1046
|
-
|
1047
|
-
oldAttrs[key] = element.getAttribute(key);
|
1048
|
-
}
|
1196
|
+
function setAttrsTemp(element, attrs) {
|
1197
|
+
let keys = Object.keys(attrs);
|
1198
|
+
let oldAttrs = pickAttrs(element, keys);
|
1049
1199
|
setAttrs(element, attrs);
|
1050
1200
|
return () => setAttrs(element, oldAttrs);
|
1051
1201
|
}
|
@@ -1054,8 +1204,8 @@ up.element = (function () {
|
|
1054
1204
|
const selector = "meta" + attrSelector('name', name);
|
1055
1205
|
return (_a = first(selector)) === null || _a === void 0 ? void 0 : _a.getAttribute('content');
|
1056
1206
|
}
|
1057
|
-
function insertBefore(
|
1058
|
-
|
1207
|
+
function insertBefore(existingNode, newNode) {
|
1208
|
+
existingNode.parentNode.insertBefore(newNode, existingNode);
|
1059
1209
|
}
|
1060
1210
|
function createFromSelector(selector, attrs = {}) {
|
1061
1211
|
let { includePath } = parseSelector(selector);
|
@@ -1063,7 +1213,7 @@ up.element = (function () {
|
|
1063
1213
|
let depthElement;
|
1064
1214
|
let previousElement;
|
1065
1215
|
for (let includeSegment of includePath) {
|
1066
|
-
let { tagName
|
1216
|
+
let { tagName } = includeSegment;
|
1067
1217
|
if (!tagName || tagName === '*') {
|
1068
1218
|
tagName = 'div';
|
1069
1219
|
}
|
@@ -1071,25 +1221,14 @@ up.element = (function () {
|
|
1071
1221
|
if (!rootElement) {
|
1072
1222
|
rootElement = depthElement;
|
1073
1223
|
}
|
1074
|
-
|
1075
|
-
depthElement.id = id;
|
1076
|
-
}
|
1077
|
-
for (let className of classNames) {
|
1078
|
-
depthElement.classList.add(className);
|
1079
|
-
}
|
1080
|
-
for (let attributeName in attributes) {
|
1081
|
-
let attributeValue = attributes[attributeName];
|
1082
|
-
depthElement.setAttribute(attributeName, attributeValue || '');
|
1083
|
-
}
|
1224
|
+
makeVariation(depthElement, includeSegment);
|
1084
1225
|
previousElement === null || previousElement === void 0 ? void 0 : previousElement.appendChild(depthElement);
|
1085
1226
|
previousElement = depthElement;
|
1086
1227
|
}
|
1087
1228
|
for (let key in attrs) {
|
1088
1229
|
let value = attrs[key];
|
1089
1230
|
if (key === 'class') {
|
1090
|
-
|
1091
|
-
rootElement.classList.add(klass);
|
1092
|
-
}
|
1231
|
+
addClasses(rootElement, u.wrapList(value));
|
1093
1232
|
}
|
1094
1233
|
else if (key === 'style') {
|
1095
1234
|
setInlineStyle(rootElement, value);
|
@@ -1098,7 +1237,12 @@ up.element = (function () {
|
|
1098
1237
|
rootElement.textContent = value;
|
1099
1238
|
}
|
1100
1239
|
else if (key === 'content') {
|
1101
|
-
|
1240
|
+
if (u.isString(value)) {
|
1241
|
+
rootElement.innerHTML = value;
|
1242
|
+
}
|
1243
|
+
else {
|
1244
|
+
rootElement.append(...u.wrapList(value));
|
1245
|
+
}
|
1102
1246
|
}
|
1103
1247
|
else {
|
1104
1248
|
rootElement.setAttribute(key, value);
|
@@ -1106,14 +1250,24 @@ up.element = (function () {
|
|
1106
1250
|
}
|
1107
1251
|
return rootElement;
|
1108
1252
|
}
|
1109
|
-
function
|
1253
|
+
function makeVariation(element, { id, classNames, attributes }) {
|
1254
|
+
if (id) {
|
1255
|
+
element.id = id;
|
1256
|
+
}
|
1257
|
+
for (let [name, value] of Object.entries(attributes)) {
|
1258
|
+
element.setAttribute(name, value);
|
1259
|
+
}
|
1260
|
+
addClasses(element, classNames);
|
1261
|
+
}
|
1262
|
+
function parseSelector(rawSelector) {
|
1110
1263
|
let excludeRaw;
|
1111
|
-
const
|
1112
|
-
|
1264
|
+
const { masked: selectorOutline, restore: restoreSelectorLiterals, } = u.expressionOutline(rawSelector);
|
1265
|
+
const includeWithoutAttrs = selectorOutline.replace(/:not\([^)]*\)/, function (match) {
|
1266
|
+
excludeRaw = restoreSelectorLiterals(match);
|
1113
1267
|
return '';
|
1114
1268
|
});
|
1115
|
-
|
1116
|
-
const includeSegments =
|
1269
|
+
let includeRaw = restoreSelectorLiterals(includeWithoutAttrs);
|
1270
|
+
const includeSegments = includeWithoutAttrs.split(/[ >]+/);
|
1117
1271
|
let includePath = includeSegments.map(function (depthSelector) {
|
1118
1272
|
let parsed = {
|
1119
1273
|
tagName: null,
|
@@ -1133,14 +1287,15 @@ up.element = (function () {
|
|
1133
1287
|
parsed.classNames.push(className);
|
1134
1288
|
return '';
|
1135
1289
|
});
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1290
|
+
depthSelector = depthSelector.replace(/\[[^\]]*]/g, function (attr) {
|
1291
|
+
attr = restoreSelectorLiterals(attr);
|
1292
|
+
let [_raw, name, _operator, quote, value] = attr.match(/\[([\w-]+)(?:([~|^$*]?=)(["'])?([^\3\]]*?)\3)?]/);
|
1293
|
+
quote || (quote = '"');
|
1294
|
+
parsed.attributes[name] = value ? u.parseString(quote + value + quote) : '';
|
1295
|
+
return '';
|
1296
|
+
});
|
1142
1297
|
if (depthSelector) {
|
1143
|
-
up.fail('Cannot parse selector: ' +
|
1298
|
+
up.fail('Cannot parse selector: ' + rawSelector);
|
1144
1299
|
}
|
1145
1300
|
return parsed;
|
1146
1301
|
});
|
@@ -1150,33 +1305,8 @@ up.element = (function () {
|
|
1150
1305
|
excludeRaw,
|
1151
1306
|
};
|
1152
1307
|
}
|
1153
|
-
|
1154
|
-
|
1155
|
-
return string.replace(ATTR_SELECTOR_PATTERN, function (_match, name, operator, quote, value) {
|
1156
|
-
if (value) {
|
1157
|
-
value = value.replace(/\\([\\"'])/, '$1');
|
1158
|
-
}
|
1159
|
-
return replacement({ name, operator, quote, value });
|
1160
|
-
});
|
1161
|
-
}
|
1162
|
-
function removeAttrSelectorValues(selector) {
|
1163
|
-
let values = [];
|
1164
|
-
selector = replaceAttrSelectors(selector, function ({ name, value }) {
|
1165
|
-
values.push(value);
|
1166
|
-
return `[${name}]`;
|
1167
|
-
});
|
1168
|
-
return [selector, values];
|
1169
|
-
}
|
1170
|
-
function affix(parent, ...args) {
|
1171
|
-
let position, selector;
|
1172
|
-
const attributes = u.extractOptions(args);
|
1173
|
-
if (args.length === 2) {
|
1174
|
-
[position, selector] = args;
|
1175
|
-
}
|
1176
|
-
else {
|
1177
|
-
position = 'beforeend';
|
1178
|
-
selector = args[0];
|
1179
|
-
}
|
1308
|
+
function affix(...args) {
|
1309
|
+
let [parent, position = 'beforeend', selector, attributes] = u.args(args, 'val', u.isAdjacentPosition, 'val', 'options');
|
1180
1310
|
const element = createFromSelector(selector, attributes);
|
1181
1311
|
parent.insertAdjacentElement(position, element);
|
1182
1312
|
return element;
|
@@ -1215,14 +1345,22 @@ up.element = (function () {
|
|
1215
1345
|
scriptish.replaceWith(clone);
|
1216
1346
|
}
|
1217
1347
|
function createFromHTML(html) {
|
1348
|
+
return extractSingular(createNodesFromHTML(html));
|
1349
|
+
}
|
1350
|
+
function extractSingular(nodes) {
|
1351
|
+
if (nodes.length === 1 && u.isElementLike(nodes[0])) {
|
1352
|
+
return nodes[0];
|
1353
|
+
}
|
1354
|
+
else {
|
1355
|
+
up.fail('Expected a single element, but got %d elements', nodes.length);
|
1356
|
+
}
|
1357
|
+
}
|
1358
|
+
function createNodesFromHTML(html) {
|
1359
|
+
html = html.trim();
|
1218
1360
|
const range = document.createRange();
|
1219
1361
|
range.setStart(document.body, 0);
|
1220
|
-
const fragment = range.createContextualFragment(html
|
1221
|
-
|
1222
|
-
if (elements.length !== 1) {
|
1223
|
-
throw new Error('HTML must have a single root element');
|
1224
|
-
}
|
1225
|
-
return elements[0];
|
1362
|
+
const fragment = range.createContextualFragment(html);
|
1363
|
+
return fragment.childNodes;
|
1226
1364
|
}
|
1227
1365
|
function getRoot() {
|
1228
1366
|
return document.documentElement;
|
@@ -1231,7 +1369,7 @@ up.element = (function () {
|
|
1231
1369
|
element.offsetHeight;
|
1232
1370
|
}
|
1233
1371
|
function concludeCSSTransition(element) {
|
1234
|
-
const undo =
|
1372
|
+
const undo = setStyleTemp(element, { transition: 'none' });
|
1235
1373
|
paint(element);
|
1236
1374
|
return undo;
|
1237
1375
|
}
|
@@ -1264,19 +1402,28 @@ up.element = (function () {
|
|
1264
1402
|
}
|
1265
1403
|
function unwrap(wrapper) {
|
1266
1404
|
preservingFocus(function () {
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1405
|
+
let childNodes = [...wrapper.childNodes];
|
1406
|
+
for (let child of childNodes)
|
1407
|
+
insertBefore(wrapper, child);
|
1408
|
+
wrapper.remove();
|
1271
1409
|
});
|
1272
1410
|
}
|
1273
|
-
function
|
1274
|
-
let childNode;
|
1411
|
+
function wrapNodes(nodeOrNodes) {
|
1275
1412
|
const wrapper = document.createElement('up-wrapper');
|
1276
|
-
|
1277
|
-
|
1413
|
+
wrapper.append(...u.wrapList(nodeOrNodes));
|
1414
|
+
return wrapper;
|
1415
|
+
}
|
1416
|
+
function wrapIfRequired(nodes) {
|
1417
|
+
if (nodes.length === 1 && u.isElement(nodes[0])) {
|
1418
|
+
return nodes[0];
|
1419
|
+
}
|
1420
|
+
else {
|
1421
|
+
return wrapNodes(nodes);
|
1278
1422
|
}
|
1279
|
-
|
1423
|
+
}
|
1424
|
+
function wrapChildren(element) {
|
1425
|
+
const wrapper = wrapNodes(element.childNodes);
|
1426
|
+
element.append(wrapper);
|
1280
1427
|
return wrapper;
|
1281
1428
|
}
|
1282
1429
|
function preservingFocus(fn) {
|
@@ -1290,77 +1437,91 @@ up.element = (function () {
|
|
1290
1437
|
}
|
1291
1438
|
}
|
1292
1439
|
}
|
1440
|
+
function parseAttr(element, attribute, ...parsers) {
|
1441
|
+
var _a;
|
1442
|
+
if (!((_a = element.hasAttribute) === null || _a === void 0 ? void 0 : _a.call(element, attribute)))
|
1443
|
+
return undefined;
|
1444
|
+
let rawValue = element.getAttribute(attribute);
|
1445
|
+
for (let parser of parsers) {
|
1446
|
+
let parserResult = parser(rawValue, attribute, element);
|
1447
|
+
if (u.isDefined(parserResult))
|
1448
|
+
return parserResult;
|
1449
|
+
}
|
1450
|
+
}
|
1293
1451
|
function stringAttr(element, attribute) {
|
1294
|
-
|
1295
|
-
return u.replaceValue(value, null, undefined);
|
1452
|
+
return parseAttr(element, attribute, tryParseString);
|
1296
1453
|
}
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1454
|
+
let tryParseString = u.identity;
|
1455
|
+
function booleanAttr(element, attribute) {
|
1456
|
+
return parseAttr(element, attribute, tryParseBoolean);
|
1457
|
+
}
|
1458
|
+
function tryParseBoolean(value, attribute) {
|
1301
1459
|
switch (value) {
|
1302
1460
|
case 'false': {
|
1303
1461
|
return false;
|
1304
1462
|
}
|
1305
1463
|
case 'true':
|
1306
1464
|
case '':
|
1307
|
-
case attribute:
|
1308
|
-
|
1309
|
-
}
|
1310
|
-
default: {
|
1311
|
-
if (pass) {
|
1312
|
-
return value;
|
1313
|
-
}
|
1314
|
-
else {
|
1465
|
+
case attribute:
|
1466
|
+
{
|
1315
1467
|
return true;
|
1316
1468
|
}
|
1317
|
-
}
|
1318
1469
|
}
|
1319
1470
|
}
|
1320
|
-
function booleanOrStringAttr(element, attribute
|
1321
|
-
|
1322
|
-
|
1471
|
+
function booleanOrStringAttr(element, attribute) {
|
1472
|
+
return parseAttr(element, attribute, tryParseBoolean, tryParseString);
|
1473
|
+
}
|
1474
|
+
function booleanOrNumberAttr(element, attribute) {
|
1475
|
+
return parseAttr(element, attribute, tryParseBoolean, tryParseNumber);
|
1323
1476
|
}
|
1324
1477
|
function numberAttr(element, attribute) {
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1478
|
+
return parseAttr(element, attribute, tryParseNumber);
|
1479
|
+
}
|
1480
|
+
function tryParseNumber(value) {
|
1481
|
+
value = value.replaceAll('_', '');
|
1482
|
+
if (value.match(/^-?[\d.]+$/)) {
|
1483
|
+
return parseFloat(value);
|
1331
1484
|
}
|
1332
1485
|
}
|
1333
1486
|
function jsonAttr(element, attribute) {
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
}
|
1340
|
-
function callbackAttr(link, attr, { exposedKeys = [], mainKey = 'event' } = {}) {
|
1341
|
-
let code = link.getAttribute(attr);
|
1342
|
-
if (code) {
|
1343
|
-
const callback = up.NonceableCallback.fromString(code).toFunction(mainKey, ...exposedKeys);
|
1344
|
-
return function (event) {
|
1345
|
-
const exposedValues = Object.values(u.pick(event, exposedKeys));
|
1346
|
-
return callback.call(link, event, ...exposedValues);
|
1347
|
-
};
|
1487
|
+
return parseAttr(element, attribute, tryParseJSON);
|
1488
|
+
}
|
1489
|
+
function tryParseJSON(value) {
|
1490
|
+
if (value === null || value === void 0 ? void 0 : value.trim()) {
|
1491
|
+
return u.parseRelaxedJSON(value);
|
1348
1492
|
}
|
1349
1493
|
}
|
1350
|
-
function
|
1494
|
+
function callbackAttr(link, attr, callbackOptions) {
|
1495
|
+
return parseAttr(link, attr, (value) => tryParseCallback(value, link, callbackOptions));
|
1496
|
+
}
|
1497
|
+
function tryParseCallback(code, link, { exposedKeys = [], mainKey = 'event' } = {}) {
|
1498
|
+
const callback = up.NonceableCallback.fromString(code).toFunction(mainKey, ...exposedKeys);
|
1499
|
+
return function (event) {
|
1500
|
+
const exposedValues = Object.values(u.pick(event, exposedKeys));
|
1501
|
+
return callback.call(link, event, ...exposedValues);
|
1502
|
+
};
|
1503
|
+
}
|
1504
|
+
function closestAttr(element, attr, readAttrFn = stringAttr) {
|
1351
1505
|
let match = element.closest('[' + attr + ']');
|
1352
1506
|
if (match) {
|
1353
|
-
return
|
1507
|
+
return readAttrFn(match, attr);
|
1354
1508
|
}
|
1355
1509
|
}
|
1356
|
-
function
|
1357
|
-
|
1358
|
-
|
1359
|
-
return () => setInlineStyle(element, oldStyles);
|
1510
|
+
function addClasses(element, classes) {
|
1511
|
+
for (let klass of classes)
|
1512
|
+
element.classList.add(klass);
|
1360
1513
|
}
|
1361
|
-
function
|
1362
|
-
element
|
1363
|
-
|
1514
|
+
function addClassTemp(element, klass) {
|
1515
|
+
return setClassStateTemp(element, klass, true);
|
1516
|
+
}
|
1517
|
+
function removeClassTemp(element, klass) {
|
1518
|
+
return setClassStateTemp(element, klass, false);
|
1519
|
+
}
|
1520
|
+
function setClassStateTemp(element, klass, targetState) {
|
1521
|
+
if (element.classList.contains(klass) === targetState)
|
1522
|
+
return u.noop;
|
1523
|
+
element.classList.toggle(klass, targetState);
|
1524
|
+
return () => element.classList.toggle(klass, !targetState);
|
1364
1525
|
}
|
1365
1526
|
function computedStyle(element, props) {
|
1366
1527
|
const style = window.getComputedStyle(element);
|
@@ -1400,16 +1561,24 @@ up.element = (function () {
|
|
1400
1561
|
}
|
1401
1562
|
}
|
1402
1563
|
}
|
1564
|
+
function setStyleTemp(element, newStyles) {
|
1565
|
+
const oldStyles = inlineStyle(element, Object.keys(newStyles));
|
1566
|
+
setInlineStyle(element, newStyles);
|
1567
|
+
return () => setInlineStyle(element, oldStyles);
|
1568
|
+
}
|
1403
1569
|
function isVisible(element) {
|
1404
1570
|
return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
|
1405
1571
|
}
|
1406
1572
|
function isUpPrefixed(string) {
|
1407
1573
|
return /^up-/.test(string);
|
1408
1574
|
}
|
1409
|
-
function
|
1410
|
-
let attrNames = u.filter(element.getAttributeNames(), isUpPrefixed);
|
1575
|
+
function pickAttrs(element, attrNames) {
|
1411
1576
|
return u.mapObject(attrNames, (name) => [name, element.getAttribute(name)]);
|
1412
1577
|
}
|
1578
|
+
function upAttrs(element) {
|
1579
|
+
let attrNames = element.getAttributeNames().filter(isUpPrefixed);
|
1580
|
+
return pickAttrs(element, attrNames);
|
1581
|
+
}
|
1413
1582
|
function upClasses(element) {
|
1414
1583
|
return u.filter(element.classList.values(), isUpPrefixed);
|
1415
1584
|
}
|
@@ -1436,8 +1605,29 @@ up.element = (function () {
|
|
1436
1605
|
selector += `:not(${excludes.join()})`;
|
1437
1606
|
return selector;
|
1438
1607
|
}
|
1608
|
+
function matchSelectorMap(selectorMap, element) {
|
1609
|
+
let matches = [];
|
1610
|
+
if (selectorMap) {
|
1611
|
+
for (let [selector, value] of Object.entries(selectorMap)) {
|
1612
|
+
if (u.isDefined(value) && element.matches(selector)) {
|
1613
|
+
matches.push(value);
|
1614
|
+
}
|
1615
|
+
}
|
1616
|
+
}
|
1617
|
+
return matches;
|
1618
|
+
}
|
1619
|
+
function documentPosition(element) {
|
1620
|
+
let nextSibling = element.nextElementSibling;
|
1621
|
+
if (nextSibling) {
|
1622
|
+
return [nextSibling, 'beforebegin'];
|
1623
|
+
}
|
1624
|
+
else {
|
1625
|
+
return [element.parentElement, 'beforeend'];
|
1626
|
+
}
|
1627
|
+
}
|
1439
1628
|
return {
|
1440
1629
|
subtree,
|
1630
|
+
subtreeFirst,
|
1441
1631
|
contains,
|
1442
1632
|
closestAttr,
|
1443
1633
|
ancestor,
|
@@ -1446,12 +1636,14 @@ up.element = (function () {
|
|
1446
1636
|
list: getList,
|
1447
1637
|
toggle,
|
1448
1638
|
hide,
|
1639
|
+
hideTemp,
|
1449
1640
|
show,
|
1641
|
+
showTemp,
|
1450
1642
|
metaContent,
|
1451
1643
|
insertBefore,
|
1452
1644
|
createFromSelector,
|
1453
1645
|
setAttrs,
|
1454
|
-
|
1646
|
+
setAttrsTemp,
|
1455
1647
|
affix,
|
1456
1648
|
idSelector,
|
1457
1649
|
classSelector,
|
@@ -1460,7 +1652,9 @@ up.element = (function () {
|
|
1460
1652
|
tagName: elementTagName,
|
1461
1653
|
createBrokenDocumentFromHTML,
|
1462
1654
|
fixParserDamage,
|
1655
|
+
createNodesFromHTML,
|
1463
1656
|
createFromHTML,
|
1657
|
+
extractSingular,
|
1464
1658
|
get root() { return getRoot(); },
|
1465
1659
|
paint,
|
1466
1660
|
concludeCSSTransition,
|
@@ -1470,13 +1664,15 @@ up.element = (function () {
|
|
1470
1664
|
setMissingAttr,
|
1471
1665
|
unwrap,
|
1472
1666
|
wrapChildren,
|
1667
|
+
wrapIfRequired,
|
1473
1668
|
attr: stringAttr,
|
1474
1669
|
booleanAttr,
|
1475
1670
|
numberAttr,
|
1476
1671
|
jsonAttr,
|
1477
1672
|
callbackAttr,
|
1478
1673
|
booleanOrStringAttr,
|
1479
|
-
|
1674
|
+
booleanOrNumberAttr,
|
1675
|
+
setStyleTemp,
|
1480
1676
|
style: computedStyle,
|
1481
1677
|
styleNumber: computedStyleNumber,
|
1482
1678
|
inlineStyle,
|
@@ -1484,14 +1680,19 @@ up.element = (function () {
|
|
1484
1680
|
isVisible,
|
1485
1681
|
upAttrs,
|
1486
1682
|
upClasses,
|
1487
|
-
|
1488
|
-
|
1683
|
+
setAttrPresence,
|
1684
|
+
addClasses,
|
1685
|
+
addClassTemp,
|
1686
|
+
removeClassTemp,
|
1489
1687
|
cleanJQuery,
|
1490
1688
|
parseSelector,
|
1491
1689
|
isEmpty,
|
1492
1690
|
crossOriginSelector,
|
1493
1691
|
isIntersectingWindow,
|
1494
1692
|
unionSelector,
|
1693
|
+
matchSelectorMap,
|
1694
|
+
elementLikeMatches,
|
1695
|
+
documentPosition,
|
1495
1696
|
};
|
1496
1697
|
})();
|
1497
1698
|
|
@@ -1685,6 +1886,9 @@ up.OptionsParser = class OptionsParser {
|
|
1685
1886
|
booleanOrString(key, keyOptions) {
|
1686
1887
|
this.parse(e.booleanOrStringAttr, key, keyOptions);
|
1687
1888
|
}
|
1889
|
+
booleanOrNumber(key, keyOptions) {
|
1890
|
+
this.parse(e.booleanOrNumberAttr, key, keyOptions);
|
1891
|
+
}
|
1688
1892
|
json(key, keyOptions) {
|
1689
1893
|
this.parse(e.jsonAttr, key, keyOptions);
|
1690
1894
|
}
|
@@ -1805,16 +2009,17 @@ up.Rect = class Rect extends up.Record {
|
|
1805
2009
|
/***/ (() => {
|
1806
2010
|
|
1807
2011
|
const e = up.element;
|
2012
|
+
const u = up.util;
|
1808
2013
|
const SHIFT_CLASS = 'up-scrollbar-away';
|
1809
2014
|
up.BodyShifter = class BodyShifter {
|
1810
2015
|
constructor() {
|
1811
2016
|
this._anchoredElements = new Set();
|
1812
2017
|
this._stack = 0;
|
1813
|
-
this.
|
2018
|
+
this._cleaner = u.cleaner();
|
1814
2019
|
}
|
1815
2020
|
lowerStack() {
|
1816
2021
|
if (--this._stack === 0)
|
1817
|
-
this.
|
2022
|
+
this._cleaner.clean();
|
1818
2023
|
}
|
1819
2024
|
raiseStack() {
|
1820
2025
|
if (++this._stack === 1)
|
@@ -1830,7 +2035,7 @@ up.BodyShifter = class BodyShifter {
|
|
1830
2035
|
}
|
1831
2036
|
_shiftNow() {
|
1832
2037
|
this._rootScrollbarWidth = up.viewport.rootScrollbarWidth();
|
1833
|
-
this.
|
2038
|
+
this._cleaner(e.setStyleTemp(e.root, {
|
1834
2039
|
'--up-scrollbar-width': this._rootScrollbarWidth + 'px'
|
1835
2040
|
}));
|
1836
2041
|
this._shiftElement(document.body, 'padding-right');
|
@@ -1842,13 +2047,7 @@ up.BodyShifter = class BodyShifter {
|
|
1842
2047
|
if (!this._isShifted())
|
1843
2048
|
return;
|
1844
2049
|
let originalValue = e.style(element, styleProp);
|
1845
|
-
this.
|
1846
|
-
}
|
1847
|
-
_unshiftNow() {
|
1848
|
-
let cleaner;
|
1849
|
-
while (cleaner = this._cleaners.pop()) {
|
1850
|
-
cleaner();
|
1851
|
-
}
|
2050
|
+
this._cleaner(e.setStyleTemp(element, { ['--up-original-' + styleProp]: originalValue }), e.addClassTemp(element, SHIFT_CLASS));
|
1852
2051
|
}
|
1853
2052
|
};
|
1854
2053
|
|
@@ -1865,10 +2064,6 @@ up.Change = class Change {
|
|
1865
2064
|
execute() {
|
1866
2065
|
throw new up.NotImplemented();
|
1867
2066
|
}
|
1868
|
-
onFinished(renderResult) {
|
1869
|
-
var _a, _b;
|
1870
|
-
return (_b = (_a = this.options).onFinished) === null || _b === void 0 ? void 0 : _b.call(_a, renderResult);
|
1871
|
-
}
|
1872
2067
|
improveHistoryValue(existingValue, newValue) {
|
1873
2068
|
if ((existingValue === false) || u.isString(existingValue)) {
|
1874
2069
|
return existingValue;
|
@@ -1899,30 +2094,30 @@ up.Change.Addition = class Addition extends up.Change {
|
|
1899
2094
|
}
|
1900
2095
|
handleLayerChangeRequests() {
|
1901
2096
|
if (this.layer.isOverlay()) {
|
1902
|
-
this.
|
2097
|
+
this._tryAcceptLayerFromServer();
|
1903
2098
|
this.abortWhenLayerClosed();
|
1904
|
-
this.layer.tryAcceptForLocation(this.
|
2099
|
+
this.layer.tryAcceptForLocation(this._responseOptions());
|
1905
2100
|
this.abortWhenLayerClosed();
|
1906
|
-
this.
|
2101
|
+
this._tryDismissLayerFromServer();
|
1907
2102
|
this.abortWhenLayerClosed();
|
1908
|
-
this.layer.tryDismissForLocation(this.
|
2103
|
+
this.layer.tryDismissForLocation(this._responseOptions());
|
1909
2104
|
this.abortWhenLayerClosed();
|
1910
2105
|
}
|
1911
2106
|
this.layer.asCurrent(() => {
|
1912
2107
|
for (let eventPlan of this._eventPlans) {
|
1913
|
-
up.emit(Object.assign(Object.assign({}, eventPlan), this.
|
2108
|
+
up.emit(Object.assign(Object.assign({}, eventPlan), this._responseOptions()));
|
1914
2109
|
this.abortWhenLayerClosed();
|
1915
2110
|
}
|
1916
2111
|
});
|
1917
2112
|
}
|
1918
|
-
|
2113
|
+
_tryAcceptLayerFromServer() {
|
1919
2114
|
if (u.isDefined(this._acceptLayer) && this.layer.isOverlay()) {
|
1920
|
-
this.layer.accept(this._acceptLayer, this.
|
2115
|
+
this.layer.accept(this._acceptLayer, this._responseOptions());
|
1921
2116
|
}
|
1922
2117
|
}
|
1923
|
-
|
2118
|
+
_tryDismissLayerFromServer() {
|
1924
2119
|
if (u.isDefined(this._dismissLayer) && this.layer.isOverlay()) {
|
1925
|
-
this.layer.dismiss(this._dismissLayer, this.
|
2120
|
+
this.layer.dismiss(this._dismissLayer, this._responseOptions());
|
1926
2121
|
}
|
1927
2122
|
}
|
1928
2123
|
abortWhenLayerClosed(layer = this.layer) {
|
@@ -1930,7 +2125,7 @@ up.Change.Addition = class Addition extends up.Change {
|
|
1930
2125
|
throw new up.Aborted('Layer was closed');
|
1931
2126
|
}
|
1932
2127
|
}
|
1933
|
-
|
2128
|
+
_setSource({ oldElement, newElement, source }) {
|
1934
2129
|
if (source === 'keep') {
|
1935
2130
|
source = (oldElement && up.fragment.source(oldElement));
|
1936
2131
|
}
|
@@ -1938,18 +2133,18 @@ up.Change.Addition = class Addition extends up.Change {
|
|
1938
2133
|
e.setMissingAttr(newElement, 'up-source', up.fragment.normalizeSource(source));
|
1939
2134
|
}
|
1940
2135
|
}
|
1941
|
-
|
2136
|
+
_setTime({ newElement, time }) {
|
1942
2137
|
e.setMissingAttr(newElement, 'up-time', time ? time.toUTCString() : false);
|
1943
2138
|
}
|
1944
|
-
|
2139
|
+
_setETag({ newElement, etag }) {
|
1945
2140
|
e.setMissingAttr(newElement, 'up-etag', etag || false);
|
1946
2141
|
}
|
1947
2142
|
setReloadAttrs(options) {
|
1948
|
-
this.
|
1949
|
-
this.
|
1950
|
-
this.
|
2143
|
+
this._setSource(options);
|
2144
|
+
this._setTime(options);
|
2145
|
+
this._setETag(options);
|
1951
2146
|
}
|
1952
|
-
|
2147
|
+
_responseOptions() {
|
1953
2148
|
return { response: this._response };
|
1954
2149
|
}
|
1955
2150
|
executeSteps(steps, responseDoc, noneOptions) {
|
@@ -1984,8 +2179,10 @@ up.RenderJob = (_a = class RenderJob {
|
|
1984
2179
|
_executePromise() {
|
1985
2180
|
return __awaiter(this, void 0, void 0, function* () {
|
1986
2181
|
try {
|
1987
|
-
this.
|
2182
|
+
this._emitGuardEvent();
|
1988
2183
|
this.options = up.RenderOptions.preprocess(this.options);
|
2184
|
+
up.browser.assertConfirmed(this.options);
|
2185
|
+
up.RenderOptions.assertContentGiven(this.options);
|
1989
2186
|
let result = yield this._getChange().execute();
|
1990
2187
|
this._handleResult(result);
|
1991
2188
|
return result;
|
@@ -2033,21 +2230,19 @@ up.RenderJob = (_a = class RenderJob {
|
|
2033
2230
|
});
|
2034
2231
|
}
|
2035
2232
|
_getChange() {
|
2036
|
-
|
2037
|
-
|
2038
|
-
|
2233
|
+
let handleAbort = u.memoize((request) => this._handleAbortOption(request));
|
2234
|
+
let renderOptions = Object.assign(Object.assign({}, this.options), { handleAbort });
|
2235
|
+
if (renderOptions.url) {
|
2236
|
+
return new up.Change.FromURL(renderOptions);
|
2039
2237
|
}
|
2040
|
-
else if (
|
2041
|
-
|
2042
|
-
return new up.Change.FromResponse(Object.assign(Object.assign({}, this.options), { onRender }));
|
2238
|
+
else if (renderOptions.response) {
|
2239
|
+
return new up.Change.FromResponse(renderOptions);
|
2043
2240
|
}
|
2044
2241
|
else {
|
2045
|
-
|
2046
|
-
return new up.Change.FromContent(Object.assign(Object.assign({}, this.options), { onRender }));
|
2242
|
+
return new up.Change.FromContent(renderOptions);
|
2047
2243
|
}
|
2048
2244
|
}
|
2049
|
-
|
2050
|
-
up.browser.assertConfirmed(this.options);
|
2245
|
+
_emitGuardEvent() {
|
2051
2246
|
let guardEvent = u.pluckKey(this.options, 'guardEvent');
|
2052
2247
|
if (guardEvent) {
|
2053
2248
|
guardEvent.renderOptions = this.options;
|
@@ -2055,24 +2250,23 @@ up.RenderJob = (_a = class RenderJob {
|
|
2055
2250
|
throw new up.Aborted(`Rendering was prevented by ${guardEvent.type} listener`);
|
2056
2251
|
}
|
2057
2252
|
}
|
2058
|
-
up.RenderOptions.assertContentGiven(this.options);
|
2059
2253
|
}
|
2060
2254
|
_handleAbortOption(request) {
|
2061
2255
|
let { abort } = this.options;
|
2062
2256
|
if (!abort || !up.network.isBusy())
|
2063
2257
|
return;
|
2064
|
-
let {
|
2258
|
+
let { bindFragments, bindLayer, origin, layer } = this._getChange().getPreflightProps();
|
2065
2259
|
let abortOptions = {
|
2066
2260
|
except: request,
|
2067
2261
|
logOnce: ['up.render()', 'Change with { abort } option will abort other requests'],
|
2068
|
-
newLayer,
|
2262
|
+
newLayer: (layer === 'new'),
|
2069
2263
|
origin,
|
2070
2264
|
};
|
2071
2265
|
if (abort === 'target') {
|
2072
|
-
up.fragment.abort(
|
2266
|
+
up.fragment.abort(bindFragments, Object.assign({}, abortOptions));
|
2073
2267
|
}
|
2074
2268
|
else if (abort === 'layer') {
|
2075
|
-
up.fragment.abort(Object.assign(Object.assign({}, abortOptions), { layer }));
|
2269
|
+
up.fragment.abort(Object.assign(Object.assign({}, abortOptions), { layer: bindLayer }));
|
2076
2270
|
}
|
2077
2271
|
else if (abort === 'all' || abort === true) {
|
2078
2272
|
up.fragment.abort(Object.assign(Object.assign({}, abortOptions), { layer: 'any' }));
|
@@ -2081,12 +2275,12 @@ up.RenderJob = (_a = class RenderJob {
|
|
2081
2275
|
abort(abortOptions);
|
2082
2276
|
}
|
2083
2277
|
else {
|
2084
|
-
up.fragment.abort(abort, Object.assign(Object.assign({}, abortOptions), { layer }));
|
2278
|
+
up.fragment.abort(abort, Object.assign(Object.assign({}, abortOptions), { layer: bindLayer }));
|
2085
2279
|
}
|
2086
2280
|
}
|
2087
2281
|
},
|
2088
2282
|
(() => {
|
2089
|
-
u.
|
2283
|
+
u.delegatePromise(_a.prototype, '_rendered');
|
2090
2284
|
u.memoizeMethod(_a.prototype, {
|
2091
2285
|
_awaitFinished: true,
|
2092
2286
|
_getChange: true,
|
@@ -2097,14 +2291,6 @@ up.RenderJob = (_a = class RenderJob {
|
|
2097
2291
|
|
2098
2292
|
/***/ }),
|
2099
2293
|
/* 26 */
|
2100
|
-
/***/ (() => {
|
2101
|
-
|
2102
|
-
up.Change.Removal = class Removal extends up.Change {
|
2103
|
-
};
|
2104
|
-
|
2105
|
-
|
2106
|
-
/***/ }),
|
2107
|
-
/* 27 */
|
2108
2294
|
/***/ (function() {
|
2109
2295
|
|
2110
2296
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -2116,13 +2302,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
2116
2302
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
2117
2303
|
});
|
2118
2304
|
};
|
2119
|
-
up.Change.DestroyFragment = class DestroyFragment extends up.Change
|
2305
|
+
up.Change.DestroyFragment = class DestroyFragment extends up.Change {
|
2120
2306
|
constructor(options) {
|
2121
2307
|
super(options);
|
2122
2308
|
this._layer = up.layer.get(options) || up.layer.current;
|
2123
2309
|
this._element = this.options.element;
|
2124
2310
|
this._animation = this.options.animation;
|
2125
2311
|
this._log = this.options.log;
|
2312
|
+
this._onFinished = this.options.onFinished;
|
2126
2313
|
}
|
2127
2314
|
execute() {
|
2128
2315
|
this._parent = this._element.parentNode;
|
@@ -2135,17 +2322,19 @@ up.Change.DestroyFragment = class DestroyFragment extends up.Change.Removal {
|
|
2135
2322
|
}
|
2136
2323
|
}
|
2137
2324
|
_destroyAfterAnimation() {
|
2325
|
+
var _a;
|
2138
2326
|
return __awaiter(this, void 0, void 0, function* () {
|
2139
2327
|
this._emitDestroyed();
|
2140
2328
|
yield this._animate();
|
2141
2329
|
this._wipe();
|
2142
|
-
this.
|
2330
|
+
(_a = this._onFinished) === null || _a === void 0 ? void 0 : _a.call(this);
|
2143
2331
|
});
|
2144
2332
|
}
|
2145
2333
|
_destroyNow() {
|
2334
|
+
var _a;
|
2146
2335
|
this._wipe();
|
2147
2336
|
this._emitDestroyed();
|
2148
|
-
this.
|
2337
|
+
(_a = this._onFinished) === null || _a === void 0 ? void 0 : _a.call(this);
|
2149
2338
|
}
|
2150
2339
|
_animate() {
|
2151
2340
|
return up.motion.animate(this._element, this._animation, this.options);
|
@@ -2165,7 +2354,7 @@ up.Change.DestroyFragment = class DestroyFragment extends up.Change.Removal {
|
|
2165
2354
|
|
2166
2355
|
|
2167
2356
|
/***/ }),
|
2168
|
-
/*
|
2357
|
+
/* 27 */
|
2169
2358
|
/***/ (function() {
|
2170
2359
|
|
2171
2360
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -2191,9 +2380,10 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
|
|
2191
2380
|
context: this._buildLayer().context,
|
2192
2381
|
origin: this.options.origin,
|
2193
2382
|
target: this.target,
|
2194
|
-
|
2195
|
-
|
2196
|
-
|
2383
|
+
bindLayer: this._baseLayer,
|
2384
|
+
layer: 'new',
|
2385
|
+
bindFragments: u.compact([up.fragment.get(':main', { layer: this._baseLayer })]),
|
2386
|
+
fragments: [],
|
2197
2387
|
};
|
2198
2388
|
}
|
2199
2389
|
execute(responseDoc, onApplicable) {
|
@@ -2243,7 +2433,7 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
|
|
2243
2433
|
fragments: [this._content],
|
2244
2434
|
target: this.target,
|
2245
2435
|
});
|
2246
|
-
up.hello(this.layer.element, Object.assign(Object.assign({}, this.options), { layer: this.layer }));
|
2436
|
+
up.hello(this.layer.element, Object.assign(Object.assign({}, this.options), { layer: this.layer, dataRoot: this._content }));
|
2247
2437
|
this._handleScroll();
|
2248
2438
|
this._newOverlayResult.finished = this._finish();
|
2249
2439
|
this.layer.opening = false;
|
@@ -2323,7 +2513,7 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
|
|
2323
2513
|
|
2324
2514
|
|
2325
2515
|
/***/ }),
|
2326
|
-
/*
|
2516
|
+
/* 28 */
|
2327
2517
|
/***/ (() => {
|
2328
2518
|
|
2329
2519
|
var _a;
|
@@ -2339,14 +2529,16 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2339
2529
|
}
|
2340
2530
|
getPreflightProps() {
|
2341
2531
|
this._matchPreflight();
|
2532
|
+
let fragments = this._getFragments();
|
2342
2533
|
return {
|
2343
2534
|
layer: this.layer,
|
2535
|
+
bindLayer: this.layer,
|
2344
2536
|
mode: this.layer.mode,
|
2345
2537
|
context: u.merge(this.layer.context, this._context),
|
2346
2538
|
origin: this.options.origin,
|
2347
2539
|
target: this._bestPreflightSelector(),
|
2348
|
-
fragments
|
2349
|
-
|
2540
|
+
fragments,
|
2541
|
+
bindFragments: fragments,
|
2350
2542
|
};
|
2351
2543
|
}
|
2352
2544
|
_bestPreflightSelector() {
|
@@ -2468,7 +2660,7 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2468
2660
|
|
2469
2661
|
|
2470
2662
|
/***/ }),
|
2471
|
-
/*
|
2663
|
+
/* 29 */
|
2472
2664
|
/***/ (function() {
|
2473
2665
|
|
2474
2666
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -2547,7 +2739,7 @@ up.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {
|
|
2547
2739
|
}, beforeDetach: () => {
|
2548
2740
|
up.script.clean(step.oldElement, { layer: step.layer });
|
2549
2741
|
}, afterDetach() {
|
2550
|
-
|
2742
|
+
e.cleanJQuery();
|
2551
2743
|
up.fragment.emitDestroyed(step.oldElement, { parent, log: false });
|
2552
2744
|
}, scrollNew: () => {
|
2553
2745
|
this._handleFocus(step.newElement, step);
|
@@ -2583,7 +2775,7 @@ up.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {
|
|
2583
2775
|
}
|
2584
2776
|
}
|
2585
2777
|
_findKeepPlan(options) {
|
2586
|
-
if (!options.
|
2778
|
+
if (!options.keep) {
|
2587
2779
|
return;
|
2588
2780
|
}
|
2589
2781
|
const { oldElement, newElement } = options;
|
@@ -2598,7 +2790,7 @@ up.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {
|
|
2598
2790
|
partner = up.fragment.get(newElement, partnerSelector, lookupOpts);
|
2599
2791
|
}
|
2600
2792
|
else {
|
2601
|
-
partner =
|
2793
|
+
partner = e.subtreeFirst(newElement, partnerSelector, lookupOpts);
|
2602
2794
|
}
|
2603
2795
|
if (partner && e.booleanAttr(partner, 'up-keep') !== false) {
|
2604
2796
|
const plan = {
|
@@ -2614,7 +2806,7 @@ up.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {
|
|
2614
2806
|
}
|
2615
2807
|
_preserveKeepables(step) {
|
2616
2808
|
const keepPlans = [];
|
2617
|
-
if (step.
|
2809
|
+
if (step.keep) {
|
2618
2810
|
for (let keepable of step.oldElement.querySelectorAll('[up-keep]')) {
|
2619
2811
|
let keepPlan = this._findKeepPlan(Object.assign(Object.assign({}, step), { oldElement: keepable, descendantsOnly: true }));
|
2620
2812
|
if (keepPlan) {
|
@@ -2667,11 +2859,11 @@ up.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {
|
|
2667
2859
|
|
2668
2860
|
|
2669
2861
|
/***/ }),
|
2670
|
-
/*
|
2862
|
+
/* 30 */
|
2671
2863
|
/***/ (() => {
|
2672
2864
|
|
2673
2865
|
const u = up.util;
|
2674
|
-
up.Change.CloseLayer = class CloseLayer extends up.Change
|
2866
|
+
up.Change.CloseLayer = class CloseLayer extends up.Change {
|
2675
2867
|
constructor(options) {
|
2676
2868
|
var _a, _b;
|
2677
2869
|
super(options);
|
@@ -2745,28 +2937,38 @@ up.Change.CloseLayer = class CloseLayer extends up.Change.Removal {
|
|
2745
2937
|
|
2746
2938
|
|
2747
2939
|
/***/ }),
|
2748
|
-
/*
|
2749
|
-
/***/ (()
|
2940
|
+
/* 31 */
|
2941
|
+
/***/ (function() {
|
2750
2942
|
|
2943
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2944
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
2945
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
2946
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
2947
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
2948
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
2949
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
2950
|
+
});
|
2951
|
+
};
|
2751
2952
|
var _a;
|
2752
2953
|
const u = up.util;
|
2753
2954
|
up.Change.FromURL = (_a = class FromURL extends up.Change {
|
2754
2955
|
execute() {
|
2755
|
-
var _b, _c;
|
2756
|
-
|
2757
|
-
|
2758
|
-
|
2759
|
-
|
2760
|
-
|
2761
|
-
|
2762
|
-
|
2763
|
-
|
2764
|
-
|
2765
|
-
|
2766
|
-
|
2767
|
-
|
2768
|
-
|
2769
|
-
|
2956
|
+
var _b, _c, _d, _e;
|
2957
|
+
return __awaiter(this, void 0, void 0, function* () {
|
2958
|
+
let newPageReason = this._newPageReason();
|
2959
|
+
if (newPageReason) {
|
2960
|
+
up.puts('up.render()', newPageReason);
|
2961
|
+
up.network.loadPage(this.options);
|
2962
|
+
return u.unresolvablePromise();
|
2963
|
+
}
|
2964
|
+
let request = this.request = up.request(this._getRequestAttrs());
|
2965
|
+
(_c = (_b = this.options).onRequestKnown) === null || _c === void 0 ? void 0 : _c.call(_b, request);
|
2966
|
+
if (this.options.preload)
|
2967
|
+
return request;
|
2968
|
+
(_e = (_d = this.options).handleAbort) === null || _e === void 0 ? void 0 : _e.call(_d, request);
|
2969
|
+
request.runPreviews(this.options);
|
2970
|
+
return yield u.always(request, responseOrError => this._onRequestSettled(responseOrError));
|
2971
|
+
});
|
2770
2972
|
}
|
2771
2973
|
_newPageReason() {
|
2772
2974
|
if (u.isCrossOrigin(this.options.url)) {
|
@@ -2779,14 +2981,14 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2779
2981
|
_getRequestAttrs() {
|
2780
2982
|
const successAttrs = this._preflightPropsForRenderOptions(this.options);
|
2781
2983
|
const failAttrs = this._preflightPropsForRenderOptions(this.deriveFailOptions(), { optional: true });
|
2782
|
-
return Object.assign(Object.assign(Object.assign({}, this.options), successAttrs), u.
|
2984
|
+
return Object.assign(Object.assign(Object.assign({}, this.options), successAttrs), u.withRenamedKeys(failAttrs, up.fragment.failKey));
|
2783
2985
|
}
|
2784
2986
|
getPreflightProps() {
|
2785
2987
|
return this._getRequestAttrs();
|
2786
2988
|
}
|
2787
|
-
_preflightPropsForRenderOptions(renderOptions,
|
2788
|
-
const
|
2789
|
-
return
|
2989
|
+
_preflightPropsForRenderOptions(renderOptions, getPreflightPropsOptions) {
|
2990
|
+
const preflightChange = new up.Change.FromContent(Object.assign(Object.assign({}, renderOptions), { preflight: true }));
|
2991
|
+
return preflightChange.getPreflightProps(getPreflightPropsOptions);
|
2790
2992
|
}
|
2791
2993
|
_onRequestSettled(response) {
|
2792
2994
|
if (response instanceof up.Response) {
|
@@ -2820,7 +3022,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2820
3022
|
|
2821
3023
|
|
2822
3024
|
/***/ }),
|
2823
|
-
/*
|
3025
|
+
/* 32 */
|
2824
3026
|
/***/ (function() {
|
2825
3027
|
|
2826
3028
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -2887,7 +3089,7 @@ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
|
|
2887
3089
|
}
|
2888
3090
|
else {
|
2889
3091
|
up.puts('up.render()', 'Revalidating cached response for target "%s"', effectiveTarget);
|
2890
|
-
let verifyResult = yield up.reload(effectiveTarget, Object.assign(Object.assign({}, originalRenderOptions), { preferOldElements: renderResult.fragments, layer: renderResult.layer, onFinished: null,
|
3092
|
+
let verifyResult = yield up.reload(effectiveTarget, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, originalRenderOptions), up.RenderOptions.NO_MOTION), up.RenderOptions.NO_INPUT_INTERFERENCE), up.RenderOptions.NO_PREVIEWS), { preferOldElements: renderResult.fragments, layer: renderResult.layer, onFinished: null, expiredResponse: this._response, preview: this._revalidatePreview(originalRenderOptions), abort: false, cache: false, background: true }));
|
2891
3093
|
if (!verifyResult.none) {
|
2892
3094
|
renderResult = verifyResult;
|
2893
3095
|
}
|
@@ -2895,6 +3097,14 @@ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
|
|
2895
3097
|
return renderResult;
|
2896
3098
|
});
|
2897
3099
|
}
|
3100
|
+
_revalidatePreview({ preview, revalidatePreview }) {
|
3101
|
+
if (revalidatePreview === true) {
|
3102
|
+
return preview;
|
3103
|
+
}
|
3104
|
+
else {
|
3105
|
+
return revalidatePreview;
|
3106
|
+
}
|
3107
|
+
}
|
2898
3108
|
_loadedEventProps() {
|
2899
3109
|
const { expiredResponse } = this.options;
|
2900
3110
|
return {
|
@@ -2956,7 +3166,7 @@ up.Change.FromResponse = (_a = class FromResponse extends up.Change {
|
|
2956
3166
|
|
2957
3167
|
|
2958
3168
|
/***/ }),
|
2959
|
-
/*
|
3169
|
+
/* 33 */
|
2960
3170
|
/***/ (() => {
|
2961
3171
|
|
2962
3172
|
var _a;
|
@@ -2965,7 +3175,7 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
2965
3175
|
constructor(options) {
|
2966
3176
|
super(options);
|
2967
3177
|
this._origin = options.origin;
|
2968
|
-
this.
|
3178
|
+
this._preflight = options.preflight;
|
2969
3179
|
this._layers = up.layer.getAll(options);
|
2970
3180
|
}
|
2971
3181
|
_getPlans() {
|
@@ -3018,11 +3228,11 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3018
3228
|
if (assets) {
|
3019
3229
|
up.script.assertAssetsOK(assets, plan.options);
|
3020
3230
|
}
|
3021
|
-
(_c = (_b = this.options).
|
3231
|
+
(_c = (_b = this.options).handleAbort) === null || _c === void 0 ? void 0 : _c.call(_b, null);
|
3022
3232
|
}
|
3023
3233
|
_getResponseDoc() {
|
3024
3234
|
var _b, _c;
|
3025
|
-
if (this.
|
3235
|
+
if (this._preflight)
|
3026
3236
|
return;
|
3027
3237
|
const docOptions = u.pick(this.options, [
|
3028
3238
|
'target',
|
@@ -3032,6 +3242,7 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3032
3242
|
'html',
|
3033
3243
|
'cspNonces',
|
3034
3244
|
'origin',
|
3245
|
+
'data',
|
3035
3246
|
]);
|
3036
3247
|
(_c = (_b = up.migrate).handleResponseDocOptions) === null || _c === void 0 ? void 0 : _c.call(_b, docOptions);
|
3037
3248
|
if (this._defaultPlacement() === 'content') {
|
@@ -3041,7 +3252,7 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3041
3252
|
}
|
3042
3253
|
_improveOptionsFromResponseDoc() {
|
3043
3254
|
var _b;
|
3044
|
-
if (this.
|
3255
|
+
if (this._preflight)
|
3045
3256
|
return;
|
3046
3257
|
let responseDoc = this._getResponseDoc();
|
3047
3258
|
if (this.options.fragment) {
|
@@ -3113,17 +3324,18 @@ up.Change.FromContent = (_a = class FromContent extends up.Change {
|
|
3113
3324
|
|
3114
3325
|
|
3115
3326
|
/***/ }),
|
3116
|
-
/*
|
3327
|
+
/* 34 */
|
3117
3328
|
/***/ (() => {
|
3118
3329
|
|
3119
3330
|
const u = up.util;
|
3120
3331
|
up.CompilerPass = class CompilerPass {
|
3121
|
-
constructor(root, compilers, { layer, data, dataMap, meta }) {
|
3332
|
+
constructor(root, compilers, { layer, data, dataRoot, dataMap, meta }) {
|
3122
3333
|
layer || (layer = up.layer.get(root) || up.layer.current);
|
3123
3334
|
this._root = root;
|
3124
3335
|
this._compilers = compilers;
|
3125
3336
|
this._layer = layer;
|
3126
3337
|
this._data = data;
|
3338
|
+
this._dataRoot = dataRoot || root;
|
3127
3339
|
this._dataMap = dataMap;
|
3128
3340
|
meta || (meta = {});
|
3129
3341
|
meta.layer = layer;
|
@@ -3139,7 +3351,7 @@ up.CompilerPass = class CompilerPass {
|
|
3139
3351
|
}
|
3140
3352
|
setCompileData() {
|
3141
3353
|
if (this._data) {
|
3142
|
-
this.
|
3354
|
+
this._dataRoot.upCompileData = this._data;
|
3143
3355
|
}
|
3144
3356
|
if (this._dataMap) {
|
3145
3357
|
for (let selector in this._dataMap) {
|
@@ -3175,10 +3387,7 @@ up.CompilerPass = class CompilerPass {
|
|
3175
3387
|
compileArgs.push(data, this._meta);
|
3176
3388
|
}
|
3177
3389
|
const result = this._applyCompilerFunction(compiler, element, compileArgs);
|
3178
|
-
|
3179
|
-
if (destructorOrDestructors) {
|
3180
|
-
up.destructor(element, destructorOrDestructors);
|
3181
|
-
}
|
3390
|
+
up.destructor(element, result);
|
3182
3391
|
}
|
3183
3392
|
_compileBatch(compiler, elements) {
|
3184
3393
|
const compileArgs = [elements];
|
@@ -3187,18 +3396,13 @@ up.CompilerPass = class CompilerPass {
|
|
3187
3396
|
compileArgs.push(dataList, this._meta);
|
3188
3397
|
}
|
3189
3398
|
const result = this._applyCompilerFunction(compiler, elements, compileArgs);
|
3190
|
-
if (
|
3399
|
+
if (result) {
|
3191
3400
|
up.fail('Compilers with { batch: true } cannot return destructors');
|
3192
3401
|
}
|
3193
3402
|
}
|
3194
3403
|
_applyCompilerFunction(compiler, elementOrElements, compileArgs) {
|
3195
3404
|
return up.error.guard(() => compiler.apply(elementOrElements, compileArgs));
|
3196
3405
|
}
|
3197
|
-
_destructorPresence(result) {
|
3198
|
-
if (u.isFunction(result) || (u.isArray(result) && (u.every(result, u.isFunction)))) {
|
3199
|
-
return result;
|
3200
|
-
}
|
3201
|
-
}
|
3202
3406
|
_select(selector) {
|
3203
3407
|
return up.fragment.subtree(this._root, u.evalOption(selector), { layer: this._layer });
|
3204
3408
|
}
|
@@ -3216,7 +3420,7 @@ up.CompilerPass = class CompilerPass {
|
|
3216
3420
|
|
3217
3421
|
|
3218
3422
|
/***/ }),
|
3219
|
-
/*
|
3423
|
+
/* 35 */
|
3220
3424
|
/***/ (() => {
|
3221
3425
|
|
3222
3426
|
const u = up.util;
|
@@ -3301,7 +3505,7 @@ up.CSSTransition = class CSSTransition {
|
|
3301
3505
|
if (oldTransition['transition-property'] !== 'all') {
|
3302
3506
|
const oldTransitionProperties = oldTransition['transition-property'].split(/\s*,\s*/);
|
3303
3507
|
const oldTransitionFrame = e.style(this._element, oldTransitionProperties);
|
3304
|
-
this._setOldTransitionTargetFrame = e.
|
3508
|
+
this._setOldTransitionTargetFrame = e.setStyleTemp(this._element, oldTransitionFrame);
|
3305
3509
|
}
|
3306
3510
|
this._setOldTransition = e.concludeCSSTransition(this._element);
|
3307
3511
|
}
|
@@ -3323,7 +3527,7 @@ up.CSSTransition = class CSSTransition {
|
|
3323
3527
|
|
3324
3528
|
|
3325
3529
|
/***/ }),
|
3326
|
-
/*
|
3530
|
+
/* 36 */
|
3327
3531
|
/***/ (() => {
|
3328
3532
|
|
3329
3533
|
const u = up.util;
|
@@ -3334,27 +3538,19 @@ up.DestructorPass = class DestructorPass {
|
|
3334
3538
|
}
|
3335
3539
|
run() {
|
3336
3540
|
for (let cleanable of this._selectCleanables()) {
|
3337
|
-
let
|
3338
|
-
|
3339
|
-
for (let destructor of destructors) {
|
3340
|
-
this._applyDestructorFunction(destructor, cleanable);
|
3341
|
-
}
|
3342
|
-
}
|
3343
|
-
cleanable.classList.remove('up-can-clean');
|
3541
|
+
let registry = u.pluckKey(cleanable, 'upDestructors');
|
3542
|
+
registry === null || registry === void 0 ? void 0 : registry.clean(cleanable);
|
3344
3543
|
}
|
3345
3544
|
}
|
3346
3545
|
_selectCleanables() {
|
3347
3546
|
const selectOptions = Object.assign(Object.assign({}, this._options), { destroying: true });
|
3348
3547
|
return up.fragment.subtree(this._fragment, '.up-can-clean', selectOptions);
|
3349
3548
|
}
|
3350
|
-
_applyDestructorFunction(destructor, element) {
|
3351
|
-
up.error.guard(() => destructor(element));
|
3352
|
-
}
|
3353
3549
|
};
|
3354
3550
|
|
3355
3551
|
|
3356
3552
|
/***/ }),
|
3357
|
-
/*
|
3553
|
+
/* 37 */
|
3358
3554
|
/***/ (() => {
|
3359
3555
|
|
3360
3556
|
const u = up.util;
|
@@ -3417,7 +3613,7 @@ up.EventEmitter = class EventEmitter extends up.Record {
|
|
3417
3613
|
var _a, _b;
|
3418
3614
|
let options = u.extractOptions(args);
|
3419
3615
|
options = u.merge(defaults, options);
|
3420
|
-
if (u.
|
3616
|
+
if (u.isElementLike(args[0])) {
|
3421
3617
|
options.target = e.get(args.shift());
|
3422
3618
|
}
|
3423
3619
|
else if (args[0] instanceof up.Layer) {
|
@@ -3454,7 +3650,7 @@ up.EventEmitter = class EventEmitter extends up.Record {
|
|
3454
3650
|
|
3455
3651
|
|
3456
3652
|
/***/ }),
|
3457
|
-
/*
|
3653
|
+
/* 38 */
|
3458
3654
|
/***/ (() => {
|
3459
3655
|
|
3460
3656
|
const u = up.util;
|
@@ -3561,7 +3757,7 @@ up.EventListener = class EventListener extends up.Record {
|
|
3561
3757
|
|
3562
3758
|
|
3563
3759
|
/***/ }),
|
3564
|
-
/*
|
3760
|
+
/* 39 */
|
3565
3761
|
/***/ (() => {
|
3566
3762
|
|
3567
3763
|
const u = up.util;
|
@@ -3581,13 +3777,13 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
|
|
3581
3777
|
];
|
3582
3778
|
}
|
3583
3779
|
bind() {
|
3584
|
-
const
|
3780
|
+
const cleaner = u.cleaner();
|
3585
3781
|
this._eachListenerAttributes(function (attrs) {
|
3586
3782
|
const listener = new up.EventListener(attrs);
|
3587
3783
|
listener.bind();
|
3588
|
-
return
|
3784
|
+
return cleaner(listener.unbind.bind(listener));
|
3589
3785
|
});
|
3590
|
-
return
|
3786
|
+
return cleaner.clean;
|
3591
3787
|
}
|
3592
3788
|
_eachListenerAttributes(fn) {
|
3593
3789
|
for (let element of this.elements) {
|
@@ -3620,7 +3816,7 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
|
|
3620
3816
|
else {
|
3621
3817
|
elements = [document];
|
3622
3818
|
}
|
3623
|
-
let eventTypes = u.
|
3819
|
+
let eventTypes = u.getSimpleTokens(args.shift());
|
3624
3820
|
let fixTypes = up.migrate.fixEventTypes;
|
3625
3821
|
if (fixTypes) {
|
3626
3822
|
eventTypes = fixTypes(eventTypes);
|
@@ -3634,7 +3830,7 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
|
|
3634
3830
|
|
3635
3831
|
|
3636
3832
|
/***/ }),
|
3637
|
-
/*
|
3833
|
+
/* 40 */
|
3638
3834
|
/***/ (function() {
|
3639
3835
|
|
3640
3836
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -3654,26 +3850,24 @@ up.FieldWatcher = class FieldWatcher {
|
|
3654
3850
|
this._scope = up.form.getScope(root);
|
3655
3851
|
this._callback = callback;
|
3656
3852
|
this._batch = options.batch;
|
3657
|
-
this._abortable = options.abortable;
|
3658
3853
|
}
|
3659
3854
|
start() {
|
3660
3855
|
this._scheduledValues = null;
|
3661
3856
|
this._processedValues = this._readFieldValues();
|
3662
3857
|
this._currentTimer = null;
|
3663
3858
|
this._callbackRunning = false;
|
3664
|
-
this.
|
3859
|
+
this._cleaner = u.cleaner();
|
3665
3860
|
this._watchFieldsWithin(this._root);
|
3666
3861
|
this._root.addEventListener('up:fragment:inserted', ({ target }) => {
|
3667
3862
|
if (target !== this._root)
|
3668
3863
|
this._watchFieldsWithin(target);
|
3669
3864
|
});
|
3670
|
-
this.
|
3671
|
-
this.
|
3865
|
+
this._cleaner(up.fragment.onAborted(this._scope, () => this._abort()));
|
3866
|
+
this._cleaner(up.on(this._scope, 'reset', () => this._onFormReset()));
|
3672
3867
|
}
|
3673
3868
|
stop() {
|
3674
3869
|
this._abort();
|
3675
|
-
|
3676
|
-
unbindFn();
|
3870
|
+
this._cleaner.clean();
|
3677
3871
|
}
|
3678
3872
|
_fieldOptions(field) {
|
3679
3873
|
let rootOptions = u.copy(this._options);
|
@@ -3686,7 +3880,7 @@ up.FieldWatcher = class FieldWatcher {
|
|
3686
3880
|
}
|
3687
3881
|
_watchField(field) {
|
3688
3882
|
let fieldOptions = this._fieldOptions(field);
|
3689
|
-
this.
|
3883
|
+
this._cleaner(up.on(field, fieldOptions.event, () => this._check(fieldOptions)));
|
3690
3884
|
}
|
3691
3885
|
_abort() {
|
3692
3886
|
this._scheduledValues = null;
|
@@ -3714,13 +3908,12 @@ up.FieldWatcher = class FieldWatcher {
|
|
3714
3908
|
return;
|
3715
3909
|
if (!this._scope.isConnected)
|
3716
3910
|
return;
|
3717
|
-
let
|
3911
|
+
let callbackOptions = u.omit(this._scheduledFieldOptions, ['event', 'delay']);
|
3718
3912
|
const diff = this._changedValues(this._processedValues, this._scheduledValues);
|
3719
3913
|
this._processedValues = this._scheduledValues;
|
3720
3914
|
this._scheduledValues = null;
|
3721
3915
|
this._callbackRunning = true;
|
3722
3916
|
this._scheduledFieldOptions = null;
|
3723
|
-
let callbackOptions = Object.assign(Object.assign({}, fieldOptions), { disable: false });
|
3724
3917
|
const callbackReturnValues = [];
|
3725
3918
|
if (this._batch) {
|
3726
3919
|
callbackReturnValues.push(this._runCallback(diff, callbackOptions));
|
@@ -3733,7 +3926,6 @@ up.FieldWatcher = class FieldWatcher {
|
|
3733
3926
|
}
|
3734
3927
|
if (u.some(callbackReturnValues, u.isPromise)) {
|
3735
3928
|
let callbackDone = Promise.allSettled(callbackReturnValues);
|
3736
|
-
up.form.disableWhile(callbackDone, fieldOptions);
|
3737
3929
|
yield callbackDone;
|
3738
3930
|
}
|
3739
3931
|
this._callbackRunning = false;
|
@@ -3741,7 +3933,7 @@ up.FieldWatcher = class FieldWatcher {
|
|
3741
3933
|
});
|
3742
3934
|
}
|
3743
3935
|
_runCallback(...args) {
|
3744
|
-
return up.error.guard(
|
3936
|
+
return up.error.guard(this._callback, ...args);
|
3745
3937
|
}
|
3746
3938
|
_changedValues(previous, next) {
|
3747
3939
|
const changes = {};
|
@@ -3773,7 +3965,7 @@ up.FieldWatcher = class FieldWatcher {
|
|
3773
3965
|
|
3774
3966
|
|
3775
3967
|
/***/ }),
|
3776
|
-
/*
|
3968
|
+
/* 41 */
|
3777
3969
|
/***/ (function() {
|
3778
3970
|
|
3779
3971
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -3907,7 +4099,6 @@ up.FormValidator = class FormValidator {
|
|
3907
4099
|
up.error.muteUncriticalRejection(this._doRenderDirtySolutions());
|
3908
4100
|
}
|
3909
4101
|
_doRenderDirtySolutions() {
|
3910
|
-
var _a;
|
3911
4102
|
return __awaiter(this, void 0, void 0, function* () {
|
3912
4103
|
if (!this._dirtySolutions.length)
|
3913
4104
|
return;
|
@@ -3915,39 +4106,11 @@ up.FormValidator = class FormValidator {
|
|
3915
4106
|
return;
|
3916
4107
|
if (this._nextRenderTimer)
|
3917
4108
|
return;
|
3918
|
-
let
|
4109
|
+
let options = this._mergeRenderOptions(this._dirtySolutions);
|
3919
4110
|
this._dirtySolutions = [];
|
3920
|
-
let dirtyOrigins = u.map(dirtySolutions, 'origin');
|
3921
|
-
let dirtyFields = u.flatMap(dirtyOrigins, up.form.fields);
|
3922
|
-
let dirtyNames = u.uniq(u.map(dirtyFields, 'name'));
|
3923
|
-
let dataMap = this._buildDataMap(dirtySolutions);
|
3924
|
-
let dirtyRenderOptionsList = u.map(dirtySolutions, 'renderOptions');
|
3925
|
-
let options = u.mergeDefined(...dirtyRenderOptionsList, { dataMap }, up.form.destinationOptions(this._form));
|
3926
|
-
options.target = u.map(dirtySolutions, 'target').join(', ');
|
3927
|
-
options.feedback = u.some(dirtyRenderOptionsList, 'feedback');
|
3928
|
-
options.origin = this._form;
|
3929
|
-
(_a = options.focus) !== null && _a !== void 0 ? _a : (options.focus = 'keep');
|
3930
|
-
options.failOptions = false;
|
3931
|
-
options.defaultMaybe = true;
|
3932
|
-
options.params = up.Params.merge(options.params, ...u.map(dirtyRenderOptionsList, 'params'));
|
3933
|
-
options.headers = u.merge(...u.map(dirtyRenderOptionsList, 'headers'));
|
3934
|
-
this._addValidateHeader(options.headers, dirtyNames);
|
3935
|
-
options.guardEvent = up.event.build('up:form:validate', {
|
3936
|
-
fields: dirtyFields,
|
3937
|
-
log: 'Validating form',
|
3938
|
-
params: options.params,
|
3939
|
-
form: this._form,
|
3940
|
-
});
|
3941
4111
|
this._rendering = true;
|
3942
4112
|
let renderingPromise = this._nextRenderPromise;
|
3943
4113
|
this._resetNextRenderPromise();
|
3944
|
-
options.disable = false;
|
3945
|
-
for (let solution of dirtySolutions) {
|
3946
|
-
up.form.disableWhile(renderingPromise, {
|
3947
|
-
disable: solution.renderOptions.disable,
|
3948
|
-
origin: solution.origin,
|
3949
|
-
});
|
3950
|
-
}
|
3951
4114
|
try {
|
3952
4115
|
renderingPromise.resolve(up.render(options));
|
3953
4116
|
yield renderingPromise;
|
@@ -3958,6 +4121,40 @@ up.FormValidator = class FormValidator {
|
|
3958
4121
|
}
|
3959
4122
|
});
|
3960
4123
|
}
|
4124
|
+
_mergeRenderOptions(dirtySolutions) {
|
4125
|
+
var _a;
|
4126
|
+
let dirtyOrigins = u.map(dirtySolutions, 'origin');
|
4127
|
+
let dirtyFields = u.flatMap(dirtyOrigins, up.form.fields);
|
4128
|
+
let dirtyNames = u.uniq(u.map(dirtyFields, 'name'));
|
4129
|
+
let dirtyRenderOptionsList = u.map(dirtySolutions, 'renderOptions');
|
4130
|
+
let options = u.mergeDefined(...dirtyRenderOptionsList, up.form.destinationOptions(this._form));
|
4131
|
+
options.target = u.map(dirtySolutions, 'target').join(', ');
|
4132
|
+
options.origin = this._form;
|
4133
|
+
(_a = options.focus) !== null && _a !== void 0 ? _a : (options.focus = 'keep');
|
4134
|
+
options.failOptions = false;
|
4135
|
+
options.defaultMaybe = true;
|
4136
|
+
options.params = up.Params.merge(options.params, ...u.map(dirtyRenderOptionsList, 'params'));
|
4137
|
+
options.headers = u.merge(options.headers, ...u.map(dirtyRenderOptionsList, 'headers'));
|
4138
|
+
this._addValidateHeader(options.headers, dirtyNames);
|
4139
|
+
options.feedback = u.some(dirtyRenderOptionsList, 'feedback');
|
4140
|
+
options.data = undefined;
|
4141
|
+
options.dataMap = u.mapObject(dirtySolutions, ({ target, element, renderOptions: { data, keepData } }) => [
|
4142
|
+
target,
|
4143
|
+
keepData ? up.data(element) : data
|
4144
|
+
]);
|
4145
|
+
options.preview = undefined;
|
4146
|
+
options.previewMap = u.mapObject(dirtySolutions, ({ target, renderOptions: { preview } }) => [target, preview]);
|
4147
|
+
options.placeholder = undefined;
|
4148
|
+
options.placeholderMap = u.mapObject(dirtySolutions, ({ target, renderOptions: { placeholder } }) => [target, placeholder]);
|
4149
|
+
options.disable = dirtySolutions.map((solution) => up.fragment.resolveOrigin(solution.renderOptions.disable, solution));
|
4150
|
+
options.guardEvent = up.event.build('up:form:validate', {
|
4151
|
+
fields: dirtyFields,
|
4152
|
+
log: 'Validating form',
|
4153
|
+
params: options.params,
|
4154
|
+
form: this._form,
|
4155
|
+
});
|
4156
|
+
return options;
|
4157
|
+
}
|
3961
4158
|
_addValidateHeader(headers, names) {
|
3962
4159
|
let key = up.protocol.headerize('validate');
|
3963
4160
|
let value = names.join(' ');
|
@@ -3965,20 +4162,6 @@ up.FormValidator = class FormValidator {
|
|
3965
4162
|
value = ':unknown';
|
3966
4163
|
headers[key] = value;
|
3967
4164
|
}
|
3968
|
-
_buildDataMap(solutions) {
|
3969
|
-
let dataMap = {};
|
3970
|
-
for (let solution of solutions) {
|
3971
|
-
let data = u.pluckKey(solution.renderOptions, 'data');
|
3972
|
-
let keepData = u.pluckKey(solution.renderOptions, 'keepData');
|
3973
|
-
if (keepData) {
|
3974
|
-
data = up.data(solution.element);
|
3975
|
-
}
|
3976
|
-
if (data) {
|
3977
|
-
dataMap[solution.target] = data;
|
3978
|
-
}
|
3979
|
-
}
|
3980
|
-
return dataMap;
|
3981
|
-
}
|
3982
4165
|
static forElement(element) {
|
3983
4166
|
let form = up.form.get(element);
|
3984
4167
|
return form.upFormValidator || (form.upFormValidator = new this(form));
|
@@ -3987,19 +4170,23 @@ up.FormValidator = class FormValidator {
|
|
3987
4170
|
|
3988
4171
|
|
3989
4172
|
/***/ }),
|
3990
|
-
/*
|
4173
|
+
/* 42 */
|
3991
4174
|
/***/ (() => {
|
3992
4175
|
|
3993
4176
|
up.FocusCapsule = class FocusCapsule {
|
3994
|
-
constructor(target, cursorProps) {
|
4177
|
+
constructor(element, target, cursorProps) {
|
4178
|
+
this._element = element;
|
3995
4179
|
this._target = target;
|
3996
4180
|
this._cursorProps = cursorProps;
|
3997
4181
|
}
|
3998
|
-
|
4182
|
+
wasLost() {
|
4183
|
+
return document.activeElement !== this._element;
|
4184
|
+
}
|
4185
|
+
restore(layer, focusOptions) {
|
3999
4186
|
let rediscoveredElement = up.fragment.get(this._target, { layer });
|
4000
4187
|
if (rediscoveredElement) {
|
4001
4188
|
up.viewport.copyCursorProps(this._cursorProps, rediscoveredElement);
|
4002
|
-
up.focus(rediscoveredElement,
|
4189
|
+
up.focus(rediscoveredElement, focusOptions);
|
4003
4190
|
return true;
|
4004
4191
|
}
|
4005
4192
|
}
|
@@ -4011,13 +4198,13 @@ up.FocusCapsule = class FocusCapsule {
|
|
4011
4198
|
if (!target)
|
4012
4199
|
return;
|
4013
4200
|
const cursorProps = up.viewport.copyCursorProps(focusedElement);
|
4014
|
-
return new this(target, cursorProps);
|
4201
|
+
return new this(focusedElement, target, cursorProps);
|
4015
4202
|
}
|
4016
4203
|
};
|
4017
4204
|
|
4018
4205
|
|
4019
4206
|
/***/ }),
|
4020
|
-
/*
|
4207
|
+
/* 43 */
|
4021
4208
|
/***/ (() => {
|
4022
4209
|
|
4023
4210
|
const u = up.util;
|
@@ -4035,14 +4222,14 @@ up.FragmentProcessor = class FragmentProcessor extends up.Record {
|
|
4035
4222
|
return this.tryProcess(preprocessed);
|
4036
4223
|
}
|
4037
4224
|
preprocess(opt) {
|
4038
|
-
return u.
|
4225
|
+
return u.getComplexTokens(opt);
|
4039
4226
|
}
|
4040
4227
|
tryProcess(opt) {
|
4041
4228
|
if (u.isArray(opt)) {
|
4042
4229
|
return this.processArray(opt);
|
4043
4230
|
}
|
4044
4231
|
if (u.isFunction(opt)) {
|
4045
|
-
let result = up.error.guard(
|
4232
|
+
let result = up.error.guard(opt, this.fragment, this.attributes());
|
4046
4233
|
return this.tryProcess(result);
|
4047
4234
|
}
|
4048
4235
|
if (u.isElement(opt)) {
|
@@ -4082,7 +4269,7 @@ up.FragmentProcessor = class FragmentProcessor extends up.Record {
|
|
4082
4269
|
|
4083
4270
|
|
4084
4271
|
/***/ }),
|
4085
|
-
/*
|
4272
|
+
/* 44 */
|
4086
4273
|
/***/ (() => {
|
4087
4274
|
|
4088
4275
|
const u = up.util;
|
@@ -4121,19 +4308,19 @@ up.FragmentFinder = class FragmentFinder {
|
|
4121
4308
|
if (parts) {
|
4122
4309
|
let parent = up.fragment.closest(this._origin, parts[1], this._options);
|
4123
4310
|
if (parent) {
|
4124
|
-
return up.fragment.
|
4311
|
+
return up.fragment.getFirstDescendant(parent, parts[2]);
|
4125
4312
|
}
|
4126
4313
|
}
|
4127
4314
|
});
|
4128
4315
|
}
|
4129
4316
|
_findFirst() {
|
4130
|
-
return up.fragment.
|
4317
|
+
return up.fragment.getFirstDescendant(this._document, this._selector, this._options);
|
4131
4318
|
}
|
4132
4319
|
};
|
4133
4320
|
|
4134
4321
|
|
4135
4322
|
/***/ }),
|
4136
|
-
/*
|
4323
|
+
/* 45 */
|
4137
4324
|
/***/ (() => {
|
4138
4325
|
|
4139
4326
|
const u = up.util;
|
@@ -4195,7 +4382,7 @@ up.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {
|
|
4195
4382
|
return up.viewport.restoreFocus({ layer: this.layer });
|
4196
4383
|
}
|
4197
4384
|
_autofocus() {
|
4198
|
-
let autofocusElement = this.fragment && e.
|
4385
|
+
let autofocusElement = this.fragment && e.subtreeFirst(this.fragment, '[autofocus]');
|
4199
4386
|
if (autofocusElement) {
|
4200
4387
|
return this._focusElement(autofocusElement);
|
4201
4388
|
}
|
@@ -4213,13 +4400,14 @@ up.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {
|
|
4213
4400
|
}
|
4214
4401
|
}
|
4215
4402
|
_wasFocusLost() {
|
4216
|
-
|
4403
|
+
var _a;
|
4404
|
+
return (_a = this.focusCapsule) === null || _a === void 0 ? void 0 : _a.wasLost();
|
4217
4405
|
}
|
4218
4406
|
};
|
4219
4407
|
|
4220
4408
|
|
4221
4409
|
/***/ }),
|
4222
|
-
/*
|
4410
|
+
/* 46 */
|
4223
4411
|
/***/ (() => {
|
4224
4412
|
|
4225
4413
|
const e = up.element;
|
@@ -4289,17 +4477,17 @@ up.FragmentPolling = class FragmentPolling {
|
|
4289
4477
|
(this._options.ifLayer === 'any' || this._isOnFrontLayer());
|
4290
4478
|
}
|
4291
4479
|
_clearReloadTimer() {
|
4292
|
-
clearTimeout(this.
|
4293
|
-
this.
|
4480
|
+
clearTimeout(this._reloadTimer);
|
4481
|
+
this._reloadTimer = null;
|
4294
4482
|
}
|
4295
4483
|
_scheduleRemainingTime() {
|
4296
|
-
if (!this.
|
4484
|
+
if (!this._reloadTimer && !this._loading) {
|
4297
4485
|
this._clearReloadTimer();
|
4298
|
-
this.
|
4486
|
+
this._reloadTimer = setTimeout(this._onTimerReached.bind(this), this._getRemainingDelay());
|
4299
4487
|
}
|
4300
4488
|
}
|
4301
4489
|
_onTimerReached() {
|
4302
|
-
this.
|
4490
|
+
this._reloadTimer = null;
|
4303
4491
|
this._tryReload();
|
4304
4492
|
}
|
4305
4493
|
_tryReload() {
|
@@ -4377,7 +4565,7 @@ up.FragmentPolling = class FragmentPolling {
|
|
4377
4565
|
|
4378
4566
|
|
4379
4567
|
/***/ }),
|
4380
|
-
/*
|
4568
|
+
/* 47 */
|
4381
4569
|
/***/ (() => {
|
4382
4570
|
|
4383
4571
|
const u = up.util;
|
@@ -4441,7 +4629,7 @@ up.FragmentScrolling = class FragmentScrolling extends up.FragmentProcessor {
|
|
4441
4629
|
|
4442
4630
|
|
4443
4631
|
/***/ }),
|
4444
|
-
/*
|
4632
|
+
/* 48 */
|
4445
4633
|
/***/ (() => {
|
4446
4634
|
|
4447
4635
|
const e = up.element;
|
@@ -4709,7 +4897,7 @@ up.Layer = class Layer extends up.Record {
|
|
4709
4897
|
|
4710
4898
|
|
4711
4899
|
/***/ }),
|
4712
|
-
/*
|
4900
|
+
/* 49 */
|
4713
4901
|
/***/ (function() {
|
4714
4902
|
|
4715
4903
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -4721,289 +4909,298 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
4721
4909
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
4722
4910
|
});
|
4723
4911
|
};
|
4912
|
+
var _a;
|
4724
4913
|
const e = up.element;
|
4725
4914
|
const u = up.util;
|
4726
|
-
up.Layer.Overlay = class Overlay extends up.Layer {
|
4727
|
-
|
4728
|
-
|
4729
|
-
|
4730
|
-
|
4731
|
-
|
4732
|
-
|
4733
|
-
|
4734
|
-
|
4735
|
-
|
4736
|
-
|
4737
|
-
|
4738
|
-
|
4739
|
-
|
4740
|
-
|
4741
|
-
|
4742
|
-
'backdropCloseAnimation',
|
4743
|
-
'dismissable',
|
4744
|
-
'dismissLabel',
|
4745
|
-
'dismissAriaLabel',
|
4746
|
-
'trapFocus',
|
4747
|
-
'onOpened',
|
4748
|
-
'onAccept',
|
4749
|
-
'onAccepted',
|
4750
|
-
'onDismiss',
|
4751
|
-
'onDismissed',
|
4752
|
-
'acceptEvent',
|
4753
|
-
'dismissEvent',
|
4754
|
-
'acceptLocation',
|
4755
|
-
'dismissLocation',
|
4756
|
-
'opening'
|
4757
|
-
]);
|
4758
|
-
}
|
4759
|
-
constructor(options) {
|
4760
|
-
super(options);
|
4761
|
-
if (this.dismissable === true) {
|
4762
|
-
this.dismissable = ['button', 'key', 'outside'];
|
4915
|
+
up.Layer.Overlay = (_a = class Overlay extends up.Layer {
|
4916
|
+
keys() {
|
4917
|
+
return [
|
4918
|
+
...super.keys(),
|
4919
|
+
...this.constructor.VISUAL_KEYS,
|
4920
|
+
'onOpened',
|
4921
|
+
'onAccept',
|
4922
|
+
'onAccepted',
|
4923
|
+
'onDismiss',
|
4924
|
+
'onDismissed',
|
4925
|
+
'acceptEvent',
|
4926
|
+
'dismissEvent',
|
4927
|
+
'acceptLocation',
|
4928
|
+
'dismissLocation',
|
4929
|
+
'opening'
|
4930
|
+
];
|
4763
4931
|
}
|
4764
|
-
|
4765
|
-
|
4932
|
+
constructor(options) {
|
4933
|
+
super(options);
|
4934
|
+
if (this.dismissable === true) {
|
4935
|
+
this.dismissable = ['button', 'key', 'outside'];
|
4936
|
+
}
|
4937
|
+
else if (this.dismissable === false) {
|
4938
|
+
this.dismissable = [];
|
4939
|
+
}
|
4940
|
+
else {
|
4941
|
+
this.dismissable = u.getSimpleTokens(this.dismissable);
|
4942
|
+
}
|
4943
|
+
if (this.acceptLocation) {
|
4944
|
+
this.acceptLocation = new up.URLPattern(this.acceptLocation);
|
4945
|
+
}
|
4946
|
+
if (this.dismissLocation) {
|
4947
|
+
this.dismissLocation = new up.URLPattern(this.dismissLocation);
|
4948
|
+
}
|
4766
4949
|
}
|
4767
|
-
|
4768
|
-
|
4950
|
+
callback(name) {
|
4951
|
+
let fn = this[name];
|
4952
|
+
if (fn) {
|
4953
|
+
return fn.bind(this);
|
4954
|
+
}
|
4769
4955
|
}
|
4770
|
-
|
4771
|
-
this.
|
4956
|
+
createElement(parentElement) {
|
4957
|
+
this.nesting || (this.nesting = this._suggestVisualNesting());
|
4958
|
+
const elementAttrs = u.compactObject(u.pick(this, ['align', 'position', 'size', 'class', 'nesting']));
|
4959
|
+
this.element = this.affixPart(parentElement, null, elementAttrs);
|
4772
4960
|
}
|
4773
|
-
|
4774
|
-
this.
|
4961
|
+
createBackdropElement(parentElement) {
|
4962
|
+
this.backdropElement = this.affixPart(parentElement, 'backdrop');
|
4775
4963
|
}
|
4776
|
-
|
4777
|
-
|
4778
|
-
let fn = this[name];
|
4779
|
-
if (fn) {
|
4780
|
-
return fn.bind(this);
|
4964
|
+
createViewportElement(parentElement) {
|
4965
|
+
this.viewportElement = this.affixPart(parentElement, 'viewport', { 'up-viewport': '' });
|
4781
4966
|
}
|
4782
|
-
|
4783
|
-
|
4784
|
-
this.nesting || (this.nesting = this._suggestVisualNesting());
|
4785
|
-
const elementAttrs = u.compactObject(u.pick(this, ['align', 'position', 'size', 'class', 'nesting']));
|
4786
|
-
this.element = this.affixPart(parentElement, null, elementAttrs);
|
4787
|
-
}
|
4788
|
-
createBackdropElement(parentElement) {
|
4789
|
-
this.backdropElement = this.affixPart(parentElement, 'backdrop');
|
4790
|
-
}
|
4791
|
-
createViewportElement(parentElement) {
|
4792
|
-
this.viewportElement = this.affixPart(parentElement, 'viewport', { 'up-viewport': '' });
|
4793
|
-
}
|
4794
|
-
createBoxElement(parentElement) {
|
4795
|
-
this.boxElement = this.affixPart(parentElement, 'box');
|
4796
|
-
}
|
4797
|
-
createContentElement(parentElement) {
|
4798
|
-
this.contentElement = this.affixPart(parentElement, 'content');
|
4799
|
-
}
|
4800
|
-
setContent(content) {
|
4801
|
-
this.contentElement.append(content);
|
4802
|
-
this.onContentSet();
|
4803
|
-
}
|
4804
|
-
onContentSet() {
|
4805
|
-
}
|
4806
|
-
createDismissElement(parentElement) {
|
4807
|
-
this.dismissElement = this.affixPart(parentElement, 'dismiss', {
|
4808
|
-
'up-dismiss': '":button"',
|
4809
|
-
'aria-label': this.dismissAriaLabel
|
4810
|
-
});
|
4811
|
-
return e.affix(this.dismissElement, 'span[aria-hidden="true"]', { text: this.dismissLabel });
|
4812
|
-
}
|
4813
|
-
affixPart(parentElement, part, options = {}) {
|
4814
|
-
return e.affix(parentElement, this.selector(part), options);
|
4815
|
-
}
|
4816
|
-
static selector(part) {
|
4817
|
-
return u.compact(['up', this.mode, part]).join('-');
|
4818
|
-
}
|
4819
|
-
_suggestVisualNesting() {
|
4820
|
-
const { parent } = this;
|
4821
|
-
if (this.mode === parent.mode) {
|
4822
|
-
return 1 + parent._suggestVisualNesting();
|
4967
|
+
createBoxElement(parentElement) {
|
4968
|
+
this.boxElement = this.affixPart(parentElement, 'box');
|
4823
4969
|
}
|
4824
|
-
|
4825
|
-
|
4970
|
+
createContentElement(parentElement) {
|
4971
|
+
this.contentElement = this.affixPart(parentElement, 'content');
|
4826
4972
|
}
|
4827
|
-
|
4828
|
-
|
4829
|
-
|
4830
|
-
|
4831
|
-
|
4832
|
-
|
4833
|
-
|
4834
|
-
|
4835
|
-
|
4836
|
-
|
4837
|
-
|
4838
|
-
|
4839
|
-
|
4840
|
-
|
4841
|
-
|
4973
|
+
setContent(content) {
|
4974
|
+
this.contentElement.append(content);
|
4975
|
+
this.onContentSet();
|
4976
|
+
}
|
4977
|
+
onContentSet() {
|
4978
|
+
}
|
4979
|
+
createDismissElement(parentElement) {
|
4980
|
+
this.dismissElement = this.affixPart(parentElement, 'dismiss', {
|
4981
|
+
'up-dismiss': '":button"',
|
4982
|
+
'aria-label': this.dismissARIALabel
|
4983
|
+
});
|
4984
|
+
return e.affix(this.dismissElement, 'span[aria-hidden="true"]', { text: this.dismissLabel });
|
4985
|
+
}
|
4986
|
+
affixPart(parentElement, part, options = {}) {
|
4987
|
+
return e.affix(parentElement, this.selector(part), options);
|
4988
|
+
}
|
4989
|
+
static selector(part) {
|
4990
|
+
return u.compact(['up', this.mode, part]).join('-');
|
4991
|
+
}
|
4992
|
+
_suggestVisualNesting() {
|
4993
|
+
const { parent } = this;
|
4994
|
+
if (this.mode === parent.mode) {
|
4995
|
+
return 1 + parent._suggestVisualNesting();
|
4842
4996
|
}
|
4843
4997
|
else {
|
4844
|
-
|
4845
|
-
if (!up.layer.isWithinForeignOverlay(element)) {
|
4846
|
-
const originClicked = this.origin && this.origin.contains(element);
|
4847
|
-
this._onOutsideClicked(event, originClicked);
|
4848
|
-
}
|
4849
|
-
});
|
4998
|
+
return 0;
|
4850
4999
|
}
|
4851
5000
|
}
|
4852
|
-
|
4853
|
-
|
5001
|
+
setupHandlers() {
|
5002
|
+
var _b, _c;
|
5003
|
+
super.setupHandlers();
|
5004
|
+
this.overlayFocus = new up.OverlayFocus(this);
|
5005
|
+
if (this._supportsDismissMethod('button')) {
|
5006
|
+
this.createDismissElement(this.getBoxElement());
|
5007
|
+
}
|
5008
|
+
if (this._supportsDismissMethod('outside')) {
|
5009
|
+
if (this.viewportElement) {
|
5010
|
+
up.on(this.viewportElement, 'up:click', event => {
|
5011
|
+
if (event.target === this.viewportElement) {
|
5012
|
+
this._onOutsideClicked(event, true);
|
5013
|
+
}
|
5014
|
+
});
|
5015
|
+
}
|
5016
|
+
else {
|
5017
|
+
this.unbindParentClicked = this.parent.on('up:click', (event, element) => {
|
5018
|
+
if (!up.layer.isWithinForeignOverlay(element)) {
|
5019
|
+
const originClicked = this.origin && this.origin.contains(element);
|
5020
|
+
this._onOutsideClicked(event, originClicked);
|
5021
|
+
}
|
5022
|
+
});
|
5023
|
+
}
|
5024
|
+
}
|
5025
|
+
if (this._supportsDismissMethod('key')) {
|
5026
|
+
this.unbindEscapePressed = up.event.onEscape(event => this.onEscapePressed(event));
|
5027
|
+
}
|
5028
|
+
this.registerClickCloser('up-accept', (value, closeOptions) => {
|
5029
|
+
this.accept(value, closeOptions);
|
5030
|
+
});
|
5031
|
+
this.registerClickCloser('up-dismiss', (value, closeOptions) => {
|
5032
|
+
this.dismiss(value, closeOptions);
|
5033
|
+
});
|
5034
|
+
(_c = (_b = up.migrate).registerLayerCloser) === null || _c === void 0 ? void 0 : _c.call(_b, this);
|
5035
|
+
this._registerEventCloser(this.acceptEvent, this.accept);
|
5036
|
+
this._registerEventCloser(this.dismissEvent, this.dismiss);
|
5037
|
+
this.on('up:click', 'label[for]', (event, label) => this._onLabelClicked(event, label));
|
5038
|
+
}
|
5039
|
+
_onLabelClicked(event, label) {
|
5040
|
+
let id = label.getAttribute('for');
|
5041
|
+
let fieldSelector = up.form.fieldSelector(e.idSelector(id));
|
5042
|
+
let fieldsAnywhere = up.fragment.all(fieldSelector, { layer: 'any' });
|
5043
|
+
let fieldsInLayer = up.fragment.all(fieldSelector, { layer: this });
|
5044
|
+
if (fieldsAnywhere.length > 1 && fieldsInLayer[0] !== fieldsAnywhere[0]) {
|
5045
|
+
event.preventDefault();
|
5046
|
+
const field = fieldsInLayer[0];
|
5047
|
+
field.focus();
|
5048
|
+
if (field.matches('input[type=checkbox], input[type=radio]')) {
|
5049
|
+
field.click();
|
5050
|
+
}
|
5051
|
+
}
|
4854
5052
|
}
|
4855
|
-
|
4856
|
-
|
4857
|
-
|
4858
|
-
|
4859
|
-
this.dismiss(
|
4860
|
-
}
|
4861
|
-
(
|
4862
|
-
|
4863
|
-
|
4864
|
-
|
4865
|
-
|
4866
|
-
|
4867
|
-
|
4868
|
-
|
4869
|
-
|
4870
|
-
|
4871
|
-
if (fieldsAnywhere.length > 1 && fieldsInLayer[0] !== fieldsAnywhere[0]) {
|
4872
|
-
event.preventDefault();
|
4873
|
-
const field = fieldsInLayer[0];
|
4874
|
-
field.focus();
|
4875
|
-
if (field.matches('input[type=checkbox], input[type=radio]')) {
|
4876
|
-
field.click();
|
4877
|
-
}
|
4878
|
-
}
|
4879
|
-
}
|
4880
|
-
_onOutsideClicked(event, halt) {
|
4881
|
-
up.log.putsEvent(event);
|
4882
|
-
if (halt)
|
4883
|
-
up.event.halt(event);
|
4884
|
-
up.error.muteUncriticalSync(() => this.dismiss(':outside', { origin: event.target }));
|
4885
|
-
}
|
4886
|
-
onEscapePressed(event) {
|
4887
|
-
if (this.isFront()) {
|
4888
|
-
let field = up.form.focusedField();
|
4889
|
-
if (field) {
|
4890
|
-
field.blur();
|
5053
|
+
_onOutsideClicked(event, halt) {
|
5054
|
+
up.log.putsEvent(event);
|
5055
|
+
if (halt)
|
5056
|
+
up.event.halt(event);
|
5057
|
+
up.error.muteUncriticalSync(() => this.dismiss(':outside', { origin: event.target }));
|
5058
|
+
}
|
5059
|
+
onEscapePressed(event) {
|
5060
|
+
if (this.isFront()) {
|
5061
|
+
let field = up.form.focusedField();
|
5062
|
+
if (field) {
|
5063
|
+
field.blur();
|
5064
|
+
}
|
5065
|
+
else if (this._supportsDismissMethod('key')) {
|
5066
|
+
up.event.halt(event, { log: true });
|
5067
|
+
up.error.muteUncriticalSync(() => this.dismiss(':key'));
|
5068
|
+
}
|
4891
5069
|
}
|
4892
|
-
|
5070
|
+
}
|
5071
|
+
registerClickCloser(attribute, closeFn) {
|
5072
|
+
let selector = `[${attribute}]`;
|
5073
|
+
this.on('up:click', selector, function (event) {
|
4893
5074
|
up.event.halt(event, { log: true });
|
4894
|
-
|
5075
|
+
const origin = event.target.closest(selector);
|
5076
|
+
const value = e.jsonAttr(origin, attribute);
|
5077
|
+
const closeOptions = { origin };
|
5078
|
+
const parser = new up.OptionsParser(origin, closeOptions);
|
5079
|
+
parser.booleanOrString('animation');
|
5080
|
+
parser.string('easing');
|
5081
|
+
parser.number('duration');
|
5082
|
+
parser.string('confirm');
|
5083
|
+
up.error.muteUncriticalSync(() => closeFn(value, closeOptions));
|
5084
|
+
});
|
5085
|
+
}
|
5086
|
+
_registerEventCloser(eventTypes, closeFn) {
|
5087
|
+
if (!eventTypes) {
|
5088
|
+
return;
|
4895
5089
|
}
|
5090
|
+
return this.on(eventTypes, event => {
|
5091
|
+
event.preventDefault();
|
5092
|
+
up.error.muteUncriticalSync(() => closeFn.call(this, event, { response: event.response }));
|
5093
|
+
});
|
4896
5094
|
}
|
4897
|
-
|
4898
|
-
|
4899
|
-
let selector = `[${attribute}]`;
|
4900
|
-
this.on('up:click', selector, function (event) {
|
4901
|
-
up.event.halt(event, { log: true });
|
4902
|
-
const origin = event.target.closest(selector);
|
4903
|
-
const value = e.jsonAttr(origin, attribute);
|
4904
|
-
const closeOptions = { origin };
|
4905
|
-
const parser = new up.OptionsParser(origin, closeOptions);
|
4906
|
-
parser.booleanOrString('animation');
|
4907
|
-
parser.string('easing');
|
4908
|
-
parser.number('duration');
|
4909
|
-
parser.string('confirm');
|
4910
|
-
up.error.muteUncriticalSync(() => closeFn(value, closeOptions));
|
4911
|
-
});
|
4912
|
-
}
|
4913
|
-
_registerEventCloser(eventTypes, closeFn) {
|
4914
|
-
if (!eventTypes) {
|
4915
|
-
return;
|
5095
|
+
tryAcceptForLocation(options) {
|
5096
|
+
this._tryCloseForLocation(this.acceptLocation, this.accept, options);
|
4916
5097
|
}
|
4917
|
-
|
4918
|
-
|
4919
|
-
up.error.muteUncriticalSync(() => closeFn.call(this, event, { response: event.response }));
|
4920
|
-
});
|
4921
|
-
}
|
4922
|
-
tryAcceptForLocation(options) {
|
4923
|
-
this._tryCloseForLocation(this.acceptLocation, this.accept, options);
|
4924
|
-
}
|
4925
|
-
tryDismissForLocation(options) {
|
4926
|
-
this._tryCloseForLocation(this.dismissLocation, this.dismiss, options);
|
4927
|
-
}
|
4928
|
-
_tryCloseForLocation(urlPattern, closeFn, options) {
|
4929
|
-
let location, resolution;
|
4930
|
-
if (urlPattern && (location = this.location) && (resolution = urlPattern.recognize(location))) {
|
4931
|
-
const closeValue = Object.assign(Object.assign({}, resolution), { location });
|
4932
|
-
up.error.muteUncriticalSync(() => closeFn.call(this, closeValue, options));
|
5098
|
+
tryDismissForLocation(options) {
|
5099
|
+
this._tryCloseForLocation(this.dismissLocation, this.dismiss, options);
|
4933
5100
|
}
|
4934
|
-
|
4935
|
-
|
4936
|
-
|
4937
|
-
|
4938
|
-
|
4939
|
-
|
4940
|
-
this.overlayFocus.teardown();
|
4941
|
-
}
|
4942
|
-
destroyElements(options) {
|
4943
|
-
const animation = () => this.startCloseAnimation(options);
|
4944
|
-
const onFinished = () => {
|
4945
|
-
var _a;
|
4946
|
-
this.onElementsRemoved();
|
4947
|
-
(_a = options.onFinished) === null || _a === void 0 ? void 0 : _a.call(options);
|
4948
|
-
};
|
4949
|
-
const destroyOptions = Object.assign(Object.assign({}, options), { animation, onFinished, log: false });
|
4950
|
-
up.destroy(this.element, destroyOptions);
|
4951
|
-
}
|
4952
|
-
onElementsRemoved() {
|
4953
|
-
}
|
4954
|
-
_startAnimation(options = {}) {
|
4955
|
-
const boxDone = up.animate(this.getBoxElement(), options.boxAnimation, options);
|
4956
|
-
let backdropDone;
|
4957
|
-
if (this.backdrop && !up.motion.isNone(options.boxAnimation)) {
|
4958
|
-
backdropDone = up.animate(this.backdropElement, options.backdropAnimation, options);
|
5101
|
+
_tryCloseForLocation(urlPattern, closeFn, options) {
|
5102
|
+
let location, resolution;
|
5103
|
+
if (urlPattern && (location = this.location) && (resolution = urlPattern.recognize(location))) {
|
5104
|
+
const closeValue = Object.assign(Object.assign({}, resolution), { location });
|
5105
|
+
up.error.muteUncriticalSync(() => closeFn.call(this, closeValue, options));
|
5106
|
+
}
|
4959
5107
|
}
|
4960
|
-
|
4961
|
-
|
4962
|
-
|
4963
|
-
|
4964
|
-
|
4965
|
-
|
4966
|
-
|
4967
|
-
|
4968
|
-
|
4969
|
-
|
5108
|
+
teardownHandlers() {
|
5109
|
+
var _b, _c;
|
5110
|
+
super.teardownHandlers();
|
5111
|
+
(_b = this.unbindParentClicked) === null || _b === void 0 ? void 0 : _b.call(this);
|
5112
|
+
(_c = this.unbindEscapePressed) === null || _c === void 0 ? void 0 : _c.call(this);
|
5113
|
+
this.overlayFocus.teardown();
|
5114
|
+
}
|
5115
|
+
destroyElements(options) {
|
5116
|
+
const animation = () => this.startCloseAnimation(options);
|
5117
|
+
const onFinished = () => {
|
5118
|
+
var _b;
|
5119
|
+
this.onElementsRemoved();
|
5120
|
+
(_b = options.onFinished) === null || _b === void 0 ? void 0 : _b.call(options);
|
5121
|
+
};
|
5122
|
+
const destroyOptions = Object.assign(Object.assign({}, options), { animation, onFinished, log: false });
|
5123
|
+
up.destroy(this.element, destroyOptions);
|
5124
|
+
}
|
5125
|
+
onElementsRemoved() {
|
5126
|
+
}
|
5127
|
+
_startAnimation(options = {}) {
|
5128
|
+
const boxDone = up.animate(this.getBoxElement(), options.boxAnimation, options);
|
5129
|
+
let backdropDone;
|
5130
|
+
if (this.backdrop && !up.motion.isNone(options.boxAnimation)) {
|
5131
|
+
backdropDone = up.animate(this.backdropElement, options.backdropAnimation, options);
|
5132
|
+
}
|
5133
|
+
return Promise.all([boxDone, backdropDone]);
|
5134
|
+
}
|
5135
|
+
startOpenAnimation(options = {}) {
|
5136
|
+
var _b;
|
5137
|
+
return __awaiter(this, void 0, void 0, function* () {
|
5138
|
+
let boxAnimation = (_b = options.animation) !== null && _b !== void 0 ? _b : this.evalOption(this.openAnimation);
|
5139
|
+
let backdropAnimation = 'fade-in';
|
5140
|
+
yield this._startAnimation({
|
5141
|
+
boxAnimation,
|
5142
|
+
backdropAnimation,
|
5143
|
+
easing: options.easing || this.openEasing,
|
5144
|
+
duration: options.duration || this.openDuration
|
5145
|
+
});
|
5146
|
+
this.wasEverVisible = true;
|
4970
5147
|
});
|
4971
|
-
|
4972
|
-
})
|
4973
|
-
|
4974
|
-
|
4975
|
-
|
4976
|
-
|
4977
|
-
|
4978
|
-
|
4979
|
-
|
4980
|
-
|
4981
|
-
|
4982
|
-
|
4983
|
-
|
4984
|
-
|
4985
|
-
|
4986
|
-
|
4987
|
-
|
4988
|
-
|
4989
|
-
|
4990
|
-
|
4991
|
-
|
4992
|
-
|
4993
|
-
|
4994
|
-
|
4995
|
-
|
4996
|
-
|
4997
|
-
|
4998
|
-
|
4999
|
-
|
5000
|
-
|
5001
|
-
|
5002
|
-
}
|
5148
|
+
}
|
5149
|
+
startCloseAnimation(options = {}) {
|
5150
|
+
var _b;
|
5151
|
+
let boxAnimation = this.wasEverVisible && ((_b = options.animation) !== null && _b !== void 0 ? _b : this.evalOption(this.closeAnimation));
|
5152
|
+
let backdropAnimation = 'fade-out';
|
5153
|
+
return this._startAnimation({
|
5154
|
+
boxAnimation,
|
5155
|
+
backdropAnimation,
|
5156
|
+
easing: options.easing || this.closeEasing,
|
5157
|
+
duration: options.duration || this.closeDuration
|
5158
|
+
});
|
5159
|
+
}
|
5160
|
+
accept(value = null, options = {}) {
|
5161
|
+
return this._executeCloseChange('accept', value, options);
|
5162
|
+
}
|
5163
|
+
dismiss(value = null, options = {}) {
|
5164
|
+
return this._executeCloseChange('dismiss', value, options);
|
5165
|
+
}
|
5166
|
+
_supportsDismissMethod(method) {
|
5167
|
+
return u.contains(this.dismissable, method);
|
5168
|
+
}
|
5169
|
+
_executeCloseChange(verb, value, options) {
|
5170
|
+
options = Object.assign(Object.assign({}, options), { verb, value, layer: this });
|
5171
|
+
return new up.Change.CloseLayer(options).execute();
|
5172
|
+
}
|
5173
|
+
getFirstSwappableElement() {
|
5174
|
+
return this.getContentElement().children[0];
|
5175
|
+
}
|
5176
|
+
toString() {
|
5177
|
+
return `${this.mode} overlay`;
|
5178
|
+
}
|
5179
|
+
},
|
5180
|
+
_a.VISUAL_KEYS = [
|
5181
|
+
'mode',
|
5182
|
+
'position',
|
5183
|
+
'align',
|
5184
|
+
'size',
|
5185
|
+
'origin',
|
5186
|
+
'class',
|
5187
|
+
'backdrop',
|
5188
|
+
'dismissable',
|
5189
|
+
'dismissLabel',
|
5190
|
+
'dismissARIALabel',
|
5191
|
+
'openAnimation',
|
5192
|
+
'closeAnimation',
|
5193
|
+
'openDuration',
|
5194
|
+
'closeDuration',
|
5195
|
+
'openEasing',
|
5196
|
+
'closeEasing',
|
5197
|
+
'trapFocus',
|
5198
|
+
],
|
5199
|
+
_a);
|
5003
5200
|
|
5004
5201
|
|
5005
5202
|
/***/ }),
|
5006
|
-
/*
|
5203
|
+
/* 50 */
|
5007
5204
|
/***/ (() => {
|
5008
5205
|
|
5009
5206
|
up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
|
@@ -5042,7 +5239,7 @@ up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
|
|
5042
5239
|
|
5043
5240
|
|
5044
5241
|
/***/ }),
|
5045
|
-
/*
|
5242
|
+
/* 51 */
|
5046
5243
|
/***/ (() => {
|
5047
5244
|
|
5048
5245
|
up.Layer.OverlayWithViewport = class OverlayWithViewport extends up.Layer.Overlay {
|
@@ -5071,7 +5268,7 @@ up.Layer.OverlayWithViewport = class OverlayWithViewport extends up.Layer.Overla
|
|
5071
5268
|
|
5072
5269
|
|
5073
5270
|
/***/ }),
|
5074
|
-
/*
|
5271
|
+
/* 52 */
|
5075
5272
|
/***/ (() => {
|
5076
5273
|
|
5077
5274
|
var _a;
|
@@ -5117,7 +5314,7 @@ up.Layer.Root = (_a = class Root extends up.Layer {
|
|
5117
5314
|
|
5118
5315
|
|
5119
5316
|
/***/ }),
|
5120
|
-
/*
|
5317
|
+
/* 53 */
|
5121
5318
|
/***/ (() => {
|
5122
5319
|
|
5123
5320
|
var _a;
|
@@ -5128,7 +5325,7 @@ up.Layer.Modal = (_a = class Modal extends up.Layer.OverlayWithViewport {
|
|
5128
5325
|
|
5129
5326
|
|
5130
5327
|
/***/ }),
|
5131
|
-
/*
|
5328
|
+
/* 54 */
|
5132
5329
|
/***/ (() => {
|
5133
5330
|
|
5134
5331
|
var _a;
|
@@ -5139,7 +5336,7 @@ up.Layer.Popup = (_a = class Popup extends up.Layer.OverlayWithTether {
|
|
5139
5336
|
|
5140
5337
|
|
5141
5338
|
/***/ }),
|
5142
|
-
/*
|
5339
|
+
/* 55 */
|
5143
5340
|
/***/ (() => {
|
5144
5341
|
|
5145
5342
|
var _a;
|
@@ -5150,7 +5347,7 @@ up.Layer.Drawer = (_a = class Drawer extends up.Layer.OverlayWithViewport {
|
|
5150
5347
|
|
5151
5348
|
|
5152
5349
|
/***/ }),
|
5153
|
-
/*
|
5350
|
+
/* 56 */
|
5154
5351
|
/***/ (() => {
|
5155
5352
|
|
5156
5353
|
var _a;
|
@@ -5161,7 +5358,7 @@ up.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {
|
|
5161
5358
|
|
5162
5359
|
|
5163
5360
|
/***/ }),
|
5164
|
-
/*
|
5361
|
+
/* 57 */
|
5165
5362
|
/***/ (() => {
|
5166
5363
|
|
5167
5364
|
var _a;
|
@@ -5174,7 +5371,7 @@ up.LayerLookup = (_a = class LayerLookup {
|
|
5174
5371
|
up.layer.normalizeOptions(options);
|
5175
5372
|
}
|
5176
5373
|
this._options = options;
|
5177
|
-
this._values = u.
|
5374
|
+
this._values = u.getSimpleTokens(options.layer);
|
5178
5375
|
}
|
5179
5376
|
all() {
|
5180
5377
|
let results = u.flatMap(this._values, value => this._resolveValue(value));
|
@@ -5207,7 +5404,7 @@ up.LayerLookup = (_a = class LayerLookup {
|
|
5207
5404
|
if (/^\d+$/.test(value)) {
|
5208
5405
|
return this._forIndex(Number(value));
|
5209
5406
|
}
|
5210
|
-
if (u.
|
5407
|
+
if (u.isElementLike(value)) {
|
5211
5408
|
return this._forElement(value);
|
5212
5409
|
}
|
5213
5410
|
switch (value) {
|
@@ -5274,7 +5471,7 @@ up.LayerLookup = (_a = class LayerLookup {
|
|
5274
5471
|
|
5275
5472
|
|
5276
5473
|
/***/ }),
|
5277
|
-
/*
|
5474
|
+
/* 58 */
|
5278
5475
|
/***/ (() => {
|
5279
5476
|
|
5280
5477
|
const u = up.util;
|
@@ -5388,11 +5585,11 @@ up.LayerStack = class LayerStack {
|
|
5388
5585
|
|
5389
5586
|
|
5390
5587
|
/***/ }),
|
5391
|
-
/*
|
5588
|
+
/* 59 */
|
5392
5589
|
/***/ (() => {
|
5393
5590
|
|
5394
5591
|
const u = up.util;
|
5395
|
-
up.
|
5592
|
+
up.LinkCurrentURLs = class LinkCurrentURLs {
|
5396
5593
|
constructor(link) {
|
5397
5594
|
this._isSafe = up.link.isSafe(link);
|
5398
5595
|
if (this._isSafe) {
|
@@ -5423,7 +5620,7 @@ up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
|
5423
5620
|
|
5424
5621
|
|
5425
5622
|
/***/ }),
|
5426
|
-
/*
|
5623
|
+
/* 60 */
|
5427
5624
|
/***/ (() => {
|
5428
5625
|
|
5429
5626
|
const u = up.util;
|
@@ -5432,12 +5629,13 @@ up.LinkFollowIntent = class LinkFollowIntent {
|
|
5432
5629
|
constructor(link, callback) {
|
5433
5630
|
this._link = link;
|
5434
5631
|
this._callback = callback;
|
5632
|
+
this._lastRequest = null;
|
5435
5633
|
this._on('mouseenter mousedown touchstart', (event) => this._scheduleCallback(event));
|
5436
5634
|
this._on('mouseleave', () => this._unscheduleCallback());
|
5437
5635
|
up.fragment.onAborted(this._link, () => this._unscheduleCallback());
|
5438
5636
|
}
|
5439
|
-
_on(eventType,
|
5440
|
-
up.on(this._link, eventType, { passive: true },
|
5637
|
+
_on(eventType, fn) {
|
5638
|
+
up.on(this._link, eventType, { passive: true }, fn);
|
5441
5639
|
}
|
5442
5640
|
_scheduleCallback(event) {
|
5443
5641
|
if (!up.link.shouldFollowEvent(event, this._link))
|
@@ -5453,8 +5651,11 @@ up.LinkFollowIntent = class LinkFollowIntent {
|
|
5453
5651
|
}
|
5454
5652
|
}
|
5455
5653
|
_unscheduleCallback() {
|
5654
|
+
var _a;
|
5456
5655
|
clearTimeout(this._timer);
|
5457
|
-
|
5656
|
+
if ((_a = this._lastRequest) === null || _a === void 0 ? void 0 : _a.background)
|
5657
|
+
this._lastRequest.abort();
|
5658
|
+
this._lastRequest = null;
|
5458
5659
|
}
|
5459
5660
|
_parseDelay() {
|
5460
5661
|
var _a;
|
@@ -5462,13 +5663,13 @@ up.LinkFollowIntent = class LinkFollowIntent {
|
|
5462
5663
|
}
|
5463
5664
|
_runCallback(event) {
|
5464
5665
|
up.log.putsEvent(event);
|
5465
|
-
|
5666
|
+
this._callback({ onRequestKnown: (request) => this._lastRequest = request });
|
5466
5667
|
}
|
5467
5668
|
};
|
5468
5669
|
|
5469
5670
|
|
5470
5671
|
/***/ }),
|
5471
|
-
/*
|
5672
|
+
/* 61 */
|
5472
5673
|
/***/ (function() {
|
5473
5674
|
|
5474
5675
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -5577,7 +5778,7 @@ up.MotionController = class MotionController {
|
|
5577
5778
|
|
5578
5779
|
|
5579
5780
|
/***/ }),
|
5580
|
-
/*
|
5781
|
+
/* 62 */
|
5581
5782
|
/***/ (() => {
|
5582
5783
|
|
5583
5784
|
const u = up.util;
|
@@ -5592,33 +5793,34 @@ up.NonceableCallback = class NonceableCallback {
|
|
5592
5793
|
return new this(match[3], match[2]);
|
5593
5794
|
}
|
5594
5795
|
toFunction(...argNames) {
|
5796
|
+
let script = this.script;
|
5595
5797
|
if (this.nonce) {
|
5596
5798
|
let callbackThis = this;
|
5597
5799
|
return function (...args) {
|
5598
|
-
return callbackThis._runAsNoncedFunction(this, argNames, args);
|
5800
|
+
return callbackThis._runAsNoncedFunction(script, this, argNames, args);
|
5599
5801
|
};
|
5600
5802
|
}
|
5601
5803
|
else {
|
5602
|
-
return new Function(...argNames,
|
5804
|
+
return new Function(...argNames, script);
|
5603
5805
|
}
|
5604
5806
|
}
|
5605
5807
|
toString() {
|
5606
5808
|
return `nonce-${this.nonce} ${this.script}`;
|
5607
5809
|
}
|
5608
|
-
_runAsNoncedFunction(thisArg, argNames, args) {
|
5810
|
+
_runAsNoncedFunction(script, thisArg, argNames, args) {
|
5609
5811
|
let wrappedScript = `
|
5610
5812
|
try {
|
5611
5813
|
up.noncedEval.value = (function(${argNames.join()}) {
|
5612
|
-
${
|
5814
|
+
${script}
|
5613
5815
|
}).apply(up.noncedEval.thisArg, up.noncedEval.args)
|
5614
5816
|
} catch (error) {
|
5615
5817
|
up.noncedEval.error = error
|
5616
5818
|
}
|
5617
5819
|
`;
|
5618
|
-
let
|
5820
|
+
let scriptElement;
|
5619
5821
|
try {
|
5620
5822
|
up.noncedEval = { args, thisArg: thisArg };
|
5621
|
-
|
5823
|
+
scriptElement = e.affix(document.body, 'script', { nonce: this.nonce, text: wrappedScript });
|
5622
5824
|
if (up.noncedEval.error) {
|
5623
5825
|
throw up.noncedEval.error;
|
5624
5826
|
}
|
@@ -5628,8 +5830,8 @@ up.NonceableCallback = class NonceableCallback {
|
|
5628
5830
|
}
|
5629
5831
|
finally {
|
5630
5832
|
up.noncedEval = undefined;
|
5631
|
-
if (
|
5632
|
-
|
5833
|
+
if (scriptElement) {
|
5834
|
+
scriptElement.remove();
|
5633
5835
|
}
|
5634
5836
|
}
|
5635
5837
|
}
|
@@ -5663,7 +5865,7 @@ up.NonceableCallback = class NonceableCallback {
|
|
5663
5865
|
|
5664
5866
|
|
5665
5867
|
/***/ }),
|
5666
|
-
/*
|
5868
|
+
/* 63 */
|
5667
5869
|
/***/ (() => {
|
5668
5870
|
|
5669
5871
|
const e = up.element;
|
@@ -5679,7 +5881,7 @@ up.OverlayFocus = class OverlayFocus {
|
|
5679
5881
|
return;
|
5680
5882
|
}
|
5681
5883
|
this._active = true;
|
5682
|
-
this._unsetAttrs = e.
|
5884
|
+
this._unsetAttrs = e.setAttrsTemp(this._focusElement, {
|
5683
5885
|
'tabindex': '0',
|
5684
5886
|
'role': 'dialog',
|
5685
5887
|
'aria-modal': this._trapFocus.toString()
|
@@ -5736,7 +5938,7 @@ up.OverlayFocus = class OverlayFocus {
|
|
5736
5938
|
|
5737
5939
|
|
5738
5940
|
/***/ }),
|
5739
|
-
/*
|
5941
|
+
/* 64 */
|
5740
5942
|
/***/ (() => {
|
5741
5943
|
|
5742
5944
|
const u = up.util;
|
@@ -5969,6 +6171,134 @@ up.Params = class Params {
|
|
5969
6171
|
};
|
5970
6172
|
|
5971
6173
|
|
6174
|
+
/***/ }),
|
6175
|
+
/* 65 */
|
6176
|
+
/***/ (() => {
|
6177
|
+
|
6178
|
+
const u = up.util;
|
6179
|
+
const e = up.element;
|
6180
|
+
up.Preview = class Preview {
|
6181
|
+
constructor({ fragment, request, renderOptions, cleaner }) {
|
6182
|
+
this.fragment = fragment;
|
6183
|
+
this.request = request;
|
6184
|
+
this.renderOptions = renderOptions;
|
6185
|
+
this._cleaner = cleaner;
|
6186
|
+
}
|
6187
|
+
undo(...args) {
|
6188
|
+
if (this.ended) {
|
6189
|
+
reportError(new up.Error('Preview used after end of request'));
|
6190
|
+
}
|
6191
|
+
else {
|
6192
|
+
this._cleaner.guard(...args);
|
6193
|
+
}
|
6194
|
+
}
|
6195
|
+
get origin() {
|
6196
|
+
return this.request.origin;
|
6197
|
+
}
|
6198
|
+
get params() {
|
6199
|
+
return this.request.params;
|
6200
|
+
}
|
6201
|
+
get layer() {
|
6202
|
+
return this.request.layer;
|
6203
|
+
}
|
6204
|
+
get ended() {
|
6205
|
+
return this.request.ended;
|
6206
|
+
}
|
6207
|
+
get expiredResponse() {
|
6208
|
+
return this.renderOptions.expiredResponse;
|
6209
|
+
}
|
6210
|
+
get revalidating() {
|
6211
|
+
return !!this.expiredResponse;
|
6212
|
+
}
|
6213
|
+
run(value, options = {}) {
|
6214
|
+
for (let fn of up.status.resolvePreviewFns(value)) {
|
6215
|
+
this.undo(up.error.guard(fn, this, options));
|
6216
|
+
}
|
6217
|
+
}
|
6218
|
+
revert() {
|
6219
|
+
this._cleaner.clean();
|
6220
|
+
}
|
6221
|
+
setAttrs(...args) {
|
6222
|
+
let [element, attrs] = this._parseMutatorArgs(args, 'val', 'val');
|
6223
|
+
this.undo(e.setAttrsTemp(element, attrs));
|
6224
|
+
}
|
6225
|
+
addClass(...args) {
|
6226
|
+
let [element, klass] = this._parseMutatorArgs(args, 'val', 'val');
|
6227
|
+
this.undo(e.addClassTemp(element, klass));
|
6228
|
+
}
|
6229
|
+
addClassBatch(elements, classes) {
|
6230
|
+
for (let element of elements) {
|
6231
|
+
for (let klass of classes) {
|
6232
|
+
this.addClass(element, klass);
|
6233
|
+
}
|
6234
|
+
}
|
6235
|
+
}
|
6236
|
+
removeClass(...args) {
|
6237
|
+
let [element, klass] = this._parseMutatorArgs(args, 'val', 'val');
|
6238
|
+
this.undo(e.removeClassTemp(element, klass));
|
6239
|
+
}
|
6240
|
+
setStyle(...args) {
|
6241
|
+
let [element, styles] = this._parseMutatorArgs(args, 'val', 'val');
|
6242
|
+
this.undo(e.setStyleTemp(element, styles));
|
6243
|
+
}
|
6244
|
+
disable(...args) {
|
6245
|
+
let [element] = this._parseMutatorArgs(args, 'val');
|
6246
|
+
this.undo(up.form.disable(element));
|
6247
|
+
}
|
6248
|
+
insert(...args) {
|
6249
|
+
let [reference, position = 'beforeend', tempValue] = this._parseMutatorArgs(args, 'val', u.isAdjacentPosition, 'val');
|
6250
|
+
this.undo(up.fragment.insertTemp(reference, position, tempValue));
|
6251
|
+
}
|
6252
|
+
show(...args) {
|
6253
|
+
let [element] = this._parseMutatorArgs(args, 'val');
|
6254
|
+
this.undo(e.showTemp(element));
|
6255
|
+
}
|
6256
|
+
hide(...args) {
|
6257
|
+
let [element] = this._parseMutatorArgs(args, 'val');
|
6258
|
+
this.undo(e.hideTemp(element));
|
6259
|
+
}
|
6260
|
+
hideContent(...args) {
|
6261
|
+
let [parent] = this._parseMutatorArgs(args, 'val');
|
6262
|
+
let wrapper = e.wrapChildren(parent);
|
6263
|
+
e.hide(wrapper);
|
6264
|
+
this.undo(() => e.unwrap(wrapper));
|
6265
|
+
}
|
6266
|
+
showPlaceholder(...args) {
|
6267
|
+
let [parent, placeholderReference] = this._parseMutatorArgs(args, 'val', 'val');
|
6268
|
+
let placeholderNodes = up.fragment.provideNodes(placeholderReference, { origin: this.origin });
|
6269
|
+
up.puts('[up-placeholder]', 'Showing placeholder %o', placeholderReference);
|
6270
|
+
if (parent) {
|
6271
|
+
this.swapContent(parent, placeholderNodes);
|
6272
|
+
}
|
6273
|
+
else if (this.layer === 'new') {
|
6274
|
+
this.openLayer(placeholderNodes, { closeAnimation: false });
|
6275
|
+
this.renderOptions.openAnimation = false;
|
6276
|
+
}
|
6277
|
+
}
|
6278
|
+
swapContent(...args) {
|
6279
|
+
let [parent, newContent] = this._parseMutatorArgs(args, 'val', 'val');
|
6280
|
+
this.hideContent(parent);
|
6281
|
+
this.insert(parent, newContent);
|
6282
|
+
}
|
6283
|
+
openLayer(content, options = {}) {
|
6284
|
+
let undoDismissValue = ':undo-preview';
|
6285
|
+
let onDismiss = ({ value }) => {
|
6286
|
+
if (value !== undoDismissValue)
|
6287
|
+
this.request.abort({ reason: 'Preview overlay dismissed' });
|
6288
|
+
};
|
6289
|
+
up.layer.open(Object.assign(Object.assign(Object.assign({}, u.pick(this.renderOptions, [...up.Layer.Overlay.VISUAL_KEYS, 'target'])), options), { content, abort: false, onDismiss }));
|
6290
|
+
let overlay = up.layer.front;
|
6291
|
+
this.undo(() => overlay.dismiss(undoDismissValue, { preventable: false }));
|
6292
|
+
return overlay;
|
6293
|
+
}
|
6294
|
+
_parseMutatorArgs(args, ...specs) {
|
6295
|
+
let [element, ...rest] = u.args(args, ...specs);
|
6296
|
+
element = up.fragment.get(element, { layer: this.layer, origin: this.origin }) || this.fragment;
|
6297
|
+
return [element, ...rest];
|
6298
|
+
}
|
6299
|
+
};
|
6300
|
+
|
6301
|
+
|
5972
6302
|
/***/ }),
|
5973
6303
|
/* 66 */
|
5974
6304
|
/***/ (() => {
|
@@ -5981,7 +6311,7 @@ up.ProgressBar = class ProgressBar {
|
|
5981
6311
|
this._element = e.affix(document.body, 'up-progress-bar');
|
5982
6312
|
this._element.style.transition = `width ${TRANSITION_DELAY}ms ease-out`;
|
5983
6313
|
this._moveTo(0);
|
5984
|
-
|
6314
|
+
e.paint(this._element);
|
5985
6315
|
this._width = 31;
|
5986
6316
|
this._nextStep();
|
5987
6317
|
}
|
@@ -6025,21 +6355,22 @@ up.ProgressBar = class ProgressBar {
|
|
6025
6355
|
|
6026
6356
|
const u = up.util;
|
6027
6357
|
up.RenderOptions = (function () {
|
6028
|
-
const
|
6029
|
-
|
6030
|
-
|
6031
|
-
|
6032
|
-
|
6033
|
-
focus: 'keep',
|
6034
|
-
abort: 'target',
|
6035
|
-
failOptions: true,
|
6358
|
+
const NO_PREVIEWS = {
|
6359
|
+
preview: false,
|
6360
|
+
disable: false,
|
6361
|
+
placeholder: false,
|
6362
|
+
feedback: false,
|
6036
6363
|
};
|
6037
|
-
const
|
6038
|
-
|
6364
|
+
const NO_INPUT_INTERFERENCE = {
|
6365
|
+
scroll: false,
|
6366
|
+
focus: 'keep',
|
6039
6367
|
confirm: false,
|
6040
|
-
|
6041
|
-
|
6042
|
-
|
6368
|
+
};
|
6369
|
+
const NO_MOTION = {
|
6370
|
+
transition: false,
|
6371
|
+
animation: false,
|
6372
|
+
openAnimation: false,
|
6373
|
+
closeAnimation: false,
|
6043
6374
|
};
|
6044
6375
|
const PREFLIGHT_KEYS = [
|
6045
6376
|
'url',
|
@@ -6053,9 +6384,13 @@ up.RenderOptions = (function () {
|
|
6053
6384
|
'abortable',
|
6054
6385
|
'confirm',
|
6055
6386
|
'feedback',
|
6387
|
+
'disable',
|
6388
|
+
'placeholder',
|
6389
|
+
'preview',
|
6056
6390
|
'origin',
|
6057
6391
|
'originLayer',
|
6058
6392
|
'baseLayer',
|
6393
|
+
'navigate',
|
6059
6394
|
'fail',
|
6060
6395
|
'onError',
|
6061
6396
|
];
|
@@ -6065,8 +6400,6 @@ up.RenderOptions = (function () {
|
|
6065
6400
|
'history',
|
6066
6401
|
'source',
|
6067
6402
|
'saveScroll',
|
6068
|
-
'navigate',
|
6069
|
-
'baseLayer',
|
6070
6403
|
]);
|
6071
6404
|
const CONTENT_KEYS = [
|
6072
6405
|
'url',
|
@@ -6090,16 +6423,18 @@ up.RenderOptions = (function () {
|
|
6090
6423
|
return { url: u.normalizeURL(url) };
|
6091
6424
|
}
|
6092
6425
|
}
|
6093
|
-
function
|
6094
|
-
|
6095
|
-
|
6096
|
-
|
6426
|
+
function removeUsePrefix(options) {
|
6427
|
+
u.renameKey(options, 'useData', 'data');
|
6428
|
+
u.renameKey(options, 'useHungry', 'hungry');
|
6429
|
+
u.renameKey(options, 'useKeep', 'keep');
|
6097
6430
|
}
|
6098
6431
|
function preprocess(options) {
|
6099
6432
|
var _a, _b;
|
6100
6433
|
(_b = (_a = up.migrate).preprocessRenderOptions) === null || _b === void 0 ? void 0 : _b.call(_a, options);
|
6101
|
-
|
6102
|
-
|
6434
|
+
up.layer.normalizeOptions(options);
|
6435
|
+
removeUsePrefix(options);
|
6436
|
+
const defaults = u.merge(up.fragment.config.renderOptions, navigateDefaults(options));
|
6437
|
+
return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, { inputDevice: up.event.inputDevice }, options, normalizeURL(options), rememberOriginLayer(options));
|
6103
6438
|
}
|
6104
6439
|
function rememberOriginLayer({ origin, originLayer }) {
|
6105
6440
|
if (origin && !originLayer) {
|
@@ -6134,12 +6469,11 @@ up.RenderOptions = (function () {
|
|
6134
6469
|
}
|
6135
6470
|
function deriveFailOptions(preprocessedOptions) {
|
6136
6471
|
let overrides = failOverrides(preprocessedOptions);
|
6137
|
-
let layers = rememberOriginLayer(overrides);
|
6138
6472
|
if (preprocessedOptions.failOptions) {
|
6139
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(
|
6473
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, preprocessedOptions.defaults), u.pick(preprocessedOptions, SHARED_KEYS)), overrides), { failPrefixForced: true });
|
6140
6474
|
}
|
6141
6475
|
else {
|
6142
|
-
return Object.assign(Object.assign(
|
6476
|
+
return Object.assign(Object.assign({}, preprocessedOptions), overrides);
|
6143
6477
|
}
|
6144
6478
|
}
|
6145
6479
|
return {
|
@@ -6147,6 +6481,9 @@ up.RenderOptions = (function () {
|
|
6147
6481
|
finalize,
|
6148
6482
|
assertContentGiven,
|
6149
6483
|
deriveFailOptions,
|
6484
|
+
NO_PREVIEWS,
|
6485
|
+
NO_MOTION,
|
6486
|
+
NO_INPUT_INTERFERENCE,
|
6150
6487
|
};
|
6151
6488
|
})();
|
6152
6489
|
|
@@ -6238,7 +6575,6 @@ up.Request = (_a = class Request extends up.Record {
|
|
6238
6575
|
'failMode',
|
6239
6576
|
'failContext',
|
6240
6577
|
'origin',
|
6241
|
-
'fragments',
|
6242
6578
|
'builtAt',
|
6243
6579
|
'wrapMethod',
|
6244
6580
|
'contentType',
|
@@ -6246,7 +6582,8 @@ up.Request = (_a = class Request extends up.Record {
|
|
6246
6582
|
'onLoading',
|
6247
6583
|
'fail',
|
6248
6584
|
'abortable',
|
6249
|
-
'
|
6585
|
+
'lateDelay',
|
6586
|
+
'previews',
|
6250
6587
|
];
|
6251
6588
|
}
|
6252
6589
|
defaults() {
|
@@ -6256,10 +6593,11 @@ up.Request = (_a = class Request extends up.Record {
|
|
6256
6593
|
headers: {},
|
6257
6594
|
timeout: up.network.config.timeout,
|
6258
6595
|
builtAt: new Date(),
|
6596
|
+
previews: [],
|
6259
6597
|
};
|
6260
6598
|
}
|
6261
6599
|
constructor(options) {
|
6262
|
-
var _b, _c
|
6600
|
+
var _b, _c;
|
6263
6601
|
super(options);
|
6264
6602
|
this.params = new up.Params(this.params);
|
6265
6603
|
if (this.wrapMethod == null) {
|
@@ -6275,27 +6613,39 @@ up.Request = (_a = class Request extends up.Record {
|
|
6275
6613
|
this.mode || (this.mode = this.layer.mode);
|
6276
6614
|
this.failMode || (this.failMode = (_c = this.failLayer) === null || _c === void 0 ? void 0 : _c.mode);
|
6277
6615
|
}
|
6278
|
-
this.
|
6279
|
-
|
6616
|
+
this.bindLayer = options.bindLayer || this.layer;
|
6617
|
+
this._fragments = options.fragments;
|
6618
|
+
this._bindFragments = options.bindFragments;
|
6619
|
+
this._deferred = u.newDeferred();
|
6280
6620
|
this._setAutoHeaders();
|
6281
6621
|
}
|
6622
|
+
get effectiveLateTime() {
|
6623
|
+
var _b;
|
6624
|
+
if (this.background) {
|
6625
|
+
return false;
|
6626
|
+
}
|
6627
|
+
else {
|
6628
|
+
return (_b = this.lateDelay) !== null && _b !== void 0 ? _b : u.evalOption(up.network.config.lateDelay, this);
|
6629
|
+
}
|
6630
|
+
}
|
6631
|
+
isTimed() {
|
6632
|
+
return u.isNumber(this.effectiveLateTime);
|
6633
|
+
}
|
6282
6634
|
get xhr() {
|
6283
6635
|
var _b;
|
6284
6636
|
return (_b = this._xhr) !== null && _b !== void 0 ? _b : (this._xhr = new XMLHttpRequest());
|
6285
6637
|
}
|
6286
6638
|
get fragments() {
|
6287
|
-
|
6288
|
-
return this._fragments;
|
6289
|
-
}
|
6290
|
-
else {
|
6291
|
-
let steps = up.fragment.parseTargetSteps(this.target);
|
6292
|
-
let selectors = u.map(steps, 'selector');
|
6293
|
-
let lookupOpts = { origin: this.origin, layer: this.layer };
|
6294
|
-
return u.compact(u.map(selectors, (selector) => up.fragment.get(selector, lookupOpts)));
|
6295
|
-
}
|
6639
|
+
return (this._fragments || (this._fragments = this._findFragments()));
|
6296
6640
|
}
|
6297
|
-
|
6298
|
-
|
6641
|
+
_findFragments() {
|
6642
|
+
let steps = up.fragment.parseTargetSteps(this.target);
|
6643
|
+
let lookupOpts = { origin: this.origin, layer: this.layer };
|
6644
|
+
let matches = u.map(steps, (step) => up.fragment.get(step.selector, lookupOpts));
|
6645
|
+
return u.compact(matches);
|
6646
|
+
}
|
6647
|
+
get bindFragments() {
|
6648
|
+
return this._bindFragments || this.fragments;
|
6299
6649
|
}
|
6300
6650
|
get fragment() {
|
6301
6651
|
var _b;
|
@@ -6311,8 +6661,10 @@ up.Request = (_a = class Request extends up.Record {
|
|
6311
6661
|
u.task(() => {
|
6312
6662
|
this.layer = undefined;
|
6313
6663
|
this.failLayer = undefined;
|
6664
|
+
this._bindLayer = undefined;
|
6314
6665
|
this.origin = undefined;
|
6315
|
-
this.
|
6666
|
+
this._fragments = undefined;
|
6667
|
+
this._bindFragments = undefined;
|
6316
6668
|
});
|
6317
6669
|
}
|
6318
6670
|
_extractHashFromURL() {
|
@@ -6366,6 +6718,11 @@ up.Request = (_a = class Request extends up.Record {
|
|
6366
6718
|
this.abort({ reason: 'Prevented by event listener' });
|
6367
6719
|
}
|
6368
6720
|
}
|
6721
|
+
runPreviews(renderOptions) {
|
6722
|
+
if (!this.ended && !this.fromCache) {
|
6723
|
+
this._revertPreviews = up.status.runPreviews(this, renderOptions);
|
6724
|
+
}
|
6725
|
+
}
|
6369
6726
|
_emitLoad() {
|
6370
6727
|
let event = this.emit('up:request:load', { log: ['Loading %s', this.description] });
|
6371
6728
|
return !event.defaultPrevented;
|
@@ -6395,35 +6752,47 @@ up.Request = (_a = class Request extends up.Record {
|
|
6395
6752
|
}
|
6396
6753
|
}
|
6397
6754
|
_setAbortedState(reason) {
|
6398
|
-
if (this.
|
6755
|
+
if (this.ended)
|
6399
6756
|
return;
|
6400
6757
|
let message = 'Aborted request to ' + this.description + (reason ? ': ' + reason : '');
|
6401
6758
|
this.state = 'aborted';
|
6402
|
-
this.
|
6759
|
+
this._reject(new up.Aborted(message));
|
6403
6760
|
this.emit('up:request:aborted', { log: message });
|
6404
6761
|
return true;
|
6405
6762
|
}
|
6406
6763
|
_setOfflineState(reason) {
|
6407
|
-
if (this.
|
6764
|
+
if (this.ended)
|
6408
6765
|
return;
|
6409
6766
|
let message = 'Cannot load request to ' + this.description + (reason ? ': ' + reason : '');
|
6410
6767
|
this.state = 'offline';
|
6411
6768
|
this.emit('up:request:offline', { log: message });
|
6412
|
-
this.
|
6769
|
+
this._reject(new up.Offline(message));
|
6413
6770
|
}
|
6414
6771
|
respondWith(response) {
|
6415
6772
|
this.response = response;
|
6416
|
-
if (this.
|
6773
|
+
if (this.ended)
|
6417
6774
|
return;
|
6418
6775
|
this.state = 'loaded';
|
6419
6776
|
if (response.ok) {
|
6420
|
-
this.
|
6777
|
+
this._resolve(response);
|
6421
6778
|
}
|
6422
6779
|
else {
|
6423
|
-
this.
|
6780
|
+
this._reject(response);
|
6424
6781
|
}
|
6425
6782
|
}
|
6426
|
-
|
6783
|
+
_resolve(response) {
|
6784
|
+
this._onSettle();
|
6785
|
+
this._deferred.resolve(response);
|
6786
|
+
}
|
6787
|
+
_reject(responseOrError) {
|
6788
|
+
this._onSettle();
|
6789
|
+
this._deferred.reject(responseOrError);
|
6790
|
+
}
|
6791
|
+
_onSettle() {
|
6792
|
+
var _b;
|
6793
|
+
(_b = this._revertPreviews) === null || _b === void 0 ? void 0 : _b.call(this);
|
6794
|
+
}
|
6795
|
+
get ended() {
|
6427
6796
|
return (this.state !== 'new') && (this.state !== 'loading') && (this.state !== 'tracking');
|
6428
6797
|
}
|
6429
6798
|
csrfHeader() {
|
@@ -6473,7 +6842,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
6473
6842
|
}
|
6474
6843
|
_buildEventEmitter(args) {
|
6475
6844
|
return up.EventEmitter.fromEmitArgs(args, {
|
6476
|
-
layer: this.
|
6845
|
+
layer: this.bindLayer,
|
6477
6846
|
request: this,
|
6478
6847
|
origin: this.origin
|
6479
6848
|
});
|
@@ -6487,12 +6856,15 @@ up.Request = (_a = class Request extends up.Record {
|
|
6487
6856
|
get description() {
|
6488
6857
|
return this.method + ' ' + this.url;
|
6489
6858
|
}
|
6490
|
-
|
6491
|
-
|
6492
|
-
return u.some(this.
|
6493
|
-
return u.some(
|
6859
|
+
isBoundToSubtrees(subtreeRoots) {
|
6860
|
+
subtreeRoots = u.wrapList(subtreeRoots);
|
6861
|
+
return u.some(this.bindFragments, function (fragment) {
|
6862
|
+
return u.some(subtreeRoots, (subtreeElement) => subtreeElement.contains(fragment));
|
6494
6863
|
});
|
6495
6864
|
}
|
6865
|
+
isBoundToLayers(layers) {
|
6866
|
+
return u.contains(layers, this.bindLayer);
|
6867
|
+
}
|
6496
6868
|
get age() {
|
6497
6869
|
return new Date() - this.builtAt;
|
6498
6870
|
}
|
@@ -6555,7 +6927,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
6555
6927
|
}
|
6556
6928
|
},
|
6557
6929
|
(() => {
|
6558
|
-
u.
|
6930
|
+
u.delegatePromise(_a.prototype, '_deferred');
|
6559
6931
|
})(),
|
6560
6932
|
_a);
|
6561
6933
|
|
@@ -6605,8 +6977,8 @@ class Route {
|
|
6605
6977
|
return true;
|
6606
6978
|
if (!newValue)
|
6607
6979
|
return false;
|
6608
|
-
let cachedTokens =
|
6609
|
-
let newTokens =
|
6980
|
+
let cachedTokens = up.fragment.splitTarget(cachedValue);
|
6981
|
+
let newTokens = up.fragment.splitTarget(newValue);
|
6610
6982
|
return u.containsAll(cachedTokens, newTokens);
|
6611
6983
|
}
|
6612
6984
|
else {
|
@@ -6667,7 +7039,13 @@ up.Request.Cache = class Cache {
|
|
6667
7039
|
return __awaiter(this, void 0, void 0, function* () {
|
6668
7040
|
newRequest.trackedRequest = existingRequest;
|
6669
7041
|
newRequest.state = 'tracking';
|
6670
|
-
let value
|
7042
|
+
let value;
|
7043
|
+
if (existingRequest.ended && existingRequest.response) {
|
7044
|
+
value = existingRequest.response;
|
7045
|
+
}
|
7046
|
+
else {
|
7047
|
+
value = yield u.always(existingRequest);
|
7048
|
+
}
|
6671
7049
|
if (value instanceof up.Response) {
|
6672
7050
|
if (options.force || existingRequest.cacheRoute.satisfies(existingRequest, newRequest)) {
|
6673
7051
|
newRequest.fromCache = true;
|
@@ -6683,7 +7061,7 @@ up.Request.Cache = class Cache {
|
|
6683
7061
|
}
|
6684
7062
|
else {
|
6685
7063
|
newRequest.state = existingRequest.state;
|
6686
|
-
newRequest.
|
7064
|
+
newRequest._reject(value);
|
6687
7065
|
}
|
6688
7066
|
});
|
6689
7067
|
}
|
@@ -6766,8 +7144,10 @@ up.Request.Queue = class Queue {
|
|
6766
7144
|
}
|
6767
7145
|
}
|
6768
7146
|
_scheduleSlowTimer(request) {
|
6769
|
-
|
6770
|
-
|
7147
|
+
if (!request.isTimed())
|
7148
|
+
return;
|
7149
|
+
let timeUntilLate = Math.max(request.effectiveLateTime - request.age);
|
7150
|
+
u.timer(timeUntilLate, () => this._checkForLate());
|
6771
7151
|
}
|
6772
7152
|
_getMaxConcurrency() {
|
6773
7153
|
return u.evalOption(up.network.config.concurrency);
|
@@ -6797,8 +7177,8 @@ up.Request.Queue = class Queue {
|
|
6797
7177
|
if ((responseOrError instanceof up.Response) && responseOrError.ok) {
|
6798
7178
|
up.network.registerAliasForRedirect(request, responseOrError);
|
6799
7179
|
}
|
6800
|
-
this._checkLate();
|
6801
7180
|
queueMicrotask(() => this._poke());
|
7181
|
+
u.task(() => this._checkForRecover());
|
6802
7182
|
}
|
6803
7183
|
_poke() {
|
6804
7184
|
let request;
|
@@ -6807,10 +7187,7 @@ up.Request.Queue = class Queue {
|
|
6807
7187
|
}
|
6808
7188
|
}
|
6809
7189
|
abort(...args) {
|
6810
|
-
|
6811
|
-
let options = u.extractOptions(args);
|
6812
|
-
let { except, reason, logOnce } = options;
|
6813
|
-
let conditions = (_a = args[0]) !== null && _a !== void 0 ? _a : true;
|
7190
|
+
let [conditions = true, { except, reason, logOnce }] = u.args(args, 'val', 'options');
|
6814
7191
|
let tester = up.Request.tester(conditions, { except });
|
6815
7192
|
for (let list of [this._currentRequests, this._queuedRequests]) {
|
6816
7193
|
const abortableRequests = u.filter(list, tester);
|
@@ -6824,22 +7201,25 @@ up.Request.Queue = class Queue {
|
|
6824
7201
|
}
|
6825
7202
|
}
|
6826
7203
|
}
|
6827
|
-
|
6828
|
-
|
6829
|
-
|
6830
|
-
|
6831
|
-
|
6832
|
-
|
6833
|
-
|
6834
|
-
|
6835
|
-
|
6836
|
-
}
|
7204
|
+
_checkForLate() {
|
7205
|
+
if (!this._emittedLate && this._hasLateTimedRequests()) {
|
7206
|
+
this._emittedLate = true;
|
7207
|
+
up.emit('up:network:late', { log: 'Server is slow to respond' });
|
7208
|
+
}
|
7209
|
+
}
|
7210
|
+
_checkForRecover() {
|
7211
|
+
if (this._emittedLate && !this._timedRequests.length) {
|
7212
|
+
this._emittedLate = false;
|
7213
|
+
up.emit('up:network:recover', { log: 'Slow requests were loaded' });
|
6837
7214
|
}
|
6838
7215
|
}
|
6839
|
-
|
6840
|
-
|
7216
|
+
get _timedRequests() {
|
7217
|
+
return this.allRequests.filter((request) => request.isTimed());
|
7218
|
+
}
|
7219
|
+
_hasLateTimedRequests() {
|
6841
7220
|
const timerTolerance = 1;
|
6842
|
-
|
7221
|
+
const isLate = (request) => request.age >= (request.effectiveLateTime - timerTolerance);
|
7222
|
+
return u.some(this._timedRequests, isLate);
|
6843
7223
|
}
|
6844
7224
|
};
|
6845
7225
|
|
@@ -7000,7 +7380,7 @@ up.Response = class Response extends up.Record {
|
|
7000
7380
|
}
|
7001
7381
|
get varyHeaderNames() {
|
7002
7382
|
let varyHeaderValue = this.header('Vary');
|
7003
|
-
return u.
|
7383
|
+
return u.getSimpleTokens(varyHeaderValue, { separator: ',' });
|
7004
7384
|
}
|
7005
7385
|
get contentType() {
|
7006
7386
|
return this.header('Content-Type');
|
@@ -7043,15 +7423,15 @@ const u = up.util;
|
|
7043
7423
|
const e = up.element;
|
7044
7424
|
const FULL_DOCUMENT_PATTERN = /^\s*<(html|!DOCTYPE)\b/i;
|
7045
7425
|
up.ResponseDoc = (_a = class ResponseDoc {
|
7046
|
-
constructor({ document, fragment, content, target, origin, cspNonces, match }) {
|
7426
|
+
constructor({ document, fragment, content, target, origin, data, cspNonces, match }) {
|
7047
7427
|
if (document) {
|
7048
|
-
this._parseDocument(document);
|
7428
|
+
this._parseDocument(document, origin, data);
|
7049
7429
|
}
|
7050
7430
|
else if (fragment) {
|
7051
|
-
this._parseFragment(fragment);
|
7431
|
+
this._parseFragment(fragment, origin, data);
|
7052
7432
|
}
|
7053
7433
|
else {
|
7054
|
-
this._parseContent(content || '', target);
|
7434
|
+
this._parseContent(content || '', origin, target, data);
|
7055
7435
|
}
|
7056
7436
|
this._cspNonces = cspNonces;
|
7057
7437
|
if (origin) {
|
@@ -7062,46 +7442,49 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
7062
7442
|
}
|
7063
7443
|
this._match = match;
|
7064
7444
|
}
|
7065
|
-
_parseDocument(value) {
|
7445
|
+
_parseDocument(value, origin, data) {
|
7066
7446
|
if (value instanceof Document) {
|
7067
7447
|
this._document = value;
|
7068
7448
|
this._isFullDocument = true;
|
7069
7449
|
}
|
7070
7450
|
else if (u.isString(value)) {
|
7071
|
-
this._document = e.createBrokenDocumentFromHTML(value);
|
7072
7451
|
this._isFullDocument = FULL_DOCUMENT_PATTERN.test(value);
|
7073
|
-
|
7452
|
+
let htmlParser = (html) => [e.createBrokenDocumentFromHTML(html)];
|
7453
|
+
let nodes = up.fragment.provideNodes(value, { origin, data, htmlParser });
|
7454
|
+
if (nodes[0] instanceof Document) {
|
7455
|
+
this._document = nodes[0];
|
7456
|
+
}
|
7457
|
+
else {
|
7458
|
+
this._document = this._buildFauxDocument(nodes);
|
7459
|
+
}
|
7074
7460
|
}
|
7075
7461
|
else {
|
7076
7462
|
this._document = this._buildFauxDocument(value);
|
7077
|
-
this._isFullDocument = value.matches('html');
|
7078
7463
|
}
|
7079
7464
|
}
|
7080
|
-
|
7081
|
-
|
7082
|
-
this._document = this._buildFauxDocument(parsed);
|
7465
|
+
_parseDocumentFromHTML(html) {
|
7466
|
+
return e.createBrokenDocumentFromHTML(html);
|
7083
7467
|
}
|
7084
|
-
|
7468
|
+
_parseFragment(value, origin, data) {
|
7469
|
+
let element = e.extractSingular(up.fragment.provideNodes(value, { origin, data }));
|
7470
|
+
this._document = this._buildFauxDocument(element);
|
7471
|
+
}
|
7472
|
+
_parseContent(value, origin, target, data) {
|
7085
7473
|
if (!target)
|
7086
7474
|
up.fail("must pass a { target } when passing { content }");
|
7087
7475
|
let simplifiedTarget = u.map(up.fragment.parseTargetSteps(target), 'selector').join();
|
7088
|
-
|
7089
|
-
|
7090
|
-
matchingElement.innerHTML = value;
|
7091
|
-
}
|
7092
|
-
else {
|
7093
|
-
matchingElement.appendChild(value);
|
7094
|
-
}
|
7476
|
+
let nodes = up.fragment.provideNodes(value, { origin, data });
|
7477
|
+
let matchingElement = e.createFromSelector(simplifiedTarget, { content: nodes });
|
7095
7478
|
this._document = this._buildFauxDocument(matchingElement);
|
7096
7479
|
}
|
7097
|
-
_buildFauxDocument(
|
7480
|
+
_buildFauxDocument(nodes) {
|
7481
|
+
nodes = u.wrapList(nodes);
|
7098
7482
|
let fauxDocument = document.createElement('up-document');
|
7099
|
-
fauxDocument.append(
|
7100
|
-
fauxDocument.documentElement = node;
|
7483
|
+
fauxDocument.append(...nodes);
|
7101
7484
|
return fauxDocument;
|
7102
7485
|
}
|
7103
7486
|
rootSelector() {
|
7104
|
-
return up.fragment.toTarget(this._document.
|
7487
|
+
return up.fragment.toTarget(this._document.children[0]);
|
7105
7488
|
}
|
7106
7489
|
get title() {
|
7107
7490
|
return this._fromHead(this._getTitleText);
|
@@ -7183,7 +7566,7 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
7183
7566
|
}
|
7184
7567
|
finalizeElement(element) {
|
7185
7568
|
up.NonceableCallback.adoptNonces(element, this._cspNonces);
|
7186
|
-
if (this.
|
7569
|
+
if (this._document instanceof Document) {
|
7187
7570
|
let brokenElements = e.subtree(element, ':is(noscript,script,audio,video):not(.up-keeping, .up-keeping *)');
|
7188
7571
|
u.each(brokenElements, e.fixParserDamage);
|
7189
7572
|
}
|
@@ -7293,17 +7676,18 @@ up.RevealMotion = class RevealMotion {
|
|
7293
7676
|
/***/ (() => {
|
7294
7677
|
|
7295
7678
|
const u = up.util;
|
7296
|
-
const
|
7679
|
+
const e = up.element;
|
7297
7680
|
up.Selector = class Selector {
|
7298
7681
|
constructor(selector, elementOrDocument, options = {}) {
|
7299
7682
|
var _a;
|
7300
7683
|
this._filters = [];
|
7301
|
-
|
7684
|
+
let matchingInExternalDocument = elementOrDocument && !document.contains(elementOrDocument);
|
7685
|
+
if (!matchingInExternalDocument && !options.destroying) {
|
7302
7686
|
this._filters.push(up.fragment.isNotDestroying);
|
7303
7687
|
}
|
7304
|
-
|
7688
|
+
this._ignoreLayers = matchingInExternalDocument || options.layer === 'any' || up.layer.count === 1;
|
7305
7689
|
let expandTargetLayer;
|
7306
|
-
if (
|
7690
|
+
if (this._ignoreLayers) {
|
7307
7691
|
expandTargetLayer = up.layer.root;
|
7308
7692
|
}
|
7309
7693
|
else {
|
@@ -7314,44 +7698,45 @@ up.Selector = class Selector {
|
|
7314
7698
|
this._filters.push(match => u.some(this._layers, layer => layer.contains(match)));
|
7315
7699
|
expandTargetLayer = this._layers[0];
|
7316
7700
|
}
|
7317
|
-
|
7318
|
-
this._selectors = expandedTargets.map((target) => {
|
7319
|
-
if (!up.browser.canHasSelector()) {
|
7320
|
-
target = target.replace(CSS_HAS_SUFFIX_PATTERN, (match, descendantSelector) => {
|
7321
|
-
this._filters.push(element => element.querySelector(descendantSelector));
|
7322
|
-
return '';
|
7323
|
-
});
|
7324
|
-
}
|
7325
|
-
return target || '*';
|
7326
|
-
});
|
7701
|
+
this._selectors = up.fragment.expandTargets(selector, Object.assign(Object.assign({}, options), { layer: expandTargetLayer }));
|
7327
7702
|
this._unionSelector = this._selectors.join() || 'match-none';
|
7328
7703
|
}
|
7329
7704
|
matches(element) {
|
7330
|
-
return
|
7705
|
+
return e.elementLikeMatches(element, this._unionSelector) && this._passesFilter(element);
|
7331
7706
|
}
|
7332
7707
|
closest(element) {
|
7333
|
-
|
7334
|
-
|
7335
|
-
|
7708
|
+
return this._filterOne(element.closest(this._unionSelector));
|
7709
|
+
}
|
7710
|
+
descendants(root = document) {
|
7711
|
+
return this._filterMany(root.querySelectorAll(this._unionSelector));
|
7712
|
+
}
|
7713
|
+
firstDescendant(root) {
|
7714
|
+
if (this._ignoreLayers) {
|
7715
|
+
root || (root = document);
|
7716
|
+
return this._firstSelectorMatch((selector) => root.querySelectorAll(selector));
|
7336
7717
|
}
|
7337
|
-
else
|
7338
|
-
return this.
|
7718
|
+
else {
|
7719
|
+
return u.findResult(this._layers, (layer) => {
|
7720
|
+
return this._firstSelectorMatch((selector) => e.subtree(layer.element, selector));
|
7721
|
+
});
|
7339
7722
|
}
|
7340
7723
|
}
|
7724
|
+
subtree(root) {
|
7725
|
+
return this._filterMany(e.subtree(root, this._unionSelector));
|
7726
|
+
}
|
7727
|
+
_firstSelectorMatch(fn) {
|
7728
|
+
return u.findResult(this._selectors, (selector) => {
|
7729
|
+
return this._filterMany(fn(selector))[0];
|
7730
|
+
});
|
7731
|
+
}
|
7341
7732
|
_passesFilter(element) {
|
7342
|
-
return u.every(this._filters, filter => filter(element));
|
7733
|
+
return element && u.every(this._filters, filter => filter(element));
|
7343
7734
|
}
|
7344
|
-
|
7345
|
-
|
7346
|
-
return u.filter(results, element => this._passesFilter(element));
|
7735
|
+
_filterOne(element) {
|
7736
|
+
return u.presence(element, this._passesFilter.bind(this));
|
7347
7737
|
}
|
7348
|
-
|
7349
|
-
|
7350
|
-
if (!(root instanceof Document) && this.matches(root)) {
|
7351
|
-
results.push(root);
|
7352
|
-
}
|
7353
|
-
results.push(...this.descendants(root));
|
7354
|
-
return results;
|
7738
|
+
_filterMany(elements) {
|
7739
|
+
return u.filter(elements, this._passesFilter.bind(this));
|
7355
7740
|
}
|
7356
7741
|
};
|
7357
7742
|
|
@@ -7487,7 +7872,7 @@ up.URLPattern = class URLPattern {
|
|
7487
7872
|
this._groups = [];
|
7488
7873
|
const positiveList = [];
|
7489
7874
|
const negativeList = [];
|
7490
|
-
for (let pattern of u.
|
7875
|
+
for (let pattern of u.getSimpleTokens(fullPattern)) {
|
7491
7876
|
if (pattern[0] === '-') {
|
7492
7877
|
negativeList.push(pattern.substring(1));
|
7493
7878
|
}
|
@@ -7611,7 +7996,7 @@ up.framework = (function () {
|
|
7611
7996
|
return !supportIssue();
|
7612
7997
|
}
|
7613
7998
|
function supportIssue() {
|
7614
|
-
for (let feature of ['
|
7999
|
+
for (let feature of ['Promise', 'DOMParser', 'FormData', 'reportError']) {
|
7615
8000
|
if (!window[feature]) {
|
7616
8001
|
return `Browser doesn't support the ${feature} API`;
|
7617
8002
|
}
|
@@ -7619,6 +8004,11 @@ up.framework = (function () {
|
|
7619
8004
|
if (document.compatMode === 'BackCompat') {
|
7620
8005
|
return 'Browser is in quirks mode (missing DOCTYPE?)';
|
7621
8006
|
}
|
8007
|
+
for (let selector of [':is(*)', ':has(*)']) {
|
8008
|
+
if (!CSS.supports(`selector(${selector})`)) {
|
8009
|
+
return `Browser doesn't support the ${selector} selector`;
|
8010
|
+
}
|
8011
|
+
}
|
7622
8012
|
}
|
7623
8013
|
return {
|
7624
8014
|
onEvaled,
|
@@ -7788,29 +8178,32 @@ up.protocol = (function () {
|
|
7788
8178
|
return extractHeader(xhr, 'expireCache') || ((_b = (_a = up.migrate).clearCacheFromXHR) === null || _b === void 0 ? void 0 : _b.call(_a, xhr));
|
7789
8179
|
}
|
7790
8180
|
function contextFromXHR(xhr) {
|
7791
|
-
return extractHeader(xhr, 'context',
|
8181
|
+
return extractHeader(xhr, 'context', u.parseRelaxedJSON);
|
7792
8182
|
}
|
7793
8183
|
function methodFromXHR(xhr) {
|
7794
8184
|
return extractHeader(xhr, 'method', u.normalizeMethod);
|
7795
8185
|
}
|
7796
8186
|
function titleFromXHR(xhr) {
|
7797
8187
|
var _a, _b, _c;
|
7798
|
-
return (_c = (_b = (_a = up.migrate).titleFromXHR) === null || _b === void 0 ? void 0 : _b.call(_a, xhr)) !== null && _c !== void 0 ? _c : extractHeader(xhr, 'title',
|
8188
|
+
return (_c = (_b = (_a = up.migrate).titleFromXHR) === null || _b === void 0 ? void 0 : _b.call(_a, xhr)) !== null && _c !== void 0 ? _c : extractHeader(xhr, 'title', u.parseRelaxedJSON);
|
7799
8189
|
}
|
7800
8190
|
function eventPlansFromXHR(xhr) {
|
7801
|
-
return extractHeader(xhr, 'events',
|
8191
|
+
return extractHeader(xhr, 'events', u.parseRelaxedJSON);
|
7802
8192
|
}
|
7803
8193
|
function acceptLayerFromXHR(xhr) {
|
7804
|
-
return extractHeader(xhr, 'acceptLayer',
|
8194
|
+
return extractHeader(xhr, 'acceptLayer', u.parseRelaxedJSON);
|
7805
8195
|
}
|
7806
8196
|
function dismissLayerFromXHR(xhr) {
|
7807
|
-
return extractHeader(xhr, 'dismissLayer',
|
8197
|
+
return extractHeader(xhr, 'dismissLayer', u.parseRelaxedJSON);
|
7808
8198
|
}
|
7809
8199
|
const initialRequestMethod = u.memoize(function () {
|
7810
8200
|
return u.normalizeMethod(up.browser.popCookie('_up_method'));
|
7811
8201
|
});
|
7812
8202
|
function locationFromXHR(xhr) {
|
7813
|
-
|
8203
|
+
let location = extractHeader(xhr, 'location') || xhr.responseURL;
|
8204
|
+
if (location) {
|
8205
|
+
return u.normalizeURL(location);
|
8206
|
+
}
|
7814
8207
|
}
|
7815
8208
|
const config = new up.Config(() => ({
|
7816
8209
|
methodParam: '_method',
|
@@ -7975,6 +8368,9 @@ up.script = (function () {
|
|
7975
8368
|
],
|
7976
8369
|
nonceableAttributes: [
|
7977
8370
|
'up-watch',
|
8371
|
+
'up-on-keep',
|
8372
|
+
'up-on-hungry',
|
8373
|
+
'up-on-opened',
|
7978
8374
|
'up-on-accepted',
|
7979
8375
|
'up-on-dismissed',
|
7980
8376
|
'up-on-loaded',
|
@@ -7984,7 +8380,10 @@ up.script = (function () {
|
|
7984
8380
|
'up-on-offline',
|
7985
8381
|
],
|
7986
8382
|
scriptSelectors: [
|
7987
|
-
'script'
|
8383
|
+
'script:not([type])',
|
8384
|
+
'script[type="text/javascript"]',
|
8385
|
+
'script[type="module"]',
|
8386
|
+
'script[type="importmap"]',
|
7988
8387
|
],
|
7989
8388
|
noScriptSelectors: [
|
7990
8389
|
'script[type="application/ld+json"]'
|
@@ -8015,10 +8414,13 @@ up.script = (function () {
|
|
8015
8414
|
function registerAttrCompiler(...args) {
|
8016
8415
|
let [attr, options, valueCallback] = parseProcessorArgs(args);
|
8017
8416
|
let selector = `[${attr}]`;
|
8417
|
+
let { defaultValue } = options;
|
8018
8418
|
let callback = (element) => {
|
8019
|
-
let value = e.booleanOrStringAttr(element, attr
|
8020
|
-
if (
|
8419
|
+
let value = e.booleanOrStringAttr(element, attr);
|
8420
|
+
if (value === false)
|
8021
8421
|
return;
|
8422
|
+
if (u.isDefined(defaultValue) && value === true)
|
8423
|
+
value = defaultValue;
|
8022
8424
|
return valueCallback(element, value);
|
8023
8425
|
};
|
8024
8426
|
registerProcessor([selector, options, callback]);
|
@@ -8045,11 +8447,7 @@ up.script = (function () {
|
|
8045
8447
|
}
|
8046
8448
|
}
|
8047
8449
|
const parseProcessorArgs = function (args) {
|
8048
|
-
|
8049
|
-
const selector = args.shift();
|
8050
|
-
const callback = args.pop();
|
8051
|
-
const options = Object.assign(Object.assign({}, defaults), u.extractOptions(args));
|
8052
|
-
return [selector, options, callback];
|
8450
|
+
return u.args(args, 'val', 'options', 'callback');
|
8053
8451
|
};
|
8054
8452
|
function buildProcessor(args, overrides) {
|
8055
8453
|
let [selector, options, callback] = parseProcessorArgs(args);
|
@@ -8087,18 +8485,16 @@ up.script = (function () {
|
|
8087
8485
|
pass.run();
|
8088
8486
|
}
|
8089
8487
|
function registerDestructor(element, destructor) {
|
8090
|
-
let
|
8091
|
-
if (!
|
8092
|
-
|
8093
|
-
|
8094
|
-
|
8095
|
-
|
8096
|
-
|
8097
|
-
|
8098
|
-
|
8099
|
-
|
8100
|
-
destructors.push(destructor);
|
8101
|
-
}
|
8488
|
+
let fns = u.scanFunctions(destructor);
|
8489
|
+
if (!fns.length)
|
8490
|
+
return;
|
8491
|
+
let registry = (element.upDestructors || (element.upDestructors = buildDestructorRegistry(element)));
|
8492
|
+
registry.guard(fns);
|
8493
|
+
}
|
8494
|
+
function buildDestructorRegistry(element) {
|
8495
|
+
let registry = u.cleaner();
|
8496
|
+
registry(e.addClassTemp(element, 'up-can-clean'));
|
8497
|
+
return registry;
|
8102
8498
|
}
|
8103
8499
|
function hello(element, options = {}) {
|
8104
8500
|
element = up.fragment.get(element, options);
|
@@ -8115,18 +8511,12 @@ up.script = (function () {
|
|
8115
8511
|
return element.upData || (element.upData = buildData(element));
|
8116
8512
|
}
|
8117
8513
|
function buildData(element) {
|
8118
|
-
|
8119
|
-
|
8120
|
-
|
8121
|
-
|
8122
|
-
let parsedJSON;
|
8123
|
-
if (rawJSON) {
|
8124
|
-
parsedJSON = JSON.parse(rawJSON);
|
8125
|
-
if (!u.isOptions(parsedJSON)) {
|
8126
|
-
return parsedJSON;
|
8127
|
-
}
|
8514
|
+
var _a;
|
8515
|
+
let parsedJSON = (_a = e.jsonAttr(element, 'up-data')) !== null && _a !== void 0 ? _a : {};
|
8516
|
+
if (!u.isOptions(parsedJSON)) {
|
8517
|
+
return parsedJSON;
|
8128
8518
|
}
|
8129
|
-
return Object.assign(Object.assign(Object.assign({}, element.dataset), parsedJSON), element.upCompileData);
|
8519
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, element.upTemplateData), element.dataset), parsedJSON), element.upCompileData);
|
8130
8520
|
}
|
8131
8521
|
function findAssets(head = document.head) {
|
8132
8522
|
return head.querySelectorAll(config.selector('assetSelectors'));
|
@@ -8146,6 +8536,9 @@ up.script = (function () {
|
|
8146
8536
|
let selector = config.selector('scriptSelectors');
|
8147
8537
|
u.each(e.subtree(root, selector), disableScript);
|
8148
8538
|
}
|
8539
|
+
function isScript(value) {
|
8540
|
+
return config.matches(value, 'scriptSelectors');
|
8541
|
+
}
|
8149
8542
|
function reset() {
|
8150
8543
|
registeredCompilers = u.filter(registeredCompilers, 'isDefault');
|
8151
8544
|
registeredMacros = u.filter(registeredMacros, 'isDefault');
|
@@ -8163,6 +8556,7 @@ up.script = (function () {
|
|
8163
8556
|
findAssets,
|
8164
8557
|
assertAssetsOK,
|
8165
8558
|
disableSubtree: disableScriptsInSubtree,
|
8559
|
+
isScript,
|
8166
8560
|
};
|
8167
8561
|
})();
|
8168
8562
|
up.compiler = up.script.compiler;
|
@@ -8312,7 +8706,7 @@ up.history = (function () {
|
|
8312
8706
|
}
|
8313
8707
|
}
|
8314
8708
|
function updateLang(newLang) {
|
8315
|
-
e.
|
8709
|
+
e.setAttrPresence(e.root, 'lang', newLang, !!newLang);
|
8316
8710
|
}
|
8317
8711
|
up.macro('[up-back]', function (link) {
|
8318
8712
|
if (previousLocation) {
|
@@ -8354,14 +8748,18 @@ up.fragment = (function () {
|
|
8354
8748
|
return tagName;
|
8355
8749
|
}
|
8356
8750
|
}
|
8751
|
+
const STRONG_TARGET_DERIVERS = [
|
8752
|
+
'[up-id]',
|
8753
|
+
'[id]',
|
8754
|
+
'html',
|
8755
|
+
'head',
|
8756
|
+
'body',
|
8757
|
+
];
|
8357
8758
|
const config = new up.Config(() => ({
|
8358
8759
|
badTargetClasses: [/^up-/],
|
8760
|
+
strongTargetDerivers: STRONG_TARGET_DERIVERS,
|
8359
8761
|
targetDerivers: [
|
8360
|
-
|
8361
|
-
'[id]',
|
8362
|
-
'html',
|
8363
|
-
'head',
|
8364
|
-
'body',
|
8762
|
+
...STRONG_TARGET_DERIVERS,
|
8365
8763
|
'main',
|
8366
8764
|
'[up-main]',
|
8367
8765
|
upTagName,
|
@@ -8379,10 +8777,19 @@ up.fragment = (function () {
|
|
8379
8777
|
'form',
|
8380
8778
|
],
|
8381
8779
|
verifyDerivedTarget: true,
|
8780
|
+
renderOptions: {
|
8781
|
+
hungry: true,
|
8782
|
+
keep: true,
|
8783
|
+
saveScroll: true,
|
8784
|
+
saveFocus: true,
|
8785
|
+
focus: 'keep',
|
8786
|
+
abort: 'target',
|
8787
|
+
failOptions: true,
|
8788
|
+
feedback: true,
|
8789
|
+
},
|
8382
8790
|
navigateOptions: {
|
8383
8791
|
cache: 'auto',
|
8384
8792
|
revalidate: 'auto',
|
8385
|
-
feedback: true,
|
8386
8793
|
fallback: true,
|
8387
8794
|
focus: 'auto',
|
8388
8795
|
scroll: 'auto',
|
@@ -8395,7 +8802,7 @@ up.fragment = (function () {
|
|
8395
8802
|
autoFocus: ['hash', 'autofocus', 'main-if-main', 'keep', 'target-if-lost'],
|
8396
8803
|
autoScroll: ['hash', 'layer-if-main'],
|
8397
8804
|
autoRevalidate: (response) => response.expired,
|
8398
|
-
skipResponse: defaultSkipResponse
|
8805
|
+
skipResponse: defaultSkipResponse,
|
8399
8806
|
}));
|
8400
8807
|
u.delegate(config, ['mainTargets'], () => up.layer.config.any);
|
8401
8808
|
function defaultSkipResponse({ response, expiredResponse }) {
|
@@ -8455,14 +8862,12 @@ up.fragment = (function () {
|
|
8455
8862
|
return fragment.isConnected && isNotDestroying(fragment);
|
8456
8863
|
}
|
8457
8864
|
function getSmart(...args) {
|
8458
|
-
|
8459
|
-
|
8460
|
-
const root = args[0];
|
8461
|
-
if (u.isElementish(selector)) {
|
8865
|
+
let [root, selector, options] = parseGetArgs(args);
|
8866
|
+
if (u.isElementLike(selector)) {
|
8462
8867
|
return e.get(selector);
|
8463
8868
|
}
|
8464
8869
|
if (root) {
|
8465
|
-
return
|
8870
|
+
return getFirstDescendant(root, selector, options);
|
8466
8871
|
}
|
8467
8872
|
return new up.FragmentFinder({
|
8468
8873
|
selector,
|
@@ -8471,13 +8876,16 @@ up.fragment = (function () {
|
|
8471
8876
|
match: options.match,
|
8472
8877
|
}).find();
|
8473
8878
|
}
|
8474
|
-
function
|
8475
|
-
|
8879
|
+
function getFirstDescendant(...args) {
|
8880
|
+
let [root, selectorString, options] = parseGetArgs(args);
|
8881
|
+
let selector = new up.Selector(selectorString, root, options);
|
8882
|
+
return selector.firstDescendant(root);
|
8883
|
+
}
|
8884
|
+
function parseGetArgs(args) {
|
8885
|
+
return u.args(args, 'val', 'val', 'options');
|
8476
8886
|
}
|
8477
8887
|
function getAll(...args) {
|
8478
|
-
|
8479
|
-
let selectorString = args.pop();
|
8480
|
-
const root = args[0];
|
8888
|
+
let [root, selectorString, options] = parseGetArgs(args);
|
8481
8889
|
if (u.isElement(selectorString)) {
|
8482
8890
|
return [selectorString];
|
8483
8891
|
}
|
@@ -8585,8 +8993,9 @@ up.fragment = (function () {
|
|
8585
8993
|
function cannotTarget(element) {
|
8586
8994
|
throw new up.CannotTarget(untargetableMessage(element));
|
8587
8995
|
}
|
8588
|
-
function tryToTarget(element, options) {
|
8589
|
-
|
8996
|
+
function tryToTarget(element, options = {}) {
|
8997
|
+
let derivers = options.strong ? config.strongTargetDerivers : config.targetDerivers;
|
8998
|
+
return u.findResult(derivers, function (deriver) {
|
8590
8999
|
let target = deriveTarget(element, deriver);
|
8591
9000
|
if (target && isGoodTarget(target, element, options)) {
|
8592
9001
|
return target;
|
@@ -8612,7 +9021,7 @@ up.fragment = (function () {
|
|
8612
9021
|
}
|
8613
9022
|
}
|
8614
9023
|
function deriveTargetFromPattern(element, deriver) {
|
8615
|
-
let { includePath, excludeRaw } =
|
9024
|
+
let { includePath, excludeRaw } = e.parseSelector(deriver);
|
8616
9025
|
if (includePath.length !== 1) {
|
8617
9026
|
throw new up.CannotParse(deriver);
|
8618
9027
|
}
|
@@ -8650,7 +9059,9 @@ up.fragment = (function () {
|
|
8650
9059
|
return result;
|
8651
9060
|
}
|
8652
9061
|
function isGoodTarget(target, element, options = {}) {
|
8653
|
-
|
9062
|
+
var _a;
|
9063
|
+
let verify = (_a = options.verify) !== null && _a !== void 0 ? _a : config.verifyDerivedTarget;
|
9064
|
+
return !isAlive(element) || !verify || up.fragment.get(target, Object.assign({ layer: element }, options)) === element;
|
8654
9065
|
}
|
8655
9066
|
function matchesPattern(pattern, str) {
|
8656
9067
|
if (u.isRegExp(pattern)) {
|
@@ -8692,7 +9103,7 @@ up.fragment = (function () {
|
|
8692
9103
|
let firstSwappableTarget = toTarget(layer.getFirstSwappableElement(), options);
|
8693
9104
|
targets.unshift(target.replace(LAYER_PSEUDO, firstSwappableTarget));
|
8694
9105
|
}
|
8695
|
-
else if (u.
|
9106
|
+
else if (u.isElementLike(target)) {
|
8696
9107
|
expanded.push(toTarget(target, options));
|
8697
9108
|
}
|
8698
9109
|
else if (u.isString(target)) {
|
@@ -8719,11 +9130,13 @@ up.fragment = (function () {
|
|
8719
9130
|
}
|
8720
9131
|
});
|
8721
9132
|
}
|
8722
|
-
function resolveOrigin(
|
8723
|
-
|
9133
|
+
function resolveOrigin(target, options) {
|
9134
|
+
if (!u.isString(target))
|
9135
|
+
return target;
|
9136
|
+
return (up.migrate.resolveOrigin || modernResolveOrigin)(target, options);
|
8724
9137
|
}
|
8725
9138
|
function splitTarget(target) {
|
8726
|
-
return u.
|
9139
|
+
return u.getComplexTokens(target);
|
8727
9140
|
}
|
8728
9141
|
function parseTargetSteps(target, options = {}) {
|
8729
9142
|
var _a;
|
@@ -8736,7 +9149,7 @@ up.fragment = (function () {
|
|
8736
9149
|
continue;
|
8737
9150
|
let placement = defaultPlacement;
|
8738
9151
|
let maybe = defaultMaybe;
|
8739
|
-
selector = selector.replace(/\b::?(before|after)\b/, (_match, customPlacement) => {
|
9152
|
+
selector = selector.replace(/\b::?(before|after|content)\b/, (_match, customPlacement) => {
|
8740
9153
|
placement = customPlacement;
|
8741
9154
|
return '';
|
8742
9155
|
});
|
@@ -8800,13 +9213,13 @@ up.fragment = (function () {
|
|
8800
9213
|
let elements;
|
8801
9214
|
if (options.target) {
|
8802
9215
|
elements = getAll(options.target, options);
|
8803
|
-
testFn = (request) => request.
|
9216
|
+
testFn = (request) => request.isBoundToSubtrees(elements);
|
8804
9217
|
reason || (reason = 'Aborting requests within fragment');
|
8805
9218
|
}
|
8806
9219
|
else {
|
8807
9220
|
let layers = up.layer.getAll(options);
|
8808
9221
|
elements = u.map(layers, 'element');
|
8809
|
-
testFn = (request) =>
|
9222
|
+
testFn = (request) => request.isBoundToLayers(layers);
|
8810
9223
|
reason || (reason = 'Aborting requests within ' + layers.join(', '));
|
8811
9224
|
}
|
8812
9225
|
let testFnWithAbortable = (request) => request.abortable && testFn(request);
|
@@ -8821,8 +9234,8 @@ up.fragment = (function () {
|
|
8821
9234
|
up.destructor(fragment, unsubscribe);
|
8822
9235
|
return unsubscribe;
|
8823
9236
|
}
|
8824
|
-
function onFirstIntersect(
|
8825
|
-
if (e.isIntersectingWindow(
|
9237
|
+
function onFirstIntersect(element, callback, { margin = 0 } = {}) {
|
9238
|
+
if (e.isIntersectingWindow(element, { margin })) {
|
8826
9239
|
callback();
|
8827
9240
|
return;
|
8828
9241
|
}
|
@@ -8837,15 +9250,63 @@ up.fragment = (function () {
|
|
8837
9250
|
}
|
8838
9251
|
let observer = new IntersectionObserver(processIntersectEntries, { rootMargin: `${margin}px` });
|
8839
9252
|
let disconnect = () => observer.disconnect();
|
8840
|
-
observer.observe(
|
8841
|
-
|
9253
|
+
observer.observe(element);
|
9254
|
+
up.destructor(element, disconnect);
|
9255
|
+
}
|
9256
|
+
const STARTS_WITH_SELECTOR = /^([\w-]+|\*)?(#|\.|[:[][a-z-]{3,})/;
|
9257
|
+
function provideNodes(value, { origin, originLayer, data, htmlParser = e.createNodesFromHTML } = {}) {
|
9258
|
+
if (u.isString(value) && STARTS_WITH_SELECTOR.test(value)) {
|
9259
|
+
let [parsedValue, parsedData] = u.parseScalarJSONPairs(value)[0];
|
9260
|
+
data = Object.assign(Object.assign({}, data), parsedData);
|
9261
|
+
value = up.fragment.get(parsedValue, { layer: 'closest', origin, originLayer }) || up.fail(`Cannot find template "%s"`, value);
|
9262
|
+
}
|
9263
|
+
if (u.isString(value)) {
|
9264
|
+
value = htmlParser(value);
|
9265
|
+
}
|
9266
|
+
if (isTemplate(value)) {
|
9267
|
+
value = cloneTemplate(value, data, { htmlParser });
|
9268
|
+
}
|
9269
|
+
return u.wrapList(value);
|
9270
|
+
}
|
9271
|
+
function isTemplate(value) {
|
9272
|
+
return u.isElement(value) && value.matches('template, script[type]') && !up.script.isScript(value);
|
9273
|
+
}
|
9274
|
+
function cloneTemplate(templateOrSelector, data = {}, { origin, htmlParser } = {}) {
|
9275
|
+
var _a;
|
9276
|
+
let template = getSmart(templateOrSelector, { origin }) || up.fail('Template not found: %o', templateOrSelector);
|
9277
|
+
let event = up.emit(template, 'up:template:clone', { data, nodes: null, log: ["Using template %o", templateOrSelector] });
|
9278
|
+
let nodes = (_a = event.nodes) !== null && _a !== void 0 ? _a : defaultTemplateNodes(template, htmlParser);
|
9279
|
+
for (let node of nodes) {
|
9280
|
+
node.upTemplateData = data;
|
9281
|
+
}
|
9282
|
+
return nodes;
|
9283
|
+
}
|
9284
|
+
function defaultTemplateNodes(template, htmlParser = e.createNodesFromHTML) {
|
9285
|
+
let templateText = template.innerHTML;
|
9286
|
+
return htmlParser(templateText);
|
9287
|
+
}
|
9288
|
+
function insertTemp(...args) {
|
9289
|
+
let [reference, position = 'beforeend', tempValue] = u.args(args, 'val', u.isAdjacentPosition, 'val');
|
9290
|
+
let tempNodes = provideNodes(tempValue, { origin: reference });
|
9291
|
+
let tempElement = e.wrapIfRequired(tempNodes);
|
9292
|
+
let oldPosition = document.contains(tempElement) && e.documentPosition(tempElement);
|
9293
|
+
reference.insertAdjacentElement(position, tempElement);
|
9294
|
+
if (oldPosition) {
|
9295
|
+
return () => {
|
9296
|
+
oldPosition[0].insertAdjacentElement(oldPosition[1], tempElement);
|
9297
|
+
};
|
9298
|
+
}
|
9299
|
+
else {
|
9300
|
+
up.hello(tempElement);
|
9301
|
+
return () => up.destroy(tempElement);
|
9302
|
+
}
|
8842
9303
|
}
|
8843
9304
|
up.on('up:framework:boot', function () {
|
8844
9305
|
const { documentElement } = document;
|
8845
9306
|
documentElement.setAttribute('up-source', normalizeSource(location.href));
|
8846
9307
|
up.hello(documentElement);
|
8847
9308
|
if (!up.browser.canPushState()) {
|
8848
|
-
return up.warn('Cannot push history changes. Next
|
9309
|
+
return up.warn('Cannot push history changes. Next render pass with history will load a full page.');
|
8849
9310
|
}
|
8850
9311
|
});
|
8851
9312
|
return {
|
@@ -8855,7 +9316,7 @@ up.fragment = (function () {
|
|
8855
9316
|
render,
|
8856
9317
|
navigate,
|
8857
9318
|
get: getSmart,
|
8858
|
-
|
9319
|
+
getFirstDescendant,
|
8859
9320
|
all: getAll,
|
8860
9321
|
subtree: getSubtree,
|
8861
9322
|
contains,
|
@@ -8889,6 +9350,9 @@ up.fragment = (function () {
|
|
8889
9350
|
targetForSteps,
|
8890
9351
|
compressNestedSteps,
|
8891
9352
|
containsMainPseudo,
|
9353
|
+
insertTemp,
|
9354
|
+
provideNodes,
|
9355
|
+
cloneTemplate,
|
8892
9356
|
};
|
8893
9357
|
})();
|
8894
9358
|
up.reload = up.fragment.reload;
|
@@ -8896,6 +9360,7 @@ up.destroy = up.fragment.destroy;
|
|
8896
9360
|
up.render = up.fragment.render;
|
8897
9361
|
up.navigate = up.fragment.navigate;
|
8898
9362
|
up.visit = up.fragment.visit;
|
9363
|
+
up.template = { clone: up.fragment.cloneTemplate };
|
8899
9364
|
u.delegate(up, ['context'], () => up.layer.current);
|
8900
9365
|
|
8901
9366
|
|
@@ -8929,7 +9394,7 @@ up.viewport = (function () {
|
|
8929
9394
|
up.compiler(config.selectorFn('anchoredRightSelectors'), function (element) {
|
8930
9395
|
return bodyShifter.onAnchoredElementInserted(element);
|
8931
9396
|
});
|
8932
|
-
|
9397
|
+
const reveal = up.mockable(function (element, options) {
|
8933
9398
|
var _a, _b;
|
8934
9399
|
options = u.options(options);
|
8935
9400
|
element = f.get(element, options);
|
@@ -8942,7 +9407,7 @@ up.viewport = (function () {
|
|
8942
9407
|
const motion = new up.RevealMotion(element, options);
|
8943
9408
|
motion.start();
|
8944
9409
|
return ((_b = (_a = up.migrate).formerlyAsync) === null || _b === void 0 ? void 0 : _b.call(_a, 'up.reveal()')) || true;
|
8945
|
-
}
|
9410
|
+
});
|
8946
9411
|
function doFocus(element, { preventScroll, force, inputDevice, focusVisible } = {}) {
|
8947
9412
|
if (force) {
|
8948
9413
|
if (!element.hasAttribute('tabindex') && element.tabIndex === -1) {
|
@@ -8975,7 +9440,7 @@ up.viewport = (function () {
|
|
8975
9440
|
function revealHash(hash = location.hash, options) {
|
8976
9441
|
let match = firstHashTarget(hash, options);
|
8977
9442
|
if (match) {
|
8978
|
-
return
|
9443
|
+
return reveal(match, { top: true });
|
8979
9444
|
}
|
8980
9445
|
}
|
8981
9446
|
function allSelector() {
|
@@ -9079,11 +9544,11 @@ up.viewport = (function () {
|
|
9079
9544
|
return new up.FIFOCache({ capacity: 30, normalizeKey: u.matchableURL });
|
9080
9545
|
}
|
9081
9546
|
function parseOptions(args) {
|
9082
|
-
const options = u.
|
9547
|
+
const [reference, options] = u.args(args, 'val', 'options');
|
9083
9548
|
options.layer = up.layer.get(options);
|
9084
9549
|
let viewports;
|
9085
|
-
if (
|
9086
|
-
viewports = [closest(
|
9550
|
+
if (reference) {
|
9551
|
+
viewports = [closest(reference, options)];
|
9087
9552
|
}
|
9088
9553
|
else if (options.around) {
|
9089
9554
|
viewports = getAround(options.around, options);
|
@@ -9144,7 +9609,7 @@ up.viewport = (function () {
|
|
9144
9609
|
function firstHashTarget(hash, options = {}) {
|
9145
9610
|
if (hash = pureHash(hash)) {
|
9146
9611
|
const selector = [
|
9147
|
-
e.
|
9612
|
+
e.idSelector(hash),
|
9148
9613
|
'a' + e.attrSelector('name', hash)
|
9149
9614
|
].join();
|
9150
9615
|
return f.get(selector, options);
|
@@ -9170,16 +9635,19 @@ up.viewport = (function () {
|
|
9170
9635
|
}
|
9171
9636
|
return to;
|
9172
9637
|
}
|
9173
|
-
|
9174
|
-
|
9175
|
-
|
9176
|
-
u.task(function () {
|
9177
|
-
if (!userScrolled) {
|
9178
|
-
return revealHash();
|
9179
|
-
}
|
9180
|
-
});
|
9638
|
+
document.addEventListener('DOMContentLoaded', function () {
|
9639
|
+
revealHash();
|
9640
|
+
u.task(revealHash);
|
9181
9641
|
});
|
9182
9642
|
up.on(window, 'hashchange', () => revealHash());
|
9643
|
+
up.on('up:click', 'a[href^="#"]', function (event, link) {
|
9644
|
+
if (link.hash !== location.hash)
|
9645
|
+
return;
|
9646
|
+
if (up.link.isFollowable(link))
|
9647
|
+
return;
|
9648
|
+
if (revealHash(link.hash))
|
9649
|
+
up.event.halt(event);
|
9650
|
+
});
|
9183
9651
|
return {
|
9184
9652
|
reveal,
|
9185
9653
|
revealHash,
|
@@ -9513,7 +9981,7 @@ up.network = (function () {
|
|
9513
9981
|
cacheSize: 70,
|
9514
9982
|
cacheExpireAge: 15 * 1000,
|
9515
9983
|
cacheEvictAge: 90 * 60 * 1000,
|
9516
|
-
|
9984
|
+
lateDelay: 400,
|
9517
9985
|
fail(response) { return (response.status < 200 || response.status > 299) && response.status !== 304; },
|
9518
9986
|
autoCache(request) { return request.isSafe(); },
|
9519
9987
|
expireCache(request, _response) { return !request.isSafe(); },
|
@@ -9539,10 +10007,7 @@ up.network = (function () {
|
|
9539
10007
|
}
|
9540
10008
|
function parseRequestOptions(args) {
|
9541
10009
|
var _a, _b;
|
9542
|
-
|
9543
|
-
if (!options.url) {
|
9544
|
-
options.url = args[0];
|
9545
|
-
}
|
10010
|
+
let options = u.parseArgIntoOptions(args, 'url');
|
9546
10011
|
(_b = (_a = up.migrate).handleRequestOptions) === null || _b === void 0 ? void 0 : _b.call(_a, options);
|
9547
10012
|
return options;
|
9548
10013
|
}
|
@@ -9698,7 +10163,7 @@ up.layer = (function () {
|
|
9698
10163
|
openAnimation: 'fade-in',
|
9699
10164
|
closeAnimation: 'fade-out',
|
9700
10165
|
dismissLabel: '×',
|
9701
|
-
|
10166
|
+
dismissARIALabel: 'Dismiss dialog',
|
9702
10167
|
dismissable: true,
|
9703
10168
|
history: 'auto',
|
9704
10169
|
trapFocus: true,
|
@@ -9779,10 +10244,7 @@ up.layer = (function () {
|
|
9779
10244
|
}
|
9780
10245
|
}
|
9781
10246
|
}
|
9782
|
-
else if (options.
|
9783
|
-
options.layer = 'new';
|
9784
|
-
}
|
9785
|
-
else if (u.isElementish(options.target)) {
|
10247
|
+
else if (u.isElementLike(options.target)) {
|
9786
10248
|
options.layer = stack.get(options.target, { normalizeLayerOptions: false });
|
9787
10249
|
}
|
9788
10250
|
else if (options.origin) {
|
@@ -9980,7 +10442,7 @@ up.link = (function () {
|
|
9980
10442
|
parser.boolean('abortable');
|
9981
10443
|
parser.boolean('background');
|
9982
10444
|
parser.string('contentType');
|
9983
|
-
parser.
|
10445
|
+
parser.booleanOrNumber('lateDelay');
|
9984
10446
|
parser.number('timeout');
|
9985
10447
|
return options;
|
9986
10448
|
}
|
@@ -9990,7 +10452,6 @@ up.link = (function () {
|
|
9990
10452
|
options = u.options(options);
|
9991
10453
|
const parser = new up.OptionsParser(link, options, Object.assign({ fail: true }, parserOptions));
|
9992
10454
|
parser.include(parseRequestOptions);
|
9993
|
-
parser.boolean('feedback');
|
9994
10455
|
options.origin || (options.origin = link);
|
9995
10456
|
parser.boolean('fail');
|
9996
10457
|
parser.boolean('navigate', { default: true });
|
@@ -9998,11 +10459,12 @@ up.link = (function () {
|
|
9998
10459
|
parser.string('target');
|
9999
10460
|
parser.booleanOrString('fallback');
|
10000
10461
|
parser.string('match');
|
10001
|
-
parser.string('content');
|
10002
|
-
parser.string('fragment');
|
10003
10462
|
parser.string('document');
|
10004
|
-
parser.
|
10005
|
-
parser.
|
10463
|
+
parser.string('fragment');
|
10464
|
+
parser.string('content');
|
10465
|
+
parser.boolean('keep', { attr: 'up-use-keep' });
|
10466
|
+
parser.boolean('hungry', { attr: 'up-use-hungry' });
|
10467
|
+
parser.json('data', { attr: 'up-use-data' });
|
10006
10468
|
parser.callback('onLoaded');
|
10007
10469
|
parser.callback('onRendered', { mainKey: 'result' });
|
10008
10470
|
parser.callback('onFinished', { mainKey: 'result' });
|
@@ -10026,6 +10488,7 @@ up.link = (function () {
|
|
10026
10488
|
parser.string('acceptLocation');
|
10027
10489
|
parser.string('dismissLocation');
|
10028
10490
|
parser.booleanOrString('history');
|
10491
|
+
parser.include(up.status.statusOptions);
|
10029
10492
|
parser.booleanOrString('focus');
|
10030
10493
|
parser.boolean('saveScroll');
|
10031
10494
|
parser.boolean('saveFocus');
|
@@ -10051,7 +10514,7 @@ up.link = (function () {
|
|
10051
10514
|
return Promise.reject(new up.Error(issue));
|
10052
10515
|
}
|
10053
10516
|
const guardEvent = up.event.build('up:link:preload', { log: ['Preloading link %o', link] });
|
10054
|
-
return follow(link, Object.assign(Object.assign({ abortable: false }, options), { guardEvent, preload: true }));
|
10517
|
+
return follow(link, Object.assign(Object.assign(Object.assign(Object.assign({ abort: false, abortable: false, background: true, cache: true }, up.RenderOptions.NO_INPUT_INTERFERENCE), up.RenderOptions.NO_PREVIEWS), options), { guardEvent, preload: true }));
|
10055
10518
|
}
|
10056
10519
|
function preloadIssue(link) {
|
10057
10520
|
if (!isSafe(link)) {
|
@@ -10169,7 +10632,7 @@ up.link = (function () {
|
|
10169
10632
|
return follow(link, forcedOptions, { defaults });
|
10170
10633
|
}
|
10171
10634
|
up.attribute('up-defer', { defaultValue: 'insert' }, function (link, condition) {
|
10172
|
-
let doLoad = () => up.error.muteUncriticalRejection(loadDeferred(link));
|
10635
|
+
let doLoad = (options) => up.error.muteUncriticalRejection(loadDeferred(link, options));
|
10173
10636
|
onLoadCondition(condition, link, doLoad);
|
10174
10637
|
});
|
10175
10638
|
up.on('up:click', config.selectorFn('followSelectors'), function (event, link) {
|
@@ -10183,15 +10646,16 @@ up.link = (function () {
|
|
10183
10646
|
let childLink = e.get(area, childLinkSelector);
|
10184
10647
|
if (childLink) {
|
10185
10648
|
e.setMissingAttrs(area, Object.assign({ 'up-href': e.attr(childLink, 'href') }, e.upAttrs(childLink)));
|
10186
|
-
|
10649
|
+
e.addClasses(area, e.upClasses(childLink));
|
10187
10650
|
makeFollowable(area);
|
10188
10651
|
}
|
10189
10652
|
});
|
10190
10653
|
up.compiler(config.selectorFn('preloadSelectors'), function (link) {
|
10191
|
-
var _a;
|
10192
10654
|
if (!isPreloadDisabled(link)) {
|
10193
|
-
let doPreload = () => up.error.muteUncriticalRejection(preload(link));
|
10194
|
-
let condition =
|
10655
|
+
let doPreload = (options) => up.error.muteUncriticalRejection(preload(link, options));
|
10656
|
+
let condition = e.booleanOrStringAttr(link, 'up-preload');
|
10657
|
+
if (condition === true || u.isUndefined(condition))
|
10658
|
+
condition = 'hover';
|
10195
10659
|
onLoadCondition(condition, link, doPreload);
|
10196
10660
|
}
|
10197
10661
|
});
|
@@ -10229,10 +10693,11 @@ up.form = (function () {
|
|
10229
10693
|
const e = up.element;
|
10230
10694
|
const config = new up.Config(() => ({
|
10231
10695
|
groupSelectors: ['[up-form-group]', 'fieldset', 'label', 'form'],
|
10232
|
-
fieldSelectors: ['select', 'input:not([type=submit]
|
10696
|
+
fieldSelectors: ['select', 'input:not([type=submit], [type=image], [type=button])', 'button[type]:not([type=submit], [type=button])', 'textarea'],
|
10233
10697
|
submitSelectors: ['form:is([up-submit], [up-target], [up-layer], [up-transition])'],
|
10234
10698
|
noSubmitSelectors: ['[up-submit=false]', '[target]', e.crossOriginSelector('action')],
|
10235
10699
|
submitButtonSelectors: ['input[type=submit]', 'input[type=image]', 'button[type=submit]', 'button:not([type])'],
|
10700
|
+
genericButtonSelectors: ['input[type=button]', 'button[type=button]'],
|
10236
10701
|
watchInputEvents: ['input', 'change'],
|
10237
10702
|
watchInputDelay: 0,
|
10238
10703
|
watchChangeEvents: ['change'],
|
@@ -10257,6 +10722,9 @@ up.form = (function () {
|
|
10257
10722
|
function findSubmitButtons(root) {
|
10258
10723
|
return e.subtree(root, submitButtonSelector());
|
10259
10724
|
}
|
10725
|
+
function findGenericButtons(root) {
|
10726
|
+
return e.subtree(root, config.selector('genericButtonSelectors'));
|
10727
|
+
}
|
10260
10728
|
function isSubmitButton(element) {
|
10261
10729
|
return element === null || element === void 0 ? void 0 : element.matches(submitButtonSelector());
|
10262
10730
|
}
|
@@ -10272,7 +10740,6 @@ up.form = (function () {
|
|
10272
10740
|
let parser = new up.OptionsParser(form, options, parserOptions);
|
10273
10741
|
parser.include(destinationOptions);
|
10274
10742
|
parser.string('failTarget', { default: up.fragment.tryToTarget(form) });
|
10275
|
-
parser.booleanOrString('disable');
|
10276
10743
|
options.guardEvent || (options.guardEvent = up.event.build('up:form:submit', {
|
10277
10744
|
submitButton: options.submitButton,
|
10278
10745
|
log: 'Submitting form',
|
@@ -10280,6 +10747,7 @@ up.form = (function () {
|
|
10280
10747
|
form,
|
10281
10748
|
}));
|
10282
10749
|
options.origin || (options.origin = up.viewport.focusedElementWithin(form) || options.submitButton || form);
|
10750
|
+
options.activeElements = u.uniq([options.origin, options.submitButton, form].filter(u.isElement));
|
10283
10751
|
parser.include(up.link.followOptions);
|
10284
10752
|
return options;
|
10285
10753
|
}
|
@@ -10287,8 +10755,7 @@ up.form = (function () {
|
|
10287
10755
|
var _a;
|
10288
10756
|
options = u.options(options);
|
10289
10757
|
let parser = new up.OptionsParser(field, options, Object.assign(Object.assign({}, parserOptions), { closest: true, attrPrefix: 'up-watch-' }));
|
10290
|
-
parser.
|
10291
|
-
parser.booleanOrString('disable');
|
10758
|
+
parser.include(up.status.statusOptions);
|
10292
10759
|
parser.string('event');
|
10293
10760
|
parser.number('delay');
|
10294
10761
|
let config = up.form.config;
|
@@ -10303,61 +10770,52 @@ up.form = (function () {
|
|
10303
10770
|
return options;
|
10304
10771
|
}
|
10305
10772
|
function disableContainer(container) {
|
10306
|
-
let
|
10773
|
+
let controls = [
|
10774
|
+
...findFields(container),
|
10775
|
+
...findSubmitButtons(container),
|
10776
|
+
...findGenericButtons(container),
|
10777
|
+
];
|
10778
|
+
return u.sequence(u.map(controls, disableControl));
|
10779
|
+
}
|
10780
|
+
function disableControl(control) {
|
10781
|
+
if (control.disabled)
|
10782
|
+
return;
|
10307
10783
|
let focusFallback;
|
10308
|
-
|
10309
|
-
|
10310
|
-
|
10311
|
-
focusFallback = findGroup(focusedElement);
|
10312
|
-
}
|
10313
|
-
raiseDisableStack(control);
|
10314
|
-
}
|
10315
|
-
if (focusFallback) {
|
10784
|
+
if (document.activeElement === control) {
|
10785
|
+
focusFallback = findGroup(control);
|
10786
|
+
control.disabled = true;
|
10316
10787
|
up.focus(focusFallback, { force: true, preventScroll: true });
|
10317
10788
|
}
|
10318
|
-
|
10319
|
-
|
10320
|
-
};
|
10321
|
-
}
|
10322
|
-
function raiseDisableStack(control) {
|
10323
|
-
if (!control.upDisableCount) {
|
10324
|
-
control.upDisableCount || (control.upDisableCount = 0);
|
10325
|
-
control.upOriginalDisabled = control.disabled;
|
10326
|
-
}
|
10327
|
-
control.upDisableCount++;
|
10328
|
-
control.disabled = true;
|
10329
|
-
}
|
10330
|
-
function lowerDisableStack(control) {
|
10331
|
-
if (control.upDisableCount) {
|
10332
|
-
if (!control.disabled) {
|
10333
|
-
control.upDisableCount = 0;
|
10334
|
-
}
|
10335
|
-
else {
|
10336
|
-
control.upDisableCount--;
|
10337
|
-
if (!control.upDisableCount) {
|
10338
|
-
control.disabled = control.upOriginalDisabled;
|
10339
|
-
}
|
10340
|
-
}
|
10789
|
+
else {
|
10790
|
+
control.disabled = true;
|
10341
10791
|
}
|
10792
|
+
return () => { control.disabled = false; };
|
10342
10793
|
}
|
10343
|
-
function
|
10344
|
-
let
|
10345
|
-
u.always(promise, undoDisable);
|
10346
|
-
}
|
10347
|
-
function handleDisableOption({ disable, origin }) {
|
10348
|
-
if (!disable)
|
10349
|
-
return u.noop;
|
10350
|
-
let missingOption = (key) => { up.fail("Cannot process { disable: '%s' } option without { %s }", disable, key); };
|
10351
|
-
let getOrigin = () => origin || missingOption('origin');
|
10352
|
-
let getOriginForm = () => getScope(getOrigin());
|
10353
|
-
let containers;
|
10794
|
+
function getDisableContainers(disable, origin) {
|
10795
|
+
let originScope = () => getScope(origin);
|
10354
10796
|
if (disable === true) {
|
10355
|
-
|
10797
|
+
return [originScope()];
|
10798
|
+
}
|
10799
|
+
else if (u.isElement(disable)) {
|
10800
|
+
return [disable];
|
10356
10801
|
}
|
10357
10802
|
else if (u.isString(disable)) {
|
10358
|
-
|
10803
|
+
return up.fragment.subtree(originScope(), disable, { origin });
|
10804
|
+
}
|
10805
|
+
else if (u.isArray(disable)) {
|
10806
|
+
return u.flatMap(disable, (d) => getDisableContainers(d, origin));
|
10359
10807
|
}
|
10360
|
-
|
10808
|
+
else {
|
10809
|
+
return [];
|
10810
|
+
}
|
10811
|
+
}
|
10812
|
+
function getDisablePreviewFn(disable, origin) {
|
10813
|
+
return function (preview) {
|
10814
|
+
let containers = getDisableContainers(disable, origin);
|
10815
|
+
for (let container of containers) {
|
10816
|
+
preview.disable(container);
|
10817
|
+
}
|
10818
|
+
};
|
10361
10819
|
}
|
10362
10820
|
function destinationOptions(form, options, parserOptions) {
|
10363
10821
|
var _a;
|
@@ -10386,10 +10844,10 @@ up.form = (function () {
|
|
10386
10844
|
}
|
10387
10845
|
return options;
|
10388
10846
|
}
|
10389
|
-
function watch(
|
10847
|
+
function watch(...args) {
|
10848
|
+
let [root, options, callback] = u.args(args, 'val', 'options', 'callback');
|
10390
10849
|
root = up.element.get(root);
|
10391
|
-
|
10392
|
-
let options = u.extractOptions(args);
|
10850
|
+
callback || (callback = watchCallbackFromElement(root) || up.fail('No callback given for up.watch()'));
|
10393
10851
|
const watcher = new up.FieldWatcher(root, options, callback);
|
10394
10852
|
watcher.start();
|
10395
10853
|
return () => watcher.stop();
|
@@ -10397,12 +10855,12 @@ up.form = (function () {
|
|
10397
10855
|
function watchCallbackFromElement(element) {
|
10398
10856
|
let rawCallback = element.getAttribute('up-watch');
|
10399
10857
|
if (rawCallback) {
|
10400
|
-
return up.NonceableCallback.fromString(rawCallback).toFunction('value', 'name').bind(element);
|
10858
|
+
return up.NonceableCallback.fromString(rawCallback).toFunction('value', 'name', 'options').bind(element);
|
10401
10859
|
}
|
10402
10860
|
}
|
10403
10861
|
function autosubmit(target, options = {}) {
|
10404
10862
|
const onChange = (_diff, renderOptions) => submit(target, renderOptions);
|
10405
|
-
return watch(target, { options, batch: true }, onChange);
|
10863
|
+
return watch(target, Object.assign(Object.assign({}, options), { batch: true }), onChange);
|
10406
10864
|
}
|
10407
10865
|
function getGroupSelectors() {
|
10408
10866
|
var _a, _b;
|
@@ -10415,10 +10873,10 @@ up.form = (function () {
|
|
10415
10873
|
return u.findResult(getGroupSelectors(), function (groupSelector) {
|
10416
10874
|
let group = field.closest(groupSelector);
|
10417
10875
|
if (group) {
|
10418
|
-
let
|
10876
|
+
let strongDerivedGroupTarget = up.fragment.tryToTarget(group, { strong: true });
|
10419
10877
|
let goodDerivedFieldTarget = up.fragment.tryToTarget(field);
|
10420
10878
|
let groupHasFieldTarget = goodDerivedFieldTarget && (group !== field) && `${groupSelector}:has(${goodDerivedFieldTarget})`;
|
10421
|
-
let target =
|
10879
|
+
let target = strongDerivedGroupTarget || groupHasFieldTarget;
|
10422
10880
|
if (target) {
|
10423
10881
|
return {
|
10424
10882
|
target,
|
@@ -10510,7 +10968,7 @@ up.form = (function () {
|
|
10510
10968
|
target.classList.add('up-switched');
|
10511
10969
|
});
|
10512
10970
|
function parseSwitchTokens(str) {
|
10513
|
-
return u.
|
10971
|
+
return u.getSimpleTokens(str, { json: true });
|
10514
10972
|
}
|
10515
10973
|
function findSwitcherForTarget(target) {
|
10516
10974
|
const form = getScope(target);
|
@@ -10525,8 +10983,13 @@ up.form = (function () {
|
|
10525
10983
|
const element = up.fragment.get(elementOrSelector, options);
|
10526
10984
|
return element.form || element.closest('form');
|
10527
10985
|
}
|
10528
|
-
function getScope(
|
10529
|
-
|
10986
|
+
function getScope(origin, options) {
|
10987
|
+
if (origin) {
|
10988
|
+
return getForm(origin, options) || up.layer.get(origin).element;
|
10989
|
+
}
|
10990
|
+
else {
|
10991
|
+
return up.layer.current.element;
|
10992
|
+
}
|
10530
10993
|
}
|
10531
10994
|
function focusedField() {
|
10532
10995
|
return u.presence(document.activeElement, isField);
|
@@ -10578,8 +11041,8 @@ up.form = (function () {
|
|
10578
11041
|
submitButtons: findSubmitButtons,
|
10579
11042
|
focusedField,
|
10580
11043
|
switchTarget,
|
10581
|
-
disableWhile,
|
10582
11044
|
disable: disableContainer,
|
11045
|
+
getDisablePreviewFn,
|
10583
11046
|
group: findGroup,
|
10584
11047
|
groupSolution: findGroupSolution,
|
10585
11048
|
groupSelectors: getGroupSelectors,
|
@@ -10597,22 +11060,24 @@ up.validate = up.form.validate;
|
|
10597
11060
|
/* 98 */
|
10598
11061
|
/***/ (() => {
|
10599
11062
|
|
10600
|
-
up.
|
11063
|
+
up.status = (function () {
|
10601
11064
|
const u = up.util;
|
10602
11065
|
const e = up.element;
|
11066
|
+
let namedPreviewFns = {};
|
10603
11067
|
const config = new up.Config(() => ({
|
10604
11068
|
currentClasses: ['up-current'],
|
11069
|
+
activeClasses: ['up-active'],
|
11070
|
+
loadingClasses: ['up-loading'],
|
10605
11071
|
navSelectors: ['[up-nav]', 'nav'],
|
10606
11072
|
noNavSelectors: ['[up-nav=false]'],
|
10607
11073
|
}));
|
10608
11074
|
function reset() {
|
10609
11075
|
up.layer.root.feedbackLocation = null;
|
11076
|
+
namedPreviewFns = u.pickBy(namedPreviewFns, 'isDefault');
|
10610
11077
|
}
|
10611
|
-
const CLASS_ACTIVE = 'up-active';
|
10612
|
-
const CLASS_LOADING = 'up-loading';
|
10613
11078
|
const SELECTOR_LINK = 'a, [up-href]';
|
10614
|
-
function
|
10615
|
-
return link.
|
11079
|
+
function linkCurrentURLs(link) {
|
11080
|
+
return link.upCurrentURLs || (link.upCurrentURLs = new up.LinkCurrentURLs(link));
|
10616
11081
|
}
|
10617
11082
|
function updateFragment(fragment, { layer } = {}) {
|
10618
11083
|
layer || (layer = up.layer.get(fragment));
|
@@ -10621,11 +11086,11 @@ up.feedback = (function () {
|
|
10621
11086
|
const navLinkSelector = `${navSelector} :is(${SELECTOR_LINK}), ${navSelector}:is(${SELECTOR_LINK})`;
|
10622
11087
|
const links = up.fragment.all(navLinkSelector, { layer });
|
10623
11088
|
for (let link of links) {
|
10624
|
-
const isCurrent =
|
11089
|
+
const isCurrent = linkCurrentURLs(link).isCurrent(layerLocation);
|
10625
11090
|
for (let currentClass of config.currentClasses) {
|
10626
11091
|
link.classList.toggle(currentClass, isCurrent);
|
10627
11092
|
}
|
10628
|
-
e.
|
11093
|
+
e.setAttrPresence(link, 'aria-current', 'page', isCurrent);
|
10629
11094
|
}
|
10630
11095
|
}
|
10631
11096
|
function getMatchableLayerLocation(layer) {
|
@@ -10634,24 +11099,88 @@ up.feedback = (function () {
|
|
10634
11099
|
function findActivatableArea(element) {
|
10635
11100
|
return e.ancestor(element, SELECTOR_LINK) || element;
|
10636
11101
|
}
|
10637
|
-
function
|
10638
|
-
|
11102
|
+
function runPreviews(request, renderOptions) {
|
11103
|
+
let { bindLayer } = request;
|
11104
|
+
let focusCapsule = up.FocusCapsule.preserve(bindLayer);
|
11105
|
+
let applyPreviews = () => doRunPreviews(request, renderOptions);
|
11106
|
+
let revertPreviews = bindLayer.asCurrent(applyPreviews);
|
11107
|
+
up.on('focusin', { once: true }, () => focusCapsule = null);
|
11108
|
+
return () => {
|
11109
|
+
bindLayer.asCurrent(revertPreviews);
|
11110
|
+
focusCapsule === null || focusCapsule === void 0 ? void 0 : focusCapsule.restore(bindLayer, { preventScroll: true });
|
11111
|
+
};
|
11112
|
+
}
|
11113
|
+
function doRunPreviews(request, renderOptions) {
|
11114
|
+
let { fragment, fragments, origin } = request;
|
11115
|
+
let cleaner = u.cleaner();
|
11116
|
+
let previewForFragment = (fragment) => new up.Preview({ fragment, request, renderOptions, cleaner });
|
11117
|
+
let singlePreview = previewForFragment(fragment);
|
11118
|
+
singlePreview.run(resolvePreviewFns(renderOptions.preview));
|
11119
|
+
singlePreview.run(getPlaceholderPreviewFn(renderOptions.placeholder));
|
11120
|
+
singlePreview.run(getFeedbackClassesPreviewFn(renderOptions.feedback, fragments));
|
11121
|
+
singlePreview.run(up.form.getDisablePreviewFn(renderOptions.disable, origin));
|
11122
|
+
for (let fragment of fragments) {
|
11123
|
+
let eachPreview = previewForFragment(fragment);
|
11124
|
+
eachPreview.run(e.matchSelectorMap(renderOptions.previewMap, fragment));
|
11125
|
+
eachPreview.run(e.matchSelectorMap(renderOptions.placeholderMap, fragment).flatMap(getPlaceholderPreviewFn));
|
11126
|
+
}
|
11127
|
+
return cleaner.clean;
|
11128
|
+
}
|
11129
|
+
function getPlaceholderPreviewFn(placeholder) {
|
11130
|
+
if (!placeholder)
|
10639
11131
|
return;
|
11132
|
+
return function (preview) {
|
11133
|
+
preview.showPlaceholder(placeholder);
|
11134
|
+
};
|
11135
|
+
}
|
11136
|
+
function resolvePreviewFns(value) {
|
11137
|
+
if (u.isFunction(value)) {
|
11138
|
+
return [value];
|
11139
|
+
}
|
11140
|
+
else if (u.isString(value)) {
|
11141
|
+
return resolvePreviewString(value);
|
10640
11142
|
}
|
10641
|
-
|
10642
|
-
|
10643
|
-
if (activeElement) {
|
10644
|
-
clean(e.addTemporaryClass(activeElement, CLASS_ACTIVE));
|
11143
|
+
else if (u.isArray(value)) {
|
11144
|
+
return value.flatMap(resolvePreviewFns);
|
10645
11145
|
}
|
10646
|
-
|
10647
|
-
|
11146
|
+
else {
|
11147
|
+
return [];
|
10648
11148
|
}
|
10649
11149
|
}
|
10650
|
-
function
|
10651
|
-
|
10652
|
-
|
10653
|
-
return
|
10654
|
-
|
11150
|
+
function resolvePreviewString(str) {
|
11151
|
+
return u.map(u.parseScalarJSONPairs(str), ([name, parsedOptions]) => {
|
11152
|
+
let previewFn = namedPreviewFns[name] || up.fail('Unknown preview "%s"', name);
|
11153
|
+
return function (preview, runOptions) {
|
11154
|
+
up.puts('[up-preview]', 'Showing preview %o', name);
|
11155
|
+
return previewFn(preview, parsedOptions || runOptions);
|
11156
|
+
};
|
11157
|
+
});
|
11158
|
+
}
|
11159
|
+
function getActiveElements({ origin, activeElements }) {
|
11160
|
+
activeElements || (activeElements = u.wrapList(origin));
|
11161
|
+
return activeElements.map(findActivatableArea);
|
11162
|
+
}
|
11163
|
+
function registerPreview(name, previewFn) {
|
11164
|
+
previewFn.isDefault = up.framework.evaling;
|
11165
|
+
namedPreviewFns[name] = previewFn;
|
11166
|
+
}
|
11167
|
+
function getFeedbackClassesPreviewFn(feedbackOption, fragments) {
|
11168
|
+
if (!feedbackOption)
|
11169
|
+
return;
|
11170
|
+
return function (preview) {
|
11171
|
+
preview.addClassBatch(getActiveElements(preview.renderOptions), config.activeClasses);
|
11172
|
+
preview.addClassBatch(fragments, config.loadingClasses);
|
11173
|
+
};
|
11174
|
+
}
|
11175
|
+
function statusOptions(element, options, parserOptions) {
|
11176
|
+
options = u.options(options);
|
11177
|
+
const parser = new up.OptionsParser(element, options, parserOptions);
|
11178
|
+
parser.booleanOrString('disable');
|
11179
|
+
parser.boolean('feedback');
|
11180
|
+
parser.string('preview');
|
11181
|
+
parser.booleanOrString('revalidatePreview');
|
11182
|
+
parser.string('placeholder');
|
11183
|
+
return options;
|
10655
11184
|
}
|
10656
11185
|
function updateLayerIfLocationChanged(layer) {
|
10657
11186
|
const processedLocation = layer.feedbackLocation;
|
@@ -10679,9 +11208,13 @@ up.feedback = (function () {
|
|
10679
11208
|
up.on('up:framework:reset', reset);
|
10680
11209
|
return {
|
10681
11210
|
config,
|
10682
|
-
|
11211
|
+
preview: registerPreview,
|
11212
|
+
resolvePreviewFns,
|
11213
|
+
runPreviews,
|
11214
|
+
statusOptions,
|
10683
11215
|
};
|
10684
11216
|
})();
|
11217
|
+
up.preview = up.status.preview;
|
10685
11218
|
|
10686
11219
|
|
10687
11220
|
/***/ }),
|
@@ -10696,9 +11229,9 @@ up.radio = (function () {
|
|
10696
11229
|
pollInterval: 30000,
|
10697
11230
|
}));
|
10698
11231
|
function hungrySteps(renderOptions) {
|
10699
|
-
let {
|
11232
|
+
let { hungry, origin, layer: renderLayer, meta } = renderOptions;
|
10700
11233
|
let steps = { current: [], other: [] };
|
10701
|
-
if (!
|
11234
|
+
if (!hungry)
|
10702
11235
|
return steps;
|
10703
11236
|
let hungrySelector = config.selector('hungrySelectors');
|
10704
11237
|
const layerPreference = [renderLayer, ...renderLayer.ancestors, ...renderLayer.descendants];
|
@@ -10715,7 +11248,8 @@ up.radio = (function () {
|
|
10715
11248
|
let motionOptions = up.motion.motionOptions(element);
|
10716
11249
|
let selectEvent = up.event.build('up:fragment:hungry', { log: false });
|
10717
11250
|
let selectCallback = e.callbackAttr(element, 'up-on-hungry', { exposedKeys: ['newFragment', 'renderOptions'] });
|
10718
|
-
let step = Object.assign(Object.assign({ selector, oldElement: element, layer: elementLayer, origin }, motionOptions), { placement: 'swap',
|
11251
|
+
let step = Object.assign(Object.assign({ selector, oldElement: element, layer: elementLayer, origin }, motionOptions), { placement: 'swap', keep: true, maybe: true, meta,
|
11252
|
+
selectEvent,
|
10719
11253
|
selectCallback, originalRenderOptions: renderOptions });
|
10720
11254
|
if (applicableLayers.includes(renderLayer)) {
|
10721
11255
|
let list = renderLayer === elementLayer ? steps.current : steps.other;
|
@@ -10738,6 +11272,7 @@ up.radio = (function () {
|
|
10738
11272
|
parser.number('interval', { default: config.pollInterval });
|
10739
11273
|
parser.string('ifLayer', { default: 'front' });
|
10740
11274
|
parser.include(up.link.requestOptions);
|
11275
|
+
parser.include(up.status.statusOptions);
|
10741
11276
|
return options;
|
10742
11277
|
}
|
10743
11278
|
up.attribute('up-poll', function (fragment) {
|