godown 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,35 +1,43 @@
1
- # Godown
2
-
3
- The **simple, sylized, semantic components** for standard HTML and other frameworks.
4
-
5
- ## Install
6
-
7
- ```sh
8
- npm i godown
9
- ```
10
-
11
- ## Useages
12
-
13
- html
14
-
15
- ```html
16
- <alert-item title="Alert"></alert-item>
17
- ```
18
-
19
- js
20
-
21
- ```js
22
- import { AlertItem } from "godown";
23
- const item = new AlertItem();
24
- item.title = "Alert";
25
- document.body.appendChild(item);
26
- ```
27
-
28
- react
29
-
30
- ```jsx
31
- import { AlertItem } from "godown/react";
32
- export default function () {
33
- return <AlertItem title="Alert" />;
34
- }
35
- ```
1
+ # Godown
2
+
3
+ The **simple, stylized, semantic components** for standard HTML and other frameworks.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm i godown
9
+ ```
10
+
11
+ ## Usages
12
+
13
+ ### HTML
14
+
15
+ ```html
16
+ <alert-item title="Alert"></alert-item>
17
+ ```
18
+
19
+ ### JS
20
+
21
+ ```js
22
+ import { AlertItem } from "godown";
23
+
24
+ const item = new AlertItem();
25
+ item.title = "Alert";
26
+ document.body.appendChild(item);
27
+ ```
28
+
29
+ deno
30
+
31
+ ```ts
32
+ import { AlertItem } from "npm:godown";
33
+ ```
34
+
35
+ ### React
36
+
37
+ ```jsx
38
+ import { AlertItem } from "godown/react";
39
+
40
+ export default function () {
41
+ return <AlertItem title="Alert" />;
42
+ }
43
+ ```
@@ -0,0 +1,28 @@
1
+ export declare class RouteTree {
2
+ pattern: string;
3
+ part: string;
4
+ children: RouteTree[];
5
+ isWild: boolean;
6
+ insert(pattern: string, parts?: string[] | undefined, height?: number): void;
7
+ search(parts: string[], height?: number): RouteTree | null;
8
+ matchChild(part: string): RouteTree | null;
9
+ matchChildren(part: string): RouteTree[];
10
+ static split(s: string): string[];
11
+ /**
12
+ *
13
+ * @param s Pattern, may contains dynamic matching parameters
14
+ * @returns {object} key, carry, multi
15
+ * @property {string} key - Dynamic key
16
+ * @property {number} carry - The length of the modifier symbol for the dynamic prefix
17
+ * @property {boolean} multi - Ignore after
18
+ */
19
+ static dynamic(s: string): {
20
+ key: string;
21
+ carry: number;
22
+ multi: boolean;
23
+ };
24
+ useWhich(s: string): string | null;
25
+ parseParams(s: string, pattern: string): Record<string, string>;
26
+ }
27
+ export default RouteTree;
28
+ //# sourceMappingURL=route-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-tree.d.ts","sourceRoot":"","sources":["../../src/lib/route-tree.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IACpB,OAAO,SAAM;IACb,IAAI,SAAM;IACV,QAAQ,EAAE,SAAS,EAAE,CAAM;IAC3B,MAAM,UAAS;IAEf,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAE,GAAG,SAAqB,EAAE,MAAM,SAAI,GAAG,IAAI;IAoBlF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI,GAAG,SAAS,GAAG,IAAI;IAkBrD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAS1C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAUxC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG;QACzB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB;IA4CD,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASlC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAgBhE;AACD,eAAe,SAAS,CAAC"}
@@ -0,0 +1,141 @@
1
+ export class RouteTree {
2
+ constructor() {
3
+ this.pattern = "";
4
+ this.part = "";
5
+ this.children = [];
6
+ this.isWild = false;
7
+ }
8
+ insert(pattern, parts = undefined, height = 0) {
9
+ if (!parts) {
10
+ parts = RouteTree.split(pattern);
11
+ }
12
+ if (parts.length === height) {
13
+ this.pattern = pattern;
14
+ return;
15
+ }
16
+ const part = parts[height];
17
+ let child = this.matchChild(part);
18
+ if (child === null) {
19
+ child = new RouteTree();
20
+ child.part = part;
21
+ const { carry } = RouteTree.dynamic(part);
22
+ child.isWild = Boolean(carry);
23
+ this.children.push(child);
24
+ }
25
+ child.insert(pattern, parts, height + 1);
26
+ }
27
+ search(parts, height = 0) {
28
+ if (parts.length === height || this.part.startsWith("*")) {
29
+ if (this.pattern === "") {
30
+ return null;
31
+ }
32
+ return this;
33
+ }
34
+ const part = parts[height];
35
+ const children = this.matchChildren(part);
36
+ for (const child of children) {
37
+ const result = child.search(parts, height + 1);
38
+ if (result !== null) {
39
+ return result;
40
+ }
41
+ }
42
+ return null;
43
+ }
44
+ matchChild(part) {
45
+ for (const child of this.children) {
46
+ if (child.part === part || child.isWild) {
47
+ return child;
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ matchChildren(part) {
53
+ const nodes = [];
54
+ for (const child of this.children) {
55
+ if (child.part === part || child.isWild) {
56
+ nodes.push(child);
57
+ }
58
+ }
59
+ return nodes;
60
+ }
61
+ static split(s) {
62
+ return s.split("/").filter((a) => a);
63
+ }
64
+ /**
65
+ *
66
+ * @param s Pattern, may contains dynamic matching parameters
67
+ * @returns {object} key, carry, multi
68
+ * @property {string} key - Dynamic key
69
+ * @property {number} carry - The length of the modifier symbol for the dynamic prefix
70
+ * @property {boolean} multi - Ignore after
71
+ */
72
+ static dynamic(s) {
73
+ if (s[0] === "{" && s[s.length - 1] === "}") {
74
+ s = s.substring(1, s.length - 1);
75
+ if (s[0] !== ":" && s[0] !== "*" && s[0] !== ".") {
76
+ return {
77
+ key: s,
78
+ carry: 0,
79
+ multi: false,
80
+ };
81
+ }
82
+ }
83
+ if (s[0] === "[" && s[s.length - 1] === "]") {
84
+ s = s.substring(1, s.length - 1);
85
+ }
86
+ const s1 = s.substring(0, 1);
87
+ if (s1 === ":") {
88
+ return {
89
+ key: s,
90
+ carry: 1,
91
+ multi: false,
92
+ };
93
+ }
94
+ if (s1 === "*") {
95
+ return {
96
+ key: s,
97
+ carry: 1,
98
+ multi: true,
99
+ };
100
+ }
101
+ const s3 = s.substring(0, 3);
102
+ if (s3 === "...") {
103
+ return {
104
+ key: s,
105
+ carry: 3,
106
+ multi: true,
107
+ };
108
+ }
109
+ return {
110
+ key: "",
111
+ carry: 0,
112
+ multi: false,
113
+ };
114
+ }
115
+ useWhich(s) {
116
+ const sp = RouteTree.split(s);
117
+ const t = this.search(sp);
118
+ if (t) {
119
+ return t.pattern;
120
+ }
121
+ return null;
122
+ }
123
+ parseParams(s, pattern) {
124
+ const sSplit = RouteTree.split(s);
125
+ const patternSplit = RouteTree.split(pattern);
126
+ const params = {};
127
+ for (const index in patternSplit) {
128
+ const { key, carry, multi } = RouteTree.dynamic(patternSplit[index]);
129
+ if (!key) {
130
+ continue;
131
+ }
132
+ params[key.substring(carry)] = sSplit[index];
133
+ if (multi) {
134
+ break;
135
+ }
136
+ }
137
+ return params;
138
+ }
139
+ }
140
+ export default RouteTree;
141
+ //# sourceMappingURL=route-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-tree.js","sourceRoot":"","sources":["../../src/lib/route-tree.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "godown",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "main": "./index.js",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -47,6 +47,7 @@
47
47
  "watch": "tsc --watch",
48
48
  "build": "tsc && node ./scripts/build.js",
49
49
  "roll": "rollup -c",
50
+ "readme": "node ./scripts/readme.js",
50
51
  "fmt": "prettier --write ./src",
51
52
  "lint": "eslint --ext .ts ./src"
52
53
  }
@@ -1,24 +1,36 @@
1
1
  import { GlobalSTD, HtmlTemplate } from "../deps.js";
2
2
  import type { PropertyValueMap } from "lit";
3
- type WithRecord<T extends string> = Record<string, any> & Record<T, string>;
3
+ import RouteTree from "../lib/route-tree.js";
4
4
  export declare class RouteView<T = unknown> extends GlobalSTD {
5
5
  private _routes;
6
+ private _routeTree;
7
+ /**
8
+ * component will render
9
+ */
6
10
  component: T | HtmlTemplate;
11
+ /**
12
+ * dynamic parameters record
13
+ */
7
14
  params: Record<string, string>;
15
+ /**
16
+ * value of matched path in routes, or null
17
+ */
8
18
  path: string;
19
+ /**
20
+ * current pathname (location.pathname)
21
+ */
9
22
  pathname: string;
23
+ baseURL: string;
24
+ def: import("lit").TemplateResult<1>;
25
+ type: "united" | "child" | "slotted" | "field";
26
+ override: boolean;
27
+ cache: boolean;
10
28
  record: Map<string, {
11
29
  pathname: string;
12
30
  params: Record<string, string>;
13
31
  path: string;
14
32
  component: T | import("lit").TemplateResult<1>;
15
33
  }>;
16
- baseURL: string;
17
- def: import("lit").TemplateResult<1>;
18
- type: "united" | "child" | "slotted" | "field";
19
- override: boolean;
20
- cache: boolean;
21
- static: boolean;
22
34
  set routes(v: (Record<string, any> & Record<"path", string> & {
23
35
  component?: T;
24
36
  })[]);
@@ -26,6 +38,7 @@ export declare class RouteView<T = unknown> extends GlobalSTD {
26
38
  component?: T;
27
39
  })[];
28
40
  static styles: import("lit").CSSResult;
41
+ reset(): void;
29
42
  render(): T | import("lit").TemplateResult<1>;
30
43
  useRouter(): {
31
44
  pathname: string;
@@ -34,16 +47,17 @@ export declare class RouteView<T = unknown> extends GlobalSTD {
34
47
  component: T | import("lit").TemplateResult<1>;
35
48
  };
36
49
  connectedCallback(): void;
50
+ /**
51
+ *
52
+ * @param ur value of useRouter()
53
+ * @param first whether this path is loaded for the first time
54
+ */
37
55
  routeChangeCallback(ur: ReturnType<typeof this.useRouter>, first: boolean): void;
38
56
  protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
39
- private render_united;
40
- private render_slotted;
41
- private render_field;
42
- fieldComponent(usedRouteTemplate: string): null | T;
43
- slottedComponent(usedRouteTemplate: string, ObjectArrayIncludePath: WithRecord<"path">[]): null | HtmlTemplate;
44
- static sortRoutesPaths(ObjectArrayIncludePath: WithRecord<"path">[]): WithRecord<"path">[];
45
- static useWhichRoute(ObjectArrayIncludePath: WithRecord<"path">[], path: string, baseURL?: string): string | null;
46
- static parseRouterParams(routeTemplate: string, originpath: string): Record<string, string>;
57
+ fieldComponent(usedRouteTemplate?: string): null | T;
58
+ slottedComponent(usedRouteTemplate?: string): null | HtmlTemplate;
59
+ useWhichRoute(path: string, baseURL?: string, appl?: RouteTree): string | null;
60
+ parseRouterParams(routeTemplate: string, originpath: string, appl?: RouteTree): Record<string, string>;
47
61
  static updateAll(): void;
48
62
  }
49
63
  export default RouteView;
@@ -1 +1 @@
1
- {"version":3,"file":"route-view.d.ts","sourceRoot":"","sources":["../../src/view/route-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAE,YAAY,EAAY,MAAM,YAAY,CAAC;AAElF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAE5C,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE5E,qBACa,SAAS,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,SAAS;IACnD,OAAO,CAAC,OAAO,CAAkD;IAEjE,SAAS,EAAE,CAAC,GAAG,YAAY,CAAQ;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpC,IAAI,EAAE,MAAM,CAAa;IACb,QAAQ,SAAM;IAE1B,MAAM;;;;;OAAwD;IAElD,OAAO,SAAM;IACb,GAAG,kCAAc;IACjB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAY;IACvB,QAAQ,UAAQ;IAClC,KAAK,UAAS;IACd,MAAM,UAAS;IAE5C,IAAI,MAAM,CAAC,CAAC;;QAAA,EAWX;IAED,IAAI,MAAM;;SAET;IAED,MAAM,CAAC,MAAM,0BAIX;IAEF,MAAM;IAsBN,SAAS;;;;;;IAST,iBAAiB;IAuBjB,mBAAmB,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO;IAEzE,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAatF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,YAAY;IAMpB,cAAc,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC;IAWnD,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,YAAY;IAY9G,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE;IAmC1F,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,MAAM,GAAG,IAAI;IAwB7G,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAuB3F,MAAM,CAAC,SAAS;CAYjB;AAED,eAAe,SAAS,CAAC;AAEzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"route-view.d.ts","sourceRoot":"","sources":["../../src/view/route-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAE,YAAY,EAAmB,MAAM,YAAY,CAAC;AAEzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAI7C,qBACa,SAAS,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,SAAS;IACnD,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,UAAU,CAA8B;IAEhD;;OAEG;IACM,SAAS,EAAE,CAAC,GAAG,YAAY,CAAQ;IAC5C;;OAEG;IACM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAC7C;;OAEG;IACM,IAAI,EAAE,MAAM,CAAQ;IAC7B;;OAEG;IACS,QAAQ,SAAM;IAEd,OAAO,SAAM;IAChB,GAAG,kCAAc;IACd,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAY;IAC7D,QAAQ,UAAQ;IACI,KAAK,UAAS;IAC3C,MAAM;;;;;OAAwD;IAE9D,IAAI,MAAM,CAAC,CAAC;;QAAA,EAUX;IAED,IAAI,MAAM;;SAET;IAED,MAAM,CAAC,MAAM,0BAIX;IAEF,KAAK;IAKL,MAAM;IAwBN,SAAS;;;;;;IAST,iBAAiB;IAsBjB;;;;OAIG;IAEH,mBAAmB,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO;IAEzE,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAatF,cAAc,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC;IAgBpD,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY;IA6BjE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAe,EAAE,IAAI,GAAE,SAA2B,GAAG,MAAM,GAAG,IAAI;IAIrG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,SAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIvH,MAAM,CAAC,SAAS;CAYjB;AAED,eAAe,SAAS,CAAC;AAEzB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
@@ -4,62 +4,78 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var RouteView_1;
8
- import { conf, css, define, GlobalSTD, property } from "../deps.js";
7
+ import { conf, css, define, GlobalSTD, property, state } from "../deps.js";
9
8
  import { htmlSlot } from "../tmpl.js";
10
- let RouteView = RouteView_1 = class RouteView extends GlobalSTD {
9
+ import RouteTree from "../lib/route-tree.js";
10
+ let RouteView = class RouteView extends GlobalSTD {
11
11
  constructor() {
12
12
  super(...arguments);
13
13
  this._routes = [];
14
+ this._routeTree = new RouteTree();
15
+ /**
16
+ * component will render
17
+ */
14
18
  this.component = null;
19
+ /**
20
+ * dynamic parameters record
21
+ */
15
22
  this.params = {};
16
- this.path = undefined;
23
+ /**
24
+ * value of matched path in routes, or null
25
+ */
26
+ this.path = null;
27
+ /**
28
+ * current pathname (location.pathname)
29
+ */
17
30
  this.pathname = "";
18
- this.record = new Map();
19
31
  this.baseURL = "";
20
32
  this.def = htmlSlot();
21
33
  this.type = "united";
22
34
  this.override = true;
23
35
  this.cache = false;
24
- this.static = false;
36
+ this.record = new Map();
25
37
  }
26
38
  set routes(v) {
27
39
  if (Object.prototype.toString.call(v) !== "[object Array]") {
28
- this._routes = [];
29
40
  return;
30
41
  }
31
- if (this.static) {
32
- this._routes = v;
33
- }
34
- else {
35
- this._routes = RouteView_1.sortRoutesPaths(v);
42
+ this._routes = v;
43
+ this.reset();
44
+ for (const route of v) {
45
+ this._routeTree.insert(route.path);
36
46
  }
37
47
  this.requestUpdate();
38
48
  }
39
49
  get routes() {
40
50
  return this._routes;
41
51
  }
52
+ reset() {
53
+ this._routeTree = new RouteTree();
54
+ this.record.clear();
55
+ }
42
56
  render() {
43
- var _a;
57
+ var _a, _b;
44
58
  if (this.cache) {
45
59
  const cached = this.record.get(this.pathname);
46
60
  if (cached) {
47
- return cached.component;
61
+ Object.assign(this, cached);
62
+ return this.component;
48
63
  }
49
64
  }
65
+ this.params = {};
50
66
  switch (this.type) {
51
67
  case "field":
52
- this.component = this.render_field();
68
+ this.component = this.fieldComponent();
53
69
  break;
54
70
  case "child":
55
71
  case "slotted":
56
- this.component = this.render_slotted();
72
+ this.component = this.slottedComponent();
57
73
  break;
58
74
  case "united":
59
- this.component = this.render_united();
75
+ this.component = (_a = this.fieldComponent()) !== null && _a !== void 0 ? _a : this.slottedComponent();
60
76
  break;
61
77
  }
62
- return (_a = this.component) !== null && _a !== void 0 ? _a : this.def;
78
+ return (_b = this.component) !== null && _b !== void 0 ? _b : this.def;
63
79
  }
64
80
  useRouter() {
65
81
  return {
@@ -90,11 +106,16 @@ let RouteView = RouteView_1 = class RouteView extends GlobalSTD {
90
106
  self.pathname = window.location.pathname;
91
107
  };
92
108
  }
109
+ /**
110
+ *
111
+ * @param ur value of useRouter()
112
+ * @param first whether this path is loaded for the first time
113
+ */
93
114
  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
94
115
  routeChangeCallback(ur, first) { }
95
116
  updated(changedProperties) {
96
- const pathnameChange = changedProperties.has("pathname");
97
- if (pathnameChange) {
117
+ const shouldDispatch = changedProperties.has("pathname") || changedProperties.has("path");
118
+ if (shouldDispatch) {
98
119
  const ur = this.useRouter();
99
120
  const noRecord = !this.record.has(this.pathname);
100
121
  if (noRecord) {
@@ -104,144 +125,54 @@ let RouteView = RouteView_1 = class RouteView extends GlobalSTD {
104
125
  this.dispatchEvent(new CustomEvent("change", { detail: ur }));
105
126
  }
106
127
  }
107
- render_united() {
108
- const slottedComponent = this.render_slotted();
109
- if (slottedComponent) {
110
- return slottedComponent;
111
- }
112
- return this.render_field();
113
- }
114
- render_slotted() {
115
- const childNodes = this.querySelectorAll(":scope > *[slot]");
116
- if (!childNodes.length) {
117
- return null;
118
- }
119
- const slots = Array.from(childNodes).map((node) => {
120
- const slotname = node.getAttribute("slot");
121
- return {
122
- path: this.baseURL + slotname,
123
- slotname,
124
- };
125
- });
126
- let slotsSort;
127
- if (this.static) {
128
- slotsSort = slots;
129
- }
130
- else {
131
- slotsSort = RouteView_1.sortRoutesPaths(slots);
132
- }
133
- this.path = RouteView_1.useWhichRoute(slotsSort, this.pathname);
134
- return this.slottedComponent(this.path, slotsSort);
135
- }
136
- render_field() {
137
- this.path = RouteView_1.useWhichRoute(this.routes, this.pathname);
138
- this.params = RouteView_1.parseRouterParams(this.path, this.pathname);
139
- return this.fieldComponent(this.path);
140
- }
141
128
  fieldComponent(usedRouteTemplate) {
129
+ if (!usedRouteTemplate) {
130
+ usedRouteTemplate = this.useWhichRoute(this.pathname);
131
+ }
132
+ this.path = usedRouteTemplate;
142
133
  if (!usedRouteTemplate) {
143
134
  return null;
144
135
  }
136
+ this.params = this.parseRouterParams(this.path, this.pathname);
145
137
  const route = this.routes.find((r) => r.path === usedRouteTemplate);
146
138
  if (!route) {
147
139
  return null;
148
140
  }
149
141
  return route.component;
150
142
  }
151
- slottedComponent(usedRouteTemplate, ObjectArrayIncludePath) {
152
- if (!usedRouteTemplate) {
153
- return null;
154
- }
155
- const slotElement = ObjectArrayIncludePath.find((s) => s.path === usedRouteTemplate);
156
- if (!slotElement) {
143
+ slottedComponent(usedRouteTemplate) {
144
+ const childNodes = this.querySelectorAll(":scope > *[slot]");
145
+ if (!childNodes.length) {
157
146
  return null;
158
147
  }
159
- this.params = RouteView_1.parseRouterParams(usedRouteTemplate, this.pathname);
160
- return htmlSlot(slotElement.slotname);
161
- }
162
- static sortRoutesPaths(ObjectArrayIncludePath) {
163
- const all = ObjectArrayIncludePath.map((route) => {
164
- const path = route.path;
165
- const pathArray = path.split("/");
166
- const __dynamicRouteCount = pathArray.filter((p) => p.startsWith(":")).length;
148
+ const slottedPaths = Array.from(childNodes).map((node) => {
149
+ const slotname = node.getAttribute("slot");
167
150
  return {
168
- ...route,
169
- path,
170
- __dynamicRouteCount,
151
+ path: slotname,
171
152
  };
172
153
  });
173
- const allSort = all.sort((a, b) => a.__dynamicRouteCount - b.__dynamicRouteCount);
174
- const multi = allSort.filter((route) => {
175
- const path = route.path;
176
- const pathArray = path.split("/");
177
- const multi_dynamicRouteCount = pathArray.filter((p) => p.startsWith("...") || p.startsWith("*")).length;
178
- return multi_dynamicRouteCount > 0;
179
- });
180
- multi.sort((a, b) => {
181
- const aIndex = a.path.split("/").findIndex((template) => template.startsWith("...") || template.startsWith("*"));
182
- const bIndex = b.path.split("/").findIndex((template) => template.startsWith("...") || template.startsWith("*"));
183
- return aIndex !== -1 && bIndex !== -1 ? bIndex - aIndex : 0;
184
- });
185
- const sigle = allSort.filter((route) => {
186
- const path = route.path;
187
- const pathArray = path.split("/");
188
- const multi_dynamicRouteCount = pathArray.filter((p) => p.startsWith("...") || p.startsWith("*")).length;
189
- return multi_dynamicRouteCount === 0;
190
- });
191
- return [...sigle, ...multi].map((i) => {
192
- delete i.__dynamicRouteCount;
193
- return i;
194
- });
195
- }
196
- static useWhichRoute(ObjectArrayIncludePath, path, baseURL = "") {
197
- const originpath = baseURL + path;
198
- const originsplits = originpath.split("/").slice(1);
199
- const routes = ObjectArrayIncludePath;
200
- const pathTemplateArray = routes.map((r) => r.path);
201
- for (const pathTemplate of pathTemplateArray) {
202
- const pathsplits = pathTemplate.split("/").slice(1);
203
- const ifmatched = pathsplits.every((pathsplit, index) => {
204
- const originsplit = originsplits[index];
205
- if (pathsplit.startsWith(":")) {
206
- return originsplits.length <= pathsplits.length;
207
- }
208
- else if (pathsplit.startsWith("...")) {
209
- return originsplits.length >= pathsplits.length;
210
- }
211
- else {
212
- return originsplits.length === pathsplits.length && originsplit === pathsplit;
213
- }
214
- });
215
- if (ifmatched) {
216
- return pathTemplate;
217
- }
218
- }
219
- return null;
220
- }
221
- static parseRouterParams(routeTemplate, originpath) {
222
- if (!routeTemplate || !originpath) {
223
- return;
154
+ const tempRouteTree = new RouteTree();
155
+ for (const withPath of slottedPaths) {
156
+ tempRouteTree.insert(withPath.path);
224
157
  }
225
- const params = {};
226
- const originpathArray = originpath.split("/").splice(1);
227
- const routeTemplateSplit = routeTemplate.split("/").splice(1);
228
- for (const [index, path] of routeTemplateSplit.entries()) {
229
- if (path.startsWith(":")) {
230
- params[path.slice(1)] = originpathArray[index];
231
- }
232
- else if (path.startsWith("*")) {
233
- params[path.slice(1)] = originpathArray.slice(index).join("/");
234
- }
235
- else if (path.startsWith("...")) {
236
- params[path.slice(3)] = originpathArray.slice(index).join("/");
237
- }
238
- else {
239
- if (path !== originpathArray[index]) {
240
- return;
241
- }
158
+ if (!usedRouteTemplate) {
159
+ usedRouteTemplate = this.useWhichRoute(this.pathname, undefined, tempRouteTree);
160
+ if (!usedRouteTemplate) {
161
+ return null;
242
162
  }
243
163
  }
244
- return params;
164
+ const slotElement = slottedPaths.find((s) => s.path === usedRouteTemplate);
165
+ if (!slotElement) {
166
+ return null;
167
+ }
168
+ this.params = this.parseRouterParams(usedRouteTemplate, this.pathname);
169
+ return htmlSlot(slotElement.path);
170
+ }
171
+ useWhichRoute(path, baseURL = this.baseURL, appl = this._routeTree) {
172
+ return appl.useWhich(baseURL + path);
173
+ }
174
+ parseRouterParams(routeTemplate, originpath, appl = this._routeTree) {
175
+ return appl.parseParams(originpath, routeTemplate);
245
176
  }
246
177
  static updateAll() {
247
178
  const routeViewTagName = conf.namemap.get("route-view");
@@ -261,6 +192,15 @@ RouteView.styles = css `
261
192
  display: contents;
262
193
  }
263
194
  `;
195
+ __decorate([
196
+ state()
197
+ ], RouteView.prototype, "component", void 0);
198
+ __decorate([
199
+ state()
200
+ ], RouteView.prototype, "params", void 0);
201
+ __decorate([
202
+ state()
203
+ ], RouteView.prototype, "path", void 0);
264
204
  __decorate([
265
205
  property()
266
206
  ], RouteView.prototype, "pathname", void 0);
@@ -268,21 +208,18 @@ __decorate([
268
208
  property()
269
209
  ], RouteView.prototype, "baseURL", void 0);
270
210
  __decorate([
271
- property()
211
+ state()
272
212
  ], RouteView.prototype, "def", void 0);
273
213
  __decorate([
274
214
  property()
275
215
  ], RouteView.prototype, "type", void 0);
276
216
  __decorate([
277
- property({ type: Boolean, attribute: false })
217
+ state()
278
218
  ], RouteView.prototype, "override", void 0);
279
219
  __decorate([
280
220
  property({ type: Boolean })
281
221
  ], RouteView.prototype, "cache", void 0);
282
- __decorate([
283
- property({ type: Boolean })
284
- ], RouteView.prototype, "static", void 0);
285
- RouteView = RouteView_1 = __decorate([
222
+ RouteView = __decorate([
286
223
  define("route-view")
287
224
  ], RouteView);
288
225
  export { RouteView };
@@ -1 +1 @@
1
- {"version":3,"file":"route-view.js","sourceRoot":"","sources":["../../src/view/route-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-view.js","sourceRoot":"","sources":["../../src/view/route-view.ts"],"names":[],"mappings":"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"}