{"version":3,"file":"Pagination.cjs","sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { factory, Factory, RaikouSize, useProps } from '../../core';\nimport { Group } from '../Group/Group';\nimport { PaginationIcon } from './Pagination.icons';\nimport { PaginationControl } from './PaginationControl/PaginationControl';\nimport { PaginationDots } from './PaginationDots/PaginationDots';\nimport {\n  PaginationFirst,\n  PaginationLast,\n  PaginationNext,\n  PaginationPrevious,\n} from './PaginationEdges/PaginationEdges';\nimport { PaginationItems } from './PaginationItems/PaginationItems';\nimport {\n  PaginationRoot,\n  PaginationRootCssVariables,\n  PaginationRootProps,\n  PaginationRootStylesNames,\n} from './PaginationRoot/PaginationRoot';\n\nexport type PaginationStylesNames = PaginationRootStylesNames;\nexport type PaginationCssVariables = PaginationRootCssVariables;\n\nexport interface PaginationProps extends PaginationRootProps {\n  /** Determines whether first/last controls should be rendered, false by default */\n  withEdges?: boolean;\n\n  /** Determines whether next/previous controls should be rendered, true by default */\n  withControls?: boolean;\n\n  /** Adds props to next/previous/first/last controls */\n  getControlProps?: (control: 'first' | 'previous' | 'last' | 'next') => Record<string, any>;\n\n  /** Next control icon component */\n  nextIcon?: PaginationIcon;\n\n  /** Previous control icon component */\n  previousIcon?: PaginationIcon;\n\n  /** Last control icon component */\n  lastIcon?: PaginationIcon;\n\n  /** First control icon component */\n  firstIcon?: PaginationIcon;\n\n  /** Dots icon component */\n  dotsIcon?: PaginationIcon;\n\n  /** Key of `theme.spacing`, gap between controls, `8` by default */\n  gap?: RaikouSize | (string & {}) | number;\n\n  /** Determines whether the pagination should be hidden when only one page is available (`total={1}`), `false` by default */\n  hideWithOnePage?: boolean;\n}\n\nexport type PaginationFactory = Factory<{\n  props: PaginationProps;\n  ref: HTMLDivElement;\n  stylesNames: PaginationStylesNames;\n  vars: PaginationCssVariables;\n  staticComponents: {\n    Root: typeof PaginationRoot;\n    Control: typeof PaginationControl;\n    Dots: typeof PaginationDots;\n    First: typeof PaginationFirst;\n    Last: typeof PaginationLast;\n    Next: typeof PaginationNext;\n    Previous: typeof PaginationPrevious;\n    Items: typeof PaginationItems;\n  };\n}>;\n\nconst defaultProps: Partial<PaginationProps> = {\n  withControls: true,\n  siblings: 1,\n  boundaries: 1,\n  gap: 8,\n};\n\nexport const Pagination = factory<PaginationFactory>((_props, ref) => {\n  const props = useProps('Pagination', defaultProps, _props);\n  const {\n    withEdges,\n    withControls,\n    getControlProps,\n    nextIcon,\n    previousIcon,\n    lastIcon,\n    firstIcon,\n    dotsIcon,\n    total,\n    gap,\n    hideWithOnePage,\n    ...others\n  } = props;\n\n  if (total <= 0 || (hideWithOnePage && total === 1)) {\n    return null;\n  }\n\n  return (\n    <PaginationRoot ref={ref} total={total} {...others}>\n      <Group gap={gap}>\n        {withEdges && <PaginationFirst icon={firstIcon} {...getControlProps?.('first')} />}\n        {withControls && (\n          <PaginationPrevious icon={previousIcon} {...getControlProps?.('previous')} />\n        )}\n        <PaginationItems dotsIcon={dotsIcon} />\n        {withControls && <PaginationNext icon={nextIcon} {...getControlProps?.('next')} />}\n        {withEdges && <PaginationLast icon={lastIcon} {...getControlProps?.('last')} />}\n      </Group>\n    </PaginationRoot>\n  );\n});\n\nPagination.displayName = '@raikou/core/Pagination';\nPagination.Root = PaginationRoot;\nPagination.Control = PaginationControl;\nPagination.Dots = PaginationDots;\nPagination.First = PaginationFirst;\nPagination.Last = PaginationLast;\nPagination.Next = PaginationNext;\nPagination.Previous = PaginationPrevious;\nPagination.Items = PaginationItems;\n"],"names":["factory","useProps","jsx","PaginationRoot","jsxs","Group","PaginationFirst","PaginationPrevious","PaginationItems","PaginationNext","PaginationLast","PaginationControl","PaginationDots"],"mappings":";;;;;;;;;;;;;;;;;;AAuEA,MAAM,YAAyC,GAAA;AAAA,EAC7C,YAAc,EAAA,IAAA;AAAA,EACd,QAAU,EAAA,CAAA;AAAA,EACV,UAAY,EAAA,CAAA;AAAA,EACZ,GAAK,EAAA;AACP,CAAA;AAEO,MAAM,UAAa,GAAAA,eAAA,CAA2B,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACpE,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,YAAc,EAAA,YAAA,EAAc,MAAM,CAAA;AACzD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAA;AAAA,IACA,eAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,IAAI,KAAS,IAAA,CAAA,IAAM,eAAmB,IAAA,KAAA,KAAU,CAAI,EAAA;AAClD,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAAC,cAAA,CAACC,iCAAe,GAAU,EAAA,KAAA,EAAe,GAAG,MAC1C,EAAA,QAAA,kBAAAC,eAAA,CAACC,eAAM,GACJ,EAAA,QAAA,EAAA;AAAA,IAAA,SAAA,mCAAcC,+BAAgB,EAAA,EAAA,IAAA,EAAM,WAAY,GAAG,eAAA,GAAkB,OAAO,CAAG,EAAA,CAAA;AAAA,IAC/E,YAAA,mCACEC,kCAAmB,EAAA,EAAA,IAAA,EAAM,cAAe,GAAG,eAAA,GAAkB,UAAU,CAAG,EAAA,CAAA;AAAA,oBAE7EL,cAAA,CAACM,mCAAgB,QAAoB,EAAA,CAAA;AAAA,IACpC,YAAA,mCAAiBC,8BAAe,EAAA,EAAA,IAAA,EAAM,UAAW,GAAG,eAAA,GAAkB,MAAM,CAAG,EAAA,CAAA;AAAA,IAC/E,SAAA,mCAAcC,8BAAe,EAAA,EAAA,IAAA,EAAM,UAAW,GAAG,eAAA,GAAkB,MAAM,CAAG,EAAA;AAAA,GAAA,EAC/E,CACF,EAAA,CAAA;AAEJ,CAAC;AAED,UAAA,CAAW,WAAc,GAAA,yBAAA;AACzB,UAAA,CAAW,IAAO,GAAAP,6BAAA;AAClB,UAAA,CAAW,OAAU,GAAAQ,mCAAA;AACrB,UAAA,CAAW,IAAO,GAAAC,6BAAA;AAClB,UAAA,CAAW,KAAQ,GAAAN,+BAAA;AACnB,UAAA,CAAW,IAAO,GAAAI,8BAAA;AAClB,UAAA,CAAW,IAAO,GAAAD,8BAAA;AAClB,UAAA,CAAW,QAAW,GAAAF,kCAAA;AACtB,UAAA,CAAW,KAAQ,GAAAC,+BAAA;;;;"}