peryl 1.5.22 → 1.5.23
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/demo/hash_demo.ts +6 -1
- package/dist/browser-esmodule/hash.js +2 -2
- package/dist/browser-esmodule/hash.js.map +1 -1
- package/dist/browser-esmodule/hsml-app.js +1 -1
- package/dist/browser-esmodule/hsml-app.js.map +1 -1
- package/dist/browser-esmodule/index.js +3 -3
- package/dist/browser-esmodule/index.js.map +1 -1
- package/dist/browser-umd/hash.js +1 -1
- package/dist/browser-umd/hash.js.map +1 -1
- package/dist/browser-umd/hsml-app.js +1 -1
- package/dist/browser-umd/hsml-app.js.map +1 -1
- package/dist/browser-umd/index.js +1 -1
- package/dist/browser-umd/index.js.map +1 -1
- package/dist/demo/{hash_demo.1cbbc47a.js → hash_demo.57b93f2a.js} +2 -2
- package/dist/demo/hash_demo.57b93f2a.js.map +1 -0
- package/dist/demo/{hash_demo.80f80384.js → hash_demo.7e0ef005.js} +2 -2
- package/dist/demo/hash_demo.7e0ef005.js.map +1 -0
- package/dist/demo/hash_demo.html +1 -1
- package/dist/demo/hsml-app-bysquare_demo.html +1 -1
- package/dist/demo/hsml-app-form-validation_demo.html +1 -1
- package/dist/demo/hsml-app-form_demo.html +1 -1
- package/dist/demo/hsml-app-test_demo.html +1 -1
- package/dist/demo/hsml-app-tictactoe_demo.html +1 -1
- package/dist/demo/hsml-app_demo.html +1 -1
- package/dist/demo/hsml-appel_demo.html +1 -1
- package/dist/demo/hsml-appi_demo.64f70501.js +2 -0
- package/dist/demo/{hsml-appi_demo.26745db2.js.map → hsml-appi_demo.64f70501.js.map} +1 -1
- package/dist/demo/hsml-appi_demo.9a157181.js +2 -0
- package/dist/demo/{hsml-appi_demo.eab18b83.js.map → hsml-appi_demo.9a157181.js.map} +1 -1
- package/dist/demo/hsml-appi_demo.html +1 -1
- package/dist/hash.d.ts +2 -2
- package/dist/hash.js +2 -2
- package/dist/hash.js.map +1 -1
- package/dist/hsml-app.js +29 -27
- package/dist/hsml-app.js.map +1 -1
- package/package.json +1 -1
- package/src/hash.ts +4 -5
- package/src/hsml-app.ts +48 -45
- package/dist/demo/hash_demo.1cbbc47a.js.map +0 -1
- package/dist/demo/hash_demo.80f80384.js.map +0 -1
- package/dist/demo/hsml-appi_demo.26745db2.js +0 -2
- package/dist/demo/hsml-appi_demo.eab18b83.js +0 -2
package/demo/hash_demo.ts
CHANGED
|
@@ -11,6 +11,8 @@ interface Query {
|
|
|
11
11
|
b: string;
|
|
12
12
|
c: string;
|
|
13
13
|
time: string;
|
|
14
|
+
u?: string;
|
|
15
|
+
n?: string;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
const h = new hash.Hash<hash.HashUrlData<keyof Query>>(emitWritten)
|
|
@@ -23,7 +25,10 @@ const h = new hash.Hash<hash.HashUrlData<keyof Query>>(emitWritten)
|
|
|
23
25
|
.listen()
|
|
24
26
|
// .write("hello");
|
|
25
27
|
// .write({ message: "hello" });
|
|
26
|
-
.write({
|
|
28
|
+
.write({
|
|
29
|
+
path: ["hello", "peter"],
|
|
30
|
+
query: { a: "a?a", b: "b&b", c: " .%", u: undefined, n: null }
|
|
31
|
+
});
|
|
27
32
|
|
|
28
33
|
(self as any).h = h;
|
|
29
34
|
|
|
@@ -15,7 +15,7 @@ const $b951870b67fa90fa$export$baec1e6ad0617c4b = (data)=>{
|
|
|
15
15
|
const d = typeof data === "string" ? $b951870b67fa90fa$export$74e860f5d1acb08f(data) : data;
|
|
16
16
|
const dpath = (_a = d.path) !== null && _a !== void 0 ? _a : [];
|
|
17
17
|
const dquery = (_b = d.query) !== null && _b !== void 0 ? _b : {};
|
|
18
|
-
const path = dpath.map((p)=>encodeURIComponent(p)).join("/");
|
|
18
|
+
const path = dpath.map((p)=>encodeURIComponent(p !== null && p !== void 0 ? p : "")).join("/");
|
|
19
19
|
const query = Object.entries(dquery).reduce((p, c)=>{
|
|
20
20
|
if (typeof c[1] === "string") p.append(c[0], c[1]);
|
|
21
21
|
else if (c[1] && typeof c[1].length === "number") c[1].forEach((v)=>p.append(c[0], v));
|
|
@@ -76,7 +76,7 @@ class $b951870b67fa90fa$export$ab85ecd77ce6a5cd {
|
|
|
76
76
|
return this._decode(location.hash.slice(1));
|
|
77
77
|
}
|
|
78
78
|
write(data) {
|
|
79
|
-
location.hash =
|
|
79
|
+
location.hash = this._encode(data);
|
|
80
80
|
if (!this._emitWritten) {
|
|
81
81
|
this._writtenDataJson = JSON.stringify(data);
|
|
82
82
|
this._cb && this._cb(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;AAQO,MAAM,4CAAiB,CAAC,OAAc,OAAO,mBAAmB,KAAK,SAAS,CAAC,SAAS,EAAE;AAC1F,MAAM,4CAAiB,CAAC,MAAgB,MAAM,KAAK,KAAK,CAAC,mBAAmB,QAAQ,SAAS;AAE7F,MAAM,4CAAgB,CAAoC,OAAjE;I,I,I;IAEI,MAAM,IAAI,OAAO,SAAS,WACpB,0CAAc,QACd,IAAmB;IACzB,MAAM,QAAQ,AAAA,CAAA,KAAA,EAAE,IAAI,AAAJ,MAAI,IAAA,IAAA,OAAA,KAAA,IAAA,KAAI,EAAE;IAC1B,MAAM,SAAS,AAAA,CAAA,KAAA,EAAE,KAAK,AAAL,MAAK,IAAA,IAAA,OAAA,KAAA,IAAA,KAAI,CAAA,CAAE;IAC5B,MAAM,OAAO,MAAM,GAAG,CAAC,CAAA,IAAK,mBAAmB,
|
|
1
|
+
{"mappings":"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","sources":["src/hash.ts"],"sourcesContent":["\nexport interface HashUrlData <QueryKeys extends string = string> {\n path: (string | undefined | null)[];\n query: {\n [key in QueryKeys]?: string | string[] | undefined | null;\n };\n}\n\nexport const hashJsonEncode = (data: any) => data ? encodeURIComponent(JSON.stringify(data)) : \"\";\nexport const hashJsonDecode = (str: string) => str ? JSON.parse(decodeURIComponent(str)) : undefined;\n\nexport const hashUrlEncode = <QueryKeys extends string = string>(data: HashUrlData<QueryKeys>): string => {\n // console.log(data);\n const d = typeof data === \"string\"\n ? hashUrlDecode(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 if (c[1] && typeof c[1].length === \"number\") {\n (c[1] as Array<any>).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};\n\nexport const hashUrlDecode = <QueryKeys extends string = string>(str: string): HashUrlData<QueryKeys> => {\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 if (!this._emitWritten) {\n this._writtenDataJson = JSON.stringify(data);\n this._cb && this._cb(data);\n }\n return this;\n }\n\n}\n"],"names":[],"version":3,"file":"hash.js.map"}
|
|
@@ -1001,7 +1001,7 @@ function $9adf8bc2f1ba310f$export$eb8950696418f795(hAppI) {
|
|
|
1001
1001
|
return new $9adf8bc2f1ba310f$export$8cfef5dc37c46888(hAppI.state, hAppI.view, hAppI.dispatcher, hAppI.element, hAppI.debug, hAppI.id);
|
|
1002
1002
|
}
|
|
1003
1003
|
function $9adf8bc2f1ba310f$export$1cfc54b3834d3c50(hAppI) {
|
|
1004
|
-
customElements.define(hAppI.id, class HAppElement extends HTMLElement {
|
|
1004
|
+
if (!customElements.get(hAppI.id)) customElements.define(hAppI.id, class HAppElement extends HTMLElement {
|
|
1005
1005
|
static get observedAttributes() {
|
|
1006
1006
|
var _a;
|
|
1007
1007
|
const state = hAppI.state();
|