{"version":3,"file":"ng-stalk-crud.mjs","sources":["../../components/crud/ns-crud.service.ts","../../components/crud/ns-crud.module.ts","../../components/crud/ns-crud-modal-helper.ts","../../components/crud/public-api.ts","../../components/crud/ng-stalk-crud.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 { ApplicationRef, Injectable } from '@angular/core';\nimport {\n  BlankSelectableDataSource,\n  CrudAction,\n  CrudModalData,\n  CrudModalOption,\n  CrudModalResponse,\n  SelectableZorroDataSource\n} from 'ng-stalk/core/crud';\nimport { MagMatchMediaService } from 'ng-stalk/core/service';\nimport { MagConstants } from 'ng-stalk/core/util';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzModalService } from 'ng-zorro-antd/modal';\n\nexport interface ModalComponentsMap {\n  [key: string]: NzSafeAny;\n}\n\nexport interface ModalComponent {\n  action: CrudAction | string;\n  component: NzSafeAny;\n}\n\n@Injectable()\nexport class NsCrudService<T, F> {\n  dataSource: SelectableZorroDataSource<T, F>;\n  modalComponents: Map<CrudAction | string, NzSafeAny>;\n  sortName: string | null = null;\n  sortValue: string | null = null;\n  onSort?: () => void;\n\n  constructor(\n    private dialog: NzModalService,\n    private magMatchMediaService: MagMatchMediaService,\n    private ref: ApplicationRef\n  ) {\n    this.dataSource = new BlankSelectableDataSource();\n    this.modalComponents = new Map();\n  }\n\n  registerDataSource(dataSource: SelectableZorroDataSource<T, F>): void {\n    this.dataSource = dataSource;\n  }\n\n  registerModalComponents(modalComponents: Map<CrudAction | string, NzSafeAny> | ModalComponent[] | ModalComponentsMap): void {\n    if (modalComponents instanceof Map) {\n      this.modalComponents = modalComponents;\n    } else if (Array.isArray(modalComponents)) {\n      for (const entry of modalComponents as ModalComponent[]) {\n        this.modalComponents.set(entry.action, entry.component);\n      }\n    } else {\n      this.modalComponents = new Map();\n      for (const key in modalComponents) {\n        this.modalComponents.set(key, modalComponents[key]);\n      }\n    }\n  }\n\n  registerOnSortCallback(onSortFunc: () => void): void {\n    this.onSort = onSortFunc;\n  }\n\n  addModalComponent(action: CrudAction | string, component: NzSafeAny): void {\n    this.modalComponents.set(action, component);\n  }\n\n  public getDataSource(): SelectableZorroDataSource<T, F> {\n    return this.dataSource;\n  }\n\n  protected getDefaultModalWidth(component: NzSafeAny, forceWidth?: string | 'smart' | 'big'): string {\n    if (forceWidth) {\n      return forceWidth;\n    }\n\n    if (component.width) {\n      return component.width;\n    }\n\n    if (forceWidth === 'big') {\n      return MagConstants.modalWidthSmartForBig(this.magMatchMediaService.activeMediaQuery);\n    }\n    // == smart\n    return MagConstants.modalWidthSmart(this.magMatchMediaService.activeMediaQuery);\n  }\n\n  openModalComponent(modalData: CrudModalData<T>): void {\n    const component = this.modalComponents.get(modalData.action!);\n    const nzModalWidth = this.getDefaultModalWidth(component, modalData.option?.forceModalWidth);\n    this.dialog\n      .create({\n        nzContent: component,\n        nzComponentParams: {\n          data: modalData\n        },\n        nzWidth: nzModalWidth\n      })\n      .afterClose.subscribe((response: CrudModalResponse<T>) => {\n        if (!response) {\n          return;\n        }\n        this.onModalAction(response.action, response.model);\n      });\n  }\n\n  public add(option: CrudModalOption = {}): void {\n    const modalData: CrudModalData<T> = new CrudModalData<T>();\n    modalData.action = CrudAction.openAddModal;\n    modalData.option = option;\n\n    // this.dialogRef = this.dialog.open(this.getModalComponents().get(CrudAction.openAddModal), {\n    //   panelClass: 'mag-form-dialog',\n    //   width: this.modalWidth,\n    //   data: modalData\n    // });\n\n    this.openModalComponent(modalData);\n  }\n\n  public modify(model: T, option: CrudModalOption = {}): void {\n    const modalData: CrudModalData<T> = new CrudModalData<T>();\n    modalData.action = CrudAction.openEditModal;\n    modalData.model = model;\n    modalData.option = option;\n\n    // this.dialogRef = this.dialog.open(this.getModalComponents().get(CrudAction.openEditModal), {\n    //   panelClass: 'mag-form-dialog',\n    //   width: this.modalWidth,\n    //   data: modalData\n    // });\n\n    const component = this.modalComponents.get(CrudAction.openEditModal);\n    const nzModalWidth = this.getDefaultModalWidth(component, option.forceModalWidth);\n    this.dialog\n      .create({\n        nzContent: component,\n        nzComponentParams: {\n          data: modalData\n        },\n        nzWidth: nzModalWidth\n      })\n      .afterClose.subscribe((response: CrudModalResponse<T>) => {\n      if (!response) {\n        return;\n      }\n      this.onModalAction(response.action, response.model);\n    });\n  }\n\n  showDetail(model: T, option: CrudModalOption = {}): void {\n    const modalData: CrudModalData<T> = new CrudModalData<T>({\n      model,\n      option\n    });\n    // this.dialogRef = this.dialog.open(this.getModalComponents().get(CrudAction.openDetailModal), {\n    //   panelClass: 'mag-form-dialog',\n    //   width: this.modalWidth,\n    //   data: modalData\n    // }).afterClosed()\n\n    const component = this.modalComponents.get(CrudAction.openDetailModal);\n    const nzModalWidth = this.getDefaultModalWidth(component, option.forceModalWidth);\n\n    this.dialog\n      .create({\n        nzContent: component,\n        nzComponentParams: {\n          data: modalData\n        },\n        // @ts-ignore\n        nzWidth: nzModalWidth\n      })\n      .afterClose.subscribe((response: CrudModalResponse<T>) => {\n      if (!response) {\n        return;\n      }\n      if (response.action === CrudAction.openEditModal) {\n        this.onModalAction(response.action, response.model);\n      } else if (response.action === CrudAction.doDelete) {\n        this.onModalAction(response.action, response.model);\n      } else {\n        this.onModalAction(response.action, response.model);\n      }\n    });\n  }\n\n  onModalAction(action: CrudAction | string, model?: T): void {\n    if (action === CrudAction.openDetailModal || action === CrudAction.detail || action === 'detail') {\n      // @ts-ignore\n      this.showDetail(model);\n    } else if (action === CrudAction.openEditModal || action === CrudAction.edit || action === 'edit') {\n      // @ts-ignore\n      this.modify(model);\n    } else if (action === CrudAction.add) {\n      if (model) {\n        this.dataSource.add(model);\n        this.ref.tick();\n      }\n    } else if (action === CrudAction.updated && model) {\n      this.dataSource.addOrUpdate(model);\n      this.ref.tick();\n    } else if (action === CrudAction.doDelete) {\n      // @ts-ignore\n      this.dataSource.remove(model);\n      this.ref.tick();\n    } else if (action === CrudAction.openAddModal) {\n      this.add();\n    } else {\n      const modalData: CrudModalData<T> = new CrudModalData<T>({\n        action,\n        model\n      });\n\n      const openComponent = this.modalComponents.get(action);\n      if (openComponent) {\n        // this.dialogRef = this.dialog.open(this.getModalComponents().get(action), {\n        //   panelClass: 'mag-form-dialog',\n        //   data: modalData\n        // }).afterClosed().\n\n        this.dialog\n          .create({\n            nzContent: openComponent,\n            nzComponentParams: {\n              data: modalData\n            }\n          })\n          .afterClose.subscribe((response: CrudModalResponse<T>) => {\n          if (!response) {\n            return;\n          }\n          // if (response.action === CrudAction.openEditModal) {\n          //   this.modify(response.model);\n          // } else if (response.action === CrudAction.doDelete) {\n          //   this.dataSource.remove(response.model);\n          // } else {\n          //\n          // }\n          this.onModalAction(response.action, response.model);\n        });\n      }\n    }\n    this.ref.tick();\n  }\n\n  // Sort 지원 메서드\n  public sort(sort: { key: string; value: string }): void {\n    this.sortName = sort.key;\n    this.sortValue = sort.value;\n    if (this.onSort) {\n      this.onSort();\n    }\n  }\n\n  public sortData(data: T[]): T[] {\n    const sortData = [...data];\n    if (this.sortName && this.sortValue) {\n      return sortData.sort((a, b) =>\n        this.sortValue === 'ascend' || this.sortValue === 'asc'\n          ? // tslint:disable-next-line:no-non-null-assertion\n            // @ts-ignore\n          a[this.sortName!] > b[this.sortName!]\n            ? 1\n            : -1\n          : // tslint:disable-next-line:no-non-null-assertion\n          // @ts-ignore\n          b[this.sortName!] > a[this.sortName!]\n            ? 1\n            : -1\n      );\n    } else {\n      return sortData;\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 { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NsCrudService } from './ns-crud.service';\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, NzModalModule],\n  providers: [NsCrudService],\n  exports: []\n})\nexport class NsCrudModule {}\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 { CrudAction, CrudModalResponse } from \"ng-stalk/core/crud\";\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\nimport { NzModalRef } from \"ng-zorro-antd/modal\";\n\nexport class NsCrudModalHelper {\n\n  public static goBack(dialogRef: NzModalRef<NzSafeAny>): void {\n    dialogRef.close();\n  }\n\n  public static close(dialogRef: NzModalRef<NzSafeAny>): void {\n    dialogRef.close();\n  }\n\n  public static completeModal(dialogRef: NzModalRef<NzSafeAny>, action: CrudAction | string, model?: NzSafeAny): void {\n    dialogRef.close(new CrudModalResponse(action, model));\n  }\n\n  public static completeModalForUpdate(dialogRef: NzModalRef<NzSafeAny>, model?: NzSafeAny): void {\n    dialogRef.close(new CrudModalResponse(CrudAction.updated, model));\n  }\n\n  /**\n   * 상위 Page 로 액션 결과와 현재 도메인 모델을 전달한다.\n   * @param action\n   * @param model\n   * @deprecated\n   */\n  public static doModalAction(dialogRef: NzModalRef<NzSafeAny>, action: CrudAction | string, model?: NzSafeAny): void {\n    this.completeModal(dialogRef, action, model);\n  }\n\n  /**\n   * 상위 Page 로 최종 도메인 모델을 전달한다.\n   * @param model\n   * @deprecated\n   */\n  public static doModalCompletedAction(dialogRef: NzModalRef<NzSafeAny>, model?: NzSafeAny): void {\n    this.completeModalForUpdate(dialogRef, model);\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 * from './ns-crud.module';\nexport * from './ns-crud.service';\nexport * from './ns-crud-modal-helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}