{"version":3,"file":"tethys-pro-core.mjs","sources":["../../../../packages/components/core/menu.ts","../../../../packages/components/core/menu-load-default-strategy.ts","../../../../packages/components/core/store/global.store.ts","../../../../packages/components/core/settings.config.ts","../../../../packages/components/core/provide-settings.ts","../../../../packages/components/core/provide-menu-load-strategy.ts","../../../../packages/components/core/tethys-pro-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport interface ThyMenuRoute {\n    path?: string;\n    title: string;\n    icon?: string;\n    children?: ThyMenuRoute[];\n    parent?: ThyMenuRoute;\n}\n\nexport interface ThyMenuLoadStrategy {\n    load(): Observable<ThyMenuRoute[]>;\n    getMenuByRoute(route: Route): ThyMenuRoute | undefined;\n}\n\nexport const THY_MENU_LOAD_STRATEGY = new InjectionToken<ThyMenuLoadStrategy>('THY_MENU_LOAD_STRATEGY');\n","import { Observable, of } from 'rxjs';\nimport { ThyMenuLoadStrategy, ThyMenuRoute } from './menu';\nimport { inject, Injectable } from '@angular/core';\nimport { Route, Router } from '@angular/router';\n\nfunction routeIsActual(route: Route) {\n    return route.path || (!route.path && !route.redirectTo);\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ThyMenuLoadDefaultStrategy implements ThyMenuLoadStrategy {\n    private router = inject(Router);\n\n    private menuByRouteMap = new Map<Route, ThyMenuRoute>();\n\n    private parseMenuByRoute(parentRoute: Route, parentMenu?: ThyMenuRoute): ThyMenuRoute[] {\n        const routes = parentRoute?.children\n            ?.filter((route) => {\n                return routeIsActual(route) && route.data && route.data.title;\n            })\n            .map((route) => {\n                const result: ThyMenuRoute = {\n                    title: route.data?.title,\n                    icon: route.data?.icon,\n                    path: route.path,\n                    parent: parentMenu\n                };\n                result.children = this.parseMenuByRoute(route, result);\n                this.menuByRouteMap.set(route, result);\n                return result;\n            });\n        return routes as ThyMenuRoute[];\n    }\n\n    load(): Observable<ThyMenuRoute[]> {\n        const rootRoute = this.router.config.find((route) => route.path === '');\n        if (rootRoute) {\n            return of(this.parseMenuByRoute(rootRoute));\n        } else {\n            return of([]);\n        }\n    }\n\n    getMenuByRoute(route: Route): ThyMenuRoute | undefined {\n        return this.menuByRouteMap.get(route);\n    }\n}\n","import { inject, Inject, Injectable } from '@angular/core';\nimport { Action, Store } from '@tethys/store';\nimport { ThyGlobalInfo, ThySiteSettings } from '../global.entity';\nimport { THY_SITE_SETTINGS } from '../settings.config';\nimport { THY_MENU_LOAD_STRATEGY, ThyMenuRoute } from '../menu';\nimport { ThyMenuLoadDefaultStrategy } from '../menu-load-default-strategy';\nimport { Route } from '@angular/router';\nimport { tap } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ThyGlobalStore<T extends ThyGlobalInfo = ThyGlobalInfo> extends Store<T> {\n    private menuCustomLoadStrategy = inject(THY_MENU_LOAD_STRATEGY, { optional: true });\n    private menuDefaultLoadStrategy = inject(ThyMenuLoadDefaultStrategy);\n\n    private get menuLoadStrategy() {\n        return this.menuCustomLoadStrategy || this.menuDefaultLoadStrategy;\n    }\n\n    constructor() {\n        super({});\n    }\n\n    @Action()\n    initialize() {\n        return this.menuLoadStrategy.load().pipe(\n            tap((menus) => {\n                this.initializeMenus(menus);\n            })\n        );\n    }\n\n    @Action()\n    initializeMenus(menus: ThyMenuRoute[]) {\n        this.update((state) => {\n            return {\n                ...state,\n                menus\n            };\n        });\n    }\n\n    @Action()\n    pureUpdateActiveMenuByRoute(route: Route | undefined | null) {\n        if (route) {\n            const menu = this.menuLoadStrategy.getMenuByRoute(route);\n            this.update({ activeMenu: menu } as Partial<T>);\n        }\n    }\n\n    @Action()\n    pureUpdateActiveMenu(menu: ThyMenuRoute) {\n        this.update({ activeMenu: menu } as Partial<T>);\n    }\n\n    @Action()\n    pureUpdateSettings(config: Partial<ThySiteSettings>) {\n        this.update({\n            settings: {\n                ...this.snapshot.settings,\n                ...config\n            }\n        } as Partial<T>);\n        for (const key in config) {\n            if (key === 'layout') {\n                this.changeTheme();\n            }\n            if (key === 'primaryColor') {\n                this.changePrimaryColor();\n            }\n        }\n    }\n\n    // 切换主题\n    changeTheme() {}\n\n    // 切换主色\n    changePrimaryColor() {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThySiteSettings } from './global.entity';\n\nexport const THY_SITE_SETTINGS = new InjectionToken<ThySiteSettings>('thy-site-settings');\n\nexport const THY_DEFAULT_SITE_SETTINGS = {\n    theme: 'light',\n    primaryColor: '#6698ff',\n    layout: 'side',\n    showHeader: true,\n    showFooter: true,\n    fixSiderbar: true,\n    fixedHeader: true,\n    splitMenu: false\n};\n\nexport const THY_SITE_SETTINGS_PROVIDER = {\n    provide: THY_SITE_SETTINGS,\n    useValue: THY_DEFAULT_SITE_SETTINGS\n};\n","import { ThySiteSettings } from './global.entity';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { THY_DEFAULT_SITE_SETTINGS, THY_SITE_SETTINGS } from './settings.config';\n\nexport function provideSettings(settings: ThySiteSettings): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        {\n            provide: THY_SITE_SETTINGS,\n            useValue: Object.assign({}, THY_DEFAULT_SITE_SETTINGS, settings)\n        }\n    ]);\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { THY_MENU_LOAD_STRATEGY, ThyMenuLoadStrategy } from './menu';\n\nexport function provideMenuLoadStrategy(factory: () => ThyMenuLoadStrategy): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        {\n            provide: THY_MENU_LOAD_STRATEGY,\n            useFactory: () => {\n                return factory();\n            }\n        }\n    ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}