import React from "react" import {TbResize} from 'react-icons/tb' import {BiCube} from 'react-icons/bi' import {BsTrash} from 'react-icons/bs' import {CgLayoutGridSmall} from 'react-icons/cg' import '../../css/counter.css' export default class CustomNodeIframe extends React.Component { constructor({id , data}){ super() this.myRef = React.createRef() this.id = id this.state = { reachable : this.handelFetch, selected : true, data : data, width : 600, height : 540, size : false } } handelSelected = () => { this.setState({reachable : this.state.reachable, selected : !this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size}) } handelFetch = () => { fetch(this.state.data.host, {mode: 'no-cors'}).then((re) => { this.setState({reachable : true, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size}) }).catch(()=>{ this.setState({reachable : false, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size}) }) } handelSizeState = () => { this.setState({reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : !this.state.size}) } onNodeClick = (id) => { this.state.data.delete(id) } handelOnChange(evt, type){ this.setState({reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : type === "width" ? parseInt(evt.target.value) : this.state.width, height : type === "height" ? parseInt(evt.target.value) : this.state.height, size : this.state.size}) type === "width" ? this.myRef.current.style.width = `${parseInt(evt.target.value)}px` : this.myRef.current.style.height = `${parseInt(evt.target.value)}px` } handelSize(evt, increment, change){ console.log(evt,increment) if (evt === "Enter"){ this.setState({reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : change === "width" ? increment : this.state.width, height : change === "height" ? increment : this.state.height, size : this.state.size}) change === "width" ? this.myRef.current.style.width = `${increment}px` : this.myRef.current.style.height = `${increment}px` } else if (evt === "increment") { this.setState({reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : change === "width" ? this.state.width + increment : this.state.width, height : change === "height" ? this.state.height + increment : this.state.height, size : this.state.size}) change === "width" ? this.myRef.current.style.width = `${parseInt(this.state.width) + increment}px` : this.myRef.current.style.height = `${parseInt(this.state.height) + increment}px` } } Counter(focus, count){ return (
this.handelOnChange(e, focus)} onKeyDown={(e) => {this.handelSize(e.key, count, focus)}}>
) } render(){ return (<> { this.state.reachable && <>
this.onNodeClick(this.id)}>
{ this.state.size &&
{this.Counter("width", this.state.width)} {this.Counter("height", this.state.height)}
}
} ) } }