{"version":3,"file":"PaginationEdges.mjs","sources":["../../../../src/components/Pagination/PaginationEdges/PaginationEdges.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { BoxProps, createPolymorphicComponent, useProps } from '../../../core';\nimport { usePaginationContext } from '../Pagination.context';\nimport {\n  PaginationFirstIcon,\n  PaginationIconProps,\n  PaginationLastIcon,\n  PaginationNextIcon,\n  PaginationPreviousIcon,\n} from '../Pagination.icons';\nimport { PaginationControl } from '../PaginationControl/PaginationControl';\n\nexport interface CreateEdgeComponent {\n  icon: React.FC<PaginationIconProps>;\n  name: string;\n  action: 'onNext' | 'onPrevious' | 'onFirst' | 'onLast';\n  type: 'next' | 'previous';\n}\n\nexport interface PaginationEdgeProps extends BoxProps {\n  /** An icon component to replace the default icon */\n  icon?: React.FC<PaginationIconProps>;\n}\n\nexport function createEdgeComponent({ icon, name, action, type }: CreateEdgeComponent) {\n  const defaultProps: Partial<PaginationEdgeProps> = { icon };\n\n  const Component = forwardRef<HTMLButtonElement, PaginationEdgeProps>((props, ref) => {\n    const { icon: _icon, ...others } = useProps(name, defaultProps, props);\n    const Icon = _icon!;\n    const ctx = usePaginationContext();\n    const disabled = type === 'next' ? ctx.active === ctx.total : ctx.active === 1;\n\n    return (\n      <PaginationControl\n        disabled={ctx.disabled || disabled}\n        ref={ref}\n        onClick={ctx[action]}\n        withPadding={false}\n        {...others}\n      >\n        <Icon\n          className=\"raikou-rotate-rtl\"\n          style={{\n            width: 'calc(var(--pagination-control-size) / 1.8)',\n            height: 'calc(var(--pagination-control-size) / 1.8)',\n          }}\n        />\n      </PaginationControl>\n    );\n  });\n\n  Component.displayName = `@raikou/core/${name}`;\n  return createPolymorphicComponent<'button', PaginationEdgeProps>(Component);\n}\n\nexport const PaginationNext = createEdgeComponent({\n  icon: PaginationNextIcon,\n  name: 'PaginationNext',\n  action: 'onNext',\n  type: 'next',\n});\n\nexport const PaginationPrevious = createEdgeComponent({\n  icon: PaginationPreviousIcon,\n  name: 'PaginationPrevious',\n  action: 'onPrevious',\n  type: 'previous',\n});\n\nexport const PaginationFirst = createEdgeComponent({\n  icon: PaginationFirstIcon,\n  name: 'PaginationFirst',\n  action: 'onFirst',\n  type: 'previous',\n});\n\nexport const PaginationLast = createEdgeComponent({\n  icon: PaginationLastIcon,\n  name: 'PaginationLast',\n  action: 'onLast',\n  type: 'next',\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;AAwBO,SAAS,oBAAoB,EAAE,IAAA,EAAM,IAAM,EAAA,MAAA,EAAQ,MAA6B,EAAA;AACrF,EAAM,MAAA,YAAA,GAA6C,EAAE,IAAK,EAAA;AAE1D,EAAA,MAAM,SAAY,GAAA,UAAA,CAAmD,CAAC,KAAA,EAAO,GAAQ,KAAA;AACnF,IAAM,MAAA,EAAE,MAAM,KAAO,EAAA,GAAG,QAAW,GAAA,QAAA,CAAS,IAAM,EAAA,YAAA,EAAc,KAAK,CAAA;AACrE,IAAA,MAAM,IAAO,GAAA,KAAA;AACb,IAAA,MAAM,MAAM,oBAAqB,EAAA;AACjC,IAAM,MAAA,QAAA,GAAW,SAAS,MAAS,GAAA,GAAA,CAAI,WAAW,GAAI,CAAA,KAAA,GAAQ,IAAI,MAAW,KAAA,CAAA;AAE7E,IACE,uBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,IAAI,QAAY,IAAA,QAAA;AAAA,QAC1B,GAAA;AAAA,QACA,OAAA,EAAS,IAAI,MAAM,CAAA;AAAA,QACnB,WAAa,EAAA,KAAA;AAAA,QACZ,GAAG,MAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,mBAAA;AAAA,YACV,KAAO,EAAA;AAAA,cACL,KAAO,EAAA,4CAAA;AAAA,cACP,MAAQ,EAAA;AAAA;AACV;AAAA;AACF;AAAA,KACF;AAAA,GAEH,CAAA;AAED,EAAU,SAAA,CAAA,WAAA,GAAc,gBAAgB,IAAI,CAAA,CAAA;AAC5C,EAAA,OAAO,2BAA0D,SAAS,CAAA;AAC5E;AAEO,MAAM,iBAAiB,mBAAoB,CAAA;AAAA,EAChD,IAAM,EAAA,kBAAA;AAAA,EACN,IAAM,EAAA,gBAAA;AAAA,EACN,MAAQ,EAAA,QAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAC;AAEM,MAAM,qBAAqB,mBAAoB,CAAA;AAAA,EACpD,IAAM,EAAA,sBAAA;AAAA,EACN,IAAM,EAAA,oBAAA;AAAA,EACN,MAAQ,EAAA,YAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAC;AAEM,MAAM,kBAAkB,mBAAoB,CAAA;AAAA,EACjD,IAAM,EAAA,mBAAA;AAAA,EACN,IAAM,EAAA,iBAAA;AAAA,EACN,MAAQ,EAAA,SAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAC;AAEM,MAAM,iBAAiB,mBAAoB,CAAA;AAAA,EAChD,IAAM,EAAA,kBAAA;AAAA,EACN,IAAM,EAAA,gBAAA;AAAA,EACN,MAAQ,EAAA,QAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAC;;;;"}