{"version":3,"file":"winkong-ng-zorro-antd-extension-util.mjs","sources":["../../../components/util/lib/updateControlStatus.ts","../../../components/util/lib/isEmpty.ts","../../../components/util/lib/trimObject.ts","../../../components/util/lib/cloneDeep.ts","../../../components/util/lib/isArray.ts","../../../components/util/lib/isDate.ts","../../../components/util/lib/isNumber.ts","../../../components/util/lib/isObject.ts","../../../components/util/lib/isString.ts","../../../components/util/lib/toNumber.ts","../../../components/util/lib/toString.ts","../../../components/util/lib/fileUtil.ts","../../../components/util/lib/getElementByTag.ts","../../../components/util/public-api.ts","../../../components/util/winkong-ng-zorro-antd-extension-util.ts"],"sourcesContent":["import {\n  AbstractControl,\n  FormArray,\n  FormControl,\n  FormGroup,\n} from '@angular/forms';\n\nfunction updateControl(\n  control: AbstractControl,\n  markAsClean: boolean,\n  customOperate?: (control: AbstractControl) => void\n) {\n  if (markAsClean) {\n    control.markAsPristine();\n    if (customOperate) {\n      customOperate(control);\n    }\n    control.updateValueAndValidity({\n      onlySelf: true,\n    });\n  } else {\n    if (control.invalid) {\n      control.markAsDirty();\n      control.updateValueAndValidity({ onlySelf: true });\n    }\n  }\n  if ((control as any)?.controls) {\n    updateControlStatus(control as any, markAsClean);\n  }\n}\n\n/**\n * 用来更新控件的状态，默认标注控件以及子控件为dirty，通常用来更新ng zorro中表单错误及时更新错误提示\n *\n * @param abstractControl FormControl、FormArray、FormGroup实例\n * @param markAsClean 是否标记控件为干净状态，实际只设置pristine为true，如要设置更多参数请使用customOperate自定义\n * @param customOperate 当markAsClean为true时可以自定义操作，用来完全让control干净，比如markAsUntouched\n */\nexport function updateControlStatus(\n  abstractControl: AbstractControl,\n  markAsClean = false,\n  customOperate?: (control: AbstractControl) => void\n) {\n  if (abstractControl instanceof FormGroup) {\n    for (const key in abstractControl.controls) {\n      if (Object.prototype.hasOwnProperty.call(abstractControl.controls, key)) {\n        const control = abstractControl.controls[key];\n        updateControl(control, markAsClean, customOperate);\n      }\n    }\n  } else if (abstractControl instanceof FormArray) {\n    for (const control of abstractControl.controls) {\n      updateControl(control, markAsClean, customOperate);\n    }\n  } else if (abstractControl instanceof FormControl) {\n    updateControl(abstractControl, markAsClean, customOperate);\n  }\n}\n","/**判断一个值是否为空，包括undefined、null、空字符串、空数组、空对象等情况 */\nexport function isEmpty(value: any) {\n  if (value == null) {\n    return true;\n  }\n\n  if (typeof value === 'string' || Array.isArray(value)) {\n    return value.length === 0;\n  }\n\n  if (typeof value === 'object') {\n    for (const key in value) {\n      if (Object.prototype.hasOwnProperty.call(value, key)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return false;\n}\n","import { isEmpty } from './isEmpty';\n\n/** trim去空Object*/\nexport function trimObject(ob: any) {\n  const result: any = {};\n  for (const key in ob) {\n    if (Object.prototype.hasOwnProperty.call(ob, key)) {\n      const el = ob[key];\n      if (!isEmpty(el)) {\n        result[key] = el;\n      }\n    }\n  }\n  return result;\n}\n","/** 深克隆 */\nexport function cloneDeep(obj: any, hash = new WeakMap()) {\n  if (obj === null || typeof obj !== 'object') {\n    return obj;\n  }\n\n  if (hash.has(obj)) {\n    return hash.get(obj);\n  }\n\n  let clone;\n  const Constructor = obj.constructor;\n\n  switch (Constructor) {\n    case RegExp:\n      clone = new Constructor(obj);\n      break;\n    case Date:\n      clone = new Constructor(obj.getTime());\n      break;\n    case Map:\n      clone = new Constructor();\n      for (const [key, value] of obj) {\n        clone.set(cloneDeep(key, hash), cloneDeep(value, hash));\n      }\n      break;\n    case Set:\n      clone = new Constructor();\n      for (const value of obj) {\n        clone.add(cloneDeep(value, hash));\n      }\n      break;\n    default:\n      clone = Array.isArray(obj)\n        ? []\n        : Object.create(Object.getPrototypeOf(obj));\n      break;\n  }\n\n  hash.set(obj, clone);\n\n  const keys = Object.getOwnPropertyNames(obj).concat(\n    Object.getOwnPropertySymbols(obj) as any\n  );\n  for (const key of keys) {\n    const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n    if (descriptor) {\n      if (descriptor.value && typeof descriptor.value === 'object') {\n        descriptor.value = cloneDeep(descriptor.value, hash);\n      }\n      Object.defineProperty(clone, key, descriptor);\n    }\n  }\n  return clone;\n}\n","/** 判断是否为数组 */\nexport function isArray(obj: any) {\n  if (Array.isArray(obj)) {\n    return true;\n  }\n\n  if (typeof obj !== 'object' || obj === null) {\n    return false;\n  }\n\n  const className = Object.prototype.toString.call(obj);\n  return (\n    className === '[object Array]' ||\n    className === '[object HTMLCollection]' ||\n    className === '[object NodeList]' ||\n    (typeof obj.length === 'number' &&\n      obj.item !== undefined &&\n      (obj.length === 0 || (obj.length > 0 && obj.length - 1 in obj)))\n  );\n}\n","export function isDate(value: any) {\n  return Object.prototype.toString.call(value) === '[object Date]';\n}\n","export function isNumber(obj: any) {\n  if (typeof obj === 'number' && isFinite(obj)) {\n    return true;\n  }\n\n  if (typeof obj !== 'object' || obj === null) {\n    return false;\n  }\n\n  const className = Object.prototype.toString.call(obj);\n  return (\n    className === '[object Number]' ||\n    (typeof obj === 'object' && obj.valueOf() !== obj.valueOf())\n  );\n}\n","export function isObject(obj: any) {\n  if (typeof obj === 'object' && obj !== null) {\n    return true;\n  }\n\n  if (typeof obj === 'function' && typeof obj.nodeType === 'number') {\n    return true;\n  }\n\n  return false;\n}\n","export function isString(obj: any) {\n  if (typeof obj === 'string' || obj instanceof String) {\n    return true;\n  }\n\n  if (typeof obj !== 'object' || obj === null) {\n    return false;\n  }\n\n  const className = Object.prototype.toString.call(obj);\n  return className === '[object String]' || className === '[object DOMString]';\n}\n","export function toNumber(value: any) {\n  if (typeof value === 'number') {\n    return value;\n  }\n\n  if (typeof value === 'string') {\n    const parsed = parseFloat(value);\n    return isNaN(parsed) ? NaN : parsed;\n  }\n\n  if (typeof value === 'boolean') {\n    return value ? 1 : 0;\n  }\n\n  if (Array.isArray(value)) {\n    const parsed = parseFloat(value[0]);\n    return isNaN(parsed) ? NaN : parsed;\n  }\n\n  return NaN;\n}\n","export function toString(value: any): string {\n  if (value == null) {\n    return '';\n  }\n\n  if (typeof value === 'string') {\n    return value;\n  }\n\n  if (Array.isArray(value)) {\n    return value.map(toString).join(',');\n  }\n\n  if (typeof value === 'object') {\n    return JSON.stringify(value);\n  }\n\n  return String(value);\n}\n","import { Observable, fromEvent, map, take } from 'rxjs';\r\n\r\n/**选择文件*/\r\nexport function selectFile(\r\n  accept?: string,\r\n  multiple?: false\r\n): Observable<File | null>;\r\n\r\nexport function selectFile(\r\n  accept?: string,\r\n  multiple?: true\r\n): Observable<FileList | null>;\r\n\r\nexport function selectFile(\r\n  accept: string = '*',\r\n  multiple = false\r\n): Observable<FileList | File | null> {\r\n  const input = document.createElement('input');\r\n  input.type = 'file';\r\n  input.accept = accept;\r\n  input.multiple = multiple;\r\n  input.click();\r\n  input.remove();\r\n\r\n  return fromEvent(input, 'change')\r\n    .pipe(take(1))\r\n    .pipe(\r\n      map((_e:any) => {\r\n        if (input?.files) {\r\n          if (input?.files.length) {\r\n            if (multiple) {\r\n              return input?.files;\r\n            } else {\r\n              return input.files[0];\r\n            }\r\n          }\r\n        }\r\n        return null;\r\n      })\r\n    );\r\n}\r\n\r\n/**\r\n * 文件下载\r\n ** 此方法只适合文件较小的情况下使用\r\n * 文件较大请使用downloadFileByUrl触发浏览器下载\r\n * 此方法只适合文件较小的情况下使用\r\n * 文件较大请使用downloadFileByUrl触发浏览器下载\r\n */\r\nexport function downloadFile(file: Blob, fileName = '') {\r\n  const link = document.createElement('a');\r\n  link.href = URL.createObjectURL(file);\r\n  link.download = fileName;\r\n  link.click();\r\n  link.remove();\r\n  URL.revokeObjectURL(link.href);\r\n}\r\n\r\n/**\r\n * 通过url下载文件\r\n */\r\nexport function downloadFileByUrl(\r\n  url: string,\r\n  fileName = '',\r\n  target = '_blank'\r\n) {\r\n  const link = document.createElement('a');\r\n  link.href = url;\r\n  link.target = target;\r\n  link.download = fileName;\r\n  link.click();\r\n  link.remove();\r\n}\r\n","import { isString } from './isString';\n\n/**\n * 获取当前document下所有指定标签\n * @param tagName 标签名\n * @param identifier 唯一标识符，选取标签内容\n *\n * @returns string 标签字符串\n */\nexport function getElementByTag(\n  tagName: keyof HTMLElementTagNameMap,\n  identifier?: string | string[]\n): string {\n  let identifiers: string[] = [];\n  if (identifier) {\n    if (Array.isArray(identifier)) {\n      identifiers = [...identifier];\n    } else if (isString(identifier)) {\n      identifiers = [identifier];\n    }\n  }\n  const html: string[] = [];\n  const elements = document.getElementsByTagName(tagName);\n  const length = elements.length;\n  for (let index = 0; index < length; index++) {\n    if (identifiers.length) {\n      identifiers.forEach((s) => {\n        if (elements[index].outerHTML.includes(s)) {\n          const formateStr = elements[index].outerHTML.replace(\n            /\\/\\*[\\s\\S]*?\\*\\//g,\n            ''\n          );\n          html.push(formateStr);\n        }\n      });\n    } else {\n      const formateStr = elements[index].outerHTML.replace(\n        /\\/\\*[\\s\\S]*?\\*\\//g,\n        ''\n      );\n      html.push(formateStr);\n    }\n  }\n  return html.join('\\r\\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 './lib/updateControlStatus';\nexport * from './lib/trimObject';\nexport * from './lib/cloneDeep';\nexport * from './lib/isArray';\nexport * from './lib/isDate';\nexport * from './lib/isEmpty';\nexport * from './lib/isNumber';\nexport * from './lib/isObject';\nexport * from './lib/isString';\nexport * from './lib/toNumber';\nexport * from './lib/toString';\nexport * from './lib/fileUtil';\nexport * from './lib/getElementByTag';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}