peryl 1.4.47 → 1.4.50

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.
package/dist/hash.d.ts CHANGED
@@ -1,8 +1,17 @@
1
+ export interface HashUrlData {
2
+ path?: string[];
3
+ query?: {
4
+ [key: string]: string | string[];
5
+ };
6
+ }
7
+ export declare const hashJsonEncoder: (data: any) => string;
8
+ export declare const hashJsonDecoder: (str: string) => any;
9
+ export declare const hashUrlEncoder: (data: HashUrlData) => string;
10
+ export declare const hashUrlDecoder: (str: string) => HashUrlData;
1
11
  export declare class Hash<T = string> {
2
12
  private _cb?;
3
- private _iId;
4
13
  private _emitWritten;
5
- private _hash?;
14
+ private _writtenDataJson?;
6
15
  private _encode;
7
16
  private _decode;
8
17
  constructor(emitWritten?: boolean);
package/dist/hash.js CHANGED
@@ -1,6 +1,50 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Hash = void 0;
3
+ exports.Hash = exports.hashUrlDecoder = exports.hashUrlEncoder = exports.hashJsonDecoder = exports.hashJsonEncoder = void 0;
4
+ exports.hashJsonEncoder = (data) => data ? encodeURIComponent(JSON.stringify(data)) : "";
5
+ exports.hashJsonDecoder = (str) => str ? JSON.parse(decodeURIComponent(str)) : undefined;
6
+ exports.hashUrlEncoder = (data) => {
7
+ const d = typeof data === "string"
8
+ ? exports.hashUrlDecoder(data)
9
+ : data;
10
+ const dpath = d.path || [];
11
+ const dquery = d.query || {};
12
+ const path = dpath.map(p => encodeURIComponent(p)).join("/");
13
+ const query = Object.entries(dquery)
14
+ .reduce((p, c) => {
15
+ if (typeof c[1] === "string") {
16
+ p.append(c[0], c[1]);
17
+ }
18
+ else {
19
+ c[1].forEach(v => p.append(c[0], v));
20
+ }
21
+ return p;
22
+ }, new URLSearchParams())
23
+ .toString();
24
+ const str = `${path}${query ? "?" : ""}${query}`;
25
+ return str;
26
+ };
27
+ exports.hashUrlDecoder = (str) => {
28
+ const [pathStr, queryStr] = str.split("?");
29
+ const path = pathStr.split("/").map(p => decodeURIComponent(p));
30
+ const query = {};
31
+ for (const e of new URLSearchParams(queryStr).entries()) {
32
+ const [k, v] = e;
33
+ if (k in query) {
34
+ if (typeof query[k] === "string") {
35
+ query[k] = [query[k], v];
36
+ }
37
+ else {
38
+ query[k].push(v);
39
+ }
40
+ }
41
+ else {
42
+ query[k] = v;
43
+ }
44
+ }
45
+ const data = { path, query };
46
+ return data;
47
+ };
4
48
  class Hash {
5
49
  constructor(emitWritten = true) {
6
50
  this._encode = (data) => String(data);
@@ -20,38 +64,33 @@ class Hash {
20
64
  this._cb && this._cb(this.read());
21
65
  if ("onhashchange" in window) {
22
66
  onhashchange = () => {
23
- const written = this._hash === location.hash;
24
- this._hash = undefined;
25
- if (this._emitWritten || !written) {
26
- this._cb && this._cb(this.read());
67
+ const data = this.read();
68
+ if (!this._emitWritten) {
69
+ const written = this._writtenDataJson === JSON.stringify(data);
70
+ this._writtenDataJson = undefined;
71
+ if (!written) {
72
+ this._cb && this._cb(data);
73
+ }
74
+ }
75
+ else {
76
+ this._cb && this._cb(data);
27
77
  }
28
78
  };
29
79
  }
30
80
  else {
31
- console.warn(`browser "window.onhashchange" not implemented, running emulation`);
32
- let prevHash = location.hash;
33
- if (this._iId) {
34
- clearInterval(this._iId);
35
- }
36
- this._iId = setInterval(() => {
37
- if (location.hash !== prevHash) {
38
- prevHash = location.hash;
39
- const written = this._hash === location.hash;
40
- this._hash = undefined;
41
- if (this._emitWritten || !written) {
42
- this._cb && this._cb(this.read());
43
- }
44
- }
45
- }, 500);
81
+ alert(`Browser "window.onhashchange" not implemented`);
46
82
  }
47
83
  return this;
48
84
  }
49
85
  read() {
50
- return this._decode(decodeURIComponent(location.hash.slice(1)));
86
+ return this._decode(location.hash.slice(1));
51
87
  }
52
88
  write(data) {
53
- location.hash = "#" + encodeURIComponent(this._encode(data));
54
- this._hash = location.hash;
89
+ location.hash = "#" + this._encode(data);
90
+ if (!this._emitWritten) {
91
+ this._writtenDataJson = JSON.stringify(data);
92
+ this._cb && this._cb(data);
93
+ }
55
94
  return this;
56
95
  }
57
96
  }
package/dist/hash.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":";;;AACA,MAAa,IAAI;IAWb,YAAY,WAAW,GAAG,IAAI;QAHtB,YAAO,GAAG,CAAC,IAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,YAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAe,CAAC;QAG/C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,EAAqB;QAC1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAA2B,EAC3B,MAA2B;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,IAAI,cAAc,IAAI,MAAM,EAAE;YAC1B,YAAY,GAAG,GAAG,EAAE;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC;gBAC7C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBACvB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE;oBAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;iBACrC;YACL,CAAC,CAAC;SACL;aAAM;YACH,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACjF,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;gBACzB,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;oBAC5B,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC;oBAC7C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;oBACvB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE;wBAC/B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;qBACrC;iBACJ;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;SACX;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,IAAO;QACT,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;AAnED,oBAmEC"}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -19,17 +19,18 @@ export declare class Route {
19
19
  }
20
20
  export declare class Router extends Emitter {
21
21
  static default: Router;
22
- static hash(): string;
23
- static start(): Router;
24
22
  static route(path: string, handler: Function): Router;
25
- static navigate(path: string): Router;
23
+ static navigate(path: string, force?: boolean): Router;
24
+ static start(): Router;
25
+ static hash(): string;
26
+ static handle(hash: string): Router;
26
27
  private _routes;
27
28
  constructor();
28
29
  route(path: string, handler: Function): this;
29
- navigate(path: string): this;
30
+ navigate(path: string, force?: boolean): this;
30
31
  start(): this;
31
32
  hash(): string;
32
- handle(url: string): this;
33
+ handle(hash: string): this;
33
34
  private _onHashChange;
34
35
  }
35
36
  export declare function route(path: string, handler: Function): Router;
package/dist/router.js CHANGED
@@ -109,20 +109,23 @@ class Router extends Emitter {
109
109
  window.attachEvent("onhashchange", this._onHashChange);
110
110
  }
111
111
  }
112
- static hash() {
113
- return Router.default.hash();
112
+ static route(path, handler) {
113
+ Router.default.route(path, handler);
114
+ return Router.default;
115
+ }
116
+ static navigate(path, force = false) {
117
+ Router.default.navigate(path, force);
118
+ return Router.default;
114
119
  }
115
120
  static start() {
116
121
  Router.default.start();
117
122
  return Router.default;
118
123
  }
119
- static route(path, handler) {
120
- Router.default.route(path, handler);
121
- return Router.default;
124
+ static hash() {
125
+ return Router.default.hash();
122
126
  }
123
- static navigate(path) {
124
- Router.default.navigate(path);
125
- return Router.default;
127
+ static handle(hash) {
128
+ return Router.default.handle(hash);
126
129
  }
127
130
  route(path, handler) {
128
131
  const route = new Route(path);
@@ -132,8 +135,12 @@ class Router extends Emitter {
132
135
  });
133
136
  return this;
134
137
  }
135
- navigate(path) {
138
+ navigate(path, force = false) {
139
+ const hash = this.hash();
136
140
  window.location.hash = path;
141
+ if (force && hash === path) {
142
+ this.handle(path);
143
+ }
137
144
  return this;
138
145
  }
139
146
  start() {
@@ -143,10 +150,10 @@ class Router extends Emitter {
143
150
  hash() {
144
151
  return window.location.hash.substring(1);
145
152
  }
146
- handle(url) {
153
+ handle(hash) {
147
154
  for (const route of this._routes) {
148
155
  const params = [];
149
- if (route.match(url, params)) {
156
+ if (route.match(hash, params)) {
150
157
  this.emit(route.path, params, route);
151
158
  break;
152
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/umd/hash.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}({10:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Hash=void 0;t.Hash=class{constructor(e=!0){this._encode=e=>String(e),this._decode=e=>e,this._emitWritten=e}onChange(e){return this._cb=e,this}coders(e,t){return this._encode=e,this._decode=t,this}listen(){if(this._cb&&this._cb(this.read()),"onhashchange"in window)onhashchange=()=>{const e=this._hash===location.hash;this._hash=void 0,!this._emitWritten&&e||this._cb&&this._cb(this.read())};else{console.warn('browser "window.onhashchange" not implemented, running emulation');let e=location.hash;this._iId&&clearInterval(this._iId),this._iId=setInterval(()=>{if(location.hash!==e){e=location.hash;const t=this._hash===location.hash;this._hash=void 0,!this._emitWritten&&t||this._cb&&this._cb(this.read())}},500)}return this}read(){return this._decode(decodeURIComponent(location.hash.slice(1)))}write(e){return location.hash="#"+encodeURIComponent(this._encode(e)),this._hash=location.hash,this}}}})}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}({10:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Hash=t.hashUrlDecoder=t.hashUrlEncoder=t.hashJsonDecoder=t.hashJsonEncoder=void 0,t.hashJsonEncoder=e=>e?encodeURIComponent(JSON.stringify(e)):"",t.hashJsonDecoder=e=>e?JSON.parse(decodeURIComponent(e)):void 0,t.hashUrlEncoder=e=>{const n="string"==typeof e?t.hashUrlDecoder(e):e,r=n.path||[],o=n.query||{},i=r.map(e=>encodeURIComponent(e)).join("/"),s=Object.entries(o).reduce((e,t)=>("string"==typeof t[1]?e.append(t[0],t[1]):t[1].forEach(n=>e.append(t[0],n)),e),new URLSearchParams).toString();return`${i}${s?"?":""}${s}`},t.hashUrlDecoder=e=>{const[t,n]=e.split("?"),r=t.split("/").map(e=>decodeURIComponent(e)),o={};for(const e of new URLSearchParams(n).entries()){const[t,n]=e;t in o?"string"==typeof o[t]?o[t]=[o[t],n]:o[t].push(n):o[t]=n}return{path:r,query:o}};t.Hash=class{constructor(e=!0){this._encode=e=>String(e),this._decode=e=>e,this._emitWritten=e}onChange(e){return this._cb=e,this}coders(e,t){return this._encode=e,this._decode=t,this}listen(){return this._cb&&this._cb(this.read()),"onhashchange"in window?onhashchange=()=>{const e=this.read();if(this._emitWritten)this._cb&&this._cb(e);else{const t=this._writtenDataJson===JSON.stringify(e);this._writtenDataJson=void 0,t||this._cb&&this._cb(e)}}:alert('Browser "window.onhashchange" not implemented'),this}read(){return this._decode(location.hash.slice(1))}write(e){return location.hash="#"+this._encode(e),this._emitWritten||(this._writtenDataJson=JSON.stringify(e),this._cb&&this._cb(e)),this}}}})}));
2
2
  //# sourceMappingURL=hash.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hash.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","emitWritten","_encode","data","String","_decode","str","this","_emitWritten","cb","_cb","encode","decode","read","onhashchange","written","_hash","location","hash","undefined","console","warn","prevHash","_iId","clearInterval","setInterval","decodeURIComponent","slice","encodeURIComponent"],"mappings":"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","file":"hash.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","\nexport class Hash<T = string> {\n\n private _cb?: (data: T) => void;\n private _iId: any;\n\n private _emitWritten: boolean;\n private _hash?: string;\n\n private _encode = (data: T) => String(data);\n private _decode = (str: string) => str as any as T;\n\n constructor(emitWritten = true) {\n this._emitWritten = emitWritten;\n }\n\n onChange(cb: (data: T) => void): this {\n this._cb = cb;\n return this;\n }\n\n coders(encode: (data: T) => string,\n decode: (data: string) => T): this {\n this._encode = encode;\n this._decode = decode;\n return this;\n }\n\n listen(): this {\n this._cb && this._cb(this.read());\n if (\"onhashchange\" in window) {\n onhashchange = () => {\n const written = this._hash === location.hash;\n this._hash = undefined;\n if (this._emitWritten || !written) {\n this._cb && this._cb(this.read());\n }\n };\n } else {\n console.warn(`browser \"window.onhashchange\" not implemented, running emulation`);\n let prevHash = location.hash;\n if (this._iId) {\n clearInterval(this._iId);\n }\n this._iId = setInterval(() => {\n if (location.hash !== prevHash) {\n prevHash = location.hash;\n const written = this._hash === location.hash;\n this._hash = undefined;\n if (this._emitWritten || !written) {\n this._cb && this._cb(this.read());\n }\n }\n }, 500);\n }\n return this;\n }\n\n read(): T {\n return this._decode(decodeURIComponent(location.hash.slice(1)));\n }\n\n write(data: T): this {\n location.hash = \"#\" + encodeURIComponent(this._encode(data));\n this._hash = location.hash;\n return this;\n }\n\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hash.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hashJsonEncoder","data","encodeURIComponent","JSON","stringify","hashJsonDecoder","str","parse","decodeURIComponent","undefined","hashUrlEncoder","hashUrlDecoder","dpath","path","dquery","query","map","join","entries","reduce","append","forEach","v","URLSearchParams","toString","pathStr","queryStr","split","e","k","push","emitWritten","_encode","String","_decode","this","_emitWritten","cb","_cb","encode","decode","read","onhashchange","written","_writtenDataJson","alert","location","hash","slice"],"mappings":"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","file":"hash.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","\nexport interface HashUrlData {\n path?: string[];\n query?: {\n [key: string]: string | string[];\n };\n}\n\nexport const hashJsonEncoder = (data: any) => data ? encodeURIComponent(JSON.stringify(data)) : \"\";\nexport const hashJsonDecoder = (str: string) => str ? JSON.parse(decodeURIComponent(str)) : undefined;\n\nexport const hashUrlEncoder = (data: HashUrlData): string => {\n // console.log(data);\n const d = typeof data === \"string\"\n ? hashUrlDecoder(data)\n : data as HashUrlData;\n const dpath = d.path || [];\n const dquery = d.query || {};\n const path = dpath.map(p => encodeURIComponent(p)).join(\"/\");\n // const params = new URLSearchParams();\n const query = Object.entries(dquery)\n .reduce(\n (p, c) => {\n if (typeof c[1] === \"string\") {\n p.append(c[0], c[1]);\n } else {\n c[1].forEach(v => p.append(c[0], v));\n }\n return p;\n },\n new URLSearchParams())\n .toString();\n const str = `${path}${query ? \"?\" : \"\"}${query}`;\n // console.log(str);\n return str;\n};\nexport const hashUrlDecoder = (str: string): HashUrlData => {\n // console.log(str);\n const [pathStr, queryStr] = str.split(\"?\");\n // const pathStr = str.substring(0, str.indexOf(\"?\"));\n // const queryStr = str.substring(str.indexOf(\"?\") + 1);\n const path = pathStr.split(\"/\").map(p => decodeURIComponent(p));\n const query = {} as any;\n for (const e of new URLSearchParams(queryStr).entries()) {\n const [k, v] = e;\n if (k in query) {\n if (typeof query[k] === \"string\") {\n query[k] = [query[k], v];\n } else {\n query[k].push(v);\n }\n } else {\n query[k] = v;\n }\n }\n const data = { path, query };\n // console.log(data);\n return data;\n};\n\nexport class Hash<T = string> {\n\n private _cb?: (data: T) => void;\n\n private _emitWritten: boolean;\n private _writtenDataJson?: string;\n\n private _encode = (data: T) => String(data);\n private _decode = (str: string) => str as any as T;\n\n constructor(emitWritten = true) {\n this._emitWritten = emitWritten;\n }\n\n onChange(cb: (data: T) => void): this {\n this._cb = cb;\n return this;\n }\n\n coders(encode: (data: T) => string,\n decode: (data: string) => T): this {\n this._encode = encode;\n this._decode = decode;\n return this;\n }\n\n listen(): this {\n this._cb && this._cb(this.read());\n if (\"onhashchange\" in window) {\n onhashchange = () => {\n const data = this.read();\n // console.log(\"onhashchange\", location.hash, data);\n if (!this._emitWritten) {\n const written = this._writtenDataJson === JSON.stringify(data);\n this._writtenDataJson = undefined;\n if (!written) {\n this._cb && this._cb(data);\n }\n } else {\n this._cb && this._cb(data);\n }\n };\n } else {\n alert(`Browser \"window.onhashchange\" not implemented`);\n // let prevHash = location.hash;\n // if (this._iId) {\n // clearInterval(this._iId);\n // }\n // this._iId = setInterval(() => {\n // if (location.hash !== prevHash) {\n // prevHash = location.hash;\n // const written = this._dataJson === location.hash;\n // this._dataJson = undefined;\n // if (this._emitWritten || !written) {\n // this._cb && this._cb(data);\n // }\n // }\n // }, 500);\n }\n return this;\n }\n\n read(): T {\n return this._decode(location.hash.slice(1));\n }\n\n write(data: T): this {\n location.hash = \"#\" + this._encode(data);\n // location.hash = \"#\" + this._encode(data);\n if (!this._emitWritten) {\n this._writtenDataJson = JSON.stringify(data);\n this._cb && this._cb(data);\n }\n return this;\n }\n\n}\n"],"sourceRoot":""}