@wcstack/router 1.3.18 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +2 -2
- package/dist/index.d.ts +136 -2
- package/dist/index.esm.js +291 -163
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -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/core/RouteCore.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 { GuardCancel } from \"../GuardCancel.js\";\r\nimport { builtinParamTypes } from \"../builtinParamTypes.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { config } from \"../config.js\";\r\nimport { ISegmentInfo, SegmentType, IRouteMatchResult, GuardHandler } from \"../components/types.js\";\r\nimport { BuiltinParamTypes, IWcBindable } 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 interface RouteParseOptions {\r\n isIndex?: boolean;\r\n isFallback?: boolean;\r\n hasGuard?: boolean;\r\n guardFallback?: string | null;\r\n name?: string;\r\n}\r\n\r\nexport class RouteCore extends EventTarget {\r\n static wcBindable: IWcBindable = {\r\n protocol: \"wc-bindable\",\r\n version: 1,\r\n properties: [\r\n { name: \"params\", event: \"wcs-route:params-changed\" },\r\n { name: \"typedParams\", event: \"wcs-route:params-changed\", getter: (e: Event) => (e as CustomEvent).detail.typedParams },\r\n { name: \"active\", event: \"wcs-route:active-changed\" },\r\n ],\r\n };\r\n\r\n private _target: EventTarget;\r\n private _parentCore: RouteCore | null = null;\r\n private _path: string = '';\r\n private _name: string = '';\r\n private _isFallbackRoute: boolean = false;\r\n private _segmentInfos: ISegmentInfo[] = [];\r\n private _absoluteSegmentInfos: ISegmentInfo[] | undefined;\r\n private _paramNames: string[] | undefined;\r\n private _absoluteParamNames: string[] | undefined;\r\n private _weight: number | undefined;\r\n private _absoluteWeight: number | undefined;\r\n private _segmentCount: number | undefined;\r\n private _params: Record<string, string> = {};\r\n private _typedParams: Record<string, any> = {};\r\n private _active: boolean = false;\r\n\r\n // Guard\r\n private _hasGuard: boolean = false;\r\n private _guardHandler: GuardHandler | null = null;\r\n private _guardFallbackPath: string = '';\r\n private _waitForSetGuardHandler: Promise<void> | null = null;\r\n private _resolveSetGuardHandler: (() => void) | null = null;\r\n\r\n constructor(target?: EventTarget) {\r\n super();\r\n this._target = target ?? this;\r\n }\r\n\r\n get parentCore(): RouteCore | null {\r\n return this._parentCore;\r\n }\r\n\r\n set parentCore(value: RouteCore | null) {\r\n this._parentCore = value;\r\n }\r\n\r\n get path(): string {\r\n return this._path;\r\n }\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n get isFallbackRoute(): boolean {\r\n return this._isFallbackRoute;\r\n }\r\n\r\n get isRelative(): boolean {\r\n return !this._path.startsWith('/');\r\n }\r\n\r\n get segmentInfos(): ISegmentInfo[] {\r\n return this._segmentInfos;\r\n }\r\n\r\n private _checkParentCore<T>(\r\n hasParentCallback: (parentCore: RouteCore) => T,\r\n noParentCallback: () => T\r\n ): T {\r\n if (!this._isFallbackRoute) {\r\n if (this.isRelative && !this._parentCore) {\r\n raiseError(`${config.tagNames.route} is relative but has no parent route.`);\r\n }\r\n if (!this.isRelative && this._parentCore) {\r\n raiseError(`${config.tagNames.route} is absolute but has a parent route.`);\r\n }\r\n }\r\n if (this.isRelative && this._parentCore) {\r\n return hasParentCallback(this._parentCore);\r\n } else {\r\n return noParentCallback();\r\n }\r\n }\r\n\r\n get absolutePath(): string {\r\n return this._checkParentCore<string>((parentCore) => {\r\n const parentPath = parentCore.absolutePath;\r\n return parentPath.endsWith('/')\r\n ? parentPath + this._path\r\n : parentPath + '/' + this._path;\r\n }, () => {\r\n return this._path;\r\n });\r\n }\r\n\r\n get absoluteSegmentInfos(): ISegmentInfo[] {\r\n if (typeof this._absoluteSegmentInfos === 'undefined') {\r\n this._absoluteSegmentInfos = this._checkParentCore<ISegmentInfo[]>((parentCore) => {\r\n return [\r\n ...parentCore.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 active(): boolean {\r\n return this._active;\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._checkParentCore<string[]>((parentCore) => {\r\n return [\r\n ...parentCore.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._checkParentCore<number>((parentCore) => {\r\n return parentCore.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 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._checkParentCore<number>((parentCore) => {\r\n return parentCore.absoluteSegmentCount + this.segmentCount;\r\n }, () => {\r\n return this.segmentCount;\r\n });\r\n }\r\n\r\n parsePath(path: string, options: RouteParseOptions = {}): void {\r\n this._path = path;\r\n this._name = options.name || '';\r\n this._isFallbackRoute = options.isFallback || false;\r\n\r\n if (options.isIndex) {\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 = 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 !== '' || !options.isIndex) {\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\r\n this._hasGuard = options.hasGuard || false;\r\n if (this._hasGuard) {\r\n this._guardFallbackPath = options.guardFallback || '/';\r\n this._waitForSetGuardHandler = new Promise((resolve) => {\r\n this._resolveSetGuardHandler = resolve;\r\n });\r\n }\r\n }\r\n\r\n setParams(params: Record<string, string>, typedParams: Record<string, any>): void {\r\n this._params = params;\r\n this._typedParams = typedParams;\r\n this._active = true;\r\n this._target.dispatchEvent(new CustomEvent(\"wcs-route:params-changed\", {\r\n detail: { params, typedParams },\r\n bubbles: true,\r\n }));\r\n }\r\n\r\n clearParams(): void {\r\n this._params = {};\r\n this._typedParams = {};\r\n this._active = false;\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\r\n set guardHandler(value: GuardHandler) {\r\n this._resolveSetGuardHandler?.();\r\n this._guardHandler = value;\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","import { getUUID } from \"../getUUID.js\";\r\nimport { config } from \"../config.js\";\r\nimport { raiseError } from \"../raiseError.js\";\r\nimport { IRouteMatchResult, IRoute, IRouter, GuardHandler, ISegmentInfo } from \"./types.js\";\r\nimport { RouteCore } from \"../core/RouteCore.js\";\r\nimport { IWcBindable } from \"../types.js\";\r\n\r\nexport class Route extends HTMLElement implements IRoute {\r\n static wcBindable: IWcBindable = RouteCore.wcBindable;\r\n\r\n private _core: RouteCore;\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 _childIndex: number = 0;\r\n private _initialized: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n this._core = new RouteCore(this);\r\n }\r\n\r\n // Shell-only properties\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 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 childIndex(): number {\r\n return this._childIndex;\r\n }\r\n\r\n // Core delegates\r\n\r\n get path(): string {\r\n return this._core.path;\r\n }\r\n\r\n get name(): string {\r\n return this._core.name;\r\n }\r\n\r\n get isRelative(): boolean {\r\n return this._core.isRelative;\r\n }\r\n\r\n get absolutePath(): string {\r\n return this._core.absolutePath;\r\n }\r\n\r\n get segmentInfos(): ISegmentInfo[] {\r\n return this._core.segmentInfos;\r\n }\r\n\r\n get absoluteSegmentInfos(): ISegmentInfo[] {\r\n return this._core.absoluteSegmentInfos;\r\n }\r\n\r\n get params(): Record<string, string> {\r\n return this._core.params;\r\n }\r\n\r\n get typedParams(): Record<string, any> {\r\n return this._core.typedParams;\r\n }\r\n\r\n get paramNames(): string[] {\r\n return this._core.paramNames;\r\n }\r\n\r\n get absoluteParamNames(): string[] {\r\n return this._core.absoluteParamNames;\r\n }\r\n\r\n get weight(): number {\r\n return this._core.weight;\r\n }\r\n\r\n get absoluteWeight(): number {\r\n return this._core.absoluteWeight;\r\n }\r\n\r\n get segmentCount(): number {\r\n return this._core.segmentCount;\r\n }\r\n\r\n get absoluteSegmentCount(): number {\r\n return this._core.absoluteSegmentCount;\r\n }\r\n\r\n get fullpath(): string {\r\n return this.absolutePath;\r\n }\r\n\r\n get guardHandler(): GuardHandler {\r\n return this._core.guardHandler;\r\n }\r\n\r\n set guardHandler(value: GuardHandler) {\r\n this._core.guardHandler = value;\r\n }\r\n\r\n setParams(params: Record<string, string>, typedParams: Record<string, any>): void {\r\n this._core.setParams(params, typedParams);\r\n }\r\n\r\n clearParams(): void {\r\n this._core.clearParams();\r\n }\r\n\r\n shouldChange(newParams: Record<string, string>): boolean {\r\n return this._core.shouldChange(newParams);\r\n }\r\n\r\n async guardCheck(matchResult: IRouteMatchResult): Promise<void> {\r\n return this._core.guardCheck(matchResult);\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 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 let path: string;\r\n let isIndex = false;\r\n let isFallback = false;\r\n\r\n if (this.hasAttribute('path')) {\r\n path = this.getAttribute('path') || '';\r\n } else if (this.hasAttribute('index')) {\r\n path = '';\r\n isIndex = true;\r\n } else if (this.hasAttribute('fallback')) {\r\n path = '';\r\n isFallback = true;\r\n } else {\r\n raiseError(`${config.tagNames.route} should have a \"path\" or \"index\" attribute.`);\r\n }\r\n\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 // Fallback検証\r\n if (isFallback) {\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 // 親CoreをCoreに設定\r\n if (routeParentNode) {\r\n this._core.parentCore = (routeParentNode as Route)._core;\r\n }\r\n\r\n // Coreでパス解析\r\n this._core.parsePath(path!, {\r\n isIndex,\r\n isFallback,\r\n hasGuard: this.hasAttribute('guard'),\r\n guardFallback: this.getAttribute('guard'),\r\n name: this.getAttribute('name') || '',\r\n });\r\n\r\n this.setAttribute('fullpath', this.absolutePath);\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 const params: Record<string, string> = {};\r\n const typedParams: Record<string, any> = {};\r\n for(const key of route.paramNames) {\r\n params[key] = matchResult.params[key];\r\n typedParams[key] = matchResult.typedParams[key];\r\n }\r\n route.setParams(params, typedParams);\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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"}
|
package/dist/index.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const t={tagNames:{route:"wcs-route",router:"wcs-router",outlet:"wcs-outlet",layout:"wcs-layout",layoutOutlet:"wcs-layout-outlet",link:"wcs-link",head:"wcs-head"},enableShadowRoot:!1,basenameFileExtensions:[".html"]},e=t;function a(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}function s(t){throw new Error(`[@wcstack/router] ${t}`)}class n extends Error{fallbackPath;constructor(t,e){super(t),this.fallbackPath=e}}const i={int:{typeName:"int",pattern:/^-?\d+$/,parse(t){if(this.pattern.test(t))return parseInt(t,10)}},float:{typeName:"float",pattern:/^-?\d+(?:\.\d+)?$/,parse(t){if(this.pattern.test(t))return parseFloat(t)}},bool:{typeName:"bool",pattern:/^(true|false|0|1)$/,parse(t){if(this.pattern.test(t))return"true"===t||"1"===t}},uuid:{typeName:"uuid",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,parse(t){if(this.pattern.test(t))return t}},slug:{typeName:"slug",pattern:/^[a-z0-9]+(?:-[a-z0-9]+)*$/,parse(t){if(this.pattern.test(t))return t}},isoDate:{typeName:"isoDate",pattern:/^\d{4}-\d{2}-\d{2}$/,parse(t){if(!this.pattern.test(t))return;const[e,a,s]=t.split("-").map(Number),n=new Date(e,a-1,s);return n.getFullYear()===e&&n.getMonth()===a-1&&n.getDate()===s?n:void 0}},any:{typeName:"any",pattern:/^.+$/,parse(t){if(this.pattern.test(t))return t}}},o={static:2,param:1,"catch-all":0};class r extends HTMLElement{_name="";_path="";_routeParentNode=null;_routeChildNodes=[];_routerNode=null;_uuid=a();_placeHolder=document.createComment(`@@route:${this._uuid}`);_childNodeArray;_paramNames;_absoluteParamNames;_params={};_typedParams={};_weight;_absoluteWeight;_childIndex=0;_hasGuard=!1;_guardHandler=null;_waitForSetGuardHandler=null;_resolveSetGuardHandler=null;_guardFallbackPath="";_initialized=!1;_isFallbackRoute=!1;_segmentCount;_segmentInfos=[];_absoluteSegmentInfos;constructor(){super()}get routeParentNode(){return this._routeParentNode}get routeChildNodes(){return this._routeChildNodes}get routerNode(){return this._routerNode||s(`${e.tagNames.route} has no routerNode.`),this._routerNode}get path(){return this._path}get isRelative(){return!this._path.startsWith("/")}_checkParentNode(t,a){return this._isFallbackRoute||(this.isRelative&&!this._routeParentNode&&s(`${e.tagNames.route} is relative but has no parent route.`),!this.isRelative&&this._routeParentNode&&s(`${e.tagNames.route} is absolute but has a parent route.`)),this.isRelative&&this._routeParentNode?t(this._routeParentNode):a()}get absolutePath(){return this._checkParentNode(t=>{const e=t.absolutePath;return e.endsWith("/")?e+this._path:e+"/"+this._path},()=>this._path)}get uuid(){return this._uuid}get placeHolder(){return this._placeHolder}get childNodeArray(){return void 0===this._childNodeArray&&(this._childNodeArray=Array.from(this.childNodes)),this._childNodeArray}get routes(){return this.routeParentNode?this.routeParentNode.routes.concat(this):[this]}get segmentInfos(){return this._segmentInfos}get absoluteSegmentInfos(){return void 0===this._absoluteSegmentInfos&&(this._absoluteSegmentInfos=this._checkParentNode(t=>[...t.absoluteSegmentInfos,...this._segmentInfos],()=>[...this._segmentInfos])),this._absoluteSegmentInfos}get params(){return this._params}get typedParams(){return this._typedParams}get paramNames(){if(void 0===this._paramNames){const t=[];for(const e of this._segmentInfos)e.paramName&&t.push(e.paramName);this._paramNames=t}return this._paramNames}get absoluteParamNames(){return void 0===this._absoluteParamNames&&(this._absoluteParamNames=this._checkParentNode(t=>[...t.absoluteParamNames,...this.paramNames],()=>[...this.paramNames])),this._absoluteParamNames}get weight(){if(void 0===this._weight){let t=0;for(const e of this._segmentInfos)t+=o[e.type];this._weight=t}return this._weight}get absoluteWeight(){return void 0===this._absoluteWeight&&(this._absoluteWeight=this._checkParentNode(t=>t.absoluteWeight+this.weight,()=>this.weight)),this._absoluteWeight}get childIndex(){return this._childIndex}get name(){return this._name}async guardCheck(t){if(this._hasGuard&&this._waitForSetGuardHandler&&await this._waitForSetGuardHandler,this._guardHandler){const e=t.path,a=t.lastPath;if(!await this._guardHandler(e,a))throw new n("Navigation cancelled by guard.",this._guardFallbackPath)}}shouldChange(t){for(const e of this.paramNames)if(this.params[e]!==t[e])return!0;return!1}get guardHandler(){return this._guardHandler||s(`${e.tagNames.route} has no guardHandler.`),this._guardHandler}set guardHandler(t){this._resolveSetGuardHandler?.(),this._guardHandler=t}initialize(t,a){if(this._initialized)return;this._initialized=!0,this.hasAttribute("path")?this._path=this.getAttribute("path")||"":this.hasAttribute("index")?this._path="":this.hasAttribute("fallback")?(this._path="",this._isFallbackRoute=!0):s(`${e.tagNames.route} should have a "path" or "index" attribute.`),this._name=this.getAttribute("name")||"",this._routerNode=t,this._routeParentNode=a;const n=a||t;n.routeChildNodes.push(this),this._childIndex=n.routeChildNodes.length-1,this._isFallbackRoute&&(a&&s(`${e.tagNames.route} with fallback attribute must be a direct child of ${e.tagNames.router}.`),t.fallbackRoute&&s(`${e.tagNames.router} can have only one fallback route.`),t.fallbackRoute=this),this.hasAttribute("index")&&this._segmentInfos.push({type:"static",segmentText:"",paramName:null,pattern:/^$/,isIndex:!0});const o=this._path.split("/");for(let t=0;t<o.length;t++){const e=o[t];if(!(""===e&&t===o.length-1&&t>0)){if("*"===e){this._segmentInfos.push({type:"catch-all",segmentText:e,paramName:"*",pattern:new RegExp("^(.*)$")});break}if(e.startsWith(":")){const t=e.match(/^:([^()]+)(\(([^)]+)\))?$/);let a,s="any";t?(a=t[1],t[3]&&Object.keys(i).includes(t[3])&&(s=t[3])):a=e.substring(1),this._segmentInfos.push({type:"param",segmentText:e,paramName:a,pattern:new RegExp("^([^\\/]+)$"),paramType:s})}else""===e&&this.hasAttribute("index")||this._segmentInfos.push({type:"static",segmentText:e,paramName:null,pattern:new RegExp(`^${e}$`)})}}this._hasGuard=this.hasAttribute("guard"),this._hasGuard&&(this._guardFallbackPath=this.getAttribute("guard")||"/",this._waitForSetGuardHandler=new Promise(t=>{this._resolveSetGuardHandler=t})),this.setAttribute("fullpath",this.absolutePath)}get fullpath(){return this.absolutePath}get segmentCount(){if(void 0===this._segmentCount){let t=0;for(const e of this._segmentInfos)"catch-all"!==e.type&&t++;this._segmentCount=""===this._path?0:t}return this._segmentCount}get absoluteSegmentCount(){return this._checkParentNode(t=>t.absoluteSegmentCount+this.segmentCount,()=>this.segmentCount)}testAncestorNode(t){let e=this._routeParentNode;for(;e;){if(e===t)return!0;e=e.routeParentNode}return!1}clearParams(){this._params={},this._typedParams={}}}const l=new Map;class h extends HTMLElement{_uuid=a();_initialized=!1;constructor(){super()}async _loadTemplateFromSource(t){try{const a=await fetch(t);a.ok||s(`${e.tagNames.layout} failed to fetch layout from source: ${t}, status: ${a.status}`);const n=await a.text();return l.set(t,n),n}catch(a){s(`${e.tagNames.layout} failed to load layout from source: ${t}, error: ${a}`)}}_loadTemplateFromDocument(t){const e=document.getElementById(`${t}`);return e&&e instanceof HTMLTemplateElement?e.innerHTML:null}async loadTemplate(){const t=this.getAttribute("src"),a=this.getAttribute("layout");t&&a&&console.warn(`${e.tagNames.layout} have both "src" and "layout" attributes.`);const s=document.createElement("template");if(t)l.has(t)?s.innerHTML=l.get(t)||"":(s.innerHTML=await this._loadTemplateFromSource(t)||"",l.set(t,s.innerHTML));else if(a){const t=this._loadTemplateFromDocument(a);t?s.innerHTML=t:console.warn(`${e.tagNames.layout} could not find template with id "${a}".`)}return s}get uuid(){return this._uuid}get enableShadowRoot(){return!!this.hasAttribute("enable-shadow-root")||!this.hasAttribute("disable-shadow-root")&&e.enableShadowRoot}get name(){return this.getAttribute("name")||""}_initialize(){this._initialized=!0}connectedCallback(){this._initialized||this._initialize()}}class u extends HTMLElement{_routesNode=null;_lastRoutes=[];_initialized=!1;constructor(){super()}get routesNode(){return this._routesNode||s(`${e.tagNames.outlet} has no routesNode.`),this._routesNode}set routesNode(t){this._routesNode=t}get rootNode(){return this.shadowRoot?this.shadowRoot:this}get lastRoutes(){return this._lastRoutes}set lastRoutes(t){this._lastRoutes=[...t]}_initialize(){e.enableShadowRoot&&this.attachShadow({mode:"open"}),this._initialized=!0}connectedCallback(){this._initialized||this._initialize()}}const c=new Set(["props","states","attr",""]);function d(t,e,a){for(const[s,n]of Object.entries(e))switch(a){case"props":t.props={...t.props,[s]:n};break;case"states":t.states={...t.states,[s]:n};break;case"attr":t.setAttribute(s,n);break;case"":t[s]=n}}function m(t,e){t.hasAttribute("data-bind")||s(`${t.tagName} has no 'data-bind' attribute.`);const a=t.getAttribute("data-bind")||"";c.has(a)||s(`${t.tagName} has invalid 'data-bind' attribute: ${a}`);const n=a,i=function(t){const e=t.tagName.toLowerCase();if(e.includes("-"))return e;const a=t.getAttribute("is");return a&&a.includes("-")?a:null}(t);i&&void 0===customElements.get(i)?customElements.whenDefined(i).then(()=>{t.isConnected&&d(t,e,n)}).catch(()=>{s(`Failed to define custom element: ${i}`)}):d(t,e,n)}class p extends HTMLElement{_layout=null;_initialized=!1;_layoutChildNodes=[];constructor(){super()}get layout(){return this._layout||s(`${e.tagNames.layoutOutlet} has no layout.`),this._layout}set layout(t){this._layout=t,this.setAttribute("name",t.name)}get name(){return this.layout.name}async _initialize(){this._initialized=!0,this.layout.enableShadowRoot&&this.attachShadow({mode:"open"});const t=await this.layout.loadTemplate();if(this.shadowRoot){this.shadowRoot.appendChild(t.content.cloneNode(!0));for(const t of Array.from(this.layout.childNodes))this._layoutChildNodes.push(t),this.appendChild(t)}else{const a=t.content.cloneNode(!0),s=new Map;a.querySelectorAll("slot").forEach(t=>{const a=t.getAttribute("name")||"";s.has(a)?console.warn(`${e.tagNames.layoutOutlet} duplicate slot name "${a}" in layout template.`):s.set(a,t)});const n=new Map,i=document.createDocumentFragment();for(const t of Array.from(this.layout.childNodes)){if(this._layoutChildNodes.push(t),t instanceof Element){const e=t.getAttribute("slot")||"";if(e.length>0&&s.has(e)){n.has(e)||n.set(e,document.createDocumentFragment()),n.get(e)?.appendChild(t);continue}}i.appendChild(t)}for(const[t,e]of s){const a=n.get(t);a&&e.replaceWith(a)}const o=s.get("");o&&o.replaceWith(i),this.appendChild(a)}}async connectedCallback(){this._initialized||await this._initialize()}assignParams(t){for(const e of this._layoutChildNodes)e instanceof Element&&(e.querySelectorAll("[data-bind]").forEach(e=>{m(e,t)}),e.hasAttribute("data-bind")&&m(e,t))}}function _(){return document.createElement(e.tagNames.layoutOutlet)}function g(t,e){let a=t.get(e.absolutePath);a||(a=[]);for(const t of a)if(!e.testAncestorNode(t)){console.warn(`Duplicate route path detected: '${e.absolutePath}' (defined as '${e.path}')`);break}a.push(e),1===a.length&&t.set(e.absolutePath,a)}async function f(t,a,s,n,i){const o=s.length>0?s[s.length-1]:null,r=document.createDocumentFragment(),l=Array.from(a.childNodes);for(const a of l)if(a.nodeType===Node.ELEMENT_NODE){let l=a,h=a;const u=h.tagName.toLowerCase();if(u===e.tagNames.route){const e=document.createDocumentFragment();for(const t of Array.from(h.childNodes))e.appendChild(t);const a=document.importNode(h,!0);customElements.upgrade(a),a.appendChild(e);const r=a;r.initialize(t,o),g(i,r),s.push(r),n.set(r.uuid,r),l=r.placeHolder,h=r}else if(u===e.tagNames.layout){const t=document.createDocumentFragment();for(const e of Array.from(h.childNodes))t.appendChild(e);const e=document.importNode(h,!0);customElements.upgrade(e),e.appendChild(t);const a=e,s=_();s.layout=a,l=s,h=e}const c=await f(t,h,s,n,i);h.innerHTML="",h.appendChild(c),r.appendChild(l)}else r.appendChild(a);return r}async function b(t){const e=new Map,a=new Map;return await f(t,t.template.content,[],e,a)}function N(t,e,a,s,n,o){const r=a.concat(e),l=function(t,e,a){const s={},n={};let o=!0,r=!1,l=0,h=0;for(;l<t.absoluteSegmentInfos.length;){const e=t.absoluteSegmentInfos[l];if(e.isIndex){l++;continue}if(0===l&&""===e.segmentText&&"static"===e.type){l++;continue}const u=a[h];if(void 0===u){o=!1;break}let c=!1;if("param"===e.type){const t=e.paramType||"any",a=i[t].parse(u);void 0!==a&&(e.paramName&&(s[e.paramName]=u,n[e.paramName]=a),c=!0)}else c=null!==e.pattern.exec(u);if(!c){o=!1;break}if("catch-all"===e.type){const t=a.slice(h).join("/");s["*"]=t,n["*"]=t,r=!0;break}l++,h++}let u=!1;return o&&(r||l===t.absoluteSegmentInfos.length&&h===a.length||l===t.absoluteSegmentInfos.length&&h===a.length-1&&""===a.at(-1))&&(u=!0),u?{path:e,routes:t.routes,params:s,typedParams:n,lastPath:""}:null}(e,s,n);l&&o.push(l);for(const a of e.routeChildNodes)N(t,a,r,s,n,o)}function y(t){t.clearParams();for(const e of t.childNodeArray)e.parentNode?.removeChild(e)}function w(t,a){t.clearParams();for(const e of t.paramNames)t.params[e]=a.params[e],t.typedParams[e]=a.typedParams[e];const s=t.placeHolder.parentNode,n=t.placeHolder.nextSibling;for(const a of t.childNodeArray){if(a.nodeType===Node.ELEMENT_NODE){const s=a;s.querySelectorAll("[data-bind]").forEach(e=>{m(e,t.typedParams)}),s.hasAttribute("data-bind")&&m(s,t.typedParams),s.querySelectorAll(e.tagNames.layoutOutlet).forEach(e=>{e.assignParams(t.typedParams)}),s.tagName.toLowerCase()===e.tagNames.layoutOutlet&&s.assignParams(t.typedParams)}n?s?.insertBefore(a,n):s?.appendChild(a)}return!0}async function v(t,a,n,i){const o=t.basename;let r=n;""!==o&&(n===o?r="":n.startsWith(o+"/")&&(r=n.slice(o.length)));const l=""===r?"/":r;let h=function(t,e){const a=[],s=t.routeChildNodes,n=[],i=e.split("/"),o=i.filter((t,e)=>!(0===e&&""===t||e===i.length-1&&""===t&&i.length>1));for(const i of s)N(t,i,a,e,o,n);return n.sort((t,e)=>{const a=t.routes.at(-1),s=e.routes.at(-1),n=a.absoluteSegmentCount-s.absoluteSegmentCount;if(0!==n)return-n;const i=a.absoluteWeight-s.absoluteWeight;return 0!==i?-i:a.childIndex-s.childIndex}),n.length>0?n[0]:null}(t,l);h||(t.fallbackRoute?h={routes:[t.fallbackRoute],params:{},typedParams:{},path:l,lastPath:i}:s(`${e.tagNames.router} No route matched for path: ${l}`)),h.lastPath=i;const u=a.lastRoutes;await async function(t,e,a){const s=new Set(e.routes);for(const t of a)s.has(t)||y(t);try{for(const t of e.routes)await t.guardCheck(e)}catch(e){const a=e;if("fallbackPath"in a){const e=a;return console.warn(`Navigation cancelled: ${a.message}. Redirecting to ${e.fallbackPath}`),void queueMicrotask(()=>{t.navigate(e.fallbackPath)})}throw e}const n=new Set(a);let i=!1;for(const t of e.routes)(!n.has(t)||t.shouldChange(e.params)||i)&&(i=w(t,e))}(t,h,u),t.path=l,a.lastRoutes=h.routes}function E(){const t=window.navigation;return t?"function"!=typeof t.addEventListener||"function"!=typeof t.removeEventListener?null:t:null}class A extends HTMLElement{static _instance=null;_outlet=null;_template=null;_routeChildNodes=[];_basename="";_path="";_initialized=!1;_fallbackRoute=null;_listeningPopState=!1;constructor(){super(),A._instance&&s(`${e.tagNames.router} can only be instantiated once.`),A._instance=this}_normalizePathname(t){let a=t||"/";a.startsWith("/")||(a="/"+a),a=a.replace(/\/{2,}/g,"/");const s=e.basenameFileExtensions;if(s.length>0){const t=new RegExp(`\\/[^/]+(?:${s.map(t=>t.replace(/\./g,"\\.")).join("|")})$`,"i");a=a.replace(t,"")}return""===a&&(a="/"),a.length>1&&a.endsWith("/")&&(a=a.slice(0,-1)),a}_normalizeBasename(t){let a=t||"";if(!a)return"";a.startsWith("/")||(a="/"+a),a=a.replace(/\/{2,}/g,"/");const s=e.basenameFileExtensions;if(s.length>0){const t=new RegExp(`\\/[^/]+(?:${s.map(t=>t.replace(/\./g,"\\.")).join("|")})$`,"i");a=a.replace(t,"")}return a.length>1&&a.endsWith("/")&&(a=a.slice(0,-1)),"/"===a?"":a}_joinInternalPath(t,e){const a=this._normalizeBasename(t);let s=e.startsWith("/")?e:"/"+e;return s=this._normalizePathname(s),a?"/"===s?a+"/":a+s:s}_notifyLocationChange(){window.dispatchEvent(new CustomEvent("wcs:navigate"))}_getBasename(){let t=new URL(document.baseURI).pathname||"/";return"/"===t?"":this._normalizeBasename(t)}static get instance(){return A._instance||s(`${e.tagNames.router} has not been instantiated.`),A._instance}static navigate(t){A.instance.navigate(t)}get basename(){return this._basename}_getOutlet(){let t=document.querySelector(e.tagNames.outlet);return t||(t=document.createElement(e.tagNames.outlet),document.body.appendChild(t)),t}_getTemplate(){return this.querySelector("template")}get outlet(){return this._outlet||s(`${e.tagNames.router} has no outlet.`),this._outlet}get template(){return this._template||s(`${e.tagNames.router} has no template.`),this._template}get routeChildNodes(){return this._routeChildNodes}get path(){return this._path}set path(t){this._path=t}get fallbackRoute(){return this._fallbackRoute}set fallbackRoute(t){this._fallbackRoute=t}async navigate(t){const e=this._joinInternalPath(this._basename,t),a=E();a?.navigate?a.navigate(e):(history.pushState(null,"",e),await v(this,this.outlet,e,this._path),this._notifyLocationChange())}_onNavigateFunc(t){if(!t.canIntercept||t.hashChange||null!==t.downloadRequest)return;const e=this;t.intercept({handler:async()=>{const a=new URL(t.destination.url),s=e._normalizePathname(a.pathname);await v(e,e.outlet,s,e.path)}})}_onNavigate=this._onNavigateFunc.bind(this);_onPopState=async()=>{const t=this._normalizePathname(window.location.pathname);await v(this,this.outlet,t,this._path),this._notifyLocationChange()};async _initialize(){this._initialized=!0,this._basename=this._normalizeBasename(this.getAttribute("basename")||this._getBasename()||"");const t=null!==document.querySelector("base[href]"),a=new URL(window.location.href);""!==this._basename||t||"/"===a.pathname||s(`${e.tagNames.router} basename is empty, but current path is not "/".`),this._outlet=this._getOutlet(),this._outlet.routesNode=this,this._template=this._getTemplate(),this._template||s(`${e.tagNames.router} should have a <template> child element.`);const n=await b(this);this._outlet.rootNode.appendChild(n),0===this.routeChildNodes.length&&s(`${e.tagNames.router} has no route definitions.`);const i=this._normalizePathname(window.location.pathname);await v(this,this.outlet,i,this._path),this._notifyLocationChange()}async connectedCallback(){this._initialized||await this._initialize(),E()?.addEventListener("navigate",this._onNavigate),E()?.addEventListener||this._listeningPopState||(window.addEventListener("popstate",this._onPopState),this._listeningPopState=!0)}disconnectedCallback(){E()?.removeEventListener("navigate",this._onNavigate),this._listeningPopState&&(window.removeEventListener("popstate",this._onPopState),this._listeningPopState=!1),A._instance===this&&(A._instance=null)}}class P extends HTMLElement{static get observedAttributes(){return["to"]}_childNodeArray=[];_uuid=a();_path="";_router=null;_anchorElement=null;_initialized=!1;_onClick;constructor(){super()}get uuid(){return this._uuid}get router(){if(this._router)return this._router;const t=document.querySelector(e.tagNames.router);if(t)return this._router=t;s(`${e.tagNames.link} is not connected to a router.`)}_initialize(){this.style.display="none",this._childNodeArray=Array.from(this.childNodes),this._path=this.getAttribute("to")||"",this._initialized=!0}_normalizePathname(t){let e=t||"/";return e.startsWith("/")||(e="/"+e),e=e.replace(/\/{2,}/g,"/"),e.length>1&&e.endsWith("/")&&(e=e.slice(0,-1)),e}_joinInternalPath(t,e){const a=(t||"").replace(/\/{2,}/g,"/").replace(/\/$/,""),s=e.startsWith("/")?e:"/"+e,n=this._normalizePathname(s);return a?"/"===n?a+"/":a+n:n}_setAnchorHref(t,a){if(a.startsWith("/"))t.href=this._joinInternalPath(this.router.basename,a);else try{t.href=new URL(a).toString()}catch{s(`[${e.tagNames.link}] Invalid URL in 'to' attribute: ${a}`)}}connectedCallback(){this._initialized||this._initialize();const t=this.parentNode;if(!t)return;const e=this.nextSibling,a=document.createElement("a");this._setAnchorHref(a,this._path);for(const t of this._childNodeArray)a.appendChild(t);e?t.insertBefore(a,e):t.appendChild(a),this._anchorElement=a,E()?.addEventListener("currententrychange",this._updateActiveState),window.addEventListener("wcs:navigate",this._updateActiveState),window.addEventListener("popstate",this._updateActiveState),this._path.startsWith("/")&&!E()?.navigate&&(this._onClick=async t=>{t.defaultPrevented||0===t.button&&(t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||(t.preventDefault(),await this.router.navigate(this._path),this._updateActiveState()))},a.addEventListener("click",this._onClick)),this._updateActiveState()}disconnectedCallback(){E()?.removeEventListener("currententrychange",this._updateActiveState),window.removeEventListener("wcs:navigate",this._updateActiveState),window.removeEventListener("popstate",this._updateActiveState),this._anchorElement&&(this._onClick&&(this._anchorElement.removeEventListener("click",this._onClick),this._onClick=void 0),this._anchorElement.remove(),this._anchorElement=null);for(const t of this._childNodeArray)t.parentNode?.removeChild(t)}attributeChangedCallback(t,e,a){"to"===t&&e!==a&&(this._path=a||"",this._anchorElement&&(this._setAnchorHref(this._anchorElement,this._path),this._updateActiveState()))}_updateActiveState=()=>{const t=this._normalizePathname(new URL(window.location.href).pathname),e=this._normalizePathname(this._path.startsWith("/")?this._joinInternalPath(this.router.basename,this._path):this._path);this._anchorElement&&(t===e?this._anchorElement.classList.add("active"):this._anchorElement.classList.remove("active"))};get anchorElement(){return this._anchorElement}}const C=[],x=new Map;let k=!1;class $ extends HTMLElement{_initialized=!1;_childElementArray=[];constructor(){super(),this.style.display="none"}_initialize(){if(!this._initialized){this._initialized=!0,this._childElementArray=Array.from(this.children);for(const t of this._childElementArray)this.removeChild(t)}}connectedCallback(){this._initialize(),k||(this._captureInitialHead(),k=!0),C.push(this),this._reapplyHead()}disconnectedCallback(){const t=C.indexOf(this);-1!==t&&C.splice(t,1),this._reapplyHead()}get childElementArray(){return this._initialized||s("Head component is not initialized yet."),this._childElementArray}_getKey(t){const e=t.tagName.toLowerCase();if("title"===e)return"title";if("meta"===e){return`meta:${t.getAttribute("name")||""}:${t.getAttribute("property")||""}:${t.getAttribute("http-equiv")||""}:${t.hasAttribute("charset")?"charset":""}:${t.getAttribute("media")||""}`}if("link"===e){return`link:${t.getAttribute("rel")||""}:${t.getAttribute("href")||""}:${t.getAttribute("media")||""}`}return"base"===e?"base":`${e}:${t.outerHTML.slice(0,100)}`}_findInHead(t){const e=document.head;for(const a of Array.from(e.children))if(this._getKey(a)===t)return a;return null}_captureInitialHead(){const t=document.head;for(const e of Array.from(t.children)){const t=this._getKey(e);x.has(t)||x.set(t,e.cloneNode(!0))}}_reapplyHead(){const t=new Set;for(const e of C)for(const a of e._childElementArray)t.add(this._getKey(a));for(const e of x.keys())t.add(e);for(const e of Array.from(document.head.children))t.add(this._getKey(e));for(const e of t){let t=null;for(let a=C.length-1;a>=0;a--){const s=C[a];for(const a of s._childElementArray)if(this._getKey(a)===e){t=a.cloneNode(!0);break}if(t)break}if(!t&&x.has(e)){t=x.get(e).cloneNode(!0)}const a=this._findInHead(e);t?a?a.replaceWith(t):document.head.appendChild(t):a?.remove()}}}function S(){customElements.get(e.tagNames.layout)||customElements.define(e.tagNames.layout,h),customElements.get(e.tagNames.layoutOutlet)||customElements.define(e.tagNames.layoutOutlet,p),customElements.get(e.tagNames.outlet)||customElements.define(e.tagNames.outlet,u),customElements.get(e.tagNames.route)||customElements.define(e.tagNames.route,r),customElements.get(e.tagNames.router)||customElements.define(e.tagNames.router,A),customElements.get(e.tagNames.link)||customElements.define(e.tagNames.link,P),customElements.get(e.tagNames.head)||customElements.define(e.tagNames.head,$)}function z(e){var a;e&&((a=e).tagNames&&Object.assign(t.tagNames,a.tagNames),"boolean"==typeof a.enableShadowRoot&&(t.enableShadowRoot=a.enableShadowRoot),Array.isArray(a.basenameFileExtensions)&&(t.basenameFileExtensions=a.basenameFileExtensions)),S()}export{z as bootstrapRouter};
|
|
1
|
+
const t={tagNames:{route:"wcs-route",router:"wcs-router",outlet:"wcs-outlet",layout:"wcs-layout",layoutOutlet:"wcs-layout-outlet",link:"wcs-link",head:"wcs-head"},enableShadowRoot:!1,basenameFileExtensions:[".html"]},e=t;function a(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}function s(t){throw new Error(`[@wcstack/router] ${t}`)}class n extends Error{fallbackPath;constructor(t,e){super(t),this.fallbackPath=e}}const i={int:{typeName:"int",pattern:/^-?\d+$/,parse(t){if(this.pattern.test(t))return parseInt(t,10)}},float:{typeName:"float",pattern:/^-?\d+(?:\.\d+)?$/,parse(t){if(this.pattern.test(t))return parseFloat(t)}},bool:{typeName:"bool",pattern:/^(true|false|0|1)$/,parse(t){if(this.pattern.test(t))return"true"===t||"1"===t}},uuid:{typeName:"uuid",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,parse(t){if(this.pattern.test(t))return t}},slug:{typeName:"slug",pattern:/^[a-z0-9]+(?:-[a-z0-9]+)*$/,parse(t){if(this.pattern.test(t))return t}},isoDate:{typeName:"isoDate",pattern:/^\d{4}-\d{2}-\d{2}$/,parse(t){if(!this.pattern.test(t))return;const[e,a,s]=t.split("-").map(Number),n=new Date(e,a-1,s);return n.getFullYear()===e&&n.getMonth()===a-1&&n.getDate()===s?n:void 0}},any:{typeName:"any",pattern:/^.+$/,parse(t){if(this.pattern.test(t))return t}}},r={static:2,param:1,"catch-all":0};class o extends EventTarget{static wcBindable={protocol:"wc-bindable",version:1,properties:[{name:"params",event:"wcs-route:params-changed"},{name:"typedParams",event:"wcs-route:params-changed",getter:t=>t.detail.typedParams},{name:"active",event:"wcs-route:active-changed"}]};_target;_parentCore=null;_path="";_name="";_isFallbackRoute=!1;_segmentInfos=[];_absoluteSegmentInfos;_paramNames;_absoluteParamNames;_weight;_absoluteWeight;_segmentCount;_params={};_typedParams={};_active=!1;_hasGuard=!1;_guardHandler=null;_guardFallbackPath="";_waitForSetGuardHandler=null;_resolveSetGuardHandler=null;constructor(t){super(),this._target=t??this}get parentCore(){return this._parentCore}set parentCore(t){this._parentCore=t}get path(){return this._path}get name(){return this._name}get isFallbackRoute(){return this._isFallbackRoute}get isRelative(){return!this._path.startsWith("/")}get segmentInfos(){return this._segmentInfos}_checkParentCore(t,a){return this._isFallbackRoute||(this.isRelative&&!this._parentCore&&s(`${e.tagNames.route} is relative but has no parent route.`),!this.isRelative&&this._parentCore&&s(`${e.tagNames.route} is absolute but has a parent route.`)),this.isRelative&&this._parentCore?t(this._parentCore):a()}get absolutePath(){return this._checkParentCore(t=>{const e=t.absolutePath;return e.endsWith("/")?e+this._path:e+"/"+this._path},()=>this._path)}get absoluteSegmentInfos(){return void 0===this._absoluteSegmentInfos&&(this._absoluteSegmentInfos=this._checkParentCore(t=>[...t.absoluteSegmentInfos,...this._segmentInfos],()=>[...this._segmentInfos])),this._absoluteSegmentInfos}get params(){return this._params}get typedParams(){return this._typedParams}get active(){return this._active}get paramNames(){if(void 0===this._paramNames){const t=[];for(const e of this._segmentInfos)e.paramName&&t.push(e.paramName);this._paramNames=t}return this._paramNames}get absoluteParamNames(){return void 0===this._absoluteParamNames&&(this._absoluteParamNames=this._checkParentCore(t=>[...t.absoluteParamNames,...this.paramNames],()=>[...this.paramNames])),this._absoluteParamNames}get weight(){if(void 0===this._weight){let t=0;for(const e of this._segmentInfos)t+=r[e.type];this._weight=t}return this._weight}get absoluteWeight(){return void 0===this._absoluteWeight&&(this._absoluteWeight=this._checkParentCore(t=>t.absoluteWeight+this.weight,()=>this.weight)),this._absoluteWeight}get segmentCount(){if(void 0===this._segmentCount){let t=0;for(const e of this._segmentInfos)"catch-all"!==e.type&&t++;this._segmentCount=""===this._path?0:t}return this._segmentCount}get absoluteSegmentCount(){return this._checkParentCore(t=>t.absoluteSegmentCount+this.segmentCount,()=>this.segmentCount)}parsePath(t,e={}){this._path=t,this._name=e.name||"",this._isFallbackRoute=e.isFallback||!1,e.isIndex&&this._segmentInfos.push({type:"static",segmentText:"",paramName:null,pattern:/^$/,isIndex:!0});const a=t.split("/");for(let t=0;t<a.length;t++){const s=a[t];if(!(""===s&&t===a.length-1&&t>0)){if("*"===s){this._segmentInfos.push({type:"catch-all",segmentText:s,paramName:"*",pattern:new RegExp("^(.*)$")});break}if(s.startsWith(":")){const t=s.match(/^:([^()]+)(\(([^)]+)\))?$/);let e,a="any";t?(e=t[1],t[3]&&Object.keys(i).includes(t[3])&&(a=t[3])):e=s.substring(1),this._segmentInfos.push({type:"param",segmentText:s,paramName:e,pattern:new RegExp("^([^\\/]+)$"),paramType:a})}else""===s&&e.isIndex||this._segmentInfos.push({type:"static",segmentText:s,paramName:null,pattern:new RegExp(`^${s}$`)})}}this._hasGuard=e.hasGuard||!1,this._hasGuard&&(this._guardFallbackPath=e.guardFallback||"/",this._waitForSetGuardHandler=new Promise(t=>{this._resolveSetGuardHandler=t}))}setParams(t,e){this._params=t,this._typedParams=e,this._active=!0,this._target.dispatchEvent(new CustomEvent("wcs-route:params-changed",{detail:{params:t,typedParams:e},bubbles:!0}))}clearParams(){this._params={},this._typedParams={},this._active=!1}shouldChange(t){for(const e of this.paramNames)if(this._params[e]!==t[e])return!0;return!1}get guardHandler(){return this._guardHandler||s(`${e.tagNames.route} has no guardHandler.`),this._guardHandler}set guardHandler(t){this._resolveSetGuardHandler?.(),this._guardHandler=t}async guardCheck(t){if(this._hasGuard&&this._waitForSetGuardHandler&&await this._waitForSetGuardHandler,this._guardHandler){const e=t.path,a=t.lastPath;if(!await this._guardHandler(e,a))throw new n("Navigation cancelled by guard.",this._guardFallbackPath)}}}class l extends HTMLElement{static wcBindable=o.wcBindable;_core;_routeParentNode=null;_routeChildNodes=[];_routerNode=null;_uuid=a();_placeHolder=document.createComment(`@@route:${this._uuid}`);_childNodeArray;_childIndex=0;_initialized=!1;constructor(){super(),this._core=new o(this)}get routeParentNode(){return this._routeParentNode}get routeChildNodes(){return this._routeChildNodes}get routerNode(){return this._routerNode||s(`${e.tagNames.route} has no routerNode.`),this._routerNode}get uuid(){return this._uuid}get placeHolder(){return this._placeHolder}get childNodeArray(){return void 0===this._childNodeArray&&(this._childNodeArray=Array.from(this.childNodes)),this._childNodeArray}get routes(){return this.routeParentNode?this.routeParentNode.routes.concat(this):[this]}get childIndex(){return this._childIndex}get path(){return this._core.path}get name(){return this._core.name}get isRelative(){return this._core.isRelative}get absolutePath(){return this._core.absolutePath}get segmentInfos(){return this._core.segmentInfos}get absoluteSegmentInfos(){return this._core.absoluteSegmentInfos}get params(){return this._core.params}get typedParams(){return this._core.typedParams}get paramNames(){return this._core.paramNames}get absoluteParamNames(){return this._core.absoluteParamNames}get weight(){return this._core.weight}get absoluteWeight(){return this._core.absoluteWeight}get segmentCount(){return this._core.segmentCount}get absoluteSegmentCount(){return this._core.absoluteSegmentCount}get fullpath(){return this.absolutePath}get guardHandler(){return this._core.guardHandler}set guardHandler(t){this._core.guardHandler=t}setParams(t,e){this._core.setParams(t,e)}clearParams(){this._core.clearParams()}shouldChange(t){return this._core.shouldChange(t)}async guardCheck(t){return this._core.guardCheck(t)}testAncestorNode(t){let e=this._routeParentNode;for(;e;){if(e===t)return!0;e=e.routeParentNode}return!1}initialize(t,a){if(this._initialized)return;let n;this._initialized=!0;let i=!1,r=!1;this.hasAttribute("path")?n=this.getAttribute("path")||"":this.hasAttribute("index")?(n="",i=!0):this.hasAttribute("fallback")?(n="",r=!0):s(`${e.tagNames.route} should have a "path" or "index" attribute.`),this._routerNode=t,this._routeParentNode=a;const o=a||t;o.routeChildNodes.push(this),this._childIndex=o.routeChildNodes.length-1,r&&(a&&s(`${e.tagNames.route} with fallback attribute must be a direct child of ${e.tagNames.router}.`),t.fallbackRoute&&s(`${e.tagNames.router} can have only one fallback route.`),t.fallbackRoute=this),a&&(this._core.parentCore=a._core),this._core.parsePath(n,{isIndex:i,isFallback:r,hasGuard:this.hasAttribute("guard"),guardFallback:this.getAttribute("guard"),name:this.getAttribute("name")||""}),this.setAttribute("fullpath",this.absolutePath)}}const h=new Map;class u extends HTMLElement{_uuid=a();_initialized=!1;constructor(){super()}async _loadTemplateFromSource(t){try{const a=await fetch(t);a.ok||s(`${e.tagNames.layout} failed to fetch layout from source: ${t}, status: ${a.status}`);const n=await a.text();return h.set(t,n),n}catch(a){s(`${e.tagNames.layout} failed to load layout from source: ${t}, error: ${a}`)}}_loadTemplateFromDocument(t){const e=document.getElementById(`${t}`);return e&&e instanceof HTMLTemplateElement?e.innerHTML:null}async loadTemplate(){const t=this.getAttribute("src"),a=this.getAttribute("layout");t&&a&&console.warn(`${e.tagNames.layout} have both "src" and "layout" attributes.`);const s=document.createElement("template");if(t)h.has(t)?s.innerHTML=h.get(t)||"":(s.innerHTML=await this._loadTemplateFromSource(t)||"",h.set(t,s.innerHTML));else if(a){const t=this._loadTemplateFromDocument(a);t?s.innerHTML=t:console.warn(`${e.tagNames.layout} could not find template with id "${a}".`)}return s}get uuid(){return this._uuid}get enableShadowRoot(){return!!this.hasAttribute("enable-shadow-root")||!this.hasAttribute("disable-shadow-root")&&e.enableShadowRoot}get name(){return this.getAttribute("name")||""}_initialize(){this._initialized=!0}connectedCallback(){this._initialized||this._initialize()}}class c extends HTMLElement{_routesNode=null;_lastRoutes=[];_initialized=!1;constructor(){super()}get routesNode(){return this._routesNode||s(`${e.tagNames.outlet} has no routesNode.`),this._routesNode}set routesNode(t){this._routesNode=t}get rootNode(){return this.shadowRoot?this.shadowRoot:this}get lastRoutes(){return this._lastRoutes}set lastRoutes(t){this._lastRoutes=[...t]}_initialize(){e.enableShadowRoot&&this.attachShadow({mode:"open"}),this._initialized=!0}connectedCallback(){this._initialized||this._initialize()}}const d=new Set(["props","states","attr",""]);function m(t,e,a){for(const[s,n]of Object.entries(e))switch(a){case"props":t.props={...t.props,[s]:n};break;case"states":t.states={...t.states,[s]:n};break;case"attr":t.setAttribute(s,n);break;case"":t[s]=n}}function p(t,e){t.hasAttribute("data-bind")||s(`${t.tagName} has no 'data-bind' attribute.`);const a=t.getAttribute("data-bind")||"";d.has(a)||s(`${t.tagName} has invalid 'data-bind' attribute: ${a}`);const n=a,i=function(t){const e=t.tagName.toLowerCase();if(e.includes("-"))return e;const a=t.getAttribute("is");return a&&a.includes("-")?a:null}(t);i&&void 0===customElements.get(i)?customElements.whenDefined(i).then(()=>{t.isConnected&&m(t,e,n)}).catch(()=>{s(`Failed to define custom element: ${i}`)}):m(t,e,n)}class g extends HTMLElement{_layout=null;_initialized=!1;_layoutChildNodes=[];constructor(){super()}get layout(){return this._layout||s(`${e.tagNames.layoutOutlet} has no layout.`),this._layout}set layout(t){this._layout=t,this.setAttribute("name",t.name)}get name(){return this.layout.name}async _initialize(){this._initialized=!0,this.layout.enableShadowRoot&&this.attachShadow({mode:"open"});const t=await this.layout.loadTemplate();if(this.shadowRoot){this.shadowRoot.appendChild(t.content.cloneNode(!0));for(const t of Array.from(this.layout.childNodes))this._layoutChildNodes.push(t),this.appendChild(t)}else{const a=t.content.cloneNode(!0),s=new Map;a.querySelectorAll("slot").forEach(t=>{const a=t.getAttribute("name")||"";s.has(a)?console.warn(`${e.tagNames.layoutOutlet} duplicate slot name "${a}" in layout template.`):s.set(a,t)});const n=new Map,i=document.createDocumentFragment();for(const t of Array.from(this.layout.childNodes)){if(this._layoutChildNodes.push(t),t instanceof Element){const e=t.getAttribute("slot")||"";if(e.length>0&&s.has(e)){n.has(e)||n.set(e,document.createDocumentFragment()),n.get(e)?.appendChild(t);continue}}i.appendChild(t)}for(const[t,e]of s){const a=n.get(t);a&&e.replaceWith(a)}const r=s.get("");r&&r.replaceWith(i),this.appendChild(a)}}async connectedCallback(){this._initialized||await this._initialize()}assignParams(t){for(const e of this._layoutChildNodes)e instanceof Element&&(e.querySelectorAll("[data-bind]").forEach(e=>{p(e,t)}),e.hasAttribute("data-bind")&&p(e,t))}}function _(){return document.createElement(e.tagNames.layoutOutlet)}function f(t,e){let a=t.get(e.absolutePath);a||(a=[]);for(const t of a)if(!e.testAncestorNode(t)){console.warn(`Duplicate route path detected: '${e.absolutePath}' (defined as '${e.path}')`);break}a.push(e),1===a.length&&t.set(e.absolutePath,a)}async function b(t,a,s,n,i){const r=s.length>0?s[s.length-1]:null,o=document.createDocumentFragment(),l=Array.from(a.childNodes);for(const a of l)if(a.nodeType===Node.ELEMENT_NODE){let l=a,h=a;const u=h.tagName.toLowerCase();if(u===e.tagNames.route){const e=document.createDocumentFragment();for(const t of Array.from(h.childNodes))e.appendChild(t);const a=document.importNode(h,!0);customElements.upgrade(a),a.appendChild(e);const o=a;o.initialize(t,r),f(i,o),s.push(o),n.set(o.uuid,o),l=o.placeHolder,h=o}else if(u===e.tagNames.layout){const t=document.createDocumentFragment();for(const e of Array.from(h.childNodes))t.appendChild(e);const e=document.importNode(h,!0);customElements.upgrade(e),e.appendChild(t);const a=e,s=_();s.layout=a,l=s,h=e}const c=await b(t,h,s,n,i);h.innerHTML="",h.appendChild(c),o.appendChild(l)}else o.appendChild(a);return o}async function y(t){const e=new Map,a=new Map;return await b(t,t.template.content,[],e,a)}function N(t,e,a,s,n,r){const o=a.concat(e),l=function(t,e,a){const s={},n={};let r=!0,o=!1,l=0,h=0;for(;l<t.absoluteSegmentInfos.length;){const e=t.absoluteSegmentInfos[l];if(e.isIndex){l++;continue}if(0===l&&""===e.segmentText&&"static"===e.type){l++;continue}const u=a[h];if(void 0===u){r=!1;break}let c=!1;if("param"===e.type){const t=e.paramType||"any",a=i[t].parse(u);void 0!==a&&(e.paramName&&(s[e.paramName]=u,n[e.paramName]=a),c=!0)}else c=null!==e.pattern.exec(u);if(!c){r=!1;break}if("catch-all"===e.type){const t=a.slice(h).join("/");s["*"]=t,n["*"]=t,o=!0;break}l++,h++}let u=!1;return r&&(o||l===t.absoluteSegmentInfos.length&&h===a.length||l===t.absoluteSegmentInfos.length&&h===a.length-1&&""===a.at(-1))&&(u=!0),u?{path:e,routes:t.routes,params:s,typedParams:n,lastPath:""}:null}(e,s,n);l&&r.push(l);for(const a of e.routeChildNodes)N(t,a,o,s,n,r)}function w(t){t.clearParams();for(const e of t.childNodeArray)e.parentNode?.removeChild(e)}function v(t,a){const s={},n={};for(const e of t.paramNames)s[e]=a.params[e],n[e]=a.typedParams[e];t.setParams(s,n);const i=t.placeHolder.parentNode,r=t.placeHolder.nextSibling;for(const a of t.childNodeArray){if(a.nodeType===Node.ELEMENT_NODE){const s=a;s.querySelectorAll("[data-bind]").forEach(e=>{p(e,t.typedParams)}),s.hasAttribute("data-bind")&&p(s,t.typedParams),s.querySelectorAll(e.tagNames.layoutOutlet).forEach(e=>{e.assignParams(t.typedParams)}),s.tagName.toLowerCase()===e.tagNames.layoutOutlet&&s.assignParams(t.typedParams)}r?i?.insertBefore(a,r):i?.appendChild(a)}return!0}async function C(t,a,n,i){const r=t.basename;let o=n;""!==r&&(n===r?o="":n.startsWith(r+"/")&&(o=n.slice(r.length)));const l=""===o?"/":o;let h=function(t,e){const a=[],s=t.routeChildNodes,n=[],i=e.split("/"),r=i.filter((t,e)=>!(0===e&&""===t||e===i.length-1&&""===t&&i.length>1));for(const i of s)N(t,i,a,e,r,n);return n.sort((t,e)=>{const a=t.routes.at(-1),s=e.routes.at(-1),n=a.absoluteSegmentCount-s.absoluteSegmentCount;if(0!==n)return-n;const i=a.absoluteWeight-s.absoluteWeight;return 0!==i?-i:a.childIndex-s.childIndex}),n.length>0?n[0]:null}(t,l);h||(t.fallbackRoute?h={routes:[t.fallbackRoute],params:{},typedParams:{},path:l,lastPath:i}:s(`${e.tagNames.router} No route matched for path: ${l}`)),h.lastPath=i;const u=a.lastRoutes;await async function(t,e,a){const s=new Set(e.routes);for(const t of a)s.has(t)||w(t);try{for(const t of e.routes)await t.guardCheck(e)}catch(e){const a=e;if("fallbackPath"in a){const e=a;return console.warn(`Navigation cancelled: ${a.message}. Redirecting to ${e.fallbackPath}`),void queueMicrotask(()=>{t.navigate(e.fallbackPath)})}throw e}const n=new Set(a);let i=!1;for(const t of e.routes)(!n.has(t)||t.shouldChange(e.params)||i)&&(i=v(t,e))}(t,h,u),t.path=l,a.lastRoutes=h.routes}function E(){const t=window.navigation;return t?"function"!=typeof t.addEventListener||"function"!=typeof t.removeEventListener?null:t:null}class P extends HTMLElement{static _instance=null;_outlet=null;_template=null;_routeChildNodes=[];_basename="";_path="";_initialized=!1;_fallbackRoute=null;_listeningPopState=!1;constructor(){super(),P._instance&&s(`${e.tagNames.router} can only be instantiated once.`),P._instance=this}_normalizePathname(t){let a=t||"/";a.startsWith("/")||(a="/"+a),a=a.replace(/\/{2,}/g,"/");const s=e.basenameFileExtensions;if(s.length>0){const t=new RegExp(`\\/[^/]+(?:${s.map(t=>t.replace(/\./g,"\\.")).join("|")})$`,"i");a=a.replace(t,"")}return""===a&&(a="/"),a.length>1&&a.endsWith("/")&&(a=a.slice(0,-1)),a}_normalizeBasename(t){let a=t||"";if(!a)return"";a.startsWith("/")||(a="/"+a),a=a.replace(/\/{2,}/g,"/");const s=e.basenameFileExtensions;if(s.length>0){const t=new RegExp(`\\/[^/]+(?:${s.map(t=>t.replace(/\./g,"\\.")).join("|")})$`,"i");a=a.replace(t,"")}return a.length>1&&a.endsWith("/")&&(a=a.slice(0,-1)),"/"===a?"":a}_joinInternalPath(t,e){const a=this._normalizeBasename(t);let s=e.startsWith("/")?e:"/"+e;return s=this._normalizePathname(s),a?"/"===s?a+"/":a+s:s}_notifyLocationChange(){window.dispatchEvent(new CustomEvent("wcs:navigate"))}_getBasename(){let t=new URL(document.baseURI).pathname||"/";return"/"===t?"":this._normalizeBasename(t)}static get instance(){return P._instance||s(`${e.tagNames.router} has not been instantiated.`),P._instance}static navigate(t){P.instance.navigate(t)}get basename(){return this._basename}_getOutlet(){let t=document.querySelector(e.tagNames.outlet);return t||(t=document.createElement(e.tagNames.outlet),document.body.appendChild(t)),t}_getTemplate(){return this.querySelector("template")}get outlet(){return this._outlet||s(`${e.tagNames.router} has no outlet.`),this._outlet}get template(){return this._template||s(`${e.tagNames.router} has no template.`),this._template}get routeChildNodes(){return this._routeChildNodes}get path(){return this._path}set path(t){this._path=t}get fallbackRoute(){return this._fallbackRoute}set fallbackRoute(t){this._fallbackRoute=t}async navigate(t){const e=this._joinInternalPath(this._basename,t),a=E();a?.navigate?a.navigate(e):(history.pushState(null,"",e),await C(this,this.outlet,e,this._path),this._notifyLocationChange())}_onNavigateFunc(t){if(!t.canIntercept||t.hashChange||null!==t.downloadRequest)return;const e=this;t.intercept({handler:async()=>{const a=new URL(t.destination.url),s=e._normalizePathname(a.pathname);await C(e,e.outlet,s,e.path)}})}_onNavigate=this._onNavigateFunc.bind(this);_onPopState=async()=>{const t=this._normalizePathname(window.location.pathname);await C(this,this.outlet,t,this._path),this._notifyLocationChange()};async _initialize(){this._initialized=!0,this._basename=this._normalizeBasename(this.getAttribute("basename")||this._getBasename()||"");const t=null!==document.querySelector("base[href]"),a=new URL(window.location.href);""!==this._basename||t||"/"===a.pathname||s(`${e.tagNames.router} basename is empty, but current path is not "/".`),this._outlet=this._getOutlet(),this._outlet.routesNode=this,this._template=this._getTemplate(),this._template||s(`${e.tagNames.router} should have a <template> child element.`);const n=await y(this);this._outlet.rootNode.appendChild(n),0===this.routeChildNodes.length&&s(`${e.tagNames.router} has no route definitions.`);const i=this._normalizePathname(window.location.pathname);await C(this,this.outlet,i,this._path),this._notifyLocationChange()}async connectedCallback(){this._initialized||await this._initialize(),E()?.addEventListener("navigate",this._onNavigate),E()?.addEventListener||this._listeningPopState||(window.addEventListener("popstate",this._onPopState),this._listeningPopState=!0)}disconnectedCallback(){E()?.removeEventListener("navigate",this._onNavigate),this._listeningPopState&&(window.removeEventListener("popstate",this._onPopState),this._listeningPopState=!1),P._instance===this&&(P._instance=null)}}class A extends HTMLElement{static get observedAttributes(){return["to"]}_childNodeArray=[];_uuid=a();_path="";_router=null;_anchorElement=null;_initialized=!1;_onClick;constructor(){super()}get uuid(){return this._uuid}get router(){if(this._router)return this._router;const t=document.querySelector(e.tagNames.router);if(t)return this._router=t;s(`${e.tagNames.link} is not connected to a router.`)}_initialize(){this.style.display="none",this._childNodeArray=Array.from(this.childNodes),this._path=this.getAttribute("to")||"",this._initialized=!0}_normalizePathname(t){let e=t||"/";return e.startsWith("/")||(e="/"+e),e=e.replace(/\/{2,}/g,"/"),e.length>1&&e.endsWith("/")&&(e=e.slice(0,-1)),e}_joinInternalPath(t,e){const a=(t||"").replace(/\/{2,}/g,"/").replace(/\/$/,""),s=e.startsWith("/")?e:"/"+e,n=this._normalizePathname(s);return a?"/"===n?a+"/":a+n:n}_setAnchorHref(t,a){if(a.startsWith("/"))t.href=this._joinInternalPath(this.router.basename,a);else try{t.href=new URL(a).toString()}catch{s(`[${e.tagNames.link}] Invalid URL in 'to' attribute: ${a}`)}}connectedCallback(){this._initialized||this._initialize();const t=this.parentNode;if(!t)return;const e=this.nextSibling,a=document.createElement("a");this._setAnchorHref(a,this._path);for(const t of this._childNodeArray)a.appendChild(t);e?t.insertBefore(a,e):t.appendChild(a),this._anchorElement=a,E()?.addEventListener("currententrychange",this._updateActiveState),window.addEventListener("wcs:navigate",this._updateActiveState),window.addEventListener("popstate",this._updateActiveState),this._path.startsWith("/")&&!E()?.navigate&&(this._onClick=async t=>{t.defaultPrevented||0===t.button&&(t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||(t.preventDefault(),await this.router.navigate(this._path),this._updateActiveState()))},a.addEventListener("click",this._onClick)),this._updateActiveState()}disconnectedCallback(){E()?.removeEventListener("currententrychange",this._updateActiveState),window.removeEventListener("wcs:navigate",this._updateActiveState),window.removeEventListener("popstate",this._updateActiveState),this._anchorElement&&(this._onClick&&(this._anchorElement.removeEventListener("click",this._onClick),this._onClick=void 0),this._anchorElement.remove(),this._anchorElement=null);for(const t of this._childNodeArray)t.parentNode?.removeChild(t)}attributeChangedCallback(t,e,a){"to"===t&&e!==a&&(this._path=a||"",this._anchorElement&&(this._setAnchorHref(this._anchorElement,this._path),this._updateActiveState()))}_updateActiveState=()=>{const t=this._normalizePathname(new URL(window.location.href).pathname),e=this._normalizePathname(this._path.startsWith("/")?this._joinInternalPath(this.router.basename,this._path):this._path);this._anchorElement&&(t===e?this._anchorElement.classList.add("active"):this._anchorElement.classList.remove("active"))};get anchorElement(){return this._anchorElement}}const k=[],x=new Map;let S=!1;class $ extends HTMLElement{_initialized=!1;_childElementArray=[];constructor(){super(),this.style.display="none"}_initialize(){if(!this._initialized){this._initialized=!0,this._childElementArray=Array.from(this.children);for(const t of this._childElementArray)this.removeChild(t)}}connectedCallback(){this._initialize(),S||(this._captureInitialHead(),S=!0),k.push(this),this._reapplyHead()}disconnectedCallback(){const t=k.indexOf(this);-1!==t&&k.splice(t,1),this._reapplyHead()}get childElementArray(){return this._initialized||s("Head component is not initialized yet."),this._childElementArray}_getKey(t){const e=t.tagName.toLowerCase();if("title"===e)return"title";if("meta"===e){return`meta:${t.getAttribute("name")||""}:${t.getAttribute("property")||""}:${t.getAttribute("http-equiv")||""}:${t.hasAttribute("charset")?"charset":""}:${t.getAttribute("media")||""}`}if("link"===e){return`link:${t.getAttribute("rel")||""}:${t.getAttribute("href")||""}:${t.getAttribute("media")||""}`}return"base"===e?"base":`${e}:${t.outerHTML.slice(0,100)}`}_findInHead(t){const e=document.head;for(const a of Array.from(e.children))if(this._getKey(a)===t)return a;return null}_captureInitialHead(){const t=document.head;for(const e of Array.from(t.children)){const t=this._getKey(e);x.has(t)||x.set(t,e.cloneNode(!0))}}_reapplyHead(){const t=new Set;for(const e of k)for(const a of e._childElementArray)t.add(this._getKey(a));for(const e of x.keys())t.add(e);for(const e of Array.from(document.head.children))t.add(this._getKey(e));for(const e of t){let t=null;for(let a=k.length-1;a>=0;a--){const s=k[a];for(const a of s._childElementArray)if(this._getKey(a)===e){t=a.cloneNode(!0);break}if(t)break}if(!t&&x.has(e)){t=x.get(e).cloneNode(!0)}const a=this._findInHead(e);t?a?a.replaceWith(t):document.head.appendChild(t):a?.remove()}}}function I(){customElements.get(e.tagNames.layout)||customElements.define(e.tagNames.layout,u),customElements.get(e.tagNames.layoutOutlet)||customElements.define(e.tagNames.layoutOutlet,g),customElements.get(e.tagNames.outlet)||customElements.define(e.tagNames.outlet,c),customElements.get(e.tagNames.route)||customElements.define(e.tagNames.route,l),customElements.get(e.tagNames.router)||customElements.define(e.tagNames.router,P),customElements.get(e.tagNames.link)||customElements.define(e.tagNames.link,A),customElements.get(e.tagNames.head)||customElements.define(e.tagNames.head,$)}function R(e){var a;e&&((a=e).tagNames&&Object.assign(t.tagNames,a.tagNames),"boolean"==typeof a.enableShadowRoot&&(t.enableShadowRoot=a.enableShadowRoot),Array.isArray(a.basenameFileExtensions)&&(t.basenameFileExtensions=a.basenameFileExtensions)),I()}export{o as RouteCore,R as bootstrapRouter};
|
|
2
2
|
//# sourceMappingURL=index.esm.min.js.map
|