unpoly-rails 3.0.0.rc1 → 3.0.0.rc3
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-migrate.js +90 -23
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +439 -398
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +421 -397
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/change/field.rb +4 -4
- data/lib/unpoly/rails/change/layer.rb +3 -3
- data/lib/unpoly/rails/change.rb +1 -1
- data/lib/unpoly/rails/request_echo_headers.rb +6 -2
- data/lib/unpoly/rails/util.rb +25 -0
- data/lib/unpoly/rails/version.rb +1 -1
- data/lib/unpoly-rails.rb +1 -0
- metadata +3 -2
data/assets/unpoly/unpoly.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.0.0-
|
8
|
+
version: '3.0.0-rc3'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -14,13 +14,18 @@ window.up = {
|
|
14
14
|
/***/ (() => {
|
15
15
|
|
16
16
|
up.mockable = function (originalFn) {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
if (window.jasmine) {
|
18
|
+
let name = originalFn.name;
|
19
|
+
let obj = { [name]: originalFn };
|
20
|
+
let mockableFn = function () {
|
21
|
+
return obj[name].apply(this, arguments);
|
22
|
+
};
|
23
|
+
mockableFn.mock = () => spyOn(obj, name);
|
24
|
+
return mockableFn;
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
return originalFn;
|
28
|
+
}
|
24
29
|
};
|
25
30
|
|
26
31
|
|
@@ -106,15 +111,15 @@ up.util = (function () {
|
|
106
111
|
return block;
|
107
112
|
}
|
108
113
|
}
|
109
|
-
function map(
|
110
|
-
if (
|
114
|
+
function map(list, block) {
|
115
|
+
if (list.length === 0) {
|
111
116
|
return [];
|
112
117
|
}
|
113
118
|
block = iteratee(block);
|
114
119
|
let mapped = [];
|
115
|
-
|
116
|
-
|
117
|
-
mapped.push(block(
|
120
|
+
let i = 0;
|
121
|
+
for (let item of list) {
|
122
|
+
mapped.push(block(item, i++));
|
118
123
|
}
|
119
124
|
return mapped;
|
120
125
|
}
|
@@ -126,8 +131,9 @@ up.util = (function () {
|
|
126
131
|
return map(array, pairer).reduce(merger, {});
|
127
132
|
}
|
128
133
|
function each(array, block) {
|
129
|
-
|
130
|
-
|
134
|
+
let i = 0;
|
135
|
+
for (let item of array) {
|
136
|
+
block(item, i++);
|
131
137
|
}
|
132
138
|
}
|
133
139
|
function isNull(object) {
|
@@ -303,10 +309,11 @@ up.util = (function () {
|
|
303
309
|
function some(list, tester) {
|
304
310
|
return !!findResult(list, tester);
|
305
311
|
}
|
306
|
-
function findResult(
|
312
|
+
function findResult(list, tester) {
|
307
313
|
tester = iteratee(tester);
|
308
|
-
|
309
|
-
|
314
|
+
let i = 0;
|
315
|
+
for (let item of list) {
|
316
|
+
const result = tester(item, i++);
|
310
317
|
if (result) {
|
311
318
|
return result;
|
312
319
|
}
|
@@ -315,8 +322,9 @@ up.util = (function () {
|
|
315
322
|
function every(list, tester) {
|
316
323
|
tester = iteratee(tester);
|
317
324
|
let match = true;
|
318
|
-
|
319
|
-
|
325
|
+
let i = 0;
|
326
|
+
for (let item of list) {
|
327
|
+
if (!tester(item, i++)) {
|
320
328
|
match = false;
|
321
329
|
break;
|
322
330
|
}
|
@@ -488,7 +496,7 @@ up.util = (function () {
|
|
488
496
|
function flatMap(array, block) {
|
489
497
|
return flatten(map(array, block));
|
490
498
|
}
|
491
|
-
function always(promise, callback) {
|
499
|
+
function always(promise, callback = identity) {
|
492
500
|
return promise.then(callback, callback);
|
493
501
|
}
|
494
502
|
function newDeferred() {
|
@@ -590,7 +598,7 @@ up.util = (function () {
|
|
590
598
|
Object.defineProperty(object, prop, { get });
|
591
599
|
}
|
592
600
|
function defineDelegates(object, props, targetProvider) {
|
593
|
-
|
601
|
+
for (let prop of props) {
|
594
602
|
Object.defineProperty(object, prop, {
|
595
603
|
get() {
|
596
604
|
const target = targetProvider.call(this);
|
@@ -605,7 +613,7 @@ up.util = (function () {
|
|
605
613
|
target[prop] = newValue;
|
606
614
|
}
|
607
615
|
});
|
608
|
-
}
|
616
|
+
}
|
609
617
|
}
|
610
618
|
function stringifyArg(arg) {
|
611
619
|
let string;
|
@@ -700,6 +708,14 @@ up.util = (function () {
|
|
700
708
|
};
|
701
709
|
}
|
702
710
|
}
|
711
|
+
function safeStringifyJSON(value) {
|
712
|
+
let json = JSON.stringify(value);
|
713
|
+
return escapeHighASCII(json);
|
714
|
+
}
|
715
|
+
function escapeHighASCII(string) {
|
716
|
+
let unicodeEscape = (char) => "\\u" + char.charCodeAt(0).toString(16).padStart(4, '0');
|
717
|
+
return string.replace(/[^\x00-\x7F]/g, unicodeEscape);
|
718
|
+
}
|
703
719
|
return {
|
704
720
|
parseURL,
|
705
721
|
normalizeURL,
|
@@ -795,7 +811,8 @@ up.util = (function () {
|
|
795
811
|
sprintf,
|
796
812
|
renameKeys,
|
797
813
|
negate,
|
798
|
-
memoizeMethod
|
814
|
+
memoizeMethod,
|
815
|
+
safeStringifyJSON,
|
799
816
|
};
|
800
817
|
})();
|
801
818
|
|
@@ -869,12 +886,6 @@ up.browser = (function () {
|
|
869
886
|
return value;
|
870
887
|
}
|
871
888
|
}
|
872
|
-
const getJQuery = function () {
|
873
|
-
if (!canJQuery()) {
|
874
|
-
up.fail('jQuery must be published as window.jQuery');
|
875
|
-
}
|
876
|
-
return jQuery;
|
877
|
-
};
|
878
889
|
function assertConfirmed(options) {
|
879
890
|
const confirmed = !options.confirm || window.confirm(options.confirm);
|
880
891
|
if (!confirmed) {
|
@@ -889,7 +900,6 @@ up.browser = (function () {
|
|
889
900
|
canEval,
|
890
901
|
assertConfirmed,
|
891
902
|
popCookie,
|
892
|
-
get jQuery() { return getJQuery(); },
|
893
903
|
};
|
894
904
|
})();
|
895
905
|
|
@@ -1161,9 +1171,17 @@ up.element = (function () {
|
|
1161
1171
|
klass = klass.replace(/:/g, '\\:');
|
1162
1172
|
return `.${klass}`;
|
1163
1173
|
}
|
1164
|
-
function
|
1174
|
+
function createBrokenDocumentFromHTML(html) {
|
1165
1175
|
return new DOMParser().parseFromString(html, 'text/html');
|
1166
1176
|
}
|
1177
|
+
function fixScriptish(scriptish) {
|
1178
|
+
let clone = document.createElement(scriptish.tagName);
|
1179
|
+
for (let { name, value } of scriptish.attributes) {
|
1180
|
+
clone.setAttribute(name, value);
|
1181
|
+
}
|
1182
|
+
clone.textContent = scriptish.innerHTML;
|
1183
|
+
scriptish.replaceWith(clone);
|
1184
|
+
}
|
1167
1185
|
function createFromHTML(html) {
|
1168
1186
|
const range = document.createRange();
|
1169
1187
|
range.setStart(document.body, 0);
|
@@ -1425,7 +1443,8 @@ up.element = (function () {
|
|
1425
1443
|
isSingleton,
|
1426
1444
|
attrSelector,
|
1427
1445
|
tagName: elementTagName,
|
1428
|
-
|
1446
|
+
createBrokenDocumentFromHTML,
|
1447
|
+
fixScriptish,
|
1429
1448
|
createFromHTML,
|
1430
1449
|
get root() { return getRoot(); },
|
1431
1450
|
paint,
|
@@ -1625,82 +1644,26 @@ up.LogConfig = class LogConfig extends up.Config {
|
|
1625
1644
|
/***/ (() => {
|
1626
1645
|
|
1627
1646
|
const u = up.util;
|
1628
|
-
up.
|
1629
|
-
constructor(
|
1630
|
-
this.config = config;
|
1647
|
+
up.FIFOCache = class FIFOCache {
|
1648
|
+
constructor({ capacity = 10, normalizeKey = u.identity } = {}) {
|
1631
1649
|
this.map = new Map();
|
1650
|
+
this.capacity = capacity;
|
1651
|
+
this.normalizeKey = normalizeKey;
|
1632
1652
|
}
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1636
|
-
maxSize() {
|
1637
|
-
return u.evalOption(this.config.size);
|
1638
|
-
}
|
1639
|
-
evictAge() {
|
1640
|
-
return u.evalOption(this.config.evictAge);
|
1641
|
-
}
|
1642
|
-
normalizeStoreKey(key) {
|
1643
|
-
return key;
|
1644
|
-
}
|
1645
|
-
isDisabled() {
|
1646
|
-
return this.maxSize() === 0 || this.evictAge() === 0;
|
1647
|
-
}
|
1648
|
-
evict() {
|
1649
|
-
this.map.clear();
|
1650
|
-
}
|
1651
|
-
records() {
|
1652
|
-
return this.map.values();
|
1653
|
-
}
|
1654
|
-
makeRoomForAnotherRecord() {
|
1655
|
-
const maxSize = this.maxSize();
|
1656
|
-
const currentSize = this.size();
|
1657
|
-
if (!maxSize || currentSize < maxSize)
|
1658
|
-
return;
|
1659
|
-
let records = Array.from(this.records());
|
1660
|
-
records.sort((a, b) => b.createdAt - a.createdAt);
|
1661
|
-
const overflow = currentSize - maxSize + 1;
|
1662
|
-
for (let i = 0; i < overflow; i++) {
|
1663
|
-
let key = records.pop().key;
|
1664
|
-
this.map.delete(key);
|
1665
|
-
}
|
1666
|
-
}
|
1667
|
-
alias(oldKey, newKey) {
|
1668
|
-
const value = this.get(oldKey);
|
1669
|
-
if (u.isDefined(value)) {
|
1670
|
-
this.set(newKey, value);
|
1671
|
-
}
|
1653
|
+
get(key) {
|
1654
|
+
key = this.normalizeKey(key);
|
1655
|
+
return this.map.get(key);
|
1672
1656
|
}
|
1673
1657
|
set(key, value) {
|
1674
|
-
if (this.
|
1675
|
-
|
1676
|
-
|
1677
|
-
key = this.normalizeStoreKey(key);
|
1678
|
-
const createdAt = new Date();
|
1679
|
-
const record = { key, value, createdAt };
|
1680
|
-
this.map.set(key, record);
|
1681
|
-
}
|
1682
|
-
remove(key) {
|
1683
|
-
key = this.normalizeStoreKey(key);
|
1684
|
-
this.map.delete(key);
|
1685
|
-
}
|
1686
|
-
isUsable(record) {
|
1687
|
-
const evictAge = this.evictAge();
|
1688
|
-
if (!evictAge)
|
1689
|
-
return true;
|
1690
|
-
const age = new Date() - record.createdAt;
|
1691
|
-
return age < evictAge;
|
1692
|
-
}
|
1693
|
-
get(key) {
|
1694
|
-
const storeKey = this.normalizeStoreKey(key);
|
1695
|
-
let record = this.map.get(storeKey);
|
1696
|
-
if (record) {
|
1697
|
-
if (this.isUsable(record)) {
|
1698
|
-
return record.value;
|
1699
|
-
}
|
1700
|
-
else {
|
1701
|
-
this.remove(key);
|
1702
|
-
}
|
1658
|
+
if (this.map.size === this.capacity) {
|
1659
|
+
let oldestKey = this.map.keys().next().value;
|
1660
|
+
this.map.delete(oldestKey);
|
1703
1661
|
}
|
1662
|
+
key = this.normalizeKey(key);
|
1663
|
+
this.map.set(key, value);
|
1664
|
+
}
|
1665
|
+
clear() {
|
1666
|
+
this.map.clear();
|
1704
1667
|
}
|
1705
1668
|
};
|
1706
1669
|
|
@@ -1874,7 +1837,7 @@ up.Change.Addition = class Addition extends up.Change {
|
|
1874
1837
|
setETag({ newElement, etag }) {
|
1875
1838
|
e.setMissingAttr(newElement, 'up-etag', etag || false);
|
1876
1839
|
}
|
1877
|
-
|
1840
|
+
setReloadAttrs(options) {
|
1878
1841
|
this.setSource(options);
|
1879
1842
|
this.setTime(options);
|
1880
1843
|
this.setETag(options);
|
@@ -2082,9 +2045,9 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
|
|
2082
2045
|
this.layer.createElements(this.content);
|
2083
2046
|
this.layer.setupHandlers();
|
2084
2047
|
this.handleHistory();
|
2085
|
-
this.
|
2048
|
+
this.setReloadAttrs({ newElement: this.content, source: this.options.source });
|
2086
2049
|
responseDoc.finalizeElement(this.content);
|
2087
|
-
up.hello(this.layer.element, {
|
2050
|
+
up.hello(this.layer.element, { ...this.options, layer: this.layer });
|
2088
2051
|
this.handleLayerChangeRequests();
|
2089
2052
|
this.handleScroll();
|
2090
2053
|
let renderResult = new up.RenderResult({
|
@@ -2244,7 +2207,7 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2244
2207
|
this.renderResult.fragments.unshift(...newFragments);
|
2245
2208
|
}
|
2246
2209
|
executeStep(step) {
|
2247
|
-
this.
|
2210
|
+
this.setReloadAttrs(step);
|
2248
2211
|
switch (step.placement) {
|
2249
2212
|
case 'swap': {
|
2250
2213
|
let keepPlan = this.findKeepPlan(step);
|
@@ -2749,19 +2712,12 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2749
2712
|
}
|
2750
2713
|
onRequestSettledWithResponse(response) {
|
2751
2714
|
this.response = response;
|
2752
|
-
|
2753
|
-
const eventProps = {
|
2754
|
-
response: this.response,
|
2755
|
-
renderOptions: this.options,
|
2756
|
-
revalidating: !!expiredResponse,
|
2757
|
-
expiredResponse,
|
2758
|
-
};
|
2759
|
-
if (up.fragment.config.skipResponse(eventProps)) {
|
2715
|
+
if (up.fragment.config.skipResponse(this.loadedEventProps())) {
|
2760
2716
|
this.skip();
|
2761
2717
|
}
|
2762
2718
|
else {
|
2763
2719
|
this.request.assertEmitted('up:fragment:loaded', {
|
2764
|
-
...
|
2720
|
+
...this.loadedEventProps(),
|
2765
2721
|
callback: this.options.onLoaded,
|
2766
2722
|
log: ['Loaded fragment from %s', this.response.description],
|
2767
2723
|
skip: () => this.skip()
|
@@ -2773,6 +2729,22 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2773
2729
|
}
|
2774
2730
|
return this.updateContentFromResponse(this.options);
|
2775
2731
|
}
|
2732
|
+
compilerPassMeta() {
|
2733
|
+
return u.pick(this.loadedEventProps(), [
|
2734
|
+
'revalidating',
|
2735
|
+
'response'
|
2736
|
+
]);
|
2737
|
+
}
|
2738
|
+
loadedEventProps() {
|
2739
|
+
const { expiredResponse } = this.options;
|
2740
|
+
return {
|
2741
|
+
request: this.request,
|
2742
|
+
response: this.response,
|
2743
|
+
renderOptions: this.options,
|
2744
|
+
revalidating: !!expiredResponse,
|
2745
|
+
expiredResponse,
|
2746
|
+
};
|
2747
|
+
}
|
2776
2748
|
onRequestSettledWithError(error) {
|
2777
2749
|
if (error instanceof up.Offline) {
|
2778
2750
|
this.request.emit('up:fragment:offline', {
|
@@ -2795,6 +2767,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2795
2767
|
up.puts('up.render()', 'Rendering failed response using fail-prefixed options (https://unpoly.com/failed-responses)');
|
2796
2768
|
}
|
2797
2769
|
this.augmentOptionsFromResponse(finalRenderOptions);
|
2770
|
+
finalRenderOptions.meta = this.compilerPassMeta();
|
2798
2771
|
let result = new up.Change.FromContent(finalRenderOptions).execute();
|
2799
2772
|
result.finished = this.finish(result, finalRenderOptions);
|
2800
2773
|
return result;
|
@@ -2870,6 +2843,7 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2870
2843
|
(() => {
|
2871
2844
|
u.memoizeMethod(_a.prototype, [
|
2872
2845
|
'getRequestAttrs',
|
2846
|
+
'loadedEventProps',
|
2873
2847
|
]);
|
2874
2848
|
})(),
|
2875
2849
|
_a);
|
@@ -2881,12 +2855,14 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2881
2855
|
|
2882
2856
|
const u = up.util;
|
2883
2857
|
up.CompilerPass = class CompilerPass {
|
2884
|
-
constructor(root, compilers, { layer, data, dataMap
|
2858
|
+
constructor(root, compilers, { layer, data, dataMap, meta }) {
|
2859
|
+
layer || (layer = up.layer.get(root) || up.layer.current);
|
2885
2860
|
this.root = root;
|
2886
2861
|
this.compilers = compilers;
|
2887
|
-
this.layer = layer
|
2862
|
+
this.layer = layer;
|
2888
2863
|
this.data = data;
|
2889
2864
|
this.dataMap = dataMap;
|
2865
|
+
this.meta = { layer, ...meta };
|
2890
2866
|
this.errors = [];
|
2891
2867
|
}
|
2892
2868
|
run() {
|
@@ -2931,11 +2907,10 @@ up.CompilerPass = class CompilerPass {
|
|
2931
2907
|
return up.migrate.postCompile?.(matches, compiler);
|
2932
2908
|
}
|
2933
2909
|
compileOneElement(compiler, element) {
|
2934
|
-
const
|
2935
|
-
const compileArgs = [elementArg];
|
2910
|
+
const compileArgs = [element];
|
2936
2911
|
if (compiler.length !== 1) {
|
2937
2912
|
const data = up.syntax.data(element);
|
2938
|
-
compileArgs.push(data);
|
2913
|
+
compileArgs.push(data, this.meta);
|
2939
2914
|
}
|
2940
2915
|
const result = this.applyCompilerFunction(compiler, element, compileArgs);
|
2941
2916
|
let destructorOrDestructors = this.destructorPresence(result);
|
@@ -2944,11 +2919,10 @@ up.CompilerPass = class CompilerPass {
|
|
2944
2919
|
}
|
2945
2920
|
}
|
2946
2921
|
compileBatch(compiler, elements) {
|
2947
|
-
const
|
2948
|
-
const compileArgs = [elementsArgs];
|
2922
|
+
const compileArgs = [elements];
|
2949
2923
|
if (compiler.length !== 1) {
|
2950
2924
|
const dataList = u.map(elements, up.syntax.data);
|
2951
|
-
compileArgs.push(dataList);
|
2925
|
+
compileArgs.push(dataList, this.meta);
|
2952
2926
|
}
|
2953
2927
|
const result = this.applyCompilerFunction(compiler, elements, compileArgs);
|
2954
2928
|
if (this.destructorPresence(result)) {
|
@@ -3250,7 +3224,6 @@ up.EventListener = class EventListener extends up.Record {
|
|
3250
3224
|
'eventType',
|
3251
3225
|
'selector',
|
3252
3226
|
'callback',
|
3253
|
-
'jQuery',
|
3254
3227
|
'guard',
|
3255
3228
|
'baseLayer',
|
3256
3229
|
'passive',
|
@@ -3297,8 +3270,7 @@ up.EventListener = class EventListener extends up.Record {
|
|
3297
3270
|
return;
|
3298
3271
|
}
|
3299
3272
|
if (element) {
|
3300
|
-
const
|
3301
|
-
const args = [event, elementArg];
|
3273
|
+
const args = [event, element];
|
3302
3274
|
const expectedArgCount = this.callback.length;
|
3303
3275
|
if (expectedArgCount !== 1 && expectedArgCount !== 2) {
|
3304
3276
|
const data = up.syntax.data(element);
|
@@ -3354,7 +3326,6 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
|
|
3354
3326
|
'eventTypes',
|
3355
3327
|
'selector',
|
3356
3328
|
'callback',
|
3357
|
-
'jQuery',
|
3358
3329
|
'guard',
|
3359
3330
|
'baseLayer',
|
3360
3331
|
'passive',
|
@@ -4092,44 +4063,6 @@ up.FragmentScrolling = class FragmentScrolling extends up.FragmentProcessor {
|
|
4092
4063
|
/* 47 */
|
4093
4064
|
/***/ (() => {
|
4094
4065
|
|
4095
|
-
const u = up.util;
|
4096
|
-
const e = up.element;
|
4097
|
-
up.HTMLWrapper = class HTMLWrapper {
|
4098
|
-
constructor(tagName) {
|
4099
|
-
this.tagName = tagName;
|
4100
|
-
const openTag = `<${this.tagName}[^>]*>`;
|
4101
|
-
const closeTag = `</${this.tagName}>`;
|
4102
|
-
const innerHTML = "(.|\\s)*?";
|
4103
|
-
this.pattern = new RegExp(openTag + innerHTML + closeTag, 'ig');
|
4104
|
-
this.attrName = `up-wrapped-${this.tagName}`;
|
4105
|
-
}
|
4106
|
-
strip(html) {
|
4107
|
-
return html.replace(this.pattern, '');
|
4108
|
-
}
|
4109
|
-
wrap(html) {
|
4110
|
-
return html.replace(this.pattern, this.wrapMatch.bind(this));
|
4111
|
-
}
|
4112
|
-
wrapMatch(match) {
|
4113
|
-
this.didWrap = true;
|
4114
|
-
return '<meta name="' + this.attrName + '" value="' + u.escapeHTML(match) + '">';
|
4115
|
-
}
|
4116
|
-
unwrap(element) {
|
4117
|
-
if (!this.didWrap) {
|
4118
|
-
return;
|
4119
|
-
}
|
4120
|
-
for (let wrappedChild of element.querySelectorAll(`meta[name='${this.attrName}']`)) {
|
4121
|
-
const originalHTML = wrappedChild.getAttribute('value');
|
4122
|
-
const restoredElement = e.createFromHTML(originalHTML);
|
4123
|
-
wrappedChild.replaceWith(restoredElement);
|
4124
|
-
}
|
4125
|
-
}
|
4126
|
-
};
|
4127
|
-
|
4128
|
-
|
4129
|
-
/***/ }),
|
4130
|
-
/* 48 */
|
4131
|
-
/***/ (() => {
|
4132
|
-
|
4133
4066
|
const e = up.element;
|
4134
4067
|
const u = up.util;
|
4135
4068
|
up.Layer = class Layer extends up.Record {
|
@@ -4276,12 +4209,12 @@ up.Layer = class Layer extends up.Record {
|
|
4276
4209
|
return this.stack.asCurrent(this, fn);
|
4277
4210
|
}
|
4278
4211
|
updateHistory(options) {
|
4279
|
-
if (u.isString(options.title)) {
|
4280
|
-
this.title = options.title;
|
4281
|
-
}
|
4282
4212
|
if (u.isString(options.location)) {
|
4283
4213
|
this.location = options.location;
|
4284
4214
|
}
|
4215
|
+
if (u.isString(options.title)) {
|
4216
|
+
this.title = options.title;
|
4217
|
+
}
|
4285
4218
|
}
|
4286
4219
|
isHistoryVisible() {
|
4287
4220
|
return this.history && (this.isRoot() || this.parent.isHistoryVisible());
|
@@ -4314,12 +4247,14 @@ up.Layer = class Layer extends up.Record {
|
|
4314
4247
|
set location(location) {
|
4315
4248
|
const previousLocation = this.location;
|
4316
4249
|
location = up.history.normalizeURL(location);
|
4317
|
-
if (previousLocation !== location) {
|
4250
|
+
if (previousLocation !== location || this.opening) {
|
4318
4251
|
this.savedLocation = location;
|
4319
|
-
this.emit('up:layer:location:changed', { location, log: false });
|
4320
4252
|
if (this.showsLiveHistory()) {
|
4321
4253
|
up.history.push(location);
|
4322
4254
|
}
|
4255
|
+
if (!this.opening) {
|
4256
|
+
this.emit('up:layer:location:changed', { location });
|
4257
|
+
}
|
4323
4258
|
}
|
4324
4259
|
}
|
4325
4260
|
selector(part) {
|
@@ -4341,11 +4276,14 @@ up.Layer = class Layer extends up.Record {
|
|
4341
4276
|
let focusedElement = document.activeElement;
|
4342
4277
|
return focusedElement !== document.body && this.element.contains(focusedElement);
|
4343
4278
|
}
|
4279
|
+
reset() {
|
4280
|
+
Object.assign(this, this.defaults());
|
4281
|
+
}
|
4344
4282
|
};
|
4345
4283
|
|
4346
4284
|
|
4347
4285
|
/***/ }),
|
4348
|
-
/*
|
4286
|
+
/* 48 */
|
4349
4287
|
/***/ (() => {
|
4350
4288
|
|
4351
4289
|
const e = up.element;
|
@@ -4620,7 +4558,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
|
|
4620
4558
|
|
4621
4559
|
|
4622
4560
|
/***/ }),
|
4623
|
-
/*
|
4561
|
+
/* 49 */
|
4624
4562
|
/***/ (() => {
|
4625
4563
|
|
4626
4564
|
up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
|
@@ -4657,7 +4595,7 @@ up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
|
|
4657
4595
|
|
4658
4596
|
|
4659
4597
|
/***/ }),
|
4660
|
-
/*
|
4598
|
+
/* 50 */
|
4661
4599
|
/***/ (() => {
|
4662
4600
|
|
4663
4601
|
var _a;
|
@@ -4695,7 +4633,7 @@ up.Layer.OverlayWithViewport = (_a = class OverlayWithViewport extends up.Layer.
|
|
4695
4633
|
|
4696
4634
|
|
4697
4635
|
/***/ }),
|
4698
|
-
/*
|
4636
|
+
/* 51 */
|
4699
4637
|
/***/ (() => {
|
4700
4638
|
|
4701
4639
|
var _a;
|
@@ -4732,9 +4670,6 @@ up.Layer.Root = (_a = class Root extends up.Layer {
|
|
4732
4670
|
cannotCloseRoot() {
|
4733
4671
|
up.fail('Cannot close the root layer');
|
4734
4672
|
}
|
4735
|
-
reset() {
|
4736
|
-
Object.assign(this, this.defaults());
|
4737
|
-
}
|
4738
4673
|
toString() {
|
4739
4674
|
return "root layer";
|
4740
4675
|
}
|
@@ -4744,7 +4679,7 @@ up.Layer.Root = (_a = class Root extends up.Layer {
|
|
4744
4679
|
|
4745
4680
|
|
4746
4681
|
/***/ }),
|
4747
|
-
/*
|
4682
|
+
/* 52 */
|
4748
4683
|
/***/ (() => {
|
4749
4684
|
|
4750
4685
|
var _a;
|
@@ -4755,7 +4690,7 @@ up.Layer.Modal = (_a = class Modal extends up.Layer.OverlayWithViewport {
|
|
4755
4690
|
|
4756
4691
|
|
4757
4692
|
/***/ }),
|
4758
|
-
/*
|
4693
|
+
/* 53 */
|
4759
4694
|
/***/ (() => {
|
4760
4695
|
|
4761
4696
|
var _a;
|
@@ -4766,7 +4701,7 @@ up.Layer.Popup = (_a = class Popup extends up.Layer.OverlayWithTether {
|
|
4766
4701
|
|
4767
4702
|
|
4768
4703
|
/***/ }),
|
4769
|
-
/*
|
4704
|
+
/* 54 */
|
4770
4705
|
/***/ (() => {
|
4771
4706
|
|
4772
4707
|
var _a;
|
@@ -4777,7 +4712,7 @@ up.Layer.Drawer = (_a = class Drawer extends up.Layer.OverlayWithViewport {
|
|
4777
4712
|
|
4778
4713
|
|
4779
4714
|
/***/ }),
|
4780
|
-
/*
|
4715
|
+
/* 55 */
|
4781
4716
|
/***/ (() => {
|
4782
4717
|
|
4783
4718
|
var _a;
|
@@ -4788,7 +4723,7 @@ up.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {
|
|
4788
4723
|
|
4789
4724
|
|
4790
4725
|
/***/ }),
|
4791
|
-
/*
|
4726
|
+
/* 56 */
|
4792
4727
|
/***/ (() => {
|
4793
4728
|
|
4794
4729
|
const u = up.util;
|
@@ -4878,7 +4813,7 @@ up.LayerLookup = class LayerLookup {
|
|
4878
4813
|
|
4879
4814
|
|
4880
4815
|
/***/ }),
|
4881
|
-
/*
|
4816
|
+
/* 57 */
|
4882
4817
|
/***/ (() => {
|
4883
4818
|
|
4884
4819
|
const u = up.util;
|
@@ -4991,7 +4926,7 @@ up.LayerStack = class LayerStack extends Array {
|
|
4991
4926
|
|
4992
4927
|
|
4993
4928
|
/***/ }),
|
4994
|
-
/*
|
4929
|
+
/* 58 */
|
4995
4930
|
/***/ (() => {
|
4996
4931
|
|
4997
4932
|
up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
@@ -5022,7 +4957,7 @@ up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
|
5022
4957
|
|
5023
4958
|
|
5024
4959
|
/***/ }),
|
5025
|
-
/*
|
4960
|
+
/* 59 */
|
5026
4961
|
/***/ (() => {
|
5027
4962
|
|
5028
4963
|
const u = up.util;
|
@@ -5090,7 +5025,7 @@ up.LinkPreloader = class LinkPreloader {
|
|
5090
5025
|
|
5091
5026
|
|
5092
5027
|
/***/ }),
|
5093
|
-
/*
|
5028
|
+
/* 60 */
|
5094
5029
|
/***/ (() => {
|
5095
5030
|
|
5096
5031
|
const u = up.util;
|
@@ -5186,7 +5121,7 @@ up.MotionController = class MotionController {
|
|
5186
5121
|
|
5187
5122
|
|
5188
5123
|
/***/ }),
|
5189
|
-
/*
|
5124
|
+
/* 61 */
|
5190
5125
|
/***/ (() => {
|
5191
5126
|
|
5192
5127
|
const u = up.util;
|
@@ -5278,7 +5213,7 @@ up.NonceableCallback = class NonceableCallback {
|
|
5278
5213
|
|
5279
5214
|
|
5280
5215
|
/***/ }),
|
5281
|
-
/*
|
5216
|
+
/* 62 */
|
5282
5217
|
/***/ (() => {
|
5283
5218
|
|
5284
5219
|
const u = up.util;
|
@@ -5355,7 +5290,7 @@ up.OptionsParser = class OptionsParser {
|
|
5355
5290
|
|
5356
5291
|
|
5357
5292
|
/***/ }),
|
5358
|
-
/*
|
5293
|
+
/* 63 */
|
5359
5294
|
/***/ (() => {
|
5360
5295
|
|
5361
5296
|
const e = up.element;
|
@@ -5423,7 +5358,7 @@ up.OverlayFocus = class OverlayFocus {
|
|
5423
5358
|
|
5424
5359
|
|
5425
5360
|
/***/ }),
|
5426
|
-
/*
|
5361
|
+
/* 64 */
|
5427
5362
|
/***/ (() => {
|
5428
5363
|
|
5429
5364
|
const u = up.util;
|
@@ -5654,7 +5589,7 @@ up.Params = class Params {
|
|
5654
5589
|
|
5655
5590
|
|
5656
5591
|
/***/ }),
|
5657
|
-
/*
|
5592
|
+
/* 65 */
|
5658
5593
|
/***/ (() => {
|
5659
5594
|
|
5660
5595
|
const e = up.element;
|
@@ -5704,7 +5639,7 @@ up.ProgressBar = class ProgressBar {
|
|
5704
5639
|
|
5705
5640
|
|
5706
5641
|
/***/ }),
|
5707
|
-
/*
|
5642
|
+
/* 66 */
|
5708
5643
|
/***/ (() => {
|
5709
5644
|
|
5710
5645
|
const u = up.util;
|
@@ -5750,7 +5685,7 @@ up.RenderOptions = (function () {
|
|
5750
5685
|
'history',
|
5751
5686
|
'source',
|
5752
5687
|
'saveScroll',
|
5753
|
-
'navigate'
|
5688
|
+
'navigate',
|
5754
5689
|
]);
|
5755
5690
|
const CONTENT_KEYS = [
|
5756
5691
|
'url',
|
@@ -5828,7 +5763,7 @@ up.RenderOptions = (function () {
|
|
5828
5763
|
|
5829
5764
|
|
5830
5765
|
/***/ }),
|
5831
|
-
/*
|
5766
|
+
/* 67 */
|
5832
5767
|
/***/ (() => {
|
5833
5768
|
|
5834
5769
|
up.RenderResult = class RenderResult extends up.Record {
|
@@ -5856,7 +5791,7 @@ up.RenderResult = class RenderResult extends up.Record {
|
|
5856
5791
|
|
5857
5792
|
|
5858
5793
|
/***/ }),
|
5859
|
-
/*
|
5794
|
+
/* 68 */
|
5860
5795
|
/***/ (() => {
|
5861
5796
|
|
5862
5797
|
var _a;
|
@@ -5868,7 +5803,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
5868
5803
|
if (this.wrapMethod == null) {
|
5869
5804
|
this.wrapMethod = up.network.config.wrapMethod;
|
5870
5805
|
}
|
5871
|
-
this.
|
5806
|
+
this.normalize();
|
5872
5807
|
if ((this.target || this.layer || this.origin) && !options.basic) {
|
5873
5808
|
const layerLookupOptions = { origin: this.origin };
|
5874
5809
|
this.layer = up.layer.get(this.layer, layerLookupOptions);
|
@@ -5880,6 +5815,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
5880
5815
|
}
|
5881
5816
|
this.deferred = u.newDeferred();
|
5882
5817
|
this.badResponseTime ?? (this.badResponseTime = u.evalOption(up.network.config.badResponseTime, this));
|
5818
|
+
this.addAutoHeaders();
|
5883
5819
|
}
|
5884
5820
|
keys() {
|
5885
5821
|
return [
|
@@ -5891,7 +5827,6 @@ up.Request = (_a = class Request extends up.Record {
|
|
5891
5827
|
'failTarget',
|
5892
5828
|
'headers',
|
5893
5829
|
'timeout',
|
5894
|
-
'preload',
|
5895
5830
|
'background',
|
5896
5831
|
'cache',
|
5897
5832
|
'expireCache',
|
@@ -5904,11 +5839,12 @@ up.Request = (_a = class Request extends up.Record {
|
|
5904
5839
|
'failContext',
|
5905
5840
|
'origin',
|
5906
5841
|
'fragments',
|
5907
|
-
'
|
5842
|
+
'builtAt',
|
5908
5843
|
'wrapMethod',
|
5909
5844
|
'contentType',
|
5910
5845
|
'payload',
|
5911
5846
|
'onQueued',
|
5847
|
+
'onLoading',
|
5912
5848
|
'fail',
|
5913
5849
|
'abortable',
|
5914
5850
|
'badResponseTime',
|
@@ -5919,7 +5855,8 @@ up.Request = (_a = class Request extends up.Record {
|
|
5919
5855
|
state: 'new',
|
5920
5856
|
abortable: true,
|
5921
5857
|
headers: {},
|
5922
|
-
timeout: up.network.config.timeout
|
5858
|
+
timeout: up.network.config.timeout,
|
5859
|
+
builtAt: new Date(),
|
5923
5860
|
};
|
5924
5861
|
}
|
5925
5862
|
get xhr() {
|
@@ -5940,10 +5877,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
5940
5877
|
get fragment() {
|
5941
5878
|
return this.fragments?.[0];
|
5942
5879
|
}
|
5943
|
-
|
5944
|
-
u.delegate(this, ['deferred', 'state', 'preload', 'expired'], () => sourceRequest);
|
5945
|
-
}
|
5946
|
-
normalizeForCaching() {
|
5880
|
+
normalize() {
|
5947
5881
|
this.method = u.normalizeMethod(this.method);
|
5948
5882
|
this.extractHashFromURL();
|
5949
5883
|
this.transferParamsToURL();
|
@@ -5990,14 +5924,26 @@ up.Request = (_a = class Request extends up.Record {
|
|
5990
5924
|
load() {
|
5991
5925
|
if (this.state !== 'new')
|
5992
5926
|
return;
|
5993
|
-
this.
|
5994
|
-
|
5995
|
-
|
5996
|
-
|
5997
|
-
|
5998
|
-
|
5999
|
-
|
6000
|
-
|
5927
|
+
if (this.emitLoad()) {
|
5928
|
+
this.state = 'loading';
|
5929
|
+
this.normalize();
|
5930
|
+
this.onLoading?.();
|
5931
|
+
this.expired = false;
|
5932
|
+
new up.Request.XHRRenderer(this).buildAndSend({
|
5933
|
+
onload: () => this.onXHRLoad(),
|
5934
|
+
onerror: () => this.onXHRError(),
|
5935
|
+
ontimeout: () => this.onXHRTimeout(),
|
5936
|
+
onabort: () => this.onXHRAbort()
|
5937
|
+
});
|
5938
|
+
return true;
|
5939
|
+
}
|
5940
|
+
else {
|
5941
|
+
this.abort({ reason: 'Prevented by event listener' });
|
5942
|
+
}
|
5943
|
+
}
|
5944
|
+
emitLoad() {
|
5945
|
+
let event = this.emit('up:request:load', { log: ['Loading %s', this.description] });
|
5946
|
+
return !event.defaultPrevented;
|
6001
5947
|
}
|
6002
5948
|
loadPage() {
|
6003
5949
|
up.network.abort();
|
@@ -6041,18 +5987,19 @@ up.Request = (_a = class Request extends up.Record {
|
|
6041
5987
|
this.emit('up:request:offline', { log: message });
|
6042
5988
|
}
|
6043
5989
|
respondWith(response) {
|
6044
|
-
|
5990
|
+
this.response = response;
|
5991
|
+
if (this.isSettled())
|
6045
5992
|
return;
|
6046
5993
|
this.state = 'loaded';
|
6047
5994
|
if (response.ok) {
|
6048
|
-
|
5995
|
+
this.deferred.resolve(response);
|
6049
5996
|
}
|
6050
5997
|
else {
|
6051
|
-
|
5998
|
+
this.deferred.reject(response);
|
6052
5999
|
}
|
6053
6000
|
}
|
6054
6001
|
isSettled() {
|
6055
|
-
return (this.state !== 'new') && (this.state !== 'loading');
|
6002
|
+
return (this.state !== 'new') && (this.state !== 'loading') && (this.state !== 'tracking');
|
6056
6003
|
}
|
6057
6004
|
csrfHeader() {
|
6058
6005
|
return up.protocol.csrfHeader();
|
@@ -6099,24 +6046,6 @@ up.Request = (_a = class Request extends up.Record {
|
|
6099
6046
|
}
|
6100
6047
|
return new up.Response(responseAttrs);
|
6101
6048
|
}
|
6102
|
-
cacheKey() {
|
6103
|
-
return JSON.stringify([
|
6104
|
-
this.method,
|
6105
|
-
this.url,
|
6106
|
-
this.params.toQuery(),
|
6107
|
-
this.metaProps()
|
6108
|
-
]);
|
6109
|
-
}
|
6110
|
-
metaProps() {
|
6111
|
-
const props = {};
|
6112
|
-
for (let key of u.evalOption(up.network.config.requestMetaKeys, this)) {
|
6113
|
-
const value = this[key];
|
6114
|
-
if (u.isGiven(value)) {
|
6115
|
-
props[key] = value;
|
6116
|
-
}
|
6117
|
-
}
|
6118
|
-
return props;
|
6119
|
-
}
|
6120
6049
|
buildEventEmitter(args) {
|
6121
6050
|
return up.EventEmitter.fromEmitArgs(args, {
|
6122
6051
|
layer: this.layer,
|
@@ -6142,9 +6071,27 @@ up.Request = (_a = class Request extends up.Record {
|
|
6142
6071
|
return u.some(subtreeElements, (subtreeElement) => subtreeElement.contains(fragment));
|
6143
6072
|
});
|
6144
6073
|
}
|
6145
|
-
get
|
6146
|
-
|
6147
|
-
|
6074
|
+
get age() {
|
6075
|
+
return new Date() - this.builtAt;
|
6076
|
+
}
|
6077
|
+
header(name) {
|
6078
|
+
return this.headers[name];
|
6079
|
+
}
|
6080
|
+
addAutoHeaders() {
|
6081
|
+
for (let key of ['target', 'failTarget', 'mode', 'failMode', 'context', 'failContext']) {
|
6082
|
+
this.addAutoHeader(up.protocol.headerize(key), this[key]);
|
6083
|
+
}
|
6084
|
+
let csrfHeader, csrfToken;
|
6085
|
+
if ((csrfHeader = this.csrfHeader()) && (csrfToken = this.csrfToken())) {
|
6086
|
+
this.addAutoHeader(csrfHeader, csrfToken);
|
6087
|
+
}
|
6088
|
+
this.addAutoHeader(up.protocol.headerize('version'), up.version);
|
6089
|
+
}
|
6090
|
+
addAutoHeader(name, value) {
|
6091
|
+
if (u.isOptions(value) || u.isArray(value)) {
|
6092
|
+
value = u.safeStringifyJSON(value);
|
6093
|
+
}
|
6094
|
+
this.headers[name] = value;
|
6148
6095
|
}
|
6149
6096
|
static tester(condition, { except } = {}) {
|
6150
6097
|
let testFn;
|
@@ -6162,8 +6109,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
6162
6109
|
testFn = (_request) => condition;
|
6163
6110
|
}
|
6164
6111
|
if (except) {
|
6165
|
-
|
6166
|
-
return (request) => (request.cacheKey() !== exceptCacheKey) && testFn(request);
|
6112
|
+
return (request) => !up.cache.willHaveSameResponse(request, except) && testFn(request);
|
6167
6113
|
}
|
6168
6114
|
else {
|
6169
6115
|
return testFn;
|
@@ -6177,39 +6123,144 @@ up.Request = (_a = class Request extends up.Record {
|
|
6177
6123
|
|
6178
6124
|
|
6179
6125
|
/***/ }),
|
6180
|
-
/*
|
6126
|
+
/* 69 */
|
6181
6127
|
/***/ (() => {
|
6182
6128
|
|
6183
|
-
|
6184
|
-
up.Request.Cache = class Cache
|
6185
|
-
|
6129
|
+
const u = up.util;
|
6130
|
+
up.Request.Cache = class Cache {
|
6131
|
+
constructor() {
|
6132
|
+
this.reset();
|
6133
|
+
}
|
6134
|
+
reset() {
|
6135
|
+
this.varyInfo = {};
|
6136
|
+
this.map = new Map();
|
6137
|
+
}
|
6138
|
+
cacheKey(request) {
|
6139
|
+
let influencingHeaders = this.getPreviousInfluencingHeaders(request);
|
6140
|
+
let varyPart = u.flatMap(influencingHeaders, (headerName) => [headerName, request.header(headerName)]);
|
6141
|
+
return [request.description, ...varyPart].join(':');
|
6142
|
+
}
|
6143
|
+
getPreviousInfluencingHeaders(request) {
|
6144
|
+
var _a, _b;
|
6145
|
+
return ((_a = this.varyInfo)[_b = request.description] || (_a[_b] = new Set()));
|
6146
|
+
}
|
6147
|
+
get(request) {
|
6148
|
+
request = this.wrap(request);
|
6149
|
+
let cacheKey = this.cacheKey(request);
|
6150
|
+
let cachedRequest = this.map.get(cacheKey);
|
6151
|
+
if (cachedRequest) {
|
6152
|
+
if (this.isUsable(cachedRequest)) {
|
6153
|
+
return cachedRequest;
|
6154
|
+
}
|
6155
|
+
else {
|
6156
|
+
this.map.delete(cacheKey);
|
6157
|
+
}
|
6158
|
+
}
|
6159
|
+
}
|
6160
|
+
get capacity() {
|
6186
6161
|
return up.network.config.cacheSize;
|
6187
6162
|
}
|
6188
|
-
|
6189
|
-
return up.network.config.cacheEvictAge;
|
6163
|
+
isUsable(request) {
|
6164
|
+
return request.age < up.network.config.cacheEvictAge;
|
6165
|
+
}
|
6166
|
+
async put(request) {
|
6167
|
+
request = this.wrap(request);
|
6168
|
+
this.makeRoom();
|
6169
|
+
let cacheKey = this.updateCacheKey(request);
|
6170
|
+
this.map.set(cacheKey, request);
|
6171
|
+
}
|
6172
|
+
updateCacheKey(request) {
|
6173
|
+
let oldCacheKey = this.cacheKey(request);
|
6174
|
+
let { response } = request;
|
6175
|
+
if (response) {
|
6176
|
+
this.mergePreviousHeaderNames(request, response);
|
6177
|
+
let newCacheKey = this.cacheKey(request);
|
6178
|
+
this.renameMapKey(oldCacheKey, newCacheKey);
|
6179
|
+
return newCacheKey;
|
6180
|
+
}
|
6181
|
+
else {
|
6182
|
+
return oldCacheKey;
|
6183
|
+
}
|
6184
|
+
}
|
6185
|
+
renameMapKey(oldKey, newKey) {
|
6186
|
+
if (oldKey !== newKey && this.map.has(oldKey)) {
|
6187
|
+
this.map.set(newKey, this.map.get(oldKey));
|
6188
|
+
this.map.delete(oldKey);
|
6189
|
+
}
|
6190
|
+
}
|
6191
|
+
mergePreviousHeaderNames(request, response) {
|
6192
|
+
let headersInfluencingResponse = response.ownInfluncingHeaders;
|
6193
|
+
if (headersInfluencingResponse.length) {
|
6194
|
+
let previousInfluencingHeaders = this.getPreviousInfluencingHeaders(request);
|
6195
|
+
for (let headerName of headersInfluencingResponse) {
|
6196
|
+
previousInfluencingHeaders.add(headerName);
|
6197
|
+
}
|
6198
|
+
}
|
6199
|
+
}
|
6200
|
+
alias(existingCachedRequest, newRequest) {
|
6201
|
+
existingCachedRequest = this.wrap(existingCachedRequest);
|
6202
|
+
newRequest = this.wrap(newRequest);
|
6203
|
+
this.track(existingCachedRequest, newRequest, { force: true });
|
6204
|
+
this.put(newRequest);
|
6205
|
+
return newRequest;
|
6206
|
+
}
|
6207
|
+
async track(existingRequest, newRequest, options = {}) {
|
6208
|
+
newRequest.trackedRequest = existingRequest;
|
6209
|
+
newRequest.state = 'tracking';
|
6210
|
+
let value = await u.always(existingRequest);
|
6211
|
+
if (value instanceof up.Response) {
|
6212
|
+
if (options.force || this.isCacheCompatible(existingRequest, newRequest)) {
|
6213
|
+
newRequest.fromCache = true;
|
6214
|
+
newRequest.respondWith(value);
|
6215
|
+
u.delegate(newRequest, ['expired', 'state'], () => existingRequest);
|
6216
|
+
}
|
6217
|
+
else {
|
6218
|
+
delete newRequest.trackedRequest;
|
6219
|
+
newRequest.state = 'new';
|
6220
|
+
options.onIncompatible?.(newRequest);
|
6221
|
+
}
|
6222
|
+
}
|
6223
|
+
else {
|
6224
|
+
newRequest.state = existingRequest.state;
|
6225
|
+
newRequest.deferred.reject(value);
|
6226
|
+
}
|
6227
|
+
}
|
6228
|
+
willHaveSameResponse(existingRequest, newRequest) {
|
6229
|
+
return existingRequest === newRequest || existingRequest === newRequest.trackedRequest;
|
6190
6230
|
}
|
6191
|
-
|
6192
|
-
|
6231
|
+
delete(request) {
|
6232
|
+
request = this.wrap(request);
|
6233
|
+
let cacheKey = this.cacheKey(request);
|
6234
|
+
this.map.delete(cacheKey);
|
6193
6235
|
}
|
6194
6236
|
evict(condition = true, testerOptions) {
|
6195
|
-
this.eachMatch(condition, testerOptions, (
|
6237
|
+
this.eachMatch(condition, testerOptions, (request) => this.delete(request));
|
6196
6238
|
}
|
6197
6239
|
expire(condition = true, testerOptions) {
|
6198
|
-
this.eachMatch(condition, testerOptions, (
|
6240
|
+
this.eachMatch(condition, testerOptions, (request) => request.expired = true);
|
6241
|
+
}
|
6242
|
+
makeRoom() {
|
6243
|
+
while (this.map.size >= this.capacity) {
|
6244
|
+
let oldestKey = this.map.keys().next().value;
|
6245
|
+
this.map.delete(oldestKey);
|
6246
|
+
}
|
6199
6247
|
}
|
6200
6248
|
eachMatch(condition = true, testerOptions, fn) {
|
6201
6249
|
let tester = up.Request.tester(condition, testerOptions);
|
6202
|
-
|
6203
|
-
|
6204
|
-
|
6205
|
-
|
6206
|
-
|
6250
|
+
let results = u.filter(this.map.values(), tester);
|
6251
|
+
u.each(results, fn);
|
6252
|
+
}
|
6253
|
+
isCacheCompatible(request1, request2) {
|
6254
|
+
return this.cacheKey(request1) === this.cacheKey(request2);
|
6255
|
+
}
|
6256
|
+
wrap(requestOrOptions) {
|
6257
|
+
return u.wrapValue(up.Request, requestOrOptions);
|
6207
6258
|
}
|
6208
6259
|
};
|
6209
6260
|
|
6210
6261
|
|
6211
6262
|
/***/ }),
|
6212
|
-
/*
|
6263
|
+
/* 70 */
|
6213
6264
|
/***/ (() => {
|
6214
6265
|
|
6215
6266
|
const u = up.util;
|
@@ -6228,7 +6279,6 @@ up.Request.Queue = class Queue {
|
|
6228
6279
|
asap(request) {
|
6229
6280
|
request.runQueuedCallbacks();
|
6230
6281
|
u.always(request, responseOrError => this.onRequestSettled(request, responseOrError));
|
6231
|
-
request.queuedAt = new Date();
|
6232
6282
|
this.scheduleSlowTimer(request);
|
6233
6283
|
this.queueRequest(request);
|
6234
6284
|
u.microtask(() => this.poke());
|
@@ -6240,7 +6290,7 @@ up.Request.Queue = class Queue {
|
|
6240
6290
|
}
|
6241
6291
|
}
|
6242
6292
|
scheduleSlowTimer(request) {
|
6243
|
-
let timeUntilLate = Math.max(request.badResponseTime - request.
|
6293
|
+
let timeUntilLate = Math.max(request.badResponseTime - request.age, 0);
|
6244
6294
|
u.timer(timeUntilLate, () => this.checkLate());
|
6245
6295
|
}
|
6246
6296
|
getMaxConcurrency() {
|
@@ -6262,13 +6312,8 @@ up.Request.Queue = class Queue {
|
|
6262
6312
|
return u.remove(this.queuedRequests, request);
|
6263
6313
|
}
|
6264
6314
|
sendRequestNow(request) {
|
6265
|
-
if (request.
|
6266
|
-
request.abort({ reason: 'Prevented by event listener' });
|
6267
|
-
}
|
6268
|
-
else {
|
6269
|
-
request.normalizeForCaching();
|
6315
|
+
if (request.load()) {
|
6270
6316
|
this.currentRequests.push(request);
|
6271
|
-
request.load();
|
6272
6317
|
}
|
6273
6318
|
}
|
6274
6319
|
onRequestSettled(request, responseOrError) {
|
@@ -6317,13 +6362,13 @@ up.Request.Queue = class Queue {
|
|
6317
6362
|
isLate() {
|
6318
6363
|
const allForegroundRequests = u.reject(this.allRequests, 'background');
|
6319
6364
|
const timerTolerance = 1;
|
6320
|
-
return u.some(allForegroundRequests, request => request.
|
6365
|
+
return u.some(allForegroundRequests, (request) => request.age >= (request.badResponseTime - timerTolerance));
|
6321
6366
|
}
|
6322
6367
|
};
|
6323
6368
|
|
6324
6369
|
|
6325
6370
|
/***/ }),
|
6326
|
-
/*
|
6371
|
+
/* 71 */
|
6327
6372
|
/***/ (() => {
|
6328
6373
|
|
6329
6374
|
const u = up.util;
|
@@ -6362,7 +6407,7 @@ up.Request.FormRenderer = class FormRenderer {
|
|
6362
6407
|
|
6363
6408
|
|
6364
6409
|
/***/ }),
|
6365
|
-
/*
|
6410
|
+
/* 72 */
|
6366
6411
|
/***/ (() => {
|
6367
6412
|
|
6368
6413
|
var _a;
|
@@ -6380,21 +6425,13 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
|
|
6380
6425
|
xhr.timeout = this.request.timeout;
|
6381
6426
|
}
|
6382
6427
|
xhr.open(this.getMethod(), this.request.url);
|
6383
|
-
const metaProps = this.request.metaProps();
|
6384
|
-
for (let key in metaProps) {
|
6385
|
-
this.addHeader(xhr, up.protocol.headerize(key), metaProps[key]);
|
6386
|
-
}
|
6387
|
-
for (let header in this.request.headers) {
|
6388
|
-
this.addHeader(xhr, header, this.request.headers[header]);
|
6389
|
-
}
|
6390
|
-
let csrfHeader, csrfToken;
|
6391
|
-
if ((csrfHeader = this.request.csrfHeader()) && (csrfToken = this.request.csrfToken())) {
|
6392
|
-
this.addHeader(xhr, csrfHeader, csrfToken);
|
6393
|
-
}
|
6394
|
-
this.addHeader(xhr, up.protocol.headerize('version'), up.version);
|
6395
6428
|
let contentType = this.getContentType();
|
6396
6429
|
if (contentType) {
|
6397
|
-
|
6430
|
+
xhr.setRequestHeader('Content-Type', contentType);
|
6431
|
+
}
|
6432
|
+
for (let headerName in this.request.headers) {
|
6433
|
+
let headerValue = this.request.headers[headerName];
|
6434
|
+
xhr.setRequestHeader(headerName, headerValue);
|
6398
6435
|
}
|
6399
6436
|
Object.assign(xhr, handlers);
|
6400
6437
|
xhr.send(this.getPayload());
|
@@ -6416,12 +6453,6 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
|
|
6416
6453
|
this.finalizePayload();
|
6417
6454
|
return this.payload;
|
6418
6455
|
}
|
6419
|
-
addHeader(xhr, header, value) {
|
6420
|
-
if (u.isOptions(value) || u.isArray(value)) {
|
6421
|
-
value = JSON.stringify(value);
|
6422
|
-
}
|
6423
|
-
xhr.setRequestHeader(header, value);
|
6424
|
-
}
|
6425
6456
|
finalizePayload() {
|
6426
6457
|
this.payload = this.request.payload;
|
6427
6458
|
this.contentType = this.request.contentType;
|
@@ -6448,7 +6479,7 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
|
|
6448
6479
|
|
6449
6480
|
|
6450
6481
|
/***/ }),
|
6451
|
-
/*
|
6482
|
+
/* 73 */
|
6452
6483
|
/***/ (() => {
|
6453
6484
|
|
6454
6485
|
const u = up.util;
|
@@ -6483,23 +6514,27 @@ up.Response = class Response extends up.Record {
|
|
6483
6514
|
get ok() {
|
6484
6515
|
return !u.evalOption(this.fail ?? up.network.config.fail, this);
|
6485
6516
|
}
|
6486
|
-
|
6517
|
+
header(name) {
|
6487
6518
|
return this.headers[name] || this.xhr?.getResponseHeader(name);
|
6488
6519
|
}
|
6520
|
+
get ownInfluncingHeaders() {
|
6521
|
+
let influencingHeaders = up.protocol.influencingHeadersFromResponse(this);
|
6522
|
+
return u.filter(influencingHeaders, (headerName) => this.request.header(headerName));
|
6523
|
+
}
|
6489
6524
|
get contentType() {
|
6490
|
-
return this.
|
6525
|
+
return this.header('Content-Type');
|
6491
6526
|
}
|
6492
6527
|
get cspNonces() {
|
6493
|
-
return up.protocol.cspNoncesFromHeader(this.
|
6528
|
+
return up.protocol.cspNoncesFromHeader(this.header('Content-Security-Policy'));
|
6494
6529
|
}
|
6495
6530
|
get lastModified() {
|
6496
|
-
let header = this.
|
6531
|
+
let header = this.header('Last-Modified');
|
6497
6532
|
if (header) {
|
6498
6533
|
return new Date(header);
|
6499
6534
|
}
|
6500
6535
|
}
|
6501
6536
|
get etag() {
|
6502
|
-
return this.
|
6537
|
+
return this.header('ETag');
|
6503
6538
|
}
|
6504
6539
|
get json() {
|
6505
6540
|
return this.parsedJSON || (this.parsedJSON = JSON.parse(this.text));
|
@@ -6509,7 +6544,8 @@ up.Response = class Response extends up.Record {
|
|
6509
6544
|
return now - this.loadedAt;
|
6510
6545
|
}
|
6511
6546
|
get expired() {
|
6512
|
-
return this.age > up.network.config.cacheExpireAge ||
|
6547
|
+
return this.age > up.network.config.cacheExpireAge ||
|
6548
|
+
this.request.expired;
|
6513
6549
|
}
|
6514
6550
|
get description() {
|
6515
6551
|
return `HTTP ${this.status} response to ${this.request.description}`;
|
@@ -6518,7 +6554,7 @@ up.Response = class Response extends up.Record {
|
|
6518
6554
|
|
6519
6555
|
|
6520
6556
|
/***/ }),
|
6521
|
-
/*
|
6557
|
+
/* 74 */
|
6522
6558
|
/***/ (() => {
|
6523
6559
|
|
6524
6560
|
var _a;
|
@@ -6526,12 +6562,13 @@ const u = up.util;
|
|
6526
6562
|
const e = up.element;
|
6527
6563
|
up.ResponseDoc = (_a = class ResponseDoc {
|
6528
6564
|
constructor(options) {
|
6529
|
-
this.noscriptWrapper = new up.HTMLWrapper('noscript');
|
6530
|
-
this.scriptWrapper = new up.HTMLWrapper('script');
|
6531
6565
|
this.root =
|
6532
6566
|
this.parseDocument(options) ||
|
6533
6567
|
this.parseFragment(options) ||
|
6534
6568
|
this.parseContent(options);
|
6569
|
+
if (!up.fragment.config.runScripts) {
|
6570
|
+
this.root.querySelectorAll('script').forEach((e) => e.remove());
|
6571
|
+
}
|
6535
6572
|
this.cspNonces = options.cspNonces;
|
6536
6573
|
if (options.origin) {
|
6537
6574
|
let originSelector = up.fragment.tryToTarget(options.origin);
|
@@ -6541,7 +6578,11 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6541
6578
|
}
|
6542
6579
|
}
|
6543
6580
|
parseDocument(options) {
|
6544
|
-
|
6581
|
+
let document = this.parse(options.document, e.createBrokenDocumentFromHTML);
|
6582
|
+
if (document) {
|
6583
|
+
this.scriptishNeedFix = true;
|
6584
|
+
return document;
|
6585
|
+
}
|
6545
6586
|
}
|
6546
6587
|
parseContent(options) {
|
6547
6588
|
let content = options.content || '';
|
@@ -6549,7 +6590,6 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6549
6590
|
target = u.map(up.fragment.parseTargetSteps(target), 'selector').join(',');
|
6550
6591
|
const matchingElement = e.createFromSelector(target);
|
6551
6592
|
if (u.isString(content)) {
|
6552
|
-
content = this.wrapHTML(content);
|
6553
6593
|
matchingElement.innerHTML = content;
|
6554
6594
|
}
|
6555
6595
|
else {
|
@@ -6562,7 +6602,6 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6562
6602
|
}
|
6563
6603
|
parse(value, parseFn = e.createFromHTML) {
|
6564
6604
|
if (u.isString(value)) {
|
6565
|
-
value = this.wrapHTML(value);
|
6566
6605
|
value = parseFn(value);
|
6567
6606
|
}
|
6568
6607
|
return value;
|
@@ -6570,18 +6609,8 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6570
6609
|
rootSelector() {
|
6571
6610
|
return up.fragment.toTarget(this.root);
|
6572
6611
|
}
|
6573
|
-
wrapHTML(html) {
|
6574
|
-
html = this.noscriptWrapper.wrap(html);
|
6575
|
-
if (up.fragment.config.runScripts) {
|
6576
|
-
html = this.scriptWrapper.wrap(html);
|
6577
|
-
}
|
6578
|
-
else {
|
6579
|
-
html = this.scriptWrapper.strip(html);
|
6580
|
-
}
|
6581
|
-
return html;
|
6582
|
-
}
|
6583
6612
|
getTitle() {
|
6584
|
-
return this.root.querySelector(
|
6613
|
+
return this.root.querySelector('head title')?.textContent;
|
6585
6614
|
}
|
6586
6615
|
select(selector) {
|
6587
6616
|
let finder = new up.FragmentFinder({
|
@@ -6592,9 +6621,10 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6592
6621
|
return finder.find();
|
6593
6622
|
}
|
6594
6623
|
finalizeElement(element) {
|
6595
|
-
this.noscriptWrapper.unwrap(element);
|
6596
6624
|
up.NonceableCallback.adoptNonces(element, this.cspNonces);
|
6597
|
-
this.
|
6625
|
+
if (this.scriptishNeedFix) {
|
6626
|
+
element.querySelectorAll('noscript, script').forEach(e.fixScriptish);
|
6627
|
+
}
|
6598
6628
|
}
|
6599
6629
|
},
|
6600
6630
|
(() => {
|
@@ -6604,7 +6634,7 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6604
6634
|
|
6605
6635
|
|
6606
6636
|
/***/ }),
|
6607
|
-
/*
|
6637
|
+
/* 75 */
|
6608
6638
|
/***/ (() => {
|
6609
6639
|
|
6610
6640
|
const e = up.element;
|
@@ -6698,7 +6728,7 @@ up.RevealMotion = class RevealMotion {
|
|
6698
6728
|
|
6699
6729
|
|
6700
6730
|
/***/ }),
|
6701
|
-
/*
|
6731
|
+
/* 76 */
|
6702
6732
|
/***/ (() => {
|
6703
6733
|
|
6704
6734
|
const u = up.util;
|
@@ -6739,7 +6769,7 @@ up.Selector = class Selector {
|
|
6739
6769
|
|
6740
6770
|
|
6741
6771
|
/***/ }),
|
6742
|
-
/*
|
6772
|
+
/* 77 */
|
6743
6773
|
/***/ (() => {
|
6744
6774
|
|
6745
6775
|
const u = up.util;
|
@@ -6859,7 +6889,7 @@ up.Tether = class Tether {
|
|
6859
6889
|
|
6860
6890
|
|
6861
6891
|
/***/ }),
|
6862
|
-
/*
|
6892
|
+
/* 78 */
|
6863
6893
|
/***/ (() => {
|
6864
6894
|
|
6865
6895
|
const u = up.util;
|
@@ -6939,7 +6969,7 @@ up.URLPattern = class URLPattern {
|
|
6939
6969
|
|
6940
6970
|
|
6941
6971
|
/***/ }),
|
6942
|
-
/*
|
6972
|
+
/* 79 */
|
6943
6973
|
/***/ (() => {
|
6944
6974
|
|
6945
6975
|
up.framework = (function () {
|
@@ -6957,6 +6987,7 @@ up.framework = (function () {
|
|
6957
6987
|
readyState = 'booting';
|
6958
6988
|
up.emit('up:framework:boot', { log: false });
|
6959
6989
|
readyState = 'booted';
|
6990
|
+
up.emit('up:framework:booted', { log: false });
|
6960
6991
|
}
|
6961
6992
|
else {
|
6962
6993
|
console.error("Unpoly cannot boot: %s", issue);
|
@@ -7022,7 +7053,7 @@ up.boot = up.framework.boot;
|
|
7022
7053
|
|
7023
7054
|
|
7024
7055
|
/***/ }),
|
7025
|
-
/*
|
7056
|
+
/* 80 */
|
7026
7057
|
/***/ (() => {
|
7027
7058
|
|
7028
7059
|
up.event = (function () {
|
@@ -7038,9 +7069,6 @@ up.event = (function () {
|
|
7038
7069
|
function on(...args) {
|
7039
7070
|
return buildListenerGroup(args).bind();
|
7040
7071
|
}
|
7041
|
-
function $on(...args) {
|
7042
|
-
return buildListenerGroup(args, { jQuery: true }).bind();
|
7043
|
-
}
|
7044
7072
|
function off(...args) {
|
7045
7073
|
return buildListenerGroup(args).unbind();
|
7046
7074
|
}
|
@@ -7111,7 +7139,6 @@ up.event = (function () {
|
|
7111
7139
|
on('up:framework:reset', reset);
|
7112
7140
|
return {
|
7113
7141
|
on,
|
7114
|
-
$on,
|
7115
7142
|
off,
|
7116
7143
|
build,
|
7117
7144
|
emit,
|
@@ -7124,14 +7151,12 @@ up.event = (function () {
|
|
7124
7151
|
};
|
7125
7152
|
})();
|
7126
7153
|
up.on = up.event.on;
|
7127
|
-
up.$on = up.event.$on;
|
7128
7154
|
up.off = up.event.off;
|
7129
|
-
up.$off = up.event.off;
|
7130
7155
|
up.emit = up.event.emit;
|
7131
7156
|
|
7132
7157
|
|
7133
7158
|
/***/ }),
|
7134
|
-
/*
|
7159
|
+
/* 81 */
|
7135
7160
|
/***/ (() => {
|
7136
7161
|
|
7137
7162
|
up.protocol = (function () {
|
@@ -7147,6 +7172,9 @@ up.protocol = (function () {
|
|
7147
7172
|
return parseFn(value);
|
7148
7173
|
}
|
7149
7174
|
};
|
7175
|
+
function targetFromXHR(xhr) {
|
7176
|
+
return extractHeader(xhr, 'target');
|
7177
|
+
}
|
7150
7178
|
function parseModifyCacheValue(value) {
|
7151
7179
|
if (value === 'false') {
|
7152
7180
|
return false;
|
@@ -7167,6 +7195,9 @@ up.protocol = (function () {
|
|
7167
7195
|
function methodFromXHR(xhr) {
|
7168
7196
|
return extractHeader(xhr, 'method', u.normalizeMethod);
|
7169
7197
|
}
|
7198
|
+
function titleFromXHR(xhr) {
|
7199
|
+
return up.migrate.titleFromXHR?.(xhr) ?? extractHeader(xhr, 'title', JSON.parse);
|
7200
|
+
}
|
7170
7201
|
function eventPlansFromXHR(xhr) {
|
7171
7202
|
return extractHeader(xhr, 'events', JSON.parse);
|
7172
7203
|
}
|
@@ -7182,11 +7213,9 @@ up.protocol = (function () {
|
|
7182
7213
|
function locationFromXHR(xhr) {
|
7183
7214
|
return extractHeader(xhr, 'location') || xhr.responseURL;
|
7184
7215
|
}
|
7185
|
-
function
|
7186
|
-
|
7187
|
-
|
7188
|
-
function targetFromXHR(xhr) {
|
7189
|
-
return extractHeader(xhr, 'target');
|
7216
|
+
function influencingHeadersFromResponse(response) {
|
7217
|
+
let varyHeaderValue = response.header('Vary');
|
7218
|
+
return u.parseTokens(varyHeaderValue, { separator: 'comma' });
|
7190
7219
|
}
|
7191
7220
|
const config = new up.Config(() => ({
|
7192
7221
|
methodParam: '_method',
|
@@ -7262,12 +7291,13 @@ up.protocol = (function () {
|
|
7262
7291
|
headerize,
|
7263
7292
|
wrapMethod,
|
7264
7293
|
cspNoncesFromHeader,
|
7294
|
+
influencingHeadersFromResponse,
|
7265
7295
|
};
|
7266
7296
|
})();
|
7267
7297
|
|
7268
7298
|
|
7269
7299
|
/***/ }),
|
7270
|
-
/*
|
7300
|
+
/* 82 */
|
7271
7301
|
/***/ (() => {
|
7272
7302
|
|
7273
7303
|
up.log = (function () {
|
@@ -7353,7 +7383,7 @@ up.warn = up.log.warn;
|
|
7353
7383
|
|
7354
7384
|
|
7355
7385
|
/***/ }),
|
7356
|
-
/*
|
7386
|
+
/* 83 */
|
7357
7387
|
/***/ (() => {
|
7358
7388
|
|
7359
7389
|
up.syntax = (function () {
|
@@ -7377,9 +7407,6 @@ up.syntax = (function () {
|
|
7377
7407
|
const compiler = buildCompiler(args);
|
7378
7408
|
return insertCompiler(registeredCompilers, compiler);
|
7379
7409
|
}
|
7380
|
-
function registerJQueryCompiler(...args) {
|
7381
|
-
registerCompiler(...args, { jQuery: true });
|
7382
|
-
}
|
7383
7410
|
function registerMacro(...args) {
|
7384
7411
|
const macro = buildCompiler(args);
|
7385
7412
|
if (up.framework.evaling) {
|
@@ -7388,9 +7415,6 @@ up.syntax = (function () {
|
|
7388
7415
|
}
|
7389
7416
|
return insertCompiler(registeredMacros, macro);
|
7390
7417
|
}
|
7391
|
-
function registerJQueryMacro(...args) {
|
7392
|
-
registerMacro(...args, { jQuery: true });
|
7393
|
-
}
|
7394
7418
|
function detectSystemMacroPriority(macroSelector) {
|
7395
7419
|
macroSelector = u.evalOption(macroSelector);
|
7396
7420
|
for (let substr in SYSTEM_MACRO_PRIORITIES) {
|
@@ -7414,7 +7438,6 @@ up.syntax = (function () {
|
|
7414
7438
|
isDefault: up.framework.evaling,
|
7415
7439
|
priority: 0,
|
7416
7440
|
batch: false,
|
7417
|
-
jQuery: false
|
7418
7441
|
});
|
7419
7442
|
return Object.assign(callback, options);
|
7420
7443
|
}
|
@@ -7456,10 +7479,10 @@ up.syntax = (function () {
|
|
7456
7479
|
destructors.push(destructor);
|
7457
7480
|
}
|
7458
7481
|
}
|
7459
|
-
function hello(element,
|
7460
|
-
element = up.fragment.get(element);
|
7482
|
+
function hello(element, options = {}) {
|
7483
|
+
element = up.fragment.get(element, options);
|
7461
7484
|
up.puts('up.hello()', "Compiling fragment %o", element);
|
7462
|
-
compile(element,
|
7485
|
+
compile(element, options);
|
7463
7486
|
up.fragment.emitInserted(element);
|
7464
7487
|
return element;
|
7465
7488
|
}
|
@@ -7496,8 +7519,6 @@ up.syntax = (function () {
|
|
7496
7519
|
return {
|
7497
7520
|
compiler: registerCompiler,
|
7498
7521
|
macro: registerMacro,
|
7499
|
-
$compiler: registerJQueryCompiler,
|
7500
|
-
$macro: registerJQueryMacro,
|
7501
7522
|
destructor: registerDestructor,
|
7502
7523
|
hello,
|
7503
7524
|
clean,
|
@@ -7505,16 +7526,14 @@ up.syntax = (function () {
|
|
7505
7526
|
};
|
7506
7527
|
})();
|
7507
7528
|
up.compiler = up.syntax.compiler;
|
7508
|
-
up.$compiler = up.syntax.$compiler;
|
7509
7529
|
up.destructor = up.syntax.destructor;
|
7510
7530
|
up.macro = up.syntax.macro;
|
7511
|
-
up.$macro = up.syntax.$macro;
|
7512
7531
|
up.data = up.syntax.data;
|
7513
7532
|
up.hello = up.syntax.hello;
|
7514
7533
|
|
7515
7534
|
|
7516
7535
|
/***/ }),
|
7517
|
-
/*
|
7536
|
+
/* 84 */
|
7518
7537
|
/***/ (() => {
|
7519
7538
|
|
7520
7539
|
up.history = (function () {
|
@@ -7583,7 +7602,7 @@ up.history = (function () {
|
|
7583
7602
|
}
|
7584
7603
|
function restoreStateOnPop(state) {
|
7585
7604
|
if (!state?.up) {
|
7586
|
-
up.puts('
|
7605
|
+
up.puts('popstate', 'Ignoring a history state not owned by Unpoly');
|
7587
7606
|
return;
|
7588
7607
|
}
|
7589
7608
|
let location = currentLocation();
|
@@ -7650,10 +7669,10 @@ up.history = (function () {
|
|
7650
7669
|
|
7651
7670
|
|
7652
7671
|
/***/ }),
|
7653
|
-
/*
|
7672
|
+
/* 85 */
|
7654
7673
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
7655
7674
|
|
7656
|
-
__webpack_require__(
|
7675
|
+
__webpack_require__(86);
|
7657
7676
|
const u = up.util;
|
7658
7677
|
const e = up.element;
|
7659
7678
|
up.fragment = (function () {
|
@@ -7704,7 +7723,7 @@ up.fragment = (function () {
|
|
7704
7723
|
autoRevalidate: (response) => response.expired,
|
7705
7724
|
skipResponse: defaultSkipResponse
|
7706
7725
|
}));
|
7707
|
-
u.delegate(config, 'mainTargets', () => up.layer.config.any);
|
7726
|
+
u.delegate(config, ['mainTargets'], () => up.layer.config.any);
|
7708
7727
|
function reset() {
|
7709
7728
|
config.reset();
|
7710
7729
|
}
|
@@ -8170,11 +8189,11 @@ up.destroy = up.fragment.destroy;
|
|
8170
8189
|
up.render = up.fragment.render;
|
8171
8190
|
up.navigate = up.fragment.navigate;
|
8172
8191
|
up.visit = up.fragment.visit;
|
8173
|
-
u.delegate(up, 'context', () => up.layer.current);
|
8192
|
+
u.delegate(up, ['context'], () => up.layer.current);
|
8174
8193
|
|
8175
8194
|
|
8176
8195
|
/***/ }),
|
8177
|
-
/*
|
8196
|
+
/* 86 */
|
8178
8197
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
8179
8198
|
|
8180
8199
|
"use strict";
|
@@ -8183,10 +8202,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
8183
8202
|
|
8184
8203
|
|
8185
8204
|
/***/ }),
|
8186
|
-
/*
|
8205
|
+
/* 87 */
|
8187
8206
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
8188
8207
|
|
8189
|
-
__webpack_require__(
|
8208
|
+
__webpack_require__(88);
|
8190
8209
|
up.viewport = (function () {
|
8191
8210
|
const u = up.util;
|
8192
8211
|
const e = up.element;
|
@@ -8368,7 +8387,7 @@ up.viewport = (function () {
|
|
8368
8387
|
}
|
8369
8388
|
}
|
8370
8389
|
function newStateCache() {
|
8371
|
-
return new up.
|
8390
|
+
return new up.FIFOCache({ capacity: 30, normalizeKey: up.history.normalizeURL });
|
8372
8391
|
}
|
8373
8392
|
function parseOptions(args) {
|
8374
8393
|
const options = u.copy(u.extractOptions(args));
|
@@ -8506,7 +8525,7 @@ up.reveal = up.viewport.reveal;
|
|
8506
8525
|
|
8507
8526
|
|
8508
8527
|
/***/ }),
|
8509
|
-
/*
|
8528
|
+
/* 88 */
|
8510
8529
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
8511
8530
|
|
8512
8531
|
"use strict";
|
@@ -8515,7 +8534,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
8515
8534
|
|
8516
8535
|
|
8517
8536
|
/***/ }),
|
8518
|
-
/*
|
8537
|
+
/* 89 */
|
8519
8538
|
/***/ (() => {
|
8520
8539
|
|
8521
8540
|
up.motion = (function () {
|
@@ -8770,10 +8789,10 @@ up.animate = up.motion.animate;
|
|
8770
8789
|
|
8771
8790
|
|
8772
8791
|
/***/ }),
|
8773
|
-
/*
|
8792
|
+
/* 90 */
|
8774
8793
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
8775
8794
|
|
8776
|
-
__webpack_require__(
|
8795
|
+
__webpack_require__(91);
|
8777
8796
|
const u = up.util;
|
8778
8797
|
up.network = (function () {
|
8779
8798
|
const config = new up.Config(() => ({
|
@@ -8789,7 +8808,6 @@ up.network = (function () {
|
|
8789
8808
|
autoCache(request) { return request.isSafe(); },
|
8790
8809
|
expireCache(request, _response) { return !request.isSafe(); },
|
8791
8810
|
evictCache: false,
|
8792
|
-
requestMetaKeys: ['target', 'failTarget', 'mode', 'failMode', 'context', 'failContext'],
|
8793
8811
|
progressBar: true,
|
8794
8812
|
timeout: 90000,
|
8795
8813
|
}));
|
@@ -8800,14 +8818,14 @@ up.network = (function () {
|
|
8800
8818
|
abortRequests();
|
8801
8819
|
queue.reset();
|
8802
8820
|
config.reset();
|
8803
|
-
cache.
|
8821
|
+
cache.reset();
|
8804
8822
|
progressBar?.destroy();
|
8805
8823
|
progressBar = null;
|
8806
8824
|
}
|
8807
8825
|
function makeRequest(...args) {
|
8808
8826
|
const options = parseRequestOptions(args);
|
8809
8827
|
const request = new up.Request(options);
|
8810
|
-
|
8828
|
+
processRequest(request);
|
8811
8829
|
return request;
|
8812
8830
|
}
|
8813
8831
|
function parseRequestOptions(args) {
|
@@ -8818,31 +8836,31 @@ up.network = (function () {
|
|
8818
8836
|
up.migrate.handleRequestOptions?.(options);
|
8819
8837
|
return options;
|
8820
8838
|
}
|
8821
|
-
function
|
8839
|
+
function processRequest(request) {
|
8840
|
+
useCachedRequest(request) || queueRequest(request);
|
8841
|
+
}
|
8842
|
+
function useCachedRequest(newRequest) {
|
8822
8843
|
let cachedRequest;
|
8823
|
-
if (
|
8824
|
-
up.puts('up.request()', 'Re-using previous request to %s
|
8825
|
-
if (!
|
8844
|
+
if (newRequest.willCache() && (cachedRequest = cache.get(newRequest))) {
|
8845
|
+
up.puts('up.request()', 'Re-using previous request to %s', newRequest.description);
|
8846
|
+
if (!newRequest.background) {
|
8826
8847
|
queue.promoteToForeground(cachedRequest);
|
8827
8848
|
}
|
8828
|
-
|
8829
|
-
request.fromCache = true;
|
8849
|
+
cache.track(cachedRequest, newRequest, { onIncompatible: processRequest });
|
8830
8850
|
return true;
|
8831
8851
|
}
|
8832
8852
|
}
|
8833
8853
|
function queueRequest(request) {
|
8834
|
-
if (request.preload && !request.isSafe()) {
|
8835
|
-
up.fail('Will not preload request to %s', request.description);
|
8836
|
-
}
|
8837
8854
|
handleCaching(request);
|
8838
8855
|
queue.asap(request);
|
8839
8856
|
return true;
|
8840
8857
|
}
|
8841
8858
|
function handleCaching(request) {
|
8842
8859
|
if (request.willCache()) {
|
8843
|
-
cache.
|
8860
|
+
cache.put(request);
|
8861
|
+
request.onLoading = () => cache.put(request);
|
8844
8862
|
}
|
8845
|
-
|
8863
|
+
u.always(request, function (response) {
|
8846
8864
|
let expireCache = response.expireCache ?? request.expireCache ?? u.evalOption(config.expireCache, request, response);
|
8847
8865
|
if (expireCache) {
|
8848
8866
|
cache.expire(expireCache, { except: request });
|
@@ -8852,7 +8870,7 @@ up.network = (function () {
|
|
8852
8870
|
cache.evict(evictCache, { except: request });
|
8853
8871
|
}
|
8854
8872
|
if (cache.get(request)) {
|
8855
|
-
cache.
|
8873
|
+
cache.put(request);
|
8856
8874
|
}
|
8857
8875
|
if (!response.ok) {
|
8858
8876
|
cache.evict(request);
|
@@ -8917,7 +8935,7 @@ up.cache = up.network.cache;
|
|
8917
8935
|
|
8918
8936
|
|
8919
8937
|
/***/ }),
|
8920
|
-
/*
|
8938
|
+
/* 91 */
|
8921
8939
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
8922
8940
|
|
8923
8941
|
"use strict";
|
@@ -8926,10 +8944,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
8926
8944
|
|
8927
8945
|
|
8928
8946
|
/***/ }),
|
8929
|
-
/*
|
8947
|
+
/* 92 */
|
8930
8948
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
8931
8949
|
|
8932
|
-
__webpack_require__(
|
8950
|
+
__webpack_require__(93);
|
8933
8951
|
const u = up.util;
|
8934
8952
|
const e = up.element;
|
8935
8953
|
up.layer = (function () {
|
@@ -9062,6 +9080,7 @@ up.layer = (function () {
|
|
9062
9080
|
if (handleDeprecatedConfig) {
|
9063
9081
|
configs.forEach(handleDeprecatedConfig);
|
9064
9082
|
}
|
9083
|
+
options.openAnimation ?? (options.openAnimation = u.pluckKey(options, 'animation'));
|
9065
9084
|
options = u.mergeDefined(...configs, { mode, stack }, options);
|
9066
9085
|
if (beforeNew) {
|
9067
9086
|
options = beforeNew(options);
|
@@ -9169,7 +9188,7 @@ up.layer = (function () {
|
|
9169
9188
|
|
9170
9189
|
|
9171
9190
|
/***/ }),
|
9172
|
-
/*
|
9191
|
+
/* 93 */
|
9173
9192
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
9174
9193
|
|
9175
9194
|
"use strict";
|
@@ -9178,10 +9197,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
9178
9197
|
|
9179
9198
|
|
9180
9199
|
/***/ }),
|
9181
|
-
/*
|
9200
|
+
/* 94 */
|
9182
9201
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
9183
9202
|
|
9184
|
-
__webpack_require__(
|
9203
|
+
__webpack_require__(95);
|
9185
9204
|
up.link = (function () {
|
9186
9205
|
const u = up.util;
|
9187
9206
|
const e = up.element;
|
@@ -9329,8 +9348,9 @@ up.link = (function () {
|
|
9329
9348
|
}
|
9330
9349
|
function preload(link, options) {
|
9331
9350
|
link = up.fragment.get(link);
|
9332
|
-
|
9333
|
-
|
9351
|
+
let issue = preloadIssue(link);
|
9352
|
+
if (issue) {
|
9353
|
+
return Promise.reject(new up.Error(issue));
|
9334
9354
|
}
|
9335
9355
|
const guardEvent = up.event.build('up:link:preload', { log: ['Preloading link %o', link] });
|
9336
9356
|
return follow(link, {
|
@@ -9340,10 +9360,15 @@ up.link = (function () {
|
|
9340
9360
|
preload: true
|
9341
9361
|
});
|
9342
9362
|
}
|
9343
|
-
function
|
9344
|
-
|
9345
|
-
|
9363
|
+
function preloadIssue(link) {
|
9364
|
+
if (!u.evalAutoOption(config.preloadEnabled, autoPreloadEnabled, link)) {
|
9365
|
+
return 'Preloading is disabled';
|
9366
|
+
}
|
9367
|
+
else if (!isSafe(link)) {
|
9368
|
+
return 'Will not preload an unsafe link';
|
9369
|
+
}
|
9346
9370
|
}
|
9371
|
+
const autoPreloadEnabled = u.negate(up.network.shouldReduceRequests);
|
9347
9372
|
function followMethod(link, options = {}) {
|
9348
9373
|
return u.normalizeMethod(options.method || link.getAttribute('up-method') || link.getAttribute('data-method'));
|
9349
9374
|
}
|
@@ -9470,7 +9495,7 @@ up.follow = up.link.follow;
|
|
9470
9495
|
|
9471
9496
|
|
9472
9497
|
/***/ }),
|
9473
|
-
/*
|
9498
|
+
/* 95 */
|
9474
9499
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
9475
9500
|
|
9476
9501
|
"use strict";
|
@@ -9479,7 +9504,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
9479
9504
|
|
9480
9505
|
|
9481
9506
|
/***/ }),
|
9482
|
-
/*
|
9507
|
+
/* 96 */
|
9483
9508
|
/***/ (() => {
|
9484
9509
|
|
9485
9510
|
up.form = (function () {
|
@@ -9877,7 +9902,7 @@ up.validate = up.form.validate;
|
|
9877
9902
|
|
9878
9903
|
|
9879
9904
|
/***/ }),
|
9880
|
-
/*
|
9905
|
+
/* 97 */
|
9881
9906
|
/***/ (() => {
|
9882
9907
|
|
9883
9908
|
up.feedback = (function () {
|
@@ -9994,7 +10019,7 @@ up.feedback = (function () {
|
|
9994
10019
|
|
9995
10020
|
|
9996
10021
|
/***/ }),
|
9997
|
-
/*
|
10022
|
+
/* 98 */
|
9998
10023
|
/***/ (() => {
|
9999
10024
|
|
10000
10025
|
up.radio = (function () {
|
@@ -10071,7 +10096,7 @@ up.radio = (function () {
|
|
10071
10096
|
|
10072
10097
|
|
10073
10098
|
/***/ }),
|
10074
|
-
/*
|
10099
|
+
/* 99 */
|
10075
10100
|
/***/ (() => {
|
10076
10101
|
|
10077
10102
|
(function () {
|
@@ -10220,16 +10245,15 @@ __webpack_require__(82);
|
|
10220
10245
|
__webpack_require__(83);
|
10221
10246
|
__webpack_require__(84);
|
10222
10247
|
__webpack_require__(85);
|
10223
|
-
__webpack_require__(
|
10224
|
-
__webpack_require__(
|
10248
|
+
__webpack_require__(87);
|
10249
|
+
__webpack_require__(89);
|
10225
10250
|
__webpack_require__(90);
|
10226
|
-
__webpack_require__(
|
10227
|
-
__webpack_require__(
|
10228
|
-
__webpack_require__(
|
10251
|
+
__webpack_require__(92);
|
10252
|
+
__webpack_require__(94);
|
10253
|
+
__webpack_require__(96);
|
10229
10254
|
__webpack_require__(97);
|
10230
10255
|
__webpack_require__(98);
|
10231
10256
|
__webpack_require__(99);
|
10232
|
-
__webpack_require__(100);
|
10233
10257
|
up.framework.onEvaled();
|
10234
10258
|
|
10235
10259
|
})();
|