{"version":3,"file":"assignProps.mjs","names":["cn","forkRef","sstyled","callAllEventHandlers","fns","args","some","fn","result","assignHandlers","props","source","Object","keys","reduce","proxySource","propName","startsWith","assignHandlersInner","assignProps","newProps","key","originalKey","slice","length","sourceDescriptorRef","getOwnPropertyDescriptor","propsDescriptorRef","configurable","ref","forwardRef","style","className","styles","merge"],"sources":["../../src/utils/assignProps.ts"],"sourcesContent":["import cn from 'classnames';\nimport type { CSSProperties, DetailedHTMLProps, Ref, StyleHTMLAttributes } from 'react';\n\nimport { forkRef } from './ref';\nimport { sstyled } from '../styled/index';\n\nexport function callAllEventHandlers(...fns: Array<Function | undefined>) {\n  return (...args: any[]) =>\n    !fns.some((fn) => {\n      let result;\n      if (fn) {\n        result = fn(...args);\n      }\n      return typeof result === 'boolean' && !result;\n    });\n}\n\nexport function assignHandlers(props: any, source: any) {\n  return Object.keys(source).reduce((proxySource: any, propName) => {\n    if (typeof source[propName] === 'function' && propName.startsWith('on')) {\n      proxySource[propName] = callAllEventHandlers(props[propName], source[propName]);\n    }\n    return proxySource;\n  }, {});\n}\n\nfunction assignHandlersInner(props: any, source: any) {\n  return Object.keys(source).reduce((proxySource: any, propName) => {\n    if (propName !== 'ref' && propName.startsWith('on')) {\n      if (typeof source[propName] === 'function' && typeof props[propName] === 'function') {\n        proxySource[propName] = callAllEventHandlers(props[propName], source[propName]);\n      } else if (typeof source[propName] === 'function') {\n        proxySource[propName] = source[propName];\n      } else if (typeof props[propName] === 'function') {\n        proxySource[propName] = props[propName];\n      }\n    }\n    return proxySource;\n  }, {});\n}\n\nexport interface AssignableProps {\n  ref?: Ref<any>;\n  style?: CSSProperties;\n  className?: string;\n  styles?: DetailedHTMLProps<StyleHTMLAttributes<HTMLStyleElement>, HTMLStyleElement>;\n\n  [key: string]: any;\n}\n\nexport default function assignProps<P extends AssignableProps, S extends AssignableProps>(\n  props: P = {} as P,\n  source: S = {} as S,\n) {\n  // @ts-ignore\n  if (props === source) return props;\n  const newProps = {\n    ...source,\n    ...props,\n    ...assignHandlersInner(props, source),\n  };\n  for (const key in source) {\n    if (key.startsWith('use:')) {\n      const originalKey = key.slice('use:'.length);\n      newProps[originalKey] = source[key];\n    }\n  }\n  for (const key in props) {\n    if (key.startsWith('use:')) {\n      const originalKey = key.slice('use:'.length);\n      newProps[originalKey] = props[key];\n    }\n  }\n\n  // because react set getter for ref\n  const sourceDescriptorRef = Object.getOwnPropertyDescriptor(source, 'ref');\n  const propsDescriptorRef = Object.getOwnPropertyDescriptor(props, 'ref');\n  if (sourceDescriptorRef?.configurable && propsDescriptorRef?.configurable) {\n    newProps.ref = forkRef(source.ref as any, props.ref as any);\n  }\n\n  if (props.forwardRef) {\n    newProps.ref = forkRef(newProps.ref as any, props.forwardRef as any);\n    newProps.forwardRef = newProps.ref;\n  }\n\n  if (source.style && props.style) {\n    newProps.style = {\n      ...source.style,\n      ...props.style,\n    };\n  }\n\n  if (source.className) {\n    newProps.className = cn(props.className, source.className);\n  }\n\n  if (source.styles && props.styles) {\n    newProps.styles = sstyled.merge(source.styles, props.styles);\n  }\n\n  return newProps;\n}\n"],"mappings":"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","ignoreList":[]}