{"version":3,"file":"theme-btn.mjs","sources":["../../../../packages/theme/theme-btn/theme-btn.component.ts","../../../../packages/theme/theme-btn/theme-btn.module.ts","../../../../packages/theme/theme-btn/theme-btn.ts"],"sourcesContent":["import { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  InjectionToken,\n  input,\n  isDevMode,\n  OnDestroy,\n  output,\n  Renderer2\n} from '@angular/core';\n\nimport { AlainConfigService } from '@delon/util/config';\nimport { NzDropdownDirective, NzDropdownMenuComponent } from 'ng-zorro-antd/dropdown';\nimport { NzMenuDirective, NzMenuItemComponent } from 'ng-zorro-antd/menu';\nimport { NzTooltipDirective } from 'ng-zorro-antd/tooltip';\n\nexport interface ThemeBtnType {\n  key: string;\n  text: string;\n}\n\nexport const ALAIN_THEME_BTN_KEYS = new InjectionToken<string>('ALAIN_THEME_BTN_KEYS');\n\n@Component({\n  selector: 'theme-btn',\n  template: `\n    <div\n      class=\"ant-avatar ant-avatar-circle ant-avatar-icon\"\n      nz-dropdown\n      nzPlacement=\"topCenter\"\n      [nzDropdownMenu]=\"types().length > 0 ? menu : null\"\n    >\n      <svg\n        nz-tooltip\n        [nzTooltipTitle]=\"isDev ? devTips() : null\"\n        class=\"anticon\"\n        role=\"img\"\n        width=\"21\"\n        height=\"21\"\n        viewBox=\"0 0 21 21\"\n        fill=\"currentColor\"\n      >\n        <g fill-rule=\"evenodd\">\n          <g fill-rule=\"nonzero\">\n            <path\n              d=\"M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z\"\n            />\n          </g>\n        </g>\n      </svg>\n      <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n        <ul nz-menu nzSelectable>\n          @for (i of types(); track $index) {\n            <li nz-menu-item (click)=\"onThemeChange(i.key)\">{{ i.text }}</li>\n          }\n        </ul>\n      </nz-dropdown-menu>\n    </div>\n  `,\n  host: {\n    class: 'theme-btn',\n    '[class.theme-btn-rtl]': `dir() === 'rtl'`\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NzDropdownDirective, NzDropdownMenuComponent, NzMenuDirective, NzMenuItemComponent, NzTooltipDirective]\n})\nexport class ThemeBtnComponent implements OnDestroy {\n  private readonly doc = inject(DOCUMENT);\n  private readonly platform = inject(Platform);\n  private readonly renderer = inject(Renderer2);\n  private readonly configSrv = inject(AlainConfigService);\n  protected dir = inject(Directionality).valueSignal;\n  private key = inject(ALAIN_THEME_BTN_KEYS, { optional: true }) ?? 'site-theme';\n\n  private theme = 'default';\n  protected isDev = isDevMode();\n  readonly types = input([\n    { key: 'default', text: 'Default Theme' },\n    { key: 'dark', text: 'Dark Theme' },\n    { key: 'compact', text: 'Compact Theme' }\n  ] as ThemeBtnType[]);\n  readonly devTips = input(`When the dark.css file can't be found, you need to run it once: npm run theme`);\n  readonly deployUrl = input('');\n  readonly themeChange = output<string>();\n\n  constructor() {\n    afterNextRender(() => this.initTheme());\n  }\n\n  private initTheme(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.theme = localStorage.getItem(this.key) ?? 'default';\n    this.updateChartTheme();\n    this.onThemeChange(this.theme);\n  }\n\n  private updateChartTheme(): void {\n    this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });\n  }\n\n  onThemeChange(theme: string): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.theme = theme;\n    this.themeChange.emit(theme);\n    this.renderer.setAttribute(this.doc.body, 'data-theme', theme);\n    const dom = this.doc.getElementById(this.key);\n    if (dom) {\n      dom.remove();\n    }\n    localStorage.removeItem(this.key);\n    if (theme !== 'default') {\n      const el = this.doc.createElement('link');\n      el.type = 'text/css';\n      el.rel = 'stylesheet';\n      el.id = this.key;\n      el.href = `${this.deployUrl()}assets/style.${theme}.css`;\n\n      localStorage.setItem(this.key, theme);\n      this.doc.body.append(el);\n    }\n    this.updateChartTheme();\n  }\n\n  ngOnDestroy(): void {\n    const el = this.doc.getElementById(this.key);\n    if (el != null) {\n      this.doc.body.removeChild(el);\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzDropdownModule } from 'ng-zorro-antd/dropdown';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\n\nimport { ThemeBtnComponent } from './theme-btn.component';\n\nconst COMPONENTS = [ThemeBtnComponent];\n\n@NgModule({\n  imports: [CommonModule, NzDropdownModule, NzTooltipModule, ...COMPONENTS],\n  exports: COMPONENTS\n})\nexport class ThemeBtnModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}