@mantine/dropzone
Version:
Dropzone component built with Mantine theme and components
25 lines (24 loc) • 1.05 kB
JavaScript
"use client";
import { useDropzoneContext } from "./Dropzone.context.mjs";
import { isElement, useProps } from "@mantine/core";
import { upperFirst } from "@mantine/hooks";
import { cloneElement } from "react";
import { jsx } from "react/jsx-runtime";
//#region packages/@mantine/dropzone/src/DropzoneStatus.tsx
function createDropzoneStatus(status) {
const Component = (props) => {
const { children, ...others } = useProps(`Dropzone${upperFirst(status)}`, {}, props);
const ctx = useDropzoneContext();
const _children = isElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
if (ctx[status]) return cloneElement(_children, others);
return null;
};
Component.displayName = `@mantine/dropzone/${upperFirst(status)}`;
return Component;
}
const DropzoneAccept = createDropzoneStatus("accept");
const DropzoneReject = createDropzoneStatus("reject");
const DropzoneIdle = createDropzoneStatus("idle");
//#endregion
export { DropzoneAccept, DropzoneIdle, DropzoneReject };
//# sourceMappingURL=DropzoneStatus.mjs.map