import React from "react" import {TbResize} from 'react-icons/tb' import {BiCube, BiRefresh} from 'react-icons/bi' import {BsTrash, BsArrowDownRightSquare} from 'react-icons/bs' import {CgLayoutGridSmall} from 'react-icons/cg' import '../../css/counter.css' const MINIMUM_HEIGHT = 600; const MINIMUM_WIDTH = 540; export default class CustomNodeIframe extends React.Component { constructor({id , data}){ super() this.myRef = React.createRef() this.original_width = 0; this.original_height = 0; this.original_x = 0; this.original_y = 0; this.original_mouse_x = 0; this.original_mouse_y = 0; this.state = { id : id, reachable : this.isFetchable(data.host), selected : true, data : data, width : 540, height : 600, size : true, iframe : 0, } } handelSelected = () => { this.setState({id : this.state.id, reachable : this.state.reachable, selected : !this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe}) } handelSizeState = () => { this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : !this.state.size, iframe : this.state.iframe}) } isFetchable = async (host) => { fetch(host, {mode: 'no-cors'}).then((re) => { return true }).catch((err)=>{ return false }) return false } onNodeClick = (id) => { this.state.data.delete(id) } onRefresh(){ if(!this.isFetchable(this.state.data.host)){ this.onNodeClick(this.state.id) } else{ this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe + 1}) } } handelOnChange(evt, type){ this.setState({id : this.state.id, 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, iframe : this.state.iframe }) 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){ if (evt === "increment") { this.setState({id : this.state.id, 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, iframe : this.state.iframe }) change === "width" ? this.myRef.current.style.width = `${this.state.width + increment}px` : this.myRef.current.style.height = `${this.state.height + increment}px` } } //resize nodes by dragging initial = (e) => { this.original_width = this.myRef.current.offsetWidth this.original_height = this.myRef.current.offsetHeight this.original_x = this.myRef.current.getBoundingClientRect().left; this.original_y = this.myRef.current.getBoundingClientRect().top; this.original_mouse_x = e.clientX this.original_mouse_y = e.clientY } resize = (e, point) => { var height = 0; var width = 0; // e.dataTransfer.setDragImage(new Image(), 0, 0) if (point === 'bottom-right'){ width = this.original_width + (e.clientX - this.original_mouse_x); height = this.original_height + (e.clientY - this.original_mouse_y) if (width > MINIMUM_WIDTH) { this.myRef.current.style.width = `${width}px` this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : parseInt(width) , height : parseInt(height), size : this.state.size, iframe : this.state.iframe}) } if (height > MINIMUM_HEIGHT) { this.myRef.current.style.height = `${height}px` this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : parseInt(width) , height : parseInt(height), size : this.state.size, iframe : this.state.iframe}) } } } OnDragEnd = () => { console.log("end") this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : parseInt(this.myRef.current.style.width), height : parseInt(this.myRef.current.style.height), size : this.state.size, iframe : this.state.iframe}) } Counter(focus, size){ return (