{"version":3,"file":"uncontrolledProps.mjs","names":["callAllEventHandlers","capitalizeFirstLetter","assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","defaultProp","prop","concat","handlerProp","isControlled","propValue","undefined","uncontrolledProp","self","propName","propDefaultValue","propHandler","chainHandler","getValue","state","value","oldValue","setState","_defineProperty","_len","arguments","length","args","Array","_key","apply","_toConsumableArray","uncontrolledUniversal","props","config","handlerProps","uncontrolledProps","result","_objectSpread2","handlerName","defaultPropName","other","_objectWithoutProperties","map","_toPropertyKey","console","warn","setter","isArray","_setter","_setter2","_toArray","slice","v","_uncontrolledProp","_uncontrolledProp2","_slicedToArray","handler","_objectSpread","eventOrValue","_len2","_key2","push","uncontrolled","bind","Enhancement","condition","Component","Boolean","prototype","init","handlers","_uncontrolled","_uncontrolled2","uncontrolledHandlers","context","asProps","_uncontrolled3","_uncontrolled4"],"sources":["../../../src/core/enhancement/uncontrolledProps.tsx"],"sourcesContent":["import { callAllEventHandlers } from '../../assignProps';\nimport capitalizeFirstLetter from '../../capitalizeFirstLetter';\n\nfunction assign(target: any, source: any) {\n  return Object.defineProperties(\n    target,\n    Object.keys(source).reduce((descriptors: any, key) => {\n      descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n      return descriptors;\n    }, {}),\n  );\n}\n\nfunction defaultProp(prop: any) {\n  return `default${capitalizeFirstLetter(prop)}`;\n}\n\nfunction handlerProp(prop: any) {\n  if (prop === 'value') prop = '';\n  if (prop === 'checked') prop = '';\n  return `on${capitalizeFirstLetter(prop)}Change`;\n}\n\nfunction isControlled(propValue: any) {\n  return propValue !== undefined;\n}\n\nfunction uncontrolledProp(\n  self: any,\n  propName: any,\n  propValue: any,\n  propDefaultValue: any,\n  propHandler: any,\n  chainHandler: any,\n) {\n  function getValue() {\n    return isControlled(propValue)\n      ? propValue\n      : propName in self.state\n      ? self.state[propName]\n      : propDefaultValue;\n  }\n\n  return [\n    getValue(),\n    (value: any, ...args: any[]) => {\n      const oldValue = getValue();\n      if (oldValue === value) return false;\n      if (!isControlled(propValue)) self.setState({ [propName]: value });\n      return callAllEventHandlers(propHandler, ...chainHandler)(value, ...args);\n    },\n  ];\n}\n\nfunction uncontrolledUniversal(props: any, config: any, uncontrolledProp: any) {\n  const handlerProps = {};\n  const uncontrolledProps = Object.keys(config).reduce((result, propName) => {\n    const handlerName = handlerProp(propName);\n    const defaultPropName = defaultProp(propName);\n    const {\n      [defaultPropName]: propDefaultValue,\n      [propName]: propValue,\n      [handlerName]: propHandler,\n      ...other\n    } = result;\n\n    if (propDefaultValue === undefined) {\n      console.warn(defaultPropName, 'must be installed in \"defaultProps\"');\n    }\n\n    // if (typeof propDefaultValue === 'function' && propDefaultValue.defaultInit) {\n    //   propDefaultValue = propDefaultValue(result);\n    // }\n\n    let setter = config[propName];\n    let chainHandler = [];\n\n    if (Array.isArray(setter)) [setter, ...chainHandler] = setter;\n    setter = setter || ((v: any) => v);\n\n    const [value, handler] = uncontrolledProp(\n      propName,\n      propValue,\n      propDefaultValue,\n      propHandler,\n      chainHandler,\n    );\n    // TODO: need to warn about recursion (by lsroman)\n    (handlerProps as any)[propName] = handler;\n\n    return {\n      ...other,\n      [propName]: value,\n      [handlerName]: (eventOrValue: any, ...args: any[]) => {\n        const result = [setter(eventOrValue, ...args), ...args];\n        if (eventOrValue?.target) {\n          result.push(eventOrValue);\n        }\n        return handler(...result);\n      },\n    };\n  }, props);\n  return [uncontrolledProps, handlerProps];\n}\n\nfunction uncontrolled(self: any, props: any, config: any) {\n  return uncontrolledUniversal(props, config, uncontrolledProp.bind(undefined, self));\n}\n\nfunction Enhancement() {\n  return {\n    condition: function (Component: any) {\n      return Boolean(Component.prototype.uncontrolledProps);\n    },\n    init: function (this: any) {\n      this.state = this.state || {};\n      assign(this, {\n        get handlers() {\n          const [, uncontrolledHandlers] = uncontrolled(this, this.props, this.uncontrolledProps());\n          return uncontrolledHandlers;\n        },\n      });\n    },\n    context: function (this: any, context: any) {\n      return {\n        ...context,\n        handlers: this.handlers,\n      };\n    },\n    asProps: function (this: any, props: any) {\n      // TODO: need to omit unneccessary props (by lsroman)\n      const [uncontrolledProps] = uncontrolled(this, props, this.uncontrolledProps());\n      return uncontrolledProps;\n    },\n  };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}