@trullock/page-manager 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1661 @@
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ var __webpack_modules__ = ({
4
+
5
+ /***/ "./tests/loading.htm":
6
+ /*!***************************!*\
7
+ !*** ./tests/loading.htm ***!
8
+ \***************************/
9
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10
+
11
+ __webpack_require__.r(__webpack_exports__);
12
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
14
+ /* harmony export */ });
15
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "loading.htm");
16
+
17
+ /***/ }),
18
+
19
+ /***/ "./tests/page1.htm":
20
+ /*!*************************!*\
21
+ !*** ./tests/page1.htm ***!
22
+ \*************************/
23
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
24
+
25
+ __webpack_require__.r(__webpack_exports__);
26
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
27
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
28
+ /* harmony export */ });
29
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "page1.htm");
30
+
31
+ /***/ }),
32
+
33
+ /***/ "./tests/page2.htm":
34
+ /*!*************************!*\
35
+ !*** ./tests/page2.htm ***!
36
+ \*************************/
37
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38
+
39
+ __webpack_require__.r(__webpack_exports__);
40
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
41
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
42
+ /* harmony export */ });
43
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "page2.htm");
44
+
45
+ /***/ }),
46
+
47
+ /***/ "./tests/page3.htm":
48
+ /*!*************************!*\
49
+ !*** ./tests/page3.htm ***!
50
+ \*************************/
51
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
52
+
53
+ __webpack_require__.r(__webpack_exports__);
54
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
55
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56
+ /* harmony export */ });
57
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "page3.htm");
58
+
59
+ /***/ }),
60
+
61
+ /***/ "./tests/page4.htm":
62
+ /*!*************************!*\
63
+ !*** ./tests/page4.htm ***!
64
+ \*************************/
65
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
66
+
67
+ __webpack_require__.r(__webpack_exports__);
68
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
69
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
70
+ /* harmony export */ });
71
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "page4.htm");
72
+
73
+ /***/ }),
74
+
75
+ /***/ "./tests/page404.htm":
76
+ /*!***************************!*\
77
+ !*** ./tests/page404.htm ***!
78
+ \***************************/
79
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
80
+
81
+ __webpack_require__.r(__webpack_exports__);
82
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
83
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
84
+ /* harmony export */ });
85
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "page404.htm");
86
+
87
+ /***/ }),
88
+
89
+ /***/ "./tests/pageX.htm":
90
+ /*!*************************!*\
91
+ !*** ./tests/pageX.htm ***!
92
+ \*************************/
93
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
94
+
95
+ __webpack_require__.r(__webpack_exports__);
96
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
97
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
98
+ /* harmony export */ });
99
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "pageX.htm");
100
+
101
+ /***/ }),
102
+
103
+ /***/ "./node_modules/@trullock/router/src/index.js":
104
+ /*!****************************************************!*\
105
+ !*** ./node_modules/@trullock/router/src/index.js ***!
106
+ \****************************************************/
107
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
108
+
109
+ __webpack_require__.r(__webpack_exports__);
110
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
111
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
112
+ /* harmony export */ });
113
+ /* harmony import */ var _pattern_lexer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pattern-lexer.js */ "./node_modules/@trullock/router/src/pattern-lexer.js");
114
+
115
+
116
+ function isKind(val, kind)
117
+ {
118
+ return '[object ' + kind + ']' === Object.prototype.toString.call(val);
119
+ }
120
+
121
+ function isRegExp(val)
122
+ {
123
+ return isKind(val, 'RegExp');
124
+ }
125
+
126
+ function decodeQueryString(queryStr)
127
+ {
128
+ let queryArr = (queryStr || '').replace('?', '').split('&'),
129
+ i = -1,
130
+ obj = {},
131
+ equalIndex, cur, pValue, pName;
132
+
133
+ while ((cur = queryArr[++i]))
134
+ {
135
+ equalIndex = cur.indexOf('=');
136
+ pName = cur.substring(0, equalIndex);
137
+ pValue = decodeURIComponent(cur.substring(equalIndex + 1));
138
+
139
+ if (pName in obj)
140
+ {
141
+ if(isArray(obj[pName]))
142
+ obj[pName].push(pValue);
143
+ else
144
+ obj[pName] = [obj[pName], pValue];
145
+
146
+ }
147
+ else
148
+ {
149
+ obj[pName] = pValue;
150
+ }
151
+ }
152
+ return obj;
153
+ }
154
+
155
+ function Route(name, pattern, data, priority, router) {
156
+ var isRegexPattern = isRegExp(pattern);
157
+ this._name = name;
158
+ this._router = router;
159
+ this._pattern = pattern;
160
+ this._paramsIds = isRegexPattern ? null : router.patternLexer.getParamIds(pattern);
161
+ this._optionalParamsIds = isRegexPattern ? null : router.patternLexer.getOptionalParamsIds(pattern);
162
+ this._matchRegexp = isRegexPattern ? pattern : router.patternLexer.compilePattern(pattern, router.ignoreCase);
163
+ this._data = data;
164
+ this._priority = priority || 0;
165
+ }
166
+
167
+ Route.prototype = {
168
+
169
+ match: function (request) {
170
+ return this._matchRegexp.test(request);
171
+ },
172
+
173
+ _isValidParam: function (request, prop, values) {
174
+ var validationRule = this.rules[prop],
175
+ val = values[prop],
176
+ isValid = false,
177
+ isQuery = (prop.indexOf('?') === 0);
178
+
179
+ if (val == null && this._optionalParamsIds && arrayIndexOf(this._optionalParamsIds, prop) !== -1) {
180
+ isValid = true;
181
+ }
182
+ else if (isRegExp(validationRule)) {
183
+ if (isQuery)
184
+ val = values[prop + '_']; //use raw string
185
+
186
+ isValid = validationRule.test(val);
187
+ }
188
+ else if (isArray(validationRule)) {
189
+ if (isQuery)
190
+ val = values[prop + '_']; //use raw string
191
+
192
+ isValid = this._isValidArrayRule(validationRule, val);
193
+ }
194
+ else if (isFunction(validationRule)) {
195
+ isValid = validationRule(val, request, values);
196
+ }
197
+
198
+ return isValid; //fail silently if validationRule is from an unsupported type
199
+ },
200
+
201
+ _isValidArrayRule: function (arr, val) {
202
+ if (!this._router.ignoreCase) {
203
+ return arrayIndexOf(arr, val) !== -1;
204
+ }
205
+
206
+ if (typeof val === 'string') {
207
+ val = val.toLowerCase();
208
+ }
209
+
210
+ var n = arr.length,
211
+ item,
212
+ compareVal;
213
+
214
+ while (n--) {
215
+ item = arr[n];
216
+ compareVal = (typeof item === 'string') ? item.toLowerCase() : item;
217
+ if (compareVal === val) {
218
+ return true;
219
+ }
220
+ }
221
+ return false;
222
+ },
223
+
224
+ _getParamsObject: function (request) {
225
+ var shouldTypecast = this._router.shouldTypecast,
226
+ values = this._router.patternLexer.getParamValues(request, this._matchRegexp, shouldTypecast),
227
+ o = {},
228
+ n = values.length,
229
+ param, val;
230
+ while (n--) {
231
+ val = values[n];
232
+ if (this._paramsIds) {
233
+ param = this._paramsIds[n];
234
+ if (param.indexOf('?') === 0 && val) {
235
+ val = decodeQueryString(val, shouldTypecast);
236
+
237
+ for(var key in val){
238
+ if(!o[key])
239
+ o[key] = val[key];
240
+ else
241
+ o['?' + key] = val[key];
242
+ }
243
+ o[n] = val;
244
+ }
245
+ else
246
+ o[param] = val;
247
+ }
248
+ }
249
+
250
+ return o;
251
+ },
252
+
253
+ interpolate: function (replacements) {
254
+ try {
255
+ var str = this._router.patternLexer.interpolate(this._pattern, replacements);
256
+ return str;
257
+ }
258
+ catch(e) {
259
+ throw new Error(`Error interpolating route ${this._pattern} with values ${JSON.stringify(replacements)}\n` + e);
260
+ }
261
+ },
262
+
263
+ toString: function () {
264
+ return '[Route pattern:"' + this._pattern + '", numListeners:' + this.matched.getNumListeners() + ']';
265
+ }
266
+
267
+ };
268
+
269
+
270
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new class
271
+ {
272
+ constructor()
273
+ {
274
+ this.routes = [];
275
+ this.routesByName = {};
276
+ this.patternLexer = (0,_pattern_lexer_js__WEBPACK_IMPORTED_MODULE_0__["default"])();
277
+ }
278
+
279
+ addRoute (name, pattern, data, priority)
280
+ {
281
+ pattern += pattern.endsWith('/') ? ':?query:' : '/:?query:';
282
+ var route = new Route(name, pattern, data, priority, this);
283
+
284
+ var n = this.routes.length;
285
+ do
286
+ {
287
+ --n;
288
+ } while (this.routes[n] && route._priority <= this.routes[n]._priority);
289
+
290
+ this.routes.splice(n + 1, 0, route);
291
+
292
+ this.routesByName[name] = route;
293
+ Object.defineProperty(this, name, { get: () => pattern });
294
+
295
+ return route;
296
+ }
297
+
298
+ interpolate(name, data)
299
+ {
300
+ if(!this.routesByName[name])
301
+ throw new Error(`Cannot find route by name ${name}`);
302
+
303
+ return this.routesByName[name].interpolate(data);
304
+ }
305
+
306
+ parse (request)
307
+ {
308
+ var n = this.routes.length;
309
+ var route, hash, path;
310
+
311
+ var index = request.indexOf('#');
312
+ if(index > -1)
313
+ {
314
+ hash = request.substr(index + 1);
315
+ request = request.substr(0, index);
316
+ }
317
+
318
+ index = request.indexOf('?');
319
+ if(index > -1)
320
+ path = request.substr(0, index)
321
+ else
322
+ path = request;
323
+
324
+ while (route = this.routes[--n])
325
+ {
326
+ if (route.match(request))
327
+ {
328
+ var params = route._getParamsObject(request);
329
+ params.hash = hash;
330
+
331
+ return {
332
+ path: path.toLowerCase(),
333
+ name: route._name,
334
+ pattern: route._pattern,
335
+ data: route._data,
336
+ params: params
337
+ };
338
+ }
339
+ }
340
+
341
+ return null;
342
+ }
343
+
344
+ toString ()
345
+ {
346
+ return '[Router numRoutes:' + this.getNumRoutes() + ']';
347
+ }
348
+ }());
349
+
350
+ /***/ }),
351
+
352
+ /***/ "./node_modules/@trullock/router/src/pattern-lexer.js":
353
+ /*!************************************************************!*\
354
+ !*** ./node_modules/@trullock/router/src/pattern-lexer.js ***!
355
+ \************************************************************/
356
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
357
+
358
+ __webpack_require__.r(__webpack_exports__);
359
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
360
+ /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
361
+ /* harmony export */ });
362
+ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {
363
+
364
+ var
365
+ //match chars that should be escaped on string regexp
366
+ ESCAPE_CHARS_REGEXP = /[\\.+*?\^$\[\](){}\/'#]/g,
367
+
368
+ //trailing slashes (begin/end of string)
369
+ LOOSE_SLASHES_REGEXP = /^\/|\/$/g,
370
+ LEGACY_SLASHES_REGEXP = /\/$/g,
371
+
372
+ //params - everything between `{ }` or `: :`
373
+ PARAMS_REGEXP = /(?:\{|:)([^}:]+)(?:\}|:)/g,
374
+
375
+ //used to save params during compile (avoid escaping things that
376
+ //shouldn't be escaped).
377
+ TOKENS = {
378
+ 'OS': {
379
+ //optional slashes
380
+ //slash between `::` or `}:` or `\w:` or `:{?` or `}{?` or `\w{?`
381
+ rgx: /([:}]|\w(?=\/))\/?(:|(?:\{\?))/g,
382
+ save: '$1{{id}}$2',
383
+ res: '\\/?'
384
+ },
385
+ 'RS': {
386
+ //required slashes
387
+ //used to insert slash between `:{` and `}{`
388
+ rgx: /([:}])\/?(\{)/g,
389
+ save: '$1{{id}}$2',
390
+ res: '\\/'
391
+ },
392
+ 'RQ': {
393
+ //required query string - everything in between `{? }`
394
+ rgx: /\{\?([^}]+)\}/g,
395
+ //everything from `?` till `#` or end of string
396
+ res: '\\?([^#]+)'
397
+ },
398
+ 'OQ': {
399
+ //optional query string - everything in between `:? :`
400
+ rgx: /:\?([^:]+):/g,
401
+ //everything from `?` till `#` or end of string
402
+ res: '(?:\\?([^#]*))?'
403
+ },
404
+ 'OR': {
405
+ //optional rest - everything in between `: *:`
406
+ rgx: /:([^:]+)\*:/g,
407
+ res: '(.*)?' // optional group to avoid passing empty string as captured
408
+ },
409
+ 'RR': {
410
+ //rest param - everything in between `{ *}`
411
+ rgx: /\{([^}]+)\*\}/g,
412
+ res: '(.+)'
413
+ },
414
+ // required/optional params should come after rest segments
415
+ 'RP': {
416
+ //required params - everything between `{ }`
417
+ rgx: /\{([^}]+)\}/g,
418
+ res: '([^\\/?]+)'
419
+ },
420
+ 'OP': {
421
+ //optional params - everything between `: :`
422
+ rgx: /:([^:]+):/g,
423
+ res: '([^\\/?]+)?\/?'
424
+ }
425
+ },
426
+
427
+ LOOSE_SLASH = 1,
428
+ STRICT_SLASH = 2,
429
+ LEGACY_SLASH = 3,
430
+
431
+ _slashMode = LOOSE_SLASH;
432
+
433
+
434
+ function precompileTokens() {
435
+ var key, cur;
436
+ for (key in TOKENS) {
437
+ if (TOKENS.hasOwnProperty(key)) {
438
+ cur = TOKENS[key];
439
+ cur.id = '__CR_' + key + '__';
440
+ cur.save = ('save' in cur) ? cur.save.replace('{{id}}', cur.id) : cur.id;
441
+ cur.rRestore = new RegExp(cur.id, 'g');
442
+ }
443
+ }
444
+ }
445
+ precompileTokens();
446
+
447
+
448
+ function captureVals(regex, pattern) {
449
+ var vals = [], match;
450
+ // very important to reset lastIndex since RegExp can have "g" flag
451
+ // and multiple runs might affect the result, specially if matching
452
+ // same string multiple times on IE 7-8
453
+ regex.lastIndex = 0;
454
+ while (match = regex.exec(pattern)) {
455
+ vals.push(match[1]);
456
+ }
457
+ return vals;
458
+ }
459
+
460
+ function getParamIds(pattern) {
461
+ return captureVals(PARAMS_REGEXP, pattern);
462
+ }
463
+
464
+ function getOptionalParamsIds(pattern) {
465
+ return captureVals(TOKENS.OP.rgx, pattern);
466
+ }
467
+
468
+ function compilePattern(pattern, ignoreCase) {
469
+ pattern = pattern || '';
470
+
471
+ if (pattern) {
472
+ if (_slashMode === LOOSE_SLASH) {
473
+ pattern = pattern.replace(LOOSE_SLASHES_REGEXP, '');
474
+ }
475
+ else if (_slashMode === LEGACY_SLASH) {
476
+ pattern = pattern.replace(LEGACY_SLASHES_REGEXP, '');
477
+ }
478
+
479
+ //save tokens
480
+ pattern = replaceTokens(pattern, 'rgx', 'save');
481
+ //regexp escape
482
+ pattern = pattern.replace(ESCAPE_CHARS_REGEXP, '\\$&');
483
+ //restore tokens
484
+ pattern = replaceTokens(pattern, 'rRestore', 'res');
485
+
486
+ if (_slashMode === LOOSE_SLASH) {
487
+ pattern = '\\/?' + pattern;
488
+ }
489
+ }
490
+
491
+ if (_slashMode !== STRICT_SLASH) {
492
+ //single slash is treated as empty and end slash is optional
493
+ pattern += '\\/?';
494
+ }
495
+ return new RegExp('^' + pattern + '$', ignoreCase ? 'i' : '');
496
+ }
497
+
498
+ function replaceTokens(pattern, regexpName, replaceName) {
499
+ var cur, key;
500
+ for (key in TOKENS) {
501
+ if (TOKENS.hasOwnProperty(key)) {
502
+ cur = TOKENS[key];
503
+ pattern = pattern.replace(cur[regexpName], cur[replaceName]);
504
+ }
505
+ }
506
+ return pattern;
507
+ }
508
+
509
+ function getParamValues(request, regexp, shouldTypecast) {
510
+ var vals = regexp.exec(request);
511
+ if (vals) {
512
+ vals.shift();
513
+ if (shouldTypecast) {
514
+ vals = typecastArrayValues(vals);
515
+ }
516
+ }
517
+ return vals;
518
+ }
519
+
520
+ function interpolate(pattern, replacements) {
521
+ // default to an empty object because pattern might have just
522
+ // optional arguments
523
+ replacements = replacements || {};
524
+ if (typeof pattern !== 'string') {
525
+ throw new Error('Route pattern should be a string.');
526
+ }
527
+
528
+ var replaceFn = function (match, prop) {
529
+ var val;
530
+ prop = (prop.substr(0, 1) === '?') ? prop.substr(1) : prop;
531
+ if (replacements[prop] != null) {
532
+ if (typeof replacements[prop] === 'object') {
533
+ var queryParts = [], rep;
534
+ for (var key in replacements[prop]) {
535
+ rep = replacements[prop][key];
536
+ if (isArray(rep)) {
537
+ for (var k in rep) {
538
+ if (key.slice(-2) == '[]') {
539
+ queryParts.push(encodeURIComponent(key.slice(0, -2)) + '[]=' + encodeURIComponent(rep[k]));
540
+ } else {
541
+ queryParts.push(encodeURIComponent(key + '=' + rep[k]));
542
+ }
543
+ }
544
+ }
545
+ else {
546
+ queryParts.push(encodeURIComponent(key + '=' + rep));
547
+ }
548
+ }
549
+ val = '?' + queryParts.join('&');
550
+ } else {
551
+ // make sure value is a string see #gh-54
552
+ val = String(replacements[prop]);
553
+ }
554
+
555
+ if (match.indexOf('*') === -1 && val.indexOf('/') !== -1) {
556
+ throw new Error('Invalid value "' + val + '" for segment "' + match + '".');
557
+ }
558
+ }
559
+ else if (match.indexOf('{') !== -1) {
560
+ throw new Error('The segment ' + match + ' is required.');
561
+ }
562
+ else {
563
+ val = '';
564
+ }
565
+ return val;
566
+ };
567
+
568
+ if (!TOKENS.OS.trail) {
569
+ TOKENS.OS.trail = new RegExp('(?:' + TOKENS.OS.id + ')+$');
570
+ }
571
+
572
+ return pattern
573
+ .replace(TOKENS.OS.rgx, TOKENS.OS.save)
574
+ .replace(PARAMS_REGEXP, replaceFn)
575
+ .replace(TOKENS.OS.trail, '') // remove trailing
576
+ .replace(TOKENS.OS.rRestore, '/'); // add slash between segments
577
+ }
578
+
579
+ //API
580
+ return {
581
+ strict: function () {
582
+ _slashMode = STRICT_SLASH;
583
+ },
584
+ loose: function () {
585
+ _slashMode = LOOSE_SLASH;
586
+ },
587
+ legacy: function () {
588
+ _slashMode = LEGACY_SLASH;
589
+ },
590
+ getParamIds: getParamIds,
591
+ getOptionalParamsIds: getOptionalParamsIds,
592
+ getParamValues: getParamValues,
593
+ compilePattern: compilePattern,
594
+ interpolate: interpolate
595
+ };
596
+
597
+ }
598
+
599
+ /***/ }),
600
+
601
+ /***/ "./src/index.js":
602
+ /*!**********************!*\
603
+ !*** ./src/index.js ***!
604
+ \**********************/
605
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
606
+
607
+ __webpack_require__.r(__webpack_exports__);
608
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
609
+ /* harmony export */ "PageShowError": () => (/* binding */ PageShowError),
610
+ /* harmony export */ "back": () => (/* binding */ back),
611
+ /* harmony export */ "getPath": () => (/* binding */ getPath),
612
+ /* harmony export */ "init": () => (/* binding */ init),
613
+ /* harmony export */ "navigate": () => (/* binding */ navigate),
614
+ /* harmony export */ "printStack": () => (/* binding */ printStack),
615
+ /* harmony export */ "purgeCache": () => (/* binding */ purgeCache),
616
+ /* harmony export */ "ready": () => (/* binding */ ready),
617
+ /* harmony export */ "refresh": () => (/* binding */ refresh),
618
+ /* harmony export */ "registerPage": () => (/* binding */ registerPage),
619
+ /* harmony export */ "removeHistory": () => (/* binding */ removeHistory),
620
+ /* harmony export */ "replace": () => (/* binding */ replace),
621
+ /* harmony export */ "show": () => (/* binding */ show)
622
+ /* harmony export */ });
623
+ /* harmony import */ var _trullock_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @trullock/router */ "./node_modules/@trullock/router/src/index.js");
624
+
625
+ var pageCache = {},
626
+ pageTemplateCache = {},
627
+ stack = [],
628
+ stackPointer = -1;
629
+ var manuallyAdjustingHistory = false;
630
+ var handlingBeforeHide = false;
631
+ var beforeHideNavDirection = null;
632
+ var goal = null;
633
+ var backData = {};
634
+ var options = {
635
+ pageInterrupt: routeResult => null,
636
+ attachMarkup: $html => document.body.appendChild($html),
637
+ prepareMarkup: $html => {},
638
+ loadingPageName: 'loading',
639
+ error404PageName: 'error-404',
640
+ defaultPageName: 'root',
641
+ beforeHide: null
642
+ };
643
+ function registerPage(opts) {
644
+ let loadPageClass = opts.pageClass ? () => opts.pageClass : opts.loadPageClass;
645
+ let namedRoutes = opts.namedRoutes || {
646
+ [opts.name]: opts.route
647
+ };
648
+ let cacheMarkupBy = opts.cacheMarkupBy || 'path';
649
+ let extra = opts.extra || {};
650
+ for (const [name, route] of Object.entries(namedRoutes)) {
651
+ _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].addRoute(name, route, {
652
+ route,
653
+ loadPageClass,
654
+ loadMarkup: opts.loadMarkup,
655
+ cacheMarkupBy,
656
+ extra
657
+ });
658
+ }
659
+ }
660
+ function getPath(name, values) {
661
+ let url = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].interpolate(name, values);
662
+ if (values?.hash) url += '#' + values.hash;
663
+ return url;
664
+ }
665
+ function refresh() {
666
+ let frame = stack[stackPointer];
667
+ showPage(frame.data.route.url, frame.data, 'replace');
668
+ }
669
+ function emitUrlChanged(url) {
670
+ window.dispatchEvent(new CustomEvent('page-manager.url-changed', {
671
+ detail: {
672
+ url: url
673
+ },
674
+ bubbles: true
675
+ }));
676
+ }
677
+
678
+ // TODO: 404 and error too?
679
+ function initLoading() {
680
+ var url = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].interpolate(options.loadingPageName, {});
681
+ var routeResult = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].parse(url);
682
+ return loadPage(routeResult, {});
683
+ }
684
+ function showLoading() {
685
+ var url = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].interpolate(options.loadingPageName, {});
686
+ var route = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].parse(url);
687
+ var data = {
688
+ route: route,
689
+ scrollY: window.scrollY,
690
+ event: {
691
+ action: 'replace'
692
+ }
693
+ };
694
+ var page = (pageCache[route.path] || pageCache[route.pattern]).page;
695
+ return Promise.resolve(page.show(data));
696
+ }
697
+ function hideLoading() {
698
+ var url = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].interpolate(options.loadingPageName, {});
699
+ var route = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].parse(url);
700
+ var page = (pageCache[route.path] || pageCache[route.pattern]).page;
701
+ return Promise.resolve(page.hide());
702
+ }
703
+ async function loadPage(routeResult, data) {
704
+ if (!pageTemplateCache[routeResult.pattern]) pageTemplateCache[routeResult.pattern] = await routeResult.data.loadMarkup(routeResult);
705
+ let $template = pageTemplateCache[routeResult.pattern];
706
+ var $html = $template.cloneNode(true);
707
+ options.prepareMarkup($html);
708
+ options.attachMarkup($html);
709
+ routeResult.data.pageClass = await Promise.resolve(routeResult.data.loadPageClass());
710
+ let page = new routeResult.data.pageClass($html);
711
+ await Promise.resolve(page.boot(data));
712
+ let cacheKey = routeResult.data.cacheMarkupBy == 'path' ? routeResult.path : routeResult.pattern;
713
+ pageCache[cacheKey] = {
714
+ $html,
715
+ page
716
+ };
717
+ return page;
718
+ }
719
+ async function showPage(url, data, event) {
720
+ var routeResult = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].parse(url);
721
+ if (routeResult == null) {
722
+ console.error(`Can't find page: '${url}'`);
723
+ let url = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].interpolate(options.error404PageName, {});
724
+ routeResult = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].parse(url);
725
+ }
726
+ data = data || {};
727
+ for (let key in routeResult.params) data[key] = routeResult.params[key];
728
+ data.route = {
729
+ url: url,
730
+ path: routeResult.path,
731
+ name: routeResult.name,
732
+ params: routeResult.params
733
+ };
734
+ data.event = event;
735
+ let interrupt = await Promise.resolve(options.pageInterrupt(routeResult));
736
+ if (interrupt) {
737
+ goal = {
738
+ url,
739
+ data
740
+ };
741
+ return showPage(interrupt.url, null, event);
742
+ }
743
+ await showLoading();
744
+ var getPage = null;
745
+ if (pageCache[routeResult.path]) getPage = pageCache[routeResult.path].page;else if (pageCache[routeResult.pattern]) getPage = pageCache[routeResult.pattern].page;else getPage = loadPage(routeResult, data);
746
+
747
+ // handle initial page
748
+ if (event.action == 'load') {
749
+ const page = await getPage;
750
+ await doShow(page, data);
751
+ await hideLoading();
752
+
753
+ // clean initial load
754
+ if (stackPointer == -1) {
755
+ stack.push({
756
+ uid: 0,
757
+ data,
758
+ page
759
+ });
760
+ stackPointer = 0;
761
+ }
762
+
763
+ // page refresh
764
+ else {
765
+ stack[stackPointer].page = page;
766
+ stack[stackPointer].data = data;
767
+ }
768
+ return page;
769
+ }
770
+ let currentState = stack[stackPointer];
771
+ if (currentState.data.route.path == routeResult.path) {
772
+ handleHistoryAction(event, url, data, currentState.page);
773
+ const page = await getPage;
774
+ await doUpdate(page, data);
775
+ await hideLoading();
776
+ return page;
777
+ }
778
+ currentState.data.scrollY = window.scrollY;
779
+ const results = await Promise.all([currentState.page.hide(event), getPage]);
780
+ const page = results[1];
781
+ handleHistoryAction(event, url, data, page);
782
+ await doShow(page, data);
783
+ // .catch(e => {
784
+ // // TODO: what case is this?
785
+ // manuallyAdjustingHistory = () => manuallyAdjustingHistory = false;
786
+ // if (event.action == 'back')
787
+ // history.go(1);
788
+ // else if (event.action == 'fwd')
789
+ // history.go(-1);
790
+ // });
791
+ await hideLoading();
792
+ return page;
793
+ }
794
+ async function doShow(page, data) {
795
+ window.scroll(0, 0);
796
+ await Promise.resolve(page.show(data));
797
+ document.title = page.title;
798
+ }
799
+ async function doUpdate(page, data) {
800
+ await Promise.resolve(page.update(data));
801
+ document.title = page.title;
802
+ }
803
+ function getNewUid() {
804
+ let uid = -1;
805
+ for (let i = 0; i < stack.length; i++) uid = Math.max(uid, stack[i].uid);
806
+ return uid + 1;
807
+ }
808
+ async function handleHistoryAction(event, url, data, page) {
809
+ if (event.action == 'push') {
810
+ let newUid = getNewUid();
811
+ window.history.pushState({
812
+ uid: newUid
813
+ }, null, url);
814
+ emitUrlChanged(url);
815
+
816
+ // remove future
817
+ stack.splice(stackPointer + 1, stack.length - stackPointer);
818
+ stack.push({
819
+ uid: newUid,
820
+ data,
821
+ page
822
+ });
823
+ stackPointer++;
824
+ } else if (event.action == 'replace') {
825
+ if (data.route.url == stack[stackPointer - 1]?.data?.route?.url) {
826
+ let statesToKeep = [];
827
+ for (var i = 0; i < stackPointer - 1; i++) statesToKeep.push(stack[i]);
828
+ statesToKeep.push({
829
+ uid: stack[stackPointer - 1].uid,
830
+ data,
831
+ page
832
+ });
833
+ await modifyHistory(statesToKeep);
834
+ } else {
835
+ let newId = getNewUid();
836
+ window.history.replaceState({
837
+ uid: newId
838
+ }, null, url);
839
+ stack[stackPointer] = {
840
+ uid: newId,
841
+ data,
842
+ page
843
+ };
844
+ emitUrlChanged(url);
845
+ }
846
+ } else if (event.action == 'back') {
847
+ stackPointer -= event.distance;
848
+ } else if (event.action == 'fwd') {
849
+ stackPointer += event.distance;
850
+ }
851
+ }
852
+ function doNavigate(url, data) {
853
+ if (url === 'goal') {
854
+ url = goal ? goal.url : data?.fallback || getPath(options.defaultPageName);
855
+ data = goal?.data || {};
856
+ goal = null;
857
+ }
858
+ return showPage(url, data, {
859
+ action: 'push',
860
+ distance: 0
861
+ });
862
+ }
863
+ function storageAvailable() {
864
+ try {
865
+ var x = '__storage_test__';
866
+ window.sessionStorage.setItem(x, x);
867
+ window.sessionStorage.removeItem(x);
868
+ return true;
869
+ } catch (e) {
870
+ return false;
871
+ }
872
+ }
873
+ async function init(opts) {
874
+ Object.assign(options, opts);
875
+ if (storageAvailable()) {
876
+ let storedStack = window.sessionStorage.getItem("stack");
877
+ if (storedStack) {
878
+ storedStack = JSON.parse(storedStack);
879
+ stack = storedStack.stack;
880
+ stackPointer = storedStack.stackPointer;
881
+ window.sessionStorage.removeItem("stack");
882
+ }
883
+ }
884
+ await initLoading();
885
+ await showLoading();
886
+ }
887
+ async function ready() {
888
+ // set initial page
889
+ emitUrlChanged(window.location.pathname + window.location.search + window.location.hash);
890
+ showPage(window.location.pathname + window.location.search + window.location.hash, null, {
891
+ action: 'load',
892
+ distance: 0
893
+ }).catch(e => {
894
+ console.error(e);
895
+ if (e instanceof PageShowError) {
896
+ return showPage(e.url, e.data, {
897
+ action: 'load',
898
+ distance: 0
899
+ }).then(async page => {
900
+ if (e.action == 'replace') await handleHistoryAction({
901
+ action: e.action
902
+ }, e.url, e.data, page);
903
+ return page;
904
+ });
905
+ }
906
+ });
907
+ async function handlePopstate(context, direction, distance) {
908
+ if (manuallyAdjustingHistory) {
909
+ await manuallyAdjustingHistory(context, {
910
+ action: direction,
911
+ distance
912
+ });
913
+ return;
914
+ }
915
+ if (direction == 'back') Object.assign(context.data, backData);
916
+ backData = {};
917
+ emitUrlChanged(context.data.route.url);
918
+ showPage(context.data.route.url, context.data, {
919
+ action: direction,
920
+ distance
921
+ }).catch(e => {
922
+ console.error(e);
923
+ if (e instanceof PageShowError) return showPage(e.url, e.data, {
924
+ action: e.action || 'show'
925
+ });
926
+ }).then(page => {
927
+ // set page as it can be missing in the case of refreshes
928
+ context.page = page;
929
+ });
930
+ }
931
+ function handleBeforeHidePart1(lastNavDirection) {
932
+ // if we're ignoring beforeHide this navigation
933
+ if (handlingBeforeHide === 'ignore') {
934
+ handlingBeforeHide = false;
935
+ return false;
936
+ }
937
+
938
+ // if we have a before-unload confirm to show
939
+ if (stack[stackPointer].page.beforeHide && options.beforeHide && handlingBeforeHide === false) {
940
+ beforeHideNavDirection = lastNavDirection;
941
+ var interrupt = stack[stackPointer].page.beforeHide();
942
+ if (interrupt) {
943
+ handlingBeforeHide = 'step1';
944
+
945
+ // do this in a new thread, you cant call history actions from inside a history-aciton-handler
946
+ window.setTimeout(() => {
947
+ // undo the navigation so the URL remains correct whilst we show the confirm dialog
948
+ if (beforeHideNavDirection == 'fwd') history.back();else if (beforeHideNavDirection == 'back') history.forward();
949
+ }, 1);
950
+ return true;
951
+ }
952
+ }
953
+
954
+ // we've finished beforeHiding
955
+ if (handlingBeforeHide === 'step2') {
956
+ handlingBeforeHide = false;
957
+ beforeHideNavDirection = null;
958
+ }
959
+ return false;
960
+ }
961
+ function handleBeforeHidePart2() {
962
+ if (handlingBeforeHide !== 'step1') return false;
963
+ if (manuallyAdjustingHistory) return false;
964
+
965
+ // do the beforeHide action, then...
966
+ options.beforeHide(stack[stackPointer].page.beforeHide()).then(result => {
967
+ // if the user confirmed, redo the original action
968
+ if (result) {
969
+ handlingBeforeHide = 'step2';
970
+ if (beforeHideNavDirection == 'fwd') history.forward();else if (beforeHideNavDirection == 'back') history.back();
971
+ } else {
972
+ handlingBeforeHide = false;
973
+ beforeHideNavDirection = null;
974
+ }
975
+ });
976
+ return true;
977
+ }
978
+
979
+ // listen for browser navigations
980
+ window.addEventListener("popstate", async e => {
981
+ // TODO: is 0 sensible here, or should we call getNewId()?
982
+ let newUid = e.state?.uid || 0;
983
+ let previousUid = stack[stackPointer].uid;
984
+ let lastNavigationDirection = newUid > previousUid ? 'fwd' : 'back';
985
+ let distance = Math.abs(newUid - previousUid);
986
+ var interrupted = handleBeforeHidePart2();
987
+ if (interrupted) return;
988
+ var interrupted = handleBeforeHidePart1(lastNavigationDirection);
989
+ if (interrupted) return;
990
+ var context = findContext(newUid);
991
+ await handlePopstate(context, lastNavigationDirection, distance);
992
+ });
993
+ if (storageAvailable()) {
994
+ window.addEventListener("beforeunload", () => {
995
+ let stackToSerialize = stack.map(s => ({
996
+ uid: s.uid,
997
+ data: s.data
998
+ }));
999
+ let stackToStore = {
1000
+ stack: stackToSerialize,
1001
+ stackPointer
1002
+ };
1003
+ window.sessionStorage.setItem('stack', JSON.stringify(stackToStore));
1004
+ });
1005
+ }
1006
+ }
1007
+ function findContext(uid) {
1008
+ for (var i = 0; i < stack.length; i++) {
1009
+ if (stack[i].uid == uid) return stack[i];
1010
+ }
1011
+ return null;
1012
+ }
1013
+ function expandOnlyHash(url) {
1014
+ if (url.startsWith('#')) {
1015
+ let currentState = stack[stackPointer];
1016
+ let currentUrl = currentState.data.route.url;
1017
+ let hashIndex = currentUrl.indexOf('#');
1018
+ if (hashIndex > -1) return currentUrl.substr(0, hashIndex);
1019
+ return currentUrl + url;
1020
+ }
1021
+ return url;
1022
+ }
1023
+ function navigate(url, data, checkBeforeHide = true) {
1024
+ url = expandOnlyHash(url);
1025
+ if (checkBeforeHide === true && options.beforeHide && stack[stackPointer].page.beforeHide) {
1026
+ var interrupt = stack[stackPointer].page.beforeHide();
1027
+ if (interrupt) {
1028
+ options.beforeHide(interrupt).then(result => {
1029
+ if (result) doNavigate(url, data);
1030
+ });
1031
+ return;
1032
+ }
1033
+ }
1034
+ doNavigate(url, data).catch(e => {
1035
+ console.error(e);
1036
+ if (e instanceof PageShowError) return showPage(e.url, e.data, {
1037
+ action: e.action || 'show'
1038
+ });
1039
+ });
1040
+ }
1041
+ function replace(url, data) {
1042
+ url = expandOnlyHash(url);
1043
+ return showPage(url, data, {
1044
+ action: 'replace',
1045
+ distance: 0
1046
+ });
1047
+ }
1048
+ function show(url, data) {
1049
+ return showPage(url, data, {
1050
+ action: 'show',
1051
+ distance: 0
1052
+ });
1053
+ }
1054
+ function back(data, checkBeforeHide) {
1055
+ backData = data || {};
1056
+ handlingBeforeHide = checkBeforeHide === false ? 'ignore' : false;
1057
+ history.go(-1);
1058
+ }
1059
+ function printStack() {
1060
+ console.log("Stack length: " + stack.length);
1061
+ console.log("Stack pointer: " + stackPointer);
1062
+ for (var i = 0; i < stack.length; i++) console.log(stack[i]);
1063
+ }
1064
+ function modifyHistory(statesToKeep) {
1065
+ // BUG: You can't remove the 2nd stack frame. This is because you'd have to go back to -1, to then go forward to 0 (removing frame 1)
1066
+ // For clarity, you can remove (replace) frame 0 (1st), and frame 2+ (3rd+)
1067
+ // As a workaround, we replace the 2nd stack frame, if it is the tail, with the root "/".
1068
+ // This at least hopefully removes any meaning from it, simply taking you "home" rather than to wherever you were likely trying to remove.
1069
+
1070
+ if (statesToKeep.length == stack.length) return Promise.resolve();
1071
+ return new Promise(async (resolve, reject) => {
1072
+ let backsToDo = stackPointer;
1073
+
1074
+ // TODO: handle stack pointer not being at the tail when this process starts
1075
+
1076
+ // see BUG comments at the top of this method
1077
+ let apply2ndFrameHack = statesToKeep.length == 1 && stack.length > 1;
1078
+ let secondFrameHackUid = -1;
1079
+ let defaultPageRouteResult = null;
1080
+ let defaultPage = null;
1081
+ if (apply2ndFrameHack) {
1082
+ let url = getPath(options.defaultPageName);
1083
+ defaultPageRouteResult = _trullock_router__WEBPACK_IMPORTED_MODULE_0__["default"].parse(url);
1084
+ defaultPage = await loadPage(defaultPageRouteResult, {});
1085
+ secondFrameHackUid = getNewUid();
1086
+ }
1087
+ manuallyAdjustingHistory = async _ => {
1088
+ // rewind to the first history position
1089
+ if (backsToDo > 0) {
1090
+ window.setTimeout(() => {
1091
+ backsToDo--;
1092
+ history.back();
1093
+ }, 1);
1094
+ return;
1095
+ }
1096
+
1097
+ // reset the stack
1098
+
1099
+ stack = [];
1100
+ for (var k = 0; k < statesToKeep.length; k++) {
1101
+ let currentState = statesToKeep[k];
1102
+ if (k == 0) window.history.replaceState({
1103
+ uid: currentState.uid
1104
+ }, currentState.page.title, currentState.data.route.url);else window.history.pushState({
1105
+ uid: currentState.uid
1106
+ }, currentState.page.title, currentState.data.route.url);
1107
+
1108
+ // TODO: this doesnt seem to work when k=0
1109
+ document.title = currentState.page.title;
1110
+ stack.push(currentState);
1111
+ emitUrlChanged(currentState.data.route.url);
1112
+ }
1113
+
1114
+ // see BUG comments at the top of this method
1115
+ if (apply2ndFrameHack) {
1116
+ stack.push({
1117
+ uid: secondFrameHackUid,
1118
+ data: {
1119
+ route: {
1120
+ url: defaultPageRouteResult.path,
1121
+ path: defaultPageRouteResult.path,
1122
+ name: defaultPageRouteResult.name,
1123
+ params: defaultPageRouteResult.params
1124
+ }
1125
+ },
1126
+ page: defaultPage
1127
+ });
1128
+ stackPointer = 0;
1129
+ } else {
1130
+ stackPointer = stack.length - 1;
1131
+ }
1132
+ manuallyAdjustingHistory = false;
1133
+ resolve();
1134
+ };
1135
+
1136
+ // see BUG comments at the top of this method
1137
+ if (apply2ndFrameHack && backsToDo == 1) {
1138
+ window.history.replaceState({
1139
+ uid: secondFrameHackUid
1140
+ }, defaultPage.title, defaultPageRouteResult.path);
1141
+ document.title = defaultPage.title;
1142
+ }
1143
+ backsToDo--;
1144
+ history.back();
1145
+ });
1146
+ }
1147
+ function removeHistory(predicate) {
1148
+ let statesToKeep = [];
1149
+ for (var i = 0; i < stack.length; i++) {
1150
+ if (!predicate(stack[i], i)) statesToKeep.push(stack[i]);
1151
+ }
1152
+ return modifyHistory(statesToKeep);
1153
+ }
1154
+ function purgeCache() {
1155
+ for (const key in pageCache) {
1156
+ pageCache[key].page.destroy && pageCache[key].page.destroy();
1157
+ if (!pageCache[key].page.constructor.existingDomSelector) {
1158
+ pageCache[key].$html.remove();
1159
+ delete pageCache[key];
1160
+ }
1161
+ }
1162
+ }
1163
+ class PageShowError extends Error {
1164
+ constructor(url, message, data, action) {
1165
+ super(message || 'Error showing requested page');
1166
+
1167
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
1168
+ if (Error.captureStackTrace) Error.captureStackTrace(this, PageShowError);
1169
+ this.name = 'PageShowError';
1170
+ this.url = url;
1171
+ this.data = data;
1172
+ this.action = action;
1173
+ }
1174
+ }
1175
+
1176
+ /***/ }),
1177
+
1178
+ /***/ "./tests/helpers.js":
1179
+ /*!**************************!*\
1180
+ !*** ./tests/helpers.js ***!
1181
+ \**************************/
1182
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1183
+
1184
+ __webpack_require__.r(__webpack_exports__);
1185
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1186
+ /* harmony export */ "loadMarkup": () => (/* binding */ loadMarkup)
1187
+ /* harmony export */ });
1188
+ async function loadMarkup(routeResult) {
1189
+ let url = '/pages/' + routeResult.name + '.htm';
1190
+ let response = await fetch(url);
1191
+ let text = await response.text();
1192
+ const parser = new DOMParser();
1193
+ const doc = parser.parseFromString(text, "text/html");
1194
+ const elem = doc.querySelector('body').firstElementChild;
1195
+ return elem;
1196
+ }
1197
+
1198
+ /***/ }),
1199
+
1200
+ /***/ "./tests/page-loading.js":
1201
+ /*!*******************************!*\
1202
+ !*** ./tests/page-loading.js ***!
1203
+ \*******************************/
1204
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1205
+
1206
+ __webpack_require__.r(__webpack_exports__);
1207
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1208
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1209
+ /* harmony export */ });
1210
+ /* harmony import */ var _loading_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading.htm */ "./tests/loading.htm");
1211
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1212
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1213
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1214
+ var _class;
1215
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1216
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1217
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1218
+
1219
+
1220
+
1221
+
1222
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_3__.registerPage)({
1223
+ name: 'loading',
1224
+ route: '/loading',
1225
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_1__.loadMarkup,
1226
+ pageClass: (_class = class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_2__["default"] {
1227
+ constructor($page) {
1228
+ super($page);
1229
+ }
1230
+ }, _defineProperty(_class, "existingDomSelector", '#page-loading'), _class)
1231
+ }));
1232
+
1233
+ /***/ }),
1234
+
1235
+ /***/ "./tests/page-page1.js":
1236
+ /*!*****************************!*\
1237
+ !*** ./tests/page-page1.js ***!
1238
+ \*****************************/
1239
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1240
+
1241
+ __webpack_require__.r(__webpack_exports__);
1242
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1243
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1244
+ /* harmony export */ });
1245
+ /* harmony import */ var _page1_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page1.htm */ "./tests/page1.htm");
1246
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1247
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1248
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1249
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1250
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1251
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1252
+
1253
+
1254
+
1255
+
1256
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage)({
1257
+ name: 'page1',
1258
+ route: '/page1',
1259
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1260
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1261
+ constructor($page) {
1262
+ super($page);
1263
+ _defineProperty(this, "title", "Page 1");
1264
+ _defineProperty(this, "type", 'A');
1265
+ $page.querySelector('button').addEventListener('click', e => {
1266
+ (0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.refresh)();
1267
+ });
1268
+ }
1269
+ update(data) {
1270
+ this.$page.querySelector('.js-time').textContent = new Date().getTime();
1271
+ }
1272
+ }
1273
+ }));
1274
+
1275
+ /***/ }),
1276
+
1277
+ /***/ "./tests/page-page2.js":
1278
+ /*!*****************************!*\
1279
+ !*** ./tests/page-page2.js ***!
1280
+ \*****************************/
1281
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1282
+
1283
+ __webpack_require__.r(__webpack_exports__);
1284
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1285
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1286
+ /* harmony export */ });
1287
+ /* harmony import */ var _page2_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page2.htm */ "./tests/page2.htm");
1288
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1289
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1290
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1291
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1292
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1293
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1294
+
1295
+
1296
+
1297
+
1298
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage)({
1299
+ name: 'page2',
1300
+ route: '/page2',
1301
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1302
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1303
+ constructor($page) {
1304
+ super($page);
1305
+ _defineProperty(this, "title", "Page 2");
1306
+ _defineProperty(this, "type", 'A');
1307
+ $page.querySelector('button').addEventListener('click', e => {
1308
+ e.preventDefault();
1309
+ (0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.replace)('/page3');
1310
+ });
1311
+ }
1312
+ }
1313
+ }));
1314
+
1315
+ /***/ }),
1316
+
1317
+ /***/ "./tests/page-page3.js":
1318
+ /*!*****************************!*\
1319
+ !*** ./tests/page-page3.js ***!
1320
+ \*****************************/
1321
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1322
+
1323
+ __webpack_require__.r(__webpack_exports__);
1324
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1325
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1326
+ /* harmony export */ });
1327
+ /* harmony import */ var _page3_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page3.htm */ "./tests/page3.htm");
1328
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1329
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1330
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1331
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1332
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1333
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1334
+
1335
+
1336
+
1337
+
1338
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage({
1339
+ name: 'page3',
1340
+ route: '/page3',
1341
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1342
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1343
+ constructor($page) {
1344
+ super($page);
1345
+ _defineProperty(this, "title", "Page 3");
1346
+ _defineProperty(this, "beforeHide", () => 'Are you sure?');
1347
+ $page.querySelector('.btnRemove').addEventListener('click', e => {
1348
+ _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.removeHistory(state => {
1349
+ return state.page.type == 'A';
1350
+ });
1351
+ });
1352
+ }
1353
+ }
1354
+ }));
1355
+
1356
+ /***/ }),
1357
+
1358
+ /***/ "./tests/page-page4.js":
1359
+ /*!*****************************!*\
1360
+ !*** ./tests/page-page4.js ***!
1361
+ \*****************************/
1362
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1363
+
1364
+ __webpack_require__.r(__webpack_exports__);
1365
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1366
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1367
+ /* harmony export */ });
1368
+ /* harmony import */ var _page4_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page4.htm */ "./tests/page4.htm");
1369
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1370
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1371
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1372
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1373
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1374
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1375
+
1376
+
1377
+
1378
+
1379
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage)({
1380
+ name: 'page4',
1381
+ route: '/page4',
1382
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1383
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1384
+ constructor($page) {
1385
+ super($page);
1386
+ _defineProperty(this, "title", "Page 4");
1387
+ }
1388
+ show(opts) {
1389
+ throw new _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.PageShowError('/page1', 'Cant show page4, showing page1 instead', {}, 'replace');
1390
+ }
1391
+ }
1392
+ }));
1393
+
1394
+ /***/ }),
1395
+
1396
+ /***/ "./tests/page-page404.js":
1397
+ /*!*******************************!*\
1398
+ !*** ./tests/page-page404.js ***!
1399
+ \*******************************/
1400
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1401
+
1402
+ __webpack_require__.r(__webpack_exports__);
1403
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1404
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1405
+ /* harmony export */ });
1406
+ /* harmony import */ var _page404_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page404.htm */ "./tests/page404.htm");
1407
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1408
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1409
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1410
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1411
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1412
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1413
+
1414
+
1415
+
1416
+
1417
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage)({
1418
+ name: 'page404',
1419
+ route: '/404',
1420
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1421
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1422
+ constructor($page) {
1423
+ super($page);
1424
+ _defineProperty(this, "title", "Page 404");
1425
+ }
1426
+ }
1427
+ }));
1428
+
1429
+ /***/ }),
1430
+
1431
+ /***/ "./tests/page-pageX.js":
1432
+ /*!*****************************!*\
1433
+ !*** ./tests/page-pageX.js ***!
1434
+ \*****************************/
1435
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1436
+
1437
+ __webpack_require__.r(__webpack_exports__);
1438
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1439
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1440
+ /* harmony export */ });
1441
+ /* harmony import */ var _pageX_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pageX.htm */ "./tests/pageX.htm");
1442
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1443
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1444
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1445
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1446
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1447
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1448
+
1449
+
1450
+
1451
+
1452
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage)({
1453
+ name: 'pageX',
1454
+ route: '/page/{x}',
1455
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1456
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1457
+ constructor($page) {
1458
+ super($page);
1459
+ _defineProperty(this, "title", "Page X");
1460
+ }
1461
+ show(opts) {
1462
+ this.$page.querySelector('#PageX').textContent = "Page: " + opts.x;
1463
+ return super.show(opts);
1464
+ }
1465
+ }
1466
+ }));
1467
+
1468
+ /***/ }),
1469
+
1470
+ /***/ "./tests/page-show-fail.js":
1471
+ /*!*********************************!*\
1472
+ !*** ./tests/page-show-fail.js ***!
1473
+ \*********************************/
1474
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1475
+
1476
+ __webpack_require__.r(__webpack_exports__);
1477
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1478
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1479
+ /* harmony export */ });
1480
+ /* harmony import */ var _page404_htm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page404.htm */ "./tests/page404.htm");
1481
+ /* harmony import */ var _page_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page.js */ "./tests/page.js");
1482
+ /* harmony import */ var _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @trullock/page-manager */ "./src/index.js");
1483
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ "./tests/helpers.js");
1484
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1485
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
1486
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1487
+ // doesnt matter
1488
+
1489
+
1490
+
1491
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.registerPage)({
1492
+ name: 'pageShowFail',
1493
+ route: '/show-fail',
1494
+ loadMarkup: _helpers_js__WEBPACK_IMPORTED_MODULE_3__.loadMarkup,
1495
+ pageClass: class pageClass extends _page_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
1496
+ constructor($page) {
1497
+ super($page);
1498
+ _defineProperty(this, "title", "Page 4");
1499
+ }
1500
+ show(opts) {
1501
+ throw new _trullock_page_manager__WEBPACK_IMPORTED_MODULE_2__.PageShowError('/page1', 'Cant show pageShowFail, showing page1 instead', {}, 'replace');
1502
+ }
1503
+ }
1504
+ }));
1505
+
1506
+ /***/ }),
1507
+
1508
+ /***/ "./tests/page.js":
1509
+ /*!***********************!*\
1510
+ !*** ./tests/page.js ***!
1511
+ \***********************/
1512
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1513
+
1514
+ __webpack_require__.r(__webpack_exports__);
1515
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1516
+ /* harmony export */ "cacheMarkupBy": () => (/* binding */ cacheMarkupBy),
1517
+ /* harmony export */ "default": () => (/* binding */ Page)
1518
+ /* harmony export */ });
1519
+ const cacheMarkupBy = 'route';
1520
+ class Page {
1521
+ constructor($page) {
1522
+ this.$page = $page;
1523
+ }
1524
+ get title() {
1525
+ return this.$page.dataset['title'] || 'PageManager';
1526
+ }
1527
+ boot(opts) {
1528
+ return Promise.resolve();
1529
+ }
1530
+ show(opts) {
1531
+ this.$page.style.display = 'block';
1532
+ return Promise.resolve();
1533
+ }
1534
+ update() {
1535
+ return Promise.resolve();
1536
+ }
1537
+ hide() {
1538
+ this.$page.style.display = 'none';
1539
+ return Promise.resolve();
1540
+ }
1541
+ }
1542
+
1543
+ /***/ })
1544
+
1545
+ /******/ });
1546
+ /************************************************************************/
1547
+ /******/ // The module cache
1548
+ /******/ var __webpack_module_cache__ = {};
1549
+ /******/
1550
+ /******/ // The require function
1551
+ /******/ function __webpack_require__(moduleId) {
1552
+ /******/ // Check if module is in cache
1553
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
1554
+ /******/ if (cachedModule !== undefined) {
1555
+ /******/ return cachedModule.exports;
1556
+ /******/ }
1557
+ /******/ // Create a new module (and put it into the cache)
1558
+ /******/ var module = __webpack_module_cache__[moduleId] = {
1559
+ /******/ // no module.id needed
1560
+ /******/ // no module.loaded needed
1561
+ /******/ exports: {}
1562
+ /******/ };
1563
+ /******/
1564
+ /******/ // Execute the module function
1565
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1566
+ /******/
1567
+ /******/ // Return the exports of the module
1568
+ /******/ return module.exports;
1569
+ /******/ }
1570
+ /******/
1571
+ /************************************************************************/
1572
+ /******/ /* webpack/runtime/define property getters */
1573
+ /******/ (() => {
1574
+ /******/ // define getter functions for harmony exports
1575
+ /******/ __webpack_require__.d = (exports, definition) => {
1576
+ /******/ for(var key in definition) {
1577
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1578
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1579
+ /******/ }
1580
+ /******/ }
1581
+ /******/ };
1582
+ /******/ })();
1583
+ /******/
1584
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
1585
+ /******/ (() => {
1586
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1587
+ /******/ })();
1588
+ /******/
1589
+ /******/ /* webpack/runtime/make namespace object */
1590
+ /******/ (() => {
1591
+ /******/ // define __esModule on exports
1592
+ /******/ __webpack_require__.r = (exports) => {
1593
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1594
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1595
+ /******/ }
1596
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
1597
+ /******/ };
1598
+ /******/ })();
1599
+ /******/
1600
+ /******/ /* webpack/runtime/publicPath */
1601
+ /******/ (() => {
1602
+ /******/ __webpack_require__.p = "/";
1603
+ /******/ })();
1604
+ /******/
1605
+ /************************************************************************/
1606
+ var __webpack_exports__ = {};
1607
+ // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
1608
+ (() => {
1609
+ /*!**************************!*\
1610
+ !*** ./tests/lolpack.js ***!
1611
+ \**************************/
1612
+ __webpack_require__.r(__webpack_exports__);
1613
+ /* harmony import */ var _src_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/index.js */ "./src/index.js");
1614
+ /* harmony import */ var _page_loading_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page-loading.js */ "./tests/page-loading.js");
1615
+ /* harmony import */ var _page_page1_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./page-page1.js */ "./tests/page-page1.js");
1616
+ /* harmony import */ var _page_page2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./page-page2.js */ "./tests/page-page2.js");
1617
+ /* harmony import */ var _page_page3_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./page-page3.js */ "./tests/page-page3.js");
1618
+ /* harmony import */ var _page_page4_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./page-page4.js */ "./tests/page-page4.js");
1619
+ /* harmony import */ var _page_pageX_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./page-pageX.js */ "./tests/page-pageX.js");
1620
+ /* harmony import */ var _page_page404_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./page-page404.js */ "./tests/page-page404.js");
1621
+ /* harmony import */ var _page_show_fail_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./page-show-fail.js */ "./tests/page-show-fail.js");
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+ window.addEventListener('DOMContentLoaded', async function () {
1632
+ await _src_index_js__WEBPACK_IMPORTED_MODULE_0__.init({
1633
+ error404PageName: 'page404',
1634
+ defaultPageName: 'page1',
1635
+ beforeHide: message => new Promise(resolve => {
1636
+ resolve(confirm(message));
1637
+ })
1638
+ });
1639
+
1640
+ // listen for navigations
1641
+ document.addEventListener('click', e => {
1642
+ if (e.ctrlKey || e.metaKey) return;
1643
+ var $a = e.target.matches('a') ? e.target : e.target.closest('a');
1644
+ if (!$a) return;
1645
+ var href = $a.pathname + $a.search + $a.hash;
1646
+ _src_index_js__WEBPACK_IMPORTED_MODULE_0__.navigate(href);
1647
+ e.preventDefault();
1648
+ }, false);
1649
+ document.querySelector('.btnStack').addEventListener('click', e => {
1650
+ _src_index_js__WEBPACK_IMPORTED_MODULE_0__.printStack();
1651
+ });
1652
+ window.addEventListener("page-manager.url-changed", e => {
1653
+ console.log(e.detail.url);
1654
+ });
1655
+ await _src_index_js__WEBPACK_IMPORTED_MODULE_0__.ready();
1656
+ });
1657
+ })();
1658
+
1659
+ /******/ })()
1660
+ ;
1661
+ //# sourceMappingURL=main.js.map