{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import \"./style.pcss\";\r\n\r\nimport {\r\n  useCallback,\r\n  useEffect,\r\n  useMemo,\r\n  useState,\r\n} from \"react\";\r\nimport type {\r\n  FC, MouseEvent, ChangeEvent, ReactElement,\r\n} from \"react\";\r\nimport { getWindow } from \"ssr-window\";\r\nimport type { IPagination, IPaginationItem } from \"./config/types\";\r\nimport { PaginationContext } from \"./context\";\r\nimport { PaginationItem } from \"./ui/PaginationItem\";\r\nimport type { IComponentBaseProps } from \"../../types/components\";\r\nimport { useCN } from \"../../utils/react/useCN\";\r\nimport type { IInputStateActions } from \"../input/config/types\";\r\n\r\n/**\r\n * Компонент пагинации\r\n * @returns {ReactElement}\r\n */\r\nconst Pagination: FC<IPagination & IComponentBaseProps> = ({\r\n  baseClass = \"pagination\",\r\n  name,\r\n  form = null,\r\n  children = null,\r\n  items = [],\r\n  extraClasses = {},\r\n  extraAttrs = {},\r\n  separator = \"...\",\r\n  onClick = null,\r\n  onChange = null,\r\n}): ReactElement => {\r\n\r\n  const { getCN } = useCN(baseClass);\r\n\r\n  const [ pages, setPages ] = useState(items);\r\n  useEffect(() => {\r\n    setPages(items);\r\n  }, [ items ]);\r\n\r\n  const handleChange = useCallback((\r\n    e: { event: ChangeEvent; data: IPaginationItem; stateActions: IInputStateActions; }\r\n  ) => {\r\n    if (typeof onChange === \"function\") {\r\n      onChange({ ...e, pages, setPages });\r\n    } else {\r\n      const { stateActions, data } = e;\r\n      stateActions.setInputCheckedState(true);\r\n      setPages((prevPagesState) => {\n        return prevPagesState.map((item) => ({\n          ...item,\n          isActive: data.page === item.page,\n        }));\n      });\n    }\n  }, [ pages, onChange ]);\n\r\n  const handleClick = useCallback((\r\n    { event, data }:\r\n    { event: MouseEvent; data: IPaginationItem; }\r\n  ) => {\r\n    if (typeof onClick === \"function\") {\r\n      onClick({\r\n        event, data, pages, setPages,\r\n      });\r\n    } else if (data.href) {\r\n      event.preventDefault();\r\n      getWindow().location.href = data.href;\r\n    }\r\n  }, [ pages, onClick ]);\r\n\r\n  const ctx = useMemo(() => ({\n    getCN, pages, form, separator, name, handleChange, handleClick,\n  }), [ pages, form, separator, name, handleChange, handleClick ]);\n\r\n  return (\n    <PaginationContext value={ctx}>\n      <nav>\n        <ul className={getCN(\"\", extraClasses)} {...extraAttrs}>\n          {!!pages.length && pages.map((page) => {\n            const key = page.name || page.href || page.label || `page_${page.page ?? \"separator\"}`;\n            return <PaginationItem key={key} {...page} />;\n          })}\n          {children && (\n            <li className={getCN(\"item\", { isExtra: true })}>\n              {children}\n            </li>\n          )}\n        </ul>\n      </nav>\n    </PaginationContext>\n  );\n};\r\n\r\nexport type {\r\n  IPagination,\r\n  IPaginationItem,\r\n};\r\nexport { Pagination };\r\n"],"names":["Pagination","baseClass","name","form","children","items","extraClasses","extraAttrs","separator","onClick","onChange","getCN","useCN","pages","setPages","useState","useEffect","handleChange","useCallback","e","stateActions","data","setInputCheckedState","prevPagesState","map","item","isActive","page","handleClick","event","href","preventDefault","getWindow","location","ctx","useMemo","_jsx","PaginationContext","value","_jsxs","className","length","key","label","PaginationItem","isExtra"],"mappings":";;;;GAuBA,MAAMA,WAAoD,EACxDC,oBAAY,aACZC,UACAC,UAAO,KACPC,kBAAW,KACXC,YAAQ,GACRC,0BAAe,CAAA,EACfC,sBAAa,CAAA,EACbC,oBAAY,MACZC,gBAAU,KACVC,kBAAW,SAGX,MAAMC,MAAEA,OAAUC,MAAMX,WAExB,MAAQY,MAAOC,UAAaC,SAASV,OACrCW,UAAU,KACRF,SAAST,QACR,CAAEA,QAEL,MAAMY,aAAeC,YACnBC,IAEA,UAAWT,WAAa,WACtBA,SAAS,IAAKS,EAAGN,YAAOC,wBACnB,CACL,MAAMM,aAAEA,aAAYC,KAAEA,MAASF,EAC/BC,aAAaE,qBAAqB,MAClCR,SAAUS,gBACDA,eAAeC,IAAKC,OAAI,IAC1BA,KACHC,SAAUL,KAAKM,OAASF,KAAKE,QAGnC,GACC,CAAEd,MAAOH,WAEZ,MAAMkB,YAAcV,YAAY,EAC5BW,YAAOR,cAGT,UAAWZ,UAAY,WACrBA,QAAQ,CACNoB,YAAOR,UAAMR,YAAOC,yBAEjB,GAAIO,KAAKS,KAAM,CACpBD,MAAME,iBACNC,YAAYC,SAASH,KAAOT,KAAKS,IACnC,GACC,CAAEjB,MAAOJ,UAEZ,MAAMyB,IAAMC,QAAQ,KAAA,CAClBxB,YAAOE,YAAOV,UAAMK,oBAAWN,UAAMe,0BAAcW,0BACjD,CAAEf,MAAOV,KAAMK,UAAWN,KAAMe,aAAcW;AAElD,OACEQ,IAACC,kBAAiB,CAACC,MAAOJ,IAAI9B,SAC5BgC,IAAA,MAAA,CAAAhC,SACEmC,KAAA,KAAA,CAAIC,UAAW7B,MAAM,GAAIL,iBAAmBC,WAAUH,SAAA,GACjDS,MAAM4B,QAAU5B,MAAMW,IAAKG,OAC5B,MAAMe,IAAMf,KAAKzB,MAAQyB,KAAKG,MAAQH,KAAKgB,OAAS,QAAQhB,KAAKA,MAAQ;AACzE,OAAOS,IAACQ,eAAc,IAAejB,MAATe,OAE7BtC,UACCgC,IAAA,KAAA,CAAII,UAAW7B,MAAM,OAAQ,CAAEkC,QAAS,OAAQzC,SAC7CA"}