zack commited on
Commit
030e997
·
1 Parent(s): a96854e

chore: remove src/components/Modal/importer.js 🧹

Browse files
frontend/src/components/Modal/importer.js DELETED
@@ -1,198 +0,0 @@
1
- import { Modal, Icon, Message} from 'semantic-ui-react'
2
- import "../../css/dist/output.css"
3
- import {ReactComponent as Gradio} from '../../images/gradio.svg'
4
- import {ReactComponent as Streamlit} from '../../images/streamlit.svg'
5
- import {ReactComponent as Exit} from '../../images/exit.svg'
6
- import { useState } from 'react'
7
- import {BsSearch} from 'react-icons/bs';
8
-
9
- export default function Import(props){
10
- const [tab, setTab] = useState("gradio")
11
- const [subTab, setSubTab] = useState(0)
12
-
13
- return (<div>
14
- <Modal
15
- basic
16
- className=''
17
- open={props.open}
18
- size='fullscreen'
19
- >
20
- <div className='w-full shadow-lg rounded-lg'>
21
- <ul className="flex flex-wrap text-sm font-medium text-center text-gray-500 bg-gray-100 rounded-t-lg border-gray-200 dark:border-gray-700 dark:text-gray-400 dark:bg-gray-800" id="defaultTab" data-tabs-toggle="#defaultTabContent" role="tablist">
22
- <li className="" onClick={()=>{
23
- setTab("gradio")
24
- props.catch ? props.handelError(false) : props.handelError(props.catch) }}>
25
- <button id="gradio-tab" data-tabs-target="#Gradio" type="button" role="tab" aria-controls="gradio" aria-selected={tab === "gradio" ? "true" : "false"} className={`inline-block p-4 rounded-tl-lg ${ tab === "gradio" ? 'bg-gray-200' : 'hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 focus:bg-gray-700'}`}><Gradio className=" w-20 h-10"/></button>
26
- </li>
27
- <li className="" onClick={()=>{
28
- setTab("streamlit")
29
- props.catch ? props.handelError(false) : props.handelError(props.catch) }}>
30
- <button id="services-tab" data-tabs-target="#Streamlit" type="button" role="tab" aria-controls="services" aria-selected="false" className={`inline-block p-4 rounded-tl-lg ${ tab === "streamlit" ? 'bg-gray-200' : 'hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 focus:bg-gray-700'}`}><Streamlit className=" w-20 h-10"/></button>
31
- </li>
32
- </ul>
33
- <div className='absolute right-5 top-5 z-20 mr-5'
34
- onClick={()=>{
35
- props.quitHandeler(false)
36
- props.catch ? props.handelError(false) : props.handelError(props.catch) }}>
37
- <button type="button"
38
- className=" bg-neutral-300 rounded-2xl p-2 inline-flex items-center justify-center dark:bg-neutral-700 hover:opacity-70 focus:outline-none">
39
- <Exit className=" w-[20px] h-[20px] text-gray-400 dark:text-white"/>
40
- </button>
41
- </div>
42
- </div>
43
- { tab === "gradio" &&
44
- <div className='w-full bg-white'>
45
- <ul className="flex flex-wrap text-sm font-medium text-center text-gray-500 bg-gray-200 border-gray-200 dark:border-gray-700 dark:text-gray-400 dark:bg-gray-800" id="defaultTab" data-tabs-toggle="#defaultTabContent" role="tablist">
46
- <li className="" onClick={()=>{
47
- setSubTab(0)
48
- props.catch ? props.handelError(false) : props.handelError(props.catch) }}>
49
- <button id="local-sub-tab" data-tabs-target="#local" type="button" role="tab" aria-controls="local-gradio" aria-selected={tab === "gradio" ? "true" : "false"} className={`inline-block p-4 px-6 text-base font-sans font-bold ${subTab === 0 ? 'bg-gray-300' : '' } hover:bg-gray-300 `}>Local</button>
50
- </li>
51
- <li className="" onClick={()=>{
52
- setSubTab(1)
53
- props.catch ? props.handelError(false) : props.handelError(props.catch) }}>
54
- <button id="shared-sub-tab" data-tabs-target="#Gradio" type="button" role="tab" aria-controls="shared-gradio" aria-selected={tab === "gradio" ? "true" : "false"} className={`inline-block p-4 px-6 text-base font-sans font-bold ${subTab === 1 ? 'bg-gray-300' : '' } hover:bg-gray-300 `}>Shared</button>
55
- </li>
56
- </ul>
57
- {subTab === 0 && <Local/>}
58
- {subTab === 1 && <Shared type="gradio" textHandler={props.textHandler} appendHandler={props.appendHandler} handelError={props.handelError} catch={props.catch}/>}
59
-
60
- {props.catch && <div className='p-5'>
61
- <Message floating negative>
62
- <Message.Header className=" text-lg text-center">🚫 Something went wrong...</Message.Header>
63
- <br/>
64
- <h1 className=" underline pb-3 font-bold text-lg">🤔 Possible Things That could of happen <br/></h1>
65
- <ul className="font-bold">
66
- <li key={"error_1"}>- The input was empty</li>
67
- <li key={"error_2"}>- The connection was forbidden</li>
68
- <li key={"error_3"}>- The name was already taken</li>
69
- <li key={"error_4"}>- The link you gave did not pass the regex</li>
70
- <ul className="px-6">
71
- <li key={"error_5"}>- http://localhost:xxxx</li>
72
- <li key={"error_6"}>- http://xxxxx.gradio.app</li>
73
- <li key={"error_7"}>- https://hf.space/embed/$user/$space_name/+</li>
74
- </ul>
75
- <li>- link already exist within the menu</li>
76
- </ul>
77
-
78
- </Message>
79
- </div>}
80
- </div>
81
- }
82
- { tab === "streamlit" &&
83
- <div className='w-full bg-white'>
84
- <Shared type="streamlit" textHandler={props.textHandler} appendHandler={props.appendHandler} handelError={props.handelError} catch={props.catch}/>
85
- </div>
86
- }
87
-
88
- </Modal>
89
- </div>)
90
- }
91
-
92
- function Local(props){
93
- return (
94
- <div className='p-5'>
95
- <Message floating>
96
-
97
- <Message.Header>🏗️ Comming soon...</Message.Header>
98
- <Message.Content className='p-5'>
99
- This tab will allow you grab your function from a given directory and build
100
- your own tabular module gradio functions
101
- </Message.Content>
102
-
103
- </Message>
104
- </div>
105
- )
106
- }
107
-
108
- function Shared(props){
109
- const [preview, setPreview] = useState("")
110
- const [fetchable, setFetch] = useState(false)
111
-
112
- const isFetchable = async (url) => {
113
- const pattern = {
114
- share : /^https?:\/\/*([0-9]{5})*(-gradio)*(.app)?(\/)?$/,
115
- hugginFace : /^https?:\/\/*(hf.space)\/*(embed)\/*([a-zA-Z0-9+_-]+)\/*([a-zA-Z0-9+_-]+)\/*([+])?(\/)?$/
116
- }
117
-
118
- if (!pattern.share.test(url) &&
119
- !pattern.hugginFace.test(url)){
120
- setFetch(false)
121
- return
122
- }
123
-
124
-
125
- fetch(url, {mode : "no-cors"}).then((re) => {
126
- console.log(re)
127
- if(re.url.includes("http://localhost:3000")){
128
- setFetch(false)
129
- } else {
130
- setFetch(true)
131
- props.catch ? props.handelError(false) : props.handelError(props.catch)
132
- }
133
-
134
- }).catch((err)=>{
135
- setFetch(false)
136
- })
137
- setFetch(false)
138
- }
139
-
140
- return (
141
- <div className='w-full shadow-lg' onKeyPress={(e)=>{
142
- if (e.key.includes("Enter")) props.appendHandler(props.type)
143
- }}>
144
- <div className='p-5'>
145
- <Message floating>
146
- <div className={`flex items-center rounded-md bg-light-white mt-6 border-dashed`}>
147
- <label className="relative block w-full p-5 focus:shadow-xl">
148
- <span className={`absolute inset-y-0 left-0 flex items-center pl-8`}>
149
- <BsSearch className="block float-left cursor-pointer text-gray-500"/>
150
- </span>
151
- <input className={`placeholder:italic placeholder:text-slate-400 text-black dark:text-white block w-full border border-slate-300 border-dashed rounded-md py-2 pl-9 pr-3 focus:shadow-xl focus:outline-none focus:border-sky-500 focus:ring-sky-500 focus:ring-1 sm:text-sm bg-transparent`}
152
- placeholder={`URL`}
153
- type="text" name="search"
154
- onChange={(e) => {
155
- props.textHandler(e, "text")
156
- setPreview(e.target.value)
157
- setFetch(isFetchable(e.target.value))
158
- }}
159
- />
160
- </label>
161
- </div>
162
- { fetchable === true && <div className=' w-full'>
163
- <h1 className=' text-xl font-sans font-bold text-center text-black mb-2'> Preview </h1>
164
- <div className='p-3 px-1 w-3/4 h-80 bg-gray-200 mr-auto ml-auto rounded-xl'>
165
- <div className='w-full h-full overflow-hidden relative -ml-[5px]'>
166
- <iframe title='Preview' src={preview} className=' absolute top-0 bottom-0 left-0 -right-[25px] overflow-y-scroll w-full h-full mr-auto ml-auto'/>
167
- </div>
168
- </div>
169
- </div>}
170
- <div className={`flex items-center rounded-md bg-light-white dark:bg-[#1b1c1d] mt-6 border-dashed`}>
171
- <label className="relative block p-5 w-full focus:shadow-xl">
172
- <span className={`absolute inset-y-0 left-0 flex items-center pl-7`}>
173
- <Icon className=" text-gray-500 block float-left cursor-pointer mr-2" name="address card"/>
174
- </span>
175
- <input className={`placeholder:italic placeholder:text-slate-400 text-black dark:text-white block bg-transparent w-full border border-slate-300 border-dashed rounded-md py-2 pl-9 pr-3 focus:shadow-xl focus:outline-none focus:border-sky-500 focus:ring-sky-500 focus:ring-1 sm:text-sm`}
176
- placeholder={`Name ( > 20 Characters)` }
177
- type="text" name="search"
178
- autoComplete='off'
179
- onChange={(e) => {
180
- props.textHandler(e, "name")
181
- }}
182
- />
183
- </label>
184
- </div>
185
- <div className=' right-0 ml-5'>
186
- <button className="relative inline-flex justify-center p-0.5 mb-2 mr-2 overflow-hidden text-sm font-sans font-bold text-gray-900 rounded-lg group bg-gradient-to-br from-purple-600 to-blue-500 group-hover:from-purple-600 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800"
187
- onClick={()=>{props.appendHandler(props.type)}}>
188
- <span className="relative px-5 py-2.5 transition-all ease-in duration-75 bg-white dark:bg-[#1b1c1d] rounded-md group-hover:bg-opacity-0">
189
- Enter
190
- </span>
191
- </button>
192
- </div>
193
- </Message>
194
- </div>
195
- </div>
196
-
197
- )
198
- }