{"version":3,"file":"utils.mjs","names":[],"sources":["../../../../../../packages/components/table-v2/src/utils.ts"],"sourcesContent":["import { h, isVNode } from 'vue'\nimport { addUnit, isArray, isFunction } from '@element-plus/utils'\n\nimport type { CSSProperties, Component, Slot } from 'vue'\nimport type { JSX } from 'vue/jsx-runtime'\n\nconst sumReducer = (sum: number, num: number) => sum + num\n\nexport const sum = (listLike: number | number[]) => {\n  return isArray(listLike) ? listLike.reduce(sumReducer, 0) : listLike\n}\n\nexport const tryCall = <T>(\n  fLike: T,\n  params: T extends (...args: infer K) => unknown ? K : any,\n  defaultRet = {}\n) => {\n  return isFunction(fLike) ? fLike(params) : (fLike ?? defaultRet)\n}\n\nexport const enforceUnit = (style: CSSProperties) => {\n  ;(['width', 'maxWidth', 'minWidth', 'height'] as const).forEach((key) => {\n    style[key] = addUnit(style[key])\n  })\n\n  return style\n}\n\nexport const componentToSlot = <T extends object>(\n  ComponentLike: JSX.Element | ((props: T) => Component<T>) | undefined\n) =>\n  isVNode(ComponentLike)\n    ? (props: T) => h(ComponentLike, props)\n    : (ComponentLike as Slot)\n"],"mappings":";;;;;AAMA,MAAM,cAAc,KAAa,QAAgB,MAAM;AAEvD,MAAa,OAAO,aAAgC;AAClD,QAAO,QAAQ,SAAS,GAAG,SAAS,OAAO,YAAY,EAAE,GAAG;;AAG9D,MAAa,WACX,OACA,QACA,aAAa,EAAE,KACZ;AACH,QAAO,WAAW,MAAM,GAAG,MAAM,OAAO,GAAI,SAAS;;AAGvD,MAAa,eAAe,UAAyB;AAClD,CAAC;EAAC;EAAS;EAAY;EAAY;EAAS,CAAW,SAAS,QAAQ;AACvE,QAAM,OAAO,QAAQ,MAAM,KAAK;GAChC;AAEF,QAAO;;AAGT,MAAa,mBACX,kBAEA,QAAQ,cAAc,IACjB,UAAa,EAAE,eAAe,MAAM,GACpC"}