{"version":3,"file":"ng-stalk-core-service.mjs","sources":["../../components/core/service/mag-bootstrap/mag-bootstrap.service.ts","../../components/core/service/mag-config-service/mag-config.service.ts","../../components/core/service/mag-code-cache-service/mag-code-cache.service.ts","../../components/core/service/mag-config-service/config.ts","../../components/core/service/mag-config-service/mag-global-config.service.ts","../../components/core/service/mag-frame-service/mag-frame.service.ts","../../components/core/service/mag-date-service/mag-date.service.ts","../../components/core/service/mag-dialog-service/mag-dialog.service.ts","../../components/core/service/mag-event-service/mag-event.ts","../../components/core/service/mag-event-service/mag-event.service.ts","../../components/core/service/mag-form-service/mag-form.service.ts","../../components/core/service/mag-match-media-service/mag-match-media.service.ts","../../components/core/service/mag-space-service/mag-space-info.ts","../../components/core/service/mag-space-service/mag-space-status.ts","../../components/core/service/mag-space-service/mag-space.service.ts","../../components/core/service/mag-splash-screen.service.ts","../../components/core/service/ns-code-service/ns-code.service.ts","../../components/core/service/submitting-service/mag-submitting.service.ts","../../components/core/service/public-api.ts","../../components/core/service/ng-stalk-core-service.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { MagSupport } from 'ng-stalk/core/model';\nimport { MagDynamicConfig } from 'ng-stalk/core/model';\n\n@Injectable()\nexport class MagBootstrapService {\n  // viewConfigSubscription: Subscription;\n\n  viewConfigChange: BehaviorSubject<MagDynamicConfig>;\n\n  constructor() {\n    this.viewConfigChange = new BehaviorSubject(new MagDynamicConfig());\n  }\n\n  // @ts-ignore\n  bootstrap(magSupport: MagSupport): void {\n    // this.viewConfigSubscription = magSupport.connectDynamicConfig().subscribe((viewConfig:MagDynamicConfig) => {\n    //   console.info(\"****************\", viewConfig.sidebar);\n    //   this.updateNavigation(viewConfig.sidebar)\n    //\n    //   this.viewConfigChange.next(viewConfig);\n    // });\n  }\n\n  // connectViewConfig(): Observable<MagDynamicConfig> {\n  //     return this.viewConfigChange.asObservable();\n  // }\n  //\n  // updateNavigation(navigations: SidebarItem[]) {\n  //     // Register the navigation to the service\n  //     this.navigationService.register('main', navigations);\n  //\n  //     // Set the main navigation as our current navigation\n  //     this.navigationService.setCurrentNavigation('main');\n  // }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\nimport { MagInitConfig } from 'ng-stalk/core/model';\nimport { CodeAndName } from 'ng-stalk/core/types';\n\n// TODO mag-remote-config 서비스로 변경을 고려하자\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagConfigService<T extends MagInitConfig> {\n  initConfig?: T;\n\n  constructor() {}\n\n  public init(magInitConfig: T): void {\n    this.initConfig = magInitConfig;\n    console.info('@MAG: MagConfigService init config initialized:', this.initConfig);\n  }\n\n  public getInitConfig(): T {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    return this.initConfig;\n  }\n\n  public getColorList(group: string): CodeAndName[] {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    if (!this.initConfig.colors) {\n      return [];\n    }\n    return this.initConfig.colors[group] ? this.initConfig.colors[group] : [];\n  }\n\n  public getColorOne(group: string, key: string): CodeAndName {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    const found = _.find(this.getColorList(group), {\n      code: key\n    });\n    return found as CodeAndName;\n  }\n\n  public getIconList(group: string): CodeAndName[] {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    if (!this.initConfig.icons) {\n      return [];\n    }\n    return this.initConfig.icons[group] ? this.initConfig.icons[group] : [];\n  }\n\n  public getIconOne(group: string, key: string): CodeAndName {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    const found = _.find(this.getIconList(group), {\n      code: key\n    });\n    return found as CodeAndName;\n  }\n\n  public getStatusList(group: string): CodeAndName[] {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    if (!this.initConfig.statuses) {\n      return [];\n    }\n    return this.initConfig.statuses[group] ? this.initConfig.statuses[group] : [];\n  }\n\n  public getStatusOne(group: string, key: string): CodeAndName {\n    if (!this.initConfig) {\n      throw new Error('MagConfigService was not initialized.');\n    }\n    const found = _.find(this.getStatusList(group), {\n      code: key\n    });\n    return found as CodeAndName;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\n\nimport { CodeAndName } from 'ng-stalk/core/types';\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\nimport { MagConfigService } from '../mag-config-service/mag-config.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagCodeCacheService {\n  codeCache: { [key: string]: CodeAndName[] } = {};\n\n  constructor(private magConfigService: MagConfigService<NzSafeAny>) {}\n\n  getList(group: string): CodeAndName[] {\n    this.checkInitialized();\n    return this.codeCache[group] ? this.codeCache[group] : [];\n  }\n\n  getOne(group: string, key: string): CodeAndName {\n    this.checkInitialized();\n    const found = _.find(this.getList(group), {\n      code: key\n    });\n    return found as CodeAndName;\n  }\n\n  checkInitialized(): void {\n    if (!this.codeCache) {\n      this.codeCache = this.magConfigService.getInitConfig().codes;\n    }\n  }\n\n  // TODO mag : do deprecate\n  public setCodeData(codeData: NzSafeAny): void {\n    this.codeCache = codeData;\n  }\n\n  // TODO mag : do deprecate?\n  public addGroup(group: string, codeAndNames: CodeAndName[] = []): void {\n    this.codeCache[group] = codeAndNames;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { InjectionToken, TemplateRef, Type } from '@angular/core';\n\nimport { SafeUrl } from '@angular/platform-browser';\nimport { MagInitConfig } from 'ng-stalk/core/model';\nimport { CodeAndName } from 'ng-stalk/core/types';\nimport { NzBreakpointEnum } from 'ng-zorro-antd/core/services';\nimport { NzSafeAny, NzShapeSCType, NzSizeDSType, NzSizeLDSType, NzSizeMDSType } from 'ng-zorro-antd/core/types';\n\nexport interface MagConfig {\n  i18nPairValuePipe?: I18nPairValuePipeConfig;\n  datetime?: DatetimeConfig;\n  frame?: FrameConfig;\n  code?: CodeConfig;\n\n  affix?: AffixConfig;\n  select?: SelectConfig;\n  alert?: AlertConfig;\n  anchor?: AnchorConfig;\n  avatar?: AvatarConfig;\n  backTop?: BackTopConfig;\n  badge?: BadgeConfig;\n  button?: ButtonConfig;\n  card?: CardConfig;\n  carousel?: CarouselConfig;\n  cascader?: CascaderConfig;\n  codeEditor?: CodeEditorConfig;\n  collapse?: CollapseConfig;\n  collapsePanel?: CollapsePanelConfig;\n  datePicker?: DatePickerConfig;\n  descriptions?: DescriptionsConfig;\n  drawer?: DrawerConfig;\n  empty?: EmptyConfig;\n  form?: FormConfig;\n  icon?: IconConfig;\n  message?: MessageConfig;\n  modal?: ModalConfig;\n  notification?: NotificationConfig;\n  pageHeader?: PageHeaderConfig;\n  progress?: ProgressConfig;\n  rate?: RateConfig;\n  space?: SpaceConfig;\n  spin?: SpinConfig;\n  switch?: SwitchConfig;\n  table?: TableConfig;\n  tabs?: TabsConfig;\n  timePicker?: TimePickerConfig;\n  tree?: TreeConfig;\n  treeSelect?: TreeSelectConfig;\n  typography?: TypographyConfig;\n}\n\nexport interface DatetimeConfig {\n  mzDebug?: boolean;\n  mzDatetimeAsNoLimitedTime?: string;\n  mzTranslateCodeForNoLimitedTime?: string;\n  mzExposeValueIfNoLimitedTime?: boolean;\n}\n\nexport interface I18nPairValuePipeConfig {\n  mzDebug?: boolean;\n  mzKeyProperty?: string;\n  mzValueProperty?: string;\n  mzDefaultLang?: string;\n}\n\nexport interface FrameConfig extends MagInitConfig {\n  selectedLang?: string;\n}\n\nexport type MagInitConfigCallback = () => Promise<MagInitConfig>;\n\nexport interface CodeConfig {\n  data?: { [key: string]: CodeAndName[] };\n  initConfigCallback?: MagInitConfigCallback;\n}\n\n// below is nz-zorro\n\nexport interface SelectConfig {\n  nzBorderless?: boolean;\n  nzSuffixIcon?: TemplateRef<NzSafeAny> | string | null;\n}\n\nexport interface AffixConfig {\n  nzOffsetBottom?: number;\n  nzOffsetTop?: number;\n}\n\nexport interface AlertConfig {\n  nzCloseable?: boolean;\n  nzShowIcon?: boolean;\n}\n\nexport interface AvatarConfig {\n  nzShape?: NzShapeSCType;\n  nzSize?: NzSizeLDSType | number;\n}\n\nexport interface AnchorConfig {\n  nzBounds?: number;\n  nzOffsetBottom?: number;\n  nzOffsetTop?: number;\n  nzShowInkInFixed?: boolean;\n}\n\nexport interface BackTopConfig {\n  nzVisibilityHeight?: number;\n}\n\nexport interface BadgeConfig {\n  nzColor?: number;\n  nzOverflowCount?: number;\n  nzShowZero?: number;\n}\n\nexport interface ButtonConfig {\n  nzSize?: 'large' | 'default' | 'small';\n}\n\nexport interface CodeEditorConfig {\n  assetsRoot?: string | SafeUrl;\n  defaultEditorOption?: NzSafeAny;\n  useStaticLoading?: boolean;\n\n  onLoad?(): void;\n  onFirstEditorInit?(): void;\n  onInit?(): void;\n}\n\nexport interface CardConfig {\n  nzSize?: NzSizeDSType;\n  nzHoverable?: boolean;\n  nzBordered?: boolean;\n}\n\nexport interface CarouselConfig {\n  nzAutoPlay?: boolean;\n  nzAutoPlaySpeed?: boolean;\n  nzDots?: boolean;\n  nzEffect?: 'scrollx' | 'fade' | string;\n  nzEnableSwipe?: boolean;\n  nzVertical?: boolean;\n}\n\nexport interface CascaderConfig {\n  nzSize?: string;\n}\n\nexport interface CollapseConfig {\n  nzAccordion?: boolean;\n  nzBordered?: boolean;\n}\n\nexport interface CollapsePanelConfig {\n  nzShowArrow?: boolean;\n}\n\nexport interface DatePickerConfig {\n  nzSeparator?: string;\n  nzSuffixIcon?: string | TemplateRef<NzSafeAny>;\n}\n\nexport interface DescriptionsConfig {\n  nzBorder?: boolean;\n  nzColumn?: { [key in NzBreakpointEnum]?: number } | number;\n  nzSize?: 'default' | 'middle' | 'small';\n  nzColon?: boolean;\n}\n\nexport interface DrawerConfig {\n  nzMask?: boolean;\n  nzMaskClosable?: boolean;\n  nzCloseOnNavigation?: boolean;\n}\n\nexport interface EmptyConfig {\n  nzDefaultEmptyContent?: Type<NzSafeAny> | TemplateRef<string> | string | undefined;\n}\n\nexport interface FormConfig {\n  nzNoColon?: boolean;\n  nzAutoTips?: Record<string, Record<string, string>>;\n}\n\nexport interface IconConfig {\n  nzTheme?: 'fill' | 'outline' | 'twotone';\n  nzTwotoneColor?: string;\n}\n\nexport interface MessageConfig {\n  nzAnimate?: boolean;\n  nzDuration?: number;\n  nzMaxStack?: number;\n  nzPauseOnHover?: boolean;\n  nzTop?: number | string;\n}\n\nexport interface ModalConfig {\n  nzMask?: boolean;\n  nzMaskClosable?: boolean;\n  nzCloseOnNavigation?: boolean;\n}\n\nexport interface NotificationConfig extends MessageConfig {\n  nzTop?: string | number;\n  nzBottom?: string | number;\n  nzPlacement?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\n}\n\nexport interface PageHeaderConfig {\n  nzGhost: boolean;\n}\n\nexport interface ProgressConfig {\n  nzGapDegree?: number;\n  nzGapPosition?: 'top' | 'right' | 'bottom' | 'left';\n  nzShowInfo?: boolean;\n  nzStrokeSwitch?: number;\n  nzStrokeWidth?: number;\n  nzSize?: 'default' | 'small';\n  nzStrokeLinecap?: 'round' | 'square';\n  nzStrokeColor?: string;\n}\n\nexport interface RateConfig {\n  nzAllowClear?: boolean;\n  nzAllowHalf?: boolean;\n}\n\nexport interface SpaceConfig {\n  nzSize?: 'small' | 'middle' | 'large' | number;\n}\n\nexport interface SpinConfig {\n  nzIndicator?: TemplateRef<NzSafeAny>;\n}\n\nexport interface SwitchConfig {\n  nzSize: NzSizeDSType;\n}\n\nexport interface TableConfig {\n  nzBordered?: boolean;\n  nzSize?: NzSizeMDSType;\n  nzShowQuickJumper?: boolean;\n  nzLoadingIndicator?: TemplateRef<NzSafeAny>;\n  nzShowSizeChanger?: boolean;\n  nzSimple?: boolean;\n  nzHideOnSinglePage?: boolean;\n}\n\nexport interface TabsConfig {\n  nzAnimated?:\n    | boolean\n    | {\n        inkBar: boolean;\n        tabPane: boolean;\n      };\n  nzSize?: NzSizeLDSType;\n  nzType?: 'line' | 'card';\n  nzTabBarGutter?: number;\n  nzShowPagination?: boolean;\n}\n\nexport interface TimePickerConfig {\n  nzAllowEmpty?: boolean;\n  nzClearText?: string;\n  nzFormat?: string;\n  nzHourStep?: number;\n  nzMinuteStep?: number;\n  nzSecondStep?: number;\n  nzPopupClassName?: string;\n  nzUse12Hours?: string;\n  nzSuffixIcon?: string | TemplateRef<NzSafeAny>;\n}\n\nexport interface TreeConfig {\n  nzBlockNode?: boolean;\n  nzShowIcon?: boolean;\n  nzHideUnMatched?: boolean;\n}\n\nexport interface TreeSelectConfig {\n  nzShowIcon?: string;\n  nzShowLine?: boolean;\n  nzDropdownMatchSelectWidth?: boolean;\n  nzHideUnMatched?: boolean;\n  nzSize?: 'large' | 'small' | 'default';\n}\n\nexport interface TypographyConfig {\n  nzEllipsisRows?: number;\n}\n\nexport type MagConfigKey = keyof MagConfig;\n\n/**\n * User should provide an object implements this interface to set global configurations.\n */\nexport const MAG_CONFIG = new InjectionToken<MagConfig>('mag-config');\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { Observable, Subject } from 'rxjs';\n\nimport { filter, mapTo } from 'rxjs/operators';\n\nimport { MAG_CONFIG, MagConfig, MagConfigKey } from './config';\n\nconst isDefined = function (value?: NzSafeAny): boolean {\n  return value !== undefined;\n};\n\n// TODO mag-config-service 로 변경을 고려하자\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagGlobalConfigService {\n  private configUpdated$ = new Subject<keyof MagConfig>();\n\n  /** Global config holding property. */\n  private config: MagConfig;\n\n  constructor(@Optional() @Inject(MAG_CONFIG) defaultConfig?: MagConfig) {\n    this.config = defaultConfig || {};\n  }\n\n  getConfigForComponent<T extends MagConfigKey>(componentName: T): MagConfig[T] {\n    return this.config[componentName];\n  }\n\n  getConfigChangeEventForComponent(componentName: MagConfigKey): Observable<void> {\n    return this.configUpdated$.pipe(\n      filter(n => n === componentName),\n      mapTo(undefined)\n    );\n  }\n\n  set<T extends MagConfigKey>(componentName: T, value: MagConfig[T]): void {\n    this.config[componentName] = { ...this.config[componentName], ...value };\n    this.configUpdated$.next(componentName);\n  }\n}\n\n// tslint:disable:no-invalid-this\n\n/**\n * This decorator is used to decorate properties. If a property is decorated, it would try to load default value from\n * config.\n */\n// tslint:disable-next-line:typedef\nexport function WithMagConfig<T>(componentName: MagConfigKey) {\n  return function ConfigDecorator(target: NzSafeAny, propName: NzSafeAny, originalDescriptor?: TypedPropertyDescriptor<T>): NzSafeAny {\n    const privatePropName = `$$__assignedValue__${propName}`;\n\n    Object.defineProperty(target, privatePropName, {\n      configurable: true,\n      writable: true,\n      enumerable: false\n    });\n\n    return {\n      get(): T | undefined {\n        const originalValue = originalDescriptor?.get ? originalDescriptor.get.bind(this)() : this[privatePropName];\n        const assignedByUser = ((this.assignmentCount || {})[propName] || 0) > 1;\n\n        if (assignedByUser && isDefined(originalValue)) {\n          return originalValue;\n        }\n\n        const componentConfig = this.magConfigService.getConfigForComponent(componentName) || {};\n        const configValue = componentConfig[propName];\n        const ret = isDefined(configValue) ? configValue : originalValue;\n\n        return ret;\n      },\n      set(value?: T): void {\n        // If the value is assigned, we consider the newly assigned value as 'assigned by user'.\n        this.assignmentCount = this.assignmentCount || {};\n        this.assignmentCount[propName] = (this.assignmentCount[propName] || 0) + 1;\n\n        if (originalDescriptor?.set) {\n          originalDescriptor.set.bind(this)(value!);\n        } else {\n          this[privatePropName] = value;\n        }\n      },\n      configurable: true,\n      enumerable: true\n    };\n  };\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  FillGnbItems,\n  LoadToolMenusSuccess,\n  MagFrameState,\n  SelectLanguage,\n  SelectTimezone,\n  SetLoginUser,\n  UpdateFixedGnbItems\n} from 'ng-stalk/core/frame-store';\nimport { MagDynamicConfig } from 'ng-stalk/core/model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagFrameService {\n  magFrameState?: MagFrameState;\n  constructor(private store: Store<MagFrameState>) {}\n\n  update(magFrameState: MagFrameState): void {\n    this.magFrameState = magFrameState;\n  }\n\n  public getTimeZoneId(): string {\n    if (!this.magFrameState) {\n      throw Error('yet not ready');\n    }\n    return this.magFrameState?.toolMenus.timezoneId;\n  }\n\n  public adjustMagData(magDynamicConfig: MagDynamicConfig): void {\n    this.store.dispatch(new SetLoginUser(magDynamicConfig.loginUser));\n    this.store.dispatch(new UpdateFixedGnbItems(magDynamicConfig.fixedShortcutItems));\n    this.store.dispatch(new FillGnbItems(magDynamicConfig.gnbMenuItems));\n    this.store.dispatch(new LoadToolMenusSuccess(magDynamicConfig.toolMenus || []));\n    this.store.dispatch(\n      new SelectTimezone({\n        timezoneId: magDynamicConfig.currentTimezoneId,\n        timezoneOffset: magDynamicConfig.currentTimezoneOffset\n      })\n    );\n    this.store.dispatch(new SelectLanguage(magDynamicConfig.currentLanguage));\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport { add, addDays, endOfDay, parseISO, startOfDay, startOfToday, startOfTomorrow } from 'date-fns';\nimport { format, toDate, utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { MagZoneDateTime } from 'ng-stalk/core/types';\nimport { isNil } from 'ng-zorro-antd/core/util';\nimport { MagFrameService } from '../mag-frame-service/mag-frame.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagDateService {\n  browserTimezone: string;\n  constructor(private magFrameService: MagFrameService) {\n    this.browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  }\n\n  public parseToMagZoneDateTime(rfc3339Value: string, toZoneId?: string): MagZoneDateTime {\n    const zoneId: string = toZoneId || this.magFrameService.getTimeZoneId();\n    const parsedDate = parseISO(rfc3339Value);\n    const utcDate = zonedTimeToUtc(parsedDate, this.browserTimezone);\n    const newDate = utcToZonedTime(utcDate, zoneId);\n    const newRfc3339 = format(newDate, \"yyyy-MM-dd'T'HH:mm:ssXXX\", {\n      timeZone: zoneId\n    });\n    return {\n      zoneId,\n      value: newDate,\n      rfc3339Value: newRfc3339\n    };\n  }\n\n  public rfc3339ToDate(rfc3339Value: string): Date | null {\n    if (isNil(rfc3339Value)) {\n      return null;\n    }\n    return this.parseToMagZoneDateTime(rfc3339Value).value;\n  }\n\n  /**\n   * Mag Local Date 객체를 ISO8601 with RFC3339 포맷으로 변경한다.\n   * @param value\n   */\n  public dateToIso8601(value: Date): string | null {\n    if (isNil(value)) {\n      return null;\n    }\n\n    const magZoneDateTime: MagZoneDateTime = this.magLocalDateToMagZoneDateTime(value);\n    return magZoneDateTime.rfc3339Value;\n  }\n\n  /**\n   * 주어진 date value 에서 타임존 값을 제거하고, MagFrame 에서 사용하는 타임존르오 교체한다.\n   * 즉, date 값이 브라우저 환경(System Time Zone) 과 무관하고 MAG 설정을 기초로 한다.\n   * @param localizedDate\n   * @param expectZoneId 미 입력시, 현재 설정된 Mag Frame 의 타임존이 사용된다.\n   */\n  public dateToMagZoneDateTimeIfNotNil(localizedDate?: Date, expectZoneId?: string): MagZoneDateTime | null {\n    if (isNil(localizedDate)) {\n      return null;\n    }\n\n    return this.browserDateToMagZoneDateTime(localizedDate, expectZoneId);\n  }\n\n  /**\n   * MagFrame.timeZoneId 를 기반으로 주어진 local date value 에서 MagZoneDateTime 으로 변화한다.\n   * 즉, date 값이 브라우저 환경(System Time Zone) 과 무관하고 MAG 설정을 기초로 한다.\n   * @param localizedDate\n   * @param expectZoneId 미 입력시, 현재 설정된 Mag Frame 의 타임존이 사용된다.\n   */\n  public magLocalDateToMagZoneDateTime(localizedDate: Date, expectZoneId?: string): MagZoneDateTime {\n    let zoneId: string | undefined = expectZoneId;\n    if (isNil(expectZoneId)) {\n      zoneId = this.magFrameService.getTimeZoneId(); // Intl.DateTimeFormat().resolvedOptions().timeZone;\n    }\n\n    if (zoneId === undefined) {\n      throw Error('zoneId is undefined');\n    }\n\n    // 주어진 로컬 타임과 타임존 결합\n    const newValue: Date = toDate(localizedDate, {\n      timeZone: zoneId\n    });\n\n    return {\n      zoneId,\n      value: newValue,\n      rfc3339Value: format(newValue, \"yyyy-MM-dd'T'HH:mm:ssXXX\", {\n        timeZone: zoneId\n      })\n    };\n  }\n\n  /**\n   * 주어진 브라우저 local date value 에서 MagFrame 에서 사용하는 타임존으로 교체한다.\n   * 즉, date 값이 브라우저 환경(System Time Zone) 기준의 절대적인 시점을 고정하고, MAG 설정을 기반으로 타임존을 변경한다.\n   * @param localizedDate\n   * @param expectZoneId 미 입력시, 현재 설정된 Mag Frame 의 타임존이 사용된다.\n   */\n  public browserDateToMagZoneDateTime(localizedDate: Date, expectZoneId?: string): MagZoneDateTime {\n    let zoneId: string | undefined = expectZoneId;\n    if (isNil(expectZoneId)) {\n      zoneId = this.magFrameService.getTimeZoneId(); // Intl.DateTimeFormat().resolvedOptions().timeZone;\n    }\n\n    // 타임존 값을 제거\n    // const dateAndTimeValue = format(localizedDate, \"yyyy-MM-dd'T'HH:mm:ss\");\n    //\n    // // 주어진 로컬 타임과 타임존 결합\n    // const newValue: Date = toDate(dateAndTimeValue, {\n    //   timeZone: zoneId\n    // });\n\n    if (zoneId === undefined) {\n      throw Error('zoneId is undefined');\n    }\n\n    const utcDate = zonedTimeToUtc(localizedDate, this.browserTimezone);\n    const newValue = utcToZonedTime(utcDate, zoneId);\n\n    return {\n      zoneId,\n      value: newValue,\n      rfc3339Value: format(newValue, \"yyyy-MM-dd'T'HH:mm:ssXXX\", {\n        timeZone: zoneId\n      })\n    };\n  }\n\n  public toRfc3339IfNotNil(value?: MagZoneDateTime): string | null {\n    if (isNil(value)) {\n      return null;\n    }\n    return this.toRfc3339(value);\n  }\n\n  public toRfc3339(value: MagZoneDateTime, timeZoneId?: string): string {\n    const utcDate = zonedTimeToUtc(value.value, value.zoneId);\n    const zoneId = timeZoneId || this.magFrameService.getTimeZoneId();\n    const zoneDate = utcToZonedTime(utcDate, zoneId);\n    return format(zoneDate, \"yyyy-MM-dd'T'HH:mm:ssXXX\", { timeZone: zoneId });\n  }\n\n  /**\n   * 접속 브라우저를 기준으로 오늘의 시작시점을 리턴한다.\n   */\n  public today(): MagZoneDateTime {\n    const clientDate = startOfToday();\n    const magZoneDateTime = this.browserDateToMagZoneDateTime(clientDate);\n    return magZoneDateTime;\n  }\n\n  public todayToRfc3339(): string {\n    return this.toRfc3339(this.today());\n  }\n\n  /**\n   * 접속 브라우저를 기준으로 다음 날의 시작시점을 리턴한다.\n   */\n  public tomorrow(): MagZoneDateTime {\n    const clientDate = startOfTomorrow();\n    const magZoneDateTime = this.browserDateToMagZoneDateTime(clientDate);\n    return magZoneDateTime;\n  }\n\n  public tomorrowToRfc3339(): string {\n    return this.toRfc3339(this.tomorrow());\n  }\n\n  public startAtOfDiffDays(diffDays: number): MagZoneDateTime {\n    const magZoneDateTime = this.today();\n    const date = addDays(magZoneDateTime.value, diffDays);\n    // TODO 존 변경 상태로 사용시, 타임존이 유지되는지 확인 필요\n    return {\n      value: date,\n      zoneId: magZoneDateTime.zoneId,\n      rfc3339Value: date.toISOString()\n    };\n  }\n\n  public startAtOfDiffDaysToRfc3339(diffDays: number): string {\n    const magZoneDateTime = this.startAtOfDiffDays(diffDays);\n    return this.toRfc3339(magZoneDateTime);\n  }\n\n  // public startOfDayForRfc3339(rfc3339Value: string): string {\n  //   const magZoneDateTime = this.parseToMagZoneDateTime(rfc3339Value);\n  //   // TODO 존 변경 상태로 사용시, 타임존이 유지되는지 확인 필요\n  //   const newValue = startOfDay(magZoneDateTime.value);\n  //   const updated: MagZoneDateTime = {\n  //     value: newValue,\n  //     zoneId: magZoneDateTime.zoneId,\n  //     rfc3339Value: newValue.toISOString()\n  //   };\n  //   return this.toRfc3339(updated);\n  // }\n  //\n  // public endOfDayForRfc3339(rfc3339Value: string): string {\n  //   const magZoneDateTime = this.parseToMagZoneDateTime(rfc3339Value);\n  //   // TODO 존 변경 상태로 사용시, 타임존이 유지되는지 확인 필요\n  //   const newValue = endOfDay(magZoneDateTime.value);\n  //   const updated: MagZoneDateTime = {\n  //     value: newValue,\n  //     zoneId: magZoneDateTime.zoneId,\n  //     rfc3339Value: newValue.toISOString()\n  //   };\n  //   return this.toRfc3339(updated);\n  // }\n\n  /**\n   * 현재 시점을 리턴한다.\n   */\n  public now(): MagZoneDateTime {\n    const magZoneDateTime = this.browserDateToMagZoneDateTime(new Date(), this.magFrameService.getTimeZoneId());\n    return magZoneDateTime;\n  }\n\n  /**\n   * magFrame 타임존 시점에 기반한 오늘 날짜를 기준으로 브라우저 기반 시작일시를 리턴한다.\n   */\n  public startOfToday(): Date {\n    const magZoneDateTime = this.now();\n    return startOfDay(magZoneDateTime.value);\n  }\n\n  /**\n   * magFrame 타임존 시점에 기반한 오늘 날짜를 기준으로 브라우저 기반 시작일시를 리턴한다.\n   */\n  public addFromNow(duration: Duration): Date {\n    const magZoneDateTime = this.now();\n    return add(magZoneDateTime.value, duration);\n  }\n\n  /**\n   * magFrame 타임존 시점에 기반한 오늘 날짜를 기준으로 브라우저 기반 종료일시를 리턴한다.\n   */\n  public endOfToday(): Date {\n    const magZoneDateTime = this.now();\n    return endOfDay(magZoneDateTime.value);\n  }\n\n  /**\n   * rfc3339 형태의 value 값이 2개의 rfc3339 형태의 기간값들 사이에 있는지 확인한다.\n   * @param value\n   * @param before RFC3339 포맷의 기간1\n   * @param after RFC3339 포맷의 기간2\n   */\n  public isBetweenRfc3339(value: string, before: string, after: string): boolean {\n    const valueTime = new Date(value).getTime();\n    const beforeTime = new Date(before).getTime();\n    const afterTime = new Date(after).getTime();\n    if (beforeTime <= afterTime) {\n      // 오름차순 입력인 경우\n      if (valueTime >= beforeTime && valueTime < afterTime) {\n        return true;\n      }\n      return false;\n    } else {\n      // 내림 차순 입력인 경우\n      if (valueTime >= afterTime && valueTime < beforeTime) {\n        return true;\n      }\n      return false;\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport { MagDialogMessage, MagDialogMessageOption, MagDialogModalOption, MagDialogNotificationOption } from 'ng-stalk/core/types';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagDialogService {\n  constructor(\n    private nzModalService: NzModalService,\n    private nzMessageService: NzMessageService,\n    private nzNotificationService: NzNotificationService\n  ) {}\n\n  /**\n   * modal 형태의 메시지 창 팝업\n   * @param message\n   * @param option\n   */\n  public alert(\n    message: MagDialogMessage | string,\n    option: MagDialogModalOption = {\n      level: 'info'\n      // tslint:disable-next-line:no-any\n    }\n  ): Observable<any> {\n    let title = null;\n    let content: string;\n    if (typeof message !== 'string') {\n      title = message.title;\n      // @ts-ignore\n      content = message.content || message.message;\n    } else {\n      content = message;\n    }\n    return this.nzModalService[option.level]({\n      // @ts-ignore\n      nzTitle: title,\n      nzContent: content\n    }).afterClose;\n  }\n\n  // tslint:disable-next-line:no-any\n  public alertSuccess(message: MagDialogMessage | string): Observable<any> {\n    return this.alert(message, {\n      level: 'info'\n    });\n  }\n\n  // tslint:disable-next-line:no-any\n  public alertInfo(message: MagDialogMessage | string): Observable<any> {\n    return this.alert(message, {\n      level: 'info'\n    });\n  }\n\n  // tslint:disable-next-line:no-any\n  public alertWarning(message: MagDialogMessage | string): Observable<any> {\n    return this.alert(message, {\n      level: 'warning'\n    });\n  }\n\n  // tslint:disable-next-line:no-any\n  public alertError(message: MagDialogMessage | string): Observable<any> {\n    return this.alert(message, {\n      level: 'error'\n    });\n  }\n\n  public alertConfirm(message: MagDialogMessage | string): Observable<boolean> {\n    let title = null;\n    let content: string | undefined;\n    if (typeof message !== 'string') {\n      title = message.title;\n      content = message.content || message.message;\n    } else {\n      content = message;\n    }\n    const ref = this.nzModalService.confirm({\n      // @ts-ignore\n      nzTitle: title,\n      nzContent: content,\n      nzOnOk: () => true\n    });\n    return ref.afterClose;\n  }\n\n  public confirm(message: MagDialogMessage | string): Observable<boolean> {\n    return this.alertConfirm(message);\n  }\n\n  public message(\n    message: string,\n    option: MagDialogMessageOption = {\n      level: 'info',\n      duration: 3\n    }\n  ): void {\n    this.nzMessageService[option.level](message, {\n      nzDuration: option.duration * 1000\n    });\n  }\n\n  public messageSuccess(\n    message: string,\n    option: MagDialogMessageOption = {\n      level: 'success',\n      duration: 3\n    }\n  ): void {\n    option.level = 'success';\n    return this.message(message, option);\n  }\n\n  public messageInfo(\n    message: string,\n    option: MagDialogMessageOption = {\n      level: 'info',\n      duration: 3\n    }\n  ): void {\n    option.level = 'info';\n    return this.message(message, option);\n  }\n\n  public messageWarning(\n    message: string,\n    option: MagDialogMessageOption = {\n      level: 'warning',\n      duration: 3\n    }\n  ): void {\n    option.level = 'warning';\n    return this.message(message, option);\n  }\n\n  public messageError(\n    message: string,\n    option: MagDialogMessageOption = {\n      level: 'error',\n      duration: 3\n    }\n  ): void {\n    option.level = 'error';\n    return this.message(message, option);\n  }\n\n  public notify(\n    message: MagDialogMessage,\n    option: MagDialogNotificationOption = {\n      level: 'blank',\n      duration: 3\n    }\n  ): void {\n    if (!option.level) {\n      option.level = 'blank';\n    }\n    // @ts-ignore\n    this.nzNotificationService.create(option.level, message.title, message.content || message.message, {\n      nzDuration: option.duration * 1000\n    });\n  }\n\n  public notifySuccess(\n    message: MagDialogMessage,\n    option: MagDialogNotificationOption = {\n      level: 'success',\n      duration: 3\n    }\n  ): void {\n    this.notify(message, {\n      level: 'success',\n      duration: option.duration\n    });\n  }\n\n  public notifyInfo(\n    message: MagDialogMessage,\n    option: MagDialogNotificationOption = {\n      level: 'info',\n      duration: 3\n    }\n  ): void {\n    this.notify(message, {\n      level: 'info',\n      duration: option.duration\n    });\n  }\n\n  public notifyWarning(\n    message: MagDialogMessage,\n    option: MagDialogNotificationOption = {\n      level: 'warning',\n      duration: 3\n    }\n  ): void {\n    this.notify(message, {\n      level: 'warning',\n      duration: option.duration\n    });\n  }\n\n  public notifyError(\n    message: MagDialogMessage,\n    option: MagDialogNotificationOption = {\n      level: 'error',\n      duration: 3\n    }\n  ): void {\n    this.notify(message, {\n      level: 'error',\n      duration: option.duration\n    });\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport interface MagEvent {\n    key: string;\n  // tslint:disable-next-line:no-any\n    data: any;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { MagEvent } from './mag-event';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class MagEventService {\n\n    // @ts-ignore\n  eventChange: BehaviorSubject<MagEvent> = new BehaviorSubject<MagEvent>(null);\n\n    connect(): Observable<MagEvent> {\n        return this.eventChange.asObservable();\n    }\n\n    fire(magEvent: MagEvent): void {\n        this.eventChange.next(magEvent);\n    }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { CodeAndName } from 'ng-stalk/core/types';\nimport { TransferChange, TransferItem } from 'ng-zorro-antd/transfer';\nimport { MagDateService } from '../mag-date-service/mag-date.service';\n\n/**\n * MagFormUtil 래퍼\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagFormService {\n  constructor(private magDateService: MagDateService) {}\n\n  public static makeTransferDataSource(list: CodeAndName[], values: string[]): TransferItem[] {\n    if (!list) {\n      return [];\n    }\n    const result = list.map(codeAndName => {\n      const item: TransferItem = {\n        title: codeAndName.name,\n        direction: _.includes(values, codeAndName.code) ? 'right' : 'left',\n        checked: _.includes(values, codeAndName.code),\n        value: codeAndName.code\n      };\n      return item;\n    });\n    return result;\n  }\n\n  public patchTransferValue(modelForm: FormGroup, formControlName: string, transferChangeEvent: TransferChange): void {\n    const oldValues = modelForm.getRawValue()[formControlName];\n    const selectedValues = transferChangeEvent.list.map(transferItem => transferItem.value);\n    let newValues = [];\n    if (transferChangeEvent.to === 'right') {\n      newValues = _.union(oldValues, selectedValues);\n    } else {\n      newValues = _.without(oldValues, selectedValues);\n    }\n    modelForm.patchValue({\n      [formControlName]: newValues\n    });\n  }\n\n  public patchDateRangValue(modelForm: FormGroup, formControlName1: string, formControlName2: string, values: Date[]): void {\n    modelForm.patchValue({\n      [formControlName1]: values[0],\n      [formControlName2]: values[1]\n    });\n  }\n\n  public patchDateRangValueAsRfc3339(modelForm: FormGroup, formControlName1: string, formControlName2: string, values: Date[]): void {\n    // @ts-ignore\n    const rfc3339Values: string[] = values.map(dateValue => this.magDateService.dateToIso8601(dateValue));\n    modelForm.patchValue({\n      [formControlName1]: rfc3339Values[0],\n      [formControlName2]: rfc3339Values[1]\n    });\n  }\n\n  public patchDateValue(modelForm: FormGroup, formControlName: string, value: Date): void {\n    modelForm.patchValue({\n      [formControlName]: this.magDateService.dateToIso8601(value)\n    });\n  }\n\n  public patchDateValueAsRfc339(modelForm: FormGroup, formControlName: string, value: Date): void {\n    modelForm.patchValue({\n      [formControlName]: this.magDateService.dateToIso8601(value)\n    });\n  }\n\n  public getDateValue(modelForm: FormGroup, formControlName: string): Date | undefined {\n    const value = modelForm.getRawValue()[formControlName];\n    if (value instanceof Date) {\n      return value;\n    }\n\n    if (value) {\n      return new Date(value);\n    }\n    return undefined;\n  }\n\n  public getDateRangeValue(modelForm: FormGroup, formControlName1: string, formControlName2: string): Date[] {\n    const result = [undefined, undefined];\n    // @ts-ignore\n    result[0] = this.getDateValue(modelForm, formControlName1);\n    // @ts-ignore\n    result[1] = this.getDateValue(modelForm, formControlName2);\n    // @ts-ignore\n    return result;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {MediaChange, MediaObserver} from '@angular/flex-layout';\nimport {MediaBreakName} from 'ng-stalk/core/types';\nimport {BehaviorSubject, Subject} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, takeUntil} from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagMatchMediaService implements OnDestroy {\n  private destroy$: Subject<boolean>;\n  activeMediaQuery: MediaBreakName;\n  onMediaChange: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n  /**\n   * Constructor\n   *\n   */\n  constructor(\n    private _mediaObserver: MediaObserver,\n  ) {\n    this.destroy$ = new Subject();\n\n    // Set the defaults\n    this.activeMediaQuery = 'xs';\n\n    // Initialize\n    this._init();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Private methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Initialize\n   *\n   */\n  private _init(): void {\n    const getAlias = function (mediaChange: MediaChange[]): string {\n      return mediaChange[0].mqAlias;\n    };\n\n\n    this._mediaObserver.asObservable()\n      .pipe(takeUntil(this.destroy$))\n      .pipe(debounceTime(500), distinctUntilChanged(\n        (x: MediaChange[], y: MediaChange[]) => {\n          return getAlias(x) === getAlias(y);\n        }))\n      .subscribe((change: MediaChange[]) => {\n        // MediaChange 이벤트는 media query 범위가 변경될 경우에만 발생한다.\n        console.log(\"[MagMatchMediaService] captured MediaChange: \", change)\n\n        change.forEach((item) => {\n          if (this.activeMediaQuery !== item.mqAlias) {\n            // @ts-ignore\n            this.activeMediaQuery = item.mqAlias;\n            this.onMediaChange.next(item.mqAlias);\n          }\n        });\n      });\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ElementRef } from '@angular/core';\nimport { Serializable } from 'ng-stalk/core/model';\n\nexport class MagSpaceInfo extends Serializable {\n  frameTop = 64;\n\n  /**\n   * 분리 영역 수\n   */\n  spaceCount = 2;\n\n  /**\n   * 영역간의 gap (단위: px)\n   * ant design 에 맞춰서 각 간겨의 기본 간격은 16px 로 설정한다.\n   */\n  spaceGapPx = 16;\n\n  bottomSpace = 8;\n\n  withMiddleTable = false;\n\n  /**\n   * 여유 공간을 측정하기 위한 기준되는 상위 컨테이너\n   * 값이 없을 경우 브라우저 크기만큼 사용된다.\n   */\n  containerElement?: ElementRef;\n\n  /**\n   * 최소 기대공간보다 여유공간이 작게 나올 경우, 리턴할 최소 height\n   */\n  minHeight = 0;\n\n  withFrame = true;\n\n  // tslint:disable-next-line:no-any\n  constructor(obj?: any) {\n    super(obj);\n    this.fillFromJSONObject(obj);\n  }\n\n  public getFixedPx(): number {\n    let value = (this.withFrame ? this.frameTop : 0) + this.spaceCount * this.spaceGapPx + this.bottomSpace;\n    if (this.withMiddleTable) {\n      // 미들 사이즈의 테이블의 헤더와 푸터 크기는 46px 이다.\n      value += 46 * 2;\n    }\n    return value;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport class MagSpaceStatus {\n\n  classNameAndHidden: Map<string, boolean>;\n  classNameAndScrollingSize: Map<string, number>;\n\n  constructor() {\n    this.classNameAndHidden = new Map();\n    this.classNameAndScrollingSize = new Map();\n  }\n\n  isHidden(): boolean {\n    for (const hidden of this.classNameAndHidden.values()) {\n      if (hidden) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  getSize(className: string): number {\n    return this.classNameAndScrollingSize.get(className) || 0;\n  }\n\n  clone(): MagSpaceStatus {\n    const to = new MagSpaceStatus();\n    to.classNameAndHidden = this.classNameAndHidden; // TODO clone\n    to.classNameAndScrollingSize = this.classNameAndScrollingSize;\n    return to;\n  }\n\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { EventEmitter, Inject, Injectable, OnDestroy, Output } from '@angular/core';\nimport ResizeSensor from 'css-element-queries/src/ResizeSensor';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { MagSpaceInfo } from './mag-space-info';\nimport { MagSpaceStatus } from './mag-space-status';\n\nclass SpaceData {\n  resizeSensors: ResizeSensor[] = [];\n  classnameAndInfo: Map<string, MagSpaceInfo> = new Map();\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagSpaceService implements OnDestroy {\n\n  private window: Window;\n\n  onSpaceChange: BehaviorSubject<Map<string, MagSpaceStatus>> = new BehaviorSubject<Map<string, MagSpaceStatus>>(\n    new Map<string, MagSpaceStatus>()\n  );\n\n  groupAndData: Map<string, SpaceData> = new Map();\n\n  // private resizeSubject: BehaviorSubject<number>;\n\n  private notifyWarningBrowserSize: Subject<number>;\n\n  private _unsubscribeAll: Subject<any>;\n\n  @Output()\n  tableDataHidden: EventEmitter<boolean>;\n\n  constructor(\n    private nzNotificationService: NzNotificationService,\n    @Inject(DOCUMENT) private document: Document\n  ) {\n    this.window = this.document.defaultView!;\n\n    this._unsubscribeAll = new Subject();\n    // this.resizeSubject = new BehaviorSubject(0);\n    this.notifyWarningBrowserSize = new BehaviorSubject(0);\n    this.tableDataHidden = new EventEmitter(false);\n    this.onSpaceChange\n      .pipe(takeUntil(this._unsubscribeAll))\n      .pipe(debounceTime(500))\n      .pipe(distinctUntilChanged())\n      .subscribe(data => {\n        let hidden = false;\n\n        for (const status of data.values()) {\n          if (status.isHidden()) {\n            hidden = true;\n          }\n        }\n        this.tableDataHidden.emit(hidden);\n      });\n\n    this.tableDataHidden.pipe(distinctUntilChanged()).subscribe(value => {\n      if (value) {\n        // @ts-ignore\n        const ref = this.nzNotificationService.warning(\n          '화면이 너무 작습니다',\n          \"화면이 작아서 데이터가 충분히 표현되지 못할 수 있습니다. Ctrl + '-' 키를 누르거나 브라우저 크기를 늘려서 화면 공간을 확보하십시오.\"\n        );\n      } else {\n      }\n    });\n  }\n\n  register(group: string, className: string, spaceInfo: MagSpaceInfo): void {\n    const statusMap = this.onSpaceChange.getValue();\n    if (!this.groupAndData.has(group)) {\n      this.groupAndData.set(group, new SpaceData());\n      statusMap.set(group, new MagSpaceStatus());\n    }\n\n    this.getGroup(group).classnameAndInfo.set(className, spaceInfo);\n    // @ts-ignore\n    statusMap.get(group).classNameAndScrollingSize.set(className, 0);\n    this.onSpaceChange.next(this.cloneStatus(statusMap));\n  }\n\n  private cloneStatus(statusMap: Map<string, MagSpaceStatus>): Map<string, MagSpaceStatus> {\n    const to: Map<string, MagSpaceStatus> = new Map();\n    for (const group of statusMap.keys()) {\n      // @ts-ignore\n      to.set(group, statusMap.get(group).clone());\n    }\n    return to;\n  }\n\n  private getGroup(group: string): SpaceData {\n    // @ts-ignore\n    return this.groupAndData.get(group);\n  }\n\n  start(group: string): void {\n    for (const className of this.getGroup(group).classnameAndInfo.keys()) {\n      const elements = this.document.getElementsByClassName(className);\n      const elementsArray: Element[] = [];\n      for(let i = 0; i < elements.length; i++) {\n        elementsArray.push(elements.item(i)!);\n      }\n      this.onResize(group, className); // 초기 설정 적용\n      // TODO debugging 용으로 임시로 막음\n      // @ts-ignore\n      this.getGroup(group).resizeSensors.push(\n        new ResizeSensor(elementsArray, () => {\n          this.onResize(group, className);\n        })\n      );\n    }\n  }\n\n  stop(group: string): void {\n    for (const resizeSensor of this.getGroup(group).resizeSensors) {\n      resizeSensor.detach();\n    }\n    this.getGroup(group).classnameAndInfo.clear();\n  }\n\n  ngOnDestroy(): void {\n    this._unsubscribeAll.next(true);\n    this._unsubscribeAll.complete();\n    this.destroy();\n  }\n\n  destroy(): void {\n    for (const group of this.groupAndData.keys()) {\n      this.stop(group);\n    }\n  }\n\n  fireWindowResized(): void {\n    for (const group of this.groupAndData.keys()) {\n      for (const className of this.getGroup(group).classnameAndInfo.keys()) {\n        this.onResize(group, className);\n      }\n    }\n\n    // method() {\n    //   this.modelForm.controls['category'].valueChanges\n    //     .pipe(takeUntil(this._unsubscribeAll))\n    //     .pipe(distinctUntilChanged)\n    //     .subscribe((changeValue: any) => {\n    //     });\n    // }\n  }\n\n  onResize(group: string, className: string): void {\n    const debugInfo = [];\n    debugInfo.push('className: ' + className);\n    const info = this.getGroup(group).classnameAndInfo.get(className);\n    if (!info) {\n      // console.log('[MSS:OnResize] [' + className + ']: ', debugInfo);\n      return;\n    }\n    // tslint:disable-next-line:no-any\n    const items: any = this.document.getElementsByClassName(className);\n    let total = 0;\n\n    for (const item of items) {\n      const oh = this.outerHeight(item);\n      total += oh;\n      debugInfo.push('item: ' + oh);\n    }\n\n    let wh;\n    if (info.containerElement) {\n      if (info.containerElement.nativeElement) {\n        wh = info.containerElement.nativeElement.offsetHeight;\n        debugInfo.push('wh[info.containerElement]: ' + wh);\n        if (wh === 0) {\n          // 컴포넌트가 디스플레이 영역을 가지지 않은 경우, 하위 영역을 집계한다.\n\n          for (const childElement of info.containerElement.nativeElement.children) {\n            const co = childElement.offsetHeight;\n            wh += co;\n            debugInfo.push('wh[info.containerElement.childElement.offsetHeight]: ' + co);\n          }\n        }\n      } else {\n        wh = 0;\n        debugInfo.push('wh[not found info.containerElement.nativeElement]: ' + 0);\n      }\n    } else {\n      wh = this.window.innerHeight;\n      debugInfo.push('wh[window.innerHeight]: ' + wh);\n    }\n\n    debugInfo.push('total: ' + total);\n    debugInfo.push('info.getFixedPx(): ' + info.getFixedPx());\n\n    let calculated = wh - info.getFixedPx() - total;\n    debugInfo.push('calculated: ' + info.getFixedPx());\n\n    if (calculated < info.minHeight) {\n      calculated = info.minHeight;\n      debugInfo.push('calculated < info.minHeight. info.minHeight: ' + info.minHeight);\n    }\n\n    const map: Map<string, MagSpaceStatus> = this.onSpaceChange.getValue();\n    // @ts-ignore\n    map.get(group).classNameAndScrollingSize.set(className, calculated);\n\n    debugInfo.push('map set.  calculated: ' + calculated);\n    debugInfo.push('calculated < 16: ' + (calculated < 16));\n\n    if (calculated < 16) {\n      debugInfo.push('try  waningBrowserSize.calculated : ' + calculated);\n      // this.pushWarning(calculated);\n      // @ts-ignore\n      map.get(group).classNameAndHidden.set(className, true);\n    } else {\n      // @ts-ignore\n      map.get(group).classNameAndHidden.set(className, false);\n      // this.tableDataHidden.emit(false);\n    }\n\n    // console.log('[MSS:OnResize.COMPLETED]', debugInfo);\n    // TODO 클론 해야하는지 테스트 필요\n    this.onSpaceChange.next(this.cloneStatus(map));\n  }\n\n  pushWarning(height: number): void {\n    this.notifyWarningBrowserSize.next(height);\n  }\n\n  waningBrowserSize(): void {\n    // console.log('this.notification:', this.notification);\n    // this.notification.create(\n    //   'warning',\n    //   '화면이 너무 작습니다',\n    //   `화면이 작아서 데이터가 충분히 표현되지 못할 수 있습니다. Ctrl + '-' 키를 누르거나 브라우저 크기를 늘려서 화면 공간을 확보하십시오.`,\n    //   {\n    //     nzKey: 'mag-warn-browser-size',\n    //     nzDuration: 10,\n    //   }\n    // );\n  }\n\n  // tslint:disable-next-line:no-any\n  outerHeight(el: any): number {\n    let width = el.offsetHeight;\n    const style = getComputedStyle(el);\n\n    // tslint:disable-next-line:radix\n    width += parseInt(style.marginTop) + parseInt(style.marginBottom);\n    return width;\n  }\n\n  // tslint:disable-next-line:no-any\n  outerWidth(el: any): number {\n    let width = el.offsetWidth;\n    const style = getComputedStyle(el);\n\n    // tslint:disable-next-line:radix\n    width += parseInt(style.marginLeft) + parseInt(style.marginRight);\n    return width;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { filter, take } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagSplashScreenService {\n  splashScreenEl: any;\n  player?: AnimationPlayer;\n\n  /**\n   * Constructor\n   *\n   * @param _document\n   */\n  constructor(private _animationBuilder: AnimationBuilder, @Inject(DOCUMENT) private _document: any, private _router: Router) {\n    // Initialize\n    this._init();\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Private methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Initialize\n   *\n   */\n  private _init(): void {\n    // Get the splash screen element\n    this.splashScreenEl = this._document.body.querySelector('#mag-splash-screen');\n\n    // If the splash screen element exists...\n    if (this.splashScreenEl) {\n      // Hide it on the first NavigationEnd event\n      this._router.events\n        .pipe(\n          filter(event => event instanceof NavigationEnd),\n          take(1)\n        )\n        .subscribe(() => {\n          setTimeout(() => {\n            this.hide();\n          });\n        });\n    }\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Public methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Show the splash screen\n   */\n  show(): void {\n    this.player = this._animationBuilder\n      .build([\n        style({\n          opacity: '0',\n          zIndex: '99999'\n        }),\n        animate('400ms ease', style({ opacity: '1' }))\n      ])\n      .create(this.splashScreenEl);\n\n    setTimeout(() => {\n      // @ts-ignore\n      this.player.play();\n    }, 0);\n  }\n\n  /**\n   * Hide the splash screen\n   */\n  hide(): void {\n    this.player = this._animationBuilder\n      .build([\n        style({ opacity: '1' }),\n        animate(\n          '400ms ease',\n          style({\n            opacity: '0',\n            zIndex: '-10'\n          })\n        )\n      ])\n      .create(this.splashScreenEl);\n\n    setTimeout(() => {\n      // @ts-ignore\n      this.player.play();\n    }, 0);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {CodeAndName} from \"ng-stalk/core/types\";\nimport {NsConfigService} from \"ng-stalk/core/config\";\nimport { find } from 'lodash';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NsCodeService {\n  codeCache: { [key: string]: CodeAndName[] } = {};\n\n  constructor(private nsConfigService: NsConfigService) {\n\n  }\n\n  getList(group: string): CodeAndName[] {\n    const codeData = this.nsConfigService.getConfigForComponent('code')!.data!;\n    return codeData[group] ? codeData[group] : [];\n  }\n\n  getOne(group: string, key: string): CodeAndName {\n    const found = find(this.getList(group), {\n      code: key\n    });\n    if (!found) {\n      return {\n        code: key,\n        name: key\n      };\n    }\n    return found as CodeAndName;\n  }\n\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MagSubmittingService {\n\n  txMap: {[key: string]: boolean; } = {};\n  public lastId?: string | null;\n\n  constructor() {\n  }\n\n  isSubmitting(submittingId: string): boolean {\n    return this.txMap[submittingId] ? true : false;\n  }\n\n  submit(submittingId: string): void {\n    this.lastId = submittingId;\n    this.txMap[submittingId] = true;\n  }\n\n  clear(submittingId: string): void {\n    this.txMap[submittingId] = false;\n    if(this.lastId === submittingId) {\n      this.lastId = null;\n    }\n  }\n\n  clearLast(): void {\n    if (this.lastId) {\n      this.clear(this.lastId);\n    }\n  }\n\n  clearAll(): void {\n    this.txMap = {};\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './mag-bootstrap/mag-bootstrap.service';\nexport * from './mag-code-cache-service/mag-code-cache.service';\nexport * from './mag-config-service/config';\nexport * from './mag-config-service/mag-config.service';\nexport * from './mag-config-service/mag-global-config.service';\nexport * from './mag-date-service/mag-date.service';\nexport * from './mag-dialog-service/mag-dialog.service';\nexport * from './mag-event-service/mag-event';\nexport * from './mag-event-service/mag-event.service';\nexport * from './mag-form-service/mag-form.service';\nexport * from './mag-frame-service/mag-frame.service';\nexport * from './mag-match-media-service/mag-match-media.service';\nexport * from './mag-space-service/mag-space-info';\nexport * from './mag-space-service/mag-space.service';\nexport * from './mag-space-service/mag-space-status';\nexport * from './mag-splash-screen.service';\nexport * from './ns-code-service/ns-code.service';\nexport * from './submitting-service/mag-submitting.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MagConfigService","i1.MagFrameService","i1","i1.MagDateService","i2"],"mappings":"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"}