{"version":3,"file":"ng-devui-theme.mjs","sources":["../../devui/theme/theme.ts","../../devui/theme/key-config.ts","../../devui/theme/theme-data.ts","../../devui/theme/media-query.ts","../../devui/theme/utils/event-bus.ts","../../devui/theme/utils/context-service.ts","../../devui/theme/utils/storage-service.ts","../../devui/theme/theme-service.ts","../../devui/theme/theme-management.ts","../../devui/theme/ng-devui-theme.ts"],"sourcesContent":["export type ThemeId = string;\n\nexport class Theme {\n  id: ThemeId;\n  name: string;\n  cnName?: string;\n  data: {\n    [cssVarName: string]: string;\n  };\n  extends?: ThemeId;\n  isDark?: boolean;\n  isPreview?: boolean;\n  isExtendable?: boolean;\n  extra?: {\n    appendClass?: Array<string>;\n    cssVariables?: {\n      [cssVarName: string]: string;\n    };\n    [prop: string]: any;\n  } | any;\n\n  constructor(theme: {\n    id: ThemeId;\n    name: string;\n    cnName?: string;\n    data: {\n      [cssVarName: string]: string;\n    };\n    extends?: ThemeId;\n    isDark?: boolean;\n    isPreview?: boolean;\n    isExtendable?: boolean;\n  }) {\n    this.id = theme.id;\n    this.name = theme.name;\n    this.cnName = theme.cnName || this.name;\n    this.data = theme.data;\n    this.extends = theme.extends || null;\n    this.isDark = theme?.isDark;\n    this.isPreview = theme.isPreview || false;\n    this.isExtendable = theme.isExtendable || true;\n  }\n}\n","export const THEME_KEY = {\n  userLastPreferTheme : 'user-custom-theme', // localStorage 存储的上一次主题名字\n  userLastPreferThemeData: 'user-custom-theme-data', // localStorage 存储的上一次主题的变量，用于骨架屏阶段快速恢复主题\n  currentTheme: 'devuiCurrentTheme', // context（默认window） 当前主题名字\n  themeCollection: 'devuiThemes', // context（默认window） 存储所有主题集合\n  styleElementId: 'devuiThemeVariables', // DOM Style Element 的 id标识, 标记css变量声明的片段\n  transitionStyleElementId: 'devuiThemeColorTransition',  // DOM Style Element 的 id标识，标记临时使用的css颜色动画\n  uiThemeAttributeName: 'ui-theme', // body 和 style元素标记用户数据\n  themeService: 'devuiThemeService' // 全局window下的theme service实例\n};\n","import { Theme } from './theme';\n\nexport const devuiLightTheme: Theme = new Theme({\n  id: 'devui-light-theme',\n  name: 'Light Mode',\n  cnName: '浅色主题',\n  data: {\n    'devui-global-bg': '#f5f5f5',\n    'devui-glass-morphism-bg': 'rgba(245, 246, 248,0.9)',\n    'devui-global-bg-normal': '#ffffff',\n    'devui-base-bg': '#ffffff',\n    'devui-base-bg-dark': '#333854',\n    'devui-brand': '#5e7ce0',\n    'devui-brand-foil': '#859bff',\n    'devui-brand-hover': '#7693f5',\n    'devui-brand-active': '#526ecc',\n    'devui-brand-active-focus': '#344899',\n    'devui-contrast': '#c7000b',\n    'devui-text': '#252b3a',\n    'devui-text-weak': '#575d6c',\n    'devui-aide-text': '#8a8e99',\n    'devui-aide-text-hover': '#252b3a',\n    'devui-aide-text-stress': '#575d6c',\n    'devui-placeholder': '#8a8e99',\n    'devui-light-text': '#ffffff',\n    'devui-dark-text': '#252b3a',\n    'devui-link': '#526ecc',\n    'devui-link-active': '#344899',\n    'devui-link-light': '#96adfa',\n    'devui-link-light-active': '#beccfa',\n    'devui-line': '#adb0b8',\n    'devui-dividing-line': '#dfe1e6',\n    'devui-block': '#ffffff',\n    'devui-area': '#f8f8f8',\n    'devui-danger': '#f66f6a',\n    'devui-warning': '#fac20a',\n    'devui-waiting': '#9faad7',\n    'devui-success': '#50d4ab',\n    'devui-info': '#5e7ce0',\n    'devui-initial': '#e9edfa',\n    'devui-unavailable': '#f5f5f6',\n    'devui-shadow': 'rgba(0, 0, 0, 0.16)',\n    'devui-light-shadow': 'rgba(0, 0, 0, 0.08)',\n    'devui-connected-overlay-shadow': 'rgba(0, 0, 0, 0.16)',\n    'devui-feedback-overlay-shadow': 'rgba(0, 0, 0, 0.16)',\n    'devui-feedback-overlay-backdrop': 'rgba(0, 0, 0, 0.3)',\n    'devui-hover-shadow': 'rgba(0, 0, 0, 0.16)',\n    'devui-icon-text': '#252b3a',\n    'devui-icon-bg': '#ffffff',\n    'devui-icon-fill': '#252b3a',\n    'devui-icon-fill-weak': '#babbc0',\n    'devui-icon-fill-hover': '#5e7ce0',\n    'devui-icon-fill-active': '#5e7ce0',\n    'devui-icon-fill-active-hover': '#526ecc',\n    'devui-shape-icon-fill': '#d7d8da',\n    'devui-shape-icon-fill-active': '#babbc0',\n    'devui-shape-icon-fill-hover': '#babbc0',\n    'devui-shape-icon-fill-disabled': '#f5f5f5',\n    'devui-form-control-line': '#adb0b8',\n    'devui-form-control-bg': '#ffffff',\n    'devui-form-control-line-hover': '#575d6c',\n    'devui-form-control-line-active': '#5e7ce0',\n    'devui-form-control-interactive-outline': 'rgba(94,124,224,0.08)',\n    'devui-form-control-line-active-hover': '#344899',\n    'devui-list-item-active-bg': '#5e7ce0',\n    'devui-list-item-active-text': '#ffffff',\n    'devui-list-item-active-hover-bg': '#526ecc',\n    'devui-list-item-hover-bg': '#f2f5fc',\n    'devui-list-item-hover-text': '#526ecc',\n    'devui-list-item-selected-bg': '#e9edfa',\n    'devui-list-item-strip-bg': '#f2f5fc',\n    'devui-disabled-bg': '#f5f5f6',\n    'devui-disabled-line': '#dfe1e6',\n    'devui-disabled-text': '#adb0b8',\n    'devui-primary-disabled': '#beccfa',\n    'devui-icon-fill-active-disabled': '#beccfa',\n    'devui-label-bg': '#eef0f5',\n    'devui-connected-overlay-bg': '#ffffff',\n    'devui-connected-overlay-line': '#526ecc',\n    'devui-fullscreen-overlay-bg': '#ffffff',\n    'devui-feedback-overlay-bg': '#464d6e',\n    'devui-feedback-overlay-text': '#dfe1e6',\n    'devui-gray-form-control-bg': '#f5f5f5',\n    'devui-gray-form-control-hover-bg': '#ebebeb',\n    'devui-nav-expand-bg': '#fbfbfc',\n    'devui-embed-search-bg': '#f2f5fc',\n    'devui-embed-search-bg-hover': '#eef0f5',\n    'devui-float-block-shadow': 'rgba(94, 124, 224, 0.3)',\n    'devui-highlight-overlay': 'rgba(255, 255, 255, 0.8)',\n    'devui-range-item-hover-bg': '#e9edfa',\n    'devui-primary': '#5e7ce0',\n    'devui-primary-hover': '#7693f5',\n    'devui-primary-active': '#344899',\n    'devui-contrast-hover': '#d64a52',\n    'devui-contrast-active': '#b12220',\n    'devui-danger-line': '#f66f6a',\n    'devui-danger-bg': '#ffeeed',\n    'devui-warning-line': '#fa9841',\n    'devui-warning-bg': '#fff3e8',\n    'devui-info-line': '#5e7ce0',\n    'devui-info-bg': '#f2f5fc',\n    'devui-success-line': '#50d4ab',\n    'devui-success-bg': '#edfff9',\n    'devui-primary-line': '#5e7ce0',\n    'devui-primary-bg': '#f2f5fc',\n    'devui-default-line': '#5e7ce0',\n    'devui-default-bg': '#f3f6f8',\n    'devui-shadow-length-base': '0 1px 6px 0',\n    'devui-shadow-length-slide-left': '-2px 0 8px 0',\n    'devui-shadow-length-slide-right': '2px 0 8px 0',\n    'devui-shadow-length-connected-overlay': '0 4px 12px 0',\n    'devui-shadow-length-hover': '0 8px 24px 0',\n    'devui-shadow-length-feedback-overlay': '0 8px 16px 0',\n    'devui-shadow-length-fullscreen-overlay': '0 16px 48px 0',\n    'devui-border-radius': '2px',\n    'devui-border-radius-feedback': '4px',\n    'devui-border-radius-card': '6px',\n    'devui-border-radius-full': '100px',\n    'devui-font-size': '12px',\n    'devui-font-size-card-title': '14px',\n    'devui-font-size-page-title': '16px',\n    'devui-font-size-modal-title': '18px',\n    'devui-font-size-price': '20px',\n    'devui-font-size-data-overview': '24px',\n    'devui-font-size-icon': '16px',\n    'devui-font-size-sm': '12px',\n    'devui-font-size-md': '12px',\n    'devui-font-size-lg': '14px',\n    'devui-font-title-weight': 'bold',\n    'devui-font-content-weight': 'normal',\n    'devui-line-height-base': '1.5',\n    'devui-animation-ease-in-smooth': 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n    'devui-animation-duration-slow': '300ms',\n    'devui-animation-duration-base': '200ms',\n    'devui-animation-duration-fast': '100ms',\n    'devui-animation-ease-in': 'cubic-bezier(0.5, 0, 0.84, 0.25)',\n    'devui-animation-ease-out': 'cubic-bezier(0.16, 0.75, 0.5, 1)',\n    'devui-animation-ease-in-out': 'cubic-bezier(0.5, 0.05, 0.5, 0.95)',\n    'devui-animation-ease-in-out-smooth': 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n    'devui-animation-linear': 'cubic-bezier(0, 0, 1, 1)',\n    'devui-z-index-full-page-overlay': '1080',\n    'devui-z-index-pop-up': '1060',\n    'devui-z-index-dropdown': '1052',\n    'devui-z-index-modal': '1050',\n    'devui-z-index-drawer': '1040',\n    'devui-z-index-framework': '1000',\n    'devui-icon-active-color': '#ffffff',\n    'devui-table-column-shadow-color': 'rgba(37,43,58,0.08)'\n  },\n  isDark: false,\n});\nexport const devuiGreenTheme: Theme = new Theme({\n  id: 'avenueui-green-theme',\n  name: 'Green - Light Mode',\n  cnName: '绿色主题',\n  data: {\n    ...devuiLightTheme.data,\n    'devui-global-bg': '#f5f5f5',\n    'devui-glass-morphism-bg': 'rgba(245, 246, 248,0.9)',\n    'devui-brand': '#3DCCA6',\n    'devui-brand-foil': '#7fdac1',\n    'devui-brand-hover': '#6DDEBB',\n    'devui-brand-active': '#07c693',\n    'devui-brand-active-focus': '#369676',\n    'devui-link': '#07c693',\n    'devui-link-active': '#07c693',\n    'devui-link-light': '#96fac8',\n    'devui-link-light-active': '#befade',\n    'devui-info': '#079CCD',\n    'devui-initial': '#CCCCCC',\n    'devui-icon-fill-active': '#3DCCA6',\n    'devui-icon-fill-active-hover': '#07c693',\n    'devui-form-control-line-active': '#3DCCA6',\n    'devui-form-control-interactive-outline': 'rgba(61,204,166,0.08)',\n    'devui-form-control-line-active-hover': '#2EB28A',\n    'devui-list-item-active-bg': '#3DCCA6',\n    'devui-list-item-active-hover-bg': '#07c693',\n    'devui-list-item-hover-bg': '#f3fef9',\n    'devui-list-item-hover-text': '#07c693',\n    'devui-list-item-selected-bg': '#f3fef9',\n    'devui-list-item-strip-bg': '#f3fef9',\n    'devui-connected-overlay-line': '#07c693',\n    'devui-embed-search-bg': '#f3fef9',\n    'devui-float-block-shadow': 'rgba(94, 224, 181, 0.3)',\n    'devui-primary': '#3DCCA6',\n    'devui-primary-hover': '#6DDEBB',\n    'devui-primary-active': '#369676',\n    'devui-info-line': '#0486b1',\n    'devui-info-bg': '#e3f0f5',\n    'devui-success-line': '#50d492',\n    'devui-success-bg': '#edfff9',\n    'devui-primary-line': '#3DCCA6',\n    'devui-primary-bg': '#f3fef9',\n    'devui-default-line': '#3DCCA6',\n    'devui-default-bg': '#f3f8f7',\n    'devui-primary-disabled': '#c5f0e5',\n    'devui-icon-fill-active-disabled': '#c5f0e5',\n    'devui-range-item-hover-bg': '#d8f9ea',\n  },\n  extends: 'devui-light-theme',\n  isDark: false,\n});\nexport const devuiDarkTheme: Theme = new Theme({\n  id: 'devui-dark-theme',\n  name: 'Dark Mode',\n  cnName: '深色主题',\n  data: {\n    ...devuiLightTheme.data,\n    'devui-global-bg': '#202124',\n    'devui-glass-morphism-bg': 'rgba(32,33,36,0.9)',\n    'devui-global-bg-normal': '#202124',\n    'devui-base-bg': '#2E2F31',\n    'devui-base-bg-dark': '#2e2f31',\n    'devui-brand': '#5e7ce0',\n    'devui-brand-foil': '#313a61',\n    'devui-brand-hover': '#425288',\n    'devui-brand-active': '#526ecc',\n    'devui-brand-active-focus': '#344899',\n    'devui-contrast': '#C7000B',\n    'devui-text': '#E8E8E8',\n    'devui-text-weak': '#A0A0A0',\n    'devui-aide-text': '#909090',\n    'devui-aide-text-hover': '#73788a',\n    'devui-aide-text-stress': '#A0A0A0',\n    'devui-placeholder': '#8A8A8A',\n    'devui-light-text': '#ffffff',\n    'devui-dark-text': '#252b3a',\n    'devui-link': '#526ECC',\n    'devui-link-active': '#344899',\n    'devui-link-light': '#96adfa',\n    'devui-link-light-active': '#beccfa',\n    'devui-line': '#505153',\n    'devui-dividing-line': '#3D3E40',\n    'devui-block': '#606061',\n    'devui-area': '#34363A',\n    'devui-danger': '#f66f6a',\n    'devui-warning': '#fac20a',\n    'devui-waiting': '#5e6580',\n    'devui-success': '#50d4ab',\n    'devui-info': '#5e7ce0',\n    'devui-initial': '#64676e',\n    'devui-unavailable': '#5b5b5c',\n    'devui-shadow': 'rgba(0, 0, 0, 0.72)',\n    'devui-light-shadow': 'rgba(0, 0, 0, 0.3)',\n    'devui-connected-overlay-shadow': 'rgba(0, 0, 0, 0.42)',\n    'devui-feedback-overlay-shadow': 'rgba(0, 0, 0, 0.54)',\n    'devui-feedback-overlay-backdrop': 'rgba(0, 0, 0, 0.72)',\n    'devui-hover-shadow': 'rgba(0, 0, 0, 0.54)',\n    // 图标\n    'devui-icon-text': '#E8E8E8',\n    'devui-icon-bg': '#2E2F31',\n    'devui-icon-fill': '#909090',\n    'devui-icon-fill-hover': '#5e7ce0',\n    'devui-icon-fill-active': '#5e7ce0',\n    'devui-icon-fill-active-hover': '#526ecc',\n    'devui-shape-icon-fill': '#5b5d66',\n    'devui-shape-icon-fill-active': '#868a99',\n    // 表单\n    'devui-form-control-line': '#505153',\n    'devui-form-control-bg': '#2E2F31',\n    'devui-form-control-line-hover': '#909090',\n    'devui-form-control-line-active': '#5e7ce0',\n    'devui-form-control-interactive-outline': 'rgba(94,124,224,0.08)',\n    'devui-form-control-line-active-hover': '#344899',\n    'devui-list-item-active-bg': '#5e7ce0',\n    'devui-list-item-active-text': '#ffffff',\n    'devui-list-item-active-hover-bg': '#526ecc',\n    'devui-list-item-hover-bg': '#3d3d42',\n    'devui-list-item-hover-text': '#526ecc',\n    'devui-list-item-selected-bg': '#454545',\n    'devui-list-item-strip-bg': '#383838',\n    'devui-table-expand-area-bg': '#393a3e',\n    // 禁用\n    'devui-disabled-bg': '#3D3E44',\n    'devui-disabled-line': '#505153',\n    'devui-disabled-text': '#7D7D7D',\n    'devui-primary-disabled': '#2B3458',\n    'devui-icon-fill-active-disabled': '#2B3458',\n    // 特殊背景色\n    'devui-label-bg': '#46443F',\n    'devui-connected-overlay-bg': '#2F2F2F',\n    'devui-connected-overlay-line': '#526ecc',\n    'devui-fullscreen-overlay-bg': '#2E2F31',\n    'devui-feedback-overlay-bg': '#4C4C4C',\n    'devui-feedback-overlay-text': '#DFE1E6',\n    'devui-embed-search-bg': '#383838',\n    'devui-embed-search-bg-hover': '#3D3E40',\n    'devui-float-block-shadow': 'rgba(94, 124, 224, 0.3)',\n    'devui-highlight-overlay': 'rgba(255, 255, 255, 0.1)',\n    'devui-range-item-hover-bg': '#454545',\n    // 按钮\n    'devui-primary': '#5e7ce0',\n    'devui-primary-hover': '#425288',\n    'devui-primary-active': '#344899',\n    'devui-contrast-hover': '#D64A52',\n    'devui-contrast-active': '#B12220',\n    // 状态\n    'devui-danger-line': '#985C5A',\n    'devui-danger-bg': '#4B3A39',\n    'devui-warning-line': '#8D6138',\n    'devui-warning-bg': '#554434',\n    'devui-info-line': '#546BB7',\n    'devui-info-bg': '#383D4F',\n    'devui-success-line': '#5D887D',\n    'devui-success-bg': '#304642',\n    'devui-primary-line': '#546BB7',\n    'devui-primary-bg': '#383D4F',\n    'devui-default-line': '#5e7ce0',\n    'devui-default-bg': '#383838',\n    'devui-icon-active-color': '#ffffff',\n    'devui-gray-form-control-bg': '#323338',\n    'devui-gray-form-control-hover-bg': '#393A3E',\n    'devui-table-column-shadow-color': 'rgba(0,0,0,0.08)'\n  },\n  extends: 'devui-light-theme',\n  isDark: true,\n});\nexport const avenueuiGreenDarkTheme: Theme = new Theme({\n  id: 'avenueui-green-dark-theme',\n  name: 'Green - Dark Mode',\n  cnName: '绿色深色主题',\n  data: {\n    ...devuiDarkTheme.data,\n    'devui-brand': '#3DCCA6',\n    'devui-brand-foil': '#395e54',\n    'devui-brand-hover': '#4c9780',\n    'devui-brand-active': '#07c693',\n    'devui-brand-active-focus': '#297058',\n    'devui-link': '#07c693',\n    'devui-link-active': '#08a57b',\n    'devui-info': '#046788',\n    'devui-initial': '#64676e',\n    'devui-icon-fill-active': '#3DCCA6',\n    'devui-icon-fill-active-hover': '#07c693',\n    'devui-form-control-line-active': '#3DCCA6',\n    'devui-form-control-interactive-outline': 'rgba(61,204,166,0.08)',\n    'devui-form-control-line-active-hover': '#297058',\n    'devui-list-item-active-bg': '#3DCCA6',\n    'devui-list-item-active-hover-bg': '#07c693',\n    'devui-list-item-hover-text': '#07c693',\n    'devui-connected-overlay-line': '#07c693',\n    'devui-embed-search-bg': '#3f4241',\n    'devui-float-block-shadow': 'rgba(94, 224, 181, 0.3)',\n    'devui-primary': '#3DCCA6',\n    'devui-primary-hover': '#6DDEBB',\n    'devui-primary-active': '#369676',\n    'devui-info-line': '#035e7c',\n    'devui-info-bg': '#383c3d',\n    'devui-primary-line': '#3DCCA6',\n    'devui-primary-bg': '#3f4241',\n    'devui-default-line': '#3DCCA6',\n    'devui-default-bg': '#383838',\n    'devui-primary-disabled': '#28544B',\n    'devui-icon-fill-active-disabled': '#28544B',\n  },\n  extends: 'devui-dark-theme',\n  isDark: true,\n});\n","import { ReplaySubject } from 'rxjs';\n\nexport class PrefersColorSchemeMediaQuery {\n  private prefersColorSchemeSubject = new ReplaySubject<PrefersColorSchemeMediaQuery.Value>(1);\n  public prefersColorSchemeChange = this.prefersColorSchemeSubject.asObservable();\n\n  register() {\n    matchMedia(PrefersColorSchemeMediaQuery.Query.light).addEventListener('change', this.changeToLight);\n    matchMedia(PrefersColorSchemeMediaQuery.Query.dark).addEventListener('change', this.changeToDark);\n    this.prefersColorSchemeSubject.next(this.getInitValue());\n  }\n\n  unregister() {\n    matchMedia(PrefersColorSchemeMediaQuery.Query.light).removeEventListener('change', this.changeToLight);\n    matchMedia(PrefersColorSchemeMediaQuery.Query.dark).removeEventListener('change', this.changeToDark);\n    this.prefersColorSchemeSubject.complete();\n  }\n\n  handleColorSchemeChange = (value: PrefersColorSchemeMediaQuery.Value) => {\n    this.prefersColorSchemeSubject.next(value);\n  };\n\n  getInitValue(): PrefersColorSchemeMediaQuery.Value {\n    if (typeof window === 'undefined') {\n      return 'light';\n    }\n    return (\n      (window.matchMedia(PrefersColorSchemeMediaQuery.Query.light).matches && 'light') ||\n      (window.matchMedia(PrefersColorSchemeMediaQuery.Query.dark).matches && 'dark') ||\n      'no-preference'\n    );\n  }\n\n  changeToLight(mql) {\n    if (mql.matches) {\n      this.handleColorSchemeChange('light');\n    }\n  }\n\n  changeToDark(mql) {\n    if (mql.matches) {\n      this.handleColorSchemeChange('dark');\n    }\n  }\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-namespace */\nexport namespace PrefersColorSchemeMediaQuery {\n  export type Value = 'light' | 'dark' | 'no-preference';\n  export enum Query {\n    'light' = 'screen and (prefers-color-scheme: light)',\n    'dark' = 'screen and (prefers-color-scheme: dark)',\n    'noPreferences' = 'screen and (prefers-color-scheme: light)',\n  }\n}\n","import { IEventBus } from './interface';\r\n\r\nexport class EventBus implements IEventBus {\r\n  private eventBusCore = [];\r\n\r\n  private areFuncEqual(a, b) {\r\n    return a.toString() === b.toString();\r\n  }\r\n\r\n  private isKeyValueObjInArr(arr, key, val) {\r\n    const filteredArr = arr.filter((entry) => {\r\n      return entry[key] === val;\r\n    });\r\n    return filteredArr.length > 0;\r\n  }\r\n\r\n  private removeFuncInFuncArr(arr, fn) {\r\n    for (let z = 0; z < arr.length; z++) {\r\n      if (this.areFuncEqual(arr[z], fn)) {\r\n        arr.splice(z, 1);\r\n      }\r\n    }\r\n    return arr;\r\n  }\r\n\r\n  private getKeyValueObjInArr(arr, key, val) {\r\n    const filteredArr = arr.filter((entry) => {\r\n      return entry[key] === val;\r\n    });\r\n    return filteredArr[0];\r\n  }\r\n\r\n  private addEvent(eventName, eventFunc) {\r\n    if (!this.isKeyValueObjInArr(this.eventBusCore, 'eventName', eventName)) {\r\n      this.eventBusCore.push({ eventName: eventName, eventFuncArr: [eventFunc] });\r\n    } else {\r\n      this.eventBusCore = this.eventBusCore.map((event) => {\r\n        if (event.eventName === eventName) {\r\n          event.eventFuncArr.push(eventFunc);\r\n        }\r\n        return event;\r\n      });\r\n    }\r\n  }\r\n\r\n  public add(...rest): void {\r\n    const eventName = rest[0];\r\n    const callbacks = rest[1];\r\n    if (!eventName) {\r\n      return;\r\n    }\r\n    if (typeof callbacks === 'function') {\r\n      for (let i = 1; i < rest.length; i++) {\r\n        this.addEvent(eventName, rest[i]);\r\n      }\r\n    }\r\n    if (typeof callbacks === 'object' && callbacks.forEach) {\r\n      callbacks.forEach((fn) => {\r\n        this.addEvent(eventName, fn);\r\n      });\r\n    }\r\n  }\r\n\r\n  public remove(...rest): any[] {\r\n    const eventName = rest[0];\r\n    const callbacks = rest[1];\r\n    if (!eventName) {\r\n      return;\r\n    }\r\n    for (let i = 0; i < this.eventBusCore.length; i++) {\r\n      if (this.eventBusCore[i].eventName === eventName) {\r\n        if (rest.length === 1) {\r\n          return this.eventBusCore.splice(i, 1);\r\n        }\r\n        const removedEvent = this.eventBusCore.splice(i, 1)[0];\r\n        if (typeof callbacks === 'function') {\r\n          for (let k = 1; k < rest.length; k++) {\r\n            removedEvent.eventFuncArr = this.removeFuncInFuncArr(removedEvent.eventFuncArr, rest[k]);\r\n          }\r\n        }\r\n        if (typeof callbacks === 'object' && callbacks.length) {\r\n          for (let x = 0; x < callbacks.length; x++) {\r\n            removedEvent.eventFuncArr = this.removeFuncInFuncArr(removedEvent.eventFuncArr, callbacks[x]);\r\n          }\r\n        }\r\n        this.eventBusCore.push(removedEvent);\r\n      }\r\n    }\r\n  }\r\n\r\n  public trigger(eventName, data) {\r\n    const event = this.getKeyValueObjInArr(this.eventBusCore, 'eventName', eventName);\r\n    if (event) {\r\n      (event.eventFuncArr || []).forEach((fn) => {\r\n        fn.apply(this, data);\r\n      });\r\n    }\r\n  }\r\n}\r\n","import { IContextService } from './interface';\nexport class ContextService implements IContextService {\n  getDataFromNameSpace(nameSpace: string) {\n    if (typeof window === 'undefined') {\n      return null;\n    }\n    return window[nameSpace];\n  }\n  setDataFromNameSpace(nameSpace: string, value: any) {\n    if (typeof window === 'undefined') {\n      return;\n    }\n    window[nameSpace] = value;\n  }\n}\n","import { IStorageService } from './interface';\nexport class StorageService implements IStorageService {\n  tryGetLocalStorage(key: string) {\n    if (typeof window === 'undefined') {\n      return null;\n    }\n    return window.localStorage.getItem(key);\n  }\n  trySetLocalStorage(key: string, value: any) {\n    if (typeof window === 'undefined') {\n      return;\n    }\n    try {\n      window.localStorage.setItem(key, value);\n    } catch (error) {\n      console.error(error);\n    }\n  }\n}\n","import { THEME_KEY } from './key-config';\nimport { PrefersColorSchemeMediaQuery } from './media-query';\nimport { Theme } from './theme';\nimport { ContextService, EventBus, IContextService, IEventBus, IStorageService, StorageService } from './utils/index';\n\nconst THEME_CHANGE_TIME = 400;\nconst THEME_CHANGE_DELAY = 100;\n\n/**\n * 负责CSS变量主题的装卸，主题元数据转换成主题数据\n */\nexport class ThemeService {\n  eventBus: IEventBus;\n  storage: IStorageService;\n  context: IContextService;\n  currentTheme: Theme;\n  contentElement: HTMLStyleElement;\n  colorTransitionElement: HTMLStyleElement;\n  darkChangeHiddenElement: HTMLStyleElement;\n  darkChangeShowElement: HTMLStyleElement;\n  extraData: {\n    [themeId: string]: {\n      cssVariables?: {\n        [varname: string]: string;\n      };\n      appendClasses?: Array<string>;\n    };\n  };\n  private _appendedClasses: Array<string>;\n  set appendClasses(classes: Array<string>) {\n    if (this._appendedClasses) {\n      this.removeAppendedClass(this._appendedClasses);\n    }\n    if (classes) {\n      this.addAppendClass(classes);\n    }\n    this._appendedClasses = classes;\n  }\n\n  get appendClasses() {\n    return this._appendedClasses;\n  }\n\n  public mediaQuery: PrefersColorSchemeMediaQuery;\n\n  constructor(eventBus?: IEventBus, storage?: IStorageService, context?: IContextService) {\n    this.eventBus = eventBus === undefined ? new EventBus() : eventBus;\n    this.storage = storage === undefined ? new StorageService() : storage;\n    this.context = context === undefined ? new ContextService() : context;\n  }\n\n  initializeTheme(specificThemeId?: string, allowDynamicTheme?: boolean) {\n    const themeId = specificThemeId\n                || this.storage.tryGetLocalStorage(THEME_KEY.userLastPreferTheme)\n                || this.context.getDataFromNameSpace(THEME_KEY.currentTheme);\n    let theme;\n\n    if (themeId) {\n      const themes = this.context.getDataFromNameSpace(THEME_KEY.themeCollection);\n      if (themes && Object.keys(themes).length > 0) {\n        theme = themes[themeId];\n        if (!theme) {\n          const key = Object.keys(themes).find(t => themes[t].id === themeId);\n          theme = themes[key];\n        }\n      }\n    }\n    this.currentTheme = theme || {\n      id: 'empty-theme',\n      name: '',\n      data: {},\n      isDark: false\n    };\n    this.createColorTransition();\n    if (!theme && allowDynamicTheme) {\n      document.body.setAttribute(THEME_KEY.uiThemeAttributeName, 'empty-theme');\n      return;\n    }\n    this.applyTheme(this.currentTheme);\n  }\n\n  formatCSSVariables(themeData: Theme['data']) {\n    return Object.keys(themeData).map(\n      cssVar => ('--' + cssVar + ':' + themeData[cssVar])\n    ).join(';');\n  }\n\n  applyTheme(theme: Theme) {\n    if (typeof window === 'undefined' || typeof document === 'undefined') {\n      return;\n    }\n    if (theme.isDark === this.currentTheme.isDark) {\n      this.addColorTransition();\n      this.renderTheme(theme);\n      // 通知外部主题变更\n      this.notify(theme, 'themeChanged');\n      setTimeout(() => {this.removeColorTransition(); }, THEME_CHANGE_TIME + THEME_CHANGE_DELAY);\n    } else {\n      this.themeHidden();\n      setTimeout(() => {\n        this.removeColorTransition();\n        this.renderTheme(theme);\n\n        // 通知外部主题变更\n        this.notify(theme, 'themeChanged');\n        this.themeShow();\n        setTimeout(() => {this.removeColorTransition(); }, THEME_CHANGE_TIME + THEME_CHANGE_DELAY);\n      }, THEME_CHANGE_TIME);\n    }\n\n  }\n\n  renderTheme(theme: Theme) {\n    this.currentTheme = theme;\n    if (!this.contentElement) {\n      const styleElement = document.getElementById(THEME_KEY.styleElementId);\n      if (styleElement) {\n        this.contentElement = <HTMLStyleElement>styleElement;\n      } else {\n        this.contentElement = document.createElement('style');\n        this.contentElement.id = THEME_KEY.styleElementId;\n        document.head.appendChild(this.contentElement);\n      }\n\n    }\n    this.contentElement.innerText = ':root { ' + this.formatCSSVariables(theme.data) + ' }';\n    this.contentElement.setAttribute(THEME_KEY.uiThemeAttributeName, this.currentTheme.id);\n    document.body.setAttribute(THEME_KEY.uiThemeAttributeName, this.currentTheme.id);\n\n    // 用于挂载额外变量和类名\n    this.applyExtraData();\n    this.saveCustomTheme(this.currentTheme);\n  }\n\n  saveCustomTheme(customTheme: Theme) {\n    this.storage.trySetLocalStorage(THEME_KEY.userLastPreferTheme, customTheme.id);\n    this.storage.trySetLocalStorage(THEME_KEY.userLastPreferThemeData, JSON.stringify(customTheme.data));\n    this.context.setDataFromNameSpace(THEME_KEY.currentTheme, customTheme.id);\n  }\n\n  private notify(theme: Theme, eventType: string) {\n    if (!this.eventBus) { return; }\n    this.eventBus.trigger(eventType, theme);\n  }\n\n  setEventBus(eb: IEventBus) {\n    this.eventBus = eb;\n  }\n\n  private addAppendClass(classNames: Array<string>) {\n    if (typeof document === 'undefined') {\n      return;\n    }\n    document.body.classList.add(...classNames);\n  }\n\n  private removeAppendedClass(classNames: Array<string>) {\n    if (typeof document === 'undefined') {\n      return;\n    }\n    document.body.classList.remove(...classNames);\n  }\n\n  setExtraData(data, apply = false) {\n    this.extraData = data;\n    if (apply) {\n      this.applyExtraData();\n    }\n  }\n\n  private applyExtraData() {\n    const theme = this.currentTheme;\n    if (this.extraData && this.extraData[theme.id] && this.extraData[theme.id].cssVariables) {\n      this.contentElement.innerText\n      = ':root { ' + this.formatCSSVariables(theme.data) + ' }'\n      + ':root { ' + this.formatCSSVariables(this.extraData[theme.id].cssVariables) + ' }';\n    }\n    if (this.extraData && this.extraData[theme.id] && this.extraData[theme.id].appendClasses) {\n      this.appendClasses = this.extraData[theme.id].appendClasses;\n    } else {\n      this.appendClasses = undefined;\n    }\n  }\n\n  public unloadTheme() {\n    if (typeof document === 'undefined') {\n      return null;\n    }\n    if (this.contentElement && document.contains(this.contentElement)) {\n      this.contentElement.parentElement.removeChild(this.contentElement);\n    }\n    if (this.appendClasses) {\n      this.appendClasses = undefined;\n    }\n  }\n\n  public registerMediaQuery() {\n    if (!this.mediaQuery) {\n      this.mediaQuery = new PrefersColorSchemeMediaQuery();\n    }\n    this.mediaQuery.register();\n  }\n\n  public unregisterMediaQuery() {\n    if (!this.mediaQuery) {\n      return;\n    }\n    this.mediaQuery.unregister();\n    this.mediaQuery = undefined;\n  }\n\n  private createColorTransition() {\n    if (typeof document === 'undefined') {\n      return;\n    }\n    this.colorTransitionElement = document.createElement('style');\n    this.darkChangeHiddenElement = document.createElement('style');\n    this.darkChangeShowElement = document.createElement('style');;\n    this.colorTransitionElement.id = THEME_KEY.transitionStyleElementId;\n    this.darkChangeHiddenElement.id = THEME_KEY.transitionStyleElementId;\n    this.darkChangeShowElement.id = THEME_KEY.transitionStyleElementId;\n    this.colorTransitionElement.innerText = `\n      * { transition: background .3s ease-out, background-color .3s ease-out,\n                    border .3s ease-out, border-color .3s ease-out,\n                    box-shadow .3s ease-out, box-shadow-color .3s ease-out}\n    `;\n\n    this.darkChangeHiddenElement.innerText = `\n      * {\n        transition: background .3s ease-out, background-color .3s ease-out,\n        border .3s ease-out, border-color .3s ease-out,\n        box-shadow .3s ease-out, box-shadow-color .3s ease-out\n      }\n      body {\n        animation-duration: 400ms;\n        animation-name: hidden;\n        animation-iteration-count: 1;\n      }\n      @keyframes hidden {\n        from {\n          opacity: 1;\n        }\n      \n        to {\n          opacity: 0.1;\n        }\n      }\n    `;\n\n    this.darkChangeShowElement.innerText = `\n      body {\n        animation-duration: 400ms;\n        animation-name: show;\n        animation-iteration-count: 1;\n      }\n      @keyframes show {\n        from {\n          opacity: 0.1;\n        }\n      \n        to {\n          opacity: 1;\n        }\n      }\n    `;\n  }\n\n  private themeHidden() {\n    if (typeof document === 'undefined') {\n      return;\n    }\n    document.head.appendChild(this.darkChangeHiddenElement);\n  }\n\n  private themeShow() {\n    if (typeof document === 'undefined') {\n      return;\n    }\n    document.head.appendChild(this.darkChangeShowElement);\n  }\n\n  private addColorTransition() {\n    if (typeof document === 'undefined') {\n      return;\n    }\n    document.head.appendChild(this.colorTransitionElement);\n  }\n  private removeColorTransition() {\n    if (this.colorTransitionElement.parentElement) {\n      this.colorTransitionElement.parentElement.removeChild(this.colorTransitionElement);\n    }\n\n    if (this.darkChangeShowElement.parentElement) {\n      this.darkChangeShowElement.parentElement.removeChild(this.darkChangeShowElement);\n    }\n\n    if (this.darkChangeHiddenElement.parentElement) {\n      this.darkChangeHiddenElement.parentElement.removeChild(this.darkChangeHiddenElement);\n    }\n\n  }\n}\n","import cssVars from 'css-vars-ponyfill';\r\nimport { Subscription } from 'rxjs';\r\nimport { THEME_KEY } from './key-config';\r\nimport { Theme } from './theme';\r\nimport { devuiDarkTheme, devuiLightTheme } from './theme-data';\r\nimport { ThemeService } from './theme-service';\r\nimport { EventBus } from './utils';\r\n\r\n/**\r\n * usage\r\n * main.ts\r\n ```ts\r\n import { ThemeServiceInit } from 'ng-devui/theme';\r\n ThemeServiceInit();\r\n ```\r\n *\r\n*/\r\nexport function ThemeServiceInit(\r\n  themes?: { [themeName: string]: Theme },\r\n  defaultThemeName?: string,\r\n  extraData?: {\r\n    [themeName: string]: {\r\n      appendClasses?: Array<string>;\r\n      cssVariables?: {\r\n        [cssVarName: string]: string;\r\n      };\r\n    };\r\n  },\r\n  ieSupport = false, // TODO：css-var-ponyflll 仍有一些问题待定位\r\n  allowDynamicTheme = false\r\n) {\r\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\r\n    return null;\r\n  }\r\n  window[THEME_KEY.themeCollection] = themes || {\r\n    'devui-light-theme': devuiLightTheme,\r\n    'devui-dark-theme': devuiDarkTheme,\r\n  };\r\n  window[THEME_KEY.currentTheme] = defaultThemeName || 'devui-light-theme';\r\n  const eventBus = (window as any).globalEventBus || new EventBus(); // window.globalEventBus 为 框架的事件总线\r\n  const themeService = new ThemeService(eventBus);\r\n  window[THEME_KEY.themeService] = themeService;\r\n\r\n  themeService.setExtraData(\r\n    extraData || {\r\n      'devui-dark-theme': {\r\n        appendClasses: ['dark-mode'],\r\n      },\r\n    }\r\n  );\r\n\r\n  const currentTheme = window?.localStorage.getItem(THEME_KEY.userLastPreferTheme) || defaultThemeName;\r\n  themeService.initializeTheme(currentTheme, allowDynamicTheme);\r\n  if (ieSupport) {\r\n    ieSupportCssVar();\r\n  }\r\n  return themeService;\r\n}\r\n\r\nexport function ThemeServiceFollowSystemOn(themeConfig?: { lightThemeName: string; darkThemeName: string }): Subscription {\r\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\r\n    return null;\r\n  }\r\n  const themeService: ThemeService = window[THEME_KEY.themeService];\r\n  themeService.registerMediaQuery();\r\n  return themeService.mediaQuery.prefersColorSchemeChange.subscribe((value) => {\r\n    if (value === 'dark') {\r\n      themeService.applyTheme(window[THEME_KEY.themeCollection][(themeConfig && themeConfig.darkThemeName) || 'devui-dark-theme']);\r\n    } else {\r\n      themeService.applyTheme(window[THEME_KEY.themeCollection][(themeConfig && themeConfig.lightThemeName) || 'devui-light-theme']);\r\n    }\r\n  });\r\n}\r\nexport function ThemeServiceFollowSystemOff(sub?: Subscription) {\r\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\r\n    return;\r\n  }\r\n  if (sub) {\r\n    sub.unsubscribe();\r\n  }\r\n  const themeService = window[THEME_KEY.themeService];\r\n  themeService.unregisterMediaQuery();\r\n}\r\n\r\nexport function ieSupportCssVar() {\r\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\r\n    return;\r\n  }\r\n  const isNativeSupport = ((window as any).CSS && CSS.supports && CSS.supports('(--a: 0)')) || false;\r\n  if (isNativeSupport) {\r\n    return;\r\n  }\r\n  cssVars({ watch: true, silent: true });\r\n  const observer = new MutationObserver((mutations) => {\r\n    mutations.forEach((mutation) => {\r\n      cssVars({ watch: false, silent: true });\r\n      cssVars({ watch: true, silent: true });\r\n    });\r\n  });\r\n\r\n  const config = { attributes: true, attributeFilter: [THEME_KEY.uiThemeAttributeName] };\r\n\r\n  observer.observe(document.querySelector(`#${THEME_KEY.styleElementId}`), config);\r\n}\r\n\r\n// TODO: management should handle add / remove theme from theme collection.\r\n// TODO: move global variables（window.xxxx） to single namespace\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}