@mantine/dropzone 6.0.17 → 7.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/cjs/Dropzone.context.js +4 -2
  2. package/cjs/Dropzone.context.js.map +1 -1
  3. package/cjs/Dropzone.js +77 -41
  4. package/cjs/Dropzone.js.map +1 -1
  5. package/cjs/Dropzone.module.css.js +8 -0
  6. package/cjs/Dropzone.module.css.js.map +1 -0
  7. package/cjs/DropzoneFullScreen.js +53 -42
  8. package/cjs/DropzoneFullScreen.js.map +1 -1
  9. package/cjs/DropzoneStatus.js +2 -3
  10. package/cjs/DropzoneStatus.js.map +1 -1
  11. package/cjs/index.css +83 -0
  12. package/cjs/index.js +6 -0
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/mime-types.js +2 -0
  15. package/cjs/mime-types.js.map +1 -1
  16. package/esm/Dropzone.context.js +4 -2
  17. package/esm/Dropzone.context.js.map +1 -1
  18. package/esm/Dropzone.js +80 -42
  19. package/esm/Dropzone.js.map +1 -1
  20. package/esm/Dropzone.module.css.js +4 -0
  21. package/esm/Dropzone.module.css.js.map +1 -0
  22. package/esm/DropzoneFullScreen.js +55 -44
  23. package/esm/DropzoneFullScreen.js.map +1 -1
  24. package/esm/DropzoneStatus.js +2 -3
  25. package/esm/DropzoneStatus.js.map +1 -1
  26. package/esm/index.css +83 -0
  27. package/esm/index.js +3 -0
  28. package/esm/index.js.map +1 -1
  29. package/esm/mime-types.js +2 -0
  30. package/esm/mime-types.js.map +1 -1
  31. package/lib/Dropzone.context.d.ts +2 -1
  32. package/lib/Dropzone.context.d.ts.map +1 -1
  33. package/lib/Dropzone.d.ts +50 -48
  34. package/lib/Dropzone.d.ts.map +1 -1
  35. package/lib/DropzoneFullScreen.d.ts +16 -9
  36. package/lib/DropzoneFullScreen.d.ts.map +1 -1
  37. package/lib/DropzoneStatus.d.ts +5 -12
  38. package/lib/DropzoneStatus.d.ts.map +1 -1
  39. package/lib/index.d.ts +21 -17
  40. package/lib/index.d.ts.map +1 -1
  41. package/package.json +18 -11
  42. package/cjs/Dropzone.styles.js +0 -72
  43. package/cjs/Dropzone.styles.js.map +0 -1
  44. package/cjs/DropzoneFullScreen.styles.js +0 -40
  45. package/cjs/DropzoneFullScreen.styles.js.map +0 -1
  46. package/esm/Dropzone.styles.js +0 -68
  47. package/esm/Dropzone.styles.js.map +0 -1
  48. package/esm/DropzoneFullScreen.styles.js +0 -36
  49. package/esm/DropzoneFullScreen.styles.js.map +0 -1
  50. package/lib/Dropzone.styles.d.ts +0 -15
  51. package/lib/Dropzone.styles.d.ts.map +0 -1
  52. package/lib/DropzoneFullScreen.styles.d.ts +0 -10
  53. package/lib/DropzoneFullScreen.styles.d.ts.map +0 -1
package/cjs/mime-types.js CHANGED
@@ -3,12 +3,14 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const MIME_TYPES = {
6
+ // Images
6
7
  png: "image/png",
7
8
  gif: "image/gif",
8
9
  jpeg: "image/jpeg",
9
10
  svg: "image/svg+xml",
10
11
  webp: "image/webp",
11
12
  avif: "image/avif",
13
+ // Documents
12
14
  mp4: "video/mp4",
13
15
  zip: "application/zip",
14
16
  csv: "text/csv",
@@ -1 +1 @@
1
- {"version":3,"file":"mime-types.js","sources":["../src/mime-types.ts"],"sourcesContent":["export const MIME_TYPES = {\n // Images\n png: 'image/png',\n gif: 'image/gif',\n jpeg: 'image/jpeg',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n avif: 'image/avif',\n\n // Documents\n mp4: 'video/mp4',\n zip: 'application/zip',\n csv: 'text/csv',\n pdf: 'application/pdf',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n exe: 'application/vnd.microsoft.portable-executable',\n} as const;\n\nexport const IMAGE_MIME_TYPE = [\n MIME_TYPES.png,\n MIME_TYPES.gif,\n MIME_TYPES.jpeg,\n MIME_TYPES.svg,\n MIME_TYPES.webp,\n MIME_TYPES.avif,\n];\n\nexport const PDF_MIME_TYPE = [MIME_TYPES.pdf];\nexport const MS_WORD_MIME_TYPE = [MIME_TYPES.doc, MIME_TYPES.docx];\nexport const MS_EXCEL_MIME_TYPE = [MIME_TYPES.xls, MIME_TYPES.xlsx];\nexport const MS_POWERPOINT_MIME_TYPE = [MIME_TYPES.ppt, MIME_TYPES.pptx];\nexport const EXE_MIME_TYPE = [MIME_TYPES.exe];\n"],"names":[],"mappings":";;;;AAAY,MAAC,UAAU,GAAG;AAC1B,EAAE,GAAG,EAAE,WAAW;AAClB,EAAE,GAAG,EAAE,WAAW;AAClB,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,GAAG,EAAE,eAAe;AACtB,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,GAAG,EAAE,WAAW;AAClB,EAAE,GAAG,EAAE,iBAAiB;AACxB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,GAAG,EAAE,iBAAiB;AACxB,EAAE,GAAG,EAAE,oBAAoB;AAC3B,EAAE,IAAI,EAAE,yEAAyE;AACjF,EAAE,GAAG,EAAE,0BAA0B;AACjC,EAAE,IAAI,EAAE,mEAAmE;AAC3E,EAAE,GAAG,EAAE,+BAA+B;AACtC,EAAE,IAAI,EAAE,2EAA2E;AACnF,EAAE,GAAG,EAAE,+CAA+C;AACtD,EAAE;AACU,MAAC,eAAe,GAAG;AAC/B,EAAE,UAAU,CAAC,GAAG;AAChB,EAAE,UAAU,CAAC,GAAG;AAChB,EAAE,UAAU,CAAC,IAAI;AACjB,EAAE,UAAU,CAAC,GAAG;AAChB,EAAE,UAAU,CAAC,IAAI;AACjB,EAAE,UAAU,CAAC,IAAI;AACjB,EAAE;AACU,MAAC,aAAa,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;AAClC,MAAC,iBAAiB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AACvD,MAAC,kBAAkB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AACxD,MAAC,uBAAuB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AAC7D,MAAC,aAAa,GAAG,CAAC,UAAU,CAAC,GAAG;;;;;;;;;;"}
1
+ {"version":3,"file":"mime-types.js","sources":["../src/mime-types.ts"],"sourcesContent":["export const MIME_TYPES = {\n // Images\n png: 'image/png',\n gif: 'image/gif',\n jpeg: 'image/jpeg',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n avif: 'image/avif',\n\n // Documents\n mp4: 'video/mp4',\n zip: 'application/zip',\n csv: 'text/csv',\n pdf: 'application/pdf',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n exe: 'application/vnd.microsoft.portable-executable',\n} as const;\n\nexport const IMAGE_MIME_TYPE = [\n MIME_TYPES.png,\n MIME_TYPES.gif,\n MIME_TYPES.jpeg,\n MIME_TYPES.svg,\n MIME_TYPES.webp,\n MIME_TYPES.avif,\n];\n\nexport const PDF_MIME_TYPE = [MIME_TYPES.pdf];\nexport const MS_WORD_MIME_TYPE = [MIME_TYPES.doc, MIME_TYPES.docx];\nexport const MS_EXCEL_MIME_TYPE = [MIME_TYPES.xls, MIME_TYPES.xlsx];\nexport const MS_POWERPOINT_MIME_TYPE = [MIME_TYPES.ppt, MIME_TYPES.pptx];\nexport const EXE_MIME_TYPE = [MIME_TYPES.exe];\n"],"names":[],"mappings":";;;;AAAY,MAAC,UAAU,GAAG;AAC1B;AACA,EAAE,GAAG,EAAE,WAAW;AAClB,EAAE,GAAG,EAAE,WAAW;AAClB,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,GAAG,EAAE,eAAe;AACtB,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,IAAI,EAAE,YAAY;AACpB;AACA,EAAE,GAAG,EAAE,WAAW;AAClB,EAAE,GAAG,EAAE,iBAAiB;AACxB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,GAAG,EAAE,iBAAiB;AACxB,EAAE,GAAG,EAAE,oBAAoB;AAC3B,EAAE,IAAI,EAAE,yEAAyE;AACjF,EAAE,GAAG,EAAE,0BAA0B;AACjC,EAAE,IAAI,EAAE,mEAAmE;AAC3E,EAAE,GAAG,EAAE,+BAA+B;AACtC,EAAE,IAAI,EAAE,2EAA2E;AACnF,EAAE,GAAG,EAAE,+CAA+C;AACtD,EAAE;AACU,MAAC,eAAe,GAAG;AAC/B,EAAE,UAAU,CAAC,GAAG;AAChB,EAAE,UAAU,CAAC,GAAG;AAChB,EAAE,UAAU,CAAC,IAAI;AACjB,EAAE,UAAU,CAAC,GAAG;AAChB,EAAE,UAAU,CAAC,IAAI;AACjB,EAAE,UAAU,CAAC,IAAI;AACjB,EAAE;AACU,MAAC,aAAa,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;AAClC,MAAC,iBAAiB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AACvD,MAAC,kBAAkB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AACxD,MAAC,uBAAuB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AAC7D,MAAC,aAAa,GAAG,CAAC,UAAU,CAAC,GAAG;;;;;;;;;;"}
@@ -1,6 +1,8 @@
1
- import { createSafeContext } from '@mantine/utils';
1
+ import { createSafeContext } from '@mantine/core';
2
2
 
3
- const [DropzoneProvider, useDropzoneContext] = createSafeContext("Dropzone component was not found in tree");
3
+ const [DropzoneProvider, useDropzoneContext] = createSafeContext(
4
+ "Dropzone component was not found in tree"
5
+ );
4
6
 
5
7
  export { DropzoneProvider, useDropzoneContext };
6
8
  //# sourceMappingURL=Dropzone.context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.context.js","sources":["../src/Dropzone.context.ts"],"sourcesContent":["import { createSafeContext } from '@mantine/utils';\n\nexport interface DropzoneContextValue {\n idle: boolean;\n accept: boolean;\n reject: boolean;\n}\n\nexport const [DropzoneProvider, useDropzoneContext] = createSafeContext<DropzoneContextValue>(\n 'Dropzone component was not found in tree'\n);\n"],"names":[],"mappings":";;AACY,MAAC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,GAAG,iBAAiB,CAAC,0CAA0C;;;;"}
1
+ {"version":3,"file":"Dropzone.context.js","sources":["../src/Dropzone.context.ts"],"sourcesContent":["import { createSafeContext } from '@mantine/core';\n\nexport interface DropzoneContextValue {\n idle: boolean;\n accept: boolean;\n reject: boolean;\n}\n\nexport const [DropzoneProvider, useDropzoneContext] = createSafeContext<DropzoneContextValue>(\n 'Dropzone component was not found in tree'\n);\n"],"names":[],"mappings":";;AACY,MAAC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,GAAG,iBAAiB;AACvE,EAAE,0CAA0C;AAC5C;;;;"}
package/esm/Dropzone.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { useDropzone } from 'react-dropzone';
3
- import { useComponentDefaultProps, Box, LoadingOverlay } from '@mantine/core';
3
+ import { createVarsResolver, getRadius, factory, useProps, useStyles, Box, LoadingOverlay } from '@mantine/core';
4
4
  import { assignRef } from '@mantine/hooks';
5
5
  import { DropzoneProvider } from './Dropzone.context.js';
6
- import { DropzoneAccept, DropzoneReject, DropzoneIdle } from './DropzoneStatus.js';
7
- import useStyles from './Dropzone.styles.js';
6
+ import { DropzoneAccept, DropzoneIdle, DropzoneReject } from './DropzoneStatus.js';
7
+ import classes from './Dropzone.module.css.js';
8
8
 
9
9
  var __defProp = Object.defineProperty;
10
10
  var __defProps = Object.defineProperties;
@@ -38,7 +38,6 @@ var __objRest = (source, exclude) => {
38
38
  return target;
39
39
  };
40
40
  const defaultProps = {
41
- padding: "md",
42
41
  loading: false,
43
42
  multiple: true,
44
43
  maxSize: Infinity,
@@ -47,16 +46,44 @@ const defaultProps = {
47
46
  activateOnDrag: true,
48
47
  dragEventsBubbling: true,
49
48
  activateOnKeyboard: true,
50
- useFsAccessApi: true
49
+ useFsAccessApi: true,
50
+ variant: "light",
51
+ rejectColor: "red"
51
52
  };
52
- function _Dropzone(props) {
53
- const _a = useComponentDefaultProps("Dropzone", defaultProps, props), {
53
+ const varsResolver = createVarsResolver(
54
+ (theme, { radius, variant, acceptColor, rejectColor }) => {
55
+ const acceptColors = theme.variantColorResolver({
56
+ color: acceptColor || theme.primaryColor,
57
+ theme,
58
+ variant
59
+ });
60
+ const rejectColors = theme.variantColorResolver({
61
+ color: rejectColor || "red",
62
+ theme,
63
+ variant
64
+ });
65
+ return {
66
+ root: {
67
+ "--dropzone-radius": getRadius(radius),
68
+ "--dropzone-accept-color": acceptColors.color,
69
+ "--dropzone-accept-bg": acceptColors.background,
70
+ "--dropzone-reject-color": rejectColors.color,
71
+ "--dropzone-reject-bg": rejectColors.background
72
+ }
73
+ };
74
+ }
75
+ );
76
+ const Dropzone = factory((_props, ref) => {
77
+ const props = useProps("Dropzone", defaultProps, _props);
78
+ const _a = props, {
79
+ classNames,
54
80
  className,
55
- padding,
81
+ style,
82
+ styles,
83
+ unstyled,
84
+ vars,
56
85
  radius,
57
86
  disabled,
58
- classNames,
59
- styles,
60
87
  loading,
61
88
  multiple,
62
89
  maxSize,
@@ -67,7 +94,6 @@ function _Dropzone(props) {
67
94
  onReject,
68
95
  openRef,
69
96
  name,
70
- unstyled,
71
97
  maxFiles,
72
98
  autoFocus,
73
99
  activateOnClick,
@@ -83,14 +109,17 @@ function _Dropzone(props) {
83
109
  useFsAccessApi,
84
110
  getFilesFromEvent,
85
111
  validator,
86
- variant
112
+ rejectColor,
113
+ acceptColor
87
114
  } = _a, others = __objRest(_a, [
115
+ "classNames",
88
116
  "className",
89
- "padding",
117
+ "style",
118
+ "styles",
119
+ "unstyled",
120
+ "vars",
90
121
  "radius",
91
122
  "disabled",
92
- "classNames",
93
- "styles",
94
123
  "loading",
95
124
  "multiple",
96
125
  "maxSize",
@@ -101,7 +130,6 @@ function _Dropzone(props) {
101
130
  "onReject",
102
131
  "openRef",
103
132
  "name",
104
- "unstyled",
105
133
  "maxFiles",
106
134
  "autoFocus",
107
135
  "activateOnClick",
@@ -117,9 +145,21 @@ function _Dropzone(props) {
117
145
  "useFsAccessApi",
118
146
  "getFilesFromEvent",
119
147
  "validator",
120
- "variant"
148
+ "rejectColor",
149
+ "acceptColor"
121
150
  ]);
122
- const { classes, cx } = useStyles({ radius, padding }, { name: "Dropzone", classNames, styles, unstyled, variant });
151
+ const getStyles = useStyles({
152
+ name: "Dropzone",
153
+ classes,
154
+ props,
155
+ className,
156
+ style,
157
+ classNames,
158
+ styles,
159
+ unstyled,
160
+ vars,
161
+ varsResolver
162
+ });
123
163
  const { getRootProps, getInputProps, isDragAccept, isDragReject, open } = useDropzone(__spreadValues({
124
164
  onDrop: onDropAny,
125
165
  onDropAccepted: onDrop,
@@ -145,29 +185,27 @@ function _Dropzone(props) {
145
185
  }, getFilesFromEvent ? { getFilesFromEvent } : null));
146
186
  assignRef(openRef, open);
147
187
  const isIdle = !isDragAccept && !isDragReject;
148
- return /* @__PURE__ */ React.createElement(DropzoneProvider, {
149
- value: { accept: isDragAccept, reject: isDragReject, idle: isIdle }
150
- }, /* @__PURE__ */ React.createElement(Box, __spreadProps(__spreadValues(__spreadValues({}, others), getRootProps()), {
151
- "data-accept": isDragAccept || void 0,
152
- "data-reject": isDragReject || void 0,
153
- "data-idle": isIdle || void 0,
154
- "data-loading": loading || void 0,
155
- className: cx(classes.root, className)
156
- }), /* @__PURE__ */ React.createElement(LoadingOverlay, {
157
- visible: loading,
158
- radius,
159
- unstyled
160
- }), /* @__PURE__ */ React.createElement("input", __spreadProps(__spreadValues({}, getInputProps()), {
161
- name
162
- })), /* @__PURE__ */ React.createElement("div", {
163
- className: classes.inner
164
- }, children)));
165
- }
166
- _Dropzone.displayName = "@mantine/dropzone/Dropzone";
167
- _Dropzone.Accept = DropzoneAccept;
168
- _Dropzone.Reject = DropzoneReject;
169
- _Dropzone.Idle = DropzoneIdle;
170
- const Dropzone = _Dropzone;
188
+ return /* @__PURE__ */ React.createElement(DropzoneProvider, { value: { accept: isDragAccept, reject: isDragReject, idle: isIdle } }, /* @__PURE__ */ React.createElement(
189
+ Box,
190
+ __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, others), getRootProps({ ref })), getStyles("root", { focusable: true })), {
191
+ mod: {
192
+ accept: isDragAccept,
193
+ reject: isDragReject,
194
+ idle: isIdle,
195
+ loading,
196
+ "activate-on-click": activateOnClick
197
+ }
198
+ }),
199
+ /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: loading, overlayProps: { radius }, unstyled }),
200
+ /* @__PURE__ */ React.createElement("input", __spreadProps(__spreadValues({}, getInputProps()), { name })),
201
+ /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({}, getStyles("inner")), { "data-disable-pointer-events": !activateOnClick || void 0 }), children)
202
+ ));
203
+ });
204
+ Dropzone.classes = classes;
205
+ Dropzone.displayName = "@mantine/dropzone/Dropzone";
206
+ Dropzone.Accept = DropzoneAccept;
207
+ Dropzone.Idle = DropzoneIdle;
208
+ Dropzone.Reject = DropzoneReject;
171
209
 
172
- export { Dropzone, _Dropzone, defaultProps };
210
+ export { Dropzone };
173
211
  //# sourceMappingURL=Dropzone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.js","sources":["../src/Dropzone.tsx"],"sourcesContent":["import React from 'react';\nimport {\n useDropzone,\n FileRejection,\n Accept,\n FileWithPath,\n DropEvent,\n FileError,\n} from 'react-dropzone';\nimport {\n DefaultProps,\n Selectors,\n MantineNumberSize,\n LoadingOverlay,\n Box,\n useComponentDefaultProps,\n} from '@mantine/core';\nimport { assignRef } from '@mantine/hooks';\nimport { ForwardRefWithStaticComponents } from '@mantine/utils';\nimport { DropzoneProvider } from './Dropzone.context';\nimport { DropzoneAccept, DropzoneIdle, DropzoneReject } from './DropzoneStatus';\nimport type { DropzoneFullScreenType } from './DropzoneFullScreen';\nimport useStyles from './Dropzone.styles';\n\nexport type DropzoneStylesNames = Selectors<typeof useStyles>;\n\nexport interface DropzoneProps\n extends DefaultProps<DropzoneStylesNames>,\n Omit<React.ComponentPropsWithRef<'div'>, 'onDrop'> {\n variant?: string;\n\n /** Padding from theme.spacing, or any valid CSS value to set padding */\n padding?: MantineNumberSize;\n\n /** Key of theme.radius or any valid CSS value to set border-radius, theme.defaultRadius by default */\n radius?: MantineNumberSize;\n\n /** Dropzone statues */\n children: React.ReactNode;\n\n /** Disable files capturing */\n disabled?: boolean;\n\n /** Called when any files are dropped into dropzone */\n onDropAny?(files: FileWithPath[], fileRejections: FileRejection[]): void;\n\n /** Called when valid files are dropped into dropzone */\n onDrop(files: FileWithPath[]): void;\n\n /** Called when selected files don't meet file restrictions */\n onReject?(fileRejections: FileRejection[]): void;\n\n /** Display loading overlay over dropzone */\n loading?: boolean;\n\n /** File types to accept */\n accept?: Accept | string[];\n\n /** Get open function as ref */\n openRef?: React.ForwardedRef<() => void | undefined>;\n\n /** Allow selection of multiple files */\n multiple?: boolean;\n\n /** Set maximum file size in bytes */\n maxSize?: number;\n\n /** Name of the form control. Submitted with the form as part of a name/value pair. */\n name?: string;\n\n /** Number of files that user can pick */\n maxFiles?: number;\n\n /** Set to true to autofocus the root element */\n autoFocus?: boolean;\n\n /** If false, disables click to open the native file selection dialog */\n activateOnClick?: boolean;\n\n /** If false, disables drag 'n' drop */\n activateOnDrag?: boolean;\n\n /** If false, disables Space/Enter to open the native file selection dialog. Note that it also stops tracking the focus state. */\n activateOnKeyboard?: boolean;\n\n /** If false, stops drag event propagation to parents */\n dragEventsBubbling?: boolean;\n\n /** Called when the `dragenter` event occurs */\n onDragEnter?(event: React.DragEvent<HTMLElement>): void;\n\n /** Called when the `dragleave` event occurs */\n onDragLeave?(event: React.DragEvent<HTMLElement>): void;\n\n /** Called when the `dragover` event occurs */\n onDragOver?(event: React.DragEvent<HTMLElement>): void;\n\n /** Called when user closes the file selection dialog with no selection */\n onFileDialogCancel?(): void;\n\n /** Called when user opens the file selection dialog */\n onFileDialogOpen?(): void;\n\n /** If false, allow dropped items to take over the current browser window */\n preventDropOnDocument?: boolean;\n\n /** Set to true to use the File System Access API to open the file picker instead of using an <input type=\"file\"> click event, defaults to true */\n useFsAccessApi?: boolean;\n\n /** Use this to provide a custom file aggregator */\n getFilesFromEvent?: (event: DropEvent) => Promise<Array<File | DataTransferItem>>;\n\n /** Custom validation function. It must return null if there's no errors. */\n validator?: <T extends File>(file: T) => FileError | FileError[] | null;\n}\n\nexport const defaultProps: Partial<DropzoneProps> = {\n padding: 'md',\n loading: false,\n multiple: true,\n maxSize: Infinity,\n autoFocus: false,\n activateOnClick: true,\n activateOnDrag: true,\n dragEventsBubbling: true,\n activateOnKeyboard: true,\n useFsAccessApi: true,\n};\n\nexport function _Dropzone(props: DropzoneProps) {\n const {\n className,\n padding,\n radius,\n disabled,\n classNames,\n styles,\n loading,\n multiple,\n maxSize,\n accept,\n children,\n onDropAny,\n onDrop,\n onReject,\n openRef,\n name,\n unstyled,\n maxFiles,\n autoFocus,\n activateOnClick,\n activateOnDrag,\n dragEventsBubbling,\n activateOnKeyboard,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onFileDialogCancel,\n onFileDialogOpen,\n preventDropOnDocument,\n useFsAccessApi,\n getFilesFromEvent,\n validator,\n variant,\n ...others\n } = useComponentDefaultProps('Dropzone', defaultProps, props);\n\n const { classes, cx } = useStyles(\n { radius, padding },\n { name: 'Dropzone', classNames, styles, unstyled, variant }\n );\n\n const { getRootProps, getInputProps, isDragAccept, isDragReject, open } = useDropzone({\n onDrop: onDropAny,\n onDropAccepted: onDrop,\n onDropRejected: onReject,\n disabled: disabled || loading,\n accept: Array.isArray(accept) ? accept.reduce((r, key) => ({ ...r, [key]: [] }), {}) : accept,\n multiple,\n maxSize,\n maxFiles,\n autoFocus,\n noClick: !activateOnClick,\n noDrag: !activateOnDrag,\n noDragEventsBubbling: !dragEventsBubbling,\n noKeyboard: !activateOnKeyboard,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onFileDialogCancel,\n onFileDialogOpen,\n preventDropOnDocument,\n useFsAccessApi,\n validator,\n ...(getFilesFromEvent ? { getFilesFromEvent } : null),\n });\n\n assignRef(openRef, open);\n\n const isIdle = !isDragAccept && !isDragReject;\n\n return (\n <DropzoneProvider value={{ accept: isDragAccept, reject: isDragReject, idle: isIdle }}>\n <Box\n {...others}\n {...getRootProps()}\n data-accept={isDragAccept || undefined}\n data-reject={isDragReject || undefined}\n data-idle={isIdle || undefined}\n data-loading={loading || undefined}\n className={cx(classes.root, className)}\n >\n <LoadingOverlay visible={loading} radius={radius} unstyled={unstyled} />\n <input {...getInputProps()} name={name} />\n <div className={classes.inner}>{children}</div>\n </Box>\n </DropzoneProvider>\n );\n}\n\n_Dropzone.displayName = '@mantine/dropzone/Dropzone';\n_Dropzone.Accept = DropzoneAccept;\n_Dropzone.Reject = DropzoneReject;\n_Dropzone.Idle = DropzoneIdle;\n\nexport const Dropzone: ForwardRefWithStaticComponents<\n DropzoneProps,\n {\n Accept: typeof DropzoneAccept;\n Reject: typeof DropzoneReject;\n Idle: typeof DropzoneIdle;\n FullScreen: DropzoneFullScreenType;\n }\n> = _Dropzone as any;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dropzone.js","sources":["../src/Dropzone.tsx"],"sourcesContent":["import React from 'react';\nimport {\n useDropzone,\n FileRejection,\n Accept,\n FileWithPath,\n DropEvent,\n FileError,\n} from 'react-dropzone';\nimport {\n Box,\n BoxProps,\n StylesApiProps,\n factory,\n ElementProps,\n useProps,\n useStyles,\n createVarsResolver,\n Factory,\n MantineRadius,\n LoadingOverlay,\n getRadius,\n MantineColor,\n} from '@mantine/core';\nimport { assignRef } from '@mantine/hooks';\nimport { DropzoneProvider } from './Dropzone.context';\nimport { DropzoneAccept, DropzoneIdle, DropzoneReject } from './DropzoneStatus';\nimport type { DropzoneFullScreenType } from './DropzoneFullScreen';\nimport classes from './Dropzone.module.css';\n\nexport type DropzoneStylesNames = 'root' | 'inner';\nexport type DropzoneVariant = 'filled' | 'light';\nexport type DropzoneCssVariables = {\n root:\n | '--dropzone-radius'\n | '--dropzone-accept-color'\n | '--dropzone-accept-bg'\n | '--dropzone-reject-color'\n | '--dropzone-reject-bg';\n};\n\nexport interface DropzoneProps\n extends BoxProps,\n StylesApiProps<DropzoneFactory>,\n ElementProps<'div', 'onDrop'> {\n /** Key of `theme.colors` or any valid CSS color to set colors of `Dropzone.Accept`, `theme.primaryColor` by default */\n acceptColor?: MantineColor;\n\n /** Key of `theme.colors` or any valid CSS color to set colors of `Dropzone.Reject`, `'red'` by default */\n rejectColor?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem, `theme.defaultRadius` by default */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Determines whether files capturing should be disabled, `false` by default */\n disabled?: boolean;\n\n /** Called when any files are dropped to the dropzone */\n onDropAny?(files: FileWithPath[], fileRejections: FileRejection[]): void;\n\n /** Called when valid files are dropped to the dropzone */\n onDrop(files: FileWithPath[]): void;\n\n /** Called when dropped files do not meet file restrictions */\n onReject?(fileRejections: FileRejection[]): void;\n\n /** Determines whether a loading overlay should be displayed over the dropzone, `false` by default */\n loading?: boolean;\n\n /** Mime types of the files that dropzone can accepts. By default, dropzone accepts all file types. */\n accept?: Accept | string[];\n\n /** A ref function which when called opens the file system file picker */\n openRef?: React.ForwardedRef<() => void | undefined>;\n\n /** Determines whether multiple files can be dropped to the dropzone or selected from file system picker, `true` by default */\n multiple?: boolean;\n\n /** Maximum file size in bytes */\n maxSize?: number;\n\n /** Name of the form control. Submitted with the form as part of a name/value pair. */\n name?: string;\n\n /** Maximum number of files that can be picked at once */\n maxFiles?: number;\n\n /** Set to autofocus the root element */\n autoFocus?: boolean;\n\n /** If `false`, disables click to open the native file selection dialog */\n activateOnClick?: boolean;\n\n /** If `false`, disables drag 'n' drop */\n activateOnDrag?: boolean;\n\n /** If `false`, disables Space/Enter to open the native file selection dialog. Note that it also stops tracking the focus state. */\n activateOnKeyboard?: boolean;\n\n /** If `false`, stops drag event propagation to parents */\n dragEventsBubbling?: boolean;\n\n /** Called when the `dragenter` event occurs */\n onDragEnter?(event: React.DragEvent<HTMLElement>): void;\n\n /** Called when the `dragleave` event occurs */\n onDragLeave?(event: React.DragEvent<HTMLElement>): void;\n\n /** Called when the `dragover` event occurs */\n onDragOver?(event: React.DragEvent<HTMLElement>): void;\n\n /** Called when user closes the file selection dialog with no selection */\n onFileDialogCancel?(): void;\n\n /** Called when user opens the file selection dialog */\n onFileDialogOpen?(): void;\n\n /** If `false`, allow dropped items to take over the current browser window */\n preventDropOnDocument?: boolean;\n\n /** Set to true to use the File System Access API to open the file picker instead of using an <input type=\"file\"> click event, defaults to true */\n useFsAccessApi?: boolean;\n\n /** Use this to provide a custom file aggregator */\n getFilesFromEvent?: (event: DropEvent) => Promise<Array<File | DataTransferItem>>;\n\n /** Custom validation function. It must return null if there's no errors. */\n validator?: <T extends File>(file: T) => FileError | FileError[] | null;\n}\n\nexport type DropzoneFactory = Factory<{\n props: DropzoneProps;\n ref: HTMLDivElement;\n stylesNames: DropzoneStylesNames;\n vars: DropzoneCssVariables;\n staticComponents: {\n Accept: typeof DropzoneAccept;\n Idle: typeof DropzoneIdle;\n Reject: typeof DropzoneReject;\n FullScreen: DropzoneFullScreenType;\n };\n}>;\n\nconst defaultProps: Partial<DropzoneProps> = {\n loading: false,\n multiple: true,\n maxSize: Infinity,\n autoFocus: false,\n activateOnClick: true,\n activateOnDrag: true,\n dragEventsBubbling: true,\n activateOnKeyboard: true,\n useFsAccessApi: true,\n variant: 'light',\n rejectColor: 'red',\n};\n\nconst varsResolver = createVarsResolver<DropzoneFactory>(\n (theme, { radius, variant, acceptColor, rejectColor }) => {\n const acceptColors = theme.variantColorResolver({\n color: acceptColor || theme.primaryColor,\n theme,\n variant: variant!,\n });\n\n const rejectColors = theme.variantColorResolver({\n color: rejectColor || 'red',\n theme,\n variant: variant!,\n });\n\n return {\n root: {\n '--dropzone-radius': getRadius(radius),\n '--dropzone-accept-color': acceptColors.color,\n '--dropzone-accept-bg': acceptColors.background,\n '--dropzone-reject-color': rejectColors.color,\n '--dropzone-reject-bg': rejectColors.background,\n },\n };\n }\n);\n\nexport const Dropzone = factory<DropzoneFactory>((_props, ref) => {\n const props = useProps('Dropzone', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n radius,\n disabled,\n loading,\n multiple,\n maxSize,\n accept,\n children,\n onDropAny,\n onDrop,\n onReject,\n openRef,\n name,\n maxFiles,\n autoFocus,\n activateOnClick,\n activateOnDrag,\n dragEventsBubbling,\n activateOnKeyboard,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onFileDialogCancel,\n onFileDialogOpen,\n preventDropOnDocument,\n useFsAccessApi,\n getFilesFromEvent,\n validator,\n rejectColor,\n acceptColor,\n ...others\n } = props;\n\n const getStyles = useStyles<DropzoneFactory>({\n name: 'Dropzone',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n const { getRootProps, getInputProps, isDragAccept, isDragReject, open } = useDropzone({\n onDrop: onDropAny,\n onDropAccepted: onDrop,\n onDropRejected: onReject,\n disabled: disabled || loading,\n accept: Array.isArray(accept) ? accept.reduce((r, key) => ({ ...r, [key]: [] }), {}) : accept,\n multiple,\n maxSize,\n maxFiles,\n autoFocus,\n noClick: !activateOnClick,\n noDrag: !activateOnDrag,\n noDragEventsBubbling: !dragEventsBubbling,\n noKeyboard: !activateOnKeyboard,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onFileDialogCancel,\n onFileDialogOpen,\n preventDropOnDocument,\n useFsAccessApi,\n validator,\n ...(getFilesFromEvent ? { getFilesFromEvent } : null),\n });\n\n assignRef(openRef, open);\n\n const isIdle = !isDragAccept && !isDragReject;\n\n return (\n <DropzoneProvider value={{ accept: isDragAccept, reject: isDragReject, idle: isIdle }}>\n <Box\n {...others}\n {...getRootProps({ ref })}\n {...getStyles('root', { focusable: true })}\n mod={{\n accept: isDragAccept,\n reject: isDragReject,\n idle: isIdle,\n loading,\n 'activate-on-click': activateOnClick,\n }}\n >\n <LoadingOverlay visible={loading} overlayProps={{ radius }} unstyled={unstyled} />\n <input {...getInputProps()} name={name} />\n <div {...getStyles('inner')} data-disable-pointer-events={!activateOnClick || undefined}>\n {children}\n </div>\n </Box>\n </DropzoneProvider>\n );\n});\n\nDropzone.classes = classes;\nDropzone.displayName = '@mantine/dropzone/Dropzone';\nDropzone.Accept = DropzoneAccept;\nDropzone.Idle = DropzoneIdle;\nDropzone.Reject = DropzoneReject;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var classes = {"root":"m-d46a4834","inner":"m-b85f7144","fullScreen":"m-96f6e9ad","dropzone":"m-7946116d"};
2
+
3
+ export default classes;
4
+ //# sourceMappingURL=Dropzone.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropzone.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,8 +1,8 @@
1
1
  import React, { useEffect } from 'react';
2
- import { getDefaultZIndex, useComponentDefaultProps, OptionalPortal, Box } from '@mantine/core';
2
+ import { getDefaultZIndex, factory, useProps, useStyles, useResolvedStylesApi, OptionalPortal, Box } from '@mantine/core';
3
3
  import { useDisclosure } from '@mantine/hooks';
4
- import { _Dropzone } from './Dropzone.js';
5
- import useFullScreenStyles from './DropzoneFullScreen.styles.js';
4
+ import { Dropzone } from './Dropzone.js';
5
+ import classes from './Dropzone.module.css.js';
6
6
 
7
7
  var __defProp = Object.defineProperty;
8
8
  var __defProps = Object.defineProperties;
@@ -35,13 +35,10 @@ var __objRest = (source, exclude) => {
35
35
  }
36
36
  return target;
37
37
  };
38
- const fullScreenDefaultProps = {
39
- padding: "md",
38
+ const defaultProps = {
40
39
  loading: false,
41
- multiple: true,
42
40
  maxSize: Infinity,
43
- autoFocus: false,
44
- activateOnClick: true,
41
+ activateOnClick: false,
45
42
  activateOnDrag: true,
46
43
  dragEventsBubbling: true,
47
44
  activateOnKeyboard: true,
@@ -49,14 +46,15 @@ const fullScreenDefaultProps = {
49
46
  zIndex: getDefaultZIndex("max"),
50
47
  withinPortal: true
51
48
  };
52
- function DropzoneFullScreen(props) {
53
- const _a = useComponentDefaultProps("DropzoneFullScreen", fullScreenDefaultProps, props), {
49
+ const DropzoneFullScreen = factory((_props, ref) => {
50
+ const props = useProps("DropzoneFullScreen", defaultProps, _props);
51
+ const _a = props, {
54
52
  classNames,
55
- styles,
56
- sx,
57
53
  className,
58
54
  style,
55
+ styles,
59
56
  unstyled,
57
+ vars,
60
58
  active,
61
59
  onDrop,
62
60
  onReject,
@@ -65,11 +63,11 @@ function DropzoneFullScreen(props) {
65
63
  portalProps
66
64
  } = _a, others = __objRest(_a, [
67
65
  "classNames",
68
- "styles",
69
- "sx",
70
66
  "className",
71
67
  "style",
68
+ "styles",
72
69
  "unstyled",
70
+ "vars",
73
71
  "active",
74
72
  "onDrop",
75
73
  "onReject",
@@ -77,16 +75,27 @@ function DropzoneFullScreen(props) {
77
75
  "withinPortal",
78
76
  "portalProps"
79
77
  ]);
80
- const [counter, setCounter] = React.useState(0);
81
- const [visible, { open, close }] = useDisclosure(false);
82
- const { classes, cx } = useFullScreenStyles(null, {
78
+ const getStyles = useStyles({
83
79
  name: "DropzoneFullScreen",
80
+ classes,
81
+ props,
82
+ className,
83
+ style,
84
+ classNames,
85
+ styles,
86
+ unstyled,
87
+ rootSelector: "fullScreen"
88
+ });
89
+ const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({
84
90
  classNames,
85
91
  styles,
86
- unstyled
92
+ props
87
93
  });
94
+ const [counter, setCounter] = React.useState(0);
95
+ const [visible, { open, close }] = useDisclosure(false);
88
96
  const handleDragEnter = (event) => {
89
- if (event.dataTransfer.types.includes("Files")) {
97
+ var _a2;
98
+ if ((_a2 = event.dataTransfer) == null ? void 0 : _a2.types.includes("Files")) {
90
99
  setCounter((prev) => prev + 1);
91
100
  open();
92
101
  }
@@ -107,31 +116,33 @@ function DropzoneFullScreen(props) {
107
116
  document.removeEventListener("dragleave", handleDragLeave, false);
108
117
  };
109
118
  }, [active]);
110
- return /* @__PURE__ */ React.createElement(OptionalPortal, __spreadProps(__spreadValues({}, portalProps), {
111
- withinPortal
112
- }), /* @__PURE__ */ React.createElement(Box, {
113
- className: cx(classes.wrapper, className),
114
- sx,
115
- style: __spreadProps(__spreadValues({}, style), {
116
- opacity: visible ? 1 : 0,
117
- pointerEvents: visible ? "all" : "none",
118
- zIndex
119
- })
120
- }, /* @__PURE__ */ React.createElement(_Dropzone, __spreadProps(__spreadValues({}, others), {
121
- classNames,
122
- styles,
123
- unstyled,
124
- className: classes.dropzone,
125
- onDrop: (files) => {
126
- onDrop == null ? void 0 : onDrop(files);
127
- close();
128
- },
129
- onReject: (files) => {
130
- onReject == null ? void 0 : onReject(files);
131
- close();
132
- }
133
- }))));
134
- }
119
+ return /* @__PURE__ */ React.createElement(OptionalPortal, __spreadProps(__spreadValues({}, portalProps), { withinPortal }), /* @__PURE__ */ React.createElement(
120
+ Box,
121
+ __spreadProps(__spreadValues({}, getStyles("fullScreen", {
122
+ style: { opacity: visible ? 1 : 0, pointerEvents: visible ? "all" : "none", zIndex }
123
+ })), {
124
+ ref
125
+ }),
126
+ /* @__PURE__ */ React.createElement(
127
+ Dropzone,
128
+ __spreadProps(__spreadValues({}, others), {
129
+ classNames: resolvedClassNames,
130
+ styles: resolvedStyles,
131
+ unstyled,
132
+ className: classes.dropzone,
133
+ onDrop: (files) => {
134
+ onDrop == null ? void 0 : onDrop(files);
135
+ close();
136
+ },
137
+ onReject: (files) => {
138
+ onReject == null ? void 0 : onReject(files);
139
+ close();
140
+ }
141
+ })
142
+ )
143
+ ));
144
+ });
145
+ DropzoneFullScreen.classes = classes;
135
146
  DropzoneFullScreen.displayName = "@mantine/dropzone/DropzoneFullScreen";
136
147
 
137
148
  export { DropzoneFullScreen };
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneFullScreen.js","sources":["../src/DropzoneFullScreen.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport {\n Box,\n useComponentDefaultProps,\n OptionalPortal,\n DefaultProps,\n Selectors,\n getDefaultZIndex,\n PortalProps,\n} from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { DropzoneStylesNames, DropzoneProps, _Dropzone } from './Dropzone';\nimport useFullScreenStyles from './DropzoneFullScreen.styles';\n\nexport type DropzoneFullScreenStylesName =\n | DropzoneStylesNames\n | Exclude<Selectors<typeof useFullScreenStyles>, 'dropzone'>;\n\nexport interface DropzoneFullScreenProps\n extends Omit<DropzoneProps, 'styles' | 'classNames'>,\n DefaultProps<DropzoneFullScreenStylesName> {\n /** Determines whether user can drop files to browser window, true by default */\n active?: boolean;\n\n /** z-index value, 9999 by default */\n zIndex?: React.CSSProperties['zIndex'];\n\n /** Determines whether component should be rendered within Portal, true by default */\n withinPortal?: boolean;\n\n /** Props to pass down to the portal when withinPortal is true */\n portalProps?: Omit<PortalProps, 'children' | 'withinPortal'>;\n}\n\nconst fullScreenDefaultProps: Partial<DropzoneFullScreenProps> = {\n padding: 'md',\n loading: false,\n multiple: true,\n maxSize: Infinity,\n autoFocus: false,\n activateOnClick: true,\n activateOnDrag: true,\n dragEventsBubbling: true,\n activateOnKeyboard: true,\n active: true,\n zIndex: getDefaultZIndex('max'),\n withinPortal: true,\n};\n\nexport function DropzoneFullScreen(props: DropzoneFullScreenProps) {\n const {\n classNames,\n styles,\n sx,\n className,\n style,\n unstyled,\n active,\n onDrop,\n onReject,\n zIndex,\n withinPortal,\n portalProps,\n ...others\n } = useComponentDefaultProps('DropzoneFullScreen', fullScreenDefaultProps, props);\n\n const [counter, setCounter] = React.useState(0);\n const [visible, { open, close }] = useDisclosure(false);\n const { classes, cx } = useFullScreenStyles(null, {\n name: 'DropzoneFullScreen',\n classNames,\n styles,\n unstyled,\n });\n\n const handleDragEnter = (event: DragEvent) => {\n if (event.dataTransfer.types.includes('Files')) {\n setCounter((prev) => prev + 1);\n open();\n }\n };\n\n const handleDragLeave = () => {\n setCounter((prev) => prev - 1);\n };\n\n useEffect(() => {\n counter === 0 && close();\n }, [counter]);\n\n useEffect(() => {\n if (!active) return undefined;\n\n document.addEventListener('dragenter', handleDragEnter, false);\n document.addEventListener('dragleave', handleDragLeave, false);\n\n return () => {\n document.removeEventListener('dragenter', handleDragEnter, false);\n document.removeEventListener('dragleave', handleDragLeave, false);\n };\n }, [active]);\n\n return (\n <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n <Box\n className={cx(classes.wrapper, className)}\n sx={sx}\n style={{\n ...style,\n opacity: visible ? 1 : 0,\n pointerEvents: visible ? 'all' : 'none',\n zIndex,\n }}\n >\n <_Dropzone\n {...others}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n className={classes.dropzone}\n onDrop={(files: any) => {\n onDrop?.(files);\n close();\n }}\n onReject={(files: any) => {\n onReject?.(files);\n close();\n }}\n />\n </Box>\n </OptionalPortal>\n );\n}\n\nDropzoneFullScreen.displayName = '@mantine/dropzone/DropzoneFullScreen';\n\nexport type DropzoneFullScreenType = typeof DropzoneFullScreen;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropzoneFullScreen.js","sources":["../src/DropzoneFullScreen.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport {\n Box,\n BoxProps,\n StylesApiProps,\n factory,\n ElementProps,\n useProps,\n useStyles,\n Factory,\n PortalProps,\n OptionalPortal,\n useResolvedStylesApi,\n getDefaultZIndex,\n} from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { Dropzone, DropzoneProps, DropzoneVariant, DropzoneStylesNames } from './Dropzone';\nimport classes from './Dropzone.module.css';\n\nexport type DropzoneFullScreenStylesNames = DropzoneStylesNames | 'fullScreen';\n\nexport interface DropzoneFullScreenProps\n extends BoxProps,\n Omit<DropzoneProps, 'styles' | 'classNames' | 'vars' | 'variant'>,\n StylesApiProps<DropzoneFullScreenFactory>,\n ElementProps<'div', 'onDragLeave' | 'onDragOver' | 'onDrop' | 'onDragEnter'> {\n /** Determines whether user can drop files to browser window, true by default */\n active?: boolean;\n\n /** z-index value, 9999 by default */\n zIndex?: React.CSSProperties['zIndex'];\n\n /** Determines whether component should be rendered within Portal, true by default */\n withinPortal?: boolean;\n\n /** Props to pass down to the portal when withinPortal is true */\n portalProps?: Omit<PortalProps, 'children' | 'withinPortal'>;\n}\n\nexport type DropzoneFullScreenFactory = Factory<{\n props: DropzoneFullScreenProps;\n ref: HTMLDivElement;\n stylesNames: DropzoneFullScreenStylesNames;\n variant: DropzoneVariant;\n}>;\n\nconst defaultProps: Partial<DropzoneFullScreenProps> = {\n loading: false,\n maxSize: Infinity,\n activateOnClick: false,\n activateOnDrag: true,\n dragEventsBubbling: true,\n activateOnKeyboard: true,\n active: true,\n zIndex: getDefaultZIndex('max'),\n withinPortal: true,\n};\n\nexport const DropzoneFullScreen = factory<DropzoneFullScreenFactory>((_props, ref) => {\n const props = useProps('DropzoneFullScreen', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n active,\n onDrop,\n onReject,\n zIndex,\n withinPortal,\n portalProps,\n ...others\n } = props;\n\n const getStyles = useStyles<DropzoneFullScreenFactory>({\n name: 'DropzoneFullScreen',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n rootSelector: 'fullScreen',\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DropzoneFullScreenFactory>({\n classNames,\n styles,\n props,\n });\n\n const [counter, setCounter] = React.useState(0);\n const [visible, { open, close }] = useDisclosure(false);\n\n const handleDragEnter = (event: DragEvent) => {\n if (event.dataTransfer?.types.includes('Files')) {\n setCounter((prev) => prev + 1);\n open();\n }\n };\n\n const handleDragLeave = () => {\n setCounter((prev) => prev - 1);\n };\n\n useEffect(() => {\n counter === 0 && close();\n }, [counter]);\n\n useEffect(() => {\n if (!active) return undefined;\n\n document.addEventListener('dragenter', handleDragEnter, false);\n document.addEventListener('dragleave', handleDragLeave, false);\n\n return () => {\n document.removeEventListener('dragenter', handleDragEnter, false);\n document.removeEventListener('dragleave', handleDragLeave, false);\n };\n }, [active]);\n\n return (\n <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n <Box\n {...getStyles('fullScreen', {\n style: { opacity: visible ? 1 : 0, pointerEvents: visible ? 'all' : 'none', zIndex },\n })}\n ref={ref}\n >\n <Dropzone\n {...others}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n className={classes.dropzone}\n onDrop={(files: any) => {\n onDrop?.(files);\n close();\n }}\n onReject={(files: any) => {\n onReject?.(files);\n close();\n }}\n />\n </Box>\n </OptionalPortal>\n );\n});\n\nDropzoneFullScreen.classes = classes;\nDropzoneFullScreen.displayName = '@mantine/dropzone/DropzoneFullScreen';\n\nexport type DropzoneFullScreenType = typeof DropzoneFullScreen;\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import React, { cloneElement } from 'react';
2
2
  import { upperFirst } from '@mantine/hooks';
3
- import { isElement } from '@mantine/utils';
4
- import { useComponentDefaultProps } from '@mantine/core';
3
+ import { useProps, isElement } from '@mantine/core';
5
4
  import { useDropzoneContext } from './Dropzone.context.js';
6
5
 
7
6
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -21,7 +20,7 @@ var __objRest = (source, exclude) => {
21
20
  };
22
21
  function createDropzoneStatus(status) {
23
22
  const Component = (props) => {
24
- const _a = useComponentDefaultProps(`Dropzone${upperFirst(status)}`, {}, props), { children } = _a, others = __objRest(_a, ["children"]);
23
+ const _a = useProps(`Dropzone${upperFirst(status)}`, {}, props), { children } = _a, others = __objRest(_a, ["children"]);
25
24
  const ctx = useDropzoneContext();
26
25
  const _children = isElement(children) ? children : /* @__PURE__ */ React.createElement("span", null, children);
27
26
  if (ctx[status]) {
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneStatus.js","sources":["../src/DropzoneStatus.tsx"],"sourcesContent":["import React, { cloneElement } from 'react';\nimport { upperFirst } from '@mantine/hooks';\nimport { isElement } from '@mantine/utils';\nimport { useComponentDefaultProps } from '@mantine/core';\nimport { DropzoneContextValue, useDropzoneContext } from './Dropzone.context';\n\nexport interface DropzoneStatusProps {\n // eslint-disable-next-line react/no-unused-prop-types\n children: React.ReactNode;\n}\n\nfunction createDropzoneStatus(status: keyof DropzoneContextValue) {\n const Component = (props: DropzoneStatusProps): JSX.Element => {\n const { children, ...others } = useComponentDefaultProps(\n `Dropzone${upperFirst(status)}`,\n {},\n props\n );\n\n const ctx = useDropzoneContext();\n const _children = isElement(children) ? children : <span>{children}</span>;\n\n if (ctx[status]) {\n return cloneElement(_children, 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"],"names":[],"mappings":";;;;;;AAAA,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAI,mBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAMF,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK;AAC/B,IAAI,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7I,IAAI,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;AACrC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,mBAAmB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnH,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE;AACrB,MAAM,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,SAAS,CAAC,WAAW,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;AACW,MAAC,cAAc,GAAG,oBAAoB,CAAC,QAAQ,EAAE;AACjD,MAAC,cAAc,GAAG,oBAAoB,CAAC,QAAQ,EAAE;AACjD,MAAC,YAAY,GAAG,oBAAoB,CAAC,MAAM;;;;"}
1
+ {"version":3,"file":"DropzoneStatus.js","sources":["../src/DropzoneStatus.tsx"],"sourcesContent":["import React, { cloneElement } from 'react';\nimport { upperFirst } from '@mantine/hooks';\nimport { isElement, useProps } from '@mantine/core';\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 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"],"names":[],"mappings":";;;;;AAAA,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAI,mBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAKF,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK;AAC/B,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7H,IAAI,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;AACrC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,mBAAmB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnH,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE;AACrB,MAAM,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,SAAS,CAAC,WAAW,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;AACW,MAAC,cAAc,GAAG,oBAAoB,CAAC,QAAQ,EAAE;AACjD,MAAC,cAAc,GAAG,oBAAoB,CAAC,QAAQ,EAAE;AACjD,MAAC,YAAY,GAAG,oBAAoB,CAAC,MAAM;;;;"}
package/esm/index.css ADDED
@@ -0,0 +1,83 @@
1
+ .m-d46a4834 {
2
+ position: relative;
3
+ background-color: var(--_dropzone-bg);
4
+ border: calc(0.0625rem * var(--mantine-scale)) dashed var(--_dropzone-border-color);
5
+ color: var(--_dropzone-color, var(--mantine-color-text));
6
+ padding: var(--mantine-spacing-md);
7
+ border-radius: var(--dropzone-radius);
8
+ cursor: var(--_dropzone-cursor, pointer);
9
+ user-select: none;
10
+ transition:
11
+ background-color 100ms ease,
12
+ border-color 100ms ease;
13
+ }
14
+
15
+ .m-d46a4834[data-loading],
16
+ .m-d46a4834:not([data-activate-on-click]) {
17
+ --_dropzone-cursor: default;
18
+ }
19
+
20
+ [data-mantine-color-scheme='light'] .m-d46a4834 {
21
+ --_dropzone-bg: var(--mantine-color-white);
22
+ --_dropzone-border-color: var(--mantine-color-gray-4);
23
+ }
24
+
25
+ [data-mantine-color-scheme='dark'] .m-d46a4834 {
26
+ --_dropzone-bg: var(--mantine-color-dark-6);
27
+ --_dropzone-border-color: var(--mantine-color-dark-4);
28
+ }
29
+
30
+ @media (hover: hover) {
31
+ [data-mantine-color-scheme='light'] .m-d46a4834:hover[data-activate-on-click]:not([data-loading]) {
32
+ --_dropzone-bg: var(--mantine-color-gray-0);
33
+ }
34
+
35
+ [data-mantine-color-scheme='dark'] .m-d46a4834:hover[data-activate-on-click]:not([data-loading]) {
36
+ --_dropzone-bg: var(--mantine-color-dark-5);
37
+ }
38
+ }
39
+
40
+ @media (hover: none) {
41
+ [data-mantine-color-scheme='light'] .m-d46a4834:active[data-activate-on-click]:not([data-loading]) {
42
+ --_dropzone-bg: var(--mantine-color-gray-0);
43
+ }
44
+
45
+ [data-mantine-color-scheme='dark'] .m-d46a4834:active[data-activate-on-click]:not([data-loading]) {
46
+ --_dropzone-bg: var(--mantine-color-dark-5);
47
+ }
48
+ }
49
+
50
+ .m-d46a4834[data-accept] {
51
+ --_dropzone-bg: var(--dropzone-accept-bg);
52
+ --_dropzone-border-color: var(--dropzone-accept-bg);
53
+ --_dropzone-color: var(--dropzone-accept-color);
54
+ }
55
+
56
+ .m-d46a4834[data-reject] {
57
+ --_dropzone-bg: var(--dropzone-reject-bg);
58
+ --_dropzone-border-color: var(--dropzone-reject-bg);
59
+ --_dropzone-color: var(--dropzone-reject-color);
60
+ }
61
+
62
+ .m-b85f7144 {
63
+ pointer-events: var(--_dropzone-inner-pointer-events, all);
64
+ user-select: none;
65
+ }
66
+
67
+ .m-b85f7144[data-disable-pointer-events] {
68
+ --_dropzone-inner-pointer-events: none;
69
+ }
70
+
71
+ .m-96f6e9ad {
72
+ position: fixed;
73
+ inset: 0;
74
+ background-color: var(--mantine-color-body);
75
+ display: flex;
76
+ flex-direction: column;
77
+ padding: var(--mantine-spacing-xs);
78
+ transition: opacity 100ms ease;
79
+ }
80
+
81
+ .m-96f6e9ad .m-7946116d {
82
+ flex: 1 1;
83
+ }