undo some changes
Browse files
public/workers/feature-extraction.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
-
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.
|
3 |
|
4 |
class MyFeatureExtractionPipeline {
|
5 |
static task = 'feature-extraction'
|
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
+
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.1'
|
3 |
|
4 |
class MyFeatureExtractionPipeline {
|
5 |
static task = 'feature-extraction'
|
public/workers/image-classification.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
-
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.
|
3 |
|
4 |
class MyImageClassificationPipeline {
|
5 |
static task = 'image-classification'
|
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
+
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.1'
|
3 |
|
4 |
class MyImageClassificationPipeline {
|
5 |
static task = 'image-classification'
|
public/workers/text-classification.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
-
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.
|
3 |
|
4 |
class MyTextClassificationPipeline {
|
5 |
static task = 'text-classification'
|
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
+
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.1'
|
3 |
|
4 |
class MyTextClassificationPipeline {
|
5 |
static task = 'text-classification'
|
public/workers/text-generation.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
-
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.
|
3 |
|
4 |
class MyTextGenerationPipeline {
|
5 |
static task = 'text-generation'
|
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
+
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.1'
|
3 |
|
4 |
class MyTextGenerationPipeline {
|
5 |
static task = 'text-generation'
|
public/workers/zero-shot-classification.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
-
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.
|
3 |
|
4 |
class MyZeroShotClassificationPipeline {
|
5 |
static task = 'zero-shot-classification'
|
|
|
1 |
/* eslint-disable no-restricted-globals */
|
2 |
+
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.7.1'
|
3 |
|
4 |
class MyZeroShotClassificationPipeline {
|
5 |
static task = 'zero-shot-classification'
|
src/components/Modal.tsx
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import React, {
|
2 |
import { X } from 'lucide-react'
|
3 |
|
4 |
interface ModalProps {
|
@@ -26,11 +26,6 @@ const Modal: React.FC<ModalProps> = ({
|
|
26 |
children,
|
27 |
maxWidth = '4xl'
|
28 |
}) => {
|
29 |
-
// State to control if the modal is in the DOM
|
30 |
-
const [isRendered, setIsRendered] = useState(isOpen)
|
31 |
-
// State to control the animation classes
|
32 |
-
const [isAnimating, setIsAnimating] = useState(false)
|
33 |
-
|
34 |
useEffect(() => {
|
35 |
const handleEscape = (e: KeyboardEvent) => {
|
36 |
if (e.key === 'Escape') {
|
@@ -39,24 +34,17 @@ const Modal: React.FC<ModalProps> = ({
|
|
39 |
}
|
40 |
|
41 |
if (isOpen) {
|
42 |
-
setIsRendered(true)
|
43 |
-
document.body.style.overflow = 'hidden'
|
44 |
document.addEventListener('keydown', handleEscape)
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
document.body.style.overflow = 'unset'
|
52 |
-
document.removeEventListener('keydown', handleEscape)
|
53 |
-
}, 300)
|
54 |
-
return () => clearTimeout(unmountTimeout)
|
55 |
}
|
56 |
}, [isOpen, onClose])
|
57 |
|
58 |
-
|
59 |
-
if (!isRendered) return null
|
60 |
|
61 |
const maxWidthClasses = {
|
62 |
sm: 'max-w-sm',
|
@@ -75,30 +63,22 @@ const Modal: React.FC<ModalProps> = ({
|
|
75 |
<div className="fixed inset-0 z-50 overflow-y-auto">
|
76 |
{/* Backdrop */}
|
77 |
<div
|
78 |
-
className=
|
79 |
-
isAnimating ? 'opacity-50' : 'opacity-0'
|
80 |
-
}`}
|
81 |
onClick={onClose}
|
82 |
/>
|
83 |
|
84 |
{/* Modal */}
|
85 |
<div className="flex min-h-full items-center justify-center p-4 text-center sm:p-0">
|
86 |
<div
|
87 |
-
className={`relative transform overflow-hidden rounded-lg bg-white text-left shadow-xl transition-all
|
88 |
-
maxWidthClasses[maxWidth]
|
89 |
-
} ${
|
90 |
-
isAnimating
|
91 |
-
? 'opacity-100 translate-y-0 sm:scale-100'
|
92 |
-
: 'opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95'
|
93 |
-
}`}
|
94 |
onClick={(e) => e.stopPropagation()}
|
95 |
>
|
96 |
{/* Header */}
|
97 |
-
<div className="flex items-center justify-between border-b border-gray-200
|
98 |
<h3 className="text-lg font-semibold text-gray-900">{title}</h3>
|
99 |
<button
|
100 |
onClick={onClose}
|
101 |
-
className="rounded-md p-2 text-gray-400 hover:
|
102 |
>
|
103 |
<span className="sr-only">Close</span>
|
104 |
<X className="h-5 w-5" />
|
@@ -106,7 +86,7 @@ const Modal: React.FC<ModalProps> = ({
|
|
106 |
</div>
|
107 |
|
108 |
{/* Content */}
|
109 |
-
<div className="max-h-[calc(100vh-200px)] overflow-y-auto
|
110 |
{children}
|
111 |
</div>
|
112 |
</div>
|
|
|
1 |
+
import React, { useEffect } from 'react'
|
2 |
import { X } from 'lucide-react'
|
3 |
|
4 |
interface ModalProps {
|
|
|
26 |
children,
|
27 |
maxWidth = '4xl'
|
28 |
}) => {
|
|
|
|
|
|
|
|
|
|
|
29 |
useEffect(() => {
|
30 |
const handleEscape = (e: KeyboardEvent) => {
|
31 |
if (e.key === 'Escape') {
|
|
|
34 |
}
|
35 |
|
36 |
if (isOpen) {
|
|
|
|
|
37 |
document.addEventListener('keydown', handleEscape)
|
38 |
+
document.body.style.overflow = 'hidden'
|
39 |
+
}
|
40 |
+
|
41 |
+
return () => {
|
42 |
+
document.removeEventListener('keydown', handleEscape)
|
43 |
+
document.body.style.overflow = 'unset'
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
}, [isOpen, onClose])
|
46 |
|
47 |
+
if (!isOpen) return null
|
|
|
48 |
|
49 |
const maxWidthClasses = {
|
50 |
sm: 'max-w-sm',
|
|
|
63 |
<div className="fixed inset-0 z-50 overflow-y-auto">
|
64 |
{/* Backdrop */}
|
65 |
<div
|
66 |
+
className="fixed inset-0 bg-black opacity-50 transition-opacity"
|
|
|
|
|
67 |
onClick={onClose}
|
68 |
/>
|
69 |
|
70 |
{/* Modal */}
|
71 |
<div className="flex min-h-full items-center justify-center p-4 text-center sm:p-0">
|
72 |
<div
|
73 |
+
className={`relative transform overflow-hidden rounded-lg bg-white text-left shadow-xl transition-all sm:my-8 sm:w-full ${maxWidthClasses[maxWidth]}`}
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
onClick={(e) => e.stopPropagation()}
|
75 |
>
|
76 |
{/* Header */}
|
77 |
+
<div className="flex items-center justify-between px-6 py-4 border-b border-gray-200">
|
78 |
<h3 className="text-lg font-semibold text-gray-900">{title}</h3>
|
79 |
<button
|
80 |
onClick={onClose}
|
81 |
+
className="rounded-md p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-100 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"
|
82 |
>
|
83 |
<span className="sr-only">Close</span>
|
84 |
<X className="h-5 w-5" />
|
|
|
86 |
</div>
|
87 |
|
88 |
{/* Content */}
|
89 |
+
<div className="px-6 py-4 max-h-[calc(100vh-200px)] overflow-y-auto">
|
90 |
{children}
|
91 |
</div>
|
92 |
</div>
|