{"version":3,"file":"ngx-sdcore.mjs","sources":["../../../projects/ngx-sdcore/common/constants/media-type.constant.ts","../../../projects/ngx-sdcore/common/constants/notification.constant.ts","../../../projects/ngx-sdcore/common/services/destroy.service.ts","../../../projects/ngx-sdcore/common/services/ng-snotify.service.ts","../../../projects/ngx-sdcore/common/utilities/function-utility.ts","../../../projects/ngx-sdcore/common/utilities/pagination-utility.ts","../../../projects/ngx-sdcore/common/utilities/inject-base-app.ts","../../../projects/ngx-sdcore/common/directives/ngx-trim-input.directive.ts","../../../projects/ngx-sdcore/common/directives/SDDirectives.module.ts","../../../projects/ngx-sdcore/common/public-api.ts","../../../projects/ngx-sdcore/ngx-sdcore.ts"],"sourcesContent":["export const IMAGE_TYPES_CONST: string[] = [\r\n  'tif',\r\n  'pjp',\r\n  'jfif',\r\n  'ico',\r\n  'tiff',\r\n  'gif',\r\n  'svg',\r\n  'xbm',\r\n  'jxl',\r\n  'jpeg',\r\n  'svgz',\r\n  'jpg',\r\n  'webp',\r\n  'png',\r\n  'bmp',\r\n  'pjpeg',\r\n  'avif',\r\n];\r\n\r\nexport const VIDEO_TYPES_CONST: string[] = [\r\n  'ogm',\r\n  'wmv',\r\n  'mpg',\r\n  'webm',\r\n  'ogv',\r\n  'mov',\r\n  'asx',\r\n  'mpeg',\r\n  'mp4',\r\n  'm4v',\r\n  'avi',\r\n];\r\n\r\nexport const MEDIA_TYPE_CONST = <const>{\r\n  IMG: 'IMG',\r\n  VIDEO: 'VIDEO',\r\n};\r\n","export const MSG_CONST = <const>{\r\n  ADDED: 'Successfully Added.',\r\n  ADD_FAILED: 'Adding Failed On Save.',\r\n  CLOSE: 'Make Sure You Want To Close This.',\r\n  CLOSE_FAILED: 'Closing Failed On Save.',\r\n  CLOSED: 'Successfully Closed.',\r\n  CHANGE_STATUS: 'Make Sure You Want To Change This Status.',\r\n  CHANGE_STATUS_FAILED: 'Changing Status Failed On Save.',\r\n  CHANGED_STATUS: 'Status Successfully Changed.',\r\n  CHANGE_PASSWORD: 'Make Sure You Want To Change Password.',\r\n  CHANGE_PASSWORD_FAILED: 'Changing Password Failed On Save.',\r\n  CHANGED_PASSWORD: 'Password Successfully Changed.',\r\n  CONFIRM_PASSWORD: 'New Password And Confirm Password Does Not Match.',\r\n  COPIED: 'Copied To Clipboard',\r\n  DATA_NOT_FOUND: 'Data Not Found.',\r\n  DELETE: 'Make Sure You Want To Delete This.',\r\n  DELETE_FAILED: 'Deleting Failed On Save.',\r\n  DELETED: 'Successfully Deleted.',\r\n  FILE_UNSELECTED: 'Please Select A File.',\r\n  INVALID_FILE_TYPE: 'Invalid File Type.',\r\n  INVALID_FILE_SIZE: 'File Size Is Too Big.',\r\n  INVALID_SEARCH: 'Please Complete At Least One Field.',\r\n  INVALID_OTP: 'Invalid OTP Entered.',\r\n  LOGGED_IN: 'Welcome To The System.',\r\n  LOGGED_OUT: 'You Have Been Logged Out.',\r\n  LOGIN_FAILED: 'Your Username And/Or Password Do Not Match.',\r\n  LOCK: 'Make Sure You Want To Lock This.',\r\n  LOCK_FAILED: 'Locking Failed On Save.',\r\n  LOCKED: 'Successfully Locked.',\r\n  NO_DATA: 'No Data.',\r\n  NO_DATA_SELECTED: 'No Data Selected.',\r\n  UPLOADED: 'Successfully Uploaded.',\r\n  UPLOAD_FAILED: 'Uploading Failed On Save.',\r\n  UPDATE: 'Make Sure You Want To Update This.',\r\n  UPDATE_FAILED: 'Updating Failed On Save.',\r\n  UPDATED: 'Successfully Updated.',\r\n  REMOVE: 'Make Sure You Want To Remove This.',\r\n  REMOVE_FAILED: 'Removing Failed On Save.',\r\n  REMOVED: 'Successfully Removed.',\r\n  RESET_MSG: 'Make Sure You Want To Reset This.',\r\n  RESET_FAILED: 'Reseting Failed On Save.',\r\n  RESET: 'Successfully Reset.',\r\n  REQUIRED_FIELDS: 'Please Complete All Required Fields.',\r\n  SYSTEM_ERROR: 'An Error Occurred While Connecting To The Server.',\r\n  UNAUTHORIZED: 'You Are Not Authorized To View This Page.',\r\n  UNKNOWN_ERROR: 'An Error Occurred While Processing Your Request.',\r\n};\r\n\r\nexport const TITLE_CONST = <const>{\r\n  CHANGE_PASSWORD: 'Change Password?',\r\n  CHANGE_STATUS: 'Change Status?',\r\n  CLOSE: 'Close?',\r\n  DELETE: 'Delete?',\r\n  ERROR: 'Oh No!',\r\n  INVALID: 'Invalid!',\r\n  LOGIN_FAILED: 'Login Failed!',\r\n  LOCK: 'Lock?',\r\n  UNAUTHORIZED: 'Unauthorized!',\r\n  RESET: 'Reset?',\r\n  REMOVE: 'Remove?',\r\n  SUCCESS: 'Well Done!',\r\n  UPDATE: 'Update?',\r\n  WARNING: 'Warning!',\r\n};\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class DestroyService implements OnDestroy {\r\n  destroyed$: Subject<void> = new Subject();\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyed$.next();\r\n    this.destroyed$.complete();\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SnotifyPosition, SnotifyService, SnotifyToastConfig } from 'ngx-sdcore/snotify';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgSnotifyService {\r\n  config: SnotifyToastConfig = {\r\n    bodyMaxLength: 300,\r\n    titleMaxLength: 100,\r\n    backdrop: -1,\r\n    position: SnotifyPosition.rightTop,\r\n    timeout: 3000,\r\n    showProgressBar: true,\r\n    closeOnClick: true,\r\n    pauseOnHover: true,\r\n  };\r\n\r\n  constructor(private snotifyService: SnotifyService) {\r\n    this.setDefaults();\r\n  }\r\n\r\n  setDefaults() {\r\n    this.snotifyService.setDefaults({\r\n      global: {\r\n        maxAtPosition: 10,\r\n        maxOnScreen: 10,\r\n        newOnTop: true,\r\n        filterDuplicates: false,\r\n      },\r\n    });\r\n  }\r\n\r\n  success(body: string, title: string) {\r\n    this.snotifyService.success(body, title, this.config);\r\n  }\r\n\r\n  info(body: string, title: string) {\r\n    this.snotifyService.info(body, title, this.config);\r\n  }\r\n\r\n  error(body: string, title: string) {\r\n    this.snotifyService.error(body, title, this.config);\r\n  }\r\n\r\n  warning(body: string, title: string) {\r\n    this.snotifyService.warning(body, title, this.config);\r\n  }\r\n\r\n  simple(body: string, title: string) {\r\n    this.snotifyService.simple(body, title, this.config);\r\n  }\r\n\r\n  confirm(\r\n    body: string,\r\n    title: string,\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    okCallback: () => any,\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    cancelCallBack?: () => any\r\n  ) {\r\n    const config = { ...this.config };\r\n    config.position = SnotifyPosition.centerCenter;\r\n    config.timeout = 0;\r\n    config.backdrop = 0.5;\r\n    config.closeOnClick = false;\r\n\r\n    this.snotifyService.confirm(body, title, {\r\n      ...config,\r\n      buttons: [\r\n        {\r\n          text: 'OK',\r\n          action: (toast) => {\r\n            this.snotifyService.remove(toast.id);\r\n            okCallback();\r\n          },\r\n          bold: true,\r\n        },\r\n        {\r\n          text: 'Cancel',\r\n          action: (toast) => {\r\n            this.snotifyService.remove(toast.id);\r\n            if (typeof cancelCallBack === 'function') {\r\n              cancelCallBack();\r\n            }\r\n          },\r\n        },\r\n      ],\r\n    });\r\n  }\r\n\r\n  clear() {\r\n    this.snotifyService.clear();\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { Pagination } from './pagination-utility';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { NgSnotifyService } from '../services/ng-snotify.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class FunctionUtility {\r\n  static spinnerService: NgxSpinnerService;\r\n  static snotify: NgSnotifyService;\r\n  /**\r\n   *Hàm tiện ích\r\n   */\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n  constructor() { }\r\n\r\n  /**\r\n   * Check 1 string có phải empty hoặc null hoặc undefined ko.\r\n   */\r\n  static checkEmpty(str: string) {\r\n    return !str || /^\\s*$/.test(str);\r\n  }\r\n\r\n  /**\r\n   * Kiểm tra số lượng phần ở trang hiện tại, nếu bằng 1 thì cho pageNumber lùi 1 trang\r\n   * @param pagination\r\n   */\r\n  static calculatePagination(pagination: Pagination) {\r\n    // Kiểm tra trang hiện tại phải là trang cuối không và trang hiện tại không phải là trang 1\r\n    if (\r\n      pagination.pageNumber === pagination.totalPage &&\r\n      pagination.pageNumber !== 1\r\n    ) {\r\n      // Lấy ra số lượng phần tử hiện tại của trang\r\n      const currentItemQty =\r\n        pagination.totalCount -\r\n        (pagination.pageNumber - 1) * pagination.pageSize;\r\n\r\n      // Nếu bằng 1 thì lùi 1 trang\r\n      if (currentItemQty === 1) {\r\n        pagination.pageNumber--;\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Thêm hoặc xóa class tác động vào id element trên DOM\r\n   * * @param id\r\n   * * @param className\r\n   * * @param type => Value bằng true thì add class. Value bằng false thì xóa class\r\n   */\r\n  static changeDomClassList(id: string, className: string, type: boolean) {\r\n    type\r\n      ? document.getElementById(id)?.classList.add(className)\r\n      : document.getElementById(id)?.classList.remove(className);\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  static toFormData(obj: any, form?: FormData, namespace?: string) {\r\n    const fd = form || new FormData();\r\n    let formKey: string;\r\n    for (const property in obj) {\r\n      // eslint-disable-next-line no-prototype-builtins\r\n      if (obj.hasOwnProperty(property)) {\r\n        // namespaced key property\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        if (!isNaN(property as any)) {\r\n          // obj is an array\r\n          formKey = namespace ? `${namespace}[${property}]` : property;\r\n        } else {\r\n          // obj is an object\r\n          formKey = namespace ? `${namespace}.${property}` : property;\r\n        }\r\n        if (obj[property] instanceof Date) {\r\n          // the property is a date, so convert it to a string\r\n          fd.append(formKey, obj[property].toISOString());\r\n        } else if (\r\n          typeof obj[property] === 'object' &&\r\n          !(obj[property] instanceof File)\r\n        ) {\r\n          // the property is an object or an array, but not a File, use recursivity\r\n          this.toFormData(obj[property], fd, formKey);\r\n        } else {\r\n          // the property is a string, number or a File object\r\n          fd.append(formKey, obj[property]);\r\n        }\r\n      }\r\n    }\r\n    return fd;\r\n  }\r\n\r\n  /**\r\n   * Append property HttpParams\r\n   * * @param formValue\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  static toParams(formValue: any) {\r\n    let params = new HttpParams();\r\n    for (const key of Object.keys(formValue)) {\r\n      const value = formValue[key];\r\n      params = params.append(key, value);\r\n    }\r\n    return params;\r\n  }\r\n\r\n  static exportExcel(result: Blob | string, fileName: string, type?: string) {\r\n    if (typeof result === 'string') {\r\n      const byteCharacters = atob(result);\r\n      const byteArrays = [];\r\n      for (let offset = 0; offset < byteCharacters.length; offset += 512) {\r\n        const slice = byteCharacters.slice(offset, offset + 512);\r\n        const byteNumbers = new Array(slice.length);\r\n        for (let i = 0; i < slice.length; i++) {\r\n          byteNumbers[i] = slice.charCodeAt(i);\r\n        }\r\n        const byteArray = new Uint8Array(byteNumbers);\r\n        byteArrays.push(byteArray);\r\n      }\r\n      result = new Blob(byteArrays, { type: 'application/xlsx' });\r\n    }\r\n    if (!type) type = 'xlsx';\r\n    if (result.size == 0) {\r\n      this.spinnerService.hide();\r\n      return this.snotify.warning('No Data', 'Warning');\r\n    }\r\n    if (result.type !== `application/${type}`) {\r\n      this.spinnerService.hide();\r\n      return this.snotify.error(result.type.toString(), 'Error');\r\n    }\r\n    const blob = new Blob([result]);\r\n    const url = window.URL.createObjectURL(blob);\r\n    const link = document.createElement('a');\r\n    link.href = url;\r\n    link.setAttribute('download', `${fileName}.${type}`);\r\n    document.body.appendChild(link);\r\n    link.click();\r\n  }\r\n\r\n  static print(result: Blob) {\r\n    if (result.size == 0) {\r\n      this.spinnerService.hide();\r\n      return this.snotify.warning('No Data', 'Warning');\r\n    }\r\n    const blob = new Blob([result], { type: 'application/pdf' });\r\n    const blobUrl = URL.createObjectURL(blob);\r\n    const iframe = document.createElement('iframe');\r\n    iframe.style.display = 'none';\r\n    iframe.src = blobUrl;\r\n    document.body.appendChild(iframe);\r\n    iframe.contentWindow?.print();\r\n  }\r\n\r\n  static nextID(): string {\r\n    return Math.random().toString(36).substring(2, 9);\r\n  }\r\n}\r\n","export interface Pagination {\r\n  totalCount: number;\r\n  totalPage: number;\r\n  pageNumber: number;\r\n  pageSize: number;\r\n  skip: number;\r\n}\r\n\r\nexport interface PaginationParam {\r\n  pageNumber: number;\r\n  pageSize: number;\r\n}\r\n\r\nexport class PaginationResult<T> {\r\n  result: T[] | undefined;\r\n  pagination: Pagination | undefined;\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { DestroyService } from '../services/destroy.service';\r\nimport { NgSnotifyService } from '../services/ng-snotify.service';\r\nimport { FunctionUtility } from '../utilities/function-utility';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nexport abstract class InjectBase {\r\n  protected router = inject(Router);\r\n  protected route = inject(ActivatedRoute);\r\n  protected translateService = inject(TranslateService);\r\n  protected spinnerService = inject(NgxSpinnerService);\r\n  protected snotifyService = inject(NgSnotifyService);\r\n  protected destroyService = inject(DestroyService);\r\n  protected functionUtility = inject(FunctionUtility);\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  forwardRef,\r\n  HostListener,\r\n  Renderer2,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nconst TRIM_VALUE_ACCESSOR = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => NgxTrimInputDirective),\r\n  multi: true,\r\n};\r\n@Directive({\r\n  selector: '[NgxTrimInput]',\r\n  providers: [TRIM_VALUE_ACCESSOR],\r\n})\r\nexport class NgxTrimInputDirective implements ControlValueAccessor {\r\n  _onChange: (value: any) => void = () => { };\r\n  _onTouched: () => any = () => { };\r\n\r\n  constructor(private renderer: Renderer2, private elementRef: ElementRef) { }\r\n\r\n  writeValue(value: any): void {\r\n    if (value !== undefined && value !== null) {\r\n      const trimmedValue = value.replace(/\\s+/g, ' ').trim();\r\n      this.renderer.setProperty(this.elementRef.nativeElement, 'value', trimmedValue);\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: (value: any) => any): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => any): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  @HostListener('blur', ['$event'])\r\n  _onBlur(event: Event) {\r\n    const element = event.target as HTMLInputElement;\r\n    const val = element.value.replace(/\\s+/g, ' ').trim();\r\n    this.writeValue(val);\r\n    this._onChange(val);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxTrimInputDirective } from './ngx-trim-input.directive';\r\n\r\n@NgModule({\r\n  declarations: [NgxTrimInputDirective],\r\n  exports: [\r\n    NgxTrimInputDirective\r\n  ]\r\n})\r\nexport class SDDirectivesModule { }\r\n","/*\r\n * Public API Surface of ngx-sdcores-lib\r\n */\r\n\r\nexport * from './constants/media-type.constant';\r\nexport * from './constants/notification.constant';\r\nexport * from './models/media-item';\r\nexport * from './services/destroy.service';\r\nexport * from './services/ng-snotify.service';\r\nexport * from './utilities/function-utility';\r\nexport * from './utilities/key-value-utility';\r\nexport * from './utilities/operation-result';\r\nexport * from './utilities/pagination-utility';\r\nexport * from './utilities/inject-base-app';\r\nexport * from './directives/ngx-trim-input.directive';\r\nexport * from './directives/SDDirectives.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}