Djacon commited on
Commit
7ab594e
β€’
1 Parent(s): 1b0d851

Add Static Website

Browse files
.gitignore CHANGED
@@ -1 +1 @@
1
- __pycache__
 
1
+ __pycache__/
LICENCE ADDED
@@ -0,0 +1,399 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Attribution-NonCommercial 4.0 International
2
+
3
+ =======================================================================
4
+
5
+ Creative Commons Corporation ("Creative Commons") is not a law firm and
6
+ does not provide legal services or legal advice. Distribution of
7
+ Creative Commons public licenses does not create a lawyer-client or
8
+ other relationship. Creative Commons makes its licenses and related
9
+ information available on an "as-is" basis. Creative Commons gives no
10
+ warranties regarding its licenses, any material licensed under their
11
+ terms and conditions, or any related information. Creative Commons
12
+ disclaims all liability for damages resulting from their use to the
13
+ fullest extent possible.
14
+
15
+ Using Creative Commons Public Licenses
16
+
17
+ Creative Commons public licenses provide a standard set of terms and
18
+ conditions that creators and other rights holders may use to share
19
+ original works of authorship and other material subject to copyright
20
+ and certain other rights specified in the public license below. The
21
+ following considerations are for informational purposes only, are not
22
+ exhaustive, and do not form part of our licenses.
23
+
24
+ Considerations for licensors: Our public licenses are
25
+ intended for use by those authorized to give the public
26
+ permission to use material in ways otherwise restricted by
27
+ copyright and certain other rights. Our licenses are
28
+ irrevocable. Licensors should read and understand the terms
29
+ and conditions of the license they choose before applying it.
30
+ Licensors should also secure all rights necessary before
31
+ applying our licenses so that the public can reuse the
32
+ material as expected. Licensors should clearly mark any
33
+ material not subject to the license. This includes other CC-
34
+ licensed material, or material used under an exception or
35
+ limitation to copyright. More considerations for licensors:
36
+ wiki.creativecommons.org/Considerations_for_licensors
37
+
38
+ Considerations for the public: By using one of our public
39
+ licenses, a licensor grants the public permission to use the
40
+ licensed material under specified terms and conditions. If
41
+ the licensor's permission is not necessary for any reason--for
42
+ example, because of any applicable exception or limitation to
43
+ copyright--then that use is not regulated by the license. Our
44
+ licenses grant only permissions under copyright and certain
45
+ other rights that a licensor has authority to grant. Use of
46
+ the licensed material may still be restricted for other
47
+ reasons, including because others have copyright or other
48
+ rights in the material. A licensor may make special requests,
49
+ such as asking that all changes be marked or described.
50
+ Although not required by our licenses, you are encouraged to
51
+ respect those requests where reasonable. More_considerations
52
+ for the public:
53
+ wiki.creativecommons.org/Considerations_for_licensees
54
+
55
+ =======================================================================
56
+
57
+ Creative Commons Attribution-NonCommercial 4.0 International Public
58
+ License
59
+
60
+ By exercising the Licensed Rights (defined below), You accept and agree
61
+ to be bound by the terms and conditions of this Creative Commons
62
+ Attribution-NonCommercial 4.0 International Public License ("Public
63
+ License"). To the extent this Public License may be interpreted as a
64
+ contract, You are granted the Licensed Rights in consideration of Your
65
+ acceptance of these terms and conditions, and the Licensor grants You
66
+ such rights in consideration of benefits the Licensor receives from
67
+ making the Licensed Material available under these terms and
68
+ conditions.
69
+
70
+ Section 1 -- Definitions.
71
+
72
+ a. Adapted Material means material subject to Copyright and Similar
73
+ Rights that is derived from or based upon the Licensed Material
74
+ and in which the Licensed Material is translated, altered,
75
+ arranged, transformed, or otherwise modified in a manner requiring
76
+ permission under the Copyright and Similar Rights held by the
77
+ Licensor. For purposes of this Public License, where the Licensed
78
+ Material is a musical work, performance, or sound recording,
79
+ Adapted Material is always produced where the Licensed Material is
80
+ synched in timed relation with a moving image.
81
+
82
+ b. Adapter's License means the license You apply to Your Copyright
83
+ and Similar Rights in Your contributions to Adapted Material in
84
+ accordance with the terms and conditions of this Public License.
85
+
86
+ c. Copyright and Similar Rights means copyright and/or similar rights
87
+ closely related to copyright including, without limitation,
88
+ performance, broadcast, sound recording, and Sui Generis Database
89
+ Rights, without regard to how the rights are labeled or
90
+ categorized. For purposes of this Public License, the rights
91
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
92
+ Rights.
93
+ d. Effective Technological Measures means those measures that, in the
94
+ absence of proper authority, may not be circumvented under laws
95
+ fulfilling obligations under Article 11 of the WIPO Copyright
96
+ Treaty adopted on December 20, 1996, and/or similar international
97
+ agreements.
98
+
99
+ e. Exceptions and Limitations means fair use, fair dealing, and/or
100
+ any other exception or limitation to Copyright and Similar Rights
101
+ that applies to Your use of the Licensed Material.
102
+
103
+ f. Licensed Material means the artistic or literary work, database,
104
+ or other material to which the Licensor applied this Public
105
+ License.
106
+
107
+ g. Licensed Rights means the rights granted to You subject to the
108
+ terms and conditions of this Public License, which are limited to
109
+ all Copyright and Similar Rights that apply to Your use of the
110
+ Licensed Material and that the Licensor has authority to license.
111
+
112
+ h. Licensor means the individual(s) or entity(ies) granting rights
113
+ under this Public License.
114
+
115
+ i. NonCommercial means not primarily intended for or directed towards
116
+ commercial advantage or monetary compensation. For purposes of
117
+ this Public License, the exchange of the Licensed Material for
118
+ other material subject to Copyright and Similar Rights by digital
119
+ file-sharing or similar means is NonCommercial provided there is
120
+ no payment of monetary compensation in connection with the
121
+ exchange.
122
+
123
+ j. Share means to provide material to the public by any means or
124
+ process that requires permission under the Licensed Rights, such
125
+ as reproduction, public display, public performance, distribution,
126
+ dissemination, communication, or importation, and to make material
127
+ available to the public including in ways that members of the
128
+ public may access the material from a place and at a time
129
+ individually chosen by them.
130
+
131
+ k. Sui Generis Database Rights means rights other than copyright
132
+ resulting from Directive 96/9/EC of the European Parliament and of
133
+ the Council of 11 March 1996 on the legal protection of databases,
134
+ as amended and/or succeeded, as well as other essentially
135
+ equivalent rights anywhere in the world.
136
+
137
+ l. You means the individual or entity exercising the Licensed Rights
138
+ under this Public License. Your has a corresponding meaning.
139
+
140
+ Section 2 -- Scope.
141
+
142
+ a. License grant.
143
+
144
+ 1. Subject to the terms and conditions of this Public License,
145
+ the Licensor hereby grants You a worldwide, royalty-free,
146
+ non-sublicensable, non-exclusive, irrevocable license to
147
+ exercise the Licensed Rights in the Licensed Material to:
148
+
149
+ a. reproduce and Share the Licensed Material, in whole or
150
+ in part, for NonCommercial purposes only; and
151
+
152
+ b. produce, reproduce, and Share Adapted Material for
153
+ NonCommercial purposes only.
154
+
155
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
156
+ Exceptions and Limitations apply to Your use, this Public
157
+ License does not apply, and You do not need to comply with
158
+ its terms and conditions.
159
+
160
+ 3. Term. The term of this Public License is specified in Section
161
+ 6(a).
162
+
163
+ 4. Media and formats; technical modifications allowed. The
164
+ Licensor authorizes You to exercise the Licensed Rights in
165
+ all media and formats whether now known or hereafter created,
166
+ and to make technical modifications necessary to do so. The
167
+ Licensor waives and/or agrees not to assert any right or
168
+ authority to forbid You from making technical modifications
169
+ necessary to exercise the Licensed Rights, including
170
+ technical modifications necessary to circumvent Effective
171
+ Technological Measures. For purposes of this Public License,
172
+ simply making modifications authorized by this Section 2(a)
173
+ (4) never produces Adapted Material.
174
+
175
+ 5. Downstream recipients.
176
+
177
+ a. Offer from the Licensor -- Licensed Material. Every
178
+ recipient of the Licensed Material automatically
179
+ receives an offer from the Licensor to exercise the
180
+ Licensed Rights under the terms and conditions of this
181
+ Public License.
182
+
183
+ b. No downstream restrictions. You may not offer or impose
184
+ any additional or different terms or conditions on, or
185
+ apply any Effective Technological Measures to, the
186
+ Licensed Material if doing so restricts exercise of the
187
+ Licensed Rights by any recipient of the Licensed
188
+ Material.
189
+
190
+ 6. No endorsement. Nothing in this Public License constitutes or
191
+ may be construed as permission to assert or imply that You
192
+ are, or that Your use of the Licensed Material is, connected
193
+ with, or sponsored, endorsed, or granted official status by,
194
+ the Licensor or others designated to receive attribution as
195
+ provided in Section 3(a)(1)(A)(i).
196
+
197
+ b. Other rights.
198
+
199
+ 1. Moral rights, such as the right of integrity, are not
200
+ licensed under this Public License, nor are publicity,
201
+ privacy, and/or other similar personality rights; however, to
202
+ the extent possible, the Licensor waives and/or agrees not to
203
+ assert any such rights held by the Licensor to the limited
204
+ extent necessary to allow You to exercise the Licensed
205
+ Rights, but not otherwise.
206
+
207
+ 2. Patent and trademark rights are not licensed under this
208
+ Public License.
209
+
210
+ 3. To the extent possible, the Licensor waives any right to
211
+ collect royalties from You for the exercise of the Licensed
212
+ Rights, whether directly or through a collecting society
213
+ under any voluntary or waivable statutory or compulsory
214
+ licensing scheme. In all other cases the Licensor expressly
215
+ reserves any right to collect such royalties, including when
216
+ the Licensed Material is used other than for NonCommercial
217
+ purposes.
218
+
219
+ Section 3 -- License Conditions.
220
+
221
+ Your exercise of the Licensed Rights is expressly made subject to the
222
+ following conditions.
223
+
224
+ a. Attribution.
225
+
226
+ 1. If You Share the Licensed Material (including in modified
227
+ form), You must:
228
+
229
+ a. retain the following if it is supplied by the Licensor
230
+ with the Licensed Material:
231
+
232
+ i. identification of the creator(s) of the Licensed
233
+ Material and any others designated to receive
234
+ attribution, in any reasonable manner requested by
235
+ the Licensor (including by pseudonym if
236
+ designated);
237
+
238
+ ii. a copyright notice;
239
+
240
+ iii. a notice that refers to this Public License;
241
+
242
+ iv. a notice that refers to the disclaimer of
243
+ warranties;
244
+
245
+ v. a URI or hyperlink to the Licensed Material to the
246
+ extent reasonably practicable;
247
+
248
+ b. indicate if You modified the Licensed Material and
249
+ retain an indication of any previous modifications; and
250
+
251
+ c. indicate the Licensed Material is licensed under this
252
+ Public License, and include the text of, or the URI or
253
+ hyperlink to, this Public License.
254
+
255
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
256
+ reasonable manner based on the medium, means, and context in
257
+ which You Share the Licensed Material. For example, it may be
258
+ reasonable to satisfy the conditions by providing a URI or
259
+ hyperlink to a resource that includes the required
260
+ information.
261
+
262
+ 3. If requested by the Licensor, You must remove any of the
263
+ information required by Section 3(a)(1)(A) to the extent
264
+ reasonably practicable.
265
+
266
+ 4. If You Share Adapted Material You produce, the Adapter's
267
+ License You apply must not prevent recipients of the Adapted
268
+ Material from complying with this Public License.
269
+
270
+ Section 4 -- Sui Generis Database Rights.
271
+
272
+ Where the Licensed Rights include Sui Generis Database Rights that
273
+ apply to Your use of the Licensed Material:
274
+
275
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
276
+ to extract, reuse, reproduce, and Share all or a substantial
277
+ portion of the contents of the database for NonCommercial purposes
278
+ only;
279
+
280
+ b. if You include all or a substantial portion of the database
281
+ contents in a database in which You have Sui Generis Database
282
+ Rights, then the database in which You have Sui Generis Database
283
+ Rights (but not its individual contents) is Adapted Material; and
284
+
285
+ c. You must comply with the conditions in Section 3(a) if You Share
286
+ all or a substantial portion of the contents of the database.
287
+
288
+ For the avoidance of doubt, this Section 4 supplements and does not
289
+ replace Your obligations under this Public License where the Licensed
290
+ Rights include other Copyright and Similar Rights.
291
+
292
+ Section 5 -- Disclaimer of Warranties and Limitation of Liability.
293
+
294
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
295
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
296
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
297
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
298
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
299
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
300
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
301
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
302
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
303
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
304
+
305
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
306
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
307
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
308
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
309
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
310
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
311
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
312
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
313
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
314
+
315
+ c. The disclaimer of warranties and limitation of liability provided
316
+ above shall be interpreted in a manner that, to the extent
317
+ possible, most closely approximates an absolute disclaimer and
318
+ waiver of all liability.
319
+
320
+ Section 6 -- Term and Termination.
321
+
322
+ a. This Public License applies for the term of the Copyright and
323
+ Similar Rights licensed here. However, if You fail to comply with
324
+ this Public License, then Your rights under this Public License
325
+ terminate automatically.
326
+
327
+ b. Where Your right to use the Licensed Material has terminated under
328
+ Section 6(a), it reinstates:
329
+
330
+ 1. automatically as of the date the violation is cured, provided
331
+ it is cured within 30 days of Your discovery of the
332
+ violation; or
333
+
334
+ 2. upon express reinstatement by the Licensor.
335
+
336
+ For the avoidance of doubt, this Section 6(b) does not affect any
337
+ right the Licensor may have to seek remedies for Your violations
338
+ of this Public License.
339
+
340
+ c. For the avoidance of doubt, the Licensor may also offer the
341
+ Licensed Material under separate terms or conditions or stop
342
+ distributing the Licensed Material at any time; however, doing so
343
+ will not terminate this Public License.
344
+
345
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
346
+ License.
347
+
348
+ Section 7 -- Other Terms and Conditions.
349
+
350
+ a. The Licensor shall not be bound by any additional or different
351
+ terms or conditions communicated by You unless expressly agreed.
352
+
353
+ b. Any arrangements, understandings, or agreements regarding the
354
+ Licensed Material not stated herein are separate from and
355
+ independent of the terms and conditions of this Public License.
356
+
357
+ Section 8 -- Interpretation.
358
+
359
+ a. For the avoidance of doubt, this Public License does not, and
360
+ shall not be interpreted to, reduce, limit, restrict, or impose
361
+ conditions on any use of the Licensed Material that could lawfully
362
+ be made without permission under this Public License.
363
+
364
+ b. To the extent possible, if any provision of this Public License is
365
+ deemed unenforceable, it shall be automatically reformed to the
366
+ minimum extent necessary to make it enforceable. If the provision
367
+ cannot be reformed, it shall be severed from this Public License
368
+ without affecting the enforceability of the remaining terms and
369
+ conditions.
370
+
371
+ c. No term or condition of this Public License will be waived and no
372
+ failure to comply consented to unless expressly agreed to by the
373
+ Licensor.
374
+
375
+ d. Nothing in this Public License constitutes or may be interpreted
376
+ as a limitation upon, or waiver of, any privileges and immunities
377
+ that apply to the Licensor or You, including from the legal
378
+ processes of any jurisdiction or authority.
379
+
380
+ =======================================================================
381
+
382
+ Creative Commons is not a party to its public
383
+ licenses. Notwithstanding, Creative Commons may elect to apply one of
384
+ its public licenses to material it publishes and in those instances
385
+ will be considered the β€œLicensor.” The text of the Creative Commons
386
+ public licenses is dedicated to the public domain under the CC0 Public
387
+ Domain Dedication. Except for the limited purpose of indicating that
388
+ material is shared under a Creative Commons public license or as
389
+ otherwise permitted by the Creative Commons policies published at
390
+ creativecommons.org/policies, Creative Commons does not authorize the
391
+ use of the trademark "Creative Commons" or any other trademark or logo
392
+ of Creative Commons without its prior written consent including,
393
+ without limitation, in connection with any unauthorized modifications
394
+ to any of its public licenses or any other arrangements,
395
+ understandings, or agreements concerning use of licensed material. For
396
+ the avoidance of doubt, this paragraph does not form part of the
397
+ public licenses.
398
+
399
+ Creative Commons may be contacted at creativecommons.org.
README.md CHANGED
@@ -1,11 +1,6 @@
1
- ---
2
- title: Emotion Detection
3
- emoji: 🐠
4
- colorFrom: blue
5
- colorTo: yellow
6
- sdk: docker
7
- pinned: false
8
- license: mit
9
- ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
+ # Text2Feature
2
+ Powerful text mining tool. Convert raw text into clean using modern technologies of NLP and AI
 
 
 
 
 
 
 
3
 
4
+ You can test my website right here πŸ‘‡
5
+
6
+ Link: [djacon.github.io/text2feature](https://djacon.github.io/text2feature)
main.py CHANGED
@@ -1,30 +1,32 @@
1
- import uvicorn
2
- from fastapi import FastAPI, Request, HTTPException
3
- from fastapi.middleware.cors import CORSMiddleware
 
 
4
  from inference import predict_emotions
5
 
6
  app = FastAPI()
7
 
8
- # You can choose your own website hosts
9
- allowed_hosts = [
10
- "http://127.0.0.1",
11
- "https://djacon.github.io"
12
- ]
 
 
13
 
14
- app.add_middleware(
15
- CORSMiddleware,
16
- allow_origins=allowed_hosts,
17
- allow_credentials=True,
18
- allow_methods=["*"],
19
- allow_headers=["*"],
20
- )
21
 
22
 
23
  @app.get('/')
24
- async def hello():
25
- return {'msg': 'Hello, World!'}
 
 
 
 
26
 
27
 
28
  @app.post('/predict_emotion')
29
- async def predict(text: str):
30
- return predict_emotions(text)
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel
3
+ from fastapi.responses import RedirectResponse
4
+ from fastapi.staticfiles import StaticFiles
5
+
6
  from inference import predict_emotions
7
 
8
  app = FastAPI()
9
 
10
+ # app.add_middleware(
11
+ # CORSMiddleware,
12
+ # allow_origins=allowed_hosts,
13
+ # allow_credentials=True,
14
+ # allow_methods=["*"],
15
+ # allow_headers=["*"],
16
+ # )
17
 
18
+ app.mount("/static", StaticFiles(directory='static', html=True))
 
 
 
 
 
 
19
 
20
 
21
  @app.get('/')
22
+ async def redirect_to_static_index():
23
+ return RedirectResponse(url='/static/index.html')
24
+
25
+
26
+ class EmotionRequest(BaseModel):
27
+ text: str
28
 
29
 
30
  @app.post('/predict_emotion')
31
+ async def predict(request: EmotionRequest):
32
+ return predict_emotions(request.text)
static/404.html ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link rel="canonical" href="">
8
+ <title>Text2Feature | 404 Page</title>
9
+ <link rel="stylesheet" href="css/main.css">
10
+ <link rel="icon" type="image/svg+xml" href="images/logo.svg">
11
+ <script defer src="js/main.js"></script>
12
+ </head>
13
+
14
+ <body class="overflow-hidden">
15
+ <!-- Google tag (gtag.js) -->
16
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-B751Q3XBFC"></script>
17
+ <script>
18
+ window.dataLayer = window.dataLayer || [];
19
+ function gtag(){dataLayer.push(arguments);}
20
+ gtag('js', new Date());
21
+
22
+ gtag('config', 'G-B751Q3XBFC');
23
+ </script>
24
+
25
+ <div x-data="{ sidebarOpen: false }" class="relative flex h-screen text-gray-800 bg-white font-roboto">
26
+ <div x-cloak :class="sidebarOpen ? 'block' : 'hidden'" @click="sidebarOpen = false"
27
+ class="fixed inset-0 z-20 transition-opacity bg-black opacity-50 lg:hidden"></div>
28
+
29
+ <div x-cloak :class="sidebarOpen ? 'translate-x-0 ease-in' : '-translate-x-full ease-out'"
30
+ class="fixed inset-y-0 left-0 z-30 w-64 px-4 overflow-y-auto transition duration-200 transform bg-white border-r border-gray-100 lg:translate-x-0 lg:relative lg:inset-0 ">
31
+ <div class="mt-8">
32
+ <a href="index.html" class="flex items-center">
33
+ <img class="w-auto h-6" src="images/logo.svg" alt="logo">
34
+ <span class="mx-3 mt-1 font-medium text-lg">Text2<span class="text-indigo-600">Feature</span></span>
35
+ </a>
36
+ </div>
37
+
38
+ <hr class="my-6 border-gray-100">
39
+
40
+ <nav class="space-y-8">
41
+ <div class="space-y-4">
42
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">PAGES</h3>
43
+
44
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-200 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
45
+ href="index.html">
46
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
47
+ stroke="currentColor">
48
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
49
+ d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
50
+ </svg>
51
+ <span class="mx-3 font-medium capitalize">Homepage</span>
52
+ </a>
53
+
54
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
55
+ href="text_summarizer.html">
56
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
57
+ stroke="currentColor" stroke-width="2">
58
+ <path stroke-linecap="round" stroke-linejoin="round"
59
+ d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" />
60
+ </svg>
61
+ <span class="mx-3 font-medium capitalize">Text Summarizer</span>
62
+ </a>
63
+
64
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
65
+ href="emotion_detection.html">
66
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
67
+ <path d="M9 16C9.85038 16.6303 10.8846 17 12 17C13.1154 17 14.1496 16.6303 15 16" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
68
+ <path d="M16 10.5C16 11.3284 15.5523 12 15 12C14.4477 12 14 11.3284 14 10.5C14 9.67157 14.4477 9 15 9C15.5523 9 16 9.67157 16 10.5Z" fill="#1C274C"/>
69
+ <ellipse cx="9" cy="10.5" rx="1" ry="1.5" fill="#1C274C"/>
70
+ <path d="M7 3.33782C8.47087 2.48697 10.1786 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 10.1786 2.48697 8.47087 3.33782 7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
71
+ </svg>
72
+ <span class="mx-3 font-medium capitalize">Emotion Detection</span>
73
+ </a>
74
+
75
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
76
+ href="">
77
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
78
+ stroke="currentColor">
79
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
80
+ d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
81
+ </svg>
82
+
83
+ <span class="mx-3 font-medium capitalize">Project 3</span>
84
+ </a>
85
+
86
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
87
+ href="">
88
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
89
+ <path
90
+ d="M13 10V14H19V10H13ZM11 10H5V14H11V10ZM13 19H19V16H13V19ZM11 19V16H5V19H11ZM13 5V8H19V5H13ZM11 5H5V8H11V5ZM19 3C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5C3 3.89543 3.89543 3 5 3H19Z"
91
+ fill="currentColor"></path>
92
+ </svg>
93
+ <span class="mx-3 font-medium capitalize">Project 4</span>
94
+ </a>
95
+ </div>
96
+
97
+ <div class="space-y-4">
98
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">OTHER</h3>
99
+
100
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
101
+ href="/">
102
+ <svg width="24" height="24" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
103
+ <path
104
+ d="M474.89,300.41a121.43,121.43,0,0,1-121.3,121.3H247.08V392.13H353.59a91.72,91.72,0,1,0,0-183.44H87.53L151,272.2l-20.92,20.92L30.89,193.9l99.22-99.22L151,115.6l-63.5,63.51H353.59A121.43,121.43,0,0,1,474.89,300.41Z" />
105
+ </svg>
106
+ <span class="mx-3 font-medium">Visit Main Website</span>
107
+ </a>
108
+ </div>
109
+ </nav>
110
+ </div>
111
+
112
+ <div class="flex flex-col flex-1 overflow-hidden bg-gray-100">
113
+ <header class="bg-white border-b border-gray-100">
114
+ <div class="flex items-center justify-between px-4 py-4 sm:px-6">
115
+ <div class="flex items-center">
116
+ <button @click="sidebarOpen = !sidebarOpen" class="text-gray-500 lg:hidden focus:outline-none">
117
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
118
+ <path d="M4 6H20M4 12H20M4 18H11" stroke="currentColor" stroke-width="2"
119
+ stroke-linecap="round" stroke-linejoin="round" />
120
+ </svg>
121
+ </button>
122
+
123
+ <div class="relative" x-data="{ search: '' }" @click.away="search = ''">
124
+ <div class="relative mx-4 lg:mx-0">
125
+ <span class="absolute inset-y-0 left-0 flex items-center pl-3">
126
+ <svg class="w-5 h-5 text-gray-400" viewBox="0 0 24 24" fill="none">
127
+ <path
128
+ d="M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z"
129
+ stroke="currentColor" stroke-width="2" stroke-linecap="round"
130
+ stroke-linejoin="round"></path>
131
+ </svg>
132
+ </span>
133
+
134
+ <input x-model="search" type="text"
135
+ class="w-64 h-10 py-2 pl-10 pr-4 text-gray-700 placeholder-gray-400 transition-all duration-150 bg-white border border-gray-200 rounded-md focus:w-80 sm:w-64 sm:focus:w-80 focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
136
+ placeholder="Find anything...">
137
+ </div>
138
+
139
+ <div class="absolute right-0 z-20 w-full py-2 mt-2 space-y-4 overflow-hidden bg-white rounded-md shadow-xl"
140
+ x-show="search.length > 0" x-cloak
141
+ x-transition:enter="transition ease-out duration-100 transform"
142
+ x-transition:enter-start="opacity-0 scale-95"
143
+ x-transition:enter-end="opacity-100 scale-100"
144
+ x-transition:leave="transition ease-in duration-75 transform"
145
+ x-transition:leave-start="opacity-100 scale-100"
146
+ x-transition:leave-end="opacity-0 scale-95">
147
+
148
+ <div>
149
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Projects</h3>
150
+ <div class="mt-2">
151
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
152
+ href="text_summarizer.html">
153
+ Text Summarizer
154
+ </a>
155
+
156
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
157
+ href="emotion_detection.html">
158
+ Emotion Detection
159
+ </a>
160
+
161
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
162
+ href="">
163
+ Project 3
164
+ </a>
165
+
166
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
167
+ href="">
168
+ Project 4
169
+ </a>
170
+ </div>
171
+ </div>
172
+ <div>
173
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Other</h3>
174
+ <div class="mt-2">
175
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
176
+ href="/">
177
+ Visit Main Website
178
+ </a>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+
185
+ <div class="flex items-center">
186
+ <div x-data="{ dropdownOpen: false }" class="relative inline-block">
187
+ <button @click="dropdownOpen = ! dropdownOpen" class="relative z-10 flex items-center flex-shrink-0 text-sm text-gray-600 focus:outline-none">
188
+ <img class="flex-shrink-0 object-cover w-8 h-8 rounded-full" src="images/github-mark.svg" alt="github-mark">
189
+ </button>
190
+
191
+ <div class="absolute right-0 z-20 w-56 py-2 mt-2 overflow-hidden bg-white rounded-md shadow-xl rtl:right-auto rtl:left-0" x-show="dropdownOpen" x-transition:enter="transition ease-out duration-100 transform" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-75 transform" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" @click.away="dropdownOpen = false" style="display: none;">
192
+ <a target="_blank" href="https://github.com/Djacon/text2feature" class="flex items-center p-3 -mt-2 text-sm text-gray-600 transition-colors duration-200 transform hover:bg-gray-100">
193
+ <img class="flex-shrink-0 object-cover mx-1 rounded-full w-9 h-9" src="images/github-mark.svg" alt="github-mark">
194
+ <div class="mx-1">
195
+ <h1 class="text-sm font-semibold text-gray-700">Made By Djacon</h1>
196
+ <p class="text-sm text-gray-500">github.com/Djacon</p>
197
+ </div>
198
+ </a>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </div>
203
+ </header>
204
+
205
+ <main class="flex-1 overflow-y-auto">
206
+ <div class="px-4 py-8 sm:px-6">
207
+ <div>
208
+ <h1 class="text-2xl font-medium text-gray-700 sm:text-3xl"> 404
209
+ </h1>
210
+
211
+ <div class="hidden mt-3 overflow-y-auto text-sm lg:items-center lg:flex whitespace-nowrap">
212
+ <a class="text-gray-600">Pages</a>
213
+ <span class="mx-1 text-gray-500">/</span>
214
+ <a href="404.html" class="text-indigo-600 hover:underline">404</a>
215
+ </div>
216
+ </div>
217
+
218
+ <div class="mt-6">
219
+ <div class="flex flex-col items-center justify-center h-96">
220
+ <h1
221
+ class="font-bold text-transparent text-7xl md:text-9xl bg-clip-text bg-gradient-to-r from-indigo-800 via-indigo-900 to-gray-900">
222
+ 404</h1>
223
+
224
+ <div
225
+ class="w-32 h-1 my-6 bg-gradient-to-r from-indigo-800 via-indigo-900 to-gray-900 md:my-6">
226
+ </div>
227
+
228
+ <h2 class="text-xl font-semibold text-gray-800 md:text-3xl">Page not found</h2>
229
+
230
+
231
+ <a href="index.html"
232
+ class="flex items-center px-4 py-2 mt-6 tracking-wide text-gray-600 capitalize transition-colors duration-200 transform bg-white rounded-md hover:bg-gray-50 focus:outline-none focus:ring focus:ring-gray-400 focus:ring-opacity-50">
233
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 mx-1.5" fill="none"
234
+ viewBox="0 0 24 24" stroke="currentColor">
235
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
236
+ d="M7 16l-4-4m0 0l4-4m-4 4h18" />
237
+ </svg>
238
+ <span class="mx-1.5">Go Back</span>
239
+ </a>
240
+ </div>
241
+ </div>
242
+ </div>
243
+ </main>
244
+ </div>
245
+ </div>
246
+ </body>
247
+
248
+ </html>
static/css/main.css ADDED
The diff for this file is too large to render. See raw diff
 
static/emotion_detection.html ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link rel="canonical" href="">
8
+ <title>Text2Feature | Detection</title>
9
+ <link rel="stylesheet" href="css/main.css">
10
+ <link rel="icon" type="image/svg+xml" href="images/logo.svg">
11
+ <script defer src="js/main.js"></script>
12
+ </head>
13
+
14
+ <body class="overflow-hidden">
15
+ <!-- Google tag (gtag.js) -->
16
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-B751Q3XBFC"></script>
17
+ <script>
18
+ window.dataLayer = window.dataLayer || [];
19
+ function gtag(){dataLayer.push(arguments);}
20
+ gtag('js', new Date());
21
+
22
+ gtag('config', 'G-B751Q3XBFC');
23
+ </script>
24
+
25
+ <div x-data="{ sidebarOpen: false }" class="relative flex h-screen text-gray-800 bg-white font-roboto">
26
+ <div x-cloak :class="sidebarOpen ? 'block' : 'hidden'" @click="sidebarOpen = false"
27
+ class="fixed inset-0 z-20 transition-opacity bg-black opacity-50 lg:hidden"></div>
28
+
29
+ <div x-cloak :class="sidebarOpen ? 'translate-x-0 ease-in' : '-translate-x-full ease-out'"
30
+ class="fixed inset-y-0 left-0 z-30 w-64 px-4 overflow-y-auto transition duration-200 transform bg-white border-r border-gray-100 lg:translate-x-0 lg:relative lg:inset-0 ">
31
+ <div class="mt-8">
32
+ <a href="index.html" class="flex items-center">
33
+ <img class="w-auto h-6" src="images/logo.svg" alt="logo">
34
+ <span class="mx-3 mt-1 font-medium text-lg">Text2<span class="text-indigo-600">Feature</span></span>
35
+ </a>
36
+ </div>
37
+
38
+ <hr class="my-6 border-gray-100">
39
+
40
+ <nav class="space-y-8">
41
+ <div class="space-y-4">
42
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">PAGES</h3>
43
+
44
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-200 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
45
+ href="index.html">
46
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
47
+ stroke="currentColor">
48
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
49
+ d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
50
+ </svg>
51
+ <span class="mx-3 font-medium capitalize">Homepage</span>
52
+ </a>
53
+
54
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-200 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
55
+ href="text_summarizer.html">
56
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
57
+ stroke="currentColor" stroke-width="2">
58
+ <path stroke-linecap="round" stroke-linejoin="round"
59
+ d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" />
60
+ </svg>
61
+ <span class="mx-3 font-medium capitalize">Text Summarizer</span>
62
+ </a>
63
+
64
+ <a class="flex items-center px-4 py-2 text-gray-600 transition-colors duration-300 transform bg-gray-200 rounded-lg bg-opacity-40"
65
+ href="emotion_detection.html">
66
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
67
+ <path d="M9 16C9.85038 16.6303 10.8846 17 12 17C13.1154 17 14.1496 16.6303 15 16" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
68
+ <path d="M16 10.5C16 11.3284 15.5523 12 15 12C14.4477 12 14 11.3284 14 10.5C14 9.67157 14.4477 9 15 9C15.5523 9 16 9.67157 16 10.5Z" fill="#1C274C"/>
69
+ <ellipse cx="9" cy="10.5" rx="1" ry="1.5" fill="#1C274C"/>
70
+ <path d="M7 3.33782C8.47087 2.48697 10.1786 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 10.1786 2.48697 8.47087 3.33782 7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
71
+ </svg>
72
+ <span class="mx-3 font-medium capitalize">Emotion Detection</span>
73
+ </a>
74
+
75
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
76
+ href="">
77
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
78
+ stroke="currentColor">
79
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
80
+ d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
81
+ </svg>
82
+ <span class="mx-3 font-medium capitalize">Project 3</span>
83
+ </a>
84
+
85
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
86
+ href="">
87
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
88
+ <path
89
+ d="M13 10V14H19V10H13ZM11 10H5V14H11V10ZM13 19H19V16H13V19ZM11 19V16H5V19H11ZM13 5V8H19V5H13ZM11 5H5V8H11V5ZM19 3C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5C3 3.89543 3.89543 3 5 3H19Z"
90
+ fill="currentColor"></path>
91
+ </svg>
92
+ <span class="mx-3 font-medium capitalize">Project 4</span>
93
+ </a>
94
+ </div>
95
+
96
+ <div class="space-y-4">
97
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">OTHER</h3>
98
+
99
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
100
+ href="/">
101
+ <svg width="24" height="24" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
102
+ <path
103
+ d="M474.89,300.41a121.43,121.43,0,0,1-121.3,121.3H247.08V392.13H353.59a91.72,91.72,0,1,0,0-183.44H87.53L151,272.2l-20.92,20.92L30.89,193.9l99.22-99.22L151,115.6l-63.5,63.51H353.59A121.43,121.43,0,0,1,474.89,300.41Z" />
104
+ </svg>
105
+ <span class="mx-3 font-medium">Visit Main Website</span>
106
+ </a>
107
+ </div>
108
+ </nav>
109
+ </div>
110
+
111
+ <div class="flex flex-col flex-1 overflow-hidden bg-gray-100">
112
+ <header class="bg-white border-b border-gray-100">
113
+ <div class="flex items-center justify-between px-4 py-4 sm:px-6">
114
+ <div class="flex items-center">
115
+ <button @click="sidebarOpen = !sidebarOpen" class="text-gray-500 lg:hidden focus:outline-none">
116
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
117
+ <path d="M4 6H20M4 12H20M4 18H11" stroke="currentColor" stroke-width="2"
118
+ stroke-linecap="round" stroke-linejoin="round" />
119
+ </svg>
120
+ </button>
121
+
122
+ <div class="relative" x-data="{ search: '' }" @click.away="search = ''">
123
+ <div class="relative mx-4 lg:mx-0">
124
+ <span class="absolute inset-y-0 left-0 flex items-center pl-3">
125
+ <svg class="w-5 h-5 text-gray-400" viewBox="0 0 24 24" fill="none">
126
+ <path
127
+ d="M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z"
128
+ stroke="currentColor" stroke-width="2" stroke-linecap="round"
129
+ stroke-linejoin="round"></path>
130
+ </svg>
131
+ </span>
132
+
133
+ <input x-model="search" type="text"
134
+ class="w-64 h-10 py-2 pl-10 pr-4 text-gray-700 placeholder-gray-400 transition-all duration-150 bg-white border border-gray-200 rounded-md focus:w-80 sm:w-64 sm:focus:w-80 focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
135
+ placeholder="Find anything...">
136
+ </div>
137
+
138
+ <div class="absolute right-0 z-20 w-full py-2 mt-2 space-y-4 overflow-hidden bg-white rounded-md shadow-xl"
139
+ x-show="search.length > 0" x-cloak
140
+ x-transition:enter="transition ease-out duration-100 transform"
141
+ x-transition:enter-start="opacity-0 scale-95"
142
+ x-transition:enter-end="opacity-100 scale-100"
143
+ x-transition:leave="transition ease-in duration-75 transform"
144
+ x-transition:leave-start="opacity-100 scale-100"
145
+ x-transition:leave-end="opacity-0 scale-95">
146
+
147
+ <div>
148
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Projects</h3>
149
+ <div class="mt-2">
150
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
151
+ href="text_summarizer.html">
152
+ Text Summarizer
153
+ </a>
154
+
155
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
156
+ href="emotion_detection.html">
157
+ Emotion Detection
158
+ </a>
159
+
160
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
161
+ href="">
162
+ Project 3
163
+ </a>
164
+
165
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
166
+ href="">
167
+ Project 4
168
+ </a>
169
+ </div>
170
+ </div>
171
+ <div>
172
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Other</h3>
173
+ <div class="mt-2">
174
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
175
+ href="/">
176
+ Visit Main Website
177
+ </a>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+
184
+ <div class="flex items-center">
185
+ <div x-data="{ dropdownOpen: false }" class="relative inline-block">
186
+ <button @click="dropdownOpen = ! dropdownOpen" class="relative z-10 flex items-center flex-shrink-0 text-sm text-gray-600 focus:outline-none">
187
+ <img class="flex-shrink-0 object-cover w-8 h-8 rounded-full" src="images/github-mark.svg" alt="github-mark">
188
+ </button>
189
+
190
+ <div class="absolute right-0 z-20 w-56 py-2 mt-2 overflow-hidden bg-white rounded-md shadow-xl rtl:right-auto rtl:left-0" x-show="dropdownOpen" x-transition:enter="transition ease-out duration-100 transform" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-75 transform" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" @click.away="dropdownOpen = false" style="display: none;">
191
+ <a target="_blank" href="https://github.com/Djacon/text2feature" class="flex items-center p-3 -mt-2 text-sm text-gray-600 transition-colors duration-200 transform hover:bg-gray-100">
192
+ <img class="flex-shrink-0 object-cover mx-1 rounded-full w-9 h-9" src="images/github-mark.svg" alt="github-mark">
193
+ <div class="mx-1">
194
+ <h1 class="text-sm font-semibold text-gray-700">Made By Djacon</h1>
195
+ <p class="text-sm text-gray-500">github.com/Djacon</p>
196
+ </div>
197
+ </a>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </header>
203
+
204
+ <main class="flex-1 overflow-y-auto">
205
+ <div class="px-4 py-8 sm:px-6">
206
+ <div>
207
+ <h1 class="text-2xl font-medium text-gray-700 sm:text-3xl">Emotion Detection</h1>
208
+
209
+ <div class="hidden mt-3 overflow-y-auto text-sm lg:items-center lg:flex whitespace-nowrap">
210
+ <a class="text-gray-600">Pages</a>
211
+ <span class="mx-1 text-gray-500">/</span>
212
+ <a href="" class="text-indigo-600 hover:underline">Emotion_Detection</a>
213
+ </div>
214
+ </div>
215
+
216
+ <div class="mt-6">
217
+ <div class="w-full p-4 bg-white rounded-lg xl:p-6">
218
+ <h1 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">Upload text</h1>
219
+
220
+ <form id='sum-form' class="mt-6 space-y-5" onsubmit="return false;">
221
+ <div>
222
+ <label for="sum-type" class="block text-sm text-gray-700 capitalize">Select Type</label>
223
+ <select id="sum-type"
224
+ class="block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40">
225
+ <option value="sum-text">Identify Text</option>
226
+ <option value="sum-file">Identify PDF</option>
227
+ </select>
228
+ </div>
229
+
230
+ <div id="sum-text-div">
231
+ <label for="description"
232
+ class="block text-sm text-gray-700 capitalize">description</label>
233
+ <textarea id="sum-text-input" required class="block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
234
+ style="min-height: 300px;"></textarea>
235
+ </div>
236
+
237
+ <div id="sum-file-div" class="hidden">
238
+ <label for="image" class="block text-sm text-gray-700 capitalize">file</label>
239
+ <label
240
+ class="flex flex-col items-center justify-center w-full h-32 mt-2 text-gray-500 border-2 border-dashed rounded-md cursor-pointer hover:text-gray-600">
241
+ <svg class="w-8 h-8" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
242
+ viewBox="0 0 20 20">
243
+ <path
244
+ d="M16.88 9.1A4 4 0 0 1 16 17H5a5 5 0 0 1-1-9.9V7a3 3 0 0 1 4.52-2.59A4.98 4.98 0 0 1 17 8c0 .38-.04.74-.12 1.1zM11 11h3l-4-4-4 4h3v3h2v-3z">
245
+ </path>
246
+ </svg>
247
+ <span class="mt-4">Select PDF File</span>
248
+ <input id="sum-file-input" type="file" class="hidden">
249
+ </label>
250
+ </div>
251
+
252
+ <div id="sum-video-div" class="hidden">
253
+ <label for="video" class="block text-sm text-gray-700 capitalize">Youtube link</label>
254
+ <input id="sum-video-input" placeholder="https://www.youtube.com/watch?v=dQw4w9WgXcQ" type="url"
255
+ class="block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40">
256
+ </div>
257
+ <p id='sum-err' class="hidden mt-2 text-sm text-red-500">Your password is too short.</p>
258
+
259
+ <div class="flex justify-end">
260
+ <button id="submit" type="button" class="w-full flex items-center justify-center px-2 py-2 text-sm font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-indigo-500 rounded-md hover:bg-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-50">
261
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
262
+ <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
263
+ <g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>
264
+ <g id="SVGRepo_iconCarrier">
265
+ <path d="M7 10L12 15L17 10" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
266
+ </g>
267
+ </svg>
268
+ <span class="mx-1">Detect</span>
269
+ </button>
270
+ </div>
271
+ </form>
272
+ </div>
273
+
274
+ <div class="w-full p-4 mt-8 bg-white rounded-lg xl:p-6">
275
+ <h1 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">Result</h1>
276
+
277
+ <div class="md:flex gap-8">
278
+ <div class="w-full md:w-1/2 grid-cols-2 mt-6">
279
+ <label for="description"
280
+ class="block text-sm text-gray-700 capitalize">Extracted Text</label>
281
+ <textarea disabled id="extracted-text"
282
+ class="minh-text block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
283
+ style="min-height: 250px;"></textarea>
284
+ </div>
285
+
286
+ <div class="w-full md:w-1/2 grid-cols-2 mt-6">
287
+ <label for="description"
288
+ class="block text-sm text-gray-700 capitalize">Emotion Prediction</label>
289
+ <textarea disabled id="summarized-text"
290
+ class="minh-text block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
291
+ style="min-height: 250px;"></textarea>
292
+ </div>
293
+ </div>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ </main>
298
+ </div>
299
+ </div>
300
+
301
+ <script src="js/detection.js"></script>
302
+ </body>
303
+ </html>
static/images/github-mark.svg ADDED
static/images/logo.svg ADDED
static/index.html ADDED
@@ -0,0 +1,781 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link rel="canonical" href="">
8
+ <title>Text2Feature | Homepage</title>
9
+ <link rel="stylesheet" href="css/main.css">
10
+ <link rel="icon" type="image/svg+xml" href="images/logo.svg">
11
+ <script defer src="js/main.js"></script>
12
+ </head>
13
+
14
+ <body class="overflow-hidden">
15
+ <!-- Google tag (gtag.js) -->
16
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-B751Q3XBFC"></script>
17
+ <script>
18
+ window.dataLayer = window.dataLayer || [];
19
+ function gtag(){dataLayer.push(arguments);}
20
+ gtag('js', new Date());
21
+
22
+ gtag('config', 'G-B751Q3XBFC');
23
+ </script>
24
+
25
+ <div x-data="{ sidebarOpen: false }" class="relative flex h-screen text-gray-800 bg-white font-roboto">
26
+ <div x-cloak :class="sidebarOpen ? 'block' : 'hidden'" @click="sidebarOpen = false"
27
+ class="fixed inset-0 z-20 transition-opacity bg-black opacity-50 lg:hidden"></div>
28
+
29
+ <div x-cloak :class="sidebarOpen ? 'translate-x-0 ease-in' : '-translate-x-full ease-out'"
30
+ class="fixed inset-y-0 left-0 z-30 w-64 px-4 overflow-y-auto transition duration-200 transform bg-white border-r border-gray-100 lg:translate-x-0 lg:relative lg:inset-0 ">
31
+ <div class="mt-8">
32
+ <a href="index.html" class="flex items-center">
33
+ <img class="w-auto h-6" src="images/logo.svg" alt="logo">
34
+ <span class="mx-3 mt-1 font-medium text-lg">Text2<span class="text-indigo-600">Feature</span></span>
35
+ </a>
36
+ </div>
37
+
38
+ <hr class="my-6 border-gray-100">
39
+
40
+ <nav class="space-y-8">
41
+ <div class="space-y-4">
42
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">PAGES</h3>
43
+
44
+ <a class="flex items-center px-4 py-2 text-gray-600 transition-colors duration-200 transform bg-gray-200 rounded-lg bg-opacity-40"
45
+ href="index.html">
46
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
47
+ stroke="currentColor">
48
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
49
+ d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
50
+ </svg>
51
+ <span class="mx-3 font-medium capitalize">Homepage</span>
52
+ </a>
53
+
54
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
55
+ href="text_summarizer.html">
56
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
57
+ stroke="currentColor" stroke-width="2">
58
+ <path stroke-linecap="round" stroke-linejoin="round"
59
+ d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" />
60
+ </svg>
61
+ <span class="mx-3 font-medium capitalize">Text Summarizer</span>
62
+ </a>
63
+
64
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
65
+ href="emotion_detection.html">
66
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
67
+ <path d="M9 16C9.85038 16.6303 10.8846 17 12 17C13.1154 17 14.1496 16.6303 15 16" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
68
+ <path d="M16 10.5C16 11.3284 15.5523 12 15 12C14.4477 12 14 11.3284 14 10.5C14 9.67157 14.4477 9 15 9C15.5523 9 16 9.67157 16 10.5Z" fill="#1C274C"/>
69
+ <ellipse cx="9" cy="10.5" rx="1" ry="1.5" fill="#1C274C"/>
70
+ <path d="M7 3.33782C8.47087 2.48697 10.1786 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 10.1786 2.48697 8.47087 3.33782 7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
71
+ </svg>
72
+ <span class="mx-3 font-medium capitalize">Emotion Detection</span>
73
+ </a>
74
+
75
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
76
+ href="">
77
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
78
+ stroke="currentColor">
79
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
80
+ d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
81
+ </svg>
82
+ <span class="mx-3 font-medium capitalize">Project 3</span>
83
+ </a>
84
+
85
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
86
+ href="">
87
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
88
+ <path
89
+ d="M13 10V14H19V10H13ZM11 10H5V14H11V10ZM13 19H19V16H13V19ZM11 19V16H5V19H11ZM13 5V8H19V5H13ZM11 5H5V8H11V5ZM19 3C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5C3 3.89543 3.89543 3 5 3H19Z"
90
+ fill="currentColor"></path>
91
+ </svg>
92
+ <span class="mx-3 font-medium capitalize">Project 4</span>
93
+ </a>
94
+ </div>
95
+
96
+ <div class="space-y-4">
97
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">OTHER</h3>
98
+
99
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
100
+ href="/">
101
+ <svg width="24" height="24" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
102
+ <path
103
+ d="M474.89,300.41a121.43,121.43,0,0,1-121.3,121.3H247.08V392.13H353.59a91.72,91.72,0,1,0,0-183.44H87.53L151,272.2l-20.92,20.92L30.89,193.9l99.22-99.22L151,115.6l-63.5,63.51H353.59A121.43,121.43,0,0,1,474.89,300.41Z" />
104
+ </svg>
105
+ <span class="mx-3 font-medium">Visit Main Website</span>
106
+ </a>
107
+ </div>
108
+ </nav>
109
+ </div>
110
+
111
+ <div class="flex flex-col flex-1 overflow-hidden bg-gray-100">
112
+ <header class="bg-white border-b border-gray-100">
113
+ <div class="flex items-center justify-between px-4 py-4 sm:px-6">
114
+ <div class="flex items-center">
115
+ <button @click="sidebarOpen = !sidebarOpen" class="text-gray-500 lg:hidden focus:outline-none">
116
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
117
+ <path d="M4 6H20M4 12H20M4 18H11" stroke="currentColor" stroke-width="2"
118
+ stroke-linecap="round" stroke-linejoin="round" />
119
+ </svg>
120
+ </button>
121
+
122
+ <div class="relative" x-data="{ search: '' }" @click.away="search = ''">
123
+ <div class="relative mx-4 lg:mx-0">
124
+ <span class="absolute inset-y-0 left-0 flex items-center pl-3">
125
+ <svg class="w-5 h-5 text-gray-400" viewBox="0 0 24 24" fill="none">
126
+ <path
127
+ d="M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z"
128
+ stroke="currentColor" stroke-width="2" stroke-linecap="round"
129
+ stroke-linejoin="round"></path>
130
+ </svg>
131
+ </span>
132
+
133
+ <input x-model="search" type="text"
134
+ class="w-64 h-10 py-2 pl-10 pr-4 text-gray-700 placeholder-gray-400 transition-all duration-150 bg-white border border-gray-200 rounded-md focus:w-80 sm:w-64 sm:focus:w-80 focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
135
+ placeholder="Find anything...">
136
+ </div>
137
+
138
+ <div class="absolute right-0 z-20 w-full py-2 mt-2 space-y-4 overflow-hidden bg-white rounded-md shadow-xl"
139
+ x-show="search.length > 0" x-cloak
140
+ x-transition:enter="transition ease-out duration-100 transform"
141
+ x-transition:enter-start="opacity-0 scale-95"
142
+ x-transition:enter-end="opacity-100 scale-100"
143
+ x-transition:leave="transition ease-in duration-75 transform"
144
+ x-transition:leave-start="opacity-100 scale-100"
145
+ x-transition:leave-end="opacity-0 scale-95">
146
+
147
+ <div>
148
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Projects</h3>
149
+ <div class="mt-2">
150
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
151
+ href="text_summarizer.html">
152
+ Text Summarizer
153
+ </a>
154
+
155
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
156
+ href="emotion_detection.html">
157
+ Emotion Detection
158
+ </a>
159
+
160
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
161
+ href="">
162
+ Project 3
163
+ </a>
164
+
165
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
166
+ href="">
167
+ Project 4
168
+ </a>
169
+ </div>
170
+ </div>
171
+ <div>
172
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Other</h3>
173
+ <div class="mt-2">
174
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
175
+ href="/">
176
+ Visit Main Website
177
+ </a>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+
184
+ <div class="flex items-center">
185
+ <div x-data="{ dropdownOpen: false }" class="relative inline-block">
186
+ <button @click="dropdownOpen = ! dropdownOpen" class="relative z-10 flex items-center flex-shrink-0 text-sm text-gray-600 focus:outline-none">
187
+ <img class="flex-shrink-0 object-cover w-8 h-8 rounded-full" src="images/github-mark.svg" alt="github-mark">
188
+ </button>
189
+
190
+ <div class="absolute right-0 z-20 w-56 py-2 mt-2 overflow-hidden bg-white rounded-md shadow-xl rtl:right-auto rtl:left-0" x-show="dropdownOpen" x-transition:enter="transition ease-out duration-100 transform" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-75 transform" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" @click.away="dropdownOpen = false" style="display: none;">
191
+ <a target="_blank" href="https://github.com/Djacon/text2feature" class="flex items-center p-3 -mt-2 text-sm text-gray-600 transition-colors duration-200 transform hover:bg-gray-100">
192
+ <img class="flex-shrink-0 object-cover mx-1 rounded-full w-9 h-9" src="images/github-mark.svg" alt="github-mark">
193
+ <div class="mx-1">
194
+ <h1 class="text-sm font-semibold text-gray-700">Made By Djacon</h1>
195
+ <p class="text-sm text-gray-500">github.com/Djacon</p>
196
+ </div>
197
+ </a>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </header>
203
+
204
+ <main class="flex-1 overflow-y-auto">
205
+ <div class="px-4 py-8 sm:px-6">
206
+ <div>
207
+ <h1 class="text-2xl font-medium text-gray-700 sm:text-3xl">Homepage</h1>
208
+
209
+ <div class="hidden mt-3 overflow-y-auto text-sm lg:items-center lg:flex whitespace-nowrap">
210
+ <a class="text-gray-600">Pages</a>
211
+ <span class="mx-1 text-gray-500">/</span>
212
+ <a href="" class="text-indigo-600 hover:underline">Homepage</a>
213
+ </div>
214
+ </div>
215
+
216
+ <div class="mt-6">
217
+ <section class="grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-4">
218
+ <div class="flex items-center justify-between px-6 py-3 bg-white rounded-lg shadow-sm">
219
+ <div>
220
+ <p class="font-medium text-gray-500">Today’s Users</p>
221
+
222
+ <div class="flex items-end">
223
+ <h2 class="mt-1 text-2xl font-medium text-gray-800">23</h2>
224
+ <span class="mx-2 text-indigo-500">
225
+ +55%
226
+ </span>
227
+ </div>
228
+ </div>
229
+
230
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
231
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
232
+ viewBox="0 0 24 24" stroke="currentColor">
233
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
234
+ d="M17 9V7a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2m2 4h10a2 2 0 002-2v-6a2 2 0 00-2-2H9a2 2 0 00-2 2v6a2 2 0 002 2zm7-5a2 2 0 11-4 0 2 2 0 014 0z" />
235
+ </svg>
236
+ </div>
237
+ </div>
238
+
239
+ <div class="flex items-center justify-between px-6 py-3 bg-white rounded-lg shadow-sm">
240
+ <div>
241
+ <p class="font-medium text-gray-500">Total Users</p>
242
+
243
+ <div class="flex items-end">
244
+ <h2 class="mt-1 text-2xl font-medium text-gray-800">54</h2>
245
+ <span class="mx-2 text-indigo-500">
246
+ +5%
247
+ </span>
248
+ </div>
249
+ </div>
250
+
251
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
252
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
253
+ viewBox="0 0 24 24" stroke="currentColor">
254
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
255
+ d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
256
+ </svg>
257
+ </div>
258
+ </div>
259
+
260
+ <div class="flex items-center justify-between px-6 py-3 bg-white rounded-lg shadow-sm">
261
+ <div>
262
+ <p class="font-medium text-gray-500">New Users</p>
263
+
264
+ <div class="flex items-end">
265
+ <h2 class="mt-1 text-2xl font-medium text-gray-800">+15</h2>
266
+ <span class="mx-2 text-green-500">
267
+ +34%
268
+ </span>
269
+ </div>
270
+ </div>
271
+
272
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
273
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
274
+ viewBox="0 0 24 24" stroke="currentColor">
275
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
276
+ d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
277
+ </svg>
278
+ </div>
279
+ </div>
280
+
281
+ <div class="flex items-center justify-between px-6 py-3 bg-white rounded-lg shadow-sm">
282
+ <div>
283
+ <p class="font-medium text-gray-500">Total Projects</p>
284
+
285
+ <div class="flex items-end">
286
+ <h2 class="mt-1 text-2xl font-medium text-gray-800">2</h2>
287
+ </div>
288
+ </div>
289
+
290
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
291
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
292
+ viewBox="0 0 24 24" stroke="currentColor">
293
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
294
+ d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z" />
295
+ </svg>
296
+ </div>
297
+ </div>
298
+ </section>
299
+
300
+ <section class="mt-6 space-y-6">
301
+ <div class="w-full p-4 bg-white rounded-lg xl:p-6">
302
+ <h1 class="text-lg font-medium text-gray-700 sm:text-xl md:text-2xl">
303
+ Welcome to Text2<span class="text-indigo-600">Feature</span>!
304
+ </h1>
305
+ <p class="mt-4 text-gray-800">
306
+ – your gateway to the world of text processing and analysis! Our tools empower you to
307
+ easily and swiftly process textual information from any source, be it files, web pages, or text data. We provide
308
+ you with powerful instruments to search for and extract key 'features' within text, aiding you in extracting
309
+ valuable insights and making informed decisions.
310
+ </p>
311
+ <p class="mt-4 text-gray-800">
312
+ With Text2Feature, you can:
313
+ </p>
314
+ <ul class="mt-2 text-gray-800" style="list-style-type: disc; list-style-position: inside;">
315
+ <li>Import and analyze text files in various formats.</li>
316
+ <li>Search for and highlight important features within text for further exploration.</li>
317
+ <li>Structure and organize your textual content for more effective analysis.</li>
318
+ <li>Utilize a range of tools and methods for text processing and knowledge extraction.</li>
319
+ </ul>
320
+ <p class="mt-4 text-gray-800">
321
+ Join Text2Feature and transform text into valuable knowledge effortlessly. Get started now and bring your
322
+ research and analytical ideas to life!
323
+ </p>
324
+ </div>
325
+ </section>
326
+
327
+ <!-- <section class="mt-6 space-y-6">
328
+ <div class="w-full p-4 bg-white rounded-lg xl:p-6">
329
+ <div class="mb-5 rounded-lg bg-gradient-to-r from-indigo-900 to-gray-900">
330
+ <canvas id="barChart" height="80"></canvas>
331
+ </div>
332
+
333
+ <div>
334
+ <h1 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">
335
+ active users</h1>
336
+
337
+ <p class="mt-2 text-gray-500">
338
+ <span class="text-green-500">(+10)</span>&nbsp;than last week
339
+ </p>
340
+
341
+ <div class="grid gap-12 mt-8 sm:grid-cols-2 md:grid-cols-4">
342
+ <div>
343
+ <div class="flex items-center capitalize">
344
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
345
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
346
+ viewBox="0 0 24 24" stroke="currentColor">
347
+ <path stroke-linecap="round" stroke-linejoin="round"
348
+ stroke-width="2"
349
+ d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
350
+ </svg>
351
+ </div>
352
+
353
+ <div class="mx-3 font-medium text-gray-500 ">users</div>
354
+ </div>
355
+
356
+ <div class="mt-3">
357
+ <h1 class="text-xl font-semibold text-gray-600">23,212</h1>
358
+
359
+ <div class="w-full mt-3 overflow-hidden bg-gray-200 rounded-full">
360
+ <div class="w-8/12 h-1 bg-indigo-500"></div>
361
+ </div>
362
+ </div>
363
+ </div>
364
+
365
+ <div>
366
+ <div class="flex items-center capitalize">
367
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
368
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
369
+ viewBox="0 0 24 24" stroke="currentColor">
370
+ <path stroke-linecap="round" stroke-linejoin="round"
371
+ stroke-width="2"
372
+ d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122" />
373
+ </svg>
374
+ </div>
375
+
376
+ <div class="mx-3 font-medium text-gray-500 ">Clicks</div>
377
+ </div>
378
+
379
+ <div class="mt-3">
380
+ <h1 class="text-xl font-semibold text-gray-600">3,125m</h1>
381
+
382
+ <div class="w-full mt-3 overflow-hidden bg-gray-200 rounded-full">
383
+ <div class="w-11/12 h-1 bg-indigo-500"></div>
384
+ </div>
385
+ </div>
386
+ </div>
387
+
388
+ <div>
389
+ <div class="flex items-center capitalize">
390
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
391
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
392
+ viewBox="0 0 24 24" stroke="currentColor">
393
+ <path stroke-linecap="round" stroke-linejoin="round"
394
+ stroke-width="2"
395
+ d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z" />
396
+ </svg>
397
+ </div>
398
+
399
+ <div class="mx-3 font-medium text-gray-500 ">Sales</div>
400
+ </div>
401
+
402
+ <div class="mt-3">
403
+ <h1 class="text-xl font-semibold text-gray-600">$89,000</h1>
404
+
405
+ <div class="w-full mt-3 overflow-hidden bg-gray-200 rounded-full">
406
+ <div class="w-5/6 h-1 bg-indigo-500"></div>
407
+ </div>
408
+ </div>
409
+ </div>
410
+
411
+ <div>
412
+ <div class="flex items-center capitalize">
413
+ <div class="p-2 text-white bg-indigo-500 rounded-lg">
414
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none"
415
+ viewBox="0 0 24 24" stroke="currentColor">
416
+ <path stroke-linecap="round" stroke-linejoin="round"
417
+ stroke-width="2"
418
+ d="M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4" />
419
+ </svg>
420
+ </div>
421
+
422
+ <div class="mx-3 font-medium text-gray-500 ">Items</div>
423
+ </div>
424
+
425
+ <div class="mt-3">
426
+ <h1 class="text-xl font-semibold text-gray-600">260</h1>
427
+
428
+ <div class="w-full mt-3 overflow-hidden bg-gray-200 rounded-full">
429
+ <div class="w-2/3 h-1 bg-indigo-500"></div>
430
+ </div>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ </div>
435
+ </div>
436
+ </section> -->
437
+
438
+ <!-- <section class="mt-6 space-y-6 xl:flex xl:space-y-0 xl:-mx-3">
439
+ <div class="w-full p-4 bg-white rounded-lg shadow-sm xl:mx-3 xl:w-2/3 xl:p-6">
440
+ <h2 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">Projects</h2>
441
+
442
+ <p class="flex items-center mt-2 text-gray-500">
443
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 text-green-500"
444
+ viewBox="0 0 20 20" fill="currentColor">
445
+ <path fill-rule="evenodd"
446
+ d="M6.267 3.455a3.066 3.066 0 001.745-.723 3.066 3.066 0 013.976 0 3.066 3.066 0 001.745.723 3.066 3.066 0 012.812 2.812c.051.643.304 1.254.723 1.745a3.066 3.066 0 010 3.976 3.066 3.066 0 00-.723 1.745 3.066 3.066 0 01-2.812 2.812 3.066 3.066 0 00-1.745.723 3.066 3.066 0 01-3.976 0 3.066 3.066 0 00-1.745-.723 3.066 3.066 0 01-2.812-2.812 3.066 3.066 0 00-.723-1.745 3.066 3.066 0 010-3.976 3.066 3.066 0 00.723-1.745 3.066 3.066 0 012.812-2.812zm7.44 5.252a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
447
+ clip-rule="evenodd" />
448
+ </svg>
449
+
450
+ <span class="mx-2">30 done this month</span>
451
+ </p>
452
+
453
+ <div class="flex flex-col mt-8">
454
+ <div class="overflow-x-auto">
455
+ <div class="inline-block min-w-full align-middle">
456
+ <div class="overflow-hidden">
457
+ <table class="min-w-full divide-y divide-gray-200">
458
+ <thead>
459
+ <tr>
460
+ <th scope="col"
461
+ class="px-6 py-3 text-sm font-medium tracking-wider text-left text-gray-500 uppercase rtl:text-right">
462
+ <span>COMPANIES</span>
463
+ </th>
464
+ <th scope="col"
465
+ class="px-6 py-3 text-sm font-medium tracking-wider text-left text-gray-500 uppercase rtl:text-right">
466
+ <span>MEMBERS</span>
467
+ </th>
468
+ <th scope="col"
469
+ class="px-6 py-3 text-sm font-medium tracking-wider text-left text-gray-500 uppercase rtl:text-right">
470
+ <span>BUDGET</span>
471
+ </th>
472
+ <th scope="col"
473
+ class="px-6 py-3 text-sm font-medium tracking-wider text-left text-gray-500 uppercase rtl:text-right">
474
+ <span>COMPLETION</span>
475
+ </th>
476
+ </tr>
477
+ </thead>
478
+
479
+ <tbody class="bg-white divide-y divide-gray-200">
480
+ <tr>
481
+ <td
482
+ class="px-6 py-4 font-medium text-gray-800 whitespace-nowrap">
483
+ Chakra Soft UI Version
484
+ </td>
485
+
486
+ <td class="px-6 py-4 font-medium whitespace-nowrap">
487
+ <div
488
+ class="relative z-0 flex -space-x-1 overflow-hidden">
489
+ <img class="relative z-30 inline-block w-6 h-6 rounded-full ring-2 ring-white"
490
+ src="https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
491
+ alt="">
492
+ <img class="relative z-20 inline-block w-6 h-6 rounded-full ring-2 ring-white"
493
+ src="https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
494
+ alt="">
495
+ <img class="relative z-10 inline-block w-6 h-6 rounded-full ring-2 ring-white"
496
+ src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80"
497
+ alt="">
498
+ <img class="relative z-0 inline-block w-6 h-6 rounded-full ring-2 ring-white"
499
+ src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
500
+ alt="">
501
+ </div>
502
+ </td>
503
+
504
+ <td
505
+ class="px-6 py-4 font-medium text-gray-700 whitespace-nowrap">
506
+ $128.00
507
+ </td>
508
+
509
+ <td
510
+ class="px-6 py-4 text-gray-700 capitalize whitespace-nowrap">
511
+ <span class="font-medium text-indigo-500">66%</span>
512
+ <div
513
+ class="w-full h-2 overflow-hidden bg-gray-200 rounded-full">
514
+ <div class="w-8/12 h-full bg-indigo-500"></div>
515
+ </div>
516
+ </td>
517
+ </tr>
518
+
519
+ <tr>
520
+ <td
521
+ class="px-6 py-4 font-medium text-gray-800 whitespace-nowrap">
522
+ Add Progress Track
523
+ </td>
524
+
525
+ <td class="px-6 py-4 font-medium whitespace-nowrap">
526
+ <div
527
+ class="relative z-0 flex -space-x-1 overflow-hidden">
528
+ <img class="relative z-30 inline-block w-6 h-6 rounded-full ring-2 ring-white"
529
+ src="https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
530
+ alt="">
531
+ <img class="relative z-10 inline-block w-6 h-6 rounded-full ring-2 ring-white"
532
+ src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80"
533
+ alt="">
534
+ <img class="relative z-0 inline-block w-6 h-6 rounded-full ring-2 ring-white"
535
+ src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
536
+ alt="">
537
+ </div>
538
+ </td>
539
+
540
+ <td
541
+ class="px-6 py-4 font-medium text-gray-700 whitespace-nowrap">
542
+ $220.00
543
+ </td>
544
+
545
+ <td
546
+ class="px-6 py-4 text-gray-700 capitalize whitespace-nowrap">
547
+ <span class="font-medium text-indigo-500">25%</span>
548
+ <div
549
+ class="w-full h-2 overflow-hidden bg-gray-200 rounded-full">
550
+ <div class="w-3/12 h-full bg-indigo-500 "></div>
551
+ </div>
552
+ </td>
553
+ </tr>
554
+
555
+ <tr>
556
+ <td
557
+ class="px-6 py-4 font-medium text-gray-800 whitespace-nowrap">
558
+ Fix Platform Errors
559
+ </td>
560
+
561
+ <td class="px-6 py-4 font-medium whitespace-nowrap">
562
+ <div
563
+ class="relative z-0 flex -space-x-1 overflow-hidden">
564
+ <img class="relative z-10 inline-block w-6 h-6 rounded-full ring-2 ring-white"
565
+ src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80"
566
+ alt="">
567
+ <img class="relative z-0 inline-block w-6 h-6 rounded-full ring-2 ring-white"
568
+ src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
569
+ alt="">
570
+ </div>
571
+ </td>
572
+
573
+ <td
574
+ class="px-6 py-4 font-medium text-gray-700 whitespace-nowrap">
575
+ $89.00
576
+ </td>
577
+
578
+ <td
579
+ class="px-6 py-4 text-gray-700 capitalize whitespace-nowrap">
580
+ <span class="font-medium text-indigo-500">100%</span>
581
+ <div
582
+ class="w-full h-2 overflow-hidden bg-gray-200 rounded-full">
583
+ <div class="w-full h-full bg-indigo-500"></div>
584
+ </div>
585
+ </td>
586
+ </tr>
587
+
588
+ <tr>
589
+ <td
590
+ class="px-6 py-4 font-medium text-gray-800 whitespace-nowrap">
591
+ Chakra Soft UI Version
592
+ </td>
593
+
594
+ <td class="px-6 py-4 font-medium whitespace-nowrap">
595
+ <div
596
+ class="relative z-0 flex -space-x-1 overflow-hidden">
597
+ <img class="relative z-40 inline-block w-6 h-6 rounded-full ring-2 ring-white"
598
+ src="https://images.unsplash.com/photo-1570295999919-56ceb5ecca61?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=880&q=80"
599
+ alt="">
600
+ <img class="relative z-30 inline-block w-6 h-6 rounded-full ring-2 ring-white"
601
+ src="https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
602
+ alt="">
603
+ <img class="relative z-20 inline-block w-6 h-6 rounded-full ring-2 ring-white"
604
+ src="https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
605
+ alt="">
606
+ <img class="relative z-10 inline-block w-6 h-6 rounded-full ring-2 ring-white"
607
+ src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80"
608
+ alt="">
609
+ <img class="relative z-0 inline-block w-6 h-6 rounded-full ring-2 ring-white"
610
+ src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
611
+ alt="">
612
+ </div>
613
+ </td>
614
+
615
+ <td
616
+ class="px-6 py-4 font-medium text-gray-700 whitespace-nowrap">
617
+ $256.00
618
+ </td>
619
+
620
+ <td
621
+ class="px-6 py-4 text-gray-700 capitalize whitespace-nowrap">
622
+ <span class="font-medium text-indigo-500">75%</span>
623
+ <div
624
+ class="w-full h-2 overflow-hidden bg-gray-200 rounded-full">
625
+ <div class="w-9/12 h-full bg-indigo-500 "></div>
626
+ </div>
627
+ </td>
628
+ </tr>
629
+ </tbody>
630
+ </table>
631
+ </div>
632
+ </div>
633
+ </div>
634
+ </div>
635
+ </div>
636
+
637
+ <div class="w-full p-4 bg-white rounded-lg shadow-sm xl:mx-3 xl:w-1/3 xl:p-6">
638
+ <h2 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">Orders overview</h2>
639
+
640
+ <p class="mt-2 text-gray-500">
641
+ <span class="text-green-500">+30%</span>&nbsp;this month
642
+ </p>
643
+
644
+ <div class="flow-root mt-6">
645
+ <ul class="-mb-8">
646
+ <li>
647
+ <div class="relative pb-8">
648
+ <span
649
+ class="absolute top-4 left-4 rtl:right-4 rtl:left-auto -ml-px h-full w-0.5 bg-gray-200"
650
+ aria-hidden="true"></span>
651
+ <div class="relative flex">
652
+ <div>
653
+ <span
654
+ class="flex items-center justify-center w-8 h-8 bg-white rounded-full ring-8 ring-white">
655
+ <svg xmlns="http://www.w3.org/2000/svg"
656
+ class="w-5 h-5 text-blue-500" viewBox="0 0 20 20"
657
+ fill="currentColor">
658
+ <path
659
+ d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" />
660
+ </svg>
661
+ </span>
662
+ </div>
663
+
664
+ <div class="min-w-0 flex-1 pt-1.5 mx-3">
665
+ <div>
666
+ <p class="text-sm font-medium text-gray-700">$2400, Design
667
+ changes</p>
668
+ <p
669
+ class="w-32 mt-1 text-sm text-gray-500 truncate sm:w-auto">
670
+ 22 DEC 7:20 PM</p>
671
+ </div>
672
+ </div>
673
+ </div>
674
+ </div>
675
+ </li>
676
+
677
+ <li>
678
+ <div class="relative pb-8">
679
+ <span
680
+ class="absolute top-4 left-4 -ml-px rtl:right-4 rtl:left-auto h-full w-0.5 bg-gray-200"
681
+ aria-hidden="true"></span>
682
+ <div class="relative flex">
683
+ <div>
684
+ <span
685
+ class="flex items-center justify-center w-8 h-8 bg-white rounded-full ring-8 ring-white">
686
+ <svg xmlns="http://www.w3.org/2000/svg"
687
+ class="w-5 h-5 text-indigo-500" viewBox="0 0 20 20"
688
+ fill="currentColor">
689
+ <path fill-rule="evenodd"
690
+ d="M10 2a4 4 0 00-4 4v1H5a1 1 0 00-.994.89l-1 9A1 1 0 004 18h12a1 1 0 00.994-1.11l-1-9A1 1 0 0015 7h-1V6a4 4 0 00-4-4zm2 5V6a2 2 0 10-4 0v1h4zm-6 3a1 1 0 112 0 1 1 0 01-2 0zm7-1a1 1 0 100 2 1 1 0 000-2z"
691
+ clip-rule="evenodd" />
692
+ </svg>
693
+ </span>
694
+ </div>
695
+
696
+ <div class="min-w-0 flex-1 pt-1.5 mx-3">
697
+ <div>
698
+ <p class="text-sm font-medium text-gray-700">New order
699
+ #4219423</p>
700
+ <p
701
+ class="w-32 mt-1 text-sm text-gray-500 truncate sm:w-auto">
702
+ 21 DEC 11:21 PM</p>
703
+ </div>
704
+ </div>
705
+ </div>
706
+ </div>
707
+ </li>
708
+
709
+ <li>
710
+ <div class="relative pb-8">
711
+ <span
712
+ class="absolute top-4 left-4 -ml-px rtl:right-4 rtl:left-auto h-full w-0.5 bg-gray-200"
713
+ aria-hidden="true"></span>
714
+ <div class="relative flex">
715
+ <div>
716
+ <span
717
+ class="flex items-center justify-center w-8 h-8 bg-white rounded-full ring-8 ring-white">
718
+ <svg xmlns="http://www.w3.org/2000/svg"
719
+ class="w-5 h-5 text-cyan-500" viewBox="0 0 20 20"
720
+ fill="currentColor">
721
+ <path d="M4 4a2 2 0 00-2 2v1h16V6a2 2 0 00-2-2H4z" />
722
+ <path fill-rule="evenodd"
723
+ d="M18 9H2v5a2 2 0 002 2h12a2 2 0 002-2V9zM4 13a1 1 0 011-1h1a1 1 0 110 2H5a1 1 0 01-1-1zm5-1a1 1 0 100 2h1a1 1 0 100-2H9z"
724
+ clip-rule="evenodd" />
725
+ </svg>
726
+ </span>
727
+ </div>
728
+
729
+ <div class="min-w-0 flex-1 pt-1.5 mx-3">
730
+ <div>
731
+ <p class="text-sm font-medium text-gray-700">New card added
732
+ for order #3210145</p>
733
+ <p
734
+ class="w-32 mt-1 text-sm text-gray-500 truncate sm:w-auto">
735
+ 21 DEC 11:21 PM</p>
736
+ </div>
737
+ </div>
738
+ </div>
739
+ </div>
740
+ </li>
741
+
742
+ <li>
743
+ <div class="relative pb-8">
744
+ <div class="relative flex">
745
+ <div>
746
+ <span
747
+ class="flex items-center justify-center w-8 h-8 bg-white rounded-full ring-8 ring-white">
748
+ <svg xmlns="http://www.w3.org/2000/svg"
749
+ class="w-5 h-5 text-green-500" viewBox="0 0 20 20"
750
+ fill="currentColor">
751
+ <path
752
+ d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" />
753
+ </svg>
754
+ </span>
755
+ </div>
756
+
757
+
758
+ <div class="min-w-0 flex-1 pt-1.5 mx-3">
759
+ <div>
760
+ <p class="text-sm font-medium text-gray-700">Server Payments
761
+ for April</p>
762
+ <p
763
+ class="w-32 mt-1 text-sm text-gray-500 truncate sm:w-auto">
764
+ 21 DEC 9:28 PM</p>
765
+ </div>
766
+ </div>
767
+ </div>
768
+ </div>
769
+ </li>
770
+ </ul>
771
+ </div>
772
+ </div>
773
+ </section> -->
774
+ </div>
775
+ </div>
776
+ </main>
777
+ </div>
778
+ </div>
779
+ </body>
780
+
781
+ </html>
static/js/detection.js ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Form Divs
2
+ const form = document.getElementById("sum-form");
3
+ const sumText = document.getElementById("sum-text-div");
4
+ const sumFile = document.getElementById("sum-file-div");
5
+ const sumVideo = document.getElementById("sum-video-div");
6
+
7
+ // Form Data
8
+ const selectOption = document.getElementById("sum-type");
9
+ const sumTextInput = document.getElementById("sum-text-input");
10
+ const sumVideoInput = document.getElementById("sum-video-input");
11
+
12
+ // Error Output Section
13
+ const sumError = document.getElementById("sum-err");
14
+
15
+ // Result Section
16
+ const extractText = document.getElementById("extracted-text");
17
+ const summaryText = document.getElementById("summarized-text");
18
+
19
+
20
+ // In progress...
21
+ function _summarize(text) {
22
+ var xhr = new XMLHttpRequest();
23
+ xhr.open("POST", "/predict_emotion", true);
24
+ xhr.setRequestHeader("Content-Type", "application/json");
25
+
26
+ var data = JSON.stringify({ "text": text });
27
+
28
+ xhr.onreadystatechange = function () {
29
+ if (xhr.readyState === 4 && xhr.status === 200) {
30
+ resp = xhr.responseText;
31
+ result = Object.entries(JSON.parse(resp)).sort((a, b) => b[1] - a[1]).map(a => a[0]+': '+a[1]).join('\n');
32
+ summaryText.value = result;
33
+ }
34
+ };
35
+
36
+ xhr.send(data)
37
+ return;
38
+ }
39
+
40
+ // In progress...
41
+ function _extractPDF(file) {
42
+ return file;
43
+ }
44
+
45
+ // In progress...
46
+ function _getCaptions(src) {
47
+ return src;
48
+ }
49
+
50
+
51
+ function summarize(event) {
52
+ event.preventDefault();
53
+
54
+ if (selectOption.value === 'sum-video' && !sumVideoInput.value.startsWith('https://www.youtube.com/watch?v=')) {
55
+ sumError.innerText = 'Invalid Youtube Link';
56
+ sumError.classList.remove('hidden');
57
+ return;
58
+ }
59
+
60
+ switch (selectOption.value) {
61
+ case 'sum-text':
62
+ let value = sumTextInput.value
63
+ if (value === '') {
64
+ sumError.innerText = `You need to input some text`;
65
+ sumError.classList.remove('hidden');
66
+ return;
67
+ }
68
+ break;
69
+ case 'sum-file':
70
+ sumError.innerText = 'This option is not supported, yet';
71
+ sumError.classList.remove('hidden');
72
+ return;
73
+ }
74
+
75
+ sumError.classList.add('hidden');
76
+
77
+ // Here we can finally summarize data
78
+ let extractedText = '';
79
+ switch (selectOption.value) {
80
+ case 'sum-text':
81
+ extractedText = sumTextInput.value;
82
+ break;
83
+ case 'sum-file':
84
+ extractedText = _extractPDF(sumFileInput);
85
+ break;
86
+ case 'sum-video':
87
+ extractedText = _getCaptions(sumVideoInput.value);
88
+ break;
89
+ }
90
+
91
+ extractText.value = extractedText;
92
+ _summarize(extractedText);
93
+ }
94
+
95
+
96
+ document.addEventListener("DOMContentLoaded", function () {
97
+ selectOption.addEventListener("change", function () {
98
+ switch (selectOption.value) {
99
+ case 'sum-text':
100
+ sumText.classList.remove('hidden');
101
+ sumFile.classList.add('hidden');
102
+ sumVideo.classList.add('hidden');
103
+
104
+ sumTextInput.setAttribute("required", "");
105
+ sumVideoInput.removeAttribute("required");
106
+ break;
107
+ case 'sum-file':
108
+ sumText.classList.add('hidden');
109
+ sumFile.classList.remove('hidden');
110
+ sumVideo.classList.add('hidden');
111
+
112
+ sumTextInput.removeAttribute("required");
113
+ sumVideoInput.removeAttribute("required");
114
+ break;
115
+ case 'sum-video':
116
+ sumText.classList.add('hidden');
117
+ sumFile.classList.add('hidden');
118
+ sumVideo.classList.remove('hidden');
119
+
120
+ sumTextInput.removeAttribute("required");
121
+ sumVideoInput.setAttribute("required", "");
122
+ break;
123
+ }
124
+ sumError.classList.add('hidden');
125
+ });
126
+ });
127
+
128
+ document.addEventListener("DOMContentLoaded", function () {
129
+ var submitButton = document.getElementById("submit");
130
+
131
+ submitButton.addEventListener("click", function (e) {
132
+ summarize(e);
133
+ });
134
+ });
static/js/main.js ADDED
The diff for this file is too large to render. See raw diff
 
static/js/summarizer.js ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Form Divs
2
+ const form = document.getElementById("sum-form");
3
+ const sumText = document.getElementById("sum-text-div");
4
+ const sumFile = document.getElementById("sum-file-div");
5
+ const sumVideo = document.getElementById("sum-video-div");
6
+
7
+ // Form Data
8
+ const selectOption = document.getElementById("sum-type");
9
+ const sumTextInput = document.getElementById("sum-text-input");
10
+ const sumVideoInput = document.getElementById("sum-video-input");
11
+
12
+ // Error Output Section
13
+ const sumError = document.getElementById("sum-err");
14
+
15
+ // Result Section
16
+ const extractText = document.getElementById("extracted-text");
17
+ const summaryText = document.getElementById("summarized-text");
18
+
19
+
20
+ // In progress...
21
+ function _summarize(text) {
22
+ var xhr = new XMLHttpRequest();
23
+ xhr.open("POST", "https://www.editpad.org/tool/tool/summarizingTool", true);
24
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
25
+
26
+ var data = `text=${text}&percnt=40&modd=1&captha=0`;
27
+ xhr.onreadystatechange = function () {
28
+ if (xhr.readyState === 4 && xhr.status === 200) {
29
+ var response = JSON.parse(xhr.responseText);
30
+ summaryText.value = response.content;
31
+ }
32
+ };
33
+
34
+ xhr.send(data)
35
+ return;
36
+ }
37
+
38
+ // In progress...
39
+ function _extractPDF(file) {
40
+ return file;
41
+ }
42
+
43
+ // In progress...
44
+ function _getCaptions(src) {
45
+ return src;
46
+ }
47
+
48
+
49
+ function summarize(event) {
50
+ event.preventDefault();
51
+
52
+ if (selectOption.value === 'sum-video' && !sumVideoInput.value.startsWith('https://www.youtube.com/watch?v=')) {
53
+ sumError.innerText = 'Invalid Youtube Link';
54
+ sumError.classList.remove('hidden');
55
+ return;
56
+ }
57
+
58
+ switch (selectOption.value) {
59
+ case 'sum-text':
60
+ len = sumTextInput.value.length
61
+ if (len < 100) {
62
+ sumError.innerText = `The text size should be at least 100 characters (${len} < 100)`;
63
+ sumError.classList.remove('hidden');
64
+ return;
65
+ }
66
+ break;
67
+ case 'sum-file':
68
+ sumError.innerText = 'This option is not supported, yet';
69
+ sumError.classList.remove('hidden');
70
+ return;
71
+ }
72
+
73
+ sumError.classList.add('hidden');
74
+
75
+ // Here we can finally summarize data
76
+ let extractedText = '';
77
+ switch (selectOption.value) {
78
+ case 'sum-text':
79
+ extractedText = sumTextInput.value;
80
+ break;
81
+ case 'sum-file':
82
+ extractedText = _extractPDF(sumFileInput);
83
+ break;
84
+ case 'sum-video':
85
+ extractedText = _getCaptions(sumVideoInput.value);
86
+ break;
87
+ }
88
+
89
+ extractText.value = extractedText;
90
+ _summarize(extractedText);
91
+ }
92
+
93
+
94
+ document.addEventListener("DOMContentLoaded", function () {
95
+ selectOption.addEventListener("change", function () {
96
+ switch (selectOption.value) {
97
+ case 'sum-text':
98
+ sumText.classList.remove('hidden');
99
+ sumFile.classList.add('hidden');
100
+ sumVideo.classList.add('hidden');
101
+
102
+ sumTextInput.setAttribute("required", "");
103
+ sumVideoInput.removeAttribute("required");
104
+ break;
105
+ case 'sum-file':
106
+ sumText.classList.add('hidden');
107
+ sumFile.classList.remove('hidden');
108
+ sumVideo.classList.add('hidden');
109
+
110
+ sumTextInput.removeAttribute("required");
111
+ sumVideoInput.removeAttribute("required");
112
+ break;
113
+ case 'sum-video':
114
+ sumText.classList.add('hidden');
115
+ sumFile.classList.add('hidden');
116
+ sumVideo.classList.remove('hidden');
117
+
118
+ sumTextInput.removeAttribute("required");
119
+ sumVideoInput.setAttribute("required", "");
120
+ break;
121
+ }
122
+ sumError.classList.add('hidden');
123
+ });
124
+ });
125
+
126
+ document.addEventListener("DOMContentLoaded", function () {
127
+ var submitButton = document.getElementById("submit");
128
+
129
+ submitButton.addEventListener("click", function (e) {
130
+ summarize(e);
131
+ });
132
+ });
static/text_summarizer.html ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link rel="canonical" href="">
8
+ <title>Text2Feature | Summarizer</title>
9
+ <link rel="stylesheet" href="css/main.css">
10
+ <link rel="icon" type="image/svg+xml" href="images/logo.svg">
11
+ <script defer src="js/main.js"></script>
12
+ </head>
13
+
14
+ <body class="overflow-hidden">
15
+ <!-- Google tag (gtag.js) -->
16
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-B751Q3XBFC"></script>
17
+ <script>
18
+ window.dataLayer = window.dataLayer || [];
19
+ function gtag(){dataLayer.push(arguments);}
20
+ gtag('js', new Date());
21
+
22
+ gtag('config', 'G-B751Q3XBFC');
23
+ </script>
24
+
25
+ <div x-data="{ sidebarOpen: false }" class="relative flex h-screen text-gray-800 bg-white font-roboto">
26
+ <div x-cloak :class="sidebarOpen ? 'block' : 'hidden'" @click="sidebarOpen = false"
27
+ class="fixed inset-0 z-20 transition-opacity bg-black opacity-50 lg:hidden"></div>
28
+
29
+ <div x-cloak :class="sidebarOpen ? 'translate-x-0 ease-in' : '-translate-x-full ease-out'"
30
+ class="fixed inset-y-0 left-0 z-30 w-64 px-4 overflow-y-auto transition duration-200 transform bg-white border-r border-gray-100 lg:translate-x-0 lg:relative lg:inset-0 ">
31
+ <div class="mt-8">
32
+ <a href="index.html" class="flex items-center">
33
+ <img class="w-auto h-6" src="images/logo.svg" alt="logo">
34
+ <span class="mx-3 mt-1 font-medium text-lg">Text2<span class="text-indigo-600">Feature</span></span>
35
+ </a>
36
+ </div>
37
+
38
+ <hr class="my-6 border-gray-100">
39
+
40
+ <nav class="space-y-8">
41
+ <div class="space-y-4">
42
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">PAGES</h3>
43
+
44
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-200 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
45
+ href="index.html">
46
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
47
+ stroke="currentColor">
48
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
49
+ d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
50
+ </svg>
51
+ <span class="mx-3 font-medium capitalize">Homepage</span>
52
+ </a>
53
+
54
+ <a class="flex items-center px-4 py-2 text-gray-600 transition-colors duration-300 transform bg-gray-200 rounded-lg bg-opacity-40"
55
+ href="text_summarizer.html">
56
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
57
+ stroke="currentColor" stroke-width="2">
58
+ <path stroke-linecap="round" stroke-linejoin="round"
59
+ d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" />
60
+ </svg>
61
+ <span class="mx-3 font-medium capitalize">Text Summarizer</span>
62
+ </a>
63
+
64
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
65
+ href="emotion_detection.html">
66
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
67
+ <path d="M9 16C9.85038 16.6303 10.8846 17 12 17C13.1154 17 14.1496 16.6303 15 16" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
68
+ <path d="M16 10.5C16 11.3284 15.5523 12 15 12C14.4477 12 14 11.3284 14 10.5C14 9.67157 14.4477 9 15 9C15.5523 9 16 9.67157 16 10.5Z" fill="#1C274C"/>
69
+ <ellipse cx="9" cy="10.5" rx="1" ry="1.5" fill="#1C274C"/>
70
+ <path d="M7 3.33782C8.47087 2.48697 10.1786 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 10.1786 2.48697 8.47087 3.33782 7" stroke="#1C274C" stroke-width="1.5" stroke-linecap="round"/>
71
+ </svg>
72
+ <span class="mx-3 font-medium capitalize">Emotion Detection</span>
73
+ </a>
74
+
75
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
76
+ href="">
77
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24"
78
+ stroke="currentColor">
79
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
80
+ d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
81
+ </svg>
82
+ <span class="mx-3 font-medium capitalize">Project 3</span>
83
+ </a>
84
+
85
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
86
+ href="">
87
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
88
+ <path
89
+ d="M13 10V14H19V10H13ZM11 10H5V14H11V10ZM13 19H19V16H13V19ZM11 19V16H5V19H11ZM13 5V8H19V5H13ZM11 5H5V8H11V5ZM19 3C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5C3 3.89543 3.89543 3 5 3H19Z"
90
+ fill="currentColor"></path>
91
+ </svg>
92
+ <span class="mx-3 font-medium capitalize">Project 4</span>
93
+ </a>
94
+ </div>
95
+
96
+ <div class="space-y-4">
97
+ <h3 class="px-4 text-sm tracking-wider text-gray-400 uppercase">OTHER</h3>
98
+
99
+ <a class="flex items-center px-4 py-2 text-gray-500 transition-colors duration-300 transform rounded-lg hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
100
+ href="/">
101
+ <svg width="24" height="24" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
102
+ <path
103
+ d="M474.89,300.41a121.43,121.43,0,0,1-121.3,121.3H247.08V392.13H353.59a91.72,91.72,0,1,0,0-183.44H87.53L151,272.2l-20.92,20.92L30.89,193.9l99.22-99.22L151,115.6l-63.5,63.51H353.59A121.43,121.43,0,0,1,474.89,300.41Z" />
104
+ </svg>
105
+ <span class="mx-3 font-medium">Visit Main Website</span>
106
+ </a>
107
+ </div>
108
+ </nav>
109
+ </div>
110
+
111
+ <div class="flex flex-col flex-1 overflow-hidden bg-gray-100">
112
+ <header class="bg-white border-b border-gray-100">
113
+ <div class="flex items-center justify-between px-4 py-4 sm:px-6">
114
+ <div class="flex items-center">
115
+ <button @click="sidebarOpen = !sidebarOpen" class="text-gray-500 lg:hidden focus:outline-none">
116
+ <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
117
+ <path d="M4 6H20M4 12H20M4 18H11" stroke="currentColor" stroke-width="2"
118
+ stroke-linecap="round" stroke-linejoin="round" />
119
+ </svg>
120
+ </button>
121
+
122
+ <div class="relative" x-data="{ search: '' }" @click.away="search = ''">
123
+ <div class="relative mx-4 lg:mx-0">
124
+ <span class="absolute inset-y-0 left-0 flex items-center pl-3">
125
+ <svg class="w-5 h-5 text-gray-400" viewBox="0 0 24 24" fill="none">
126
+ <path
127
+ d="M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z"
128
+ stroke="currentColor" stroke-width="2" stroke-linecap="round"
129
+ stroke-linejoin="round"></path>
130
+ </svg>
131
+ </span>
132
+
133
+ <input x-model="search" type="text"
134
+ class="w-64 h-10 py-2 pl-10 pr-4 text-gray-700 placeholder-gray-400 transition-all duration-150 bg-white border border-gray-200 rounded-md focus:w-80 sm:w-64 sm:focus:w-80 focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
135
+ placeholder="Find anything...">
136
+ </div>
137
+
138
+ <div class="absolute right-0 z-20 w-full py-2 mt-2 space-y-4 overflow-hidden bg-white rounded-md shadow-xl"
139
+ x-show="search.length > 0" x-cloak
140
+ x-transition:enter="transition ease-out duration-100 transform"
141
+ x-transition:enter-start="opacity-0 scale-95"
142
+ x-transition:enter-end="opacity-100 scale-100"
143
+ x-transition:leave="transition ease-in duration-75 transform"
144
+ x-transition:leave-start="opacity-100 scale-100"
145
+ x-transition:leave-end="opacity-0 scale-95">
146
+
147
+ <div>
148
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Projects</h3>
149
+ <div class="mt-2">
150
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
151
+ href="text_summarizer.html">
152
+ Text Summarizer
153
+ </a>
154
+
155
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
156
+ href="emotion_detection.html">
157
+ Emotion Detection
158
+ </a>
159
+
160
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
161
+ href="">
162
+ Project 3
163
+ </a>
164
+
165
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
166
+ href="">
167
+ Project 4
168
+ </a>
169
+ </div>
170
+ </div>
171
+ <div>
172
+ <h3 class="px-5 text-xs tracking-wider text-gray-500 uppercase">Other</h3>
173
+ <div class="mt-2">
174
+ <a class="block px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 transform sm:px-12 hover:text-gray-600 hover:bg-gray-100 bg-opacity-40"
175
+ href="/">
176
+ Visit Main Website
177
+ </a>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+
184
+ <div class="flex items-center">
185
+ <div x-data="{ dropdownOpen: false }" class="relative inline-block">
186
+ <button @click="dropdownOpen = ! dropdownOpen" class="relative z-10 flex items-center flex-shrink-0 text-sm text-gray-600 focus:outline-none">
187
+ <img class="flex-shrink-0 object-cover w-8 h-8 rounded-full" src="images/github-mark.svg" alt="github-mark">
188
+ </button>
189
+
190
+ <div class="absolute right-0 z-20 w-56 py-2 mt-2 overflow-hidden bg-white rounded-md shadow-xl rtl:right-auto rtl:left-0" x-show="dropdownOpen" x-transition:enter="transition ease-out duration-100 transform" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-75 transform" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" @click.away="dropdownOpen = false" style="display: none;">
191
+ <a target="_blank" href="https://github.com/Djacon/text2feature" class="flex items-center p-3 -mt-2 text-sm text-gray-600 transition-colors duration-200 transform hover:bg-gray-100">
192
+ <img class="flex-shrink-0 object-cover mx-1 rounded-full w-9 h-9" src="images/github-mark.svg" alt="github-mark">
193
+ <div class="mx-1">
194
+ <h1 class="text-sm font-semibold text-gray-700">Made By Djacon</h1>
195
+ <p class="text-sm text-gray-500">github.com/Djacon</p>
196
+ </div>
197
+ </a>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </header>
203
+
204
+ <main class="flex-1 overflow-y-auto">
205
+ <div class="px-4 py-8 sm:px-6">
206
+ <div>
207
+ <h1 class="text-2xl font-medium text-gray-700 sm:text-3xl">Text Summarizer</h1>
208
+
209
+ <div class="hidden mt-3 overflow-y-auto text-sm lg:items-center lg:flex whitespace-nowrap">
210
+ <a class="text-gray-600">Pages</a>
211
+ <span class="mx-1 text-gray-500">/</span>
212
+ <a href="" class="text-indigo-600 hover:underline">Text_Summarizer</a>
213
+ </div>
214
+ </div>
215
+
216
+ <div class="mt-6">
217
+ <div class="w-full p-4 bg-white rounded-lg xl:p-6">
218
+ <h1 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">Upload text</h1>
219
+
220
+ <form id='sum-form' class="mt-6 space-y-5" onsubmit="return false;">
221
+ <div>
222
+ <label for="sum-type" class="block text-sm text-gray-700 capitalize">Select Type</label>
223
+ <select id="sum-type"
224
+ class="block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40">
225
+ <option value="sum-text">Summarize Text</option>
226
+ <option value="sum-file">Summarize PDF</option>
227
+ <!-- In progress... -->
228
+ <!-- <option value="sum-video">Summarize Youtube Video</option> -->
229
+ </select>
230
+ </div>
231
+
232
+ <div id="sum-text-div">
233
+ <label for="description"
234
+ class="block text-sm text-gray-700 capitalize">description</label>
235
+ <textarea id="sum-text-input" required class="block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
236
+ style="min-height: 300px;"></textarea>
237
+ </div>
238
+
239
+ <div id="sum-file-div" class="hidden">
240
+ <label for="image" class="block text-sm text-gray-700 capitalize">file</label>
241
+ <label
242
+ class="flex flex-col items-center justify-center w-full h-32 mt-2 text-gray-500 border-2 border-dashed rounded-md cursor-pointer hover:text-gray-600">
243
+ <svg class="w-8 h-8" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
244
+ viewBox="0 0 20 20">
245
+ <path
246
+ d="M16.88 9.1A4 4 0 0 1 16 17H5a5 5 0 0 1-1-9.9V7a3 3 0 0 1 4.52-2.59A4.98 4.98 0 0 1 17 8c0 .38-.04.74-.12 1.1zM11 11h3l-4-4-4 4h3v3h2v-3z">
247
+ </path>
248
+ </svg>
249
+ <span class="mt-4">Select PDF File</span>
250
+ <input id="sum-file-input" type="file" class="hidden">
251
+ </label>
252
+ </div>
253
+
254
+ <div id="sum-video-div" class="hidden">
255
+ <label for="video" class="block text-sm text-gray-700 capitalize">Youtube link</label>
256
+ <input id="sum-video-input" placeholder="https://www.youtube.com/watch?v=dQw4w9WgXcQ" type="url"
257
+ class="block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40">
258
+ </div>
259
+ <p id='sum-err' class="hidden mt-2 text-sm text-red-500">Your password is too short.</p>
260
+
261
+ <div class="flex justify-end">
262
+ <button id="submit" type="button" class="w-full flex items-center justify-center px-2 py-2 text-sm font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-indigo-500 rounded-md hover:bg-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-50">
263
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
264
+ <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
265
+ <g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>
266
+ <g id="SVGRepo_iconCarrier">
267
+ <path d="M7 10L12 15L17 10" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
268
+ </g>
269
+ </svg>
270
+ <span class="mx-1">Summarize</span>
271
+ </button>
272
+ </div>
273
+ </form>
274
+ </div>
275
+
276
+ <div class="w-full p-4 mt-8 bg-white rounded-lg xl:p-6">
277
+ <h1 class="text-lg font-medium text-gray-700 capitalize sm:text-xl md:text-2xl">Result</h1>
278
+
279
+ <div class="md:flex gap-8">
280
+ <div class="w-full md:w-1/2 grid-cols-2 mt-6">
281
+ <label for="description"
282
+ class="block text-sm text-gray-700 capitalize">Extracted Text</label>
283
+ <textarea disabled id="extracted-text"
284
+ class="minh-text block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
285
+ style="min-height: 300px;"></textarea>
286
+ </div>
287
+
288
+ <div class="w-full md:w-1/2 grid-cols-2 mt-6">
289
+ <label for="description"
290
+ class="block text-sm text-gray-700 capitalize">Summarized Text</label>
291
+ <textarea disabled id="summarized-text"
292
+ class="minh-text block w-full px-4 py-2.5 mt-2 text-gray-600 placeholder-gray-400 bg-white border border-gray-200 rounded-md focus:border-indigo-400 focus:outline-none focus:ring focus:ring-indigo-300 focus:ring-opacity-40"
293
+ style="min-height: 300px;"></textarea>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ </div>
298
+ </div>
299
+ </main>
300
+ </div>
301
+ </div>
302
+
303
+ <script src="js/summarizer.js"></script>
304
+ </body>
305
+ </html>