{"version":3,"file":"index.mjs","sources":["../../packages/utils/index.ts"],"sourcesContent":["/*\n * @Author: peng-xiao-shuai\n * @Date: 2023-11-21 18:12:55\n * @LastEditors: peng-xiao-shuai\n * @LastEditTime: 2023-11-27 10:10:11\n * @Description: 表单组件工具函数\n */\nimport type { FormItem, FormType, FunBol, PowerfulFormData } from '~/index'\nimport type { FormItemRule } from 'element-plus'\nimport { FormTypeEnum } from '~/index'\nimport { LangKey } from '~/locale/lang'\n\n/**\n * 校验规则\n */\nexport const verify = {\n  phone: {\n    pattern:\n      /^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[1589]))\\d{8}$/,\n    message: LangKey.VerifyPhone,\n    trigger: 'blur',\n  },\n  email: {\n    type: 'email',\n    message: LangKey.VerifyEmail,\n    trigger: 'blur',\n  },\n  code: {\n    pattern:\n      /^\\d{6}((((((19|20)\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|(((19|20)\\d{2})(0[13578]|1[02])31)|((19|20)\\d{2})02(0[1-9]|1\\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\\d{3})|((((\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((\\d{2})(0[13578]|1[02])31)|((\\d{2})02(0[1-9]|1\\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\\d{2}))(\\d|X|x)$/,\n    message: LangKey.VerifyCode,\n    trigger: 'blur',\n  },\n  https: {\n    pattern:\n      /^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?/,\n    message: LangKey.VerifyHttps,\n    trigger: 'blur',\n  },\n  ip: {\n    pattern:\n      /^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$/,\n    message: LangKey.VerifyIp,\n    trigger: 'blur',\n  },\n  number: {\n    pattern: /^\\d+$/,\n    message: LangKey.VerifyNumber,\n    trigger: 'blur',\n  },\n  english: {\n    pattern: /^[A-Za-z]+$/,\n    message: LangKey.VerifyEnglish,\n    trigger: 'blur',\n  },\n  chinese: {\n    pattern: /^[\\u4E00-\\u9FA5]+$/,\n    message: LangKey.VerifyChinese,\n    trigger: 'blur',\n  },\n}\n\nexport const verifyFormItemRule: { [s: string]: FormItemRule } =\n  Object.assign(verify)\n\n/**\n * @description 类型保护\n * @see https://www.tslang.cn/docs/handbook/advanced-types.html 搜索 “自定义类型保护”\n * @param {T} obj 值，它必须是联合类型\n * @param {(obj: T) => boolean} cb 回调函数，返回一个布尔值\n * @example\n * const a = [] | string\n * a.push() // 报错\n * if (isTypeProtect<typeof a, []>(a, (a) => Array.isArray(a))) {\n *   a.push() // 正常\n * }\n * @returns {boolean}\n */\nexport const isTypeProtect = <T, P extends T>(\n  obj: T,\n  cb: (obj: T) => boolean\n): obj is P => cb(obj)\n\n/**\n * 匹配组件\n * @param {Exclude<keyof FormType, 'slot'>} type 类型\n * @returns 组件名称\n */\nexport const matchComponents = (type: Exclude<keyof FormType, 'slot'>) => {\n  return {\n    [FormTypeEnum.Switch]: 'FSwitch',\n    [FormTypeEnum.Input]: 'FInput',\n    [FormTypeEnum.Textarea]: 'FInput',\n    [FormTypeEnum.Rate]: 'FRate',\n    [FormTypeEnum.Select]: 'FSelect',\n    [FormTypeEnum.DatePicker]: 'FDatePicker',\n    [FormTypeEnum.Radio]: 'FRadio',\n    [FormTypeEnum.Checkbox]: 'FCheckbox',\n    [FormTypeEnum.UploadFile]: 'FUploadFile',\n    [FormTypeEnum.UploadMedia]: 'FUploadMedia',\n  }[type]\n}\n\n/**\n * 是否是boolean 还是 fun 函数类型\n * @param val 值\n * @param params val 为函数类型时 参数\n * @returns {boolean} true 为禁用\n */\nexport const isBolOrFun = (\n  val: FunBol,\n  params: {\n    formData: PowerfulFormData['formData']\n    formItem: FormItem\n    index: number\n  }\n): boolean => {\n  if (val) {\n    if (typeof val === 'boolean') return val\n    else val(params)\n  }\n  return false\n}\n\n/**\n * 清除：和 空格\n */\nexport const clearSymbol = (v: string | undefined) => {\n  return v?.replace(/[：:]{1}\\s*$/g, '')\n}\n"],"names":["FormTypeEnum","LangKey","verify","verifyFormItemRule","isTypeProtect","obj","cb","matchComponents","type","isBolOrFun","val","params","clearSymbol","v"],"mappings":"AAeO,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,SAAA,gBAAAA,SAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,SAAA,WAAAC,SAAA;AAAA,MAAMC,IAAS;AAAA,EACpB,OAAO;AAAA,IACL,SACE;AAAA,IACF,SAASD,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,SACE;AAAA,IACF,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,SACE;AAAA,IACF,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACF,SACE;AAAA,IACF,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AACF,GAEaE,IACX,OAAO,OAAOD,CAAM,GAeTE,IAAgB,CAC3BC,GACAC,MACaA,EAAGD,CAAG,GAORE,IAAkB,CAACC,OACvB;AAAA,EACL,CAACR,EAAa,MAAM,GAAG;AAAA,EACvB,CAACA,EAAa,KAAK,GAAG;AAAA,EACtB,CAACA,EAAa,QAAQ,GAAG;AAAA,EACzB,CAACA,EAAa,IAAI,GAAG;AAAA,EACrB,CAACA,EAAa,MAAM,GAAG;AAAA,EACvB,CAACA,EAAa,UAAU,GAAG;AAAA,EAC3B,CAACA,EAAa,KAAK,GAAG;AAAA,EACtB,CAACA,EAAa,QAAQ,GAAG;AAAA,EACzB,CAACA,EAAa,UAAU,GAAG;AAAA,EAC3B,CAACA,EAAa,WAAW,GAAG;GAC5BQ,CAAI,GASKC,IAAa,CACxBC,GACAC,MAKY;AACZ,MAAID,GAAK;AACP,QAAI,OAAOA,KAAQ;AAAkB,aAAAA;AAChC,IAAAA,EAAIC,CAAM;AAAA,EACjB;AACO,SAAA;AACT,GAKaC,IAAc,CAACC,MACnBA,KAAA,gBAAAA,EAAG,QAAQ,gBAAgB;"}