{"version":3,"file":"ng-devui-common.mjs","sources":["../../devui/common/auto-focus.directive.ts","../../devui/common/clipboard.directive.ts","../../devui/common/date-pipe.ts","../../devui/common/safe-null.pipe.ts","../../devui/common/helper-utils.ts","../../devui/common/iframe-event-propagate.directive.ts","../../devui/common/shapeIconHoverable.directive.ts","../../devui/common/common.module.ts","../../devui/common/ng-devui-common.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n  selector: '[dAutoFocus]',\n})\nexport class AutoFocusDirective implements AfterViewInit {\n\n  @Input('dAutoFocus') autoFocus: boolean;\n\n  constructor(private  elementRef: ElementRef) {\n  }\n\n  ngAfterViewInit(): void {\n    if (this.autoFocus) {\n      setTimeout(() => {\n        this.elementRef.nativeElement.focus();\n      });\n    }\n  }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { OverlayContainerRef } from 'ng-devui/overlay-container';\nimport { PopoverComponent } from 'ng-devui/popover';\nimport { PositionType } from 'ng-devui/tooltip';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n  selector: '[dClipboard]'\n})\nexport class ClipboardDirective implements OnInit , OnDestroy {\n  @Input('dClipboard') devuiTargetElm: HTMLInputElement | HTMLTextAreaElement | undefined | '';\n  @Input() container: HTMLElement;\n  @Input() content: string | undefined;\n  @Input() position: PositionType = 'top';\n  @Input() sticky = false;\n  @Input() tipContent: string | HTMLElement | TemplateRef<any>;\n  @Output() copyResultEvent = new EventEmitter<any>();\n  popoverComponentRef: ComponentRef<PopoverComponent>;\n  i18nCommonText: I18nInterface['common'];\n  i18nSubscription: Subscription;\n  document: Document;\n\n  constructor(\n    private elm: ElementRef,\n    private clipboard: Clipboard,\n    private i18n: I18nService,\n    private overlayContainerRef: OverlayContainerRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    @Inject(DOCUMENT) private doc: any) {\n    this.document = this.doc;\n  }\n\n  ngOnInit(): void {\n    this.setI18nText();\n  }\n\n  setI18nText() {\n    this.i18nCommonText = this.i18n.getI18nText().common;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nCommonText = data.common;\n    });\n  }\n\n  @HostListener('click')\n  onClickEvent() {\n    let isSucceeded = false;\n    const isSupported = !!this.document.queryCommandSupported && !!this.document.queryCommandSupported('copy') && !!window;\n    if (isSupported && this.content) {\n      isSucceeded = this.clipboard.copy(this.content);\n      if (isSucceeded) {\n        this.tipContent = this.tipContent || this.i18nCommonText.copied;\n        this.createPopover();\n      }\n      const result = { isSupported: isSupported, isSucceeded: isSucceeded, content: this.content };\n      this.copyResultEvent.emit(result);\n    }\n  }\n\n  createPopover() {\n    if (this.popoverComponentRef) {\n      this.popoverComponentRef.destroy();\n    }\n    this.popoverComponentRef = this.overlayContainerRef.createComponent(\n      this.componentFactoryResolver.resolveComponentFactory(PopoverComponent)\n    );\n    Object.assign(this.popoverComponentRef.instance, {\n      content: this.tipContent,\n      triggerElementRef: this.elm,\n      position: this.position,\n      popType: 'default',\n      popMaxWidth: 200,\n      appendToBody: true,\n      zIndex: 1060\n    });\n    this.document.addEventListener('click', this.onDocumentClick);\n    if (!this.sticky) {\n      setTimeout(() => this.destroy(), 3000);\n    }\n  }\n\n  destroy() {\n    if (this.popoverComponentRef) {\n      this.popoverComponentRef.destroy();\n      this.popoverComponentRef = null;\n    }\n    this.document.removeEventListener('click', this.onDocumentClick);\n  }\n\n  onDocumentClick = (event) => {\n    event.stopPropagation();\n    if (!this.elm.nativeElement.contains(event.target)) {\n      this.destroy();\n    }\n  };\n\n  ngOnDestroy() {\n    if (this.i18nSubscription) {\n      this.i18nSubscription.unsubscribe();\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { I18nFormat } from 'ng-devui/i18n';\n\n@Pipe({\n  name: 'dDatePipe'\n})\nexport class DatePipe implements PipeTransform {\n  transform(date: any, pattern: any): any {\n    if (!date) {\n      return;\n    }\n    return I18nFormat.formatDate(date, pattern);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'dSafeNullPipe',\n})\nexport class SafeNullPipe implements PipeTransform {\n  transform(value: unknown, replace = '--'): unknown {\n    if (typeof value === 'undefined' || value === null || value === '') {\n      return replace;\n    }\n    return value;\n  }\n}\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\nconst enum Browser {\r\n  IE = 'IE',\r\n  ClassicEdge = 'ClassicEdge',\r\n  Firefox = 'Firefox',\r\n  Opera = 'Opera',\r\n  Edge = 'Edge',\r\n  Chrome = 'Chrome',\r\n  Safari = 'Safari',\r\n  Other = 'Other',\r\n}\r\ndeclare type HttpObserve = 'body' | 'events' | 'response';\r\ndeclare type ResponseType = 'arraybuffer' | 'blob' | 'json' | 'text';\r\nexport class HelperUtils {\r\n  private static _browserName: Browser = null;\r\n  private static _browserVersion = null;\r\n\r\n  static getBrowserName() {\r\n    !this._browserName && this.getBrowserInfo();\r\n    return this._browserName;\r\n  }\r\n\r\n  static getBrowserVersion() {\r\n    !this._browserVersion && this.getBrowserInfo();\r\n    return this._browserVersion;\r\n  }\r\n\r\n  private static getBrowserInfo() {\r\n    if (typeof navigator !== 'undefined') {\r\n      const ua = navigator.userAgent.toLowerCase();\r\n      const results = [\r\n        ua.match(/rv:([\\d.]+)\\) like gecko/) || ua.match(/msie ([\\d\\.]+)/),\r\n        ua.match(/edge\\/([\\d\\.]+)/),\r\n        ua.match(/firefox\\/([\\d\\.]+)/),\r\n        ua.match(/(?:opera|opr).([\\d\\.]+)/),\r\n        ua.match(/edg\\/([\\d\\.]+)/),\r\n        ua.match(/chrome\\/([\\d\\.]+)/),\r\n        ua.match(/version\\/([\\d\\.]+).*safari/),\r\n      ];\r\n      const index = results.findIndex((item) => item);\r\n      const infos = results[index];\r\n      const browserNames = [Browser.IE, Browser.ClassicEdge, Browser.Firefox, Browser.Opera, Browser.Edge, Browser.Chrome, Browser.Safari];\r\n      this._browserName = browserNames[index] || Browser.Other;\r\n      this._browserVersion = infos ? parseInt(infos[1], 10) : 0;\r\n    }\r\n  }\r\n\r\n  static jumpOuterUrl(url, target = '_blank') {\r\n    if (url !== undefined && typeof document !== 'undefined') {\r\n      const tempLink = document.createElement('a');\r\n      tempLink.style.display = 'none'; // for IE 11\r\n      tempLink.target = target;\r\n      tempLink.href = url;\r\n      document.body.appendChild(tempLink); // for IE 11, IE11需要append到document.body里面的a链接才会生效\r\n      const event = document.createEvent('MouseEvents');\r\n      event.initEvent('click', false, true);\r\n      tempLink.dispatchEvent(event);\r\n      document.body.removeChild(tempLink); // for IE 11\r\n    }\r\n  }\r\n\r\n  static downloadFile(\r\n    url: string,\r\n    option?: {\r\n      method?: 'POST' | 'GET' | 'post' | 'get';\r\n      params?: { [property: string]: string };\r\n      enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\r\n      iframename?: string;\r\n    },\r\n    onError?: (response) => void\r\n  ) {\r\n    if (typeof document === 'undefined') {\r\n      return;\r\n    }\r\n    if (document.querySelector(`iframe[name='${option?.iframename || 'download'}]`)) {\r\n      document.body.removeChild(document.querySelector(`iframe[name='${option?.iframename || 'download'}]`));\r\n    }\r\n    const tempiframe = document.createElement('iframe');\r\n    tempiframe.name = (option && option.iframename) || 'download';\r\n    tempiframe.style.display = 'none';\r\n\r\n    const tempform = document.createElement('form');\r\n    tempform.action = url;\r\n    tempform.method = (option && option.method) || 'post';\r\n    tempform.target = (option && option.iframename) || 'download';\r\n    tempform.enctype = (option && option.enctype) || 'application/x-www-form-urlencoded';\r\n    tempform.style.display = 'none';\r\n\r\n    if (option && option.params) {\r\n      Object.keys(option.params).forEach((key) => {\r\n        const opt = document.createElement('input');\r\n        opt.name = key;\r\n        opt.value = option.params[key];\r\n        tempform.appendChild(opt);\r\n      });\r\n    }\r\n\r\n    const submit = document.createElement('input');\r\n    submit.type = 'submit';\r\n\r\n    tempform.appendChild(submit);\r\n    tempiframe.appendChild(tempform);\r\n    document.body.appendChild(tempiframe);\r\n\r\n    // 下载错误处理。下载成功并不会响应，因为响应头中带有Content-Disposition（下载头）的url，无法监听iframe的load事件，load事件不会触发\r\n    tempiframe.addEventListener('load', (event) => {\r\n      try {\r\n        const iframeDoc = tempiframe.contentDocument;\r\n        if (onError !== undefined) {\r\n          let response;\r\n          try {\r\n            response = JSON.parse(iframeDoc.body && iframeDoc.body.textContent);\r\n          } catch (e) {\r\n            response = iframeDoc.body && iframeDoc.body.textContent;\r\n          }\r\n          if (!response) {\r\n            response = 'Error';\r\n          }\r\n          onError(response);\r\n        }\r\n      } catch (e) {\r\n        onError('Error');\r\n      }\r\n      document.body.removeChild(tempiframe);\r\n    });\r\n    tempform.submit();\r\n  }\r\n\r\n  static downloadFileByHttpClient(\r\n    httpClient: HttpClient,\r\n    url: string,\r\n    option?: {\r\n      method?: 'POST' | 'GET' | 'post' | 'get';\r\n      params?: { [property: string]: string };\r\n      enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\r\n      header?: {\r\n        [header: string]: string | string[];\r\n      };\r\n      observe?: 'events' | 'response';\r\n      responseOption?: 'response' | 'body' | 'json';\r\n      responseType?: 'blob' | 'arraybuffer';\r\n      reportProgress?: boolean;\r\n      filename?: string;\r\n      withCredentials?: boolean;\r\n      downloadWithoutDispositionHeader?: boolean;\r\n    },\r\n    onError?: (response) => void,\r\n    onSuccess?: (response) => void,\r\n    onProgress?: (response) => void\r\n  ) {\r\n    const requestMethod = (option && option.method && option.method.toLowerCase()) || 'post';\r\n    const requestHeaderContentType = option.enctype || 'application/x-www-form-urlencoded';\r\n    const requestParams = option.params\r\n      ? new HttpParams({\r\n        fromObject: option.params,\r\n      })\r\n      : null;\r\n\r\n    const requestUrl = url;\r\n    const requestOptionParams = requestMethod === 'get' ? requestParams : undefined;\r\n    const requestBody = requestMethod === 'post' ? requestParams && requestParams.toString() : undefined;\r\n\r\n    const responseOption = option.responseOption;\r\n    /* eslint-disable-next-line prefer-object-spread */\r\n    const requestOption = Object.assign(\r\n      {},\r\n      {\r\n        body: requestBody,\r\n        observe: (option.observe || option.reportProgress ? 'events' : 'response') as HttpObserve,\r\n        params: requestOptionParams,\r\n        headers: {\r\n          'Content-Type': requestHeaderContentType,\r\n        },\r\n        withCredentials: option.withCredentials,\r\n        reportProgress: option.reportProgress,\r\n        responseType: (option.responseType || option.reportProgress ? 'blob' : 'arraybuffer') as ResponseType,\r\n      },\r\n      {\r\n        headers: option.header,\r\n      }\r\n    );\r\n\r\n    const handleResponse = ((resOption) => {\r\n      switch (resOption) {\r\n      case 'response':\r\n        return (res: HttpResponse<ArrayBuffer>) => res;\r\n      case 'body':\r\n        return (res: HttpResponse<ArrayBuffer> | HttpErrorResponse) => {\r\n          const arrayBuffer = <ArrayBuffer>(<HttpResponse<ArrayBuffer>>res).body || (<HttpErrorResponse>res).error;\r\n          const body = HelperUtils.utf8ArrayToStr(arrayBuffer);\r\n          return body;\r\n        };\r\n      case 'json':\r\n      default:\r\n        return (res: HttpResponse<ArrayBuffer> | HttpErrorResponse) => {\r\n          const arrayBuffer = <ArrayBuffer>(<HttpResponse<ArrayBuffer>>res).body || (<HttpErrorResponse>res).error;\r\n          let response;\r\n          try {\r\n            const body = HelperUtils.utf8ArrayToStr(arrayBuffer);\r\n            try {\r\n              response = JSON.parse(body);\r\n            } catch (e) {\r\n              const parser = new DOMParser();\r\n              const html = parser.parseFromString(body, 'text/html');\r\n              response = html.body.textContent;\r\n            }\r\n          } catch (e) {\r\n            throw new Error('Parsing Error:' + e);\r\n          }\r\n          if (!response) {\r\n            response = 'Error';\r\n          }\r\n          return response;\r\n        };\r\n      }\r\n    })(responseOption);\r\n\r\n    const downloadFileFromArrayBuffer = (data: ArrayBuffer, filename: string, contentType: string) => {\r\n      if (typeof document === 'undefined' || typeof window === 'undefined') {\r\n        return;\r\n      }\r\n      if ((window.navigator as any)?.msSaveOrOpenBlob) {\r\n        // IE11 support\r\n        const blob = new Blob([data], { type: contentType });\r\n        (window.navigator as any).msSaveOrOpenBlob(blob, filename);\r\n      } else {\r\n        // other browsers\r\n        if ('download' in document.createElement('a')) {\r\n          const blob = new Blob([data], { type: contentType });\r\n          const link = document.createElement('a');\r\n          link.href = URL.createObjectURL(blob);\r\n          link.download = filename;\r\n          document.body.appendChild(link);\r\n          link.click();\r\n          document.body.removeChild(link);\r\n          URL.revokeObjectURL(link.href);\r\n        } else {\r\n          // not support tag a download attribute use file download, filename won't support\r\n          const file = new File([data], filename, { type: contentType });\r\n          const exportUrl = URL.createObjectURL(file);\r\n          window.location.assign(exportUrl);\r\n          URL.revokeObjectURL(exportUrl);\r\n        }\r\n      }\r\n    };\r\n\r\n    const getFilenameFromDisposition = (disposition: string) => {\r\n      const filenamePair = disposition\r\n        .split(';')\r\n        .filter((str) => /^filename=/.test(str.trim()))\r\n        .pop();\r\n      if (filenamePair) {\r\n        let str = filenamePair.trim();\r\n        str = str.split('=')[1];\r\n        str = str.replace(/['\"]/g, '');\r\n        return decodeURIComponent(str);\r\n      } else {\r\n        return null;\r\n      }\r\n    };\r\n\r\n    const subscriber = httpClient.request(requestMethod, requestUrl, requestOption).subscribe(\r\n      (res: HttpEvent<any>) => {\r\n        if (res.type === HttpEventType.DownloadProgress) {\r\n          if (onProgress) {\r\n            onProgress(res);\r\n          }\r\n        } else if (res.type === HttpEventType.Response) {\r\n          const httpResponse = res as HttpResponse<any>;\r\n          const disposition = (<HttpHeaders>httpResponse.headers).get('content-disposition');\r\n          const contentType = (<HttpHeaders>httpResponse.headers).get('content-type');\r\n\r\n          if (/^attachment/i.test(disposition) || option.downloadWithoutDispositionHeader) {\r\n            const downloadFilename = option.filename || (disposition && getFilenameFromDisposition(disposition)) || url;\r\n            downloadFileFromArrayBuffer(httpResponse.body, downloadFilename, contentType);\r\n            if (onSuccess) {\r\n              onSuccess(httpResponse);\r\n            }\r\n          } else {\r\n            if (onError) {\r\n              let response;\r\n              try {\r\n                response = handleResponse(httpResponse);\r\n              } catch (e) {\r\n                response = httpResponse;\r\n              }\r\n              onError(response);\r\n            }\r\n          }\r\n        }\r\n      },\r\n      (err) => {\r\n        if (onError) {\r\n          let response;\r\n          try {\r\n            response = handleResponse(err);\r\n          } catch (e) {\r\n            response = err;\r\n          }\r\n          onError(response);\r\n        }\r\n      }\r\n    );\r\n\r\n    return subscriber;\r\n  }\r\n\r\n  private static utf8ArrayToStr(arrayBuffer) {\r\n    if (typeof TextDecoder !== 'undefined') {\r\n      return new TextDecoder('utf-8').decode(arrayBuffer);\r\n    } else {\r\n      /**\r\n       * fallback 方案，无TextDecoder场景使用直接解析，英文无问题，中文会存在乱码\r\n       * ie 11 下支持中文需要使用MDN推荐的 fastestsmallesttextencoderdecoder以支持TextDecoder\r\n       * npm install fastestsmallesttextencoderdecoder\r\n       * polyfill.ts includes\r\n       * ```\r\n       * // polyfill for TextDecoder on IE 11\r\n       * import 'fastestsmallesttextencoderdecoder';\r\n       * ```\r\n       */\r\n      return String.fromCharCode.apply(null, new Uint8Array(arrayBuffer));\r\n    }\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[dSimulateATag]',\r\n})\r\nexport class SimulateATagDirective {\r\n  @Input() href: string;\r\n  @Input() target: '_blank' | '_self' | '_parent' | '_top' | string = '_blank';\r\n  constructor() {}\r\n  @HostListener('click') onClick() {\r\n    HelperUtils.jumpOuterUrl(this.href, this.target);\r\n  }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, Directive, ElementRef, Inject, Input } from '@angular/core';\r\n@Directive({\r\n  selector: '[dIframeEventPropagate]',\r\n})\r\nexport class IframeEventPropagateDirective implements AfterViewInit {\r\n  @Input() event = 'click';\r\n  element: HTMLSelectElement;\r\n  document: Document;\r\n  constructor(el: ElementRef, @Inject(DOCUMENT) private doc: any) {\r\n    this.element = el.nativeElement;\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.element.addEventListener('DOMSubtreeModified', this.AddIframeContentDocumentClickListener);\r\n    if (this.element.querySelector('iframe') !== null) {\r\n      this.AddIframeContentDocumentClickListener();\r\n    }\r\n  }\r\n  AddIframeContentDocumentClickListener = () => {\r\n    const iframe = this.element.querySelector('iframe');\r\n\r\n    if (iframe !== null) {\r\n      if (iframe.contentDocument !== null) {\r\n        iframe.contentDocument.addEventListener(this.event, this.dispatchClickEvent);\r\n      } else {\r\n        const loadHandler = () => {\r\n          iframe.contentDocument.addEventListener(this.event, this.dispatchClickEvent);\r\n          iframe.removeEventListener('load', loadHandler);\r\n        };\r\n        iframe.addEventListener('load', loadHandler);\r\n      }\r\n\r\n      this.element.removeEventListener('DOMSubtreeModified', this.AddIframeContentDocumentClickListener);\r\n    }\r\n  };\r\n\r\n  dispatchClickEvent = ($event) => {\r\n    const event: any = this.document.createEvent('MouseEvents');\r\n    event.initEvent(this.event, true, true);\r\n    event.originEvent = $event;\r\n    this.element.dispatchEvent(event);\r\n  };\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[dShapeIconHoverable]'\n})\nexport class ShapeIconHoverableDirective{\n  @HostBinding('class.devui-shape-icon')\n  getStyle() {\n    return true;\n  }\n}\n\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AutoFocusDirective } from './auto-focus.directive';\nimport { ClipboardDirective } from './clipboard.directive';\nimport { DatePipe } from './date-pipe';\nimport { SafeNullPipe } from './safe-null.pipe';\nimport { SimulateATagDirective } from './helper-utils';\nimport { IframeEventPropagateDirective } from './iframe-event-propagate.directive';\nimport { ShapeIconHoverableDirective } from \"./shapeIconHoverable.directive\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ClipboardModule\n  ],\n  exports: [\n    SafeNullPipe,\n    AutoFocusDirective,\n    DatePipe,\n    SimulateATagDirective,\n    IframeEventPropagateDirective,\n    ClipboardDirective,\n    ShapeIconHoverableDirective,\n  ],\n  declarations: [\n    SafeNullPipe,\n    AutoFocusDirective,\n    DatePipe,\n    SimulateATagDirective,\n    IframeEventPropagateDirective,\n    ClipboardDirective,\n    ShapeIconHoverableDirective\n  ],\n  providers: [],\n})\nexport class DCommonModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}