{"version":3,"file":"Children.mjs","names":["React","CONTEXT_COMPONENT","CHILDREN_COMPONENT","CHILDREN_SELF","Symbol","GETTER_REG","splitPropsAndGetters","props","Object","entries","reduce","acc","key","value","exec","getters","getterToArray","getter","Array","isArray","mergeObjects","a","b","core","keys","assignGettersChain","createChildren","Context","contexts","Children","children","origin","handlers","ctx","propsAndGetters","useContext","assign","mergedGetters","undefined","Enhancement","parent","init","map","component","filter","Boolean","asProps"],"sources":["../../src/enhancement/Children.tsx"],"sourcesContent":["import React from 'react';\n\nimport { CONTEXT_COMPONENT, CHILDREN_COMPONENT } from '../core-types/symbols';\n\nconst CHILDREN_SELF = Symbol('CHILDREN_SELF');\n\nconst GETTER_REG = /^get[\\w]+Props$/;\n\nfunction splitPropsAndGetters(props: any) {\n  return Object.entries(props).reduce(\n    (acc: any, [key, value]) => {\n      if (GETTER_REG.exec(key) === null) {\n        acc.props[key] = value;\n      } else {\n        acc.getters[key] = value;\n      }\n      return acc;\n    },\n    { props: {}, getters: {} },\n  );\n}\n\nfunction getterToArray(getter: any) {\n  if (!Array.isArray(getter)) {\n    return typeof getter === 'function' ? [getter] : [];\n  }\n  return getter;\n}\n\nfunction mergeObjects(a: any = {}, b: any = {}) {\n  const core = { ...a, ...b };\n  return Object.keys(core).reduce((acc: any, key) => {\n    a[key] = getterToArray(a[key]);\n    b[key] = getterToArray(b[key]);\n    acc[key] = [...a[key], ...b[key]];\n    return acc;\n  }, {});\n}\n\nfunction assignGettersChain(getters: Array<Function>) {\n  return function (props = {}) {\n    return getters.reduce((acc, getter) => {\n      return getter(acc);\n    }, props);\n  };\n}\n\nfunction createChildren(Context: any, contexts: any) {\n  const Children: any = function () {\n    const children = Children.origin;\n    if (typeof children === 'function') {\n      const {\n        handlers = {},\n        getters = {},\n        ...props\n      } = [...contexts, Context].reduce((acc, ctx) => {\n        const { handlers, ...propsAndGetters } = React.useContext(ctx) as any;\n        const { props, getters } = splitPropsAndGetters(propsAndGetters);\n        return Object.assign({}, acc, {\n          handlers: Object.assign({}, acc.handlers, handlers),\n          getters: mergeObjects(acc.getters, getters),\n          ...props,\n        });\n      }, Children.props);\n\n      const mergedGetters = Object.entries(getters).reduce((acc: any, [key, value]) => {\n        acc[key] = assignGettersChain(value as []);\n        return acc;\n      }, {});\n\n      return children({ ...props, ...mergedGetters }, handlers);\n    } else if (children === undefined) {\n      return null;\n    }\n    return children;\n  };\n  Children.origin = null;\n  Children.props = {};\n  Children[CHILDREN_COMPONENT] = true;\n  return Children;\n}\n\nfunction Enhancement(this: any, Context: any, parent: any) {\n  return {\n    init: function (this: any) {\n      const contexts = (Array.isArray(parent) ? parent : [parent])\n        .map((component) => component[CONTEXT_COMPONENT])\n        .filter(Boolean);\n      this[CHILDREN_SELF] = createChildren(Context, contexts);\n    },\n    asProps: function (this: any, props: any) {\n      // TODO: learn the reason what it was used for (by lsroman)\n      // this[CHILDREN_SELF].origin = _Children ? _Children.origin : children;\n      this[CHILDREN_SELF].origin = props.children;\n      this[CHILDREN_SELF].props = props;\n      return {\n        ...props,\n        Children: this[CHILDREN_SELF],\n      };\n    },\n  };\n}\n\nexport default Enhancement;\n"],"mappings":"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","ignoreList":[]}