{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import type { ReactElement, FC } from \"react\";\r\nimport { Children, cloneElement } from \"react\";\r\nimport type { ILoop } from \"./config/types\";\r\nimport type { IComponentBaseProps } from \"../../types/components\";\r\n\r\n/**\r\n * Компонент цикла. Используется для вывода нескольких одинаковых элементов\r\n * @returns {ReactElement}\r\n */\r\nconst Loop: FC<ILoop & IComponentBaseProps> = ({\r\n  length = 1,\r\n  children = null,\r\n  items = [] as ILoop[\"items\"],\r\n}): ReactElement => {\n\n  if (!children) {\n    return <></>;\n  }\n\n  const element = Children.only(children);\n  const keyCounter = new Map<string, number>();\r\n\r\n  const mock = new Array(length).fill(element);\r\n\r\n  return (\r\n    <>\r\n      {Children.map(mock, (child, index) => {\r\n        const accessor = !!items ? items[index] : null;\r\n        const customProps = (typeof accessor === \"object\" && !!accessor) ? accessor : {};\r\n        const keyBase = JSON.stringify({\r\n          childKey: child.key,\r\n          accessor: customProps,\r\n        });\r\n        const keyOrder = (keyCounter.get(keyBase) ?? 0) + 1;\r\n        keyCounter.set(keyBase, keyOrder);\r\n        return cloneElement(child, {\r\n          ...child.props,\r\n          key: `${keyBase}_${keyOrder}`,\r\n          ...customProps,\r\n        });\r\n      })}\r\n    </>\r\n  );\r\n};\r\n\r\nexport type { ILoop };\r\nexport { Loop };\r\n"],"names":["Loop","length","children","items","_jsx","element","Children","only","keyCounter","Map","mock","Array","fill","_Fragment","map","child","index","accessor","customProps","keyBase","JSON","stringify","childKey","key","keyOrder","get","set","cloneElement","props"],"mappings":";;;;GASA,MAAMA,KAAwC,EAC5CC,cAAS,EACTC,kBAAW,KACXC,YAAQ,OAGR,IAAKD;AACH,OAAOE,iBAGT,MAAMC,QAAUC,SAASC,KAAKL,UAC9B,MAAMM,WAAa,IAAIC,IAEvB,MAAMC,KAAO,IAAIC,MAAMV,QAAQW,KAAKP;AAEpC,OACED,IAAAS,SAAA,CAAAX,SACGI,SAASQ,IAAIJ,KAAM,CAACK,MAAOC,SAC1B,MAAMC,WAAad,MAAQA,MAAMa,OAAS,KAC1C,MAAME,mBAAsBD,WAAa,YAAcA,SAAYA,SAAW,CAAA,EAC9E,MAAME,QAAUC,KAAKC,UAAU,CAC7BC,SAAUP,MAAMQ,IAChBN,SAAUC,cAEZ,MAAMM,UAAYhB,WAAWiB,IAAIN,UAAY,GAAK,EAClDX,WAAWkB,IAAIP,QAASK;AACxB,OAAOG,aAAaZ,MAAO,IACtBA,MAAMa,MACTL,IAAK,GAAGJ,WAAWK,cAChBN"}