UNPKG

@wix/design-system

Version:

@wix/design-system

48 lines 1.57 kB
import React from 'react'; import PropTypes from 'prop-types'; 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.propTypes = { children: PropTypes.node, backend: PropTypes.func, backendOptions: PropTypes.object, }; DragDropContextProvider.defaultProps = { backend: TouchBackend, backendOptions: {}, }; DragDropContextProvider.contextTypes = { dragDropManager: PropTypes.object, }; DragDropContextProvider.childContextTypes = { dragDropManager: PropTypes.object, }; export default DragDropContextProvider; //# sourceMappingURL=DragDropContextProvider.js.map