@wcstack/router 1.3.11

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.
Files changed (118) hide show
  1. package/README.ja.md +488 -0
  2. package/README.md +486 -0
  3. package/dist/GuardCancel.d.ts +6 -0
  4. package/dist/GuardCancel.d.ts.map +1 -0
  5. package/dist/GuardCancel.js +8 -0
  6. package/dist/GuardCancel.js.map +1 -0
  7. package/dist/Navigation.d.ts +7 -0
  8. package/dist/Navigation.d.ts.map +1 -0
  9. package/dist/Navigation.js +11 -0
  10. package/dist/Navigation.js.map +1 -0
  11. package/dist/applyRoute.d.ts +3 -0
  12. package/dist/applyRoute.d.ts.map +1 -0
  13. package/dist/applyRoute.js +40 -0
  14. package/dist/applyRoute.js.map +1 -0
  15. package/dist/assignParams.d.ts +2 -0
  16. package/dist/assignParams.d.ts.map +1 -0
  17. package/dist/assignParams.js +52 -0
  18. package/dist/assignParams.js.map +1 -0
  19. package/dist/auto.js +3 -0
  20. package/dist/auto.min.js +3 -0
  21. package/dist/bootstrapRouter.d.ts +8 -0
  22. package/dist/bootstrapRouter.d.ts.map +1 -0
  23. package/dist/bootstrapRouter.js +14 -0
  24. package/dist/bootstrapRouter.js.map +1 -0
  25. package/dist/builtinParamTypes.d.ts +38 -0
  26. package/dist/builtinParamTypes.d.ts.map +1 -0
  27. package/dist/builtinParamTypes.js +79 -0
  28. package/dist/builtinParamTypes.js.map +1 -0
  29. package/dist/components/Head.d.ts +29 -0
  30. package/dist/components/Head.d.ts.map +1 -0
  31. package/dist/components/Head.js +173 -0
  32. package/dist/components/Head.js.map +1 -0
  33. package/dist/components/Layout.d.ts +15 -0
  34. package/dist/components/Layout.d.ts.map +1 -0
  35. package/dist/components/Layout.js +86 -0
  36. package/dist/components/Layout.js.map +1 -0
  37. package/dist/components/LayoutOutlet.d.ts +15 -0
  38. package/dist/components/LayoutOutlet.d.ts.map +1 -0
  39. package/dist/components/LayoutOutlet.js +101 -0
  40. package/dist/components/LayoutOutlet.js.map +1 -0
  41. package/dist/components/Link.d.ts +25 -0
  42. package/dist/components/Link.d.ts.map +1 -0
  43. package/dist/components/Link.js +155 -0
  44. package/dist/components/Link.js.map +1 -0
  45. package/dist/components/Outlet.d.ts +16 -0
  46. package/dist/components/Outlet.d.ts.map +1 -0
  47. package/dist/components/Outlet.js +46 -0
  48. package/dist/components/Outlet.js.map +1 -0
  49. package/dist/components/Route.d.ts +61 -0
  50. package/dist/components/Route.d.ts.map +1 -0
  51. package/dist/components/Route.js +348 -0
  52. package/dist/components/Route.js.map +1 -0
  53. package/dist/components/Router.d.ts +62 -0
  54. package/dist/components/Router.d.ts.map +1 -0
  55. package/dist/components/Router.js +237 -0
  56. package/dist/components/Router.js.map +1 -0
  57. package/dist/components/types.d.ts +86 -0
  58. package/dist/components/types.d.ts.map +1 -0
  59. package/dist/components/types.js +2 -0
  60. package/dist/components/types.js.map +1 -0
  61. package/dist/config.d.ts +5 -0
  62. package/dist/config.d.ts.map +1 -0
  63. package/dist/config.js +53 -0
  64. package/dist/config.js.map +1 -0
  65. package/dist/exports.d.ts +3 -0
  66. package/dist/exports.d.ts.map +1 -0
  67. package/dist/exports.js +2 -0
  68. package/dist/exports.js.map +1 -0
  69. package/dist/getCustomTagName.d.ts +2 -0
  70. package/dist/getCustomTagName.d.ts.map +1 -0
  71. package/dist/getCustomTagName.js +12 -0
  72. package/dist/getCustomTagName.js.map +1 -0
  73. package/dist/getUUID.d.ts +2 -0
  74. package/dist/getUUID.d.ts.map +1 -0
  75. package/dist/getUUID.js +11 -0
  76. package/dist/getUUID.js.map +1 -0
  77. package/dist/hideRoute.d.ts +3 -0
  78. package/dist/hideRoute.d.ts.map +1 -0
  79. package/dist/hideRoute.js +7 -0
  80. package/dist/hideRoute.js.map +1 -0
  81. package/dist/index.d.ts +24 -0
  82. package/dist/index.esm.js +1682 -0
  83. package/dist/index.esm.js.map +1 -0
  84. package/dist/index.esm.min.js +2 -0
  85. package/dist/index.esm.min.js.map +1 -0
  86. package/dist/matchRoutes.d.ts +3 -0
  87. package/dist/matchRoutes.d.ts.map +1 -0
  88. package/dist/matchRoutes.js +52 -0
  89. package/dist/matchRoutes.js.map +1 -0
  90. package/dist/parse.d.ts +3 -0
  91. package/dist/parse.d.ts.map +1 -0
  92. package/dist/parse.js +77 -0
  93. package/dist/parse.js.map +1 -0
  94. package/dist/raiseError.d.ts +2 -0
  95. package/dist/raiseError.d.ts.map +1 -0
  96. package/dist/raiseError.js +4 -0
  97. package/dist/raiseError.js.map +1 -0
  98. package/dist/registerComponents.d.ts +2 -0
  99. package/dist/registerComponents.d.ts.map +1 -0
  100. package/dist/registerComponents.js +33 -0
  101. package/dist/registerComponents.js.map +1 -0
  102. package/dist/showRoute.d.ts +3 -0
  103. package/dist/showRoute.d.ts.map +1 -0
  104. package/dist/showRoute.js +38 -0
  105. package/dist/showRoute.js.map +1 -0
  106. package/dist/showRouteContent.d.ts +3 -0
  107. package/dist/showRouteContent.d.ts.map +1 -0
  108. package/dist/showRouteContent.js +38 -0
  109. package/dist/showRouteContent.js.map +1 -0
  110. package/dist/testPath.d.ts +3 -0
  111. package/dist/testPath.d.ts.map +1 -0
  112. package/dist/testPath.js +85 -0
  113. package/dist/testPath.js.map +1 -0
  114. package/dist/types.d.ts +38 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +2 -0
  117. package/dist/types.js.map +1 -0
  118. package/package.json +74 -0
@@ -0,0 +1,8 @@
1
+ import { IWritableConfig } from "./types";
2
+ /**
3
+ * Initialize the router with optional configuration.
4
+ * This is the main entry point for setting up the router.
5
+ * @param config - Optional partial configuration to override defaults
6
+ */
7
+ export declare function bootstrapRouter(config?: Partial<IWritableConfig>): void;
8
+ //# sourceMappingURL=bootstrapRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapRouter.d.ts","sourceRoot":"","sources":["../src/bootstrapRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAKvE"}
@@ -0,0 +1,14 @@
1
+ import { setConfig } from "./config";
2
+ import { registerComponents } from "./registerComponents";
3
+ /**
4
+ * Initialize the router with optional configuration.
5
+ * This is the main entry point for setting up the router.
6
+ * @param config - Optional partial configuration to override defaults
7
+ */
8
+ export function bootstrapRouter(config) {
9
+ if (config) {
10
+ setConfig(config);
11
+ }
12
+ registerComponents();
13
+ }
14
+ //# sourceMappingURL=bootstrapRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapRouter.js","sourceRoot":"","sources":["../src/bootstrapRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiC;IAC/D,IAAI,MAAM,EAAE,CAAC;QACX,SAAS,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,kBAAkB,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,38 @@
1
+ export declare const builtinParamTypes: {
2
+ int: {
3
+ typeName: string;
4
+ pattern: RegExp;
5
+ parse(value: string): number | undefined;
6
+ };
7
+ float: {
8
+ typeName: string;
9
+ pattern: RegExp;
10
+ parse(value: string): number | undefined;
11
+ };
12
+ bool: {
13
+ typeName: string;
14
+ pattern: RegExp;
15
+ parse(value: string): boolean | undefined;
16
+ };
17
+ uuid: {
18
+ typeName: string;
19
+ pattern: RegExp;
20
+ parse(value: string): string | undefined;
21
+ };
22
+ slug: {
23
+ typeName: string;
24
+ pattern: RegExp;
25
+ parse(value: string): string | undefined;
26
+ };
27
+ isoDate: {
28
+ typeName: string;
29
+ pattern: RegExp;
30
+ parse(value: string): Date | undefined;
31
+ };
32
+ any: {
33
+ typeName: string;
34
+ pattern: RegExp;
35
+ parse(value: string): string | undefined;
36
+ };
37
+ };
38
+ //# sourceMappingURL=builtinParamTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinParamTypes.d.ts","sourceRoot":"","sources":["../src/builtinParamTypes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;qBAIb,MAAM,GAAG,MAAM,GAAG,SAAS;;;;;qBAW3B,MAAM,GAAG,MAAM,GAAG,SAAS;;;;;qBAW3B,MAAM,GAAG,OAAO,GAAG,SAAS;;;;;qBAW5B,MAAM,GAAG,MAAM,GAAG,SAAS;;;;;qBAW3B,MAAM,GAAG,MAAM,GAAG,SAAS;;;;;qBAW3B,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;qBAiBzB,MAAM,GAAG,MAAM,GAAG,SAAS;;CAOkB,CAAC"}
@@ -0,0 +1,79 @@
1
+ export const builtinParamTypes = {
2
+ "int": {
3
+ typeName: "int",
4
+ pattern: /^-?\d+$/,
5
+ parse(value) {
6
+ if (!this.pattern.test(value)) {
7
+ return undefined;
8
+ }
9
+ return parseInt(value, 10);
10
+ }
11
+ },
12
+ "float": {
13
+ typeName: "float",
14
+ pattern: /^-?\d+(?:\.\d+)?$/,
15
+ parse(value) {
16
+ if (!this.pattern.test(value)) {
17
+ return undefined;
18
+ }
19
+ return parseFloat(value);
20
+ }
21
+ },
22
+ "bool": {
23
+ typeName: "bool",
24
+ pattern: /^(true|false|0|1)$/,
25
+ parse(value) {
26
+ if (!this.pattern.test(value)) {
27
+ return undefined;
28
+ }
29
+ return value === "true" || value === "1";
30
+ }
31
+ },
32
+ "uuid": {
33
+ typeName: "uuid",
34
+ pattern: /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
35
+ parse(value) {
36
+ if (!this.pattern.test(value)) {
37
+ return undefined;
38
+ }
39
+ return value;
40
+ }
41
+ },
42
+ "slug": {
43
+ typeName: "slug",
44
+ pattern: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,
45
+ parse(value) {
46
+ if (!this.pattern.test(value)) {
47
+ return undefined;
48
+ }
49
+ return value;
50
+ }
51
+ },
52
+ "isoDate": {
53
+ typeName: "isoDate",
54
+ pattern: /^\d{4}-\d{2}-\d{2}$/,
55
+ parse(value) {
56
+ if (!this.pattern.test(value)) {
57
+ return undefined;
58
+ }
59
+ const [year, month, day] = value.split("-").map(Number);
60
+ const date = new Date(year, month - 1, day);
61
+ // 元の値と一致するか確認(補正されていないか)
62
+ if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
63
+ return undefined;
64
+ }
65
+ return date;
66
+ }
67
+ },
68
+ "any": {
69
+ typeName: "any",
70
+ pattern: /^.+$/,
71
+ parse(value) {
72
+ if (!this.pattern.test(value)) {
73
+ return undefined;
74
+ }
75
+ return value;
76
+ }
77
+ },
78
+ };
79
+ //# sourceMappingURL=builtinParamTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinParamTypes.js","sourceRoot":"","sources":["../src/builtinParamTypes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,SAAS;QAClB,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC;KACF;IAED,OAAO,EAAE;QACP,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,mBAAmB;QAC5B,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;KACF;IAED,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,oBAAoB;QAC7B,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC;QAC3C,CAAC;KACF;IAED,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,4EAA4E;QACrF,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF;IAED,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,4BAA4B;QACrC,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF;IAED,SAAS,EAAE;QACT,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,qBAAqB;QAC9B,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5C,yBAAyB;YACzB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC3F,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IAED,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,MAAM;QACf,KAAK,CAAC,KAAa;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF;CAC2D,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare class Head extends HTMLElement {
2
+ private _initialized;
3
+ private _childElementArray;
4
+ constructor();
5
+ private _initialize;
6
+ connectedCallback(): void;
7
+ disconnectedCallback(): void;
8
+ get childElementArray(): Element[];
9
+ /**
10
+ * 要素の一意キーを生成
11
+ */
12
+ private _getKey;
13
+ /**
14
+ * head内で指定のキーに一致する要素を検索
15
+ */
16
+ private _findInHead;
17
+ /**
18
+ * 初期の<head>状態をキャプチャ
19
+ * document.head内の全ての要素をスキャンして保存する
20
+ */
21
+ private _captureInitialHead;
22
+ /**
23
+ * スタック全体からheadを再構築
24
+ * 後のHeadが優先される(上書き)
25
+ */
26
+ private _reapplyHead;
27
+ }
28
+ export declare function _resetHeadStack(): void;
29
+ //# sourceMappingURL=Head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Head.d.ts","sourceRoot":"","sources":["../../src/components/Head.ts"],"names":[],"mappings":"AAcA,qBAAa,IAAK,SAAQ,WAAW;IACnC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,kBAAkB,CAAiB;;IAO3C,OAAO,CAAC,WAAW;IAWnB,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;IAW5B,IAAI,iBAAiB,IAAI,OAAO,EAAE,CAKjC;IAED;;OAEG;IACH,OAAO,CAAC,OAAO;IA+Bf;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACH,OAAO,CAAC,YAAY;CAsDrB;AAGD,wBAAgB,eAAe,IAAI,IAAI,CAItC"}
@@ -0,0 +1,173 @@
1
+ import { raiseError } from "../raiseError";
2
+ /**
3
+ * グローバルHeadスタック
4
+ * 最後に接続されたHeadが優先される
5
+ */
6
+ const headStack = [];
7
+ /**
8
+ * 初期の<head>内容を記憶(最初のHead接続時に保存)
9
+ */
10
+ const initialHeadValues = new Map();
11
+ let initialHeadCaptured = false;
12
+ export class Head extends HTMLElement {
13
+ _initialized = false;
14
+ _childElementArray = [];
15
+ constructor() {
16
+ super();
17
+ this.style.display = 'none';
18
+ }
19
+ _initialize() {
20
+ if (this._initialized) {
21
+ return;
22
+ }
23
+ this._initialized = true;
24
+ this._childElementArray = Array.from(this.children);
25
+ for (const child of this._childElementArray) {
26
+ this.removeChild(child);
27
+ }
28
+ }
29
+ connectedCallback() {
30
+ this._initialize();
31
+ // 初回のみ初期状態を保存
32
+ if (!initialHeadCaptured) {
33
+ this._captureInitialHead();
34
+ initialHeadCaptured = true;
35
+ }
36
+ // スタックに追加
37
+ headStack.push(this);
38
+ // headを再適用
39
+ this._reapplyHead();
40
+ }
41
+ disconnectedCallback() {
42
+ // スタックから削除
43
+ const index = headStack.indexOf(this);
44
+ if (index !== -1) {
45
+ headStack.splice(index, 1);
46
+ }
47
+ // headを再適用(スタックが空なら初期状態に戻す)
48
+ this._reapplyHead();
49
+ }
50
+ get childElementArray() {
51
+ if (!this._initialized) {
52
+ raiseError('Head component is not initialized yet.');
53
+ }
54
+ return this._childElementArray;
55
+ }
56
+ /**
57
+ * 要素の一意キーを生成
58
+ */
59
+ _getKey(el) {
60
+ const tag = el.tagName.toLowerCase();
61
+ if (tag === 'title') {
62
+ return 'title';
63
+ }
64
+ if (tag === 'meta') {
65
+ const name = el.getAttribute('name') || '';
66
+ const property = el.getAttribute('property') || '';
67
+ const httpEquiv = el.getAttribute('http-equiv') || '';
68
+ const charset = el.hasAttribute('charset') ? 'charset' : '';
69
+ const media = el.getAttribute('media') || '';
70
+ return `meta:${name}:${property}:${httpEquiv}:${charset}:${media}`;
71
+ }
72
+ if (tag === 'link') {
73
+ const rel = el.getAttribute('rel') || '';
74
+ const href = el.getAttribute('href') || '';
75
+ const media = el.getAttribute('media') || '';
76
+ return `link:${rel}:${href}:${media}`;
77
+ }
78
+ if (tag === 'base') {
79
+ return 'base';
80
+ }
81
+ // script, style等はouterHTMLの先頭で識別(フォールバック)
82
+ return `${tag}:${el.outerHTML.slice(0, 100)}`;
83
+ }
84
+ /**
85
+ * head内で指定のキーに一致する要素を検索
86
+ */
87
+ _findInHead(key) {
88
+ const head = document.head;
89
+ for (const el of Array.from(head.children)) {
90
+ if (this._getKey(el) === key) {
91
+ return el;
92
+ }
93
+ }
94
+ return null;
95
+ }
96
+ /**
97
+ * 初期の<head>状態をキャプチャ
98
+ * document.head内の全ての要素をスキャンして保存する
99
+ */
100
+ _captureInitialHead() {
101
+ const head = document.head;
102
+ for (const child of Array.from(head.children)) {
103
+ const key = this._getKey(child);
104
+ if (!initialHeadValues.has(key)) {
105
+ initialHeadValues.set(key, child.cloneNode(true));
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * スタック全体からheadを再構築
111
+ * 後のHeadが優先される(上書き)
112
+ */
113
+ _reapplyHead() {
114
+ // 全スタックのHeadが扱うキーを収集
115
+ const allKeys = new Set();
116
+ for (const head of headStack) {
117
+ for (const child of head._childElementArray) {
118
+ allKeys.add(this._getKey(child));
119
+ }
120
+ }
121
+ // 初期値にあるキーも追加
122
+ for (const key of initialHeadValues.keys()) {
123
+ allKeys.add(key);
124
+ }
125
+ // 現在のheadにある要素のキーも追加(管理下から外れたものを削除するため)
126
+ for (const child of Array.from(document.head.children)) {
127
+ allKeys.add(this._getKey(child));
128
+ }
129
+ // 各キーについて、最も優先度の高い値を決定
130
+ for (const key of allKeys) {
131
+ // スタックを逆順に見て、最初に見つかった値を使用
132
+ let targetElement = null;
133
+ for (let i = headStack.length - 1; i >= 0; i--) {
134
+ const head = headStack[i];
135
+ for (const child of head._childElementArray) {
136
+ if (this._getKey(child) === key) {
137
+ targetElement = child.cloneNode(true);
138
+ break;
139
+ }
140
+ }
141
+ if (targetElement)
142
+ break;
143
+ }
144
+ // スタックに該当がなければ初期値を使用
145
+ if (!targetElement && initialHeadValues.has(key)) {
146
+ const initial = initialHeadValues.get(key);
147
+ // initialHeadValuesにはnullを保存しないため、has(key)がtrueならinitialは必ず存在しElementである
148
+ targetElement = initial.cloneNode(true);
149
+ }
150
+ // headを更新
151
+ const current = this._findInHead(key);
152
+ if (targetElement) {
153
+ if (current) {
154
+ current.replaceWith(targetElement);
155
+ }
156
+ else {
157
+ document.head.appendChild(targetElement);
158
+ }
159
+ }
160
+ else {
161
+ // 初期値もスタックにもない場合は削除
162
+ current?.remove();
163
+ }
164
+ }
165
+ }
166
+ }
167
+ // テスト用にスタックをリセットする関数
168
+ export function _resetHeadStack() {
169
+ headStack.length = 0;
170
+ initialHeadValues.clear();
171
+ initialHeadCaptured = false;
172
+ }
173
+ //# sourceMappingURL=Head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Head.js","sourceRoot":"","sources":["../../src/components/Head.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ILayout } from "./types.js";
2
+ export declare class Layout extends HTMLElement implements ILayout {
3
+ private _uuid;
4
+ private _initialized;
5
+ constructor();
6
+ private _loadTemplateFromSource;
7
+ private _loadTemplateFromDocument;
8
+ loadTemplate(): Promise<HTMLTemplateElement>;
9
+ get uuid(): string;
10
+ get enableShadowRoot(): boolean;
11
+ get name(): string;
12
+ private _initialize;
13
+ connectedCallback(): void;
14
+ }
15
+ //# sourceMappingURL=Layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/components/Layout.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,qBAAa,MAAO,SAAQ,WAAY,YAAW,OAAO;IACxD,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,YAAY,CAAkB;;YAKxB,uBAAuB;IAcrC,OAAO,CAAC,yBAAyB;IAU3B,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAyBlD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,gBAAgB,IAAI,OAAO,CAO9B;IAED,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,OAAO,CAAC,WAAW;IAInB,iBAAiB;CAKlB"}
@@ -0,0 +1,86 @@
1
+ import { getUUID } from "../getUUID.js";
2
+ import { config } from "../config.js";
3
+ import { raiseError } from "../raiseError.js";
4
+ const cache = new Map();
5
+ export class Layout extends HTMLElement {
6
+ _uuid = getUUID();
7
+ _initialized = false;
8
+ constructor() {
9
+ super();
10
+ }
11
+ async _loadTemplateFromSource(source) {
12
+ try {
13
+ const response = await fetch(source);
14
+ if (!response.ok) {
15
+ raiseError(`${config.tagNames.layout} failed to fetch layout from source: ${source}, status: ${response.status}`);
16
+ }
17
+ const templateContent = await response.text();
18
+ cache.set(source, templateContent);
19
+ return templateContent;
20
+ }
21
+ catch (error) {
22
+ raiseError(`${config.tagNames.layout} failed to load layout from source: ${source}, error: ${error}`);
23
+ }
24
+ }
25
+ _loadTemplateFromDocument(id) {
26
+ const element = document.getElementById(`${id}`);
27
+ if (element) {
28
+ if (element instanceof HTMLTemplateElement) {
29
+ return element.innerHTML;
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ async loadTemplate() {
35
+ const source = this.getAttribute('src');
36
+ const layoutId = this.getAttribute('layout');
37
+ if (source && layoutId) {
38
+ console.warn(`${config.tagNames.layout} have both "src" and "layout" attributes.`);
39
+ }
40
+ const template = document.createElement('template');
41
+ if (source) {
42
+ if (cache.has(source)) {
43
+ template.innerHTML = cache.get(source) || '';
44
+ }
45
+ else {
46
+ template.innerHTML = await this._loadTemplateFromSource(source) || '';
47
+ cache.set(source, template.innerHTML);
48
+ }
49
+ }
50
+ else if (layoutId) {
51
+ const templateContent = this._loadTemplateFromDocument(layoutId);
52
+ if (templateContent) {
53
+ template.innerHTML = templateContent;
54
+ }
55
+ else {
56
+ console.warn(`${config.tagNames.layout} could not find template with id "${layoutId}".`);
57
+ }
58
+ }
59
+ return template;
60
+ }
61
+ get uuid() {
62
+ return this._uuid;
63
+ }
64
+ get enableShadowRoot() {
65
+ if (this.hasAttribute('enable-shadow-root')) {
66
+ return true;
67
+ }
68
+ else if (this.hasAttribute('disable-shadow-root')) {
69
+ return false;
70
+ }
71
+ return config.enableShadowRoot;
72
+ }
73
+ get name() {
74
+ // Layout 要素が DOM に挿入されないケース(parseで置換)でも name を取れるようにする
75
+ return this.getAttribute('name') || '';
76
+ }
77
+ _initialize() {
78
+ this._initialized = true;
79
+ }
80
+ connectedCallback() {
81
+ if (!this._initialized) {
82
+ this._initialize();
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=Layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/components/Layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ILayout, ILayoutOutlet } from "./types.js";
2
+ export declare class LayoutOutlet extends HTMLElement implements ILayoutOutlet {
3
+ private _layout;
4
+ private _initialized;
5
+ private _layoutChildNodes;
6
+ constructor();
7
+ get layout(): ILayout;
8
+ set layout(value: ILayout);
9
+ get name(): string;
10
+ private _initialize;
11
+ connectedCallback(): Promise<void>;
12
+ assignParams(params: Record<string, any>): void;
13
+ }
14
+ export declare function createLayoutOutlet(): LayoutOutlet;
15
+ //# sourceMappingURL=LayoutOutlet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayoutOutlet.d.ts","sourceRoot":"","sources":["../../src/components/LayoutOutlet.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpD,qBAAa,YAAa,SAAQ,WAAY,YAAW,aAAa;IACpE,OAAO,CAAC,OAAO,CAAuD;IACtE,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,iBAAiB,CAAc;;IAKvC,IAAI,MAAM,IAAI,OAAO,CAKpB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAGxB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;YAEa,WAAW;IAuDnB,iBAAiB;IAMvB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAchD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD"}
@@ -0,0 +1,101 @@
1
+ import { assignParams } from "../assignParams.js";
2
+ import { config } from "../config.js";
3
+ import { raiseError } from "../raiseError.js";
4
+ export class LayoutOutlet extends HTMLElement {
5
+ _layout = null;
6
+ _initialized = false;
7
+ _layoutChildNodes = [];
8
+ constructor() {
9
+ super();
10
+ }
11
+ get layout() {
12
+ if (!this._layout) {
13
+ raiseError(`${config.tagNames.layoutOutlet} has no layout.`);
14
+ }
15
+ return this._layout;
16
+ }
17
+ set layout(value) {
18
+ this._layout = value;
19
+ this.setAttribute('name', value.name);
20
+ }
21
+ get name() {
22
+ return this.layout.name;
23
+ }
24
+ async _initialize() {
25
+ this._initialized = true;
26
+ if (this.layout.enableShadowRoot) {
27
+ this.attachShadow({ mode: 'open' });
28
+ }
29
+ const template = await this.layout.loadTemplate();
30
+ if (this.shadowRoot) {
31
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
32
+ for (const childNode of Array.from(this.layout.childNodes)) {
33
+ this._layoutChildNodes.push(childNode);
34
+ this.appendChild(childNode);
35
+ }
36
+ }
37
+ else {
38
+ const fragmentForTemplate = template.content.cloneNode(true);
39
+ const slotElementBySlotName = new Map();
40
+ fragmentForTemplate.querySelectorAll('slot').forEach((slotElement) => {
41
+ const slotName = slotElement.getAttribute('name') || '';
42
+ if (!slotElementBySlotName.has(slotName)) {
43
+ slotElementBySlotName.set(slotName, slotElement);
44
+ }
45
+ else {
46
+ console.warn(`${config.tagNames.layoutOutlet} duplicate slot name "${slotName}" in layout template.`);
47
+ }
48
+ });
49
+ const fragmentBySlotName = new Map();
50
+ const fragmentForChildNodes = document.createDocumentFragment();
51
+ for (const childNode of Array.from(this.layout.childNodes)) {
52
+ this._layoutChildNodes.push(childNode);
53
+ if (childNode instanceof Element) {
54
+ const slotName = childNode.getAttribute('slot') || '';
55
+ if (slotName.length > 0 && slotElementBySlotName.has(slotName)) {
56
+ if (!fragmentBySlotName.has(slotName)) {
57
+ fragmentBySlotName.set(slotName, document.createDocumentFragment());
58
+ }
59
+ fragmentBySlotName.get(slotName)?.appendChild(childNode);
60
+ continue;
61
+ }
62
+ }
63
+ fragmentForChildNodes.appendChild(childNode);
64
+ }
65
+ for (const [slotName, slotElement] of slotElementBySlotName) {
66
+ const fragment = fragmentBySlotName.get(slotName);
67
+ if (fragment) {
68
+ slotElement.replaceWith(fragment);
69
+ }
70
+ }
71
+ const defaultSlot = slotElementBySlotName.get('');
72
+ if (defaultSlot) {
73
+ defaultSlot.replaceWith(fragmentForChildNodes);
74
+ }
75
+ this.appendChild(fragmentForTemplate);
76
+ }
77
+ }
78
+ async connectedCallback() {
79
+ if (!this._initialized) {
80
+ await this._initialize();
81
+ }
82
+ }
83
+ assignParams(params) {
84
+ for (const childNode of this._layoutChildNodes) {
85
+ if (childNode instanceof Element) {
86
+ childNode.querySelectorAll('[data-bind]').forEach((e) => {
87
+ // 子要素にパラメータを割り当て
88
+ assignParams(e, params);
89
+ });
90
+ if (childNode.hasAttribute('data-bind')) {
91
+ // 子要素にパラメータを割り当て
92
+ assignParams(childNode, params);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ export function createLayoutOutlet() {
99
+ return document.createElement(config.tagNames.layoutOutlet);
100
+ }
101
+ //# sourceMappingURL=LayoutOutlet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayoutOutlet.js","sourceRoot":"","sources":["../../src/components/LayoutOutlet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { Router } from "./Router";
2
+ import { ILink } from "./types";
3
+ export declare class Link extends HTMLElement implements ILink {
4
+ static get observedAttributes(): string[];
5
+ private _childNodeArray;
6
+ private _uuid;
7
+ private _path;
8
+ private _router;
9
+ private _anchorElement;
10
+ private _initialized;
11
+ private _onClick?;
12
+ constructor();
13
+ get uuid(): string;
14
+ get router(): Router;
15
+ private _initialize;
16
+ private _normalizePathname;
17
+ private _joinInternalPath;
18
+ private _setAnchorHref;
19
+ connectedCallback(): void;
20
+ disconnectedCallback(): void;
21
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
22
+ private _updateActiveState;
23
+ get anchorElement(): HTMLAnchorElement | null;
24
+ }
25
+ //# sourceMappingURL=Link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/components/Link.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,IAAK,SAAQ,WAAY,YAAW,KAAK;IACpD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,CAA0B;;IAM3C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,CASnB;IAED,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;IAYtB,iBAAiB;IA2CjB,oBAAoB;IAiBpB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUvF,OAAO,CAAC,kBAAkB,CAaxB;IAEF,IAAI,aAAa,IAAI,iBAAiB,GAAG,IAAI,CAE5C;CACF"}