{"version":3,"file":"staticChildren.mjs","names":["React","assignProps","logger","pick","assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","getterMethodName","name","getterMethodNameByDisplayName","displayName","displayNames","split","slice","length","join","flatGetterMethodNames","childComponents","parentName","entries","acc","value","Array","isArray","push","STATIC_COMPONENT","Symbol","ROOT_COMPONENT","SELF_GETTER_METHOD","Enhancement","createComponent","options","getterMethodNames","condition","Component","Boolean","init","props","WrapperComponent","getterMethods","selfGetterMethod","warn","getterMethod","childrenProps","getterProps","call","index","cache","Set","static","Error","prevStaticComponent","prevDisplayName","context","wrapperProps","useContext","has","add","render","forEach","undefined","clear"],"sources":["../../src/enhancement/staticChildren.tsx"],"sourcesContent":["import React from 'react';\n\nimport assignProps from '../utils/assignProps';\nimport logger from '../utils/logger';\nimport pick from '../utils/pick';\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.push(...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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","ignoreList":[]}