{"version":3,"file":"hoistProps.mjs","names":["React","assignProps","useEnhancedEffect","pick","HOIST_CONTEXT","Symbol","HOIST_SELF","HOIST_SET","flatChildComponent","childComponents","Object","values","reduce","acc","Component","Array","isArray","concat","_toConsumableArray","push","Enhancement","Context","condition","some","_Component$hoistProps","Boolean","hoistProps","length","init","props","WrapperComponent","isFunction","_this","useState","obj","forceUpdate","context","_objectSpread","_defineProperty","asProps","wrapperProps","_WrapperComponent$hoi","useContext","renameProps","propName","_propName$split","split","_propName$split2","_slicedToArray","name","rename","entries","keys","_ref","_ref2","value"],"sources":["../../../src/core/enhancement/hoistProps.tsx"],"sourcesContent":["import React from 'react';\nimport assignProps from '../../assignProps';\nimport useEnhancedEffect from '../../use/useEnhancedEffect';\nimport pick from '../../pick';\n\nexport const HOIST_CONTEXT = Symbol('HOIST_CONTEXT');\nconst HOIST_SELF = Symbol('HOIST_SELF');\nconst HOIST_SET = Symbol('HOIST_SET');\n\nfunction flatChildComponent(childComponents: any) {\n  return Object.values(childComponents).reduce<unknown[]>((acc, Component) => {\n    if (Array.isArray(Component)) {\n      acc = [...acc, Component[0], ...flatChildComponent(Component[1])];\n    } else {\n      acc.push(Component);\n    }\n    return acc;\n  }, []);\n}\n\n/** @deprecated Doesn't work in ssr and sometimes breakes rulles of hooks. We should never use it. */\nfunction Enhancement(childComponents: any, Context: any) {\n  return {\n    condition: function (Component: any) {\n      return [Component, ...flatChildComponent(childComponents)].some((Component) =>\n        Boolean(Component.hoistProps?.length),\n      );\n    },\n    init: function (this: any, props: any, WrapperComponent: any, isFunction: boolean) {\n      if (isFunction) {\n        // TODO: might breake rules of hooks (by lsroman)\n        this[HOIST_SELF] = React.useState({});\n      } else {\n        this[HOIST_SELF] = [\n          {},\n          (obj: any) => {\n            this[HOIST_SELF][0] = obj;\n            this.forceUpdate();\n          },\n        ];\n      }\n      // For optimization render\n      this[HOIST_SET] = (obj: any) => {\n        this[HOIST_SELF][1](obj);\n      };\n    },\n    context: function (this: any, context: any) {\n      // TODO: need to optimizte container initialization (by lsroman)\n      // WrapperComponent.hoistProps\n      return {\n        ...context,\n        [HOIST_CONTEXT]: this[HOIST_SET],\n      };\n    },\n    asProps: function (this: any, props: any) {\n      // TODO: need to check for no props overwriting (by lsroman)\n      return assignProps(this[HOIST_SELF][0], props);\n    },\n    wrapperProps: function (props: any, WrapperComponent: any) {\n      if (WrapperComponent.hoistProps?.length) {\n        const context: any = React.useContext(Context);\n        const renameProps: any = WrapperComponent.hoistProps.reduce((acc: any, propName: any) => {\n          const [name, rename] = propName.split(':');\n          acc[name] = rename || name;\n          return acc;\n        }, {});\n        const hoistProps = Object.entries(pick(props, Object.keys(renameProps))).reduce(\n          (acc: any, [name, value]) => {\n            acc[renameProps[name]] = value;\n            return acc;\n          },\n          {},\n        );\n\n        useEnhancedEffect(() => {\n          if (context[HOIST_CONTEXT]) {\n            context[HOIST_CONTEXT](hoistProps);\n          }\n        }, Object.values(hoistProps));\n      }\n      return props;\n    },\n  };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}