@wcstack/router 1.3.18 → 1.3.19

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.ja.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  **もしルーティングがただのHTMLタグだったら?**
4
4
 
5
- アプリのナビゲーション構造をマークアップで定義する未来を妄想してみる。ネストされたルート、レイアウト、型付きパラメータすべてがネイティブなHTML要素として存在する。ルーター設定オブジェクトもJavaScriptの儀式も不要。タグが「どこに何を置くか」を語る。
5
+ アプリのナビゲーション構造をマークアップだけで定義できる未来を想像してみてください。ネストされたルート、レイアウト、型付きパラメータこれらすべてがネイティブなHTML要素として存在します。ルーター設定オブジェクトも、JavaScriptの煩雑な手続きも不要です。タグそのものが、「どこに何を配置するか」を明確に示します。
6
6
 
7
- それが `<wcs-router>`, `<wcs-route>` たちの探求するもの。CDN一発、依存ゼロ、構文はHTML
7
+ これこそが `<wcs-router>`, `<wcs-route>` が追求するコンセプトです。CDNからの読み込みのみで動作し、依存ライブラリはゼロ。構文はすべてHTMLです。
8
8
 
9
9
  ## 特徴
10
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/config.ts","../src/getUUID.ts","../src/raiseError.ts","../src/GuardCancel.ts","../src/builtinParamTypes.ts","../src/components/Route.ts","../src/components/Layout.ts","../src/components/Outlet.ts","../src/getCustomTagName.ts","../src/assignParams.ts","../src/components/LayoutOutlet.ts","../src/parse.ts","../src/testPath.ts","../src/matchRoutes.ts","../src/hideRoute.ts","../src/showRoute.ts","../src/showRouteContent.ts","../src/applyRoute.ts","../src/Navigation.ts","../src/components/Router.ts","../src/components/Link.ts","../src/components/Head.ts","../src/registerComponents.ts","../src/bootstrapRouter.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/config.ts","../src/getUUID.ts","../src/raiseError.ts","../src/GuardCancel.ts","../src/builtinParamTypes.ts","../src/components/Route.ts","../src/components/Layout.ts","../src/components/Outlet.ts","../src/getCustomTagName.ts","../src/assignParams.ts","../src/components/LayoutOutlet.ts","../src/parse.ts","../src/testPath.ts","../src/matchRoutes.ts","../src/hideRoute.ts","../src/showRoute.ts","../src/showRouteContent.ts","../src/applyRoute.ts","../src/Navigation.ts","../src/components/Router.ts","../src/components/Link.ts","../src/components/Head.ts","../src/registerComponents.ts","../src/bootstrapRouter.ts"],"sourcesContent":["import { IConfig, IWritableConfig } from \"./types\";\r\n\r\ninterface IInternalConfig {\r\n tagNames: {\r\n route: string;\r\n router: string;\r\n outlet: string;\r\n layout: string;\r\n layoutOutlet: string;\r\n link: string;\r\n head: string;\r\n };\r\n enableShadowRoot: boolean;\r\n basenameFileExtensions: string[];\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n tagNames: {\r\n route: \"wcs-route\",\r\n router: \"wcs-router\",\r\n outlet: \"wcs-outlet\",\r\n layout: \"wcs-layout\",\r\n layoutOutlet: \"wcs-layout-outlet\",\r\n link: \"wcs-link\",\r\n head: \"wcs-head\"\r\n },\r\n enableShadowRoot: false,\r\n basenameFileExtensions: [\".html\"]\r\n};\r\n\r\nfunction deepFreeze<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n Object.freeze(obj);\r\n for (const key of Object.keys(obj)) {\r\n deepFreeze((obj as Record<string, unknown>)[key]);\r\n }\r\n return obj;\r\n}\r\n\r\nfunction deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n const clone: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\r\n }\r\n return clone as T;\r\n}\r\n\r\nlet frozenConfig: IConfig | null = null;\r\n\r\n// 後方互換のため config もエクスポート(読み取り専用として使用)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function getConfig(): IConfig {\r\n if (!frozenConfig) {\r\n frozenConfig = deepFreeze(deepClone(_config));\r\n }\r\n return frozenConfig;\r\n}\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n if (typeof partialConfig.enableShadowRoot === \"boolean\") {\r\n _config.enableShadowRoot = partialConfig.enableShadowRoot;\r\n }\r\n if (Array.isArray(partialConfig.basenameFileExtensions)) {\r\n _config.basenameFileExtensions = partialConfig.basenameFileExtensions;\r\n }\r\n frozenConfig = null;\r\n}\r\n","\r\nexport function getUUID(): string {\r\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\r\n return crypto.randomUUID();\r\n }\r\n // Simple UUID generator\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (Math.random() * 16) | 0,\r\n v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}","\r\nexport function raiseError(message: string): never {\r\n throw new Error(`[@wcstack/router] ${message}`);\r\n}","import { IGuardCancel } from \"./types\";\r\n\r\nexport class GuardCancel extends Error implements IGuardCancel {\r\n fallbackPath: string;\r\n\r\n constructor(message: string, fallbackPath: string) {\r\n super(message);\r\n this.fallbackPath = fallbackPath;\r\n }\r\n}","import { BuiltinParamTypes, IParamTypeInfo } from \"./types\";\r\n\r\nexport const builtinParamTypes = {\r\n \"int\": {\r\n typeName: \"int\",\r\n pattern: /^-?\\d+$/,\r\n parse(value: string): number | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return parseInt(value, 10);\r\n }\r\n },\r\n\r\n \"float\": {\r\n typeName: \"float\",\r\n pattern: /^-?\\d+(?:\\.\\d+)?$/,\r\n parse(value: string): number | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return parseFloat(value);\r\n }\r\n },\r\n\r\n \"bool\": {\r\n typeName: \"bool\",\r\n pattern: /^(true|false|0|1)$/,\r\n parse(value: string): boolean | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value === \"true\" || value === \"1\";\r\n }\r\n },\r\n\r\n \"uuid\": {\r\n typeName: \"uuid\",\r\n 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,\r\n parse(value: string): string | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n },\r\n\r\n \"slug\": {\r\n typeName: \"slug\",\r\n pattern: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,\r\n parse(value: string): string | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n },\r\n\r\n \"isoDate\": {\r\n typeName: \"isoDate\",\r\n pattern: /^\\d{4}-\\d{2}-\\d{2}$/,\r\n parse(value: string): Date | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n const [year, month, day] = value.split(\"-\").map(Number);\r\n const date = new Date(year, month - 1, day);\r\n // 元の値と一致するか確認(補正されていないか)\r\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\r\n return undefined;\r\n }\r\n return date;\r\n }\r\n },\r\n\r\n \"any\": {\r\n typeName: \"any\",\r\n pattern: /^.+$/,\r\n parse(value: string): string | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n },\r\n} satisfies Record<BuiltinParamTypes, IParamTypeInfo<unknown>>;\r\n","import { getUUID } from \"../getUUID.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IRouteMatchResult, IRoute, IRouter, GuardHandler, SegmentType, ISegmentInfo } from \"./types.js\";\r\nimport { GuardCancel } from \"../GuardCancel.js\";\r\nimport { builtinParamTypes } from \"../builtinParamTypes.js\";\r\nimport { BuiltinParamTypes } from \"../types.js\";\r\n\r\nconst weights: Record<SegmentType, number> = {\r\n 'static': 2,\r\n 'param': 1,\r\n 'catch-all': 0\r\n};\r\n\r\nexport class Route extends HTMLElement implements IRoute {\r\n private _name: string = '';\r\n private _path: string = '';\r\n private _routeParentNode: IRoute | null = null;\r\n private _routeChildNodes: IRoute[] = [];\r\n private _routerNode: IRouter | null = null;\r\n private _uuid: string = getUUID();\r\n private _placeHolder: Comment = document.createComment(`@@route:${this._uuid}`);\r\n private _childNodeArray: Node[] | undefined;\r\n private _paramNames: string[] | undefined;\r\n private _absoluteParamNames: string[] | undefined;\r\n private _params: Record<string, string> = {};\r\n private _typedParams: Record<string, any> = {};\r\n private _weight: number | undefined;\r\n private _absoluteWeight: number | undefined;\r\n private _childIndex: number = 0;\r\n private _hasGuard: boolean = false;\r\n private _guardHandler: GuardHandler | null = null;\r\n private _waitForSetGuardHandler: Promise<void> | null = null;\r\n private _resolveSetGuardHandler: (() => void) | null = null;\r\n private _guardFallbackPath: string = '';\r\n private _initialized: boolean = false;\r\n private _isFallbackRoute: boolean = false;\r\n private _segmentCount: number | undefined;\r\n private _segmentInfos: ISegmentInfo[] = [];\r\n private _absoluteSegmentInfos: ISegmentInfo[] | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get routeParentNode(): IRoute | null {\r\n return this._routeParentNode;\r\n }\r\n\r\n get routeChildNodes(): IRoute[] {\r\n return this._routeChildNodes;\r\n }\r\n\r\n get routerNode(): IRouter {\r\n if (!this._routerNode) {\r\n raiseError(`${config.tagNames.route} has no routerNode.`);\r\n }\r\n return this._routerNode;\r\n }\r\n\r\n get path(): string {\r\n return this._path;\r\n }\r\n\r\n get isRelative(): boolean {\r\n return !this._path.startsWith('/');\r\n }\r\n\r\n private _checkParentNode<T>(\r\n hasParentCallback: (routeParentNode: IRoute) => T, \r\n noParentCallback: () => T\r\n ): T {\r\n // fallbackはルーター直下のみ許可されるため、相対パスチェックはスキップ\r\n if (!this._isFallbackRoute) {\r\n if (this.isRelative && !this._routeParentNode) {\r\n raiseError(`${config.tagNames.route} is relative but has no parent route.`);\r\n }\r\n if (!this.isRelative && this._routeParentNode) {\r\n raiseError(`${config.tagNames.route} is absolute but has a parent route.`);\r\n }\r\n }\r\n if (this.isRelative && this._routeParentNode) {\r\n return hasParentCallback(this._routeParentNode);\r\n } else {\r\n return noParentCallback();\r\n }\r\n }\r\n\r\n get absolutePath(): string {\r\n return this._checkParentNode<string>((routeParentNode) => {\r\n const parentPath = routeParentNode.absolutePath;\r\n return parentPath.endsWith('/')\r\n ? parentPath + this._path\r\n : parentPath + '/' + this._path;\r\n\r\n }, () => {\r\n return this._path;\r\n }\r\n );\r\n }\r\n\r\n get uuid(): string {\r\n return this._uuid;\r\n }\r\n\r\n get placeHolder(): Comment {\r\n return this._placeHolder;\r\n }\r\n\r\n get childNodeArray(): Node[] {\r\n if (typeof this._childNodeArray === 'undefined') {\r\n this._childNodeArray = Array.from(this.childNodes);\r\n }\r\n return this._childNodeArray;\r\n }\r\n\r\n get routes(): IRoute[] {\r\n if (this.routeParentNode) {\r\n return this.routeParentNode.routes.concat(this);\r\n } else {\r\n return [ this ];\r\n }\r\n }\r\n\r\n get segmentInfos(): ISegmentInfo[] {\r\n return this._segmentInfos;\r\n }\r\n\r\n // indexの場合、{ type: 'static', segmentText: '' }となる、indexが複数連続する場合もある\r\n get absoluteSegmentInfos(): ISegmentInfo[] {\r\n if (typeof this._absoluteSegmentInfos === 'undefined') {\r\n this._absoluteSegmentInfos = this._checkParentNode<ISegmentInfo[]>((routeParentNode) => {\r\n return [\r\n ...routeParentNode.absoluteSegmentInfos,\r\n ...this._segmentInfos\r\n ];\r\n }, () => {\r\n return [ ...this._segmentInfos ];\r\n });\r\n }\r\n return this._absoluteSegmentInfos;\r\n }\r\n\r\n get params(): Record<string, string> {\r\n return this._params;\r\n }\r\n\r\n get typedParams(): Record<string, any> {\r\n return this._typedParams;\r\n }\r\n\r\n get paramNames(): string[] {\r\n if (typeof this._paramNames === 'undefined') {\r\n const names: string[] = [];\r\n for (const info of this._segmentInfos) {\r\n if (info.paramName) {\r\n names.push(info.paramName);\r\n }\r\n }\r\n this._paramNames = names;\r\n }\r\n return this._paramNames;\r\n }\r\n\r\n get absoluteParamNames(): string[] {\r\n if (typeof this._absoluteParamNames === 'undefined') {\r\n this._absoluteParamNames = this._checkParentNode<string[]>((routeParentNode) => {\r\n return [\r\n ...routeParentNode.absoluteParamNames,\r\n ...this.paramNames\r\n ];\r\n }, () => {\r\n return [ ...this.paramNames ];\r\n });\r\n }\r\n return this._absoluteParamNames;\r\n }\r\n\r\n get weight(): number {\r\n if (typeof this._weight === 'undefined') {\r\n let weight = 0;\r\n for (const info of this._segmentInfos) {\r\n weight += weights[info.type];\r\n }\r\n this._weight = weight;\r\n }\r\n return this._weight;\r\n }\r\n\r\n get absoluteWeight(): number {\r\n if (typeof this._absoluteWeight === 'undefined') {\r\n this._absoluteWeight = this._checkParentNode<number>((routeParentNode) => {\r\n return routeParentNode.absoluteWeight + this.weight;\r\n }, () => {\r\n return this.weight;\r\n });\r\n }\r\n return this._absoluteWeight\r\n }\r\n\r\n get childIndex(): number {\r\n return this._childIndex;\r\n }\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n async guardCheck(matchResult: IRouteMatchResult): Promise<void> {\r\n if (this._hasGuard && this._waitForSetGuardHandler) {\r\n await this._waitForSetGuardHandler;\r\n }\r\n if (this._guardHandler) {\r\n const toPath = matchResult.path;\r\n const fromPath = matchResult.lastPath;\r\n const allowed = await this._guardHandler(toPath, fromPath);\r\n if (!allowed) {\r\n throw new GuardCancel('Navigation cancelled by guard.', this._guardFallbackPath);\r\n }\r\n }\r\n }\r\n\r\n shouldChange(newParams: Record<string, string>): boolean {\r\n for(const key of this.paramNames) {\r\n if (this.params[key] !== newParams[key]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get guardHandler(): GuardHandler {\r\n if (!this._guardHandler) {\r\n raiseError(`${config.tagNames.route} has no guardHandler.`);\r\n }\r\n return this._guardHandler!;\r\n }\r\n set guardHandler(value: GuardHandler) {\r\n this._resolveSetGuardHandler?.();\r\n this._guardHandler = value;\r\n }\r\n\r\n initialize(routerNode: IRouter, routeParentNode: IRoute | null): void {\r\n if (this._initialized) {\r\n return;\r\n }\r\n this._initialized = true;\r\n\r\n // 単独で影響のないものから設定していく\r\n if (this.hasAttribute('path')) {\r\n this._path = this.getAttribute('path') || '';\r\n } else if (this.hasAttribute('index')) {\r\n this._path = '';\r\n } else if (this.hasAttribute('fallback')) {\r\n this._path = '';\r\n this._isFallbackRoute = true;\r\n } else {\r\n raiseError(`${config.tagNames.route} should have a \"path\" or \"index\" attribute.`);\r\n }\r\n this._name = this.getAttribute('name') || '';\r\n\r\n this._routerNode = routerNode;\r\n this._routeParentNode = routeParentNode;\r\n const routeChildContainer = routeParentNode || routerNode;\r\n routeChildContainer.routeChildNodes.push(this);\r\n this._childIndex = routeChildContainer.routeChildNodes.length - 1;\r\n\r\n if (this._isFallbackRoute) {\r\n if (routeParentNode) {\r\n raiseError(`${config.tagNames.route} with fallback attribute must be a direct child of ${config.tagNames.router}.`);\r\n }\r\n if (routerNode.fallbackRoute) {\r\n raiseError(`${config.tagNames.router} can have only one fallback route.`);\r\n }\r\n routerNode.fallbackRoute = this;\r\n }\r\n\r\n // index属性の場合は特別扱い(セグメントを消費しない)\r\n if (this.hasAttribute('index')) {\r\n this._segmentInfos.push({\r\n type: 'static',\r\n segmentText: '',\r\n paramName: null,\r\n pattern: /^$/,\r\n isIndex: true\r\n });\r\n }\r\n\r\n const segments = this._path.split('/');\r\n for (let idx = 0; idx < segments.length; idx++) {\r\n const segment = segments[idx];\r\n // 末尾の空セグメントはスキップ(/parent/ のような場合)\r\n if (segment === '' && idx === segments.length - 1 && idx > 0) {\r\n continue;\r\n }\r\n if (segment === '*') {\r\n this._segmentInfos.push({\r\n type: 'catch-all',\r\n segmentText: segment,\r\n paramName: '*',\r\n pattern: new RegExp('^(.*)$')\r\n });\r\n // Catch-all: matches remaining path segments\r\n break; // Ignore subsequent segments\r\n } else if (segment.startsWith(':')) {\r\n const matchType = segment.match(/^:([^()]+)(\\(([^)]+)\\))?$/);\r\n let paramName: string;\r\n let typeName: BuiltinParamTypes = 'any';\r\n if (matchType) {\r\n paramName = matchType[1];\r\n if (matchType[3] && Object.keys(builtinParamTypes).includes(matchType[3])) {\r\n typeName = matchType[3] as BuiltinParamTypes;\r\n }\r\n } else {\r\n paramName = segment.substring(1);\r\n }\r\n \r\n this._segmentInfos.push({\r\n type: 'param',\r\n segmentText: segment,\r\n paramName: paramName,\r\n pattern: new RegExp('^([^\\\\/]+)$'),\r\n paramType: typeName\r\n });\r\n } else if (segment !== '' || !this.hasAttribute('index')) {\r\n // 空セグメントはindex以外の場合のみ追加(絶対パスの先頭 '' など)\r\n this._segmentInfos.push({\r\n type: 'static',\r\n segmentText: segment,\r\n paramName: null,\r\n pattern: new RegExp(`^${segment}$`)\r\n });\r\n }\r\n }\r\n this._hasGuard = this.hasAttribute('guard');\r\n if (this._hasGuard) {\r\n this._guardFallbackPath = this.getAttribute('guard') || '/';\r\n this._waitForSetGuardHandler = new Promise((resolve) => {\r\n this._resolveSetGuardHandler = resolve;\r\n });\r\n }\r\n\r\n this.setAttribute('fullpath', this.absolutePath);\r\n }\r\n\r\n get fullpath(): string {\r\n return this.absolutePath;\r\n }\r\n\r\n get segmentCount(): number {\r\n if (typeof this._segmentCount === 'undefined') {\r\n let count = 0;\r\n for (const info of this._segmentInfos) {\r\n if (info.type !== 'catch-all') {\r\n count++;\r\n }\r\n }\r\n this._segmentCount = this._path === \"\" ? 0 : count;\r\n }\r\n return this._segmentCount;\r\n }\r\n\r\n get absoluteSegmentCount(): number {\r\n return this._checkParentNode<number>((routeParentNode) => {\r\n return routeParentNode.absoluteSegmentCount + this.segmentCount;\r\n }, () => {\r\n return this.segmentCount;\r\n });\r\n }\r\n\r\n testAncestorNode(ancestorNode: IRoute): boolean {\r\n let currentNode: IRoute | null = this._routeParentNode;\r\n while(currentNode) {\r\n if (currentNode === ancestorNode) {\r\n return true;\r\n }\r\n currentNode = currentNode.routeParentNode;\r\n }\r\n return false;\r\n }\r\n\r\n clearParams(): void {\r\n this._params = {};\r\n this._typedParams = {};\r\n }\r\n}\r\n","import { getUUID } from \"../getUUID.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { ILayout } from \"./types.js\";\r\n\r\nconst cache = new Map<string, string>();\r\n\r\nexport class Layout extends HTMLElement implements ILayout {\r\n private _uuid: string = getUUID();\r\n private _initialized: boolean = false;\r\n constructor() {\r\n super();\r\n }\r\n\r\n private async _loadTemplateFromSource(source: string): Promise<string | null> {\r\n try {\r\n const response = await fetch(source);\r\n if (!response.ok) {\r\n raiseError(`${config.tagNames.layout} failed to fetch layout from source: ${source}, status: ${response.status}`);\r\n }\r\n const templateContent = await response.text();\r\n cache.set(source, templateContent);\r\n return templateContent;\r\n } catch (error) {\r\n raiseError(`${config.tagNames.layout} failed to load layout from source: ${source}, error: ${error}`);\r\n }\r\n }\r\n\r\n private _loadTemplateFromDocument(id: string): string | null {\r\n const element = document.getElementById(`${id}`) as HTMLElement | null;\r\n if (element) {\r\n if (element instanceof HTMLTemplateElement) {\r\n return element.innerHTML;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n async loadTemplate(): Promise<HTMLTemplateElement> {\r\n const source = this.getAttribute('src');\r\n const layoutId = this.getAttribute('layout');\r\n if (source && layoutId) {\r\n console.warn(`${config.tagNames.layout} have both \"src\" and \"layout\" attributes.`);\r\n }\r\n const template = document.createElement('template');\r\n if (source) {\r\n if (cache.has(source)) {\r\n template.innerHTML = cache.get(source) || '';\r\n } else {\r\n template.innerHTML = await this._loadTemplateFromSource(source) || '';\r\n cache.set(source, template.innerHTML);\r\n }\r\n } else if (layoutId) {\r\n const templateContent = this._loadTemplateFromDocument(layoutId);\r\n if (templateContent) {\r\n template.innerHTML = templateContent;\r\n } else {\r\n console.warn(`${config.tagNames.layout} could not find template with id \"${layoutId}\".`);\r\n }\r\n }\r\n return template;\r\n }\r\n\r\n get uuid(): string {\r\n return this._uuid;\r\n }\r\n\r\n get enableShadowRoot(): boolean {\r\n if (this.hasAttribute('enable-shadow-root')) {\r\n return true;\r\n } else if (this.hasAttribute('disable-shadow-root')) {\r\n return false;\r\n }\r\n return config.enableShadowRoot;\r\n }\r\n\r\n get name(): string {\r\n // Layout 要素が DOM に挿入されないケース(parseで置換)でも name を取れるようにする\r\n return this.getAttribute('name') || '';\r\n }\r\n\r\n private _initialize() {\r\n this._initialized = true;\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialize();\r\n }\r\n }\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IOutlet, IRoute, IRouter } from \"./types.js\";\r\n\r\nexport class Outlet extends HTMLElement implements IOutlet {\r\n private _routesNode: IRouter | null = null;\r\n private _lastRoutes: IRoute[] = [];\r\n private _initialized: boolean = false;\r\n constructor() {\r\n super();\r\n }\r\n\r\n get routesNode(): IRouter {\r\n if (!this._routesNode) {\r\n raiseError(`${config.tagNames.outlet} has no routesNode.`);\r\n }\r\n return this._routesNode;\r\n }\r\n set routesNode(value: IRouter) {\r\n this._routesNode = value;\r\n }\r\n\r\n get rootNode(): HTMLElement | ShadowRoot {\r\n if (this.shadowRoot) {\r\n return this.shadowRoot;\r\n }\r\n return this;\r\n }\r\n\r\n get lastRoutes(): IRoute[] {\r\n return this._lastRoutes;\r\n }\r\n set lastRoutes(value: IRoute[]) {\r\n this._lastRoutes = [ ...value ];\r\n }\r\n\r\n private _initialize() {\r\n if (config.enableShadowRoot) {\r\n this.attachShadow({ mode: 'open' });\r\n }\r\n this._initialized = true;\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialize();\r\n }\r\n }\r\n}\r\n\r\nexport function createOutlet(): Outlet {\r\n return document.createElement(config.tagNames.outlet) as Outlet;\r\n}\r\n","\r\nexport function getCustomTagName(element: Element): string | null {\r\n const tagName = element.tagName.toLowerCase();\r\n if (tagName.includes(\"-\")) {\r\n return tagName;\r\n }\r\n const isAttr = element.getAttribute(\"is\");\r\n if (isAttr && isAttr.includes(\"-\")) {\r\n return isAttr;\r\n }\r\n return null;\r\n}","import { BindType } from \"./components/types\";\r\nimport { getCustomTagName } from \"./getCustomTagName\";\r\nimport { raiseError } from \"./raiseError\";\r\n\r\nconst bindTypeSet: Set<BindType> = new Set([ \"props\", \"states\", \"attr\", \"\" ]);\r\n\r\nfunction _assignParams(element: Element, params: Record<string, any>, bindType: BindType) {\r\n for(const [key, value] of Object.entries(params)) {\r\n switch(bindType) {\r\n case \"props\":\r\n (element as any).props = {\r\n ...(element as any).props,\r\n [key]: value\r\n };\r\n break;\r\n case \"states\":\r\n (element as any).states = {\r\n ...(element as any).states,\r\n [key]: value\r\n };\r\n break;\r\n case \"attr\":\r\n element.setAttribute(key, value);\r\n break;\r\n case \"\":\r\n (element as any)[key] = value;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport function assignParams(element: Element, params: Record<string, any>) {\r\n if (!element.hasAttribute('data-bind')) {\r\n raiseError(`${element.tagName} has no 'data-bind' attribute.`);\r\n }\r\n const bindTypeText = element.getAttribute('data-bind') || '';\r\n if (!bindTypeSet.has(bindTypeText as BindType)) {\r\n raiseError(`${element.tagName} has invalid 'data-bind' attribute: ${bindTypeText}`);\r\n }\r\n const bindType = bindTypeText as BindType;\r\n const customTagName = getCustomTagName(element);\r\n if (customTagName && customElements.get(customTagName) === undefined) {\r\n customElements.whenDefined(customTagName).then(() => {\r\n if (element.isConnected) {\r\n // 要素が削除されていない場合のみ割り当てを行う\r\n _assignParams(element, params, bindType);\r\n }\r\n }).catch(() => {\r\n raiseError(`Failed to define custom element: ${customTagName}`);\r\n });\r\n } else {\r\n _assignParams(element, params, bindType);\r\n }\r\n}","import { assignParams } from \"../assignParams.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { ILayout, ILayoutOutlet } from \"./types.js\";\r\n\r\nexport class LayoutOutlet extends HTMLElement implements ILayoutOutlet {\r\n private _layout: (ILayout & Pick<Element,'childNodes'>) | null = null;\r\n private _initialized: boolean = false;\r\n private _layoutChildNodes: Node[] = [];\r\n constructor() {\r\n super();\r\n }\r\n\r\n get layout(): ILayout {\r\n if (!this._layout) {\r\n raiseError(`${config.tagNames.layoutOutlet} has no layout.`);\r\n }\r\n return this._layout;\r\n }\r\n set layout(value: ILayout) {\r\n this._layout = value;\r\n this.setAttribute('name', value.name);\r\n }\r\n \r\n get name(): string {\r\n return this.layout.name;\r\n }\r\n\r\n private async _initialize(): Promise<void> {\r\n this._initialized = true;\r\n if (this.layout.enableShadowRoot) {\r\n this.attachShadow({ mode: 'open' });\r\n }\r\n const template = await this.layout.loadTemplate();\r\n if (this.shadowRoot) {\r\n this.shadowRoot.appendChild(template.content.cloneNode(true));\r\n for(const childNode of Array.from(this.layout.childNodes)) {\r\n this._layoutChildNodes.push(childNode);\r\n this.appendChild(childNode);\r\n }\r\n } else {\r\n const fragmentForTemplate = template.content.cloneNode(true) as DocumentFragment;\r\n const slotElementBySlotName: Map<string, Element> = new Map();\r\n fragmentForTemplate.querySelectorAll('slot').forEach((slotElement) => {\r\n const slotName = slotElement.getAttribute('name') || '';\r\n if (!slotElementBySlotName.has(slotName)) {\r\n slotElementBySlotName.set(slotName, slotElement);\r\n } else {\r\n console.warn(`${config.tagNames.layoutOutlet} duplicate slot name \"${slotName}\" in layout template.`);\r\n }\r\n });\r\n\r\n const fragmentBySlotName: Map<string, DocumentFragment> = new Map();\r\n const fragmentForChildNodes = document.createDocumentFragment();\r\n for(const childNode of Array.from(this.layout.childNodes)) {\r\n this._layoutChildNodes.push(childNode);\r\n if (childNode instanceof Element) {\r\n const slotName = childNode.getAttribute('slot') || '';\r\n if (slotName.length > 0 && slotElementBySlotName.has(slotName)) {\r\n if (!fragmentBySlotName.has(slotName)) {\r\n fragmentBySlotName.set(slotName, document.createDocumentFragment());\r\n }\r\n fragmentBySlotName.get(slotName)?.appendChild(childNode);\r\n continue;\r\n }\r\n }\r\n fragmentForChildNodes.appendChild(childNode);\r\n }\r\n for(const [slotName, slotElement] of slotElementBySlotName) {\r\n const fragment = fragmentBySlotName.get(slotName);\r\n if (fragment) {\r\n slotElement.replaceWith(fragment);\r\n }\r\n }\r\n const defaultSlot = slotElementBySlotName.get('');\r\n if (defaultSlot) {\r\n defaultSlot.replaceWith(fragmentForChildNodes);\r\n }\r\n\r\n this.appendChild(fragmentForTemplate);\r\n }\r\n } \r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n await this._initialize();\r\n }\r\n }\r\n\r\n assignParams(params: Record<string, any>): void {\r\n for(const childNode of this._layoutChildNodes) {\r\n if (childNode instanceof Element) {\r\n childNode.querySelectorAll('[data-bind]').forEach((e) => {\r\n // 子要素にパラメータを割り当て\r\n assignParams(e, params);\r\n });\r\n if (childNode.hasAttribute('data-bind')) {\r\n // 子要素にパラメータを割り当て\r\n assignParams(childNode, params);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function createLayoutOutlet(): LayoutOutlet {\r\n return document.createElement(config.tagNames.layoutOutlet) as LayoutOutlet;\r\n}","import { ILayout, IRoute, IRouter } from \"./components/types.js\";\r\nimport { Layout } from \"./components/Layout.js\";\r\nimport { createLayoutOutlet } from \"./components/LayoutOutlet.js\";\r\nimport { Route } from \"./components/Route.js\";\r\nimport { config } from \"./config.js\";\r\n\r\n\r\nfunction _duplicateCheck(routesByPath: Map<string, IRoute[]>, route: IRoute): void {\r\n let routes = routesByPath.get(route.absolutePath);\r\n if (!routes) {\r\n routes = [];\r\n }\r\n for(const existingRoute of routes) {\r\n if (!route.testAncestorNode(existingRoute)) {\r\n console.warn(`Duplicate route path detected: '${route.absolutePath}' (defined as '${route.path}')`);\r\n break;\r\n }\r\n }\r\n routes.push(route);\r\n if (routes.length === 1) {\r\n routesByPath.set(route.absolutePath, routes);\r\n }\r\n}\r\n\r\nasync function _parseNode(\r\n routerNode: IRouter, \r\n node: Node, \r\n routes: IRoute[], \r\n map: Map<string, IRoute | ILayout>,\r\n routesByPath: Map<string, IRoute[]>\r\n): Promise<DocumentFragment> {\r\n const routeParentNode: IRoute | null = routes.length > 0 ? routes[routes.length - 1] : null;\r\n const fragment = document.createDocumentFragment();\r\n const childNodes = Array.from(node.childNodes);\r\n for(const childNode of childNodes) {\r\n if (childNode.nodeType === Node.ELEMENT_NODE) {\r\n let appendNode = childNode\r\n let element = childNode as HTMLElement;\r\n const tagName = element.tagName.toLowerCase();\r\n if (tagName === config.tagNames.route) {\r\n const childFragment = document.createDocumentFragment();\r\n // Move child nodes to fragment to avoid duplication of\r\n for(const childNode of Array.from(element.childNodes)) {\r\n childFragment.appendChild(childNode);\r\n }\r\n const cloneElement = document.importNode<Route>(element as Route, true);\r\n customElements.upgrade(cloneElement);\r\n cloneElement.appendChild(childFragment);\r\n const route = cloneElement;\r\n route.initialize(routerNode, routeParentNode);\r\n _duplicateCheck(routesByPath, route);\r\n routes.push(route);\r\n map.set(route.uuid, route);\r\n appendNode = route.placeHolder;\r\n element = route;\r\n } else if (tagName === config.tagNames.layout) {\r\n const childFragment = document.createDocumentFragment();\r\n // Move child nodes to fragment to avoid duplication of\r\n for(const childNode of Array.from(element.childNodes)) {\r\n childFragment.appendChild(childNode);\r\n }\r\n const cloneElement = document.importNode(element, true);\r\n customElements.upgrade(cloneElement);\r\n cloneElement.appendChild(childFragment);\r\n const layout = cloneElement;\r\n const layoutOutlet = createLayoutOutlet();\r\n layoutOutlet.layout = layout as Layout;\r\n appendNode = layoutOutlet;\r\n element = cloneElement;\r\n }\r\n const children = await _parseNode(routerNode, element, routes, map, routesByPath);\r\n element.innerHTML = \"\";\r\n element.appendChild(children);\r\n fragment.appendChild(appendNode);\r\n } else {\r\n fragment.appendChild(childNode);\r\n }\r\n }\r\n return fragment;\r\n}\r\n\r\nexport async function parse(routerNode: IRouter): Promise<DocumentFragment> {\r\n const map: Map<string, IRoute | ILayout> = new Map();\r\n const routesByPath: Map<string, IRoute[]> = new Map();\r\n const fr = await _parseNode(routerNode, routerNode.template.content, [], map, routesByPath);\r\n return fr;\r\n}","import { builtinParamTypes } from \"./builtinParamTypes\";\r\nimport { IRoute, IRouteMatchResult } from \"./components/types\";\r\n\r\nexport function testPath(route: IRoute, path: string, segments: string[]): IRouteMatchResult | null {\r\n const params: Record<string, string> = {};\r\n const typedParams: Record<string, any> = {};\r\n let testResult = true;\r\n let catchAllFound = false;\r\n let i = 0, segIndex = 0;\r\n while (i < route.absoluteSegmentInfos.length) {\r\n const segmentInfo = route.absoluteSegmentInfos[i];\r\n // index属性のルートはセグメントを消費しないのでスキップ\r\n if (segmentInfo.isIndex) {\r\n i++;\r\n continue;\r\n }\r\n // 先頭の空セグメント(絶対パスの /)はsegmentsから除外されているのでスキップ\r\n if (i === 0 && segmentInfo.segmentText === '' && segmentInfo.type === 'static') {\r\n i++;\r\n continue;\r\n }\r\n const segment = segments[segIndex];\r\n if (segment === undefined) {\r\n // セグメントが足りない\r\n testResult = false;\r\n break;\r\n }\r\n let match: boolean = false;\r\n if (segmentInfo.type === \"param\") {\r\n const paramType = segmentInfo.paramType || 'any';\r\n const builtinParamType = builtinParamTypes[paramType];\r\n const value = builtinParamType.parse(segment);\r\n if (typeof value !== 'undefined') {\r\n if (segmentInfo.paramName) {\r\n params[segmentInfo.paramName] = segment;\r\n typedParams[segmentInfo.paramName] = value;\r\n }\r\n match = true;\r\n }\r\n } else {\r\n match = segmentInfo.pattern.exec(segment) !== null;\r\n }\r\n if (match) {\r\n if (segmentInfo.type === 'catch-all') {\r\n // Catch-all: match remaining segments\r\n const remainingSegments = segments.slice(segIndex).join('/');\r\n params['*'] = remainingSegments;\r\n typedParams['*'] = remainingSegments;\r\n catchAllFound = true;\r\n break; // No more segments to process\r\n }\r\n } else {\r\n testResult = false;\r\n break; \r\n }\r\n i++;\r\n segIndex++;\r\n }\r\n let finalResult = false;\r\n if (testResult) {\r\n if (catchAllFound) {\r\n // catch-all は残り全部マッチ済み\r\n finalResult = true;\r\n } else if (i === route.absoluteSegmentInfos.length && segIndex === segments.length) {\r\n // 全セグメントが消費された\r\n finalResult = true;\r\n } else if (i === route.absoluteSegmentInfos.length && segIndex === segments.length - 1 && segments.at(-1) === '') {\r\n // 末尾スラッシュ対応: /users/ -> ['', 'users', '']\r\n finalResult = true;\r\n }\r\n }\r\n \r\n if (finalResult) {\r\n return {\r\n path: path,\r\n routes: route.routes,\r\n params: params,\r\n typedParams: typedParams,\r\n lastPath: \"\"\r\n };\r\n }\r\n return null;\r\n}","import { IRoute, IRouteMatchResult, IRouter } from \"./components/types.js\";\r\nimport { testPath } from \"./testPath.js\";\r\n\r\nfunction _matchRoutes(\r\n routerNode: IRouter, \r\n routeNode: IRoute, \r\n routes: IRoute[], \r\n normalizedPath: string,\r\n segments: string[],\r\n results: IRouteMatchResult[]\r\n): void {\r\n const nextRoutes = routes.concat(routeNode);\r\n const matchResult = testPath(routeNode, normalizedPath, segments);\r\n if (matchResult) {\r\n results.push(matchResult);\r\n }\r\n for(const childRoute of routeNode.routeChildNodes) {\r\n _matchRoutes(routerNode, childRoute, nextRoutes, normalizedPath, segments, results);\r\n }\r\n}\r\n\r\nexport function matchRoutes(routerNode: IRouter, normalizedPath: string): IRouteMatchResult | null {\r\n const routes: IRoute[] = [];\r\n const topLevelRoutes = routerNode.routeChildNodes;\r\n const results: IRouteMatchResult[] = [];\r\n // セグメント配列を作成(先頭の/は除去せずにそのまま分割)\r\n // '/' => ['', ''] → filter → ['']\r\n // '/home' => ['', 'home'] → filter → ['home']\r\n // '/home/about' => ['', 'home', 'about'] → filter → ['home', 'about']\r\n // '' => ['']\r\n const rawSegments = normalizedPath.split('/');\r\n // 先頭の空セグメント(絶対パスの/)と末尾の空セグメント(/で終わるパス)を除去\r\n const segments = rawSegments.filter((s, i) => {\r\n if (i === 0 && s === '') return false; // 先頭の空セグメントをスキップ\r\n if (i === rawSegments.length - 1 && s === '' && rawSegments.length > 1) return false; // 末尾の空セグメントをスキップ\r\n return true;\r\n });\r\n for (const route of topLevelRoutes) {\r\n _matchRoutes(routerNode, route, routes, normalizedPath, segments, results);\r\n }\r\n results.sort((a, b) => {\r\n const lastRouteA = a.routes.at(-1)!;\r\n const lastRouteB = b.routes.at(-1)!;\r\n const diffSegmentCount = lastRouteA.absoluteSegmentCount - lastRouteB.absoluteSegmentCount;\r\n if (diffSegmentCount !== 0) {\r\n return -diffSegmentCount;\r\n }\r\n const diffWeight = lastRouteA.absoluteWeight - lastRouteB.absoluteWeight;\r\n if (diffWeight !== 0) {\r\n return -diffWeight;\r\n }\r\n const diffIndex = lastRouteA.childIndex - lastRouteB.childIndex;\r\n return diffIndex;\r\n });\r\n if (results.length > 0) {\r\n return results[0];\r\n }\r\n return null;\r\n}","import { IRoute } from \"./components/types\";\r\n\r\nexport function hideRoute(route: IRoute) {\r\n route.clearParams();\r\n for(const node of route.childNodeArray) {\r\n node.parentNode?.removeChild(node);\r\n }\r\n}\r\n","import { assignParams } from \"./assignParams\";\r\nimport { LayoutOutlet } from \"./components/LayoutOutlet\";\r\nimport { IRoute, IRouteMatchResult } from \"./components/types\";\r\nimport { config } from \"./config\";\r\n\r\nexport function showRoute(route: IRoute, matchResult: IRouteMatchResult): boolean {\r\n route.clearParams();\r\n for(const key of route.paramNames) {\r\n route.params[key] = matchResult.params[key];\r\n route.typedParams[key] = matchResult.typedParams[key];\r\n }\r\n const parentNode = route.placeHolder.parentNode;\r\n const nextSibling = route.placeHolder.nextSibling;\r\n for (const node of route.childNodeArray) {\r\n // connectedCallbackが呼ばれる前に、プロパティにパラメータを割り当てる\r\n // connectedCallbackを実行するときにパラメータはすでに設定されている必要があるため\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n const element = node as Element;\r\n element.querySelectorAll('[data-bind]').forEach((e) => {\r\n assignParams(e, route.typedParams);\r\n });\r\n if (element.hasAttribute('data-bind')) {\r\n assignParams(element, route.typedParams);\r\n }\r\n element.querySelectorAll<LayoutOutlet>(config.tagNames.layoutOutlet).forEach((layoutOutlet) => {\r\n layoutOutlet.assignParams(route.typedParams);\r\n });\r\n if (element.tagName.toLowerCase() === config.tagNames.layoutOutlet) {\r\n (element as LayoutOutlet).assignParams(route.typedParams);\r\n }\r\n }\r\n if (nextSibling) {\r\n parentNode?.insertBefore(node, nextSibling);\r\n } else {\r\n parentNode?.appendChild(node);\r\n }\r\n }\r\n return true;\r\n}\r\n","import { IRoute, IRouteMatchResult, IRouter } from \"./components/types\";\r\nimport { hideRoute } from \"./hideRoute\";\r\nimport { showRoute } from \"./showRoute\";\r\nimport { IGuardCancel } from \"./types\";\r\n\r\nexport async function showRouteContent(\r\n routerNode: IRouter,\r\n matchResult: IRouteMatchResult,\r\n lastRoutes: IRoute[], \r\n): Promise<void> {\r\n // Hide previous routes\r\n const routesSet = new Set<IRoute>(matchResult.routes);\r\n for (const route of lastRoutes) {\r\n if (!routesSet.has(route)) {\r\n hideRoute(route);\r\n }\r\n }\r\n try {\r\n for (const route of matchResult.routes) {\r\n await route.guardCheck(matchResult);\r\n }\r\n } catch (e) {\r\n const err = e as Error;\r\n if (\"fallbackPath\" in err) {\r\n const guardCancel = err as IGuardCancel;\r\n console.warn(`Navigation cancelled: ${err.message}. Redirecting to ${guardCancel.fallbackPath}`);\r\n queueMicrotask(() => {\r\n routerNode.navigate(guardCancel.fallbackPath);\r\n });\r\n return;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n const lastRouteSet = new Set<IRoute>(lastRoutes);\r\n let force = false;\r\n for (const route of matchResult.routes) {\r\n if (!lastRouteSet.has(route) || route.shouldChange(matchResult.params) || force) {\r\n force = showRoute(route, matchResult);\r\n }\r\n }\r\n}\r\n","import { IOutlet, IRouter } from \"./components/types\";\r\nimport { config } from \"./config\";\r\nimport { matchRoutes } from \"./matchRoutes\";\r\nimport { raiseError } from \"./raiseError\";\r\nimport { showRouteContent } from \"./showRouteContent\";\r\n\r\nexport async function applyRoute(\r\n routerNode: IRouter, \r\n outlet: IOutlet, \r\n fullPath: string,\r\n lastPath: string\r\n): Promise<void> {\r\n const basename = routerNode.basename;\r\n let sliced = fullPath;\r\n if (basename !== \"\") {\r\n if (fullPath === basename) {\r\n sliced = \"\";\r\n } else if (fullPath.startsWith(basename + \"/\")) {\r\n sliced = fullPath.slice(basename.length);\r\n }\r\n }\r\n // when fullPath === basename (e.g. \"/app\"), treat it as root \"/\"\r\n const path = sliced === \"\" ? \"/\" : sliced;\r\n\r\n let matchResult = matchRoutes(routerNode, path);\r\n if (!matchResult) {\r\n if (routerNode.fallbackRoute) {\r\n matchResult = {\r\n routes: [routerNode.fallbackRoute],\r\n params: {},\r\n typedParams: {},\r\n path: path,\r\n lastPath: lastPath\r\n };\r\n } else {\r\n raiseError(`${config.tagNames.router} No route matched for path: ${path}`);\r\n }\r\n }\r\n matchResult.lastPath = lastPath;\r\n const lastRoutes = outlet.lastRoutes;\r\n await showRouteContent(routerNode, matchResult, lastRoutes);\r\n // if successful, update router and outlet state\r\n routerNode.path = path;\r\n outlet.lastRoutes = matchResult.routes;\r\n}\r\n","export type NavigationLike = {\r\n navigate?: (url: string) => void;\r\n addEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\r\n removeEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\r\n};\r\n\r\nexport function getNavigation(): NavigationLike | null {\r\n const nav = (window as any).navigation as NavigationLike | undefined;\r\n if (!nav) {\r\n return null;\r\n }\r\n if (typeof nav.addEventListener !== \"function\" || typeof nav.removeEventListener !== \"function\") {\r\n return null;\r\n }\r\n return nav;\r\n}\r\n","import { parse } from \"../parse.js\";\r\nimport { createOutlet, Outlet } from \"./Outlet.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IOutlet, IRoute, IRouter } from \"./types.js\";\r\nimport { applyRoute } from \"../applyRoute.js\";\r\nimport { getNavigation } from \"../Navigation.js\";\r\n\r\n/**\r\n * AppRoutes - Root component for @wcstack/router\r\n * \r\n * Container element that manages route definitions and navigation.\r\n */\r\nexport class Router extends HTMLElement implements IRouter {\r\n private static _instance: IRouter | null = null;\r\n private _outlet: IOutlet | null = null;\r\n private _template: HTMLTemplateElement | null = null;\r\n private _routeChildNodes: IRoute[] = [];\r\n private _basename: string = '';\r\n private _path: string = '';\r\n private _initialized: boolean = false;\r\n private _fallbackRoute: IRoute | null = null;\r\n private _listeningPopState: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n if (Router._instance) {\r\n raiseError(`${config.tagNames.router} can only be instantiated once.`);\r\n }\r\n Router._instance = this;\r\n }\r\n\r\n /**\r\n * Normalize a URL pathname to a route path.\r\n * - ensure leading slash\r\n * - collapse multiple slashes\r\n * - treat trailing file extensions (e.g. .html) as directory root\r\n * - remove trailing slash except root \"/\"\r\n */\r\n private _normalizePathname(_path: string): string {\r\n let path = _path || \"/\";\r\n if (!path.startsWith(\"/\")) path = \"/\" + path;\r\n path = path.replace(/\\/{2,}/g, \"/\");\r\n // e.g. \"/app/index.html\" -> \"/app\"\r\n const exts = config.basenameFileExtensions;\r\n if (exts.length > 0) {\r\n const extPattern = new RegExp(\r\n `\\\\/[^/]+(?:${exts.map(e => e.replace(/\\./g, '\\\\.')).join('|')})$`,\r\n 'i'\r\n );\r\n path = path.replace(extPattern, \"\");\r\n }\r\n if (path === \"\") path = \"/\";\r\n if (path.length > 1 && path.endsWith(\"/\")) path = path.slice(0, -1);\r\n return path;\r\n }\r\n\r\n /**\r\n * Normalize basename.\r\n * - \"\" or \"/\" -> \"\"\r\n * - \"/app/\" -> \"/app\"\r\n * - \"/app/index.html\" -> \"/app\"\r\n */\r\n private _normalizeBasename(_path: string): string {\r\n let path = _path || \"\";\r\n if (!path) return \"\";\r\n if (!path.startsWith(\"/\")) path = \"/\" + path;\r\n path = path.replace(/\\/{2,}/g, \"/\");\r\n const exts = config.basenameFileExtensions;\r\n if (exts.length > 0) {\r\n const extPattern = new RegExp(\r\n `\\\\/[^/]+(?:${exts.map(e => e.replace(/\\./g, '\\\\.')).join('|')})$`,\r\n 'i'\r\n );\r\n path = path.replace(extPattern, \"\");\r\n }\r\n if (path.length > 1 && path.endsWith(\"/\")) path = path.slice(0, -1);\r\n if (path === \"/\") return \"\";\r\n return path;\r\n }\r\n\r\n private _joinInternalPath(basename: string, to: string): string {\r\n const base = this._normalizeBasename(basename);\r\n // accept \"about\" as \"/about\"\r\n let path = to.startsWith(\"/\") ? to : \"/\" + to;\r\n path = this._normalizePathname(path);\r\n if (!base) return path;\r\n // keep \"/app/\" for root\r\n if (path === \"/\") return base + \"/\";\r\n return base + path;\r\n }\r\n\r\n private _notifyLocationChange(): void {\r\n // For environments without Navigation API (and for Link active-state updates)\r\n window.dispatchEvent(new CustomEvent(\"wcs:navigate\"));\r\n }\r\n\r\n private _getBasename(): string {\r\n const base = new URL(document.baseURI);\r\n let path = base.pathname || \"/\";\r\n if (path === \"/\") {\r\n return \"\";\r\n }\r\n return this._normalizeBasename(path);\r\n }\r\n\r\n static get instance(): IRouter {\r\n if (!Router._instance) {\r\n raiseError(`${config.tagNames.router} has not been instantiated.`);\r\n }\r\n return Router._instance;\r\n }\r\n\r\n static navigate(path: string): void {\r\n Router.instance.navigate(path);\r\n }\r\n\r\n get basename(): string {\r\n return this._basename;\r\n }\r\n\r\n private _getOutlet(): IOutlet {\r\n let outlet = document.querySelector<Outlet>(config.tagNames.outlet);\r\n if (!outlet) {\r\n outlet = createOutlet();\r\n document.body.appendChild(outlet);\r\n }\r\n return outlet;\r\n }\r\n\r\n private _getTemplate() {\r\n const template = this.querySelector(\"template\");\r\n return template;\r\n }\r\n \r\n get outlet(): IOutlet {\r\n if (!this._outlet) {\r\n raiseError(`${config.tagNames.router} has no outlet.`);\r\n }\r\n return this._outlet;\r\n }\r\n\r\n get template(): HTMLTemplateElement {\r\n if (!this._template) {\r\n raiseError(`${config.tagNames.router} has no template.`);\r\n }\r\n return this._template;\r\n }\r\n\r\n get routeChildNodes(): IRoute[] {\r\n return this._routeChildNodes;\r\n }\r\n\r\n get path(): string {\r\n return this._path;\r\n }\r\n /**\r\n * applyRoute 内で設定される値です。\r\n */\r\n set path(value: string) {\r\n this._path = value;\r\n }\r\n\r\n get fallbackRoute(): IRoute | null {\r\n return this._fallbackRoute;\r\n }\r\n /**\r\n * Routeのfallback属性がある場合にそのルートを設定します。\r\n */\r\n set fallbackRoute(value: IRoute | null) {\r\n this._fallbackRoute = value;\r\n }\r\n\r\n async navigate(path: string): Promise<void> {\r\n const fullPath = this._joinInternalPath(this._basename, path);\r\n const navigation = getNavigation();\r\n if (navigation?.navigate) {\r\n navigation.navigate(fullPath);\r\n } else {\r\n history.pushState(null, '', fullPath);\r\n await applyRoute(this, this.outlet, fullPath, this._path);\r\n this._notifyLocationChange();\r\n }\r\n }\r\n\r\n private _onNavigateFunc(navEvent: any) {\r\n if (\r\n !navEvent.canIntercept ||\r\n navEvent.hashChange ||\r\n navEvent.downloadRequest !== null\r\n ) {\r\n return;\r\n }\r\n const routesNode = this;\r\n navEvent.intercept({\r\n handler: async () => {\r\n const url = new URL(navEvent.destination.url);\r\n const fullPath = routesNode._normalizePathname(url.pathname);\r\n await applyRoute(routesNode, routesNode.outlet, fullPath, routesNode.path);\r\n },\r\n });\r\n }\r\n\r\n private _onNavigate = this._onNavigateFunc.bind(this);\r\n\r\n private _onPopState = async () => {\r\n // back/forward for environments without Navigation API\r\n const fullPath = this._normalizePathname(window.location.pathname);\r\n await applyRoute(this, this.outlet, fullPath, this._path);\r\n this._notifyLocationChange();\r\n };\r\n\r\n private async _initialize(): Promise<void> {\r\n this._initialized = true;\r\n this._basename = this._normalizeBasename(\r\n this.getAttribute(\"basename\") || this._getBasename() || \"\"\r\n );\r\n const hasBaseTag = document.querySelector('base[href]') !== null;\r\n const url = new URL(window.location.href);\r\n if (this._basename === \"\" && !hasBaseTag && url.pathname !== \"/\") {\r\n raiseError(`${config.tagNames.router} basename is empty, but current path is not \"/\".`);\r\n }\r\n\r\n this._outlet = this._getOutlet();\r\n this._outlet.routesNode = this;\r\n this._template = this._getTemplate();\r\n if (!this._template) {\r\n raiseError(`${config.tagNames.router} should have a <template> child element.`);\r\n }\r\n const fragment = await parse(this);\r\n this._outlet.rootNode.appendChild(fragment);\r\n if (this.routeChildNodes.length === 0) {\r\n raiseError(`${config.tagNames.router} has no route definitions.`);\r\n }\r\n\r\n const fullPath = this._normalizePathname(window.location.pathname);\r\n await applyRoute(this, this.outlet, fullPath, this._path);\r\n this._notifyLocationChange();\r\n\r\n }\r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n await this._initialize();\r\n }\r\n getNavigation()?.addEventListener(\"navigate\", this._onNavigate);\r\n // Fallback for browsers without Navigation API\r\n if (!getNavigation()?.addEventListener && !this._listeningPopState) {\r\n window.addEventListener(\"popstate\", this._onPopState);\r\n this._listeningPopState = true;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n getNavigation()?.removeEventListener(\"navigate\", this._onNavigate);\r\n if (this._listeningPopState) {\r\n window.removeEventListener(\"popstate\", this._onPopState);\r\n this._listeningPopState = false;\r\n }\r\n if (Router._instance === this) {\r\n Router._instance = null;\r\n }\r\n }\r\n}\r\n","import { config } from \"../config\";\r\nimport { getUUID } from \"../getUUID\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getNavigation } from \"../Navigation\";\r\nimport { Router } from \"./Router\";\r\nimport { ILink } from \"./types\";\r\n\r\nexport class Link extends HTMLElement implements ILink {\r\n static get observedAttributes(): string[] {\r\n return ['to'];\r\n }\r\n\r\n private _childNodeArray: Node[] = [];\r\n private _uuid: string = getUUID();\r\n private _path: string = \"\";\r\n private _router: Router | null = null;\r\n private _anchorElement: HTMLAnchorElement | null = null;\r\n private _initialized: boolean = false;\r\n private _onClick?: (e: MouseEvent) => void;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get uuid(): string {\r\n return this._uuid;\r\n }\r\n \r\n get router(): Router {\r\n if (this._router) {\r\n return this._router;\r\n }\r\n const router = document.querySelector<Router>(config.tagNames.router);\r\n if (router) {\r\n return (this._router = router);\r\n }\r\n raiseError(`${config.tagNames.link} is not connected to a router.`);\r\n }\r\n\r\n private _initialize() {\r\n this.style.display = \"none\";\r\n this._childNodeArray = Array.from(this.childNodes);\r\n this._path = this.getAttribute('to') || '';\r\n this._initialized = true;\r\n }\r\n\r\n private _normalizePathname(path: string): string {\r\n let p = path || \"/\";\r\n if (!p.startsWith(\"/\")) p = \"/\" + p;\r\n p = p.replace(/\\/{2,}/g, \"/\");\r\n if (p.length > 1 && p.endsWith(\"/\")) p = p.slice(0, -1);\r\n return p;\r\n }\r\n\r\n private _joinInternalPath(basename: string, to: string): string {\r\n const base = (basename || \"\").replace(/\\/{2,}/g, \"/\").replace(/\\/$/, \"\");\r\n const internal = to.startsWith(\"/\") ? to : \"/\" + to;\r\n const path = this._normalizePathname(internal);\r\n if (!base) return path;\r\n if (path === \"/\") return base + \"/\";\r\n return base + path;\r\n }\r\n\r\n private _setAnchorHref(anchor: HTMLAnchorElement,path: string) {\r\n if (path.startsWith('/')) {\r\n anchor.href = this._joinInternalPath(this.router.basename, path);\r\n } else {\r\n try {\r\n anchor.href = new URL(path).toString();\r\n } catch {\r\n raiseError(`[${config.tagNames.link}] Invalid URL in 'to' attribute: ${path}`);\r\n }\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialize();\r\n }\r\n const parentNode = this.parentNode;\r\n if (!parentNode) {\r\n // should not happen if connected\r\n return; \r\n }\r\n const nextSibling = this.nextSibling;\r\n const link = document.createElement('a');\r\n this._setAnchorHref(link, this._path);\r\n for(const childNode of this._childNodeArray) {\r\n link.appendChild(childNode);\r\n }\r\n if (nextSibling) {\r\n parentNode.insertBefore(link, nextSibling);\r\n } else {\r\n parentNode.appendChild(link);\r\n }\r\n this._anchorElement = link;\r\n\r\n // ロケーション変更を監視\r\n getNavigation()?.addEventListener('currententrychange', this._updateActiveState);\r\n window.addEventListener('wcs:navigate', this._updateActiveState as EventListener);\r\n window.addEventListener('popstate', this._updateActiveState as EventListener);\r\n\r\n // Navigation API が無い場合は、クリックで router.navigate にフォールバック\r\n if (this._path.startsWith('/') && !getNavigation()?.navigate) {\r\n this._onClick = async (e: MouseEvent) => {\r\n // only left-click without modifiers\r\n if (e.defaultPrevented) return;\r\n if (e.button !== 0) return;\r\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\r\n e.preventDefault();\r\n await this.router.navigate(this._path);\r\n this._updateActiveState();\r\n };\r\n link.addEventListener('click', this._onClick);\r\n }\r\n this._updateActiveState(); \r\n }\r\n\r\n disconnectedCallback() {\r\n getNavigation()?.removeEventListener('currententrychange', this._updateActiveState);\r\n window.removeEventListener('wcs:navigate', this._updateActiveState as EventListener);\r\n window.removeEventListener('popstate', this._updateActiveState as EventListener);\r\n if (this._anchorElement) {\r\n if (this._onClick) {\r\n this._anchorElement.removeEventListener('click', this._onClick);\r\n this._onClick = undefined;\r\n }\r\n this._anchorElement.remove();\r\n this._anchorElement = null;\r\n }\r\n for(const childNode of this._childNodeArray) {\r\n childNode.parentNode?.removeChild(childNode);\r\n }\r\n }\r\n\r\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\r\n if (name === 'to' && oldValue !== newValue) {\r\n this._path = newValue || '';\r\n if (this._anchorElement) {\r\n this._setAnchorHref(this._anchorElement, this._path);\r\n this._updateActiveState();\r\n }\r\n }\r\n }\r\n\r\n private _updateActiveState = () => {\r\n const currentPath = this._normalizePathname(new URL(window.location.href).pathname);\r\n const linkPath = this._normalizePathname(\r\n this._path.startsWith('/') ? this._joinInternalPath(this.router.basename, this._path) : this._path\r\n );\r\n \r\n if (this._anchorElement) {\r\n if (currentPath === linkPath) {\r\n this._anchorElement.classList.add('active');\r\n } else {\r\n this._anchorElement.classList.remove('active');\r\n }\r\n }\r\n };\r\n\r\n get anchorElement(): HTMLAnchorElement | null {\r\n return this._anchorElement;\r\n }\r\n}","import { raiseError } from \"../raiseError\";\r\n\r\n/**\r\n * グローバルHeadスタック\r\n * 最後に接続されたHeadが優先される\r\n */\r\nconst headStack: Head[] = [];\r\n\r\n/**\r\n * 初期の<head>内容を記憶(最初のHead接続時に保存)\r\n */\r\nconst initialHeadValues: Map<string, Element | null> = new Map();\r\nlet initialHeadCaptured = false;\r\n\r\nexport class Head extends HTMLElement {\r\n private _initialized: boolean = false;\r\n private _childElementArray: Element[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.style.display = 'none';\r\n }\r\n\r\n private _initialize(): void {\r\n if (this._initialized) {\r\n return;\r\n }\r\n this._initialized = true;\r\n this._childElementArray = Array.from(this.children);\r\n for (const child of this._childElementArray) {\r\n this.removeChild(child);\r\n }\r\n }\r\n\r\n connectedCallback(): void {\r\n this._initialize();\r\n \r\n // 初回のみ初期状態を保存\r\n if (!initialHeadCaptured) {\r\n this._captureInitialHead();\r\n initialHeadCaptured = true;\r\n }\r\n \r\n // スタックに追加\r\n headStack.push(this);\r\n \r\n // headを再適用\r\n this._reapplyHead();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n // スタックから削除\r\n const index = headStack.indexOf(this);\r\n if (index !== -1) {\r\n headStack.splice(index, 1);\r\n }\r\n \r\n // headを再適用(スタックが空なら初期状態に戻す)\r\n this._reapplyHead();\r\n }\r\n\r\n get childElementArray(): Element[] {\r\n if (!this._initialized) {\r\n raiseError('Head component is not initialized yet.');\r\n }\r\n return this._childElementArray;\r\n }\r\n\r\n /**\r\n * 要素の一意キーを生成\r\n */\r\n private _getKey(el: Element): string {\r\n const tag = el.tagName.toLowerCase();\r\n\r\n if (tag === 'title') {\r\n return 'title';\r\n }\r\n\r\n if (tag === 'meta') {\r\n const name = el.getAttribute('name') || '';\r\n const property = el.getAttribute('property') || '';\r\n const httpEquiv = el.getAttribute('http-equiv') || '';\r\n const charset = el.hasAttribute('charset') ? 'charset' : '';\r\n const media = el.getAttribute('media') || '';\r\n return `meta:${name}:${property}:${httpEquiv}:${charset}:${media}`;\r\n }\r\n\r\n if (tag === 'link') {\r\n const rel = el.getAttribute('rel') || '';\r\n const href = el.getAttribute('href') || '';\r\n const media = el.getAttribute('media') || '';\r\n return `link:${rel}:${href}:${media}`;\r\n }\r\n\r\n if (tag === 'base') {\r\n return 'base';\r\n }\r\n\r\n // script, style等はouterHTMLの先頭で識別(フォールバック)\r\n return `${tag}:${el.outerHTML.slice(0, 100)}`;\r\n }\r\n\r\n /**\r\n * head内で指定のキーに一致する要素を検索\r\n */\r\n private _findInHead(key: string): Element | null {\r\n const head = document.head;\r\n for (const el of Array.from(head.children)) {\r\n if (this._getKey(el) === key) {\r\n return el;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * 初期の<head>状態をキャプチャ\r\n * document.head内の全ての要素をスキャンして保存する\r\n */\r\n private _captureInitialHead(): void {\r\n const head = document.head;\r\n for (const child of Array.from(head.children)) {\r\n const key = this._getKey(child);\r\n if (!initialHeadValues.has(key)) {\r\n initialHeadValues.set(key, child.cloneNode(true) as Element);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * スタック全体からheadを再構築\r\n * 後のHeadが優先される(上書き)\r\n */\r\n private _reapplyHead(): void {\r\n // 全スタックのHeadが扱うキーを収集\r\n const allKeys = new Set<string>();\r\n for (const head of headStack) {\r\n for (const child of head._childElementArray) {\r\n allKeys.add(this._getKey(child));\r\n }\r\n }\r\n // 初期値にあるキーも追加\r\n for (const key of initialHeadValues.keys()) {\r\n allKeys.add(key);\r\n }\r\n \r\n // 現在のheadにある要素のキーも追加(管理下から外れたものを削除するため)\r\n for (const child of Array.from(document.head.children)) {\r\n allKeys.add(this._getKey(child));\r\n }\r\n\r\n // 各キーについて、最も優先度の高い値を決定\r\n for (const key of allKeys) {\r\n // スタックを逆順に見て、最初に見つかった値を使用\r\n let targetElement: Element | null = null;\r\n for (let i = headStack.length - 1; i >= 0; i--) {\r\n const head = headStack[i];\r\n for (const child of head._childElementArray) {\r\n if (this._getKey(child) === key) {\r\n targetElement = child.cloneNode(true) as Element;\r\n break;\r\n }\r\n }\r\n if (targetElement) break;\r\n }\r\n\r\n // スタックに該当がなければ初期値を使用\r\n if (!targetElement && initialHeadValues.has(key)) {\r\n const initial = initialHeadValues.get(key);\r\n // initialHeadValuesにはnullを保存しないため、has(key)がtrueならinitialは必ず存在しElementである\r\n targetElement = (initial as Element).cloneNode(true) as Element;\r\n }\r\n\r\n // headを更新\r\n const current = this._findInHead(key);\r\n if (targetElement) {\r\n if (current) {\r\n current.replaceWith(targetElement);\r\n } else {\r\n document.head.appendChild(targetElement);\r\n }\r\n } else {\r\n // 初期値もスタックにもない場合は削除\r\n current?.remove();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// テスト用にスタックをリセットする関数\r\nexport function _resetHeadStack(): void {\r\n headStack.length = 0;\r\n initialHeadValues.clear();\r\n initialHeadCaptured = false;\r\n}\r\n","import { Route } from './components/Route';\r\nimport { Layout } from './components/Layout';\r\nimport { Outlet } from './components/Outlet';\r\nimport { Router } from './components/Router';\r\nimport { LayoutOutlet } from './components/LayoutOutlet';\r\nimport { Link } from './components/Link';\r\nimport { Head } from './components/Head';\r\nimport { config } from './config';\r\n\r\nexport function registerComponents() {\r\n // Register custom element\r\n if (!customElements.get(config.tagNames.layout)) {\r\n customElements.define(config.tagNames.layout, Layout);\r\n }\r\n if (!customElements.get(config.tagNames.layoutOutlet)) {\r\n customElements.define(config.tagNames.layoutOutlet, LayoutOutlet);\r\n }\r\n if (!customElements.get(config.tagNames.outlet)) {\r\n customElements.define(config.tagNames.outlet, Outlet);\r\n }\r\n if (!customElements.get(config.tagNames.route)) {\r\n customElements.define(config.tagNames.route, Route);\r\n }\r\n if (!customElements.get(config.tagNames.router)) {\r\n customElements.define(config.tagNames.router, Router);\r\n }\r\n if (!customElements.get(config.tagNames.link)) {\r\n customElements.define(config.tagNames.link, Link);\r\n }\r\n if (!customElements.get(config.tagNames.head)) {\r\n customElements.define(config.tagNames.head, Head);\r\n }\r\n}","import { IWritableConfig } from \"./types\";\r\nimport { setConfig } from \"./config\";\r\nimport { registerComponents } from \"./registerComponents\";\r\n\r\n/**\r\n * Initialize the router with optional configuration.\r\n * This is the main entry point for setting up the router.\r\n * @param config - Optional partial configuration to override defaults\r\n */\r\nexport function bootstrapRouter(config?: Partial<IWritableConfig>): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.min.js","sources":["../src/config.ts","../src/getUUID.ts","../src/raiseError.ts","../src/GuardCancel.ts","../src/builtinParamTypes.ts","../src/components/Route.ts","../src/components/Layout.ts","../src/components/Outlet.ts","../src/assignParams.ts","../src/getCustomTagName.ts","../src/components/LayoutOutlet.ts","../src/parse.ts","../src/matchRoutes.ts","../src/testPath.ts","../src/hideRoute.ts","../src/showRoute.ts","../src/applyRoute.ts","../src/showRouteContent.ts","../src/Navigation.ts","../src/components/Router.ts","../src/components/Link.ts","../src/components/Head.ts","../src/registerComponents.ts","../src/bootstrapRouter.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["_config","tagNames","route","router","outlet","layout","layoutOutlet","link","head","enableShadowRoot","basenameFileExtensions","config","getUUID","crypto","randomUUID","replace","c","r","Math","random","toString","raiseError","message","Error","GuardCancel","fallbackPath","constructor","super","this","builtinParamTypes","int","typeName","pattern","parse","value","test","parseInt","float","parseFloat","bool","uuid","slug","isoDate","year","month","day","split","map","Number","date","Date","getFullYear","getMonth","getDate","any","weights","static","param","Route","HTMLElement","_name","_path","_routeParentNode","_routeChildNodes","_routerNode","_uuid","_placeHolder","document","createComment","_childNodeArray","_paramNames","_absoluteParamNames","_params","_typedParams","_weight","_absoluteWeight","_childIndex","_hasGuard","_guardHandler","_waitForSetGuardHandler","_resolveSetGuardHandler","_guardFallbackPath","_initialized","_isFallbackRoute","_segmentCount","_segmentInfos","_absoluteSegmentInfos","routeParentNode","routeChildNodes","routerNode","path","isRelative","startsWith","_checkParentNode","hasParentCallback","noParentCallback","absolutePath","parentPath","endsWith","placeHolder","childNodeArray","Array","from","childNodes","routes","concat","segmentInfos","absoluteSegmentInfos","params","typedParams","paramNames","names","info","paramName","push","absoluteParamNames","weight","type","absoluteWeight","childIndex","name","guardCheck","matchResult","toPath","fromPath","lastPath","shouldChange","newParams","key","guardHandler","initialize","hasAttribute","getAttribute","routeChildContainer","length","fallbackRoute","segmentText","isIndex","segments","idx","segment","RegExp","matchType","match","Object","keys","includes","substring","paramType","Promise","resolve","setAttribute","fullpath","segmentCount","count","absoluteSegmentCount","testAncestorNode","ancestorNode","currentNode","clearParams","cache","Map","Layout","_loadTemplateFromSource","source","response","fetch","ok","status","templateContent","text","set","error","_loadTemplateFromDocument","id","element","getElementById","HTMLTemplateElement","innerHTML","loadTemplate","layoutId","console","warn","template","createElement","has","get","_initialize","connectedCallback","Outlet","_routesNode","_lastRoutes","routesNode","rootNode","shadowRoot","lastRoutes","attachShadow","mode","bindTypeSet","Set","_assignParams","bindType","entries","props","states","assignParams","tagName","bindTypeText","customTagName","toLowerCase","isAttr","getCustomTagName","undefined","customElements","whenDefined","then","isConnected","catch","LayoutOutlet","_layout","_layoutChildNodes","appendChild","content","cloneNode","childNode","fragmentForTemplate","slotElementBySlotName","querySelectorAll","forEach","slotElement","slotName","fragmentBySlotName","fragmentForChildNodes","createDocumentFragment","Element","fragment","replaceWith","defaultSlot","e","createLayoutOutlet","_duplicateCheck","routesByPath","existingRoute","async","_parseNode","node","nodeType","Node","ELEMENT_NODE","appendNode","childFragment","cloneElement","importNode","upgrade","children","_matchRoutes","routeNode","normalizedPath","results","nextRoutes","testResult","catchAllFound","i","segIndex","segmentInfo","exec","remainingSegments","slice","join","finalResult","at","testPath","childRoute","hideRoute","parentNode","removeChild","showRoute","nextSibling","insertBefore","applyRoute","fullPath","basename","sliced","topLevelRoutes","rawSegments","filter","s","sort","a","b","lastRouteA","lastRouteB","diffSegmentCount","diffWeight","matchRoutes","routesSet","err","guardCancel","queueMicrotask","navigate","lastRouteSet","force","showRouteContent","getNavigation","nav","window","navigation","addEventListener","removeEventListener","Router","_outlet","_template","_basename","_fallbackRoute","_listeningPopState","_instance","_normalizePathname","exts","extPattern","_normalizeBasename","_joinInternalPath","to","base","_notifyLocationChange","dispatchEvent","CustomEvent","_getBasename","URL","baseURI","pathname","instance","_getOutlet","querySelector","body","_getTemplate","history","pushState","_onNavigateFunc","navEvent","canIntercept","hashChange","downloadRequest","intercept","handler","url","destination","_onNavigate","bind","_onPopState","location","hasBaseTag","href","disconnectedCallback","Link","observedAttributes","_router","_anchorElement","_onClick","style","display","p","internal","_setAnchorHref","anchor","_updateActiveState","defaultPrevented","button","metaKey","ctrlKey","shiftKey","altKey","preventDefault","remove","attributeChangedCallback","oldValue","newValue","currentPath","linkPath","classList","add","anchorElement","headStack","initialHeadValues","initialHeadCaptured","Head","_childElementArray","child","_captureInitialHead","_reapplyHead","index","indexOf","splice","childElementArray","_getKey","el","tag","outerHTML","_findInHead","allKeys","targetElement","current","registerComponents","define","bootstrapRouter","partialConfig","assign","isArray"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.min.js","sources":["../src/config.ts","../src/getUUID.ts","../src/raiseError.ts","../src/GuardCancel.ts","../src/builtinParamTypes.ts","../src/components/Route.ts","../src/components/Layout.ts","../src/components/Outlet.ts","../src/assignParams.ts","../src/getCustomTagName.ts","../src/components/LayoutOutlet.ts","../src/parse.ts","../src/matchRoutes.ts","../src/testPath.ts","../src/hideRoute.ts","../src/showRoute.ts","../src/applyRoute.ts","../src/showRouteContent.ts","../src/Navigation.ts","../src/components/Router.ts","../src/components/Link.ts","../src/components/Head.ts","../src/registerComponents.ts","../src/bootstrapRouter.ts"],"sourcesContent":["import { IConfig, IWritableConfig } from \"./types\";\r\n\r\ninterface IInternalConfig {\r\n tagNames: {\r\n route: string;\r\n router: string;\r\n outlet: string;\r\n layout: string;\r\n layoutOutlet: string;\r\n link: string;\r\n head: string;\r\n };\r\n enableShadowRoot: boolean;\r\n basenameFileExtensions: string[];\r\n}\r\n\r\nconst _config: IInternalConfig = {\r\n tagNames: {\r\n route: \"wcs-route\",\r\n router: \"wcs-router\",\r\n outlet: \"wcs-outlet\",\r\n layout: \"wcs-layout\",\r\n layoutOutlet: \"wcs-layout-outlet\",\r\n link: \"wcs-link\",\r\n head: \"wcs-head\"\r\n },\r\n enableShadowRoot: false,\r\n basenameFileExtensions: [\".html\"]\r\n};\r\n\r\nfunction deepFreeze<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n Object.freeze(obj);\r\n for (const key of Object.keys(obj)) {\r\n deepFreeze((obj as Record<string, unknown>)[key]);\r\n }\r\n return obj;\r\n}\r\n\r\nfunction deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") return obj;\r\n const clone: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = deepClone((obj as Record<string, unknown>)[key]);\r\n }\r\n return clone as T;\r\n}\r\n\r\nlet frozenConfig: IConfig | null = null;\r\n\r\n// 後方互換のため config もエクスポート(読み取り専用として使用)\r\nexport const config: IConfig = _config as IConfig;\r\n\r\nexport function getConfig(): IConfig {\r\n if (!frozenConfig) {\r\n frozenConfig = deepFreeze(deepClone(_config));\r\n }\r\n return frozenConfig;\r\n}\r\n\r\nexport function setConfig(partialConfig: IWritableConfig): void {\r\n if (partialConfig.tagNames) {\r\n Object.assign(_config.tagNames, partialConfig.tagNames);\r\n }\r\n if (typeof partialConfig.enableShadowRoot === \"boolean\") {\r\n _config.enableShadowRoot = partialConfig.enableShadowRoot;\r\n }\r\n if (Array.isArray(partialConfig.basenameFileExtensions)) {\r\n _config.basenameFileExtensions = partialConfig.basenameFileExtensions;\r\n }\r\n frozenConfig = null;\r\n}\r\n","\r\nexport function getUUID(): string {\r\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\r\n return crypto.randomUUID();\r\n }\r\n // Simple UUID generator\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (Math.random() * 16) | 0,\r\n v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}","\r\nexport function raiseError(message: string): never {\r\n throw new Error(`[@wcstack/router] ${message}`);\r\n}","import { IGuardCancel } from \"./types\";\r\n\r\nexport class GuardCancel extends Error implements IGuardCancel {\r\n fallbackPath: string;\r\n\r\n constructor(message: string, fallbackPath: string) {\r\n super(message);\r\n this.fallbackPath = fallbackPath;\r\n }\r\n}","import { BuiltinParamTypes, IParamTypeInfo } from \"./types\";\r\n\r\nexport const builtinParamTypes = {\r\n \"int\": {\r\n typeName: \"int\",\r\n pattern: /^-?\\d+$/,\r\n parse(value: string): number | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return parseInt(value, 10);\r\n }\r\n },\r\n\r\n \"float\": {\r\n typeName: \"float\",\r\n pattern: /^-?\\d+(?:\\.\\d+)?$/,\r\n parse(value: string): number | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return parseFloat(value);\r\n }\r\n },\r\n\r\n \"bool\": {\r\n typeName: \"bool\",\r\n pattern: /^(true|false|0|1)$/,\r\n parse(value: string): boolean | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value === \"true\" || value === \"1\";\r\n }\r\n },\r\n\r\n \"uuid\": {\r\n typeName: \"uuid\",\r\n 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,\r\n parse(value: string): string | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n },\r\n\r\n \"slug\": {\r\n typeName: \"slug\",\r\n pattern: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,\r\n parse(value: string): string | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n },\r\n\r\n \"isoDate\": {\r\n typeName: \"isoDate\",\r\n pattern: /^\\d{4}-\\d{2}-\\d{2}$/,\r\n parse(value: string): Date | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n const [year, month, day] = value.split(\"-\").map(Number);\r\n const date = new Date(year, month - 1, day);\r\n // 元の値と一致するか確認(補正されていないか)\r\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\r\n return undefined;\r\n }\r\n return date;\r\n }\r\n },\r\n\r\n \"any\": {\r\n typeName: \"any\",\r\n pattern: /^.+$/,\r\n parse(value: string): string | undefined {\r\n if (!this.pattern.test(value)) {\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n },\r\n} satisfies Record<BuiltinParamTypes, IParamTypeInfo<unknown>>;\r\n","import { getUUID } from \"../getUUID.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IRouteMatchResult, IRoute, IRouter, GuardHandler, SegmentType, ISegmentInfo } from \"./types.js\";\r\nimport { GuardCancel } from \"../GuardCancel.js\";\r\nimport { builtinParamTypes } from \"../builtinParamTypes.js\";\r\nimport { BuiltinParamTypes } from \"../types.js\";\r\n\r\nconst weights: Record<SegmentType, number> = {\r\n 'static': 2,\r\n 'param': 1,\r\n 'catch-all': 0\r\n};\r\n\r\nexport class Route extends HTMLElement implements IRoute {\r\n private _name: string = '';\r\n private _path: string = '';\r\n private _routeParentNode: IRoute | null = null;\r\n private _routeChildNodes: IRoute[] = [];\r\n private _routerNode: IRouter | null = null;\r\n private _uuid: string = getUUID();\r\n private _placeHolder: Comment = document.createComment(`@@route:${this._uuid}`);\r\n private _childNodeArray: Node[] | undefined;\r\n private _paramNames: string[] | undefined;\r\n private _absoluteParamNames: string[] | undefined;\r\n private _params: Record<string, string> = {};\r\n private _typedParams: Record<string, any> = {};\r\n private _weight: number | undefined;\r\n private _absoluteWeight: number | undefined;\r\n private _childIndex: number = 0;\r\n private _hasGuard: boolean = false;\r\n private _guardHandler: GuardHandler | null = null;\r\n private _waitForSetGuardHandler: Promise<void> | null = null;\r\n private _resolveSetGuardHandler: (() => void) | null = null;\r\n private _guardFallbackPath: string = '';\r\n private _initialized: boolean = false;\r\n private _isFallbackRoute: boolean = false;\r\n private _segmentCount: number | undefined;\r\n private _segmentInfos: ISegmentInfo[] = [];\r\n private _absoluteSegmentInfos: ISegmentInfo[] | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get routeParentNode(): IRoute | null {\r\n return this._routeParentNode;\r\n }\r\n\r\n get routeChildNodes(): IRoute[] {\r\n return this._routeChildNodes;\r\n }\r\n\r\n get routerNode(): IRouter {\r\n if (!this._routerNode) {\r\n raiseError(`${config.tagNames.route} has no routerNode.`);\r\n }\r\n return this._routerNode;\r\n }\r\n\r\n get path(): string {\r\n return this._path;\r\n }\r\n\r\n get isRelative(): boolean {\r\n return !this._path.startsWith('/');\r\n }\r\n\r\n private _checkParentNode<T>(\r\n hasParentCallback: (routeParentNode: IRoute) => T, \r\n noParentCallback: () => T\r\n ): T {\r\n // fallbackはルーター直下のみ許可されるため、相対パスチェックはスキップ\r\n if (!this._isFallbackRoute) {\r\n if (this.isRelative && !this._routeParentNode) {\r\n raiseError(`${config.tagNames.route} is relative but has no parent route.`);\r\n }\r\n if (!this.isRelative && this._routeParentNode) {\r\n raiseError(`${config.tagNames.route} is absolute but has a parent route.`);\r\n }\r\n }\r\n if (this.isRelative && this._routeParentNode) {\r\n return hasParentCallback(this._routeParentNode);\r\n } else {\r\n return noParentCallback();\r\n }\r\n }\r\n\r\n get absolutePath(): string {\r\n return this._checkParentNode<string>((routeParentNode) => {\r\n const parentPath = routeParentNode.absolutePath;\r\n return parentPath.endsWith('/')\r\n ? parentPath + this._path\r\n : parentPath + '/' + this._path;\r\n\r\n }, () => {\r\n return this._path;\r\n }\r\n );\r\n }\r\n\r\n get uuid(): string {\r\n return this._uuid;\r\n }\r\n\r\n get placeHolder(): Comment {\r\n return this._placeHolder;\r\n }\r\n\r\n get childNodeArray(): Node[] {\r\n if (typeof this._childNodeArray === 'undefined') {\r\n this._childNodeArray = Array.from(this.childNodes);\r\n }\r\n return this._childNodeArray;\r\n }\r\n\r\n get routes(): IRoute[] {\r\n if (this.routeParentNode) {\r\n return this.routeParentNode.routes.concat(this);\r\n } else {\r\n return [ this ];\r\n }\r\n }\r\n\r\n get segmentInfos(): ISegmentInfo[] {\r\n return this._segmentInfos;\r\n }\r\n\r\n // indexの場合、{ type: 'static', segmentText: '' }となる、indexが複数連続する場合もある\r\n get absoluteSegmentInfos(): ISegmentInfo[] {\r\n if (typeof this._absoluteSegmentInfos === 'undefined') {\r\n this._absoluteSegmentInfos = this._checkParentNode<ISegmentInfo[]>((routeParentNode) => {\r\n return [\r\n ...routeParentNode.absoluteSegmentInfos,\r\n ...this._segmentInfos\r\n ];\r\n }, () => {\r\n return [ ...this._segmentInfos ];\r\n });\r\n }\r\n return this._absoluteSegmentInfos;\r\n }\r\n\r\n get params(): Record<string, string> {\r\n return this._params;\r\n }\r\n\r\n get typedParams(): Record<string, any> {\r\n return this._typedParams;\r\n }\r\n\r\n get paramNames(): string[] {\r\n if (typeof this._paramNames === 'undefined') {\r\n const names: string[] = [];\r\n for (const info of this._segmentInfos) {\r\n if (info.paramName) {\r\n names.push(info.paramName);\r\n }\r\n }\r\n this._paramNames = names;\r\n }\r\n return this._paramNames;\r\n }\r\n\r\n get absoluteParamNames(): string[] {\r\n if (typeof this._absoluteParamNames === 'undefined') {\r\n this._absoluteParamNames = this._checkParentNode<string[]>((routeParentNode) => {\r\n return [\r\n ...routeParentNode.absoluteParamNames,\r\n ...this.paramNames\r\n ];\r\n }, () => {\r\n return [ ...this.paramNames ];\r\n });\r\n }\r\n return this._absoluteParamNames;\r\n }\r\n\r\n get weight(): number {\r\n if (typeof this._weight === 'undefined') {\r\n let weight = 0;\r\n for (const info of this._segmentInfos) {\r\n weight += weights[info.type];\r\n }\r\n this._weight = weight;\r\n }\r\n return this._weight;\r\n }\r\n\r\n get absoluteWeight(): number {\r\n if (typeof this._absoluteWeight === 'undefined') {\r\n this._absoluteWeight = this._checkParentNode<number>((routeParentNode) => {\r\n return routeParentNode.absoluteWeight + this.weight;\r\n }, () => {\r\n return this.weight;\r\n });\r\n }\r\n return this._absoluteWeight\r\n }\r\n\r\n get childIndex(): number {\r\n return this._childIndex;\r\n }\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n async guardCheck(matchResult: IRouteMatchResult): Promise<void> {\r\n if (this._hasGuard && this._waitForSetGuardHandler) {\r\n await this._waitForSetGuardHandler;\r\n }\r\n if (this._guardHandler) {\r\n const toPath = matchResult.path;\r\n const fromPath = matchResult.lastPath;\r\n const allowed = await this._guardHandler(toPath, fromPath);\r\n if (!allowed) {\r\n throw new GuardCancel('Navigation cancelled by guard.', this._guardFallbackPath);\r\n }\r\n }\r\n }\r\n\r\n shouldChange(newParams: Record<string, string>): boolean {\r\n for(const key of this.paramNames) {\r\n if (this.params[key] !== newParams[key]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get guardHandler(): GuardHandler {\r\n if (!this._guardHandler) {\r\n raiseError(`${config.tagNames.route} has no guardHandler.`);\r\n }\r\n return this._guardHandler!;\r\n }\r\n set guardHandler(value: GuardHandler) {\r\n this._resolveSetGuardHandler?.();\r\n this._guardHandler = value;\r\n }\r\n\r\n initialize(routerNode: IRouter, routeParentNode: IRoute | null): void {\r\n if (this._initialized) {\r\n return;\r\n }\r\n this._initialized = true;\r\n\r\n // 単独で影響のないものから設定していく\r\n if (this.hasAttribute('path')) {\r\n this._path = this.getAttribute('path') || '';\r\n } else if (this.hasAttribute('index')) {\r\n this._path = '';\r\n } else if (this.hasAttribute('fallback')) {\r\n this._path = '';\r\n this._isFallbackRoute = true;\r\n } else {\r\n raiseError(`${config.tagNames.route} should have a \"path\" or \"index\" attribute.`);\r\n }\r\n this._name = this.getAttribute('name') || '';\r\n\r\n this._routerNode = routerNode;\r\n this._routeParentNode = routeParentNode;\r\n const routeChildContainer = routeParentNode || routerNode;\r\n routeChildContainer.routeChildNodes.push(this);\r\n this._childIndex = routeChildContainer.routeChildNodes.length - 1;\r\n\r\n if (this._isFallbackRoute) {\r\n if (routeParentNode) {\r\n raiseError(`${config.tagNames.route} with fallback attribute must be a direct child of ${config.tagNames.router}.`);\r\n }\r\n if (routerNode.fallbackRoute) {\r\n raiseError(`${config.tagNames.router} can have only one fallback route.`);\r\n }\r\n routerNode.fallbackRoute = this;\r\n }\r\n\r\n // index属性の場合は特別扱い(セグメントを消費しない)\r\n if (this.hasAttribute('index')) {\r\n this._segmentInfos.push({\r\n type: 'static',\r\n segmentText: '',\r\n paramName: null,\r\n pattern: /^$/,\r\n isIndex: true\r\n });\r\n }\r\n\r\n const segments = this._path.split('/');\r\n for (let idx = 0; idx < segments.length; idx++) {\r\n const segment = segments[idx];\r\n // 末尾の空セグメントはスキップ(/parent/ のような場合)\r\n if (segment === '' && idx === segments.length - 1 && idx > 0) {\r\n continue;\r\n }\r\n if (segment === '*') {\r\n this._segmentInfos.push({\r\n type: 'catch-all',\r\n segmentText: segment,\r\n paramName: '*',\r\n pattern: new RegExp('^(.*)$')\r\n });\r\n // Catch-all: matches remaining path segments\r\n break; // Ignore subsequent segments\r\n } else if (segment.startsWith(':')) {\r\n const matchType = segment.match(/^:([^()]+)(\\(([^)]+)\\))?$/);\r\n let paramName: string;\r\n let typeName: BuiltinParamTypes = 'any';\r\n if (matchType) {\r\n paramName = matchType[1];\r\n if (matchType[3] && Object.keys(builtinParamTypes).includes(matchType[3])) {\r\n typeName = matchType[3] as BuiltinParamTypes;\r\n }\r\n } else {\r\n paramName = segment.substring(1);\r\n }\r\n \r\n this._segmentInfos.push({\r\n type: 'param',\r\n segmentText: segment,\r\n paramName: paramName,\r\n pattern: new RegExp('^([^\\\\/]+)$'),\r\n paramType: typeName\r\n });\r\n } else if (segment !== '' || !this.hasAttribute('index')) {\r\n // 空セグメントはindex以外の場合のみ追加(絶対パスの先頭 '' など)\r\n this._segmentInfos.push({\r\n type: 'static',\r\n segmentText: segment,\r\n paramName: null,\r\n pattern: new RegExp(`^${segment}$`)\r\n });\r\n }\r\n }\r\n this._hasGuard = this.hasAttribute('guard');\r\n if (this._hasGuard) {\r\n this._guardFallbackPath = this.getAttribute('guard') || '/';\r\n this._waitForSetGuardHandler = new Promise((resolve) => {\r\n this._resolveSetGuardHandler = resolve;\r\n });\r\n }\r\n\r\n this.setAttribute('fullpath', this.absolutePath);\r\n }\r\n\r\n get fullpath(): string {\r\n return this.absolutePath;\r\n }\r\n\r\n get segmentCount(): number {\r\n if (typeof this._segmentCount === 'undefined') {\r\n let count = 0;\r\n for (const info of this._segmentInfos) {\r\n if (info.type !== 'catch-all') {\r\n count++;\r\n }\r\n }\r\n this._segmentCount = this._path === \"\" ? 0 : count;\r\n }\r\n return this._segmentCount;\r\n }\r\n\r\n get absoluteSegmentCount(): number {\r\n return this._checkParentNode<number>((routeParentNode) => {\r\n return routeParentNode.absoluteSegmentCount + this.segmentCount;\r\n }, () => {\r\n return this.segmentCount;\r\n });\r\n }\r\n\r\n testAncestorNode(ancestorNode: IRoute): boolean {\r\n let currentNode: IRoute | null = this._routeParentNode;\r\n while(currentNode) {\r\n if (currentNode === ancestorNode) {\r\n return true;\r\n }\r\n currentNode = currentNode.routeParentNode;\r\n }\r\n return false;\r\n }\r\n\r\n clearParams(): void {\r\n this._params = {};\r\n this._typedParams = {};\r\n }\r\n}\r\n","import { getUUID } from \"../getUUID.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { ILayout } from \"./types.js\";\r\n\r\nconst cache = new Map<string, string>();\r\n\r\nexport class Layout extends HTMLElement implements ILayout {\r\n private _uuid: string = getUUID();\r\n private _initialized: boolean = false;\r\n constructor() {\r\n super();\r\n }\r\n\r\n private async _loadTemplateFromSource(source: string): Promise<string | null> {\r\n try {\r\n const response = await fetch(source);\r\n if (!response.ok) {\r\n raiseError(`${config.tagNames.layout} failed to fetch layout from source: ${source}, status: ${response.status}`);\r\n }\r\n const templateContent = await response.text();\r\n cache.set(source, templateContent);\r\n return templateContent;\r\n } catch (error) {\r\n raiseError(`${config.tagNames.layout} failed to load layout from source: ${source}, error: ${error}`);\r\n }\r\n }\r\n\r\n private _loadTemplateFromDocument(id: string): string | null {\r\n const element = document.getElementById(`${id}`) as HTMLElement | null;\r\n if (element) {\r\n if (element instanceof HTMLTemplateElement) {\r\n return element.innerHTML;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n async loadTemplate(): Promise<HTMLTemplateElement> {\r\n const source = this.getAttribute('src');\r\n const layoutId = this.getAttribute('layout');\r\n if (source && layoutId) {\r\n console.warn(`${config.tagNames.layout} have both \"src\" and \"layout\" attributes.`);\r\n }\r\n const template = document.createElement('template');\r\n if (source) {\r\n if (cache.has(source)) {\r\n template.innerHTML = cache.get(source) || '';\r\n } else {\r\n template.innerHTML = await this._loadTemplateFromSource(source) || '';\r\n cache.set(source, template.innerHTML);\r\n }\r\n } else if (layoutId) {\r\n const templateContent = this._loadTemplateFromDocument(layoutId);\r\n if (templateContent) {\r\n template.innerHTML = templateContent;\r\n } else {\r\n console.warn(`${config.tagNames.layout} could not find template with id \"${layoutId}\".`);\r\n }\r\n }\r\n return template;\r\n }\r\n\r\n get uuid(): string {\r\n return this._uuid;\r\n }\r\n\r\n get enableShadowRoot(): boolean {\r\n if (this.hasAttribute('enable-shadow-root')) {\r\n return true;\r\n } else if (this.hasAttribute('disable-shadow-root')) {\r\n return false;\r\n }\r\n return config.enableShadowRoot;\r\n }\r\n\r\n get name(): string {\r\n // Layout 要素が DOM に挿入されないケース(parseで置換)でも name を取れるようにする\r\n return this.getAttribute('name') || '';\r\n }\r\n\r\n private _initialize() {\r\n this._initialized = true;\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialize();\r\n }\r\n }\r\n}\r\n","import { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IOutlet, IRoute, IRouter } from \"./types.js\";\r\n\r\nexport class Outlet extends HTMLElement implements IOutlet {\r\n private _routesNode: IRouter | null = null;\r\n private _lastRoutes: IRoute[] = [];\r\n private _initialized: boolean = false;\r\n constructor() {\r\n super();\r\n }\r\n\r\n get routesNode(): IRouter {\r\n if (!this._routesNode) {\r\n raiseError(`${config.tagNames.outlet} has no routesNode.`);\r\n }\r\n return this._routesNode;\r\n }\r\n set routesNode(value: IRouter) {\r\n this._routesNode = value;\r\n }\r\n\r\n get rootNode(): HTMLElement | ShadowRoot {\r\n if (this.shadowRoot) {\r\n return this.shadowRoot;\r\n }\r\n return this;\r\n }\r\n\r\n get lastRoutes(): IRoute[] {\r\n return this._lastRoutes;\r\n }\r\n set lastRoutes(value: IRoute[]) {\r\n this._lastRoutes = [ ...value ];\r\n }\r\n\r\n private _initialize() {\r\n if (config.enableShadowRoot) {\r\n this.attachShadow({ mode: 'open' });\r\n }\r\n this._initialized = true;\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialize();\r\n }\r\n }\r\n}\r\n\r\nexport function createOutlet(): Outlet {\r\n return document.createElement(config.tagNames.outlet) as Outlet;\r\n}\r\n","import { BindType } from \"./components/types\";\r\nimport { getCustomTagName } from \"./getCustomTagName\";\r\nimport { raiseError } from \"./raiseError\";\r\n\r\nconst bindTypeSet: Set<BindType> = new Set([ \"props\", \"states\", \"attr\", \"\" ]);\r\n\r\nfunction _assignParams(element: Element, params: Record<string, any>, bindType: BindType) {\r\n for(const [key, value] of Object.entries(params)) {\r\n switch(bindType) {\r\n case \"props\":\r\n (element as any).props = {\r\n ...(element as any).props,\r\n [key]: value\r\n };\r\n break;\r\n case \"states\":\r\n (element as any).states = {\r\n ...(element as any).states,\r\n [key]: value\r\n };\r\n break;\r\n case \"attr\":\r\n element.setAttribute(key, value);\r\n break;\r\n case \"\":\r\n (element as any)[key] = value;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport function assignParams(element: Element, params: Record<string, any>) {\r\n if (!element.hasAttribute('data-bind')) {\r\n raiseError(`${element.tagName} has no 'data-bind' attribute.`);\r\n }\r\n const bindTypeText = element.getAttribute('data-bind') || '';\r\n if (!bindTypeSet.has(bindTypeText as BindType)) {\r\n raiseError(`${element.tagName} has invalid 'data-bind' attribute: ${bindTypeText}`);\r\n }\r\n const bindType = bindTypeText as BindType;\r\n const customTagName = getCustomTagName(element);\r\n if (customTagName && customElements.get(customTagName) === undefined) {\r\n customElements.whenDefined(customTagName).then(() => {\r\n if (element.isConnected) {\r\n // 要素が削除されていない場合のみ割り当てを行う\r\n _assignParams(element, params, bindType);\r\n }\r\n }).catch(() => {\r\n raiseError(`Failed to define custom element: ${customTagName}`);\r\n });\r\n } else {\r\n _assignParams(element, params, bindType);\r\n }\r\n}","\r\nexport function getCustomTagName(element: Element): string | null {\r\n const tagName = element.tagName.toLowerCase();\r\n if (tagName.includes(\"-\")) {\r\n return tagName;\r\n }\r\n const isAttr = element.getAttribute(\"is\");\r\n if (isAttr && isAttr.includes(\"-\")) {\r\n return isAttr;\r\n }\r\n return null;\r\n}","import { assignParams } from \"../assignParams.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { ILayout, ILayoutOutlet } from \"./types.js\";\r\n\r\nexport class LayoutOutlet extends HTMLElement implements ILayoutOutlet {\r\n private _layout: (ILayout & Pick<Element,'childNodes'>) | null = null;\r\n private _initialized: boolean = false;\r\n private _layoutChildNodes: Node[] = [];\r\n constructor() {\r\n super();\r\n }\r\n\r\n get layout(): ILayout {\r\n if (!this._layout) {\r\n raiseError(`${config.tagNames.layoutOutlet} has no layout.`);\r\n }\r\n return this._layout;\r\n }\r\n set layout(value: ILayout) {\r\n this._layout = value;\r\n this.setAttribute('name', value.name);\r\n }\r\n \r\n get name(): string {\r\n return this.layout.name;\r\n }\r\n\r\n private async _initialize(): Promise<void> {\r\n this._initialized = true;\r\n if (this.layout.enableShadowRoot) {\r\n this.attachShadow({ mode: 'open' });\r\n }\r\n const template = await this.layout.loadTemplate();\r\n if (this.shadowRoot) {\r\n this.shadowRoot.appendChild(template.content.cloneNode(true));\r\n for(const childNode of Array.from(this.layout.childNodes)) {\r\n this._layoutChildNodes.push(childNode);\r\n this.appendChild(childNode);\r\n }\r\n } else {\r\n const fragmentForTemplate = template.content.cloneNode(true) as DocumentFragment;\r\n const slotElementBySlotName: Map<string, Element> = new Map();\r\n fragmentForTemplate.querySelectorAll('slot').forEach((slotElement) => {\r\n const slotName = slotElement.getAttribute('name') || '';\r\n if (!slotElementBySlotName.has(slotName)) {\r\n slotElementBySlotName.set(slotName, slotElement);\r\n } else {\r\n console.warn(`${config.tagNames.layoutOutlet} duplicate slot name \"${slotName}\" in layout template.`);\r\n }\r\n });\r\n\r\n const fragmentBySlotName: Map<string, DocumentFragment> = new Map();\r\n const fragmentForChildNodes = document.createDocumentFragment();\r\n for(const childNode of Array.from(this.layout.childNodes)) {\r\n this._layoutChildNodes.push(childNode);\r\n if (childNode instanceof Element) {\r\n const slotName = childNode.getAttribute('slot') || '';\r\n if (slotName.length > 0 && slotElementBySlotName.has(slotName)) {\r\n if (!fragmentBySlotName.has(slotName)) {\r\n fragmentBySlotName.set(slotName, document.createDocumentFragment());\r\n }\r\n fragmentBySlotName.get(slotName)?.appendChild(childNode);\r\n continue;\r\n }\r\n }\r\n fragmentForChildNodes.appendChild(childNode);\r\n }\r\n for(const [slotName, slotElement] of slotElementBySlotName) {\r\n const fragment = fragmentBySlotName.get(slotName);\r\n if (fragment) {\r\n slotElement.replaceWith(fragment);\r\n }\r\n }\r\n const defaultSlot = slotElementBySlotName.get('');\r\n if (defaultSlot) {\r\n defaultSlot.replaceWith(fragmentForChildNodes);\r\n }\r\n\r\n this.appendChild(fragmentForTemplate);\r\n }\r\n } \r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n await this._initialize();\r\n }\r\n }\r\n\r\n assignParams(params: Record<string, any>): void {\r\n for(const childNode of this._layoutChildNodes) {\r\n if (childNode instanceof Element) {\r\n childNode.querySelectorAll('[data-bind]').forEach((e) => {\r\n // 子要素にパラメータを割り当て\r\n assignParams(e, params);\r\n });\r\n if (childNode.hasAttribute('data-bind')) {\r\n // 子要素にパラメータを割り当て\r\n assignParams(childNode, params);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function createLayoutOutlet(): LayoutOutlet {\r\n return document.createElement(config.tagNames.layoutOutlet) as LayoutOutlet;\r\n}","import { ILayout, IRoute, IRouter } from \"./components/types.js\";\r\nimport { Layout } from \"./components/Layout.js\";\r\nimport { createLayoutOutlet } from \"./components/LayoutOutlet.js\";\r\nimport { Route } from \"./components/Route.js\";\r\nimport { config } from \"./config.js\";\r\n\r\n\r\nfunction _duplicateCheck(routesByPath: Map<string, IRoute[]>, route: IRoute): void {\r\n let routes = routesByPath.get(route.absolutePath);\r\n if (!routes) {\r\n routes = [];\r\n }\r\n for(const existingRoute of routes) {\r\n if (!route.testAncestorNode(existingRoute)) {\r\n console.warn(`Duplicate route path detected: '${route.absolutePath}' (defined as '${route.path}')`);\r\n break;\r\n }\r\n }\r\n routes.push(route);\r\n if (routes.length === 1) {\r\n routesByPath.set(route.absolutePath, routes);\r\n }\r\n}\r\n\r\nasync function _parseNode(\r\n routerNode: IRouter, \r\n node: Node, \r\n routes: IRoute[], \r\n map: Map<string, IRoute | ILayout>,\r\n routesByPath: Map<string, IRoute[]>\r\n): Promise<DocumentFragment> {\r\n const routeParentNode: IRoute | null = routes.length > 0 ? routes[routes.length - 1] : null;\r\n const fragment = document.createDocumentFragment();\r\n const childNodes = Array.from(node.childNodes);\r\n for(const childNode of childNodes) {\r\n if (childNode.nodeType === Node.ELEMENT_NODE) {\r\n let appendNode = childNode\r\n let element = childNode as HTMLElement;\r\n const tagName = element.tagName.toLowerCase();\r\n if (tagName === config.tagNames.route) {\r\n const childFragment = document.createDocumentFragment();\r\n // Move child nodes to fragment to avoid duplication of\r\n for(const childNode of Array.from(element.childNodes)) {\r\n childFragment.appendChild(childNode);\r\n }\r\n const cloneElement = document.importNode<Route>(element as Route, true);\r\n customElements.upgrade(cloneElement);\r\n cloneElement.appendChild(childFragment);\r\n const route = cloneElement;\r\n route.initialize(routerNode, routeParentNode);\r\n _duplicateCheck(routesByPath, route);\r\n routes.push(route);\r\n map.set(route.uuid, route);\r\n appendNode = route.placeHolder;\r\n element = route;\r\n } else if (tagName === config.tagNames.layout) {\r\n const childFragment = document.createDocumentFragment();\r\n // Move child nodes to fragment to avoid duplication of\r\n for(const childNode of Array.from(element.childNodes)) {\r\n childFragment.appendChild(childNode);\r\n }\r\n const cloneElement = document.importNode(element, true);\r\n customElements.upgrade(cloneElement);\r\n cloneElement.appendChild(childFragment);\r\n const layout = cloneElement;\r\n const layoutOutlet = createLayoutOutlet();\r\n layoutOutlet.layout = layout as Layout;\r\n appendNode = layoutOutlet;\r\n element = cloneElement;\r\n }\r\n const children = await _parseNode(routerNode, element, routes, map, routesByPath);\r\n element.innerHTML = \"\";\r\n element.appendChild(children);\r\n fragment.appendChild(appendNode);\r\n } else {\r\n fragment.appendChild(childNode);\r\n }\r\n }\r\n return fragment;\r\n}\r\n\r\nexport async function parse(routerNode: IRouter): Promise<DocumentFragment> {\r\n const map: Map<string, IRoute | ILayout> = new Map();\r\n const routesByPath: Map<string, IRoute[]> = new Map();\r\n const fr = await _parseNode(routerNode, routerNode.template.content, [], map, routesByPath);\r\n return fr;\r\n}","import { IRoute, IRouteMatchResult, IRouter } from \"./components/types.js\";\r\nimport { testPath } from \"./testPath.js\";\r\n\r\nfunction _matchRoutes(\r\n routerNode: IRouter, \r\n routeNode: IRoute, \r\n routes: IRoute[], \r\n normalizedPath: string,\r\n segments: string[],\r\n results: IRouteMatchResult[]\r\n): void {\r\n const nextRoutes = routes.concat(routeNode);\r\n const matchResult = testPath(routeNode, normalizedPath, segments);\r\n if (matchResult) {\r\n results.push(matchResult);\r\n }\r\n for(const childRoute of routeNode.routeChildNodes) {\r\n _matchRoutes(routerNode, childRoute, nextRoutes, normalizedPath, segments, results);\r\n }\r\n}\r\n\r\nexport function matchRoutes(routerNode: IRouter, normalizedPath: string): IRouteMatchResult | null {\r\n const routes: IRoute[] = [];\r\n const topLevelRoutes = routerNode.routeChildNodes;\r\n const results: IRouteMatchResult[] = [];\r\n // セグメント配列を作成(先頭の/は除去せずにそのまま分割)\r\n // '/' => ['', ''] → filter → ['']\r\n // '/home' => ['', 'home'] → filter → ['home']\r\n // '/home/about' => ['', 'home', 'about'] → filter → ['home', 'about']\r\n // '' => ['']\r\n const rawSegments = normalizedPath.split('/');\r\n // 先頭の空セグメント(絶対パスの/)と末尾の空セグメント(/で終わるパス)を除去\r\n const segments = rawSegments.filter((s, i) => {\r\n if (i === 0 && s === '') return false; // 先頭の空セグメントをスキップ\r\n if (i === rawSegments.length - 1 && s === '' && rawSegments.length > 1) return false; // 末尾の空セグメントをスキップ\r\n return true;\r\n });\r\n for (const route of topLevelRoutes) {\r\n _matchRoutes(routerNode, route, routes, normalizedPath, segments, results);\r\n }\r\n results.sort((a, b) => {\r\n const lastRouteA = a.routes.at(-1)!;\r\n const lastRouteB = b.routes.at(-1)!;\r\n const diffSegmentCount = lastRouteA.absoluteSegmentCount - lastRouteB.absoluteSegmentCount;\r\n if (diffSegmentCount !== 0) {\r\n return -diffSegmentCount;\r\n }\r\n const diffWeight = lastRouteA.absoluteWeight - lastRouteB.absoluteWeight;\r\n if (diffWeight !== 0) {\r\n return -diffWeight;\r\n }\r\n const diffIndex = lastRouteA.childIndex - lastRouteB.childIndex;\r\n return diffIndex;\r\n });\r\n if (results.length > 0) {\r\n return results[0];\r\n }\r\n return null;\r\n}","import { builtinParamTypes } from \"./builtinParamTypes\";\r\nimport { IRoute, IRouteMatchResult } from \"./components/types\";\r\n\r\nexport function testPath(route: IRoute, path: string, segments: string[]): IRouteMatchResult | null {\r\n const params: Record<string, string> = {};\r\n const typedParams: Record<string, any> = {};\r\n let testResult = true;\r\n let catchAllFound = false;\r\n let i = 0, segIndex = 0;\r\n while (i < route.absoluteSegmentInfos.length) {\r\n const segmentInfo = route.absoluteSegmentInfos[i];\r\n // index属性のルートはセグメントを消費しないのでスキップ\r\n if (segmentInfo.isIndex) {\r\n i++;\r\n continue;\r\n }\r\n // 先頭の空セグメント(絶対パスの /)はsegmentsから除外されているのでスキップ\r\n if (i === 0 && segmentInfo.segmentText === '' && segmentInfo.type === 'static') {\r\n i++;\r\n continue;\r\n }\r\n const segment = segments[segIndex];\r\n if (segment === undefined) {\r\n // セグメントが足りない\r\n testResult = false;\r\n break;\r\n }\r\n let match: boolean = false;\r\n if (segmentInfo.type === \"param\") {\r\n const paramType = segmentInfo.paramType || 'any';\r\n const builtinParamType = builtinParamTypes[paramType];\r\n const value = builtinParamType.parse(segment);\r\n if (typeof value !== 'undefined') {\r\n if (segmentInfo.paramName) {\r\n params[segmentInfo.paramName] = segment;\r\n typedParams[segmentInfo.paramName] = value;\r\n }\r\n match = true;\r\n }\r\n } else {\r\n match = segmentInfo.pattern.exec(segment) !== null;\r\n }\r\n if (match) {\r\n if (segmentInfo.type === 'catch-all') {\r\n // Catch-all: match remaining segments\r\n const remainingSegments = segments.slice(segIndex).join('/');\r\n params['*'] = remainingSegments;\r\n typedParams['*'] = remainingSegments;\r\n catchAllFound = true;\r\n break; // No more segments to process\r\n }\r\n } else {\r\n testResult = false;\r\n break; \r\n }\r\n i++;\r\n segIndex++;\r\n }\r\n let finalResult = false;\r\n if (testResult) {\r\n if (catchAllFound) {\r\n // catch-all は残り全部マッチ済み\r\n finalResult = true;\r\n } else if (i === route.absoluteSegmentInfos.length && segIndex === segments.length) {\r\n // 全セグメントが消費された\r\n finalResult = true;\r\n } else if (i === route.absoluteSegmentInfos.length && segIndex === segments.length - 1 && segments.at(-1) === '') {\r\n // 末尾スラッシュ対応: /users/ -> ['', 'users', '']\r\n finalResult = true;\r\n }\r\n }\r\n \r\n if (finalResult) {\r\n return {\r\n path: path,\r\n routes: route.routes,\r\n params: params,\r\n typedParams: typedParams,\r\n lastPath: \"\"\r\n };\r\n }\r\n return null;\r\n}","import { IRoute } from \"./components/types\";\r\n\r\nexport function hideRoute(route: IRoute) {\r\n route.clearParams();\r\n for(const node of route.childNodeArray) {\r\n node.parentNode?.removeChild(node);\r\n }\r\n}\r\n","import { assignParams } from \"./assignParams\";\r\nimport { LayoutOutlet } from \"./components/LayoutOutlet\";\r\nimport { IRoute, IRouteMatchResult } from \"./components/types\";\r\nimport { config } from \"./config\";\r\n\r\nexport function showRoute(route: IRoute, matchResult: IRouteMatchResult): boolean {\r\n route.clearParams();\r\n for(const key of route.paramNames) {\r\n route.params[key] = matchResult.params[key];\r\n route.typedParams[key] = matchResult.typedParams[key];\r\n }\r\n const parentNode = route.placeHolder.parentNode;\r\n const nextSibling = route.placeHolder.nextSibling;\r\n for (const node of route.childNodeArray) {\r\n // connectedCallbackが呼ばれる前に、プロパティにパラメータを割り当てる\r\n // connectedCallbackを実行するときにパラメータはすでに設定されている必要があるため\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n const element = node as Element;\r\n element.querySelectorAll('[data-bind]').forEach((e) => {\r\n assignParams(e, route.typedParams);\r\n });\r\n if (element.hasAttribute('data-bind')) {\r\n assignParams(element, route.typedParams);\r\n }\r\n element.querySelectorAll<LayoutOutlet>(config.tagNames.layoutOutlet).forEach((layoutOutlet) => {\r\n layoutOutlet.assignParams(route.typedParams);\r\n });\r\n if (element.tagName.toLowerCase() === config.tagNames.layoutOutlet) {\r\n (element as LayoutOutlet).assignParams(route.typedParams);\r\n }\r\n }\r\n if (nextSibling) {\r\n parentNode?.insertBefore(node, nextSibling);\r\n } else {\r\n parentNode?.appendChild(node);\r\n }\r\n }\r\n return true;\r\n}\r\n","import { IOutlet, IRouter } from \"./components/types\";\r\nimport { config } from \"./config\";\r\nimport { matchRoutes } from \"./matchRoutes\";\r\nimport { raiseError } from \"./raiseError\";\r\nimport { showRouteContent } from \"./showRouteContent\";\r\n\r\nexport async function applyRoute(\r\n routerNode: IRouter, \r\n outlet: IOutlet, \r\n fullPath: string,\r\n lastPath: string\r\n): Promise<void> {\r\n const basename = routerNode.basename;\r\n let sliced = fullPath;\r\n if (basename !== \"\") {\r\n if (fullPath === basename) {\r\n sliced = \"\";\r\n } else if (fullPath.startsWith(basename + \"/\")) {\r\n sliced = fullPath.slice(basename.length);\r\n }\r\n }\r\n // when fullPath === basename (e.g. \"/app\"), treat it as root \"/\"\r\n const path = sliced === \"\" ? \"/\" : sliced;\r\n\r\n let matchResult = matchRoutes(routerNode, path);\r\n if (!matchResult) {\r\n if (routerNode.fallbackRoute) {\r\n matchResult = {\r\n routes: [routerNode.fallbackRoute],\r\n params: {},\r\n typedParams: {},\r\n path: path,\r\n lastPath: lastPath\r\n };\r\n } else {\r\n raiseError(`${config.tagNames.router} No route matched for path: ${path}`);\r\n }\r\n }\r\n matchResult.lastPath = lastPath;\r\n const lastRoutes = outlet.lastRoutes;\r\n await showRouteContent(routerNode, matchResult, lastRoutes);\r\n // if successful, update router and outlet state\r\n routerNode.path = path;\r\n outlet.lastRoutes = matchResult.routes;\r\n}\r\n","import { IRoute, IRouteMatchResult, IRouter } from \"./components/types\";\r\nimport { hideRoute } from \"./hideRoute\";\r\nimport { showRoute } from \"./showRoute\";\r\nimport { IGuardCancel } from \"./types\";\r\n\r\nexport async function showRouteContent(\r\n routerNode: IRouter,\r\n matchResult: IRouteMatchResult,\r\n lastRoutes: IRoute[], \r\n): Promise<void> {\r\n // Hide previous routes\r\n const routesSet = new Set<IRoute>(matchResult.routes);\r\n for (const route of lastRoutes) {\r\n if (!routesSet.has(route)) {\r\n hideRoute(route);\r\n }\r\n }\r\n try {\r\n for (const route of matchResult.routes) {\r\n await route.guardCheck(matchResult);\r\n }\r\n } catch (e) {\r\n const err = e as Error;\r\n if (\"fallbackPath\" in err) {\r\n const guardCancel = err as IGuardCancel;\r\n console.warn(`Navigation cancelled: ${err.message}. Redirecting to ${guardCancel.fallbackPath}`);\r\n queueMicrotask(() => {\r\n routerNode.navigate(guardCancel.fallbackPath);\r\n });\r\n return;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n const lastRouteSet = new Set<IRoute>(lastRoutes);\r\n let force = false;\r\n for (const route of matchResult.routes) {\r\n if (!lastRouteSet.has(route) || route.shouldChange(matchResult.params) || force) {\r\n force = showRoute(route, matchResult);\r\n }\r\n }\r\n}\r\n","export type NavigationLike = {\r\n navigate?: (url: string) => void;\r\n addEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\r\n removeEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\r\n};\r\n\r\nexport function getNavigation(): NavigationLike | null {\r\n const nav = (window as any).navigation as NavigationLike | undefined;\r\n if (!nav) {\r\n return null;\r\n }\r\n if (typeof nav.addEventListener !== \"function\" || typeof nav.removeEventListener !== \"function\") {\r\n return null;\r\n }\r\n return nav;\r\n}\r\n","import { parse } from \"../parse.js\";\r\nimport { createOutlet, Outlet } from \"./Outlet.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IOutlet, IRoute, IRouter } from \"./types.js\";\r\nimport { applyRoute } from \"../applyRoute.js\";\r\nimport { getNavigation } from \"../Navigation.js\";\r\n\r\n/**\r\n * AppRoutes - Root component for @wcstack/router\r\n * \r\n * Container element that manages route definitions and navigation.\r\n */\r\nexport class Router extends HTMLElement implements IRouter {\r\n private static _instance: IRouter | null = null;\r\n private _outlet: IOutlet | null = null;\r\n private _template: HTMLTemplateElement | null = null;\r\n private _routeChildNodes: IRoute[] = [];\r\n private _basename: string = '';\r\n private _path: string = '';\r\n private _initialized: boolean = false;\r\n private _fallbackRoute: IRoute | null = null;\r\n private _listeningPopState: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n if (Router._instance) {\r\n raiseError(`${config.tagNames.router} can only be instantiated once.`);\r\n }\r\n Router._instance = this;\r\n }\r\n\r\n /**\r\n * Normalize a URL pathname to a route path.\r\n * - ensure leading slash\r\n * - collapse multiple slashes\r\n * - treat trailing file extensions (e.g. .html) as directory root\r\n * - remove trailing slash except root \"/\"\r\n */\r\n private _normalizePathname(_path: string): string {\r\n let path = _path || \"/\";\r\n if (!path.startsWith(\"/\")) path = \"/\" + path;\r\n path = path.replace(/\\/{2,}/g, \"/\");\r\n // e.g. \"/app/index.html\" -> \"/app\"\r\n const exts = config.basenameFileExtensions;\r\n if (exts.length > 0) {\r\n const extPattern = new RegExp(\r\n `\\\\/[^/]+(?:${exts.map(e => e.replace(/\\./g, '\\\\.')).join('|')})$`,\r\n 'i'\r\n );\r\n path = path.replace(extPattern, \"\");\r\n }\r\n if (path === \"\") path = \"/\";\r\n if (path.length > 1 && path.endsWith(\"/\")) path = path.slice(0, -1);\r\n return path;\r\n }\r\n\r\n /**\r\n * Normalize basename.\r\n * - \"\" or \"/\" -> \"\"\r\n * - \"/app/\" -> \"/app\"\r\n * - \"/app/index.html\" -> \"/app\"\r\n */\r\n private _normalizeBasename(_path: string): string {\r\n let path = _path || \"\";\r\n if (!path) return \"\";\r\n if (!path.startsWith(\"/\")) path = \"/\" + path;\r\n path = path.replace(/\\/{2,}/g, \"/\");\r\n const exts = config.basenameFileExtensions;\r\n if (exts.length > 0) {\r\n const extPattern = new RegExp(\r\n `\\\\/[^/]+(?:${exts.map(e => e.replace(/\\./g, '\\\\.')).join('|')})$`,\r\n 'i'\r\n );\r\n path = path.replace(extPattern, \"\");\r\n }\r\n if (path.length > 1 && path.endsWith(\"/\")) path = path.slice(0, -1);\r\n if (path === \"/\") return \"\";\r\n return path;\r\n }\r\n\r\n private _joinInternalPath(basename: string, to: string): string {\r\n const base = this._normalizeBasename(basename);\r\n // accept \"about\" as \"/about\"\r\n let path = to.startsWith(\"/\") ? to : \"/\" + to;\r\n path = this._normalizePathname(path);\r\n if (!base) return path;\r\n // keep \"/app/\" for root\r\n if (path === \"/\") return base + \"/\";\r\n return base + path;\r\n }\r\n\r\n private _notifyLocationChange(): void {\r\n // For environments without Navigation API (and for Link active-state updates)\r\n window.dispatchEvent(new CustomEvent(\"wcs:navigate\"));\r\n }\r\n\r\n private _getBasename(): string {\r\n const base = new URL(document.baseURI);\r\n let path = base.pathname || \"/\";\r\n if (path === \"/\") {\r\n return \"\";\r\n }\r\n return this._normalizeBasename(path);\r\n }\r\n\r\n static get instance(): IRouter {\r\n if (!Router._instance) {\r\n raiseError(`${config.tagNames.router} has not been instantiated.`);\r\n }\r\n return Router._instance;\r\n }\r\n\r\n static navigate(path: string): void {\r\n Router.instance.navigate(path);\r\n }\r\n\r\n get basename(): string {\r\n return this._basename;\r\n }\r\n\r\n private _getOutlet(): IOutlet {\r\n let outlet = document.querySelector<Outlet>(config.tagNames.outlet);\r\n if (!outlet) {\r\n outlet = createOutlet();\r\n document.body.appendChild(outlet);\r\n }\r\n return outlet;\r\n }\r\n\r\n private _getTemplate() {\r\n const template = this.querySelector(\"template\");\r\n return template;\r\n }\r\n \r\n get outlet(): IOutlet {\r\n if (!this._outlet) {\r\n raiseError(`${config.tagNames.router} has no outlet.`);\r\n }\r\n return this._outlet;\r\n }\r\n\r\n get template(): HTMLTemplateElement {\r\n if (!this._template) {\r\n raiseError(`${config.tagNames.router} has no template.`);\r\n }\r\n return this._template;\r\n }\r\n\r\n get routeChildNodes(): IRoute[] {\r\n return this._routeChildNodes;\r\n }\r\n\r\n get path(): string {\r\n return this._path;\r\n }\r\n /**\r\n * applyRoute 内で設定される値です。\r\n */\r\n set path(value: string) {\r\n this._path = value;\r\n }\r\n\r\n get fallbackRoute(): IRoute | null {\r\n return this._fallbackRoute;\r\n }\r\n /**\r\n * Routeのfallback属性がある場合にそのルートを設定します。\r\n */\r\n set fallbackRoute(value: IRoute | null) {\r\n this._fallbackRoute = value;\r\n }\r\n\r\n async navigate(path: string): Promise<void> {\r\n const fullPath = this._joinInternalPath(this._basename, path);\r\n const navigation = getNavigation();\r\n if (navigation?.navigate) {\r\n navigation.navigate(fullPath);\r\n } else {\r\n history.pushState(null, '', fullPath);\r\n await applyRoute(this, this.outlet, fullPath, this._path);\r\n this._notifyLocationChange();\r\n }\r\n }\r\n\r\n private _onNavigateFunc(navEvent: any) {\r\n if (\r\n !navEvent.canIntercept ||\r\n navEvent.hashChange ||\r\n navEvent.downloadRequest !== null\r\n ) {\r\n return;\r\n }\r\n const routesNode = this;\r\n navEvent.intercept({\r\n handler: async () => {\r\n const url = new URL(navEvent.destination.url);\r\n const fullPath = routesNode._normalizePathname(url.pathname);\r\n await applyRoute(routesNode, routesNode.outlet, fullPath, routesNode.path);\r\n },\r\n });\r\n }\r\n\r\n private _onNavigate = this._onNavigateFunc.bind(this);\r\n\r\n private _onPopState = async () => {\r\n // back/forward for environments without Navigation API\r\n const fullPath = this._normalizePathname(window.location.pathname);\r\n await applyRoute(this, this.outlet, fullPath, this._path);\r\n this._notifyLocationChange();\r\n };\r\n\r\n private async _initialize(): Promise<void> {\r\n this._initialized = true;\r\n this._basename = this._normalizeBasename(\r\n this.getAttribute(\"basename\") || this._getBasename() || \"\"\r\n );\r\n const hasBaseTag = document.querySelector('base[href]') !== null;\r\n const url = new URL(window.location.href);\r\n if (this._basename === \"\" && !hasBaseTag && url.pathname !== \"/\") {\r\n raiseError(`${config.tagNames.router} basename is empty, but current path is not \"/\".`);\r\n }\r\n\r\n this._outlet = this._getOutlet();\r\n this._outlet.routesNode = this;\r\n this._template = this._getTemplate();\r\n if (!this._template) {\r\n raiseError(`${config.tagNames.router} should have a <template> child element.`);\r\n }\r\n const fragment = await parse(this);\r\n this._outlet.rootNode.appendChild(fragment);\r\n if (this.routeChildNodes.length === 0) {\r\n raiseError(`${config.tagNames.router} has no route definitions.`);\r\n }\r\n\r\n const fullPath = this._normalizePathname(window.location.pathname);\r\n await applyRoute(this, this.outlet, fullPath, this._path);\r\n this._notifyLocationChange();\r\n\r\n }\r\n\r\n async connectedCallback() {\r\n if (!this._initialized) {\r\n await this._initialize();\r\n }\r\n getNavigation()?.addEventListener(\"navigate\", this._onNavigate);\r\n // Fallback for browsers without Navigation API\r\n if (!getNavigation()?.addEventListener && !this._listeningPopState) {\r\n window.addEventListener(\"popstate\", this._onPopState);\r\n this._listeningPopState = true;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n getNavigation()?.removeEventListener(\"navigate\", this._onNavigate);\r\n if (this._listeningPopState) {\r\n window.removeEventListener(\"popstate\", this._onPopState);\r\n this._listeningPopState = false;\r\n }\r\n if (Router._instance === this) {\r\n Router._instance = null;\r\n }\r\n }\r\n}\r\n","import { config } from \"../config\";\r\nimport { getUUID } from \"../getUUID\";\r\nimport { raiseError } from \"../raiseError\";\r\nimport { getNavigation } from \"../Navigation\";\r\nimport { Router } from \"./Router\";\r\nimport { ILink } from \"./types\";\r\n\r\nexport class Link extends HTMLElement implements ILink {\r\n static get observedAttributes(): string[] {\r\n return ['to'];\r\n }\r\n\r\n private _childNodeArray: Node[] = [];\r\n private _uuid: string = getUUID();\r\n private _path: string = \"\";\r\n private _router: Router | null = null;\r\n private _anchorElement: HTMLAnchorElement | null = null;\r\n private _initialized: boolean = false;\r\n private _onClick?: (e: MouseEvent) => void;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get uuid(): string {\r\n return this._uuid;\r\n }\r\n \r\n get router(): Router {\r\n if (this._router) {\r\n return this._router;\r\n }\r\n const router = document.querySelector<Router>(config.tagNames.router);\r\n if (router) {\r\n return (this._router = router);\r\n }\r\n raiseError(`${config.tagNames.link} is not connected to a router.`);\r\n }\r\n\r\n private _initialize() {\r\n this.style.display = \"none\";\r\n this._childNodeArray = Array.from(this.childNodes);\r\n this._path = this.getAttribute('to') || '';\r\n this._initialized = true;\r\n }\r\n\r\n private _normalizePathname(path: string): string {\r\n let p = path || \"/\";\r\n if (!p.startsWith(\"/\")) p = \"/\" + p;\r\n p = p.replace(/\\/{2,}/g, \"/\");\r\n if (p.length > 1 && p.endsWith(\"/\")) p = p.slice(0, -1);\r\n return p;\r\n }\r\n\r\n private _joinInternalPath(basename: string, to: string): string {\r\n const base = (basename || \"\").replace(/\\/{2,}/g, \"/\").replace(/\\/$/, \"\");\r\n const internal = to.startsWith(\"/\") ? to : \"/\" + to;\r\n const path = this._normalizePathname(internal);\r\n if (!base) return path;\r\n if (path === \"/\") return base + \"/\";\r\n return base + path;\r\n }\r\n\r\n private _setAnchorHref(anchor: HTMLAnchorElement,path: string) {\r\n if (path.startsWith('/')) {\r\n anchor.href = this._joinInternalPath(this.router.basename, path);\r\n } else {\r\n try {\r\n anchor.href = new URL(path).toString();\r\n } catch {\r\n raiseError(`[${config.tagNames.link}] Invalid URL in 'to' attribute: ${path}`);\r\n }\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._initialized) {\r\n this._initialize();\r\n }\r\n const parentNode = this.parentNode;\r\n if (!parentNode) {\r\n // should not happen if connected\r\n return; \r\n }\r\n const nextSibling = this.nextSibling;\r\n const link = document.createElement('a');\r\n this._setAnchorHref(link, this._path);\r\n for(const childNode of this._childNodeArray) {\r\n link.appendChild(childNode);\r\n }\r\n if (nextSibling) {\r\n parentNode.insertBefore(link, nextSibling);\r\n } else {\r\n parentNode.appendChild(link);\r\n }\r\n this._anchorElement = link;\r\n\r\n // ロケーション変更を監視\r\n getNavigation()?.addEventListener('currententrychange', this._updateActiveState);\r\n window.addEventListener('wcs:navigate', this._updateActiveState as EventListener);\r\n window.addEventListener('popstate', this._updateActiveState as EventListener);\r\n\r\n // Navigation API が無い場合は、クリックで router.navigate にフォールバック\r\n if (this._path.startsWith('/') && !getNavigation()?.navigate) {\r\n this._onClick = async (e: MouseEvent) => {\r\n // only left-click without modifiers\r\n if (e.defaultPrevented) return;\r\n if (e.button !== 0) return;\r\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\r\n e.preventDefault();\r\n await this.router.navigate(this._path);\r\n this._updateActiveState();\r\n };\r\n link.addEventListener('click', this._onClick);\r\n }\r\n this._updateActiveState(); \r\n }\r\n\r\n disconnectedCallback() {\r\n getNavigation()?.removeEventListener('currententrychange', this._updateActiveState);\r\n window.removeEventListener('wcs:navigate', this._updateActiveState as EventListener);\r\n window.removeEventListener('popstate', this._updateActiveState as EventListener);\r\n if (this._anchorElement) {\r\n if (this._onClick) {\r\n this._anchorElement.removeEventListener('click', this._onClick);\r\n this._onClick = undefined;\r\n }\r\n this._anchorElement.remove();\r\n this._anchorElement = null;\r\n }\r\n for(const childNode of this._childNodeArray) {\r\n childNode.parentNode?.removeChild(childNode);\r\n }\r\n }\r\n\r\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\r\n if (name === 'to' && oldValue !== newValue) {\r\n this._path = newValue || '';\r\n if (this._anchorElement) {\r\n this._setAnchorHref(this._anchorElement, this._path);\r\n this._updateActiveState();\r\n }\r\n }\r\n }\r\n\r\n private _updateActiveState = () => {\r\n const currentPath = this._normalizePathname(new URL(window.location.href).pathname);\r\n const linkPath = this._normalizePathname(\r\n this._path.startsWith('/') ? this._joinInternalPath(this.router.basename, this._path) : this._path\r\n );\r\n \r\n if (this._anchorElement) {\r\n if (currentPath === linkPath) {\r\n this._anchorElement.classList.add('active');\r\n } else {\r\n this._anchorElement.classList.remove('active');\r\n }\r\n }\r\n };\r\n\r\n get anchorElement(): HTMLAnchorElement | null {\r\n return this._anchorElement;\r\n }\r\n}","import { raiseError } from \"../raiseError\";\r\n\r\n/**\r\n * グローバルHeadスタック\r\n * 最後に接続されたHeadが優先される\r\n */\r\nconst headStack: Head[] = [];\r\n\r\n/**\r\n * 初期の<head>内容を記憶(最初のHead接続時に保存)\r\n */\r\nconst initialHeadValues: Map<string, Element | null> = new Map();\r\nlet initialHeadCaptured = false;\r\n\r\nexport class Head extends HTMLElement {\r\n private _initialized: boolean = false;\r\n private _childElementArray: Element[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.style.display = 'none';\r\n }\r\n\r\n private _initialize(): void {\r\n if (this._initialized) {\r\n return;\r\n }\r\n this._initialized = true;\r\n this._childElementArray = Array.from(this.children);\r\n for (const child of this._childElementArray) {\r\n this.removeChild(child);\r\n }\r\n }\r\n\r\n connectedCallback(): void {\r\n this._initialize();\r\n \r\n // 初回のみ初期状態を保存\r\n if (!initialHeadCaptured) {\r\n this._captureInitialHead();\r\n initialHeadCaptured = true;\r\n }\r\n \r\n // スタックに追加\r\n headStack.push(this);\r\n \r\n // headを再適用\r\n this._reapplyHead();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n // スタックから削除\r\n const index = headStack.indexOf(this);\r\n if (index !== -1) {\r\n headStack.splice(index, 1);\r\n }\r\n \r\n // headを再適用(スタックが空なら初期状態に戻す)\r\n this._reapplyHead();\r\n }\r\n\r\n get childElementArray(): Element[] {\r\n if (!this._initialized) {\r\n raiseError('Head component is not initialized yet.');\r\n }\r\n return this._childElementArray;\r\n }\r\n\r\n /**\r\n * 要素の一意キーを生成\r\n */\r\n private _getKey(el: Element): string {\r\n const tag = el.tagName.toLowerCase();\r\n\r\n if (tag === 'title') {\r\n return 'title';\r\n }\r\n\r\n if (tag === 'meta') {\r\n const name = el.getAttribute('name') || '';\r\n const property = el.getAttribute('property') || '';\r\n const httpEquiv = el.getAttribute('http-equiv') || '';\r\n const charset = el.hasAttribute('charset') ? 'charset' : '';\r\n const media = el.getAttribute('media') || '';\r\n return `meta:${name}:${property}:${httpEquiv}:${charset}:${media}`;\r\n }\r\n\r\n if (tag === 'link') {\r\n const rel = el.getAttribute('rel') || '';\r\n const href = el.getAttribute('href') || '';\r\n const media = el.getAttribute('media') || '';\r\n return `link:${rel}:${href}:${media}`;\r\n }\r\n\r\n if (tag === 'base') {\r\n return 'base';\r\n }\r\n\r\n // script, style等はouterHTMLの先頭で識別(フォールバック)\r\n return `${tag}:${el.outerHTML.slice(0, 100)}`;\r\n }\r\n\r\n /**\r\n * head内で指定のキーに一致する要素を検索\r\n */\r\n private _findInHead(key: string): Element | null {\r\n const head = document.head;\r\n for (const el of Array.from(head.children)) {\r\n if (this._getKey(el) === key) {\r\n return el;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * 初期の<head>状態をキャプチャ\r\n * document.head内の全ての要素をスキャンして保存する\r\n */\r\n private _captureInitialHead(): void {\r\n const head = document.head;\r\n for (const child of Array.from(head.children)) {\r\n const key = this._getKey(child);\r\n if (!initialHeadValues.has(key)) {\r\n initialHeadValues.set(key, child.cloneNode(true) as Element);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * スタック全体からheadを再構築\r\n * 後のHeadが優先される(上書き)\r\n */\r\n private _reapplyHead(): void {\r\n // 全スタックのHeadが扱うキーを収集\r\n const allKeys = new Set<string>();\r\n for (const head of headStack) {\r\n for (const child of head._childElementArray) {\r\n allKeys.add(this._getKey(child));\r\n }\r\n }\r\n // 初期値にあるキーも追加\r\n for (const key of initialHeadValues.keys()) {\r\n allKeys.add(key);\r\n }\r\n \r\n // 現在のheadにある要素のキーも追加(管理下から外れたものを削除するため)\r\n for (const child of Array.from(document.head.children)) {\r\n allKeys.add(this._getKey(child));\r\n }\r\n\r\n // 各キーについて、最も優先度の高い値を決定\r\n for (const key of allKeys) {\r\n // スタックを逆順に見て、最初に見つかった値を使用\r\n let targetElement: Element | null = null;\r\n for (let i = headStack.length - 1; i >= 0; i--) {\r\n const head = headStack[i];\r\n for (const child of head._childElementArray) {\r\n if (this._getKey(child) === key) {\r\n targetElement = child.cloneNode(true) as Element;\r\n break;\r\n }\r\n }\r\n if (targetElement) break;\r\n }\r\n\r\n // スタックに該当がなければ初期値を使用\r\n if (!targetElement && initialHeadValues.has(key)) {\r\n const initial = initialHeadValues.get(key);\r\n // initialHeadValuesにはnullを保存しないため、has(key)がtrueならinitialは必ず存在しElementである\r\n targetElement = (initial as Element).cloneNode(true) as Element;\r\n }\r\n\r\n // headを更新\r\n const current = this._findInHead(key);\r\n if (targetElement) {\r\n if (current) {\r\n current.replaceWith(targetElement);\r\n } else {\r\n document.head.appendChild(targetElement);\r\n }\r\n } else {\r\n // 初期値もスタックにもない場合は削除\r\n current?.remove();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// テスト用にスタックをリセットする関数\r\nexport function _resetHeadStack(): void {\r\n headStack.length = 0;\r\n initialHeadValues.clear();\r\n initialHeadCaptured = false;\r\n}\r\n","import { Route } from './components/Route';\r\nimport { Layout } from './components/Layout';\r\nimport { Outlet } from './components/Outlet';\r\nimport { Router } from './components/Router';\r\nimport { LayoutOutlet } from './components/LayoutOutlet';\r\nimport { Link } from './components/Link';\r\nimport { Head } from './components/Head';\r\nimport { config } from './config';\r\n\r\nexport function registerComponents() {\r\n // Register custom element\r\n if (!customElements.get(config.tagNames.layout)) {\r\n customElements.define(config.tagNames.layout, Layout);\r\n }\r\n if (!customElements.get(config.tagNames.layoutOutlet)) {\r\n customElements.define(config.tagNames.layoutOutlet, LayoutOutlet);\r\n }\r\n if (!customElements.get(config.tagNames.outlet)) {\r\n customElements.define(config.tagNames.outlet, Outlet);\r\n }\r\n if (!customElements.get(config.tagNames.route)) {\r\n customElements.define(config.tagNames.route, Route);\r\n }\r\n if (!customElements.get(config.tagNames.router)) {\r\n customElements.define(config.tagNames.router, Router);\r\n }\r\n if (!customElements.get(config.tagNames.link)) {\r\n customElements.define(config.tagNames.link, Link);\r\n }\r\n if (!customElements.get(config.tagNames.head)) {\r\n customElements.define(config.tagNames.head, Head);\r\n }\r\n}","import { IWritableConfig } from \"./types\";\r\nimport { setConfig } from \"./config\";\r\nimport { registerComponents } from \"./registerComponents\";\r\n\r\n/**\r\n * Initialize the router with optional configuration.\r\n * This is the main entry point for setting up the router.\r\n * @param config - Optional partial configuration to override defaults\r\n */\r\nexport function bootstrapRouter(config?: Partial<IWritableConfig>): void {\r\n if (config) {\r\n setConfig(config);\r\n }\r\n registerComponents();\r\n}\r\n"],"names":["_config","tagNames","route","router","outlet","layout","layoutOutlet","link","head","enableShadowRoot","basenameFileExtensions","config","getUUID","crypto","randomUUID","replace","c","r","Math","random","toString","raiseError","message","Error","GuardCancel","fallbackPath","constructor","super","this","builtinParamTypes","int","typeName","pattern","parse","value","test","parseInt","float","parseFloat","bool","uuid","slug","isoDate","year","month","day","split","map","Number","date","Date","getFullYear","getMonth","getDate","any","weights","static","param","Route","HTMLElement","_name","_path","_routeParentNode","_routeChildNodes","_routerNode","_uuid","_placeHolder","document","createComment","_childNodeArray","_paramNames","_absoluteParamNames","_params","_typedParams","_weight","_absoluteWeight","_childIndex","_hasGuard","_guardHandler","_waitForSetGuardHandler","_resolveSetGuardHandler","_guardFallbackPath","_initialized","_isFallbackRoute","_segmentCount","_segmentInfos","_absoluteSegmentInfos","routeParentNode","routeChildNodes","routerNode","path","isRelative","startsWith","_checkParentNode","hasParentCallback","noParentCallback","absolutePath","parentPath","endsWith","placeHolder","childNodeArray","Array","from","childNodes","routes","concat","segmentInfos","absoluteSegmentInfos","params","typedParams","paramNames","names","info","paramName","push","absoluteParamNames","weight","type","absoluteWeight","childIndex","name","guardCheck","matchResult","toPath","fromPath","lastPath","shouldChange","newParams","key","guardHandler","initialize","hasAttribute","getAttribute","routeChildContainer","length","fallbackRoute","segmentText","isIndex","segments","idx","segment","RegExp","matchType","match","Object","keys","includes","substring","paramType","Promise","resolve","setAttribute","fullpath","segmentCount","count","absoluteSegmentCount","testAncestorNode","ancestorNode","currentNode","clearParams","cache","Map","Layout","_loadTemplateFromSource","source","response","fetch","ok","status","templateContent","text","set","error","_loadTemplateFromDocument","id","element","getElementById","HTMLTemplateElement","innerHTML","loadTemplate","layoutId","console","warn","template","createElement","has","get","_initialize","connectedCallback","Outlet","_routesNode","_lastRoutes","routesNode","rootNode","shadowRoot","lastRoutes","attachShadow","mode","bindTypeSet","Set","_assignParams","bindType","entries","props","states","assignParams","tagName","bindTypeText","customTagName","toLowerCase","isAttr","getCustomTagName","undefined","customElements","whenDefined","then","isConnected","catch","LayoutOutlet","_layout","_layoutChildNodes","appendChild","content","cloneNode","childNode","fragmentForTemplate","slotElementBySlotName","querySelectorAll","forEach","slotElement","slotName","fragmentBySlotName","fragmentForChildNodes","createDocumentFragment","Element","fragment","replaceWith","defaultSlot","e","createLayoutOutlet","_duplicateCheck","routesByPath","existingRoute","async","_parseNode","node","nodeType","Node","ELEMENT_NODE","appendNode","childFragment","cloneElement","importNode","upgrade","children","_matchRoutes","routeNode","normalizedPath","results","nextRoutes","testResult","catchAllFound","i","segIndex","segmentInfo","exec","remainingSegments","slice","join","finalResult","at","testPath","childRoute","hideRoute","parentNode","removeChild","showRoute","nextSibling","insertBefore","applyRoute","fullPath","basename","sliced","topLevelRoutes","rawSegments","filter","s","sort","a","b","lastRouteA","lastRouteB","diffSegmentCount","diffWeight","matchRoutes","routesSet","err","guardCancel","queueMicrotask","navigate","lastRouteSet","force","showRouteContent","getNavigation","nav","window","navigation","addEventListener","removeEventListener","Router","_outlet","_template","_basename","_fallbackRoute","_listeningPopState","_instance","_normalizePathname","exts","extPattern","_normalizeBasename","_joinInternalPath","to","base","_notifyLocationChange","dispatchEvent","CustomEvent","_getBasename","URL","baseURI","pathname","instance","_getOutlet","querySelector","body","_getTemplate","history","pushState","_onNavigateFunc","navEvent","canIntercept","hashChange","downloadRequest","intercept","handler","url","destination","_onNavigate","bind","_onPopState","location","hasBaseTag","href","disconnectedCallback","Link","observedAttributes","_router","_anchorElement","_onClick","style","display","p","internal","_setAnchorHref","anchor","_updateActiveState","defaultPrevented","button","metaKey","ctrlKey","shiftKey","altKey","preventDefault","remove","attributeChangedCallback","oldValue","newValue","currentPath","linkPath","classList","add","anchorElement","headStack","initialHeadValues","initialHeadCaptured","Head","_childElementArray","child","_captureInitialHead","_reapplyHead","index","indexOf","splice","childElementArray","_getKey","el","tag","outerHTML","_findInHead","allKeys","targetElement","current","registerComponents","define","bootstrapRouter","partialConfig","assign","isArray"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wcstack/router",
3
- "version": "1.3.18",
3
+ "version": "1.3.19",
4
4
  "description": "Declarative SPA routing for Web Components with Navigation API support. Zero dependencies, buildless.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.esm.js",