@wix/design-system
Version:
@wix/design-system
42 lines • 1.39 kB
JavaScript
import React from 'react';
import TouchBackend from './TouchBackend';
import { DndProvider, createDndContext } from 'react-dnd';
let defaultManager;
function getDefaultManager(backend, options = {}) {
if (!defaultManager) {
defaultManager = createDndContext(backend, {}, {
enableMouseEvents: true,
...options,
}).dragDropManager;
}
return defaultManager;
}
// https://github.com/react-dnd/react-dnd/issues/186#issuecomment-110333064
class DragDropContextProvider extends React.Component {
// we add `manager` to instance to allow to manipulate d&d in tests
getManager() {
return (this.context.dragDropManager ||
getDefaultManager(this.props.backend, this.props.backendOptions));
}
getChildContext() {
return {
dragDropManager: this.getManager(),
};
}
render() {
const { backend, children } = this.props;
return (React.createElement(DndProvider, { manager: this.getManager(backend) }, children));
}
}
DragDropContextProvider.defaultProps = {
backend: TouchBackend,
backendOptions: {},
};
DragDropContextProvider.contextTypes = {
dragDropManager: () => null,
};
DragDropContextProvider.childContextTypes = {
dragDropManager: () => null,
};
export default DragDropContextProvider;
//# sourceMappingURL=DragDropContextProvider.js.map