{"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 { FC, MouseEvent, ReactElement } from \"react\";\r\nimport { getWindow } from \"ssr-window\";\r\nimport type { INavigation, INavigationItem } from \"./config/types\";\r\nimport { NavigationContext } from \"./context\";\r\nimport { NavigationItem } from \"./ui/NavigationItem\";\r\nimport type { IComponentBaseProps } from \"../../types/components\";\r\nimport { useCN } from \"../../utils/react/useCN\";\r\n\r\n/**\r\n * Компонент навигации\r\n * @returns {ReactElement}\r\n */\r\nconst Navigation: FC<INavigation & IComponentBaseProps> = ({\r\n  baseClass = \"navigation\",\r\n  form = null,\r\n  children = null,\r\n  items = [\r\n    {\r\n      isPrev: true,\r\n      href: \"#\",\r\n      icon: \"icon-prev\",\r\n      isDisabled: true,\r\n    },\r\n    {\r\n      isNext: true,\r\n      href: \"#\",\r\n      icon: \"icon-next\",\r\n      isDisabled: false,\r\n    },\r\n  ],\r\n  extraClasses = {},\r\n  extraAttrs = {},\r\n  separator = \"\",\r\n  onClick = null,\r\n  prevIconSrc = \"icon-prev\",\r\n  nextIconSrc = \"icon-next\",\r\n  prevIconSize = \"medium\",\r\n  nextIconSize = \"medium\",\r\n}): ReactElement => {\r\n  const { getCN } = useCN(baseClass);\r\n  const [ buttons, setButtons ] = useState(items);\r\n\r\n  useEffect(() => {\r\n    setButtons(items);\r\n  }, [ items ]);\r\n\r\n  const handleClick = useCallback((\n    { event, data }:\r\n    { event: MouseEvent; data: INavigationItem; }\r\n  ) => {\r\n    if (typeof onClick === \"function\") {\r\n      onClick({\r\n        event, data, pages: buttons, setPages: setButtons,\r\n      });\r\n    } else if (data.href) {\r\n      event.preventDefault();\r\n      getWindow().location.href = data.href;\r\n    }\r\n  }, [ buttons, onClick ]);\n\r\n  const ctx = useMemo(() => ({\n    getCN, items: buttons, form, separator, handleClick,\n  }), [ buttons, form, separator, handleClick ]);\n\r\n  return (\n    <NavigationContext value={ctx}>\n      <nav>\n        <ul className={getCN(\"\", extraClasses)} {...extraAttrs}>\n          {!!buttons.length && buttons.map((btn) => {\n            const computedBtn = {\n              ...btn,\n              ...(btn.isPrev ? { icon: prevIconSrc, iconSize: prevIconSize } : {}),\n              ...(btn.isNext ? { icon: nextIconSrc, iconSize: nextIconSize } : {}),\n            };\n\n            const key = computedBtn.name || computedBtn.href || computedBtn.title || computedBtn.icon || `${computedBtn.isPrev ? \"prev\" : \"\"}_${computedBtn.isNext ? \"next\" : \"\"}`;\n            return <NavigationItem isPrev={computedBtn.isPrev} isNext={computedBtn.isNext} key={key} {...computedBtn} />;\n          })}\n          {children}\n        </ul>\n      </nav>\n    </NavigationContext>\n  );\n};\r\n\r\nexport type {\r\n  INavigation,\r\n  INavigationItem,\r\n};\r\n\r\nexport { Navigation };\r\n"],"names":["Navigation","baseClass","form","children","items","isPrev","href","icon","isDisabled","isNext","extraClasses","extraAttrs","separator","onClick","prevIconSrc","nextIconSrc","prevIconSize","nextIconSize","getCN","useCN","buttons","setButtons","useState","useEffect","handleClick","useCallback","event","data","pages","setPages","preventDefault","getWindow","location","ctx","useMemo","_jsx","NavigationContext","value","_jsxs","className","length","map","btn","computedBtn","iconSize","key","name","title","NavigationItem"],"mappings":"0RAoBA,MAAMA,WAAoD,EACxDC,oBAAY,aACZC,UAAO,KACPC,kBAAW,KACXC,YAAQ,CACN,CACEC,OAAQ,KACRC,KAAM,IACNC,KAAM,YACNC,WAAY,MAEd,CACEC,OAAQ,KACRH,KAAM,IACNC,KAAM,YACNC,WAAY,QAGhBE,0BAAe,CAAA,EACfC,sBAAa,CAAA,EACbC,oBAAY,GACZC,gBAAU,KACVC,wBAAc,YACdC,wBAAc,YACdC,0BAAe,SACfC,0BAAe,aAEf,MAAMC,MAAEA,OAAUC,MAAMlB,WACxB,MAAQmB,QAASC,YAAeC,SAASlB,OAEzCmB,UAAU,KACRF,WAAWjB,QACV,CAAEA,QAEL,MAAMoB,YAAcC,YAAY,EAC5BC,YAAOC,cAGT,UAAWd,UAAY,WACrBA,QAAQ,CACNa,YAAOC,UAAMC,MAAOR,QAASS,SAAUR,kBAEpC,GAAIM,KAAKrB,KAAM,CACpBoB,MAAMI,iBACNC,YAAYC,SAAS1B,KAAOqB,KAAKrB,IACnC,GACC,CAAEc,QAASP,UAEd,MAAMoB,IAAMC,QAAQ,KAAA,CAClBhB,YAAOd,MAAOgB,QAASlB,UAAMU,oBAAWY,0BACtC,CAAEJ,QAASlB,KAAMU,UAAWY;AAEhC,OACEW,IAACC,kBAAiB,CAACC,MAAOJ,IAAI9B,SAC5BgC,IAAA,MAAA,CAAAhC,SACEmC,KAAA,KAAA,CAAIC,UAAWrB,MAAM,GAAIR,iBAAmBC,WAAUR,SAAA,GACjDiB,QAAQoB,QAAUpB,QAAQqB,IAAKC,MAChC,MAAMC,YAAc,IACfD,OACCA,IAAIrC,OAAS,CAAEE,KAAMO,YAAa8B,SAAU5B,cAAiB,MAC7D0B,IAAIjC,OAAS,CAAEF,KAAMQ,YAAa6B,SAAU3B,cAAiB,CAAA,GAGnE,MAAM4B,IAAMF,YAAYG,MAAQH,YAAYrC,MAAQqC,YAAYI,OAASJ,YAAYpC,MAAQ,GAAGoC,YAAYtC,OAAS,OAAS,MAAMsC,YAAYlC,OAAS,OAAS;AAClK,OAAO0B,IAACa,eAAc,CAAC3C,OAAQsC,YAAYtC,OAAQI,OAAQkC,YAAYlC,UAAsBkC,aAATE,OAErF1C"}