{"version":3,"file":"Root.mjs","names":["React","assignProps","useForkRef","createRootRender","Root","forwardRef","render","Tag","source","ref","_Root","styles","_styles","children","_children","Children","props","clearProps","Object","entries","reduce","name","value","undefined","child","origin","createElement","other","Error","Fragment","Enhancement","init","asProps","_WrapperComponent","isFunction"],"sources":["../../src/enhancement/Root.tsx"],"sourcesContent":["import React from 'react';\n\nimport assignProps from '../utils/assignProps';\nimport { useForkRef } from '../utils/ref';\n\nfunction createRootRender() {\n  // @ts-ignore\n  const Root = React.forwardRef(function ({ render: Tag, ...source }, ref) {\n    const {\n      Root: _Root,\n\n      styles: _styles,\n\n      children: _children,\n      Children,\n      forwardRef = null,\n      ...props\n      // @ts-ignore\n    } = Root.props;\n\n    const clearProps = Object.entries(props).reduce((props: any, [name, value]) => {\n      if (value !== undefined) {\n        props[name] = value;\n      }\n      return props;\n    }, {});\n\n    const child = {};\n    // TODO: need to find better check solution (by lsroman)\n    if (typeof Children.origin !== 'undefined') {\n      // @ts-ignore\n      child.children = <Children />;\n    }\n\n    const other = assignProps(\n      {\n        ...clearProps,\n        ref: useForkRef(forwardRef, ref),\n      },\n      {\n        ...child,\n        ...source,\n      },\n    );\n    if (!Tag) {\n      throw new Error('`render` prop of Root is not provided');\n    }\n    if (Tag === React.Fragment) return <React.Fragment>{other.children}</React.Fragment>;\n\n    return <Tag {...other} />;\n  });\n  // @ts-ignore\n  Root.props = {};\n  return Root;\n}\n\nfunction Enhancement() {\n  return {\n    init: function (this: any) {\n      this.Root = createRootRender();\n    },\n    asProps: function (this: any, props: any, _WrapperComponent: any, isFunction: boolean) {\n      if (isFunction) {\n        return {\n          ...props,\n          Root: this.Root,\n        };\n      }\n      return props;\n    },\n    render: function (this: any, render: any, props: any) {\n      this.Root.props = props;\n      return render;\n    },\n  };\n}\n\nexport default Enhancement;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,WAAW,MAAM,0BAAsB;AAC9C,SAASC,UAAU,QAAQ,kBAAc;AAEzC,SAASC,gBAAgBA,CAAA,EAAG;EAC1B;EACA,MAAMC,IAAI,gBAAGJ,KAAK,CAACK,UAAU,CAAC,UAAU;IAAEC,MAAM,EAAEC,GAAG;IAAE,GAAGC;EAAO,CAAC,EAAEC,GAAG,EAAE;IACvE,MAAM;MACJL,IAAI,EAAEM,KAAK;MAEXC,MAAM,EAAEC,OAAO;MAEfC,QAAQ,EAAEC,SAAS;MACnBC,QAAQ;MACRV,UAAU,GAAG,IAAI;MACjB,GAAGW;MACH;IACF,CAAC,GAAGZ,IAAI,CAACY,KAAK;IAEd,MAAMC,UAAU,GAAGC,MAAM,CAACC,OAAO,CAACH,KAAK,CAAC,CAACI,MAAM,CAAC,CAACJ,KAAU,EAAE,CAACK,IAAI,EAAEC,KAAK,CAAC,KAAK;MAC7E,IAAIA,KAAK,KAAKC,SAAS,EAAE;QACvBP,KAAK,CAACK,IAAI,CAAC,GAAGC,KAAK;MACrB;MACA,OAAON,KAAK;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,MAAMQ,KAAK,GAAG,CAAC,CAAC;IAChB;IACA,IAAI,OAAOT,QAAQ,CAACU,MAAM,KAAK,WAAW,EAAE;MAC1C;MACAD,KAAK,CAACX,QAAQ,gBAAGb,KAAA,CAAA0B,aAAA,CAACX,QAAQ,MAAE,CAAC;IAC/B;IAEA,MAAMY,KAAK,GAAG1B,WAAW,CACvB;MACE,GAAGgB,UAAU;MACbR,GAAG,EAAEP,UAAU,CAACG,UAAU,EAAEI,GAAG;IACjC,CAAC,EACD;MACE,GAAGe,KAAK;MACR,GAAGhB;IACL,CACF,CAAC;IACD,IAAI,CAACD,GAAG,EAAE;MACR,MAAM,IAAIqB,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACA,IAAIrB,GAAG,KAAKP,KAAK,CAAC6B,QAAQ,EAAE,oBAAO7B,KAAA,CAAA0B,aAAA,CAAC1B,KAAK,CAAC6B,QAAQ,QAAEF,KAAK,CAACd,QAAyB,CAAC;IAEpF,oBAAOb,KAAA,CAAA0B,aAAA,CAACnB,GAAG,EAAKoB,KAAQ,CAAC;EAC3B,CAAC,CAAC;EACF;EACAvB,IAAI,CAACY,KAAK,GAAG,CAAC,CAAC;EACf,OAAOZ,IAAI;AACb;AAEA,SAAS0B,WAAWA,CAAA,EAAG;EACrB,OAAO;IACLC,IAAI,EAAE,SAAAA,CAAA,EAAqB;MACzB,IAAI,CAAC3B,IAAI,GAAGD,gBAAgB,CAAC,CAAC;IAChC,CAAC;IACD6B,OAAO,EAAE,SAAAA,CAAqBhB,KAAU,EAAEiB,iBAAsB,EAAEC,UAAmB,EAAE;MACrF,IAAIA,UAAU,EAAE;QACd,OAAO;UACL,GAAGlB,KAAK;UACRZ,IAAI,EAAE,IAAI,CAACA;QACb,CAAC;MACH;MACA,OAAOY,KAAK;IACd,CAAC;IACDV,MAAM,EAAE,SAAAA,CAAqBA,MAAW,EAAEU,KAAU,EAAE;MACpD,IAAI,CAACZ,IAAI,CAACY,KAAK,GAAGA,KAAK;MACvB,OAAOV,MAAM;IACf;EACF,CAAC;AACH;AAEA,eAAewB,WAAW","ignoreList":[]}