{"version":3,"file":"assignProps.mjs","names":["cn","sstyled","forkRef","callAllEventHandlers","_len","arguments","length","fns","Array","_key","_len2","args","_key2","some","fn","result","apply","assignHandlers","props","source","Object","keys","reduce","proxySource","propName","startsWith","assignHandlersInner","assignProps","undefined","newProps","_objectSpread","key","originalKey","slice","sourceDescriptorRef","getOwnPropertyDescriptor","propsDescriptorRef","configurable","ref","forwardRef","style","className","styles","merge"],"sources":["../src/assignProps.ts"],"sourcesContent":["import { CSSProperties, Ref } from 'react';\nimport cn from 'classnames';\nimport { sstyled } from './core/index';\nimport { forkRef } from './ref';\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?: { [key: string]: string };\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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"}