{"version":3,"file":"staticChildren.mjs","names":["React","assignProps","pick","logger","assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","getterMethodName","name","concat","getterMethodNameByDisplayName","displayName","arguments","length","undefined","displayNames","split","slice","join","flatGetterMethodNames","childComponents","parentName","entries","acc","_ref","_ref2","_slicedToArray","value","Array","isArray","_toConsumableArray","push","STATIC_COMPONENT","Symbol","ROOT_COMPONENT","SELF_GETTER_METHOD","Enhancement","createComponent","options","getterMethodNames","condition","Component","Boolean","init","props","WrapperComponent","_this","getterMethods","selfGetterMethod","warn","getterMethod","childrenProps","getterProps","call","index","cache","Set","_static","Error","_ref3","_ref4","prevStaticComponent","prevDisplayName","context","_objectSpread","wrapperProps","useContext","has","add","render","_this2","forEach","clear"],"sources":["../../../src/core/enhancement/staticChildren.tsx"],"sourcesContent":["import React from 'react';\nimport assignProps from '../../assignProps';\nimport pick from '../../pick';\nimport logger from '../../logger';\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\nexport function getterMethodName(name: string) {\n  return `get${name}Props`;\n}\n\nexport function getterMethodNameByDisplayName(displayName = '') {\n  const displayNames = displayName.split('.');\n  const name = displayNames.slice(-(displayNames.length - 1)).join('');\n  return getterMethodName(name);\n}\n\nfunction flatGetterMethodNames(childComponents: any, parentName?: string) {\n  return Object.entries(childComponents).reduce<string[]>((acc, [name, value]) => {\n    if (Array.isArray(value)) {\n      acc = [...acc, ...flatGetterMethodNames(value[1], name)];\n    }\n    name = parentName ? `${parentName}${name}` : name;\n    acc.push(getterMethodName(name));\n    return acc;\n  }, []);\n}\n\nexport const STATIC_COMPONENT = Symbol('STATIC_COMPONENT');\nexport const ROOT_COMPONENT = Symbol('ROOT_COMPONENT');\nconst SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');\n\nfunction Enhancement(childComponents: any, createComponent: any, options: any) {\n  const getterMethodNames = flatGetterMethodNames(childComponents);\n  return {\n    condition: function (Component: any) {\n      return Boolean(Component[STATIC_COMPONENT] || Object.keys(childComponents).length);\n    },\n    init: function (this: any, props: any, WrapperComponent: any) {\n      const getterMethods: any = pick(this, getterMethodNames);\n      this[SELF_GETTER_METHOD] = () => {\n        const selfGetterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n        logger.warn(\n          true,\n          `Getter \\`${selfGetterMethod}\\` can't be fired as it is a getter of static component`,\n          props['data-ui-name'] || WrapperComponent.displayName,\n        );\n      };\n      assign(\n        this,\n        getterMethodNames.reduce((acc: any, name) => {\n          const getterMethod = getterMethods[name];\n          if (!getterMethod) return acc;\n          acc[name] = (childrenProps = {}) => {\n            const getterProps = getterMethod.call(this, childrenProps, acc[name].index);\n            return assignProps(childrenProps, getterProps);\n          };\n          acc[name].index = -1;\n          acc[name].cache = new Set();\n          return acc;\n        }, {}),\n      );\n    },\n    static: function (WrapperComponent: any, Component: any) {\n      if (Object.keys(childComponents).length && !WrapperComponent.displayName) {\n        throw new Error('\"displayName\" is not defined');\n      }\n      return Object.entries(childComponents).reduce((acc: any, [name, value]: any) => {\n        let childComponents = {};\n\n        if (Array.isArray(value)) {\n          childComponents = value[1];\n          value = value[0];\n        }\n\n        const prevStaticComponent = value[STATIC_COMPONENT];\n        // @ts-ignore\n        const prevDisplayName = value.displayName;\n        // @ts-ignore\n        value.displayName = `${WrapperComponent.displayName}.${name}`;\n        value[STATIC_COMPONENT] = true;\n        value[ROOT_COMPONENT] = Component[ROOT_COMPONENT] || Component;\n        acc[name] = createComponent(value, childComponents, options);\n        // @ts-ignore\n        value.displayName = prevDisplayName;\n        value[STATIC_COMPONENT] = prevStaticComponent;\n        return acc;\n      }, {});\n    },\n    context: function (context: any /*, WrapperComponent*/) {\n      // const getterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n      return {\n        ...context,\n        // [getterMethod]: this[SELF_GETTER_METHOD],\n        ...pick(this, getterMethodNames as any),\n      };\n    },\n    wrapperProps: function (this: any, props: any, WrapperComponent: any) {\n      if (!WrapperComponent[STATIC_COMPONENT]) return props;\n      const context: any = React.useContext(options.context);\n      const getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];\n      if (getterMethod) {\n        if (!getterMethod.cache.has(this)) {\n          getterMethod.cache.add(this);\n          getterMethod.index++;\n          if (this) this.index = getterMethod.index;\n        }\n        if (this) getterMethod.index = this.index;\n        return getterMethod(props);\n      }\n      return props;\n    },\n    render: function (this: any, render: any) {\n      getterMethodNames.forEach((name) => {\n        if (this[name] === undefined) return;\n        this[name].index = -1;\n        this[name].cache.clear();\n      });\n      return render;\n    },\n  };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}