UNPKG

@figlinq/react-chart-editor

Version:
2 lines 2.9 kB
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}import*as React from"react";import PropTypes from"prop-types";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";class ModalProvider extends React.Component{constructor(props){super(props);this.state={component:null,componentProps:{},open:false,isAnimatingOut:false}}componentDidUpdate(){const body=document.body;const{open}=this.state;const hasClass=body.classList.contains("no-scroll");if(open&&!hasClass){body.classList.add("no-scroll")}if(!open&&hasClass){body.classList.remove("no-scroll")}}openModal(component,componentProps){const{localize:_}=this.context;if(!component){throw Error(_("You need to provide a component for the modal to open!"))}const{open}=this.state;if(!open){this.setState({component:component,componentProps:componentProps,open:true})}}closeModal(){const{open}=this.state;if(open){this.setState({open:false,component:null})}}handleClose(){this.setState({isAnimatingOut:true});const animationDuration=600;setTimeout(()=>{this.setState({isAnimatingOut:false});this.closeModal()},animationDuration)}getChildContext(){return{openModal:(c,p)=>this.openModal(c,p),closeModal:()=>this.closeModal(),handleClose:()=>this.handleClose(),isAnimatingOut:this.state.isAnimatingOut}}render(){const{component:Component,componentProps,isAnimatingOut}=this.state;return _jsxs(_Fragment,{children:[this.props.children,this.state.open?_jsx(Component,_objectSpread({isAnimatingOut:isAnimatingOut},componentProps)):null]})}}ModalProvider.propTypes={children:PropTypes.node};ModalProvider.contextTypes={localize:PropTypes.func};ModalProvider.childContextTypes={openModal:PropTypes.func,closeModal:PropTypes.func,handleClose:PropTypes.func,isAnimatingOut:PropTypes.bool};export default ModalProvider; //# sourceMappingURL=ModalProvider.js.map