{"version":3,"file":"ng-stalk-frame.mjs","sources":["../../components/frame/nz-zorro-sidebar-item.ts","../../components/frame/global-links2/global-links2.component.ts","../../components/frame/global-links2/global-links2.component.html","../../components/frame/tz-manual-selector/mag-tz-manual-selector.component.ts","../../components/frame/tz-manual-selector/mag-tz-manual-selector.component.html","../../components/frame/lang-selector/lang-selector.component.ts","../../components/frame/lang-selector/lang-selector.component.html","../../components/frame/mag-frame.component.ts","../../components/frame/mag-frame.component.html","../../components/frame/timezone-selector2/zone-group.ts","../../components/frame/timezone-selector2/timezone-selector2.component.ts","../../components/frame/timezone-selector2/timezone-selector2.component.html","../../components/frame/mag-frame.module.ts","../../components/frame/public-api.ts","../../components/frame/ng-stalk-frame.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 { Serializable, SidebarItem } from 'ng-stalk/core/model';\n\nexport class NzZorroSidebarItem extends Serializable {\n  source: SidebarItem;\n\n  level: number;\n  open = false;\n  selected = false;\n  disabled = false;\n  children: NzZorroSidebarItem[] = [];\n  parent?: NzZorroSidebarItem;\n\n  // -----\n  title?: string;\n  translate?: string;\n  icon?: string;\n  url?: string;\n  hasExternalUrl = false;\n  hasRouterLink = false;\n  hasUrl = false;\n  externalUrl?: string | null;\n  routerLink?: string | null;\n  href?: string | null;\n\n  // navigation path\n  id: number | string;\n  path: string;\n\n  constructor(source: SidebarItem, level: number = 1, parentPath: string = '') {\n    super();\n    // set core properties\n    this.source = source;\n    this.level = level;\n    // @ts-ignore\n    this.id = source.id;\n    this.path = `${parentPath}/${this.id}`;\n\n    // patch properties\n    this.title = this.source.title;\n    this.translate = this.source.translate;\n    this.icon = this.source.icon;\n    this.url = this.source.url;\n    this.hasExternalUrl = this.isHasExternalUrl();\n    this.hasRouterLink = (this.source.url && !this.hasExternalUrl) ? true : false;\n    this.hasUrl = this.hasRouterLink || this.hasExternalUrl;\n    this.externalUrl = this.source.externalUrl ? this.source.url : null;\n    this.routerLink = this.hasRouterLink ? this.url : null;\n    this.href = this.hasExternalUrl ? this.externalUrl : null;\n\n    if (source.children && source.children.length > 0) {\n      // @ts-ignore\n      this.children = source.children.map(child => new NzZorroSidebarItem(child as SidebarItem, level + 1, this.path\n      ));\n    }\n  }\n\n  isHasExternalUrl(): boolean {\n    if (!this.source.externalUrl) {\n      return false;\n    }\n    if (!this.source.url) {\n      return false;\n    }\n    return true;\n  }\n\n  expandChecked(): void {\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 { Component, ElementRef, Inject, Input, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { select, Store } from '@ngrx/store';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as _ from 'lodash';\n\nimport {\n  getCurrentGnbItem,\n  getDynamicShortcutItems,\n  getFixedShortcutItems,\n  getSearchableGnbItems,\n  getSelectableGnbItems,\n  MagFrameState,\n  UpdateSidebarKey\n} from 'ng-stalk/core/frame-store';\nimport { MagSupport } from 'ng-stalk/core/model';\nimport { GlobalLink } from 'ng-stalk/core/types';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n  selector: 'mag-global-links2',\n  templateUrl: './global-links2.component.html',\n  styleUrls: ['./global-links2.component.scss']\n})\nexport class GlobalLinks2Component implements OnInit, OnDestroy {\n  /**\n   * 고정된 Shortcut Item 목록. 해당 항목은 즐겨찾는 항목에 추가되지 않는다.\n   * MAG 전용 프로퍼티\n   */\n  // @ts-ignore\n  fixedShortcutItems: GlobalLink[];\n  displayGnbMenuItems: GlobalLink[] = [];\n  cookieShortcutItems: GlobalLink[] = [];\n\n  placeholder = 'Search for an app or a page';\n\n  shortcutItems: GlobalLink[] = [];\n  navigationItems: GlobalLink[] = [];\n  filteredNavigationItems: GlobalLink[] = [];\n  searching: boolean;\n  mobileShortcutsPanelActive: boolean;\n\n  @Input()\n  navigation: NzSafeAny;\n\n  @ViewChild('searchInput')\n  // @ts-ignore\n  searchInputField;\n\n  @ViewChild('shortcuts')\n  // @ts-ignore\n  shortcutsEl: ElementRef;\n\n  // Private\n  private _unsubscribeAll: Subject<NzSafeAny>;\n\n  // @ts-ignore\n  searchGnbForm: FormGroup;\n  currentGnbId: NzSafeAny;\n  loading = false;\n  selectableGnbItem: boolean = false;\n\n  /**\n   * Constructor\n   *\n   * @param _renderer\n   * @param _cookieService\n   * @param _observableMedia\n   */\n  constructor(\n    // private _cookieService: CookieService,\n\n    // @ts-ignore\n    // private _mediaObserver: MediaObserver,\n    private _renderer: Renderer2,\n    private router: Router,\n    private formBuilder: FormBuilder,\n    private translateService: TranslateService,\n    @Inject('MagSupport') private magSupport: MagSupport,\n    private _store: Store<MagFrameState>\n  ) {\n    // Set the defaults\n    this.shortcutItems = [];\n    this.searching = false;\n    this.mobileShortcutsPanelActive = false;\n\n    // Set the private defaults\n    this._unsubscribeAll = new Subject();\n\n    const fixedShortcutItems$ = this._store.pipe(select(getFixedShortcutItems));\n    fixedShortcutItems$.pipe(takeUntil(this._unsubscribeAll)).subscribe(items => {\n      this.fixedShortcutItems = items;\n      this.updateDisplayGnbMenuItems();\n    });\n\n    const dynamicShortcutItems$ = this._store.pipe(select(getDynamicShortcutItems));\n    dynamicShortcutItems$.pipe(takeUntil(this._unsubscribeAll)).subscribe(items => {\n      this.shortcutItems = items || [];\n      this.updateDisplayGnbMenuItems();\n    });\n\n    const searchableItems$ = this._store.pipe(select(getSearchableGnbItems));\n    searchableItems$.pipe(takeUntil(this._unsubscribeAll)).subscribe(items => {\n      this.navigationItems = items;\n    });\n\n    const currentGnbItem$ = this._store.pipe(select(getCurrentGnbItem));\n    currentGnbItem$\n      .pipe(takeUntil(this._unsubscribeAll))\n      // @ts-ignore\n      .subscribe((currentGnbItem: GlobalLink) => {\n        this.currentGnbId = currentGnbItem ? currentGnbItem.id : null;\n      });\n\n    const selectableGnbItem$ = this._store.pipe(select(getSelectableGnbItems));\n    selectableGnbItem$\n      .pipe(takeUntil(this._unsubscribeAll))\n      // @ts-ignore\n      .subscribe((selectable: boolean) => {\n        this.selectableGnbItem = selectable;\n      });\n\n    this.placeholder = this.magSupport.getGnpSearchPlaceholder();\n\n    this.initSearchSelect();\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Lifecycle hooks\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * On init\n   */\n  ngOnInit(): void {\n    // 최초 로딩시 무조건 캐시는 리셋시킴\n    // this._cookieService.set('FLIB.shortcuts', JSON.stringify([]));\n\n    // const cookieExists = this._cookieService.check('FLIB.shortcuts');\n\n    // if ( this._cookieService.check('FLIB.shortcuts') ) {\n    //   this.cookieShortcutItems = JSON.parse(this._cookieService.get('FLIB.shortcuts'));\n    // }\n    this.cookieShortcutItems = [];\n\n    this.updateDisplayGnbMenuItems();\n\n    // Subscribe to media changes\n    // this._nsMatchMediaService.onMediaChange\n    //     .pipe(takeUntil(this._unsubscribeAll))\n    //     .subscribe(() => {\n    //         if ( this._mediaObserver.isActive('gt-sm') )\n    //         {\n    //           // MAG: 작은 크기더라도 패널은 노출해야함.\n    //           // this.hideMobileShortcutsPanel();\n    //         }\n    //     });\n  }\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Unsubscribe from all subscriptions\n    this._unsubscribeAll.next(true);\n    this._unsubscribeAll.complete();\n  }\n\n  // -----------------------------------------------------------------------------------------------------\n  // @ Public methods\n  // -----------------------------------------------------------------------------------------------------\n\n  /**\n   * Search\n   *\n   * @param event\n   */\n  search(event: NzSafeAny): void {\n    const value = event.target.value.toLowerCase();\n\n    if (value === '') {\n      this.searching = false;\n      this.filteredNavigationItems = _.clone(this.navigationItems);\n\n      return;\n    }\n\n    this.searching = true;\n\n    this.filteredNavigationItems = this.navigationItems.filter(navigationItem => {\n      const title = this.getTitle(navigationItem);\n      return title.toLowerCase().includes(value);\n    });\n  }\n\n  /**\n   * Toggle shortcut\n   *\n   * @param event\n   * @param itemToToggle\n   */\n  toggleShortcut(event: NzSafeAny, itemToToggle: GlobalLink): void {\n    event.stopPropagation();\n\n    // MAG: fixed 아이템인 경우 해당 아이템을 실행한다. 별도 메서드로 분리하지 않는 이유는 FLIB 소스 변경을 최소화 하기 위함이다.\n    if (\n      this.fixedShortcutItems.filter(fixedItem => fixedItem.id === itemToToggle.id || (fixedItem.url && fixedItem.url === itemToToggle.url))\n        .length > 0\n    ) {\n      this.clickShortcut(itemToToggle);\n      return;\n    }\n\n    for (let i = 0; i < this.cookieShortcutItems.length; i++) {\n      if (this.cookieShortcutItems[i].id === itemToToggle.id) {\n        this.cookieShortcutItems.splice(i, 1);\n        // Save to the cookies\n        // this._cookieService.set('FLIB.shortcuts', JSON.stringify(this.cookieShortcutItems));\n\n        this.updateDisplayGnbMenuItems();\n        return;\n      }\n    }\n\n    this.cookieShortcutItems.push(itemToToggle);\n\n    this.updateDisplayGnbMenuItems();\n\n    // Save to the cookies\n    // this._cookieService.set('FLIB.shortcuts', JSON.stringify(this.cookieShortcutItems));\n  }\n\n  /**\n   * Is in shortcuts?\n   *\n   * @param navigationItem\n   * @returns\n   */\n  isInShortcuts(navigationItem: NzSafeAny): NzSafeAny {\n    return this.shortcutItems.find(item => {\n      return item.url === navigationItem.url;\n    });\n  }\n\n  /**\n   * On menu open\n   */\n  onMenuOpen(): void {\n    setTimeout(() => {\n      this.searchInputField.nativeElement.focus();\n    });\n  }\n\n  /**\n   * Show mobile shortcuts\n   */\n  showMobileShortcutsPanel(): void {\n    this.mobileShortcutsPanelActive = true;\n    this._renderer.addClass(this.shortcutsEl.nativeElement, 'show-mobile-panel');\n  }\n\n  /**\n   * Hide mobile shortcuts\n   */\n  hideMobileShortcutsPanel(): void {\n    this.mobileShortcutsPanelActive = false;\n    this._renderer.removeClass(this.shortcutsEl.nativeElement, 'show-mobile-panel');\n  }\n\n  // 머신건 전용 메소드\n\n  linkContainerClassName(globalLink: GlobalLink): string[] {\n    return globalLink.type === 'link' ? ['w-40', 'h-40', 'p-4', 'mr-12'] : [`w-${globalLink.width}`, 'h-40', 'p-4'];\n  }\n\n  linkClassName(globalLink: GlobalLink): string {\n    return this.isActiveShortcut(globalLink) ? 'secondary-text amber-600-fg' : 'secondary-text';\n  }\n\n  public get gnbMenuItems(): GlobalLink[] {\n    return this.navigationItems || [];\n  }\n\n  avatarStatus(globalLink: GlobalLink): boolean {\n    if (this.isActiveShortcut(globalLink)) {\n      return true;\n      // return 'online';\n    } else {\n      // return 'offline';\n      return false;\n    }\n  }\n\n  clickShortcut(globalLink: GlobalLink): void {\n    this._store.dispatch(new UpdateSidebarKey(globalLink.id));\n\n    if (globalLink.url) {\n      this.router.navigate([globalLink.url]);\n    } else if (typeof globalLink.callback === 'function') {\n      globalLink.callback(globalLink);\n    } else {\n      this.magSupport.onClickGnbMenu(globalLink);\n    }\n  }\n\n  isActiveShortcut(globalLink: GlobalLink): boolean {\n    return this.currentGnbId === globalLink.id;\n    // return true;\n  }\n\n  updateDisplayGnbMenuItems(): void {\n    this.displayGnbMenuItems = _.unionBy(this.fixedShortcutItems, this.shortcutItems, this.cookieShortcutItems, 'id');\n    // this.displayGnbMenuItems = [\n    //   {id: 'a1', type: 'link', title: 'App1', activated: true},\n    //   {id: 'a2', type: 'link', title: 'App2', activated: false},\n    //   {id: 'a3', type: 'link', title: 'App3', activated: false}\n    // ];\n    //\n    // this.navigationItems = [\n    //   {id: 'a1', type: 'link', title: 'App1', iconUrl: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', activated: true},\n    //   {id: 'a2', type: 'link', title: 'App1', iconUrl: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', activated: true, description: 'Ant Design, a design language fo'},\n    //   {id: 'a3', type: 'link', title: 'App2', activated: false, description: 'Ant Design, a design language fom'},\n    //   {id: 'a4', type: 'link', title: 'App3', activated: false}\n    // ];\n  }\n\n  private initSearchSelect(): void {\n    this.searchGnbForm = this.formBuilder.group({\n      selected: [null, []]\n    });\n\n    this.searchGnbForm.controls.selected.valueChanges\n      .pipe(takeUntil(this._unsubscribeAll))\n\n      // @ts-ignore\n      .subscribe((value: NzSafeAny) => {\n        const formModel = this.searchGnbForm.getRawValue();\n        if (formModel.selected) {\n          // @ts-ignore\n          const found: GlobalLink = _.find(this.navigationItems, {\n            id: formModel.selected\n          });\n          this.clickShortcut(found);\n          setTimeout(() => {\n            this.searchGnbForm.patchValue({\n              selected: null\n            });\n          }, 50);\n        }\n      });\n  }\n\n  public getTitle(item: GlobalLink): string {\n    if (item.translate) {\n      return this.translateService.instant(item.translate);\n    } else {\n      return item.title || '';\n    }\n  }\n\n  // selectedItemOnList: any = null;\n  // selectItem(value): void {\n  //   console.log(\"********** value:\", value, \"seelectedItemOnList:\", this.selectedItemOnList);\n  //   if (!value) {\n  //     return;\n  //   }\n  //\n  //   // @ts-ignore\n  //\n  //   // this.selectedItemOnList = null; // 아이템을 선택하고, 바로 select 항목에선 제거한다.\n  //\n  //   // this.searchGnbControl.onChange(null);\n  //   this.searchGnbControl.value = null;\n  // }\n  //\n  // @ViewChild('searchGnbControl', {static: true})\n  // searchGnbControl: NzSelectComponent;\n}\n","<form nz-form [formGroup]=\"searchGnbForm\">\n  <div id=\"ns-shortcuts\" #shortcuts>\n    <div nz-row nzJustify=\"start\" nzAlign=\"middle\">\n      <div nz-col nzFlex=\"auto\">\n        <nz-space nzAlign=\"center\">\n          <ng-template *nzSpaceItem ngFor let-shortcutItem [ngForOf]=\"displayGnbMenuItems\" let-i=\"index\">\n            <div [ngClass]=\"linkContainerClassName(shortcutItem)\">\n              <!-- Icon URL Type -->\n              <nz-badge\n                [nzDot]=\"avatarStatus(shortcutItem)\"\n                *ngIf=\"shortcutItem.type === 'link' && shortcutItem.iconUrl\"\n                (click)=\"clickShortcut(shortcutItem)\"\n              >\n                <nz-avatar\n                  nzIcon=\"user\"\n                  [nzSrc]=\"shortcutItem.iconUrl\"\n                  [nzTooltipTitle]=\"getTitle(shortcutItem)\"\n                  nzTooltipPlacement=\"bottom\"\n                  nz-tooltip\n                  (click)=\"clickShortcut(shortcutItem)\"\n                ></nz-avatar>\n              </nz-badge>\n              <!--                  <div class=\"status-icon\" [ngClass]=\"avatarStatus(shortcutItem)\"></div>-->\n\n              <!-- Icon Type -->\n              <nz-badge\n                [nzDot]=\"avatarStatus(shortcutItem)\"\n                *ngIf=\"shortcutItem.type === 'link' && !shortcutItem.iconUrl && shortcutItem.icon\"\n                (click)=\"clickShortcut(shortcutItem)\"\n              >\n                <nz-avatar\n                  [nzIcon]=\"shortcutItem.icon\"\n                  [nzSrc]=\"shortcutItem.iconUrl\"\n                  [nzTooltipTitle]=\"getTitle(shortcutItem)\"\n                  nzTooltipPlacement=\"bottom\"\n                  nz-tooltip\n                  (click)=\"clickShortcut(shortcutItem)\"\n                ></nz-avatar>\n                <!--                    {{title(shortcutItem).substr(0, 1).toUpperCase()}}-->\n              </nz-badge>\n\n              <!-- Text Type -->\n              <nz-badge\n                [nzDot]=\"avatarStatus(shortcutItem)\"\n                *ngIf=\"shortcutItem.type === 'link' && !shortcutItem.iconUrl && !shortcutItem.icon\"\n                (click)=\"clickShortcut(shortcutItem)\"\n              >\n                <nz-avatar\n                  [nzText]=\"getTitle(shortcutItem)\"\n                  [nzTooltipTitle]=\"getTitle(shortcutItem)\"\n                  nzTooltipPlacement=\"bottom\"\n                  nz-tooltip\n                  (click)=\"clickShortcut(shortcutItem)\"\n                ></nz-avatar>\n              </nz-badge>\n\n              <!-- Button Type -->\n              <nz-badge [nzDot]=\"avatarStatus(shortcutItem)\" *ngIf=\"shortcutItem.type === 'button'\">\n                <button\n                  nz-button\n                  [nzType]=\"isActiveShortcut(shortcutItem) ? 'primary' : 'default'\"\n                  [nzTooltipTitle]=\"getTitle(shortcutItem)\"\n                  nzTooltipPlacement=\"bottom\"\n                  nz-button\n                  nz-tooltip\n                  (click)=\"shortcutItem.callback ? shortcutItem.callback(shortcutItem) : null\"\n                >\n                  <i\n                    nz-icon\n                    [nzType]=\"shortcutItem.icon\"\n                    nzTheme=\"outline\"\n                    *ngIf=\"shortcutItem.icon\"\n                  ></i>\n                  <span>{{ getTitle(shortcutItem) }}</span>\n                </button>\n              </nz-badge>\n            </div>\n          </ng-template>\n\n          <!--                <button mat-icon-button [matMenuTriggerFor]=\"addMenu\" matTooltip=\"Click to add/remove shortcut\"-->\n          <!--                        (menuOpened)=\"onMenuOpen()\"-->\n          <!--                -->\n          <!--                >-->\n          <!--&lt;!&ndash;                    <mat-icon class=\"sectypeondary-text\">search</mat-icon>&ndash;&gt;-->\n          <!--                  <i class=\"trigger\"-->\n          <!--                     nz-icon-->\n          <!--                     nzType=\"search\"-->\n          <!--                  ></i>-->\n\n          <!--&lt;!&ndash;                  <mat-icon class=\"amber-600-fg\">search</mat-icon>&ndash;&gt;-->\n          <!--                </button>-->\n\n          <ng-container *nzSpaceItem>\n            <nz-select\n              nzShowSearch\n              #searchGnbControl\n              [nzPlaceHolder]=\"placeholder\"\n              formControlName=\"selected\"\n              class=\"search-select\"\n               *ngIf=\"selectableGnbItem\"\n            >\n              <nz-option\n                nzCustomContent\n                [nzLabel]=\"item.title + ''\"\n                [nzValue]=\"item.id\"\n                *ngFor=\"let item of navigationItems\"\n              >\n                <img [src]=\"item.iconUrl\" *ngIf=\"item.iconUrl\" class=\"search-item-avatar\" />\n                {{ item.title }}\n              </nz-option>\n            </nz-select>\n          </ng-container>\n\n          <!--              <button nz-button nzType=\"default\" nzShape=\"circle\"-->\n          <!--                      nz-popover [nzPopoverTitle]=\"placeholder\" [nzPopoverContent]=\"contentTemplate\" nzPopoverTrigger=\"focus\"-->\n          <!--              ><i nz-icon nzType=\"search\"></i></button>-->\n\n          <!--              <nz-avatar nzIcon=\"search\"-->\n          <!--                         nz-popover nzPopoverTitle=\"Title\" [nzPopoverContent]=\"contentTemplate\" nzPopoverTrigger=\"focus\"-->\n          <!--                         style=\"background-color:transparent\"-->\n          <!--              ></nz-avatar>-->\n\n          <!--              <i nz-icon nzType=\"search\" nzTheme=\"outline\"-->\n          <!--                 nz-popover nzPopoverTitle=\"Title\" [nzPopoverContent]=\"contentTemplate\" nzPopoverTrigger=\"focus\"-->\n          <!--              ></i>-->\n\n          <!--              <button nz-popover nzPopoverTitle=\"Title\" [nzPopoverContent]=\"contentTemplate\" nzPopoverTrigger=\"focus\">-->\n          <!--                &lt;!&ndash;                    <mat-icon class=\"sectypeondary-text\">search</mat-icon>&ndash;&gt;-->\n          <!--                <i class=\"trigger\" nz-icon nzType=\"search\"></i>-->\n\n          <!--                &lt;!&ndash;                  <mat-icon class=\"amber-600-fg\">search</mat-icon>&ndash;&gt;-->\n          <!--              </button>-->\n\n          <!--              <ng-template #contentTemplate>-->\n          <!--&lt;!&ndash;              <a (click)=\"clickMe()\">Close</a>&ndash;&gt;-->\n          <!--                <nz-list [nzDataSource]=\"navigationItems\" [nzRenderItem]=\"item\" [nzItemLayout]=\"'horizontal'\" [nzLoading]=\"loading\">-->\n          <!--                  <ng-template #item let-item>-->\n          <!--                    <nz-list-item>-->\n          <!--                      <nz-list-item-meta-->\n          <!--                        [nzTitle]=\"nzTitle\"-->\n          <!--                        [nzAvatar]=\"item.iconUrl\"-->\n          <!--                        [nzDescription]=\"item.description\"-->\n          <!--                      >-->\n          <!--                        <ng-template #nzTitle>-->\n          <!--                          <span (click)=\"clickShortcut(item)\" class=\"search-result-item-title\">{{ item.title }}</span>-->\n          <!--                        </ng-template>-->\n          <!--                      </nz-list-item-meta>-->\n          <!--                    </nz-list-item>-->\n          <!--                  </ng-template>-->\n          <!--                </nz-list>-->\n          <!--              </ng-template>-->\n        </nz-space>\n      </div>\n    </div>\n    <!--    <div class=\"shortcuts-mobile-toggle\" *ngIf=\"!mobileShortcutsPanelActive\" fxLayout=\"row\" fxLayoutAlign=\"start center\"-->\n    <!--         fxHide fxShow.lt-md>-->\n    <!--        <button mat-icon-button (click)=\"showMobileShortcutsPanel()\">-->\n    <!--            <mat-icon class=\"amber-600-fg\">star</mat-icon>-->\n    <!--        </button>-->\n    <!--    </div>-->\n  </div>\n</form>\n","import {\n  Component, EventEmitter, Input, OnDestroy, OnInit, Output,\n} from '@angular/core';\nimport { MagInitConfig } from \"ng-stalk/core/model\";\nimport {Subject} from \"rxjs\";\nimport {NzSafeAny} from \"ng-zorro-antd/core/types\";\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\nimport {CodeAndName, MagTimeZone} from \"ng-stalk/core/types\";\nimport {MagConfigService} from \"ng-stalk/core/service\";\nimport {select, Store} from \"@ngrx/store\";\nimport {getTimezone, MagFrameState, SelectTimezone} from \"ng-stalk/core/frame-store\";\nimport {takeUntil} from \"rxjs/operators\";\n\n@Component({\n  selector: 'mag-tz-manual-selector',\n  templateUrl: './mag-tz-manual-selector.component.html',\n  styleUrls: ['./mag-tz-manual-selector.component.less']\n})\nexport class MagTzManualSelectorComponent implements OnInit, OnDestroy {\n  private destroy$: Subject<NzSafeAny>;\n\n  @Output()\n    // @ts-ignore\n    // tslint:disable-next-line:prefer-output-readonly\n  selectEvt: EventEmitter<NzSafeAny> = new EventEmitter();\n\n  modelForm: FormGroup;\n\n  timezoneInfo: MagTimeZone = {\n    timezoneId: 'Asia/Seoul',\n    timezoneOffset: '+09:00'\n  };\n  // @ts-ignore\n  @Input('timeZones') timeZones: CodeAndName[];\n\n  constructor(\n    private _formBuilder: FormBuilder,\n    // @ts-ignore\n    private magConfigService: MagConfigService<MagInitConfig>,\n\n    private _store: Store<MagFrameState>\n  ) {\n    this.destroy$ = new Subject();\n\n    // getTimezone\n\n    const timezone$ = this._store.pipe(select(getTimezone));\n    timezone$.pipe(takeUntil(this.destroy$)).subscribe((timezone: MagTimeZone) => {\n      this.timezoneInfo = timezone;\n      console.error(\"recieve tz: \", timezone);\n    });\n\n    this.modelForm = this.createForm(this.timezoneInfo);\n    this.modelForm.controls.timezoneId.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(newValue => {\n      this.setTimezoneId(newValue);\n    });\n  }\n\n  createForm(model: MagTimeZone): FormGroup {\n    return this._formBuilder.group({\n      timezoneId: [model.timezoneId, Validators.required]\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n  ngOnInit(): void {\n    // let zoneGroup: ZoneGroup = new ZoneGroup();\n    // let zoneHead = '';\n\n    // date-fns-tz()\n  }\n\n  setTimezone(e: NzSafeAny): void {\n    this.timezoneInfo.timezoneId = e.option.value.toString().trim();\n    // this.timezoneInfo.timezoneOffset = moment().tz(`${this.timezoneInfo.timezoneId}`).format('Z'); // moment().tz(`${this.timezoneInfo.timezoneId}`).format('ZZ');\n    this.selectEvt.emit(this.timezoneInfo);\n    this._store.dispatch(new SelectTimezone(this.timezoneInfo));\n  }\n\n  setTimezoneId(timezoneId: string): void {\n    console.log(\"setTimezoneId: \", timezoneId);\n    this.timezoneInfo.timezoneId = timezoneId;\n    this.modelForm.patchValue({\n      timezoneId: timezoneId\n    }, {\n      emitEvent: false,\n    });\n    // this.timezoneInfo.timezoneOffset = moment().tz(`${this.timezoneInfo.timezoneId}`).format('Z'); // moment().tz(`${this.timezoneInfo.timezoneId}`).format('ZZ');\n    this.selectEvt.emit(this.timezoneInfo);\n    this._store.dispatch(new SelectTimezone(this.timezoneInfo));\n  }\n\n}\n\n","<form [formGroup]=\"modelForm\">\n  <nz-select nzShowSearch nzPlaceHolder=\"Select a time zone\" formControlName=\"timezoneId\">\n    <nz-option [nzLabel]=\"zone.name\" [nzValue]=\"zone.code\" *ngFor=\"let zone of timeZones\"></nz-option>\n  </nz-select>\n</form>","/**\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 { Component, Input, OnInit } from '@angular/core';\nimport { Store } from \"@ngrx/store\";\nimport { MagFrameState, SelectLanguage } from \"ng-stalk/core/frame-store\";\nimport { ToolLanguage } from \"ng-stalk/core/types\";\n\n@Component({\n  selector: 'ns-lang-selector',\n  templateUrl: './lang-selector.component.html',\n  styleUrls: ['./lang-selector.component.less']\n})\nexport class LangSelectorComponent implements OnInit {\n\n  @Input('languages') languages: ToolLanguage[] = [];\n  @Input('selectedLanguage') selectedLanguage?: ToolLanguage;\n\n  constructor(\n    private store: Store<MagFrameState>\n  ) {\n  }\n\n  ngOnInit(): void {\n  }\n\n  /**\n   * Set the language\n   *\n   * @param lang\n   */\n  setLanguage(lang: ToolLanguage): void {\n    // Set the selected language for the toolbar\n    this.store.dispatch(new SelectLanguage(lang.id));\n  }\n}\n","<span class=\"tool-menu-button\" nz-dropdown [nzDropdownMenu]=\"languageToolMenus\">\n              <!--              <i nz-icon nzType=\"global\"></i>-->\n  <!--              <div fxLayout=\"row\" fxLayoutAlign=\"center center\">-->\n              <span class=\"iso text-uppercase\" *ngIf=\"selectedLanguage\">\n                {{ selectedLanguage.title }}\n              </span>\n  <!--              </div>-->\n            </span>\n\n<!--          <a nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"menu\">-->\n<!--            Click me-->\n<!--            <i nz-icon nzType=\"down\"></i>-->\n<!--          </a>-->\n<nz-dropdown-menu #languageToolMenus=\"nzDropdownMenu\">\n  <ul nz-menu>\n    <li nz-menu-item *ngFor=\"let lang of languages\" (click)=\"setLanguage(lang)\">\n                  <span>\n                    <span class=\"iso\">{{ lang.title }}</span>\n                  </span>\n    </li>\n    <!--                <li nz-menu-item>2nd menu item</li>-->\n    <!--                <li nz-menu-divider></li>-->\n    <!--                <li nz-menu-item nzDisabled>disabled menu item</li>-->\n    <!--                <li nz-submenu nzTitle=\"sub menu\">-->\n    <!--                  <ul>-->\n    <!--                    <li nz-menu-item>3rd menu item</li>-->\n    <!--                    <li nz-menu-item>4th menu item</li>-->\n    <!--                  </ul>-->\n    <!--                </li>-->\n    <!--                <li nz-submenu nzDisabled nzTitle=\"disabled sub menu\">-->\n    <!--                  <ul>-->\n    <!--                    <li nz-menu-item>3rd menu item</li>-->\n    <!--                    <li nz-menu-item>4th menu item</li>-->\n    <!--                  </ul>-->\n    <!--                </li>-->\n  </ul>\n</nz-dropdown-menu>","/**\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 {\n  AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef,\n  Component,\n  HostListener,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {select, Store} from '@ngrx/store';\nimport {TranslateService} from '@ngx-translate/core';\nimport * as _ from 'lodash';\nimport {\n  getLanguage,\n  getLayoutState,\n  getLoginUser,\n  getMagFrameState,\n  getRouterState,\n  getSidebarItems,\n  getSidebarKey,\n  getToolMenus,\n  getVersion,\n  LayoutState,\n  MagFrameState, SetSelectableGnbItem, UpdateContentDimension,\n  UpdateFrameDimension,\n  UpdateVersion\n} from 'ng-stalk/core/frame-store';\nimport {MagInitConfig, MagSupport, SidebarItem} from 'ng-stalk/core/model';\nimport {\n  MagCodeCacheService,\n  MagConfigService,\n  MagFrameService,\n  MagMatchMediaService,\n  MagSplashScreenService\n} from 'ng-stalk/core/service';\nimport {CodeAndName, MagAvatar, ToolLanguage, ToolMenuItem} from 'ng-stalk/core/types';\nimport {MagUtil} from 'ng-stalk/core/util';\nimport { NzResizeObserver } from 'ng-zorro-antd/cdk/resize-observer';\nimport {NzSafeAny} from 'ng-zorro-antd/core/types';\nimport {NzNotificationService} from 'ng-zorro-antd/notification';\nimport {CookieService} from 'ngx-cookie-service';\nimport {merge, combineLatest, Observable, Subject, asapScheduler, animationFrameScheduler} from 'rxjs';\nimport {auditTime, take, takeUntil} from 'rxjs/operators';\n\nimport {NsConfigKey, NsConfigService, WithNsConfig} from 'ng-stalk/core/config';\nimport {InputBoolean} from 'ng-zorro-antd/core/util';\nimport {NzZorroSidebarItem} from './nz-zorro-sidebar-item';\nimport {ViewportRuler} from \"@angular/cdk/overlay\";\nimport {NzContentComponent, NzHeaderComponent} from \"ng-zorro-antd/layout\";\n\nconst NS_CONFIG_MODULE_NAME: NsConfigKey = 'frame';\nconst RESIZE_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n@Component({\n  selector: 'mag-frame',\n  templateUrl: './mag-frame.component.html',\n  styleUrls: ['./mag-frame.component.less'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagFrameComponent implements AfterViewInit, OnInit, OnDestroy {\n  readonly _nsModuleName: NsConfigKey = NS_CONFIG_MODULE_NAME;\n\n  @Input() @WithNsConfig() nsInitConfig?: MagInitConfig;\n  @Input() @WithNsConfig() @InputBoolean() nsDebug: boolean = true;\n  @Input() @WithNsConfig() @InputBoolean() nsDisableGnbSearch: boolean = false;\n  @Input() @WithNsConfig() @InputBoolean() nsCheckVersion: boolean = false;\n  @Input() @WithNsConfig() nsTimeZones: CodeAndName[] = [];\n  @Input() @WithNsConfig() @InputBoolean() nsSelectableGnbItem?: boolean;\n  @Input() @WithNsConfig() @InputBoolean() nsEnabledSwitchMenu?: boolean = true;\n\n  isCollapsed = false;\n\n  selectedValue = null;\n\n  private destroy$: Subject<any>;\n\n  menus: NzZorroSidebarItem[] = [];\n  // fro mag\n  // @ts-ignore\n  logoUrl: string;\n  // @ts-ignore\n  appName: string;\n  // @ts-ignore\n  toolMenus$: Observable<ToolMenuItem[]>;\n  // @ts-ignore\n  loginUser$: Observable<MagAvatar>;\n  languages: ToolLanguage[] = [];\n  selectedLanguage: ToolLanguage;\n  // @ts-ignore\n  theme: 'dark' | 'light';\n\n  lastVersion = 'init';\n\n  // @ts-ignore\n  @ViewChild('reloadNotificationTemplate', {static: false}) public reloadNotificationTemplate: TemplateRef<NzSafeAny>;\n\n  // @ts-ignore\n  layout: LayoutState;\n\n  @Input()\n  magInvisible = false;\n\n  media?: string;\n\n  @ViewChild('frameHeader', {static: false}) frameHeaderRef!: NzHeaderComponent;\n  @ViewChild('frameContent', {static: false}) frameContentRef!: NzContentComponent;\n\n  constructor(\n    public nsConfigService: NsConfigService,\n    private cdr: ChangeDetectorRef,\n    // @ts-ignore\n    private _nsSplashScreenService: MagSplashScreenService,\n    private translateService: TranslateService,\n    private cookieService: CookieService,\n    private viewportRuler: ViewportRuler,\n    private router: Router,\n    private zone: NgZone,\n    private nzNotificationService: NzNotificationService,\n    private nzResizeObserver: NzResizeObserver,\n    @Inject('MagSupport') private magSupport: MagSupport,\n    private magConfigService: MagConfigService<MagInitConfig>,\n    private magCodeCacheService: MagCodeCacheService,\n    private magFrameService: MagFrameService,\n    private magMatchMediaService: MagMatchMediaService,\n    private store: Store<MagFrameState>\n  ) {\n    this.destroy$ = new Subject();\n    this.selectedLanguage = {\n      id: 'ko',\n      title: '한국어',\n      flag: 'kr'\n    };\n\n    const layout$ = this.store.pipe(select(getLayoutState));\n    layout$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(layoutState => (this.layout = layoutState));\n\n    this.magMatchMediaService.onMediaChange\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(media => {\n        this.media = media;\n      });\n  }\n\n  ngOnInit(): void {\n    // { width, height }\n    console.log(\"[MagFrame:ViewPortRuler] getViewportSize: \", this.viewportRuler.getViewportSize());\n\n    // { bottom, height, left, right, top, width }\n    console.log(\"[MagFrame:ViewPortRuler] getViewportRect: \", this.viewportRuler.getViewportRect());\n\n    // { top, left }\n    console.log(\"[MagFrame:ViewPortRuler] getViewportScrollPosition: \", this.viewportRuler.getViewportScrollPosition());\n\n    this.store.dispatch(new UpdateFrameDimension({\n      width: this.viewportRuler.getViewportRect().width,\n      height: this.viewportRuler.getViewportRect().height,\n    }));\n\n    // native resize event object\n    // this._ruler.change().subscribe(resizeEvent => console.log(resizeEvent));\n\n    this.initMag();\n    const currentLanguage$ = this.store.pipe(select(getLanguage));\n    currentLanguage$.pipe(takeUntil(this.destroy$)).subscribe(lang => {\n      console.log('[MAG2] App Recevied changed lang:', lang);\n\n      // @ts-ignore\n      this.selectedLanguage = _.find(this.languages, {id: lang});\n      this.cookieService.set('lang', lang);\n\n      if (this.nsInitConfig) {\n        this.magConfigService.init(this.nsInitConfig);\n        this.magCodeCacheService.setCodeData(this.nsInitConfig.codes);\n        this.translateService.use(lang);\n      } else {\n        this.magSupport\n          .loadInitConfig()\n          .then(initConfig => {\n            console.log('init config:', initConfig);\n            this.magConfigService.init(initConfig);\n            this.magCodeCacheService.setCodeData(initConfig.codes);\n            this.translateService.use(lang);\n          })\n          .catch(e => {\n            if (typeof e.handle === 'function') {\n              e.handle();\n            } else {\n              console.error(e);\n            }\n          });\n      }\n    });\n\n    // sidebar 변경에 대한 적용\n    const sidebarItems$ = this.store.pipe(select(getSidebarItems));\n    const routeState$ = this.store.pipe(select(getRouterState));\n\n    // @ts-ignore\n    combineLatest(sidebarItems$, routeState$)\n      // .pipe(takeUntil(this.unsubscribeAll))\n\n      // @ts-ignore\n      .subscribe(([sidebar, routeState]) => {\n        this.store\n          .pipe(select(getSidebarKey))\n          .pipe(take(1))\n          // @ts-ignore\n          .subscribe((sidebarKey: string) => {\n            const menus = sidebar.map(sidebarItem => new NzZorroSidebarItem(sidebarItem, 1));\n\n            for (const sidebarItem of menus) {\n              if (sidebarItem.translate) {\n                this.translateService\n                  .get(sidebarItem.translate)\n                  .pipe(take(1))\n                  .subscribe(value => {\n                    sidebarItem.title = value;\n                  });\n              }\n\n              this.markOpenOnSidebar(sidebarItem);\n              this.cdr.markForCheck();\n            }\n            this.menus = menus;\n          });\n      });\n    // sidebarItems$.pipe(takeUntil(this.unsubscribeAll))\n    //   .subscribe(sidebar => {\n    //     console.log('MAG2.ngOnInit.sidebarItems$:', sidebar);\n    //     this.store.pipe(select(getSidebarKey)).pipe(take(1))\n    //       .subscribe(sidebarKey => {\n    //         console.log('MAG2.ngOnInit.sidebarKey2:', sidebarKey);\n    //\n    //         this.menus = sidebar.map(sidebarItem => new NzZorroSidebarItem(sidebarItem, 1));\n    //       });\n    //   });\n    //\n    // routeState$.pipe(takeUntil(this.unsubscribeAll))\n    //   .subscribe(sidebar => {\n    //     console.error('MAG2.routeState$:', sidebar);\n    //   });\n\n    if (this.nsCheckVersion) {\n      this.zone.runOutsideAngular(() => {\n        setInterval(() => {\n          const versionPromise = this.magSupport.getApplicationVersion();\n          if (versionPromise) {\n            versionPromise.then(version => {\n              if (version !== undefined) {\n                this.store.dispatch(new UpdateVersion(version));\n              }\n            });\n          }\n        }, 5000);\n      });\n    }\n\n    const version$ = this.store.pipe(select(getVersion));\n    version$.pipe(takeUntil(this.destroy$)).subscribe(newVersion => {\n      if (this.lastVersion === 'init') {\n        // 최초 설정은 skip\n        this.lastVersion = newVersion;\n        return;\n      }\n\n      if (this.lastVersion !== newVersion) {\n        this.lastVersion = newVersion;\n        this.nzNotificationService.template(this.reloadNotificationTemplate!, {\n          nzDuration: 0\n        });\n      }\n    });\n\n    const frame$ = this.store.pipe(select(getMagFrameState));\n    frame$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((magFrameState: MagFrameState) => {\n        this.magFrameService.update(magFrameState);\n      });\n  }\n\n  ngAfterViewInit(): void {\n    console.log(\"[MagFrame] this.frameHeaderRef:\", this.frameHeaderRef);\n    console.log(\"[MagFrame] this.frameContentRef:\", this.frameContentRef);\n    merge(\n        this.nzResizeObserver.observe(this.frameHeaderRef.elementRef),\n        // @ts-ignore\n        this.nzResizeObserver.observe(this.frameContentRef.elementRef) // 실제 사용 공간이 표현됨. TODO 헤더 공간을 따로 잡고, 가용 공간은 별도로 계산하도록 하는 것이 좋을 듯\n      )\n      .pipe(takeUntil(this.destroy$),\n        auditTime(16, RESIZE_SCHEDULER)\n      )\n      .subscribe((values) => {\n        console.error(\"[MAG Frame] header, content resize : \", values);\n        this.store.dispatch(new UpdateContentDimension({\n          width: values[0].contentRect.width,\n          height: values[0].contentRect.height,\n        }))\n      });\n  }\n\n  markOpenOnSidebar(sidebarItem: NzZorroSidebarItem): void {\n    // @ts-ignore\n    if (this.router.isActive(sidebarItem.url, false)) {\n      sidebarItem.open = true;\n      // const frags = sidebarItem.path.split('/').map(id => id + '');\n      // for (const target of menus) {\n      //   if (frags.indexOf(target.id + '') >= 0) {\n      //     target.open = true;\n      //   }\n      // }\n    }\n\n    if (sidebarItem.children) {\n      for (const child of sidebarItem.children) {\n        this.markOpenOnSidebar(child);\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event: NzSafeAny) {\n    console.log(\"[MagFrame] window.resize: \", event);\n    this.store.dispatch(new UpdateFrameDimension({\n      width: event.target.innerWidth,\n      height: event.target.innerHeight,\n    }))\n  }\n\n  initMag(): void {\n    this.logoUrl = this.magConfigService.getInitConfig().logoUrl;\n    this.appName = this.magConfigService.getInitConfig().appName;\n    this.theme = this.magSupport.getTheme() || 'dark';\n    this.languages = this.magConfigService.getInitConfig().toolLanguages;\n    this.toolMenus$ = this.store.pipe(select(getToolMenus));\n\n    if (typeof this.nsSelectableGnbItem !== 'undefined') {\n      this.store.dispatch(new SetSelectableGnbItem(this.nsSelectableGnbItem));\n    }\n\n    // this.store.pipe(select(fromStore.getToolMenus))\n    //   .pipe(takeUntil(this.unsubscribeAll))\n    //   .subscribe(items => {\n    //     console.log('****** TOOL BAR. MENUS:', items);\n    //     // this._toolMenus = items;\n    //   });\n\n    // @ts-ignore\n    this.loginUser$ = this.store.pipe(select(getLoginUser));\n    // this.store.pipe(select(fromStore.getLoginUser))\n    //   .pipe(takeUntil(this.unsubscribeAll))\n    //   .subscribe(loginUser => {\n    //     console.log('****** TOOL BAR. loginUser:', loginUser);\n    //   });\n  }\n\n  clickToolMenu(toolMenuItem: ToolMenuItem): void {\n    this.magSupport.onClickToolMenu(toolMenuItem);\n  }\n\n  reloadApplication(): void {\n    document.location.href = '/?reload=' + MagUtil.generateGUID();\n  }\n\n  public getMenuTitle(menuItem: SidebarItem): string {\n    if (menuItem.translate) {\n      return this.translateService.instant(menuItem.translate);\n    }\n    return this.translateService.instant(menuItem.title || '');\n  }\n\n  public getToolMenuTitle(toolMenuItem: ToolMenuItem): string {\n    if (toolMenuItem.translate) {\n      return this.translateService.instant(toolMenuItem.translate);\n    }\n    return this.translateService.instant(toolMenuItem.title || '');\n  }\n}\n","<nz-layout class=\"app-layout\" *ngIf=\"!magInvisible\">\n  <nz-sider\n    class=\"menu-sidebar\"\n    nzCollapsible\n    nzWidth=\"256px\"\n    nzBreakpoint=\"md\"\n    [nzCollapsedWidth]=\"0\"\n    [nzTheme]=\"theme\"\n    [(nzCollapsed)]=\"isCollapsed\"\n    [nzTrigger]=\"null\"\n    *ngIf=\"layout.sidebar\"\n  >\n    <div class=\"sidebar-logo sidebar-logo-{{ theme }}\">\n      <a routerLink=\"/\">\n        <!--        <img src=\"https://ng.ant.design/assets/img/logo.svg\" alt=\"logo\">-->\n        <img [src]=\"logoUrl\" alt=\"logo\" />\n        <h1>{{ appName }}</h1>\n      </a>\n    </div>\n    <ul nz-menu [nzTheme]=\"theme\" nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n      <ng-container *ngTemplateOutlet=\"menuTpl; context: { $implicit: menus }\"></ng-container>\n      <ng-template #menuTpl let-menus>\n        <ng-container *ngFor=\"let menu of menus\">\n          <li\n            *ngIf=\"!menu.children || menu.children.length === 0\"\n            nz-menu-item\n            [nzPaddingLeft]=\"menu.level * 24\"\n            [nzDisabled]=\"menu.disabled\"\n            nzMatchRouter\n          >\n            <a [routerLink]=\"menu.routerLink\" [href]=\"menu.href\" *ngIf=\"menu.hasUrl\">\n              <i nz-icon [nzType]=\"menu.icon\" *ngIf=\"menu.icon\"></i>\n              <span>{{ getMenuTitle(menu) }}</span>\n            </a>\n            <span *ngIf=\"!menu.hasUrl\">\n              <i nz-icon [nzType]=\"menu.icon\" *ngIf=\"menu.icon\"></i>\n              <span>{{ getMenuTitle(menu) }}</span>\n            </span>\n          </li>\n          <li\n            *ngIf=\"menu.children && menu.children.length > 0\"\n            nz-submenu\n            [nzPaddingLeft]=\"menu.level * 24\"\n            [nzOpen]=\"menu.open\"\n            [nzTitle]=\"getMenuTitle(menu)\"\n            [nzIcon]=\"menu.icon\"\n            [nzDisabled]=\"menu.disabled\"\n          >\n            <ul>\n              <ng-container\n                *ngTemplateOutlet=\"menuTpl; context: { $implicit: menu.children }\"\n              ></ng-container>\n            </ul>\n          </li>\n        </ng-container>\n      </ng-template>\n\n      <!--      <li nz-submenu nzOpen nzTitle=\"Dashboard\" nzIcon=\"dashboard\">-->\n      <!--        <ul>-->\n      <!--          <li nz-menu-item nzMatchRouter>-->\n      <!--            <a routerLink=\"/welcome\">Welcome</a>-->\n      <!--          </li>-->\n      <!--          <li nz-menu-item nzMatchRouter>-->\n      <!--            <a routerLink=\"/welcome2\">Welcome2</a>-->\n      <!--          </li>-->\n      <!--          <li nz-menu-item nzMatchRouter>-->\n      <!--            <a>Monitor</a>-->\n      <!--          </li>-->\n      <!--          <li nz-menu-item nzMatchRouter>-->\n      <!--            <a>Workplace</a>-->\n      <!--          </li>-->\n      <!--        </ul>-->\n      <!--      </li>-->\n      <!--      <li nz-submenu nzOpen nzTitle=\"Form\" nzIcon=\"form\">-->\n      <!--        <ul>-->\n      <!--          <li nz-menu-item nzMatchRouter>-->\n      <!--            <a>Basic Form</a>-->\n      <!--          </li>-->\n      <!--        </ul>-->\n      <!--      </li>-->\n    </ul>\n  </nz-sider>\n  <nz-layout>\n    <nz-header *ngIf=\"layout.header\" class=\"nz-header\" #frameHeader>\n      <div class=\"app-header\">\n        <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n          <div nz-col nzFlex=\"64px\">\n            <span class=\"header-trigger\">\n              <i\n                class=\"trigger\"\n                nz-icon\n                [nzType]=\"isCollapsed ? 'menu-unfold' : 'menu-fold'\"\n                (click)=\"isCollapsed = !isCollapsed\"\n              ></i>\n            </span>\n          </div>\n          <div nz-col nzFlex=\"auto\">\n            <nz-space nzAlign=\"center\">\n              <ng-template *nzSpaceItem [ngIf]=\"nsEnabledSwitchMenu\">\n                <mag-global-links2></mag-global-links2>\n              </ng-template>\n              <ng-template *nzSpaceItem [ngIf]=\"nsDebug\">\n                <div class=\"debug-panel\">[DEBUG] mediaQuery: {{ media }} layout: {{ layout | json }}</div>\n              </ng-template>\n              <ng-template *nzSpaceItem></ng-template>\n            </nz-space>\n          </div>\n          <div nz-col nzFlex=\"200px\">\n            <div class=\"tool-menus\">\n              <nz-badge [nzCount]=\"0\">\n                <span\n                  class=\"tool-menu-button\"\n                  nz-dropdown\n                  [nzDropdownMenu]=\"menu\"\n                  *ngIf=\"loginUser$ | async\"\n                >\n                  <nz-avatar nzIcon=\"user\" nzSize=\"small\"></nz-avatar>\n                  {{ (loginUser$ | async)?.name }}/{{ (loginUser$ | async)?.role }}\n                </span>\n\n                <!--          <button nz-button nzType=\"link\"-->\n                <!--                  nz-dropdown [nzDropdownMenu]=\"menu\"-->\n                <!--          ><nz-avatar nzIcon=\"user\"></nz-avatar>My Name../Hello</button>-->\n\n                <!--          <a nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"menu\">-->\n                <!--            Click me-->\n                <!--            <i nz-icon nzType=\"down\"></i>-->\n                <!--          </a>-->\n              </nz-badge>\n              <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n                <ul nz-menu>\n                  <li\n                    nz-menu-item\n                    *ngFor=\"let menu of toolMenus$ | async\"\n                    (click)=\"clickToolMenu(menu)\"\n                  >\n                    <i nz-icon [nzType]=\"menu.icon || 'caret-right'\"></i>\n                    {{ getToolMenuTitle(menu) }}\n                  </li>\n                  <!--                <button mat-menu-item class=\"\" >-->\n                  <!--                  <mat-icon>{{ menu.icon }}</mat-icon>-->\n                  <!--                  <span>{{ menu.title }}</span>-->\n                  <!--                </button>-->\n                  <!--                -->\n                  <!--                <li nz-menu-item>1st menu item</li>-->\n                  <!--                <li nz-menu-item>2nd menu item</li>-->\n                  <!--                <li nz-menu-divider></li>-->\n                  <!--                <li nz-menu-item nzDisabled>disabled menu item</li>-->\n                  <!--                <li nz-submenu nzTitle=\"sub menu\">-->\n                  <!--                  <ul>-->\n                  <!--                    <li nz-menu-item>3rd menu item</li>-->\n                  <!--                    <li nz-menu-item>4th menu item</li>-->\n                  <!--                  </ul>-->\n                  <!--                </li>-->\n                  <!--                <li nz-submenu nzDisabled nzTitle=\"disabled sub menu\">-->\n                  <!--                  <ul>-->\n                  <!--                    <li nz-menu-item>3rd menu item</li>-->\n                  <!--                    <li nz-menu-item>4th menu item</li>-->\n                  <!--                  </ul>-->\n                  <!--                </li>-->\n                </ul>\n              </nz-dropdown-menu>\n\n              <!--            <nz-select nzShowSearch nzAllowClear nzPlaceHolder=\"Select a person\" [(ngModel)]=\"selectedValue\">-->\n              <!--              <nz-option nzLabel=\"Jack\" nzValue=\"jack\"></nz-option>-->\n              <!--              <nz-option-group nzLabel=\"Manager\">-->\n              <!--                <nz-option nzLabel=\"Lucy\" nzValue=\"lucy\"></nz-option>-->\n              <!--                <nz-option nzLabel=\"Tom\" nzValue=\"tom\"></nz-option>-->\n              <!--              </nz-option-group>-->\n\n              <!--            </nz-select>-->\n            </div>\n          </div>\n          <div nz-col nzFlex=\"80px\">\n            <!--            <mag-timezone-selector2 fxFlex=\"200px\" fxHide.lt-md></mag-timezone-selector2>-->\n            <mag-tz-manual-selector [timeZones]=\"nsTimeZones\" fxHide.lt-md></mag-tz-manual-selector>\n          </div>\n          <div nz-col nzFlex=\"80px\">\n            <ns-lang-selector [languages]=\"languages\" [selectedLanguage]=\"selectedLanguage\"></ns-lang-selector>\n          </div>\n        </div>\n      </div>\n    </nz-header>\n    <nz-content class=\"mag-page-wrapper1\" #frameContent><router-outlet></router-outlet></nz-content>\n  </nz-layout>\n</nz-layout>\n\n<ng-template #reloadNotificationTemplate let-notification>\n  <div class=\"ant-notification-notice-content\">\n    <div>\n      <div class=\"ant-notification-notice-message\">Application Changed</div>\n      <div class=\"ant-notification-notice-description\">\n        어플리케이션이 변경되었습니다. 작업중일 경우 즉시 변경사항을 저장하거나, 어플리케이션을\n        리로드 하시기 바랍니다. 리로드 하지 않을 경우, 작업 정보가 유실될 수 있습니다.\n      </div>\n      <span class=\"ant-notification-notice-btn\">\n        <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"reloadApplication()\">\n          <span>Application Reload</span>\n        </button>\n      </span>\n    </div>\n  </div>\n</ng-template>\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 ZoneGroup {\n  letter: string;\n  zones: string[];\n\n  constructor() {\n    this.letter = '';\n    this.zones = [];\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 { Component, EventEmitter, Inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { select, Store } from '@ngrx/store';\nimport { getTimezone, MagFrameState, SelectTimezone } from 'ng-stalk/core/frame-store';\nimport { MagInitConfig, MagSupport } from 'ng-stalk/core/model';\nimport { MagConfigService } from 'ng-stalk/core/service';\nimport { MagTimeZone } from 'ng-stalk/core/types';\n// import moment from 'moment';\n// import 'moment-timezone';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n// import 'moment';\nimport { listTimeZones } from 'timezone-support';\nimport { ZoneGroup } from './zone-group';\n\n@Component({\n  selector: 'mag-timezone-selector2',\n  templateUrl: './timezone-selector2.component.html',\n  styleUrls: ['./timezone-selector2.component.scss']\n})\nexport class TimezoneSelector2Component implements OnInit, OnDestroy {\n  private destroy$: Subject<NzSafeAny>;\n\n  @Output()\n  // @ts-ignore\n  // tslint:disable-next-line:prefer-output-readonly\n  selectEvt: EventEmitter<NzSafeAny> = new EventEmitter();\n\n  modelForm: FormGroup;\n\n  timezoneInfo: MagTimeZone = {\n    timezoneId: 'Asia/Seoul',\n    timezoneOffset: '+09:00'\n  };\n  // @ts-ignore\n  timezoneList: NzSafeAny[];\n  // @ts-ignore\n  zoneGroupList: ZoneGroup[];\n  // @ts-ignore\n  zoneGroups: Observable<ZoneGroup[]>;\n\n  constructor(\n    private _formBuilder: FormBuilder,\n    // @ts-ignore\n    private magConfigService: MagConfigService<MagInitConfig>,\n\n    // @ts-ignore\n    @Inject('MagSupport') private magSupport: MagSupport,\n    private _store: Store<MagFrameState>\n  ) {\n    this.destroy$ = new Subject();\n\n    // getTimezone\n\n    const timezone$ = this._store.pipe(select(getTimezone));\n    timezone$.pipe(takeUntil(this.destroy$)).subscribe((timezone: MagTimeZone) => {\n      this.timezoneInfo = timezone;\n    });\n\n    this.modelForm = this.createForm(this.timezoneInfo);\n    this.modelForm.controls.timezoneId.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(newValue => {\n      this.setTimezoneId(newValue);\n    });\n  }\n\n  createForm(model: MagTimeZone): FormGroup {\n    return this._formBuilder.group({\n      timezoneId: [model.timezoneId, Validators.required]\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n  ngOnInit(): void {\n    // let zoneGroup: ZoneGroup = new ZoneGroup();\n    // let zoneHead = '';\n\n    // date-fns-tz()\n\n    this.timezoneList = listTimeZones(); // moment.tz.names();\n    const groupAndValues: Map<string, string[]> = new Map<string, string[]>();\n    // moment.tz.names().map(zone => {\n    this.timezoneList.map(zone => {\n      const group = zone.split('/')[0];\n      const zones: string[] = groupAndValues.get(group) || [];\n      zones.push(zone);\n      groupAndValues.set(group, zones);\n\n      //   this.zoneGroupList.push(zoneGroup);\n      //   zoneHead = zone.split('/')[0];\n      //   zoneGroup = new ZoneGroup();\n      //   zoneGroup.letter = zoneHead;\n      //   zoneGroup.zones.push(zone);\n      // } else {\n      //   zoneGroup.zones.push(zone);\n      // }\n    });\n\n    this.zoneGroupList = [];\n    for (const group of groupAndValues.keys()) {\n      const zoneGroup: ZoneGroup = new ZoneGroup();\n      zoneGroup.letter = group;\n\n      // @ts-ignore\n      zoneGroup.zones = groupAndValues.get(group);\n      this.zoneGroupList.push(zoneGroup);\n    }\n\n    // this.zoneGroups = this.timezoneForm.get('timezoneGroup').valueChanges\n    // .pipe(\n    //   startWith(''),\n    //   map(value => this._filterGroup(value))\n    // );\n    // this.zoneGroupList.shift();\n    // this.timezoneForm.get('timezoneGroup').setValue(this.timezoneInfo.timezoneId.toString().trim());\n  }\n\n  setTimezone(e: NzSafeAny): void {\n    this.timezoneInfo.timezoneId = e.option.value.toString().trim();\n    // this.timezoneInfo.timezoneOffset = moment().tz(`${this.timezoneInfo.timezoneId}`).format('Z'); // moment().tz(`${this.timezoneInfo.timezoneId}`).format('ZZ');\n    this.selectEvt.emit(this.timezoneInfo);\n    this._store.dispatch(new SelectTimezone(this.timezoneInfo));\n  }\n\n  setTimezoneId(timezoneId: string): void {\n    this.timezoneInfo.timezoneId = timezoneId;\n    // this.timezoneInfo.timezoneOffset = moment().tz(`${this.timezoneInfo.timezoneId}`).format('Z'); // moment().tz(`${this.timezoneInfo.timezoneId}`).format('ZZ');\n    this.selectEvt.emit(this.timezoneInfo);\n    this._store.dispatch(new SelectTimezone(this.timezoneInfo));\n  }\n}\n","<form [formGroup]=\"modelForm\">\n  <nz-select nzShowSearch nzPlaceHolder=\"Select a time zone\" formControlName=\"timezoneId\">\n    <nz-option-group [nzLabel]=\"group.letter\" *ngFor=\"let group of zoneGroupList\">\n      <nz-option [nzLabel]=\"zone\" [nzValue]=\"zone\" *ngFor=\"let zone of group.zones\"></nz-option>\n    </nz-option-group>\n  </nz-select>\n</form>\n\n<!--<button mat-button fxHide fxShow.gt-xs class=\"language-button\">-->\n<!--    <div fxLayout=\"row\" fxLayoutAlign=\"center center\">-->\n<!--        <form [formGroup]=\"timezoneForm\">-->\n<!--            <mat-form-field class=\"custom-formField\" fxFlex=\"100\">-->\n<!--                <input type=\"text\" matInput formControlName=\"timezoneGroup\" required [matAutocomplete]=\"autoGroup\" fxFlex=\"100\">-->\n<!--                <mat-autocomplete #autoGroup=\"matAutocomplete\" (optionSelected)=\"setTimezone($event)\">-->\n<!--                    <mat-optgroup *ngFor=\"let group of zoneGroups | async\" [label]=\"group.letter\">-->\n<!--                    <mat-option *ngFor=\"let zone of group.zones\" [value]=\"zone\">-->\n<!--                        <span class=\"username mr-12\" fxHide fxShow.gt-sm>{{zone}}</span>-->\n<!--                    </mat-option>-->\n<!--                </mat-optgroup>-->\n<!--                </mat-autocomplete>-->\n<!--            </mat-form-field>-->\n<!--        </form>-->\n<!--    </div>-->\n<!--</button>-->\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MagFrameStoreModule } from 'ng-stalk/core/frame-store';\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\nimport { NzListModule } from 'ng-zorro-antd/list';\nimport { NzNotificationModule } from 'ng-zorro-antd/notification';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzSpaceModule } from 'ng-zorro-antd/space';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { GlobalLinks2Component } from './global-links2/global-links2.component';\nimport { MagFrameComponent } from './mag-frame.component';\nimport { TimezoneSelector2Component } from './timezone-selector2/timezone-selector2.component';\nimport { MagTzManualSelectorComponent } from './tz-manual-selector/mag-tz-manual-selector.component';\nimport { LangSelectorComponent } from './lang-selector/lang-selector.component';\nimport { NzResizeObserverModule } from 'ng-zorro-antd/cdk/resize-observer';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n\n    // nz\n    NzFormModule,\n    NzGridModule,\n    NzLayoutModule,\n    NzBadgeModule,\n    NzDropDownModule,\n    NzSelectModule,\n    NzAvatarModule,\n    NzIconModule,\n    NzButtonModule,\n    NzNotificationModule,\n    NzToolTipModule,\n    NzPopoverModule,\n    NzListModule,\n    NzSpaceModule,\n    NzGridModule,\n    NzResizeObserverModule,\n\n    RouterModule,\n    TranslateModule,\n    MagFrameStoreModule\n  ],\n  declarations: [MagFrameComponent, GlobalLinks2Component, TimezoneSelector2Component, MagTzManualSelectorComponent, LangSelectorComponent],\n  exports: [MagFrameComponent]\n})\nexport class MagFrameModule {}\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-frame.component';\nexport * from './mag-frame.module';\nexport * from './timezone-selector2/zone-group';\nexport * from './nz-zorro-sidebar-item';\nexport * from './global-links2/global-links2.component';\nexport * from './timezone-selector2/timezone-selector2.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i5","i2","i6","i9","i10","i3","i1","i11","i12","i13","i14","i15","i16","i17","i18","i19","i20","i21","i22.GlobalLinks2Component","i23.MagTzManualSelectorComponent","i24.LangSelectorComponent"],"mappings":"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"}