@mantine/dropzone
Version:
Dropzone component built with Mantine theme and components
1 lines • 1.94 kB
Source Map (JSON)
{"version":3,"file":"DropzoneStatus.cjs","names":["useDropzoneContext"],"sources":["../src/DropzoneStatus.tsx"],"sourcesContent":["import { cloneElement } from 'react';\nimport { isElement, useProps } from '@mantine/core';\nimport { upperFirst } from '@mantine/hooks';\nimport { DropzoneContextValue, useDropzoneContext } from './Dropzone.context';\n\nexport interface DropzoneStatusProps {\n children: React.ReactNode;\n}\n\ntype DropzoneStatusComponent = React.FC<DropzoneStatusProps>;\n\nfunction createDropzoneStatus(status: keyof DropzoneContextValue) {\n const Component: DropzoneStatusComponent = (props) => {\n const { children, ...others } = useProps(`Dropzone${upperFirst(status)}`, {}, props);\n\n const ctx = useDropzoneContext();\n const _children = isElement(children) ? children : <span>{children}</span>;\n\n if (ctx[status]) {\n return cloneElement(_children as React.JSX.Element, others);\n }\n\n return null;\n };\n\n Component.displayName = `@mantine/dropzone/${upperFirst(status)}`;\n\n return Component;\n}\n\nexport const DropzoneAccept = createDropzoneStatus('accept');\nexport const DropzoneReject = createDropzoneStatus('reject');\nexport const DropzoneIdle = createDropzoneStatus('idle');\n\nexport type DropzoneAcceptProps = DropzoneStatusProps;\nexport type DropzoneRejectProps = DropzoneStatusProps;\nexport type DropzoneIdleProps = DropzoneStatusProps;\n"],"mappings":";;;;;;;AAWA,SAAS,qBAAqB,QAAoC;CAChE,MAAM,aAAsC,UAAU;EACpD,MAAM,EAAE,UAAU,GAAG,YAAA,GAAA,cAAA,SAAA,CAAoB,YAAA,GAAA,eAAA,WAAA,CAAsB,MAAM,KAAK,CAAC,GAAG,KAAK;EAEnF,MAAM,MAAMA,yBAAAA,mBAAmB;EAC/B,MAAM,aAAA,GAAA,cAAA,UAAA,CAAsB,QAAQ,IAAI,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAO,SAAe,CAAA;EAEzE,IAAI,IAAI,SACN,QAAA,GAAA,MAAA,aAAA,CAAoB,WAAgC,MAAM;EAG5D,OAAO;CACT;CAEA,UAAU,cAAc,sBAAA,GAAA,eAAA,WAAA,CAAgC,MAAM;CAE9D,OAAO;AACT;AAEA,MAAa,iBAAiB,qBAAqB,QAAQ;AAC3D,MAAa,iBAAiB,qBAAqB,QAAQ;AAC3D,MAAa,eAAe,qBAAqB,MAAM"}