@@ -12,82 +12,32 @@ import { upload, Icon } from '@wordpress/icons';
1212import { getFilesFromDataTransfer } from '@wordpress/dom' ;
1313import {
1414 __experimentalUseDropZone as useDropZone ,
15- useReducedMotion ,
15+ // useReducedMotion,
1616} from '@wordpress/compose' ;
1717
1818/**
1919 * Internal dependencies
2020 */
21- import {
22- __unstableMotion as motion ,
23- __unstableAnimatePresence as AnimatePresence ,
24- } from '../animation' ;
2521import type { DropType , DropZoneProps } from './types' ;
2622import type { WordPressComponentProps } from '../context' ;
2723
28- const backdrop = {
29- hidden : { opacity : 0 } ,
30- show : {
31- opacity : 1 ,
32- transition : {
33- type : 'tween' ,
34- duration : 0.2 ,
35- delay : 0 ,
36- delayChildren : 0.1 ,
37- } ,
38- } ,
39- exit : {
40- opacity : 0 ,
41- transition : {
42- duration : 0.2 ,
43- delayChildren : 0 ,
44- } ,
45- } ,
46- } ;
47-
48- const foreground = {
49- hidden : { opacity : 0 , scale : 0.9 } ,
50- show : {
51- opacity : 1 ,
52- scale : 1 ,
53- transition : {
54- duration : 0.1 ,
55- } ,
56- } ,
57- exit : { opacity : 0 , scale : 0.9 } ,
58- } ;
59-
6024function DropIndicator ( { label } : { label ?: string } ) {
61- const disableMotion = useReducedMotion ( ) ;
62- const children = (
63- < motion . div
64- variants = { backdrop }
65- initial = { disableMotion ? 'show' : 'hidden' }
66- animate = "show"
67- exit = { disableMotion ? 'show' : 'exit' }
25+ return (
26+ < div
6827 className = "components-drop-zone__content"
69- // Without this, when this div is shown,
70- // Safari calls a onDropZoneLeave causing a loop because of this bug
71- // https://bugs.webkit.org/show_bug.cgi?id=66547
7228 style = { { pointerEvents : 'none' } }
7329 >
74- < motion . div variants = { foreground } >
30+ < div className = "components-drop-zone__content-inner" >
7531 < Icon
7632 icon = { upload }
7733 className = "components-drop-zone__content-icon"
7834 />
7935 < span className = "components-drop-zone__content-text" >
8036 { label ? label : __ ( 'Drop files to upload' ) }
8137 </ span >
82- </ motion . div >
83- </ motion . div >
38+ </ div >
39+ </ div >
8440 ) ;
85-
86- if ( disableMotion ) {
87- return children ;
88- }
89-
90- return < AnimatePresence > { children } </ AnimatePresence > ;
9141}
9242
9343/**
@@ -98,15 +48,15 @@ function DropIndicator( { label }: { label?: string } ) {
9848 * import { useState } from '@wordpress/element';
9949 *
10050 * const MyDropZone = () => {
101- * const [ hasDropped, setHasDropped ] = useState( false );
51+ * const [hasDropped, setHasDropped] = useState(false);
10252 *
10353 * return (
10454 * <div>
105- * { hasDropped ? 'Dropped!' : 'Drop something here' }
55+ * {hasDropped ? 'Dropped!' : 'Drop something here'}
10656 * <DropZone
107- * onFilesDrop={ () => setHasDropped( true ) }
108- * onHTMLDrop={ () => setHasDropped( true ) }
109- * onDrop={ () => setHasDropped( true ) }
57+ * onFilesDrop={() => setHasDropped(true) }
58+ * onHTMLDrop={() => setHasDropped(true) }
59+ * onDrop={() => setHasDropped(true) }
11060 * />
11161 * </div>
11262 * );
@@ -126,6 +76,7 @@ export function DropZoneComponent( {
12676 const [ isDraggingOverElement , setIsDraggingOverElement ] =
12777 useState < boolean > ( ) ;
12878 const [ type , setType ] = useState < DropType > ( ) ;
79+ //const disableMotion = true;
12980 const ref = useDropZone ( {
13081 onDrop ( event ) {
13182 const files = event . dataTransfer
@@ -181,9 +132,10 @@ export function DropZoneComponent( {
181132 setIsDraggingOverElement ( false ) ;
182133 } ,
183134 } ) ;
135+ const isDraggingOver = isDraggingOverDocument || isDraggingOverElement ;
184136 const classes = clsx ( 'components-drop-zone' , className , {
185137 'is-active' :
186- ( isDraggingOverDocument || isDraggingOverElement ) &&
138+ isDraggingOver &&
187139 ( ( type === 'file' && onFilesDrop ) ||
188140 ( type === 'html' && onHTMLDrop ) ||
189141 ( type === 'default' && onDrop ) ) ,
0 commit comments