Commit
•
b61753c
1
Parent(s):
39f4bdf
Upload folder using huggingface_hub
Browse files- Dockerfile +16 -0
- README.md +11 -4
- __init__.py +0 -0
- __pycache__/__init__.cpython-310.pyc +0 -0
- __pycache__/app.cpython-310.pyc +0 -0
- app.py +30 -0
- css.css +157 -0
- heme.json +1 -0
- heme.sdf +163 -0
- requirements.txt +1 -0
- space.py +151 -0
- src/.gitignore +9 -0
- src/README.md +290 -0
- src/backend/gradio_cofoldinginput/__init__.py +4 -0
- src/backend/gradio_cofoldinginput/cofoldinginput.py +118 -0
- src/backend/gradio_cofoldinginput/cofoldinginput.pyi +370 -0
- src/backend/gradio_cofoldinginput/templates/component/index.js +0 -0
- src/backend/gradio_cofoldinginput/templates/component/style.css +1 -0
- src/backend/gradio_cofoldinginput/templates/example/index.js +115 -0
- src/backend/gradio_cofoldinginput/templates/example/style.css +1 -0
- src/demo/__init__.py +0 -0
- src/demo/app.py +30 -0
- src/demo/css.css +157 -0
- src/demo/heme.json +1 -0
- src/demo/heme.sdf +163 -0
- src/demo/space.py +151 -0
- src/frontend/Example.svelte +46 -0
- src/frontend/Index.svelte +81 -0
- src/frontend/package-lock.json +1697 -0
- src/frontend/package.json +23 -0
- src/frontend/shared/Accordion.svelte +1694 -0
- src/frontend/shared/Button.svelte +1438 -0
- src/frontend/shared/Molecule.svelte +1029 -0
- src/frontend/shared/SearchInput.svelte +1422 -0
- src/frontend/shared/Sequence.svelte +1336 -0
- src/frontend/shared/SequenceInput.svelte +1699 -0
- src/frontend/shared/Textbox.svelte +341 -0
- src/frontend/shared/style.css +1302 -0
- src/heme.sdf +163 -0
- src/pyproject.toml +42 -0
Dockerfile
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
FROM python:3.9
|
3 |
+
|
4 |
+
WORKDIR /code
|
5 |
+
|
6 |
+
COPY --link --chown=1000 . .
|
7 |
+
|
8 |
+
RUN mkdir -p /tmp/cache/
|
9 |
+
RUN chmod a+rwx -R /tmp/cache/
|
10 |
+
ENV TRANSFORMERS_CACHE=/tmp/cache/
|
11 |
+
|
12 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
13 |
+
|
14 |
+
ENV PYTHONUNBUFFERED=1 GRADIO_ALLOW_FLAGGING=never GRADIO_NUM_PORTS=1 GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 SYSTEM=spaces
|
15 |
+
|
16 |
+
CMD ["python", "space.py"]
|
README.md
CHANGED
@@ -1,10 +1,17 @@
|
|
|
|
1 |
---
|
2 |
-
|
3 |
-
|
4 |
colorFrom: yellow
|
5 |
-
colorTo:
|
6 |
sdk: docker
|
7 |
pinned: false
|
|
|
8 |
---
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
---
|
3 |
+
tags: [gradio-custom-component,gradio-template-Textbox]
|
4 |
+
title: gradio_cofoldinginput V0.0.2
|
5 |
colorFrom: yellow
|
6 |
+
colorTo: pink
|
7 |
sdk: docker
|
8 |
pinned: false
|
9 |
+
license: apache-2.0
|
10 |
---
|
11 |
|
12 |
+
|
13 |
+
# Name: gradio_cofoldinginput
|
14 |
+
|
15 |
+
Description: Component to enter protein and DNA sequences + small molecules for cofolding
|
16 |
+
|
17 |
+
Install with: pip install gradio_cofoldinginput
|
__init__.py
ADDED
File without changes
|
__pycache__/__init__.cpython-310.pyc
ADDED
Binary file (150 Bytes). View file
|
|
__pycache__/app.cpython-310.pyc
ADDED
Binary file (617 Bytes). View file
|
|
app.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import gradio as gr
|
3 |
+
from gradio_cofoldinginput import CofoldingInput
|
4 |
+
|
5 |
+
import json
|
6 |
+
|
7 |
+
|
8 |
+
def predict(input):
|
9 |
+
input = json.dumps(input)
|
10 |
+
return input
|
11 |
+
|
12 |
+
with gr.Blocks() as demo:
|
13 |
+
inp=CofoldingInput(label="Input")
|
14 |
+
|
15 |
+
# preinput = {"chains": [
|
16 |
+
# {
|
17 |
+
# "class": "DNA",
|
18 |
+
# "sequence": "ATGCGT",
|
19 |
+
# "chain": "A"
|
20 |
+
# }
|
21 |
+
# ], "covMods":[]
|
22 |
+
# }
|
23 |
+
# inp2=CofoldingInput(preinput, label="Input prefilled")
|
24 |
+
btn = gr.Button("Submit")
|
25 |
+
out = gr.HTML()
|
26 |
+
|
27 |
+
btn.click(predict, inputs=[inp], outputs=[out])
|
28 |
+
|
29 |
+
if __name__ == "__main__":
|
30 |
+
demo.launch()
|
css.css
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
html {
|
2 |
+
font-family: Inter;
|
3 |
+
font-size: 16px;
|
4 |
+
font-weight: 400;
|
5 |
+
line-height: 1.5;
|
6 |
+
-webkit-text-size-adjust: 100%;
|
7 |
+
background: #fff;
|
8 |
+
color: #323232;
|
9 |
+
-webkit-font-smoothing: antialiased;
|
10 |
+
-moz-osx-font-smoothing: grayscale;
|
11 |
+
text-rendering: optimizeLegibility;
|
12 |
+
}
|
13 |
+
|
14 |
+
:root {
|
15 |
+
--space: 1;
|
16 |
+
--vspace: calc(var(--space) * 1rem);
|
17 |
+
--vspace-0: calc(3 * var(--space) * 1rem);
|
18 |
+
--vspace-1: calc(2 * var(--space) * 1rem);
|
19 |
+
--vspace-2: calc(1.5 * var(--space) * 1rem);
|
20 |
+
--vspace-3: calc(0.5 * var(--space) * 1rem);
|
21 |
+
}
|
22 |
+
|
23 |
+
.app {
|
24 |
+
max-width: 748px !important;
|
25 |
+
}
|
26 |
+
|
27 |
+
.prose p {
|
28 |
+
margin: var(--vspace) 0;
|
29 |
+
line-height: var(--vspace * 2);
|
30 |
+
font-size: 1rem;
|
31 |
+
}
|
32 |
+
|
33 |
+
code {
|
34 |
+
font-family: "Inconsolata", sans-serif;
|
35 |
+
font-size: 16px;
|
36 |
+
}
|
37 |
+
|
38 |
+
h1,
|
39 |
+
h1 code {
|
40 |
+
font-weight: 400;
|
41 |
+
line-height: calc(2.5 / var(--space) * var(--vspace));
|
42 |
+
}
|
43 |
+
|
44 |
+
h1 code {
|
45 |
+
background: none;
|
46 |
+
border: none;
|
47 |
+
letter-spacing: 0.05em;
|
48 |
+
padding-bottom: 5px;
|
49 |
+
position: relative;
|
50 |
+
padding: 0;
|
51 |
+
}
|
52 |
+
|
53 |
+
h2 {
|
54 |
+
margin: var(--vspace-1) 0 var(--vspace-2) 0;
|
55 |
+
line-height: 1em;
|
56 |
+
}
|
57 |
+
|
58 |
+
h3,
|
59 |
+
h3 code {
|
60 |
+
margin: var(--vspace-1) 0 var(--vspace-2) 0;
|
61 |
+
line-height: 1em;
|
62 |
+
}
|
63 |
+
|
64 |
+
h4,
|
65 |
+
h5,
|
66 |
+
h6 {
|
67 |
+
margin: var(--vspace-3) 0 var(--vspace-3) 0;
|
68 |
+
line-height: var(--vspace);
|
69 |
+
}
|
70 |
+
|
71 |
+
.bigtitle,
|
72 |
+
h1,
|
73 |
+
h1 code {
|
74 |
+
font-size: calc(8px * 4.5);
|
75 |
+
word-break: break-word;
|
76 |
+
}
|
77 |
+
|
78 |
+
.title,
|
79 |
+
h2,
|
80 |
+
h2 code {
|
81 |
+
font-size: calc(8px * 3.375);
|
82 |
+
font-weight: lighter;
|
83 |
+
word-break: break-word;
|
84 |
+
border: none;
|
85 |
+
background: none;
|
86 |
+
}
|
87 |
+
|
88 |
+
.subheading1,
|
89 |
+
h3,
|
90 |
+
h3 code {
|
91 |
+
font-size: calc(8px * 1.8);
|
92 |
+
font-weight: 600;
|
93 |
+
border: none;
|
94 |
+
background: none;
|
95 |
+
letter-spacing: 0.1em;
|
96 |
+
text-transform: uppercase;
|
97 |
+
}
|
98 |
+
|
99 |
+
h2 code {
|
100 |
+
padding: 0;
|
101 |
+
position: relative;
|
102 |
+
letter-spacing: 0.05em;
|
103 |
+
}
|
104 |
+
|
105 |
+
blockquote {
|
106 |
+
font-size: calc(8px * 1.1667);
|
107 |
+
font-style: italic;
|
108 |
+
line-height: calc(1.1667 * var(--vspace));
|
109 |
+
margin: var(--vspace-2) var(--vspace-2);
|
110 |
+
}
|
111 |
+
|
112 |
+
.subheading2,
|
113 |
+
h4 {
|
114 |
+
font-size: calc(8px * 1.4292);
|
115 |
+
text-transform: uppercase;
|
116 |
+
font-weight: 600;
|
117 |
+
}
|
118 |
+
|
119 |
+
.subheading3,
|
120 |
+
h5 {
|
121 |
+
font-size: calc(8px * 1.2917);
|
122 |
+
line-height: calc(1.2917 * var(--vspace));
|
123 |
+
|
124 |
+
font-weight: lighter;
|
125 |
+
text-transform: uppercase;
|
126 |
+
letter-spacing: 0.15em;
|
127 |
+
}
|
128 |
+
|
129 |
+
h6 {
|
130 |
+
font-size: calc(8px * 1.1667);
|
131 |
+
font-size: 1.1667em;
|
132 |
+
font-weight: normal;
|
133 |
+
font-style: italic;
|
134 |
+
font-family: "le-monde-livre-classic-byol", serif !important;
|
135 |
+
letter-spacing: 0px !important;
|
136 |
+
}
|
137 |
+
|
138 |
+
#start .md > *:first-child {
|
139 |
+
margin-top: 0;
|
140 |
+
}
|
141 |
+
|
142 |
+
h2 + h3 {
|
143 |
+
margin-top: 0;
|
144 |
+
}
|
145 |
+
|
146 |
+
.md hr {
|
147 |
+
border: none;
|
148 |
+
border-top: 1px solid var(--block-border-color);
|
149 |
+
margin: var(--vspace-2) 0 var(--vspace-2) 0;
|
150 |
+
}
|
151 |
+
.prose ul {
|
152 |
+
margin: var(--vspace-2) 0 var(--vspace-1) 0;
|
153 |
+
}
|
154 |
+
|
155 |
+
.gap {
|
156 |
+
gap: 0;
|
157 |
+
}
|
heme.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"m":[{"a":[{"x":-2.161,"y":-0.125,"z":0.49},{"x":1.458,"y":-3.419,"z":0.306},{"x":4.701,"y":0.169,"z":-0.069},{"x":1.075,"y":3.46,"z":0.018},{"x":-1.436,"y":-1.305,"z":0.38},{"x":-2.015,"y":-2.587,"z":0.32},{"x":-1.009,"y":-3.5,"z":0.27},{"x":0.216,"y":-2.803,"z":0.298},{"x":-1.175,"y":-4.996,"z":0.197},{"x":-3.49,"y":-2.893,"z":0.314},{"x":-3.998,"y":-2.926,"z":-1.129},{"x":-5.473,"y":-3.232,"z":-1.136},{"x":-6.059,"y":-3.405,"z":-0.094,"l":"O"},{"x":-6.137,"y":-3.311,"z":-2.3,"l":"O"},{"x":2.664,"y":-2.707,"z":0.308},{"x":3.937,"y":-3.328,"z":0.418},{"x":4.874,"y":-2.341,"z":0.314},{"x":4.117,"y":-1.079,"z":0.139},{"x":4.203,"y":-4.798,"z":0.613},{"x":6.339,"y":-2.497,"z":0.365},{"x":6.935,"y":-3.419,"z":-0.385},{"x":3.964,"y":1.345,"z":-0.174},{"x":4.531,"y":2.601,"z":-0.445},{"x":3.51,"y":3.536,"z":-0.437},{"x":2.304,"y":2.846,"z":-0.139},{"x":5.991,"y":2.88,"z":-0.697},{"x":3.649,"y":4.981,"z":-0.692},{"x":4.201,"y":5.407,"z":-1.823},{"x":-0.102,"y":2.753,"z":0.298},{"x":-1.382,"y":3.388,"z":0.641},{"x":-2.283,"y":2.389,"z":0.774},{"x":-1.561,"y":1.137,"z":0.511},{"x":-1.639,"y":4.863,"z":0.811},{"x":-3.741,"y":2.532,"z":1.123},{"x":-4.573,"y":2.563,"z":-0.16},{"x":-6.032,"y":2.706,"z":0.189},{"x":-6.372,"y":2.776,"z":1.347,"l":"O"},{"x":-6.954,"y":2.755,"z":-0.785,"l":"O"},{"x":-0.068,"y":-1.456,"z":0.321,"l":"N"},{"x":2.82,"y":-1.386,"z":0.207,"l":"N"},{"x":2.604,"y":1.506,"z":-0.033,"l":"N"},{"x":-0.276,"y":1.431,"z":0.298,"l":"N"},{"x":1.01,"y":0.157,"z":-0.06,"l":"Fe"},{"x":1.498,"y":-4.508,"z":0.309,"l":"H"},{"x":5.786,"y":0.229,"z":-0.153,"l":"H"},{"x":1.018,"y":4.543,"z":-0.083,"l":"H"},{"x":-1.22,"y":-5.306,"z":-0.847,"l":"H"},{"x":-0.328,"y":-5.48,"z":0.683,"l":"H"},{"x":-2.097,"y":-5.285,"z":0.702,"l":"H"},{"x":-3.662,"y":-3.862,"z":0.782,"l":"H"},{"x":-4.024,"y":-2.121,"z":0.869,"l":"H"},{"x":-3.825,"y":-1.956,"z":-1.597,"l":"H"},{"x":-3.464,"y":-3.697,"z":-1.684,"l":"H"},{"x":3.256,"y":-5.336,"z":0.66,"l":"H"},{"x":4.794,"y":-5.175,"z":-0.222,"l":"H"},{"x":4.752,"y":-4.948,"z":1.543,"l":"H"},{"x":6.927,"y":-1.863,"z":1.011,"l":"H"},{"x":7.994,"y":-3.6,"z":-0.277,"l":"H"},{"x":6.36,"y":-3.987,"z":-1.102,"l":"H"},{"x":6.554,"y":1.949,"z":-0.639,"l":"H"},{"x":6.11,"y":3.316,"z":-1.689,"l":"H"},{"x":6.362,"y":3.578,"z":0.053,"l":"H"},{"x":3.303,"y":5.694,"z":0.042,"l":"H"},{"x":4.614,"y":4.696,"z":-2.523,"l":"H"},{"x":4.235,"y":6.464,"z":-2.043,"l":"H"},{"x":-0.715,"y":5.415,"z":0.639,"l":"H"},{"x":-2.394,"y":5.185,"z":0.094,"l":"H"},{"x":-1.994,"y":5.055,"z":1.824,"l":"H"},{"x":-4.052,"y":1.687,"z":1.738,"l":"H"},{"x":-3.893,"y":3.459,"z":1.677,"l":"H"},{"x":-4.262,"y":3.408,"z":-0.775,"l":"H"},{"x":-4.421,"y":1.636,"z":-0.714,"l":"H"},{"x":-7.082,"y":-3.51,"z":-2.254,"l":"H"},{"x":-7.877,"y":2.847,"z":-0.512,"l":"H"},{"x":-3.246,"y":-0.188,"z":0.567,"l":"H"}],"b":[{"b":0,"e":4},{"b":0,"e":31,"o":2},{"b":0,"e":74},{"b":1,"e":7},{"b":1,"e":14,"o":2},{"b":1,"e":43},{"b":2,"e":17},{"b":2,"e":21,"o":2},{"b":2,"e":44},{"b":3,"e":24,"o":2},{"b":3,"e":28},{"b":3,"e":45},{"b":4,"e":5,"o":2},{"b":4,"e":38},{"b":5,"e":6},{"b":5,"e":9},{"b":6,"e":7,"o":2},{"b":6,"e":8},{"b":7,"e":38},{"b":8,"e":46},{"b":8,"e":47},{"b":8,"e":48},{"b":9,"e":10},{"b":9,"e":49},{"b":9,"e":50},{"b":10,"e":11},{"b":10,"e":51},{"b":10,"e":52},{"b":11,"e":12,"o":2},{"b":11,"e":13},{"b":13,"e":72},{"b":14,"e":15},{"b":14,"e":39},{"b":15,"e":16,"o":2},{"b":15,"e":18},{"b":16,"e":17},{"b":16,"e":19},{"b":17,"e":39,"o":2},{"b":18,"e":53},{"b":18,"e":54},{"b":18,"e":55},{"b":19,"e":20,"o":2},{"b":19,"e":56},{"b":20,"e":57},{"b":20,"e":58},{"b":21,"e":22},{"b":21,"e":40},{"b":22,"e":23,"o":2},{"b":22,"e":25},{"b":23,"e":24},{"b":23,"e":26},{"b":24,"e":40},{"b":25,"e":59},{"b":25,"e":60},{"b":25,"e":61},{"b":26,"e":27,"o":2},{"b":26,"e":62},{"b":27,"e":63},{"b":27,"e":64},{"b":28,"e":29},{"b":28,"e":41,"o":2},{"b":29,"e":30,"o":2},{"b":29,"e":32},{"b":30,"e":31},{"b":30,"e":33},{"b":31,"e":41},{"b":32,"e":65},{"b":32,"e":66},{"b":32,"e":67},{"b":33,"e":34},{"b":33,"e":68},{"b":33,"e":69},{"b":34,"e":35},{"b":34,"e":70},{"b":34,"e":71},{"b":35,"e":36,"o":2},{"b":35,"e":37},{"b":37,"e":73},{"b":38,"e":42},{"b":39,"e":42},{"b":40,"e":42},{"b":41,"e":42}]}]}
|
heme.sdf
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
OpenBabel03282415433D
|
3 |
+
|
4 |
+
75 82 0 0 0 0 0 0 0 0999 V2000
|
5 |
+
-2.1610 -0.1250 0.4900 C 0 0 0 0 0 0 0 0 0 0 0 0
|
6 |
+
1.4580 -3.4190 0.3060 C 0 0 0 0 0 0 0 0 0 0 0 0
|
7 |
+
4.7010 0.1690 -0.0690 C 0 0 0 0 0 0 0 0 0 0 0 0
|
8 |
+
1.0750 3.4600 0.0180 C 0 0 0 0 0 0 0 0 0 0 0 0
|
9 |
+
-1.4360 -1.3050 0.3800 C 0 0 0 0 0 0 0 0 0 0 0 0
|
10 |
+
-2.0150 -2.5870 0.3200 C 0 0 0 0 0 0 0 0 0 0 0 0
|
11 |
+
-1.0090 -3.5000 0.2700 C 0 0 0 0 0 0 0 0 0 0 0 0
|
12 |
+
0.2160 -2.8030 0.2980 C 0 0 0 0 0 0 0 0 0 0 0 0
|
13 |
+
-1.1750 -4.9960 0.1970 C 0 0 0 0 0 0 0 0 0 0 0 0
|
14 |
+
-3.4900 -2.8930 0.3140 C 0 0 0 0 0 0 0 0 0 0 0 0
|
15 |
+
-3.9980 -2.9260 -1.1290 C 0 0 0 0 0 0 0 0 0 0 0 0
|
16 |
+
-5.4730 -3.2320 -1.1360 C 0 0 0 0 0 0 0 0 0 0 0 0
|
17 |
+
-6.0590 -3.4050 -0.0940 O 0 0 0 0 0 0 0 0 0 0 0 0
|
18 |
+
-6.1370 -3.3110 -2.3000 O 0 0 0 0 0 0 0 0 0 0 0 0
|
19 |
+
2.6640 -2.7070 0.3080 C 0 0 0 0 0 0 0 0 0 0 0 0
|
20 |
+
3.9370 -3.3280 0.4180 C 0 0 0 0 0 0 0 0 0 0 0 0
|
21 |
+
4.8740 -2.3410 0.3140 C 0 0 0 0 0 0 0 0 0 0 0 0
|
22 |
+
4.1170 -1.0790 0.1390 C 0 0 0 0 0 0 0 0 0 0 0 0
|
23 |
+
4.2030 -4.7980 0.6130 C 0 0 0 0 0 0 0 0 0 0 0 0
|
24 |
+
6.3390 -2.4970 0.3650 C 0 0 0 0 0 0 0 0 0 0 0 0
|
25 |
+
6.9350 -3.4190 -0.3850 C 0 0 0 0 0 0 0 0 0 0 0 0
|
26 |
+
3.9640 1.3450 -0.1740 C 0 0 0 0 0 0 0 0 0 0 0 0
|
27 |
+
4.5310 2.6010 -0.4450 C 0 0 0 0 0 0 0 0 0 0 0 0
|
28 |
+
3.5100 3.5360 -0.4370 C 0 0 0 0 0 0 0 0 0 0 0 0
|
29 |
+
2.3040 2.8460 -0.1390 C 0 0 0 0 0 0 0 0 0 0 0 0
|
30 |
+
5.9910 2.8800 -0.6970 C 0 0 0 0 0 0 0 0 0 0 0 0
|
31 |
+
3.6490 4.9810 -0.6920 C 0 0 0 0 0 0 0 0 0 0 0 0
|
32 |
+
4.2010 5.4070 -1.8230 C 0 0 0 0 0 0 0 0 0 0 0 0
|
33 |
+
-0.1020 2.7530 0.2980 C 0 0 0 0 0 0 0 0 0 0 0 0
|
34 |
+
-1.3820 3.3880 0.6410 C 0 0 0 0 0 0 0 0 0 0 0 0
|
35 |
+
-2.2830 2.3890 0.7740 C 0 0 0 0 0 0 0 0 0 0 0 0
|
36 |
+
-1.5610 1.1370 0.5110 C 0 0 0 0 0 0 0 0 0 0 0 0
|
37 |
+
-1.6390 4.8630 0.8110 C 0 0 0 0 0 0 0 0 0 0 0 0
|
38 |
+
-3.7410 2.5320 1.1230 C 0 0 0 0 0 0 0 0 0 0 0 0
|
39 |
+
-4.5730 2.5630 -0.1600 C 0 0 0 0 0 0 0 0 0 0 0 0
|
40 |
+
-6.0320 2.7060 0.1890 C 0 0 0 0 0 0 0 0 0 0 0 0
|
41 |
+
-6.3720 2.7760 1.3470 O 0 0 0 0 0 0 0 0 0 0 0 0
|
42 |
+
-6.9540 2.7550 -0.7850 O 0 0 0 0 0 0 0 0 0 0 0 0
|
43 |
+
-0.0680 -1.4560 0.3210 N 0 0 0 0 0 0 0 0 0 0 0 0
|
44 |
+
2.8200 -1.3860 0.2070 N 0 0 0 0 0 4 0 0 0 0 0 0
|
45 |
+
2.6040 1.5060 -0.0330 N 0 0 0 0 0 0 0 0 0 0 0 0
|
46 |
+
-0.2760 1.4310 0.2980 N 0 0 0 0 0 4 0 0 0 0 0 0
|
47 |
+
1.0100 0.1570 -0.0600 Fe 0 0 1 0 0 0 0 0 0 0 0 0
|
48 |
+
1.4980 -4.5080 0.3090 H 0 0 0 0 0 0 0 0 0 0 0 0
|
49 |
+
5.7860 0.2290 -0.1530 H 0 0 0 0 0 0 0 0 0 0 0 0
|
50 |
+
1.0180 4.5430 -0.0830 H 0 0 0 0 0 0 0 0 0 0 0 0
|
51 |
+
-1.2200 -5.3060 -0.8470 H 0 0 0 0 0 0 0 0 0 0 0 0
|
52 |
+
-0.3280 -5.4800 0.6830 H 0 0 0 0 0 0 0 0 0 0 0 0
|
53 |
+
-2.0970 -5.2850 0.7020 H 0 0 0 0 0 0 0 0 0 0 0 0
|
54 |
+
-3.6620 -3.8620 0.7820 H 0 0 0 0 0 0 0 0 0 0 0 0
|
55 |
+
-4.0240 -2.1210 0.8690 H 0 0 0 0 0 0 0 0 0 0 0 0
|
56 |
+
-3.8250 -1.9560 -1.5970 H 0 0 0 0 0 0 0 0 0 0 0 0
|
57 |
+
-3.4640 -3.6970 -1.6840 H 0 0 0 0 0 0 0 0 0 0 0 0
|
58 |
+
3.2560 -5.3360 0.6600 H 0 0 0 0 0 0 0 0 0 0 0 0
|
59 |
+
4.7940 -5.1750 -0.2220 H 0 0 0 0 0 0 0 0 0 0 0 0
|
60 |
+
4.7520 -4.9480 1.5430 H 0 0 0 0 0 0 0 0 0 0 0 0
|
61 |
+
6.9270 -1.8630 1.0110 H 0 0 0 0 0 0 0 0 0 0 0 0
|
62 |
+
7.9940 -3.6000 -0.2770 H 0 0 0 0 0 0 0 0 0 0 0 0
|
63 |
+
6.3600 -3.9870 -1.1020 H 0 0 0 0 0 0 0 0 0 0 0 0
|
64 |
+
6.5540 1.9490 -0.6390 H 0 0 0 0 0 0 0 0 0 0 0 0
|
65 |
+
6.1100 3.3160 -1.6890 H 0 0 0 0 0 0 0 0 0 0 0 0
|
66 |
+
6.3620 3.5780 0.0530 H 0 0 0 0 0 0 0 0 0 0 0 0
|
67 |
+
3.3030 5.6940 0.0420 H 0 0 0 0 0 0 0 0 0 0 0 0
|
68 |
+
4.6140 4.6960 -2.5230 H 0 0 0 0 0 0 0 0 0 0 0 0
|
69 |
+
4.2350 6.4640 -2.0430 H 0 0 0 0 0 0 0 0 0 0 0 0
|
70 |
+
-0.7150 5.4150 0.6390 H 0 0 0 0 0 0 0 0 0 0 0 0
|
71 |
+
-2.3940 5.1850 0.0940 H 0 0 0 0 0 0 0 0 0 0 0 0
|
72 |
+
-1.9940 5.0550 1.8240 H 0 0 0 0 0 0 0 0 0 0 0 0
|
73 |
+
-4.0520 1.6870 1.7380 H 0 0 0 0 0 0 0 0 0 0 0 0
|
74 |
+
-3.8930 3.4590 1.6770 H 0 0 0 0 0 0 0 0 0 0 0 0
|
75 |
+
-4.2620 3.4080 -0.7750 H 0 0 0 0 0 0 0 0 0 0 0 0
|
76 |
+
-4.4210 1.6360 -0.7140 H 0 0 0 0 0 0 0 0 0 0 0 0
|
77 |
+
-7.0820 -3.5100 -2.2540 H 0 0 0 0 0 0 0 0 0 0 0 0
|
78 |
+
-7.8770 2.8470 -0.5120 H 0 0 0 0 0 0 0 0 0 0 0 0
|
79 |
+
-3.2460 -0.1880 0.5670 H 0 0 0 0 0 0 0 0 0 0 0 0
|
80 |
+
1 5 1 0 0 0 0
|
81 |
+
1 32 2 0 0 0 0
|
82 |
+
1 75 1 0 0 0 0
|
83 |
+
2 8 1 0 0 0 0
|
84 |
+
2 15 2 0 0 0 0
|
85 |
+
2 44 1 0 0 0 0
|
86 |
+
3 18 1 0 0 0 0
|
87 |
+
3 22 2 0 0 0 0
|
88 |
+
3 45 1 0 0 0 0
|
89 |
+
4 25 2 0 0 0 0
|
90 |
+
4 29 1 0 0 0 0
|
91 |
+
4 46 1 0 0 0 0
|
92 |
+
5 6 2 0 0 0 0
|
93 |
+
5 39 1 0 0 0 0
|
94 |
+
6 7 1 0 0 0 0
|
95 |
+
6 10 1 0 0 0 0
|
96 |
+
7 8 2 0 0 0 0
|
97 |
+
7 9 1 0 0 0 0
|
98 |
+
8 39 1 0 0 0 0
|
99 |
+
9 47 1 0 0 0 0
|
100 |
+
9 48 1 0 0 0 0
|
101 |
+
9 49 1 0 0 0 0
|
102 |
+
10 11 1 0 0 0 0
|
103 |
+
10 50 1 0 0 0 0
|
104 |
+
10 51 1 0 0 0 0
|
105 |
+
11 12 1 0 0 0 0
|
106 |
+
11 52 1 0 0 0 0
|
107 |
+
11 53 1 0 0 0 0
|
108 |
+
12 13 2 0 0 0 0
|
109 |
+
12 14 1 0 0 0 0
|
110 |
+
14 73 1 0 0 0 0
|
111 |
+
15 16 1 0 0 0 0
|
112 |
+
15 40 1 0 0 0 0
|
113 |
+
16 17 2 0 0 0 0
|
114 |
+
16 19 1 0 0 0 0
|
115 |
+
17 18 1 0 0 0 0
|
116 |
+
17 20 1 0 0 0 0
|
117 |
+
18 40 2 0 0 0 0
|
118 |
+
19 54 1 0 0 0 0
|
119 |
+
19 55 1 0 0 0 0
|
120 |
+
19 56 1 0 0 0 0
|
121 |
+
20 21 2 0 0 0 0
|
122 |
+
20 57 1 0 0 0 0
|
123 |
+
21 58 1 0 0 0 0
|
124 |
+
21 59 1 0 0 0 0
|
125 |
+
22 23 1 0 0 0 0
|
126 |
+
22 41 1 0 0 0 0
|
127 |
+
23 24 2 0 0 0 0
|
128 |
+
23 26 1 0 0 0 0
|
129 |
+
24 25 1 0 0 0 0
|
130 |
+
24 27 1 0 0 0 0
|
131 |
+
25 41 1 0 0 0 0
|
132 |
+
26 60 1 0 0 0 0
|
133 |
+
26 61 1 0 0 0 0
|
134 |
+
26 62 1 0 0 0 0
|
135 |
+
27 28 2 0 0 0 0
|
136 |
+
27 63 1 0 0 0 0
|
137 |
+
28 64 1 0 0 0 0
|
138 |
+
28 65 1 0 0 0 0
|
139 |
+
29 30 1 0 0 0 0
|
140 |
+
29 42 2 0 0 0 0
|
141 |
+
30 31 2 0 0 0 0
|
142 |
+
30 33 1 0 0 0 0
|
143 |
+
31 32 1 0 0 0 0
|
144 |
+
31 34 1 0 0 0 0
|
145 |
+
32 42 1 0 0 0 0
|
146 |
+
33 66 1 0 0 0 0
|
147 |
+
33 67 1 0 0 0 0
|
148 |
+
33 68 1 0 0 0 0
|
149 |
+
34 35 1 0 0 0 0
|
150 |
+
34 69 1 0 0 0 0
|
151 |
+
34 70 1 0 0 0 0
|
152 |
+
35 36 1 0 0 0 0
|
153 |
+
35 71 1 0 0 0 0
|
154 |
+
35 72 1 0 0 0 0
|
155 |
+
36 37 2 0 0 0 0
|
156 |
+
36 38 1 0 0 0 0
|
157 |
+
38 74 1 0 0 0 0
|
158 |
+
40 43 1 0 0 0 0
|
159 |
+
41 43 1 0 0 0 0
|
160 |
+
42 43 1 0 0 0 0
|
161 |
+
43 39 1 6 0 0 0
|
162 |
+
M END
|
163 |
+
$$$$
|
requirements.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
gradio_cofoldinginput-0.0.2-py3-none-any.whl
|
space.py
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import gradio as gr
|
3 |
+
from app import demo as app
|
4 |
+
import os
|
5 |
+
|
6 |
+
_docs = {'CofoldingInput': {'description': 'Creates a textarea for user to enter string input or display string output.\n', 'members': {'__init__': {'value': {'type': 'dict | None', 'default': '{"chains": [], "covMods": []}', 'description': 'list of items.'}, 'label': {'type': 'str | None', 'default': 'None', 'description': 'The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.'}, 'info': {'type': 'str | None', 'default': 'None', 'description': 'additional component description.'}, 'every': {'type': 'float | None', 'default': 'None', 'description': "If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute."}, 'show_label': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will display label.'}, 'container': {'type': 'bool', 'default': 'True', 'description': 'If True, will place the component in a container - providing some extra padding around the border.'}, 'scale': {'type': 'int | None', 'default': 'None', 'description': 'relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.'}, 'min_width': {'type': 'int', 'default': '160', 'description': 'minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.'}, 'interactive': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.'}, 'visible': {'type': 'bool', 'default': 'True', 'description': 'If False, component will be hidden.'}, 'elem_id': {'type': 'str | None', 'default': 'None', 'description': 'An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'autofocus': {'type': 'bool', 'default': 'False', 'description': 'If True, will focus on the textbox when the page loads. Use this carefully, as it can cause usability issues for sighted and non-sighted users.'}, 'autoscroll': {'type': 'bool', 'default': 'True', 'description': None}, 'elem_classes': {'type': 'list[str] | str | None', 'default': 'None', 'description': 'An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'render': {'type': 'bool', 'default': 'True', 'description': 'If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.'}}, 'postprocess': {'value': {'type': 'dict | None', 'description': 'Expects a {str} returned from function and sets textarea value to it.'}}, 'preprocess': {}}, 'events': {'change': {'type': None, 'default': None, 'description': 'Triggered when the value of the CofoldingInput changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input.'}, 'input': {'type': None, 'default': None, 'description': 'This listener is triggered when the user changes the value of the CofoldingInput.'}, 'select': {'type': None, 'default': None, 'description': 'Event listener for when the user selects or deselects the CofoldingInput. Uses event data gradio.SelectData to carry `value` referring to the label of the CofoldingInput, and `selected` to refer to state of the CofoldingInput. See EventData documentation on how to use this event data'}, 'submit': {'type': None, 'default': None, 'description': 'This listener is triggered when the user presses the Enter key while the CofoldingInput is focused.'}, 'focus': {'type': None, 'default': None, 'description': 'This listener is triggered when the CofoldingInput is focused.'}, 'blur': {'type': None, 'default': None, 'description': 'This listener is triggered when the CofoldingInput is unfocused/blurred.'}}}, '__meta__': {'additional_interfaces': {}, 'user_fn_refs': {'CofoldingInput': []}}}
|
7 |
+
|
8 |
+
abs_path = os.path.join(os.path.dirname(__file__), "css.css")
|
9 |
+
|
10 |
+
with gr.Blocks(
|
11 |
+
css=abs_path,
|
12 |
+
theme=gr.themes.Default(
|
13 |
+
font_mono=[
|
14 |
+
gr.themes.GoogleFont("Inconsolata"),
|
15 |
+
"monospace",
|
16 |
+
],
|
17 |
+
),
|
18 |
+
) as demo:
|
19 |
+
gr.Markdown(
|
20 |
+
"""
|
21 |
+
# `gradio_cofoldinginput`
|
22 |
+
|
23 |
+
<div style="display: flex; gap: 7px;">
|
24 |
+
<img alt="Static Badge" src="https://img.shields.io/badge/version%20-%200.0.2%20-%20orange">
|
25 |
+
</div>
|
26 |
+
|
27 |
+
Component to enter protein and DNA sequences + small molecules for cofolding
|
28 |
+
""", elem_classes=["md-custom"], header_links=True)
|
29 |
+
app.render()
|
30 |
+
gr.Markdown(
|
31 |
+
"""
|
32 |
+
## Installation
|
33 |
+
|
34 |
+
```bash
|
35 |
+
pip install gradio_cofoldinginput
|
36 |
+
```
|
37 |
+
|
38 |
+
## Usage
|
39 |
+
|
40 |
+
```python
|
41 |
+
|
42 |
+
import gradio as gr
|
43 |
+
from gradio_cofoldinginput import CofoldingInput
|
44 |
+
|
45 |
+
import json
|
46 |
+
|
47 |
+
|
48 |
+
def predict(input):
|
49 |
+
input = json.dumps(input)
|
50 |
+
return input
|
51 |
+
|
52 |
+
with gr.Blocks() as demo:
|
53 |
+
inp=CofoldingInput(label="Input")
|
54 |
+
|
55 |
+
# preinput = {"chains": [
|
56 |
+
# {
|
57 |
+
# "class": "DNA",
|
58 |
+
# "sequence": "ATGCGT",
|
59 |
+
# "chain": "A"
|
60 |
+
# }
|
61 |
+
# ], "covMods":[]
|
62 |
+
# }
|
63 |
+
# inp2=CofoldingInput(preinput, label="Input prefilled")
|
64 |
+
btn = gr.Button("Submit")
|
65 |
+
out = gr.HTML()
|
66 |
+
|
67 |
+
btn.click(predict, inputs=[inp], outputs=[out])
|
68 |
+
|
69 |
+
if __name__ == "__main__":
|
70 |
+
demo.launch()
|
71 |
+
|
72 |
+
```
|
73 |
+
""", elem_classes=["md-custom"], header_links=True)
|
74 |
+
|
75 |
+
|
76 |
+
gr.Markdown("""
|
77 |
+
## `CofoldingInput`
|
78 |
+
|
79 |
+
### Initialization
|
80 |
+
""", elem_classes=["md-custom"], header_links=True)
|
81 |
+
|
82 |
+
gr.ParamViewer(value=_docs["CofoldingInput"]["members"]["__init__"], linkify=[])
|
83 |
+
|
84 |
+
|
85 |
+
gr.Markdown("### Events")
|
86 |
+
gr.ParamViewer(value=_docs["CofoldingInput"]["events"], linkify=['Event'])
|
87 |
+
|
88 |
+
|
89 |
+
|
90 |
+
|
91 |
+
gr.Markdown("""
|
92 |
+
|
93 |
+
### User function
|
94 |
+
|
95 |
+
The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both).
|
96 |
+
|
97 |
+
- When used as an Input, the component only impacts the input signature of the user function.
|
98 |
+
- When used as an output, the component only impacts the return signature of the user function.
|
99 |
+
|
100 |
+
The code snippet below is accurate in cases where the component is used as both an input and an output.
|
101 |
+
|
102 |
+
- **As output:** Should return, expects a {str} returned from function and sets textarea value to it.
|
103 |
+
|
104 |
+
```python
|
105 |
+
def predict(
|
106 |
+
value: Unknown
|
107 |
+
) -> dict | None:
|
108 |
+
return value
|
109 |
+
```
|
110 |
+
""", elem_classes=["md-custom", "CofoldingInput-user-fn"], header_links=True)
|
111 |
+
|
112 |
+
|
113 |
+
|
114 |
+
|
115 |
+
demo.load(None, js=r"""function() {
|
116 |
+
const refs = {};
|
117 |
+
const user_fn_refs = {
|
118 |
+
CofoldingInput: [], };
|
119 |
+
requestAnimationFrame(() => {
|
120 |
+
|
121 |
+
Object.entries(user_fn_refs).forEach(([key, refs]) => {
|
122 |
+
if (refs.length > 0) {
|
123 |
+
const el = document.querySelector(`.${key}-user-fn`);
|
124 |
+
if (!el) return;
|
125 |
+
refs.forEach(ref => {
|
126 |
+
el.innerHTML = el.innerHTML.replace(
|
127 |
+
new RegExp("\\b"+ref+"\\b", "g"),
|
128 |
+
`<a href="#h-${ref.toLowerCase()}">${ref}</a>`
|
129 |
+
);
|
130 |
+
})
|
131 |
+
}
|
132 |
+
})
|
133 |
+
|
134 |
+
Object.entries(refs).forEach(([key, refs]) => {
|
135 |
+
if (refs.length > 0) {
|
136 |
+
const el = document.querySelector(`.${key}`);
|
137 |
+
if (!el) return;
|
138 |
+
refs.forEach(ref => {
|
139 |
+
el.innerHTML = el.innerHTML.replace(
|
140 |
+
new RegExp("\\b"+ref+"\\b", "g"),
|
141 |
+
`<a href="#h-${ref.toLowerCase()}">${ref}</a>`
|
142 |
+
);
|
143 |
+
})
|
144 |
+
}
|
145 |
+
})
|
146 |
+
})
|
147 |
+
}
|
148 |
+
|
149 |
+
""")
|
150 |
+
|
151 |
+
demo.launch()
|
src/.gitignore
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.eggs/
|
2 |
+
dist/
|
3 |
+
*.pyc
|
4 |
+
__pycache__/
|
5 |
+
*.py[cod]
|
6 |
+
*$py.class
|
7 |
+
__tmp/*
|
8 |
+
*.pyi
|
9 |
+
node_modules
|
src/README.md
ADDED
@@ -0,0 +1,290 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
# `gradio_cofoldinginput`
|
3 |
+
<img alt="Static Badge" src="https://img.shields.io/badge/version%20-%200.0.2%20-%20orange">
|
4 |
+
|
5 |
+
Component to enter protein and DNA sequences + small molecules for cofolding
|
6 |
+
|
7 |
+
## Installation
|
8 |
+
|
9 |
+
```bash
|
10 |
+
pip install gradio_cofoldinginput
|
11 |
+
```
|
12 |
+
|
13 |
+
## Usage
|
14 |
+
|
15 |
+
```python
|
16 |
+
|
17 |
+
import gradio as gr
|
18 |
+
from gradio_cofoldinginput import CofoldingInput
|
19 |
+
|
20 |
+
import json
|
21 |
+
|
22 |
+
|
23 |
+
def predict(input):
|
24 |
+
input = json.dumps(input)
|
25 |
+
return input
|
26 |
+
|
27 |
+
with gr.Blocks() as demo:
|
28 |
+
inp=CofoldingInput(label="Input")
|
29 |
+
|
30 |
+
# preinput = {"chains": [
|
31 |
+
# {
|
32 |
+
# "class": "DNA",
|
33 |
+
# "sequence": "ATGCGT",
|
34 |
+
# "chain": "A"
|
35 |
+
# }
|
36 |
+
# ], "covMods":[]
|
37 |
+
# }
|
38 |
+
# inp2=CofoldingInput(preinput, label="Input prefilled")
|
39 |
+
btn = gr.Button("Submit")
|
40 |
+
out = gr.HTML()
|
41 |
+
|
42 |
+
btn.click(predict, inputs=[inp], outputs=[out])
|
43 |
+
|
44 |
+
if __name__ == "__main__":
|
45 |
+
demo.launch()
|
46 |
+
|
47 |
+
```
|
48 |
+
|
49 |
+
## `CofoldingInput`
|
50 |
+
|
51 |
+
### Initialization
|
52 |
+
|
53 |
+
<table>
|
54 |
+
<thead>
|
55 |
+
<tr>
|
56 |
+
<th align="left">name</th>
|
57 |
+
<th align="left" style="width: 25%;">type</th>
|
58 |
+
<th align="left">default</th>
|
59 |
+
<th align="left">description</th>
|
60 |
+
</tr>
|
61 |
+
</thead>
|
62 |
+
<tbody>
|
63 |
+
<tr>
|
64 |
+
<td align="left"><code>value</code></td>
|
65 |
+
<td align="left" style="width: 25%;">
|
66 |
+
|
67 |
+
```python
|
68 |
+
dict | None
|
69 |
+
```
|
70 |
+
|
71 |
+
</td>
|
72 |
+
<td align="left"><code>{"chains": [], "covMods": []}</code></td>
|
73 |
+
<td align="left">list of items.</td>
|
74 |
+
</tr>
|
75 |
+
|
76 |
+
<tr>
|
77 |
+
<td align="left"><code>label</code></td>
|
78 |
+
<td align="left" style="width: 25%;">
|
79 |
+
|
80 |
+
```python
|
81 |
+
str | None
|
82 |
+
```
|
83 |
+
|
84 |
+
</td>
|
85 |
+
<td align="left"><code>None</code></td>
|
86 |
+
<td align="left">The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.</td>
|
87 |
+
</tr>
|
88 |
+
|
89 |
+
<tr>
|
90 |
+
<td align="left"><code>info</code></td>
|
91 |
+
<td align="left" style="width: 25%;">
|
92 |
+
|
93 |
+
```python
|
94 |
+
str | None
|
95 |
+
```
|
96 |
+
|
97 |
+
</td>
|
98 |
+
<td align="left"><code>None</code></td>
|
99 |
+
<td align="left">additional component description.</td>
|
100 |
+
</tr>
|
101 |
+
|
102 |
+
<tr>
|
103 |
+
<td align="left"><code>every</code></td>
|
104 |
+
<td align="left" style="width: 25%;">
|
105 |
+
|
106 |
+
```python
|
107 |
+
float | None
|
108 |
+
```
|
109 |
+
|
110 |
+
</td>
|
111 |
+
<td align="left"><code>None</code></td>
|
112 |
+
<td align="left">If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute.</td>
|
113 |
+
</tr>
|
114 |
+
|
115 |
+
<tr>
|
116 |
+
<td align="left"><code>show_label</code></td>
|
117 |
+
<td align="left" style="width: 25%;">
|
118 |
+
|
119 |
+
```python
|
120 |
+
bool | None
|
121 |
+
```
|
122 |
+
|
123 |
+
</td>
|
124 |
+
<td align="left"><code>None</code></td>
|
125 |
+
<td align="left">if True, will display label.</td>
|
126 |
+
</tr>
|
127 |
+
|
128 |
+
<tr>
|
129 |
+
<td align="left"><code>container</code></td>
|
130 |
+
<td align="left" style="width: 25%;">
|
131 |
+
|
132 |
+
```python
|
133 |
+
bool
|
134 |
+
```
|
135 |
+
|
136 |
+
</td>
|
137 |
+
<td align="left"><code>True</code></td>
|
138 |
+
<td align="left">If True, will place the component in a container - providing some extra padding around the border.</td>
|
139 |
+
</tr>
|
140 |
+
|
141 |
+
<tr>
|
142 |
+
<td align="left"><code>scale</code></td>
|
143 |
+
<td align="left" style="width: 25%;">
|
144 |
+
|
145 |
+
```python
|
146 |
+
int | None
|
147 |
+
```
|
148 |
+
|
149 |
+
</td>
|
150 |
+
<td align="left"><code>None</code></td>
|
151 |
+
<td align="left">relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.</td>
|
152 |
+
</tr>
|
153 |
+
|
154 |
+
<tr>
|
155 |
+
<td align="left"><code>min_width</code></td>
|
156 |
+
<td align="left" style="width: 25%;">
|
157 |
+
|
158 |
+
```python
|
159 |
+
int
|
160 |
+
```
|
161 |
+
|
162 |
+
</td>
|
163 |
+
<td align="left"><code>160</code></td>
|
164 |
+
<td align="left">minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.</td>
|
165 |
+
</tr>
|
166 |
+
|
167 |
+
<tr>
|
168 |
+
<td align="left"><code>interactive</code></td>
|
169 |
+
<td align="left" style="width: 25%;">
|
170 |
+
|
171 |
+
```python
|
172 |
+
bool | None
|
173 |
+
```
|
174 |
+
|
175 |
+
</td>
|
176 |
+
<td align="left"><code>None</code></td>
|
177 |
+
<td align="left">if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.</td>
|
178 |
+
</tr>
|
179 |
+
|
180 |
+
<tr>
|
181 |
+
<td align="left"><code>visible</code></td>
|
182 |
+
<td align="left" style="width: 25%;">
|
183 |
+
|
184 |
+
```python
|
185 |
+
bool
|
186 |
+
```
|
187 |
+
|
188 |
+
</td>
|
189 |
+
<td align="left"><code>True</code></td>
|
190 |
+
<td align="left">If False, component will be hidden.</td>
|
191 |
+
</tr>
|
192 |
+
|
193 |
+
<tr>
|
194 |
+
<td align="left"><code>elem_id</code></td>
|
195 |
+
<td align="left" style="width: 25%;">
|
196 |
+
|
197 |
+
```python
|
198 |
+
str | None
|
199 |
+
```
|
200 |
+
|
201 |
+
</td>
|
202 |
+
<td align="left"><code>None</code></td>
|
203 |
+
<td align="left">An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.</td>
|
204 |
+
</tr>
|
205 |
+
|
206 |
+
<tr>
|
207 |
+
<td align="left"><code>autofocus</code></td>
|
208 |
+
<td align="left" style="width: 25%;">
|
209 |
+
|
210 |
+
```python
|
211 |
+
bool
|
212 |
+
```
|
213 |
+
|
214 |
+
</td>
|
215 |
+
<td align="left"><code>False</code></td>
|
216 |
+
<td align="left">If True, will focus on the textbox when the page loads. Use this carefully, as it can cause usability issues for sighted and non-sighted users.</td>
|
217 |
+
</tr>
|
218 |
+
|
219 |
+
<tr>
|
220 |
+
<td align="left"><code>autoscroll</code></td>
|
221 |
+
<td align="left" style="width: 25%;">
|
222 |
+
|
223 |
+
```python
|
224 |
+
bool
|
225 |
+
```
|
226 |
+
|
227 |
+
</td>
|
228 |
+
<td align="left"><code>True</code></td>
|
229 |
+
<td align="left">None</td>
|
230 |
+
</tr>
|
231 |
+
|
232 |
+
<tr>
|
233 |
+
<td align="left"><code>elem_classes</code></td>
|
234 |
+
<td align="left" style="width: 25%;">
|
235 |
+
|
236 |
+
```python
|
237 |
+
list[str] | str | None
|
238 |
+
```
|
239 |
+
|
240 |
+
</td>
|
241 |
+
<td align="left"><code>None</code></td>
|
242 |
+
<td align="left">An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.</td>
|
243 |
+
</tr>
|
244 |
+
|
245 |
+
<tr>
|
246 |
+
<td align="left"><code>render</code></td>
|
247 |
+
<td align="left" style="width: 25%;">
|
248 |
+
|
249 |
+
```python
|
250 |
+
bool
|
251 |
+
```
|
252 |
+
|
253 |
+
</td>
|
254 |
+
<td align="left"><code>True</code></td>
|
255 |
+
<td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
|
256 |
+
</tr>
|
257 |
+
</tbody></table>
|
258 |
+
|
259 |
+
|
260 |
+
### Events
|
261 |
+
|
262 |
+
| name | description |
|
263 |
+
|:-----|:------------|
|
264 |
+
| `change` | Triggered when the value of the CofoldingInput changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input. |
|
265 |
+
| `input` | This listener is triggered when the user changes the value of the CofoldingInput. |
|
266 |
+
| `select` | Event listener for when the user selects or deselects the CofoldingInput. Uses event data gradio.SelectData to carry `value` referring to the label of the CofoldingInput, and `selected` to refer to state of the CofoldingInput. See EventData documentation on how to use this event data |
|
267 |
+
| `submit` | This listener is triggered when the user presses the Enter key while the CofoldingInput is focused. |
|
268 |
+
| `focus` | This listener is triggered when the CofoldingInput is focused. |
|
269 |
+
| `blur` | This listener is triggered when the CofoldingInput is unfocused/blurred. |
|
270 |
+
|
271 |
+
|
272 |
+
|
273 |
+
### User function
|
274 |
+
|
275 |
+
The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both).
|
276 |
+
|
277 |
+
- When used as an Input, the component only impacts the input signature of the user function.
|
278 |
+
- When used as an output, the component only impacts the return signature of the user function.
|
279 |
+
|
280 |
+
The code snippet below is accurate in cases where the component is used as both an input and an output.
|
281 |
+
|
282 |
+
- **As input:** Should return, expects a {str} returned from function and sets textarea value to it.
|
283 |
+
|
284 |
+
```python
|
285 |
+
def predict(
|
286 |
+
value: Unknown
|
287 |
+
) -> dict | None:
|
288 |
+
return value
|
289 |
+
```
|
290 |
+
|
src/backend/gradio_cofoldinginput/__init__.py
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
from .cofoldinginput import CofoldingInput
|
3 |
+
|
4 |
+
__all__ = ['CofoldingInput']
|
src/backend/gradio_cofoldinginput/cofoldinginput.py
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"""gr.Textbox() component."""
|
2 |
+
|
3 |
+
from __future__ import annotations
|
4 |
+
|
5 |
+
from typing import Any, Callable, Literal
|
6 |
+
|
7 |
+
from gradio_client.documentation import document
|
8 |
+
|
9 |
+
from gradio.components.base import FormComponent
|
10 |
+
from gradio.events import Events
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
class CofoldingInput(FormComponent):
|
15 |
+
"""
|
16 |
+
Creates a textarea for user to enter string input or display string output.
|
17 |
+
|
18 |
+
Demos: hello_world, diff_texts, sentence_builder
|
19 |
+
Guides: creating-a-chatbot, real-time-speech-recognition
|
20 |
+
"""
|
21 |
+
|
22 |
+
EVENTS = [
|
23 |
+
Events.change,
|
24 |
+
Events.input,
|
25 |
+
Events.select,
|
26 |
+
Events.submit,
|
27 |
+
Events.focus,
|
28 |
+
Events.blur,
|
29 |
+
]
|
30 |
+
|
31 |
+
def __init__(
|
32 |
+
self,
|
33 |
+
value: dict | None = {"chains": [], "covMods": []},
|
34 |
+
*,
|
35 |
+
label: str | None = None,
|
36 |
+
info: str | None = None,
|
37 |
+
every: float | None = None,
|
38 |
+
show_label: bool | None = None,
|
39 |
+
container: bool = True,
|
40 |
+
scale: int | None = None,
|
41 |
+
min_width: int = 160,
|
42 |
+
interactive: bool | None = None,
|
43 |
+
visible: bool = True,
|
44 |
+
elem_id: str | None = None,
|
45 |
+
autofocus: bool = False,
|
46 |
+
autoscroll: bool = True,
|
47 |
+
elem_classes: list[str] | str | None = None,
|
48 |
+
render: bool = True,
|
49 |
+
):
|
50 |
+
"""
|
51 |
+
Parameters:
|
52 |
+
value: list of items.
|
53 |
+
label: The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.
|
54 |
+
info: additional component description.
|
55 |
+
every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute.
|
56 |
+
show_label: if True, will display label.
|
57 |
+
container: If True, will place the component in a container - providing some extra padding around the border.
|
58 |
+
scale: relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.
|
59 |
+
min_width: minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.
|
60 |
+
interactive: if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.
|
61 |
+
visible: If False, component will be hidden.
|
62 |
+
autofocus: If True, will focus on the textbox when the page loads. Use this carefully, as it can cause usability issues for sighted and non-sighted users.
|
63 |
+
elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
|
64 |
+
elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.
|
65 |
+
render: If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.
|
66 |
+
type: The type of textbox. One of: 'text', 'password', 'email', Default is 'text'.
|
67 |
+
"""
|
68 |
+
|
69 |
+
self.autofocus = autofocus
|
70 |
+
self.autoscroll = autoscroll
|
71 |
+
super().__init__(
|
72 |
+
label=label,
|
73 |
+
info=info,
|
74 |
+
every=every,
|
75 |
+
show_label=show_label,
|
76 |
+
container=container,
|
77 |
+
scale=scale,
|
78 |
+
min_width=min_width,
|
79 |
+
interactive=interactive,
|
80 |
+
visible=visible,
|
81 |
+
elem_id=elem_id,
|
82 |
+
elem_classes=elem_classes,
|
83 |
+
render=render,
|
84 |
+
value=value,
|
85 |
+
)
|
86 |
+
|
87 |
+
def preprocess(self, payload):
|
88 |
+
"""
|
89 |
+
Parameters:
|
90 |
+
payload: the text entered in the textarea.
|
91 |
+
Returns:
|
92 |
+
returns list
|
93 |
+
"""
|
94 |
+
return None if payload is None else dict(payload)
|
95 |
+
|
96 |
+
def postprocess(self, value: dict | None) -> dict | None:
|
97 |
+
"""
|
98 |
+
Parameters:
|
99 |
+
value: Expects a {str} returned from function and sets textarea value to it.
|
100 |
+
Returns:
|
101 |
+
The value to display in the textarea.
|
102 |
+
"""
|
103 |
+
return None if value is None else dict(value)
|
104 |
+
|
105 |
+
def api_info(self) -> dict[str, Any]:
|
106 |
+
"""
|
107 |
+
A JSON-schema representation of the value that the `preprocess` expects and the `postprocess` returns.
|
108 |
+
"""
|
109 |
+
return {
|
110 |
+
"type": {},
|
111 |
+
"description": "Any valid json",
|
112 |
+
}
|
113 |
+
|
114 |
+
def example_payload(self) -> Any:
|
115 |
+
return []
|
116 |
+
|
117 |
+
def example_value(self) -> Any:
|
118 |
+
return []
|
src/backend/gradio_cofoldinginput/cofoldinginput.pyi
ADDED
@@ -0,0 +1,370 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"""gr.Textbox() component."""
|
2 |
+
|
3 |
+
from __future__ import annotations
|
4 |
+
|
5 |
+
from typing import Any, Callable, Literal
|
6 |
+
|
7 |
+
from gradio_client.documentation import document
|
8 |
+
|
9 |
+
from gradio.components.base import FormComponent
|
10 |
+
from gradio.events import Events
|
11 |
+
|
12 |
+
|
13 |
+
class CofoldingInput(FormComponent):
|
14 |
+
"""
|
15 |
+
Creates a textarea for user to enter string input or display string output.
|
16 |
+
|
17 |
+
Demos: hello_world, diff_texts, sentence_builder
|
18 |
+
Guides: creating-a-chatbot, real-time-speech-recognition
|
19 |
+
"""
|
20 |
+
|
21 |
+
EVENTS = [
|
22 |
+
Events.change,
|
23 |
+
Events.input,
|
24 |
+
Events.select,
|
25 |
+
Events.submit,
|
26 |
+
Events.focus,
|
27 |
+
Events.blur,
|
28 |
+
]
|
29 |
+
|
30 |
+
def __init__(
|
31 |
+
self,
|
32 |
+
value: dict | None = {"chains": [], "covMods": []},
|
33 |
+
*,
|
34 |
+
label: str | None = None,
|
35 |
+
info: str | None = None,
|
36 |
+
every: float | None = None,
|
37 |
+
show_label: bool | None = None,
|
38 |
+
container: bool = True,
|
39 |
+
scale: int | None = None,
|
40 |
+
min_width: int = 160,
|
41 |
+
interactive: bool | None = None,
|
42 |
+
visible: bool = True,
|
43 |
+
elem_id: str | None = None,
|
44 |
+
autofocus: bool = False,
|
45 |
+
autoscroll: bool = True,
|
46 |
+
elem_classes: list[str] | str | None = None,
|
47 |
+
render: bool = True,
|
48 |
+
):
|
49 |
+
"""
|
50 |
+
Parameters:
|
51 |
+
value: list of items.
|
52 |
+
label: The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.
|
53 |
+
info: additional component description.
|
54 |
+
every: If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute.
|
55 |
+
show_label: if True, will display label.
|
56 |
+
container: If True, will place the component in a container - providing some extra padding around the border.
|
57 |
+
scale: relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.
|
58 |
+
min_width: minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.
|
59 |
+
interactive: if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.
|
60 |
+
visible: If False, component will be hidden.
|
61 |
+
autofocus: If True, will focus on the textbox when the page loads. Use this carefully, as it can cause usability issues for sighted and non-sighted users.
|
62 |
+
elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
|
63 |
+
elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.
|
64 |
+
render: If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.
|
65 |
+
type: The type of textbox. One of: 'text', 'password', 'email', Default is 'text'.
|
66 |
+
"""
|
67 |
+
|
68 |
+
self.autofocus = autofocus
|
69 |
+
self.autoscroll = autoscroll
|
70 |
+
super().__init__(
|
71 |
+
label=label,
|
72 |
+
info=info,
|
73 |
+
every=every,
|
74 |
+
show_label=show_label,
|
75 |
+
container=container,
|
76 |
+
scale=scale,
|
77 |
+
min_width=min_width,
|
78 |
+
interactive=interactive,
|
79 |
+
visible=visible,
|
80 |
+
elem_id=elem_id,
|
81 |
+
elem_classes=elem_classes,
|
82 |
+
render=render,
|
83 |
+
value=value,
|
84 |
+
)
|
85 |
+
|
86 |
+
def preprocess(self, payload):
|
87 |
+
"""
|
88 |
+
Parameters:
|
89 |
+
payload: the text entered in the textarea.
|
90 |
+
Returns:
|
91 |
+
returns list
|
92 |
+
"""
|
93 |
+
return None if payload is None else dict(payload)
|
94 |
+
|
95 |
+
def postprocess(self, value: dict | None) -> dict | None:
|
96 |
+
"""
|
97 |
+
Parameters:
|
98 |
+
value: Expects a {str} returned from function and sets textarea value to it.
|
99 |
+
Returns:
|
100 |
+
The value to display in the textarea.
|
101 |
+
"""
|
102 |
+
return None if value is None else dict(value)
|
103 |
+
|
104 |
+
def api_info(self) -> dict[str, Any]:
|
105 |
+
"""
|
106 |
+
A JSON-schema representation of the value that the `preprocess` expects and the `postprocess` returns.
|
107 |
+
"""
|
108 |
+
return {
|
109 |
+
"type": {},
|
110 |
+
"description": "Any valid json",
|
111 |
+
}
|
112 |
+
|
113 |
+
def example_payload(self) -> Any:
|
114 |
+
return []
|
115 |
+
|
116 |
+
def example_value(self) -> Any:
|
117 |
+
return []
|
118 |
+
|
119 |
+
|
120 |
+
def change(self,
|
121 |
+
fn: Callable | None,
|
122 |
+
inputs: Component | Sequence[Component] | set[Component] | None = None,
|
123 |
+
outputs: Component | Sequence[Component] | None = None,
|
124 |
+
api_name: str | None | Literal[False] = None,
|
125 |
+
scroll_to_output: bool = False,
|
126 |
+
show_progress: Literal["full", "minimal", "hidden"] = "full",
|
127 |
+
queue: bool | None = None,
|
128 |
+
batch: bool = False,
|
129 |
+
max_batch_size: int = 4,
|
130 |
+
preprocess: bool = True,
|
131 |
+
postprocess: bool = True,
|
132 |
+
cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
|
133 |
+
every: float | None = None,
|
134 |
+
trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
|
135 |
+
js: str | None = None,
|
136 |
+
concurrency_limit: int | None | Literal["default"] = "default",
|
137 |
+
concurrency_id: str | None = None,
|
138 |
+
show_api: bool = True) -> Dependency:
|
139 |
+
"""
|
140 |
+
Parameters:
|
141 |
+
fn: the function to call when this event is triggered. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component.
|
142 |
+
inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list.
|
143 |
+
outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list.
|
144 |
+
api_name: Defines how the endpoint appears in the API docs. Can be a string, None, or False. If False, the endpoint will not be exposed in the api docs. If set to None, the endpoint will be exposed in the api docs as an unnamed endpoint, although this behavior will be changed in Gradio 4.0. If set to a string, the endpoint will be exposed in the api docs with the given name.
|
145 |
+
scroll_to_output: If True, will scroll to output component on completion
|
146 |
+
show_progress: If True, will show progress animation while pending
|
147 |
+
queue: If True, will place the request on the queue, if the queue has been enabled. If False, will not put this event on the queue, even if the queue has been enabled. If None, will use the queue setting of the gradio app.
|
148 |
+
batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component.
|
149 |
+
max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True)
|
150 |
+
preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component).
|
151 |
+
postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser.
|
152 |
+
cancels: A list of other events to cancel when this listener is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. Functions that have not yet run (or generators that are iterating) will be cancelled, but functions that are currently running will be allowed to finish.
|
153 |
+
every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds.
|
154 |
+
trigger_mode: If "once" (default for all events except `.change()`) would not allow any submissions while an event is pending. If set to "multiple", unlimited submissions are allowed while pending, and "always_last" (default for `.change()` and `.key_up()` events) would allow a second submission after the pending event is complete.
|
155 |
+
js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components.
|
156 |
+
concurrency_limit: If set, this is the maximum number of this event that can be running simultaneously. Can be set to None to mean no concurrency_limit (any number of this event can be running simultaneously). Set to "default" to use the default concurrency limit (defined by the `default_concurrency_limit` parameter in `Blocks.queue()`, which itself is 1 by default).
|
157 |
+
concurrency_id: If set, this is the id of the concurrency group. Events with the same concurrency_id will be limited by the lowest set concurrency_limit.
|
158 |
+
show_api: whether to show this event in the "view API" page of the Gradio app, or in the ".view_api()" method of the Gradio clients. Unlike setting api_name to False, setting show_api to False will still allow downstream apps to use this event. If fn is None, show_api will automatically be set to False.
|
159 |
+
"""
|
160 |
+
...
|
161 |
+
|
162 |
+
def input(self,
|
163 |
+
fn: Callable | None,
|
164 |
+
inputs: Component | Sequence[Component] | set[Component] | None = None,
|
165 |
+
outputs: Component | Sequence[Component] | None = None,
|
166 |
+
api_name: str | None | Literal[False] = None,
|
167 |
+
scroll_to_output: bool = False,
|
168 |
+
show_progress: Literal["full", "minimal", "hidden"] = "full",
|
169 |
+
queue: bool | None = None,
|
170 |
+
batch: bool = False,
|
171 |
+
max_batch_size: int = 4,
|
172 |
+
preprocess: bool = True,
|
173 |
+
postprocess: bool = True,
|
174 |
+
cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
|
175 |
+
every: float | None = None,
|
176 |
+
trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
|
177 |
+
js: str | None = None,
|
178 |
+
concurrency_limit: int | None | Literal["default"] = "default",
|
179 |
+
concurrency_id: str | None = None,
|
180 |
+
show_api: bool = True) -> Dependency:
|
181 |
+
"""
|
182 |
+
Parameters:
|
183 |
+
fn: the function to call when this event is triggered. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component.
|
184 |
+
inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list.
|
185 |
+
outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list.
|
186 |
+
api_name: Defines how the endpoint appears in the API docs. Can be a string, None, or False. If False, the endpoint will not be exposed in the api docs. If set to None, the endpoint will be exposed in the api docs as an unnamed endpoint, although this behavior will be changed in Gradio 4.0. If set to a string, the endpoint will be exposed in the api docs with the given name.
|
187 |
+
scroll_to_output: If True, will scroll to output component on completion
|
188 |
+
show_progress: If True, will show progress animation while pending
|
189 |
+
queue: If True, will place the request on the queue, if the queue has been enabled. If False, will not put this event on the queue, even if the queue has been enabled. If None, will use the queue setting of the gradio app.
|
190 |
+
batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component.
|
191 |
+
max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True)
|
192 |
+
preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component).
|
193 |
+
postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser.
|
194 |
+
cancels: A list of other events to cancel when this listener is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. Functions that have not yet run (or generators that are iterating) will be cancelled, but functions that are currently running will be allowed to finish.
|
195 |
+
every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds.
|
196 |
+
trigger_mode: If "once" (default for all events except `.change()`) would not allow any submissions while an event is pending. If set to "multiple", unlimited submissions are allowed while pending, and "always_last" (default for `.change()` and `.key_up()` events) would allow a second submission after the pending event is complete.
|
197 |
+
js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components.
|
198 |
+
concurrency_limit: If set, this is the maximum number of this event that can be running simultaneously. Can be set to None to mean no concurrency_limit (any number of this event can be running simultaneously). Set to "default" to use the default concurrency limit (defined by the `default_concurrency_limit` parameter in `Blocks.queue()`, which itself is 1 by default).
|
199 |
+
concurrency_id: If set, this is the id of the concurrency group. Events with the same concurrency_id will be limited by the lowest set concurrency_limit.
|
200 |
+
show_api: whether to show this event in the "view API" page of the Gradio app, or in the ".view_api()" method of the Gradio clients. Unlike setting api_name to False, setting show_api to False will still allow downstream apps to use this event. If fn is None, show_api will automatically be set to False.
|
201 |
+
"""
|
202 |
+
...
|
203 |
+
|
204 |
+
def select(self,
|
205 |
+
fn: Callable | None,
|
206 |
+
inputs: Component | Sequence[Component] | set[Component] | None = None,
|
207 |
+
outputs: Component | Sequence[Component] | None = None,
|
208 |
+
api_name: str | None | Literal[False] = None,
|
209 |
+
scroll_to_output: bool = False,
|
210 |
+
show_progress: Literal["full", "minimal", "hidden"] = "full",
|
211 |
+
queue: bool | None = None,
|
212 |
+
batch: bool = False,
|
213 |
+
max_batch_size: int = 4,
|
214 |
+
preprocess: bool = True,
|
215 |
+
postprocess: bool = True,
|
216 |
+
cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
|
217 |
+
every: float | None = None,
|
218 |
+
trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
|
219 |
+
js: str | None = None,
|
220 |
+
concurrency_limit: int | None | Literal["default"] = "default",
|
221 |
+
concurrency_id: str | None = None,
|
222 |
+
show_api: bool = True) -> Dependency:
|
223 |
+
"""
|
224 |
+
Parameters:
|
225 |
+
fn: the function to call when this event is triggered. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component.
|
226 |
+
inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list.
|
227 |
+
outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list.
|
228 |
+
api_name: Defines how the endpoint appears in the API docs. Can be a string, None, or False. If False, the endpoint will not be exposed in the api docs. If set to None, the endpoint will be exposed in the api docs as an unnamed endpoint, although this behavior will be changed in Gradio 4.0. If set to a string, the endpoint will be exposed in the api docs with the given name.
|
229 |
+
scroll_to_output: If True, will scroll to output component on completion
|
230 |
+
show_progress: If True, will show progress animation while pending
|
231 |
+
queue: If True, will place the request on the queue, if the queue has been enabled. If False, will not put this event on the queue, even if the queue has been enabled. If None, will use the queue setting of the gradio app.
|
232 |
+
batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component.
|
233 |
+
max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True)
|
234 |
+
preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component).
|
235 |
+
postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser.
|
236 |
+
cancels: A list of other events to cancel when this listener is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. Functions that have not yet run (or generators that are iterating) will be cancelled, but functions that are currently running will be allowed to finish.
|
237 |
+
every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds.
|
238 |
+
trigger_mode: If "once" (default for all events except `.change()`) would not allow any submissions while an event is pending. If set to "multiple", unlimited submissions are allowed while pending, and "always_last" (default for `.change()` and `.key_up()` events) would allow a second submission after the pending event is complete.
|
239 |
+
js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components.
|
240 |
+
concurrency_limit: If set, this is the maximum number of this event that can be running simultaneously. Can be set to None to mean no concurrency_limit (any number of this event can be running simultaneously). Set to "default" to use the default concurrency limit (defined by the `default_concurrency_limit` parameter in `Blocks.queue()`, which itself is 1 by default).
|
241 |
+
concurrency_id: If set, this is the id of the concurrency group. Events with the same concurrency_id will be limited by the lowest set concurrency_limit.
|
242 |
+
show_api: whether to show this event in the "view API" page of the Gradio app, or in the ".view_api()" method of the Gradio clients. Unlike setting api_name to False, setting show_api to False will still allow downstream apps to use this event. If fn is None, show_api will automatically be set to False.
|
243 |
+
"""
|
244 |
+
...
|
245 |
+
|
246 |
+
def submit(self,
|
247 |
+
fn: Callable | None,
|
248 |
+
inputs: Component | Sequence[Component] | set[Component] | None = None,
|
249 |
+
outputs: Component | Sequence[Component] | None = None,
|
250 |
+
api_name: str | None | Literal[False] = None,
|
251 |
+
scroll_to_output: bool = False,
|
252 |
+
show_progress: Literal["full", "minimal", "hidden"] = "full",
|
253 |
+
queue: bool | None = None,
|
254 |
+
batch: bool = False,
|
255 |
+
max_batch_size: int = 4,
|
256 |
+
preprocess: bool = True,
|
257 |
+
postprocess: bool = True,
|
258 |
+
cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
|
259 |
+
every: float | None = None,
|
260 |
+
trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
|
261 |
+
js: str | None = None,
|
262 |
+
concurrency_limit: int | None | Literal["default"] = "default",
|
263 |
+
concurrency_id: str | None = None,
|
264 |
+
show_api: bool = True) -> Dependency:
|
265 |
+
"""
|
266 |
+
Parameters:
|
267 |
+
fn: the function to call when this event is triggered. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component.
|
268 |
+
inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list.
|
269 |
+
outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list.
|
270 |
+
api_name: Defines how the endpoint appears in the API docs. Can be a string, None, or False. If False, the endpoint will not be exposed in the api docs. If set to None, the endpoint will be exposed in the api docs as an unnamed endpoint, although this behavior will be changed in Gradio 4.0. If set to a string, the endpoint will be exposed in the api docs with the given name.
|
271 |
+
scroll_to_output: If True, will scroll to output component on completion
|
272 |
+
show_progress: If True, will show progress animation while pending
|
273 |
+
queue: If True, will place the request on the queue, if the queue has been enabled. If False, will not put this event on the queue, even if the queue has been enabled. If None, will use the queue setting of the gradio app.
|
274 |
+
batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component.
|
275 |
+
max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True)
|
276 |
+
preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component).
|
277 |
+
postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser.
|
278 |
+
cancels: A list of other events to cancel when this listener is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. Functions that have not yet run (or generators that are iterating) will be cancelled, but functions that are currently running will be allowed to finish.
|
279 |
+
every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds.
|
280 |
+
trigger_mode: If "once" (default for all events except `.change()`) would not allow any submissions while an event is pending. If set to "multiple", unlimited submissions are allowed while pending, and "always_last" (default for `.change()` and `.key_up()` events) would allow a second submission after the pending event is complete.
|
281 |
+
js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components.
|
282 |
+
concurrency_limit: If set, this is the maximum number of this event that can be running simultaneously. Can be set to None to mean no concurrency_limit (any number of this event can be running simultaneously). Set to "default" to use the default concurrency limit (defined by the `default_concurrency_limit` parameter in `Blocks.queue()`, which itself is 1 by default).
|
283 |
+
concurrency_id: If set, this is the id of the concurrency group. Events with the same concurrency_id will be limited by the lowest set concurrency_limit.
|
284 |
+
show_api: whether to show this event in the "view API" page of the Gradio app, or in the ".view_api()" method of the Gradio clients. Unlike setting api_name to False, setting show_api to False will still allow downstream apps to use this event. If fn is None, show_api will automatically be set to False.
|
285 |
+
"""
|
286 |
+
...
|
287 |
+
|
288 |
+
def focus(self,
|
289 |
+
fn: Callable | None,
|
290 |
+
inputs: Component | Sequence[Component] | set[Component] | None = None,
|
291 |
+
outputs: Component | Sequence[Component] | None = None,
|
292 |
+
api_name: str | None | Literal[False] = None,
|
293 |
+
scroll_to_output: bool = False,
|
294 |
+
show_progress: Literal["full", "minimal", "hidden"] = "full",
|
295 |
+
queue: bool | None = None,
|
296 |
+
batch: bool = False,
|
297 |
+
max_batch_size: int = 4,
|
298 |
+
preprocess: bool = True,
|
299 |
+
postprocess: bool = True,
|
300 |
+
cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
|
301 |
+
every: float | None = None,
|
302 |
+
trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
|
303 |
+
js: str | None = None,
|
304 |
+
concurrency_limit: int | None | Literal["default"] = "default",
|
305 |
+
concurrency_id: str | None = None,
|
306 |
+
show_api: bool = True) -> Dependency:
|
307 |
+
"""
|
308 |
+
Parameters:
|
309 |
+
fn: the function to call when this event is triggered. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component.
|
310 |
+
inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list.
|
311 |
+
outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list.
|
312 |
+
api_name: Defines how the endpoint appears in the API docs. Can be a string, None, or False. If False, the endpoint will not be exposed in the api docs. If set to None, the endpoint will be exposed in the api docs as an unnamed endpoint, although this behavior will be changed in Gradio 4.0. If set to a string, the endpoint will be exposed in the api docs with the given name.
|
313 |
+
scroll_to_output: If True, will scroll to output component on completion
|
314 |
+
show_progress: If True, will show progress animation while pending
|
315 |
+
queue: If True, will place the request on the queue, if the queue has been enabled. If False, will not put this event on the queue, even if the queue has been enabled. If None, will use the queue setting of the gradio app.
|
316 |
+
batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component.
|
317 |
+
max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True)
|
318 |
+
preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component).
|
319 |
+
postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser.
|
320 |
+
cancels: A list of other events to cancel when this listener is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. Functions that have not yet run (or generators that are iterating) will be cancelled, but functions that are currently running will be allowed to finish.
|
321 |
+
every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds.
|
322 |
+
trigger_mode: If "once" (default for all events except `.change()`) would not allow any submissions while an event is pending. If set to "multiple", unlimited submissions are allowed while pending, and "always_last" (default for `.change()` and `.key_up()` events) would allow a second submission after the pending event is complete.
|
323 |
+
js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components.
|
324 |
+
concurrency_limit: If set, this is the maximum number of this event that can be running simultaneously. Can be set to None to mean no concurrency_limit (any number of this event can be running simultaneously). Set to "default" to use the default concurrency limit (defined by the `default_concurrency_limit` parameter in `Blocks.queue()`, which itself is 1 by default).
|
325 |
+
concurrency_id: If set, this is the id of the concurrency group. Events with the same concurrency_id will be limited by the lowest set concurrency_limit.
|
326 |
+
show_api: whether to show this event in the "view API" page of the Gradio app, or in the ".view_api()" method of the Gradio clients. Unlike setting api_name to False, setting show_api to False will still allow downstream apps to use this event. If fn is None, show_api will automatically be set to False.
|
327 |
+
"""
|
328 |
+
...
|
329 |
+
|
330 |
+
def blur(self,
|
331 |
+
fn: Callable | None,
|
332 |
+
inputs: Component | Sequence[Component] | set[Component] | None = None,
|
333 |
+
outputs: Component | Sequence[Component] | None = None,
|
334 |
+
api_name: str | None | Literal[False] = None,
|
335 |
+
scroll_to_output: bool = False,
|
336 |
+
show_progress: Literal["full", "minimal", "hidden"] = "full",
|
337 |
+
queue: bool | None = None,
|
338 |
+
batch: bool = False,
|
339 |
+
max_batch_size: int = 4,
|
340 |
+
preprocess: bool = True,
|
341 |
+
postprocess: bool = True,
|
342 |
+
cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
|
343 |
+
every: float | None = None,
|
344 |
+
trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
|
345 |
+
js: str | None = None,
|
346 |
+
concurrency_limit: int | None | Literal["default"] = "default",
|
347 |
+
concurrency_id: str | None = None,
|
348 |
+
show_api: bool = True) -> Dependency:
|
349 |
+
"""
|
350 |
+
Parameters:
|
351 |
+
fn: the function to call when this event is triggered. Often a machine learning model's prediction function. Each parameter of the function corresponds to one input component, and the function should return a single value or a tuple of values, with each element in the tuple corresponding to one output component.
|
352 |
+
inputs: List of gradio.components to use as inputs. If the function takes no inputs, this should be an empty list.
|
353 |
+
outputs: List of gradio.components to use as outputs. If the function returns no outputs, this should be an empty list.
|
354 |
+
api_name: Defines how the endpoint appears in the API docs. Can be a string, None, or False. If False, the endpoint will not be exposed in the api docs. If set to None, the endpoint will be exposed in the api docs as an unnamed endpoint, although this behavior will be changed in Gradio 4.0. If set to a string, the endpoint will be exposed in the api docs with the given name.
|
355 |
+
scroll_to_output: If True, will scroll to output component on completion
|
356 |
+
show_progress: If True, will show progress animation while pending
|
357 |
+
queue: If True, will place the request on the queue, if the queue has been enabled. If False, will not put this event on the queue, even if the queue has been enabled. If None, will use the queue setting of the gradio app.
|
358 |
+
batch: If True, then the function should process a batch of inputs, meaning that it should accept a list of input values for each parameter. The lists should be of equal length (and be up to length `max_batch_size`). The function is then *required* to return a tuple of lists (even if there is only 1 output component), with each list in the tuple corresponding to one output component.
|
359 |
+
max_batch_size: Maximum number of inputs to batch together if this is called from the queue (only relevant if batch=True)
|
360 |
+
preprocess: If False, will not run preprocessing of component data before running 'fn' (e.g. leaving it as a base64 string if this method is called with the `Image` component).
|
361 |
+
postprocess: If False, will not run postprocessing of component data before returning 'fn' output to the browser.
|
362 |
+
cancels: A list of other events to cancel when this listener is triggered. For example, setting cancels=[click_event] will cancel the click_event, where click_event is the return value of another components .click method. Functions that have not yet run (or generators that are iterating) will be cancelled, but functions that are currently running will be allowed to finish.
|
363 |
+
every: Run this event 'every' number of seconds while the client connection is open. Interpreted in seconds.
|
364 |
+
trigger_mode: If "once" (default for all events except `.change()`) would not allow any submissions while an event is pending. If set to "multiple", unlimited submissions are allowed while pending, and "always_last" (default for `.change()` and `.key_up()` events) would allow a second submission after the pending event is complete.
|
365 |
+
js: Optional frontend js method to run before running 'fn'. Input arguments for js method are values of 'inputs' and 'outputs', return should be a list of values for output components.
|
366 |
+
concurrency_limit: If set, this is the maximum number of this event that can be running simultaneously. Can be set to None to mean no concurrency_limit (any number of this event can be running simultaneously). Set to "default" to use the default concurrency limit (defined by the `default_concurrency_limit` parameter in `Blocks.queue()`, which itself is 1 by default).
|
367 |
+
concurrency_id: If set, this is the id of the concurrency group. Events with the same concurrency_id will be limited by the lowest set concurrency_limit.
|
368 |
+
show_api: whether to show this event in the "view API" page of the Gradio app, or in the ".view_api()" method of the Gradio clients. Unlike setting api_name to False, setting show_api to False will still allow downstream apps to use this event. If fn is None, show_api will automatically be set to False.
|
369 |
+
"""
|
370 |
+
...
|
src/backend/gradio_cofoldinginput/templates/component/index.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
src/backend/gradio_cofoldinginput/templates/component/style.css
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
.block.svelte-1t38q2d{position:relative;margin:0;box-shadow:var(--block-shadow);border-width:var(--block-border-width);border-color:var(--block-border-color);border-radius:var(--block-radius);background:var(--block-background-fill);width:100%;line-height:var(--line-sm)}.block.border_focus.svelte-1t38q2d{border-color:var(--color-accent)}.padded.svelte-1t38q2d{padding:var(--block-padding)}.hidden.svelte-1t38q2d{display:none}.hide-container.svelte-1t38q2d{margin:0;box-shadow:none;--block-border-width:0;background:transparent;padding:0;overflow:visible}div.svelte-1hnfib2{margin-bottom:var(--spacing-lg);color:var(--block-info-text-color);font-weight:var(--block-info-text-weight);font-size:var(--block-info-text-size);line-height:var(--line-sm)}span.has-info.svelte-22c38v{margin-bottom:var(--spacing-xs)}span.svelte-22c38v:not(.has-info){margin-bottom:var(--spacing-lg)}span.svelte-22c38v{display:inline-block;position:relative;z-index:var(--layer-4);border:solid var(--block-title-border-width) var(--block-title-border-color);border-radius:var(--block-title-radius);background:var(--block-title-background-fill);padding:var(--block-title-padding);color:var(--block-title-text-color);font-weight:var(--block-title-text-weight);font-size:var(--block-title-text-size);line-height:var(--line-sm)}.hide.svelte-22c38v{margin:0;height:0}label.svelte-9gxdi0{display:inline-flex;align-items:center;z-index:var(--layer-2);box-shadow:var(--block-label-shadow);border:var(--block-label-border-width) solid var(--border-color-primary);border-top:none;border-left:none;border-radius:var(--block-label-radius);background:var(--block-label-background-fill);padding:var(--block-label-padding);pointer-events:none;color:var(--block-label-text-color);font-weight:var(--block-label-text-weight);font-size:var(--block-label-text-size);line-height:var(--line-sm)}.gr-group label.svelte-9gxdi0{border-top-left-radius:0}label.float.svelte-9gxdi0{position:absolute;top:var(--block-label-margin);left:var(--block-label-margin)}label.svelte-9gxdi0:not(.float){position:static;margin-top:var(--block-label-margin);margin-left:var(--block-label-margin)}.hide.svelte-9gxdi0{height:0}span.svelte-9gxdi0{opacity:.8;margin-right:var(--size-2);width:calc(var(--block-label-text-size) - 1px);height:calc(var(--block-label-text-size) - 1px)}.hide-label.svelte-9gxdi0{box-shadow:none;border-width:0;background:transparent;overflow:visible}button.svelte-lpi64a{display:flex;justify-content:center;align-items:center;gap:1px;z-index:var(--layer-2);border-radius:var(--radius-sm);color:var(--block-label-text-color);border:1px solid transparent}button[disabled].svelte-lpi64a{opacity:.5;box-shadow:none}button[disabled].svelte-lpi64a:hover{cursor:not-allowed}.padded.svelte-lpi64a{padding:2px;background:var(--bg-color);box-shadow:var(--shadow-drop);border:1px solid var(--button-secondary-border-color)}button.svelte-lpi64a:hover,button.highlight.svelte-lpi64a{cursor:pointer;color:var(--color-accent)}.padded.svelte-lpi64a:hover{border:2px solid var(--button-secondary-border-color-hover);padding:1px;color:var(--block-label-text-color)}span.svelte-lpi64a{padding:0 1px;font-size:10px}div.svelte-lpi64a{padding:2px;display:flex;align-items:flex-end}.small.svelte-lpi64a{width:14px;height:14px}.large.svelte-lpi64a{width:22px;height:22px}.pending.svelte-lpi64a{animation:svelte-lpi64a-flash .5s infinite}@keyframes svelte-lpi64a-flash{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.transparent.svelte-lpi64a{background:transparent;border:none;box-shadow:none}.empty.svelte-3w3rth{display:flex;justify-content:center;align-items:center;margin-top:calc(0px - var(--size-6));height:var(--size-full)}.icon.svelte-3w3rth{opacity:.5;height:var(--size-5);color:var(--body-text-color)}.small.svelte-3w3rth{min-height:calc(var(--size-32) - 20px)}.large.svelte-3w3rth{min-height:calc(var(--size-64) - 20px)}.unpadded_box.svelte-3w3rth{margin-top:0}.small_parent.svelte-3w3rth{min-height:100%!important}.dropdown-arrow.svelte-145leq6{fill:currentColor}.wrap.svelte-kzcjhc{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:var(--size-60);color:var(--block-label-text-color);line-height:var(--line-md);height:100%;padding-top:var(--size-3)}.or.svelte-kzcjhc{color:var(--body-text-color-subdued);display:flex}.icon-wrap.svelte-kzcjhc{width:30px;margin-bottom:var(--spacing-lg)}@media (--screen-md){.wrap.svelte-kzcjhc{font-size:var(--text-lg)}}.hovered.svelte-kzcjhc{color:var(--color-accent)}div.svelte-ipfyu7{border-top:1px solid transparent;display:flex;max-height:100%;justify-content:center;gap:var(--spacing-sm);height:auto;align-items:flex-end;padding-bottom:var(--spacing-xl);color:var(--block-label-text-color);flex-shrink:0;width:95%}.show_border.svelte-ipfyu7{border-top:1px solid var(--block-border-color);margin-top:var(--spacing-xxl);box-shadow:var(--shadow-drop)}.source-selection.svelte-1jp3vgd{display:flex;align-items:center;justify-content:center;border-top:1px solid var(--border-color-primary);width:95%;bottom:0;left:0;right:0;margin-left:auto;margin-right:auto}.icon.svelte-1jp3vgd{width:22px;height:22px;margin:var(--spacing-lg) var(--spacing-xs);padding:var(--spacing-xs);color:var(--neutral-400);border-radius:var(--radius-md)}.selected.svelte-1jp3vgd{color:var(--color-accent)}.icon.svelte-1jp3vgd:hover,.icon.svelte-1jp3vgd:focus{color:var(--color-accent)}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx,.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:before,.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:before,.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:after{--tw-content:""}button.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{text-transform:none}button.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{-webkit-appearance:button;background-color:transparent;background-image:none}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:-moz-focusring{outline:auto}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:-moz-ui-invalid{box-shadow:none}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx::-webkit-inner-spin-button,.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx::-webkit-outer-spin-button{height:auto}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx::-webkit-search-decoration{-webkit-appearance:none}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}button.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{cursor:pointer}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:disabled{cursor:default}svg.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{display:block;vertical-align:middle}.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx,.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:before,.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.block.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{display:block}.flex.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{display:flex}.h-4.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{height:1rem}.w-4.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{width:1rem}.items-center.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{align-items:center}.justify-center.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{justify-content:center}.space-x-2.svelte-8wrmgx>.svelte-8wrmgx:not([hidden])~.svelte-8wrmgx:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.px-4.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{padding-left:1rem;padding-right:1rem}.py-2.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx{padding-top:.5rem;padding-bottom:.5rem}.hover\:bg-gray-100.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}@media (prefers-color-scheme: dark){.dark\:hover\:bg-gray-600.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:hover\:text-white.svelte-8wrmgx.svelte-8wrmgx.svelte-8wrmgx:hover{--tw-text-opacity:1;color:#fff}}.svelte-8wrmgx,.svelte-8wrmgx:before,.svelte-8wrmgx:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-8wrmgx:before,.svelte-8wrmgx:after{--tw-content:""}button.svelte-8wrmgx,input.svelte-8wrmgx{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button.svelte-8wrmgx{text-transform:none}button.svelte-8wrmgx,[type=button].svelte-8wrmgx,[type=submit].svelte-8wrmgx{-webkit-appearance:button;background-color:transparent;background-image:none}.svelte-8wrmgx:-moz-focusring{outline:auto}.svelte-8wrmgx:-moz-ui-invalid{box-shadow:none}.svelte-8wrmgx::-webkit-inner-spin-button,.svelte-8wrmgx::-webkit-outer-spin-button{height:auto}[type=search].svelte-8wrmgx{-webkit-appearance:textfield;outline-offset:-2px}.svelte-8wrmgx::-webkit-search-decoration{-webkit-appearance:none}.svelte-8wrmgx::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}ul.svelte-8wrmgx{list-style:none;margin:0;padding:0}input.svelte-8wrmgx::placeholder{opacity:1;color:#9ca3af}button.svelte-8wrmgx{cursor:pointer}.svelte-8wrmgx:disabled{cursor:default}svg.svelte-8wrmgx{display:block;vertical-align:middle}.svelte-8wrmgx,.svelte-8wrmgx:before,.svelte-8wrmgx:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.svelte-8wrmgx::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only.svelte-8wrmgx{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute.svelte-8wrmgx{position:absolute}.relative.svelte-8wrmgx{position:relative}.end-0.svelte-8wrmgx{inset-inline-end:0px}.top-0.svelte-8wrmgx{top:0}.z-10.svelte-8wrmgx{z-index:10}.z-20.svelte-8wrmgx{z-index:20}.mx-auto.svelte-8wrmgx{margin-left:auto;margin-right:auto}.my-2.svelte-8wrmgx{margin-top:.5rem;margin-bottom:.5rem}.mb-2.svelte-8wrmgx{margin-bottom:.5rem}.block.svelte-8wrmgx{display:block}.flex.svelte-8wrmgx{display:flex}.inline-flex.svelte-8wrmgx{display:inline-flex}.hidden.svelte-8wrmgx{display:none}.h-4.svelte-8wrmgx{height:1rem}.h-full.svelte-8wrmgx{height:100%}.w-4.svelte-8wrmgx{width:1rem}.w-44.svelte-8wrmgx{width:11rem}.w-full.svelte-8wrmgx{width:100%}.max-w-lg.svelte-8wrmgx{max-width:32rem}.flex-shrink-0.svelte-8wrmgx{flex-shrink:0}.items-center.svelte-8wrmgx{align-items:center}.rounded-lg.svelte-8wrmgx{border-radius:.5rem}.rounded-e-lg.svelte-8wrmgx{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-s-lg.svelte-8wrmgx{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.border.svelte-8wrmgx{border-width:1px}.border-s-2.svelte-8wrmgx{border-inline-start-width:2px}.border-blue-700.svelte-8wrmgx{--tw-border-opacity:1;border-color:rgb(29 78 216 / var(--tw-border-opacity))}.border-gray-300.svelte-8wrmgx{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-s-gray-50.svelte-8wrmgx{--tw-border-opacity:1;border-inline-start-color:rgb(249 250 251 / var(--tw-border-opacity))}.bg-blue-700.svelte-8wrmgx{--tw-bg-opacity:1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-gray-100.svelte-8wrmgx{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-50.svelte-8wrmgx{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-white.svelte-8wrmgx{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-2\.5.svelte-8wrmgx{padding:.625rem}.px-4.svelte-8wrmgx{padding-left:1rem;padding-right:1rem}.py-2.svelte-8wrmgx{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5.svelte-8wrmgx{padding-top:.625rem;padding-bottom:.625rem}.text-center.svelte-8wrmgx{text-align:center}.text-sm.svelte-8wrmgx{font-size:.875rem;line-height:1.25rem}.font-medium.svelte-8wrmgx{font-weight:500}.text-gray-700.svelte-8wrmgx{--tw-text-opacity:1;color:#374151}.text-gray-900.svelte-8wrmgx{--tw-text-opacity:1;color:#111827}.text-white.svelte-8wrmgx{--tw-text-opacity:1;color:#fff}.shadow.svelte-8wrmgx{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:bg-blue-800.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175 / var(--tw-bg-opacity))}.hover\:bg-gray-100.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.focus\:border-blue-500.svelte-8wrmgx:focus{--tw-border-opacity:1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:outline-none.svelte-8wrmgx:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-4.svelte-8wrmgx:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-300.svelte-8wrmgx:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253 / var(--tw-ring-opacity))}.focus\:ring-blue-500.svelte-8wrmgx:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-gray-100.svelte-8wrmgx:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(243 244 246 / var(--tw-ring-opacity))}@media (prefers-color-scheme: dark){.dark\:border-gray-600.svelte-8wrmgx{--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-s-gray-700.svelte-8wrmgx{--tw-border-opacity:1;border-inline-start-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:bg-blue-600.svelte-8wrmgx{--tw-bg-opacity:1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.dark\:bg-gray-700.svelte-8wrmgx{--tw-bg-opacity:1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-gray-200.svelte-8wrmgx{--tw-text-opacity:1;color:#e5e7eb}.dark\:text-white.svelte-8wrmgx{--tw-text-opacity:1;color:#fff}.dark\:placeholder-gray-400.svelte-8wrmgx::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:hover\:bg-blue-700.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-600.svelte-8wrmgx:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:hover\:text-white.svelte-8wrmgx:hover{--tw-text-opacity:1;color:#fff}.dark\:focus\:border-blue-500.svelte-8wrmgx:focus{--tw-border-opacity:1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-800.svelte-8wrmgx:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175 / var(--tw-ring-opacity))}.dark\:focus\:ring-gray-700.svelte-8wrmgx:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81 / var(--tw-ring-opacity))}}.svelte-hhspdt.svelte-hhspdt,.svelte-hhspdt.svelte-hhspdt:before,.svelte-hhspdt.svelte-hhspdt:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-hhspdt.svelte-hhspdt:before,.svelte-hhspdt.svelte-hhspdt:after{--tw-content:""}.svelte-hhspdt.svelte-hhspdt:-moz-focusring{outline:auto}.svelte-hhspdt.svelte-hhspdt:-moz-ui-invalid{box-shadow:none}.svelte-hhspdt.svelte-hhspdt::-webkit-inner-spin-button,.svelte-hhspdt.svelte-hhspdt::-webkit-outer-spin-button{height:auto}.svelte-hhspdt.svelte-hhspdt::-webkit-search-decoration{-webkit-appearance:none}.svelte-hhspdt.svelte-hhspdt::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.svelte-hhspdt.svelte-hhspdt:disabled{cursor:default}.svelte-hhspdt.svelte-hhspdt,.svelte-hhspdt.svelte-hhspdt:before,.svelte-hhspdt.svelte-hhspdt:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.svelte-hhspdt.svelte-hhspdt::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.inline-block.svelte-hhspdt.svelte-hhspdt{display:inline-block}.inline.svelte-hhspdt.svelte-hhspdt{display:inline}.w-full.svelte-hhspdt.svelte-hhspdt{width:100%}.cursor-pointer.svelte-hhspdt.svelte-hhspdt{cursor:pointer}.p-0\.5.svelte-hhspdt.svelte-hhspdt{padding:.125rem}.text-center.svelte-hhspdt.svelte-hhspdt{text-align:center}.text-xs.svelte-hhspdt.svelte-hhspdt{font-size:.75rem;line-height:1rem}.sequence_container.svelte-hhspdt.svelte-hhspdt{overflow-wrap:anywhere;counter-reset:sequence}.sequence_container.svelte-hhspdt .sequence__chunk.svelte-hhspdt{display:inline-block;margin:.1rem 0 1rem 1rem;position:relative;white-space:nowrap}.sequence_container.svelte-hhspdt .sequence__chunk.svelte-hhspdt:not(:last-child):before{content:counter(sequence);counter-increment:sequence 10;position:absolute;top:-.8em;right:0;opacity:.5;font-weight:700}.sequence__chunk.svelte-hhspdt span.svelte-hhspdt{padding:0 .05rem}.hover\:font-bold.svelte-hhspdt.svelte-hhspdt:hover{font-weight:700}.active.svelte-1jhdl43{background:#fff;border-radius:9999px;color:#ea580c}.mol-canvas.svelte-1jhdl43{width:200px;height:200px;margin:0 auto}.mol-wrapper.svelte-1jhdl43{width:100%;display:flex;justify-content:center}.svelte-1jhdl43,.svelte-1jhdl43:before,.svelte-1jhdl43:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-1jhdl43:before,.svelte-1jhdl43:after{--tw-content:""}table.svelte-1jhdl43{text-indent:0;border-color:inherit;border-collapse:collapse}button.svelte-1jhdl43{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button.svelte-1jhdl43{text-transform:none}button.svelte-1jhdl43{-webkit-appearance:button;background-color:transparent;background-image:none}.svelte-1jhdl43:-moz-focusring{outline:auto}.svelte-1jhdl43:-moz-ui-invalid{box-shadow:none}.svelte-1jhdl43::-webkit-inner-spin-button,.svelte-1jhdl43::-webkit-outer-spin-button{height:auto}.svelte-1jhdl43::-webkit-search-decoration{-webkit-appearance:none}.svelte-1jhdl43::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}button.svelte-1jhdl43{cursor:pointer}.svelte-1jhdl43:disabled{cursor:default}svg.svelte-1jhdl43{display:block;vertical-align:middle}.svelte-1jhdl43,.svelte-1jhdl43:before,.svelte-1jhdl43:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.svelte-1jhdl43::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.relative.svelte-1jhdl43{position:relative}.mx-1.svelte-1jhdl43{margin-left:.25rem;margin-right:.25rem}.mb-2.svelte-1jhdl43{margin-bottom:.5rem}.mt-3.svelte-1jhdl43{margin-top:.75rem}.flex.svelte-1jhdl43{display:flex}.h-4.svelte-1jhdl43{height:1rem}.w-1\/2.svelte-1jhdl43{width:50%}.w-4.svelte-1jhdl43{width:1rem}.w-full.svelte-1jhdl43{width:100%}.flex-col.svelte-1jhdl43{flex-direction:column}.items-center.svelte-1jhdl43{align-items:center}.justify-center.svelte-1jhdl43{justify-content:center}.overflow-x-auto.svelte-1jhdl43{overflow-x:auto}.whitespace-nowrap.svelte-1jhdl43{white-space:nowrap}.rounded-full.svelte-1jhdl43{border-radius:9999px}.rounded-l-full.svelte-1jhdl43{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-r-full.svelte-1jhdl43{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.border-2.svelte-1jhdl43{border-width:2px}.border-b.svelte-1jhdl43{border-bottom-width:1px}.border-gray-200.svelte-1jhdl43{--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.bg-gray-200.svelte-1jhdl43{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50.svelte-1jhdl43{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-white.svelte-1jhdl43{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.px-4.svelte-1jhdl43{padding-left:1rem;padding-right:1rem}.px-6.svelte-1jhdl43{padding-left:1.5rem;padding-right:1.5rem}.py-2.svelte-1jhdl43{padding-top:.5rem;padding-bottom:.5rem}.py-3.svelte-1jhdl43{padding-top:.75rem;padding-bottom:.75rem}.py-4.svelte-1jhdl43{padding-top:1rem;padding-bottom:1rem}.text-left.svelte-1jhdl43{text-align:left}.text-center.svelte-1jhdl43{text-align:center}.text-right.svelte-1jhdl43{text-align:right}.font-mono.svelte-1jhdl43{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-lg.svelte-1jhdl43{font-size:1.125rem;line-height:1.75rem}.text-sm.svelte-1jhdl43{font-size:.875rem;line-height:1.25rem}.text-xs.svelte-1jhdl43{font-size:.75rem;line-height:1rem}.font-medium.svelte-1jhdl43{font-weight:500}.uppercase.svelte-1jhdl43{text-transform:uppercase}.leading-none.svelte-1jhdl43{line-height:1}.text-gray-500.svelte-1jhdl43{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-700.svelte-1jhdl43{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-900.svelte-1jhdl43{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.transition-colors.svelte-1jhdl43{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300.svelte-1jhdl43{transition-duration:.3s}.ease-in.svelte-1jhdl43{transition-timing-function:cubic-bezier(.4,0,1,1)}.hover\:text-orange-600.svelte-1jhdl43:hover{--tw-text-opacity:1;color:rgb(234 88 12 / var(--tw-text-opacity))}.focus\:text-orange-600.svelte-1jhdl43:focus{--tw-text-opacity:1;color:rgb(234 88 12 / var(--tw-text-opacity))}.focus\:outline-none.svelte-1jhdl43:focus{outline:2px solid transparent;outline-offset:2px}.rtl\:text-right.svelte-1jhdl43:where([dir=rtl],[dir=rtl] *){text-align:right}@media (prefers-color-scheme: dark){.dark\:border-gray-700.svelte-1jhdl43{--tw-border-opacity:1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:bg-gray-700.svelte-1jhdl43{--tw-bg-opacity:1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-800.svelte-1jhdl43{--tw-bg-opacity:1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:text-gray-400.svelte-1jhdl43{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white.svelte-1jhdl43{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:before,.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:before,.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:after{--tw-content:""}h2.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,h4.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-size:inherit;font-weight:inherit}button.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,input.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,select.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,textarea.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,select.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{text-transform:none}button.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,input.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:where([type=button]),input.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:where([type=reset]),input.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:-moz-focusring{outline:auto}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:-moz-ui-invalid{box-shadow:none}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::-webkit-inner-spin-button,.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::-webkit-outer-spin-button{height:auto}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::-webkit-search-decoration{-webkit-appearance:none}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}h2.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,h4.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,p.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{margin:0}textarea.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{resize:vertical}input.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::placeholder,textarea.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::placeholder{opacity:1;color:#9ca3af}button.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{cursor:pointer}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:disabled{cursor:default}svg.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{display:block;vertical-align:middle}.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t,.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:before,.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.collapse.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{visibility:collapse}.relative.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{position:relative}.my-2.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{margin-top:.5rem;margin-bottom:.5rem}.mb-2.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{margin-bottom:.5rem}.mt-1.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{margin-top:.25rem}.block.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{display:block}.flex.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{display:flex}.inline-flex.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{display:inline-flex}.grid.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{display:grid}.hidden.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{display:none}.h-10.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{height:2.5rem}.h-3.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{height:.75rem}.h-4.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{height:1rem}.w-10.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:2.5rem}.w-2\/5.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:40%}.w-3.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:.75rem}.w-3\/5.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:60%}.w-4.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:1rem}.w-8.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:2rem}.w-full.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{width:100%}.shrink-0.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{flex-shrink:0}.-rotate-90.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{cursor:pointer}.grid-cols-3.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{flex-direction:column}.items-center.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{align-items:center}.justify-center.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{justify-content:center}.justify-between.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{justify-content:space-between}.gap-3.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{gap:.75rem}.space-x-2.svelte-fryf3t>.svelte-fryf3t:not([hidden])~.svelte-fryf3t:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.divide-x.svelte-fryf3t>.svelte-fryf3t:not([hidden])~.svelte-fryf3t:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.overflow-hidden.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{overflow:hidden}.whitespace-nowrap.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{white-space:nowrap}.rounded.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{border-radius:.25rem}.rounded-full.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{border-radius:9999px}.rounded-lg.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{border-radius:.5rem}.border.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{border-width:1px}.border-b-0.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{border-bottom-width:0px}.border-t-0.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{border-top-width:0px}.border-gray-200.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.bg-blue-200.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.bg-gray-50.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-green-100.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(220 252 231 / var(--tw-bg-opacity))}.bg-orange-200.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(254 215 170 / var(--tw-bg-opacity))}.bg-violet-100.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(237 233 254 / var(--tw-bg-opacity))}.bg-yellow-100.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(254 249 195 / var(--tw-bg-opacity))}.p-1.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding:.25rem}.p-10.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding:2.5rem}.p-2.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding:.5rem}.p-2\.5.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding:.625rem}.p-5.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding:1.25rem}.px-2.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding-left:.5rem;padding-right:.5rem}.px-3.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{padding-left:.75rem;padding-right:.75rem}.text-center.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{text-align:center}.font-mono.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-base.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-size:1rem;line-height:1.5rem}.text-sm.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-size:.875rem;line-height:1.25rem}.text-xl.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-size:1.25rem;line-height:1.75rem}.text-xs.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-size:.75rem;line-height:1rem}.font-bold.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-weight:700}.font-medium.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-weight:500}.font-semibold.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{font-weight:600}.text-blue-800.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(30 64 175 / var(--tw-text-opacity))}.text-gray-400.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-800.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-red-800.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(153 27 27 / var(--tw-text-opacity))}.hover\:bg-gray-100.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:border-blue-500.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-border-opacity:1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:outline-none.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-4.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-gray-200.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235 / var(--tw-ring-opacity))}.rtl\:text-right.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:where([dir=rtl],[dir=rtl] *){text-align:right}@media (prefers-color-scheme: dark){.dark\:border-gray-600.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-gray-700.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-border-opacity:1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:bg-gray-600.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:bg-gray-700.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-900.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-bg-opacity:1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.dark\:text-gray-300.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(209 213 219 / var(--tw-text-opacity))}.dark\:text-gray-400.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:hover\:bg-gray-800.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:focus\:border-blue-500.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-border-opacity:1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246 / var(--tw-ring-opacity))}.dark\:focus\:ring-gray-800.svelte-fryf3t.svelte-fryf3t.svelte-fryf3t:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55 / var(--tw-ring-opacity))}}.svelte-13zuw1o,.svelte-13zuw1o:before,.svelte-13zuw1o:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-13zuw1o:before,.svelte-13zuw1o:after{--tw-content:""}:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}.svelte-13zuw1o:-moz-focusring{outline:auto}.svelte-13zuw1o:-moz-ui-invalid{box-shadow:none}.svelte-13zuw1o::-webkit-inner-spin-button,.svelte-13zuw1o::-webkit-outer-spin-button{height:auto}.svelte-13zuw1o::-webkit-search-decoration{-webkit-appearance:none}.svelte-13zuw1o::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.svelte-13zuw1o:disabled{cursor:default}.svelte-13zuw1o,.svelte-13zuw1o:before,.svelte-13zuw1o:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.svelte-13zuw1o::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.my-2.svelte-13zuw1o{margin-top:.5rem;margin-bottom:.5rem}.my-8.svelte-13zuw1o{margin-top:2rem;margin-bottom:2rem}.w-full.svelte-13zuw1o{width:100%}.text-center.svelte-13zuw1o{text-align:center}.text-gray-400.svelte-13zuw1o{--tw-text-opacity:1;color:#9ca3af}.text-gray-600.svelte-13zuw1o{--tw-text-opacity:1;color:#4b5563}svg.svelte-43sxxs.svelte-43sxxs{width:var(--size-20);height:var(--size-20)}svg.svelte-43sxxs path.svelte-43sxxs{fill:var(--loader-color)}div.svelte-43sxxs.svelte-43sxxs{z-index:var(--layer-2)}.margin.svelte-43sxxs.svelte-43sxxs{margin:var(--size-4)}.wrap.svelte-1yserjw.svelte-1yserjw{display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:var(--layer-top);transition:opacity .1s ease-in-out;border-radius:var(--block-radius);background:var(--block-background-fill);padding:0 var(--size-6);max-height:var(--size-screen-h);overflow:hidden;pointer-events:none}.wrap.center.svelte-1yserjw.svelte-1yserjw{top:0;right:0;left:0}.wrap.default.svelte-1yserjw.svelte-1yserjw{top:0;right:0;bottom:0;left:0}.hide.svelte-1yserjw.svelte-1yserjw{opacity:0;pointer-events:none}.generating.svelte-1yserjw.svelte-1yserjw{animation:svelte-1yserjw-pulse 2s cubic-bezier(.4,0,.6,1) infinite;border:2px solid var(--color-accent);background:transparent;z-index:var(--layer-1)}.translucent.svelte-1yserjw.svelte-1yserjw{background:none}@keyframes svelte-1yserjw-pulse{0%,to{opacity:1}50%{opacity:.5}}.loading.svelte-1yserjw.svelte-1yserjw{z-index:var(--layer-2);color:var(--body-text-color)}.eta-bar.svelte-1yserjw.svelte-1yserjw{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left;opacity:.8;z-index:var(--layer-1);transition:10ms;background:var(--background-fill-secondary)}.progress-bar-wrap.svelte-1yserjw.svelte-1yserjw{border:1px solid var(--border-color-primary);background:var(--background-fill-primary);width:55.5%;height:var(--size-4)}.progress-bar.svelte-1yserjw.svelte-1yserjw{transform-origin:left;background-color:var(--loader-color);width:var(--size-full);height:var(--size-full)}.progress-level.svelte-1yserjw.svelte-1yserjw{display:flex;flex-direction:column;align-items:center;gap:1;z-index:var(--layer-2);width:var(--size-full)}.progress-level-inner.svelte-1yserjw.svelte-1yserjw{margin:var(--size-2) auto;color:var(--body-text-color);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text.svelte-1yserjw.svelte-1yserjw{position:absolute;top:0;right:0;z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text-center.svelte-1yserjw.svelte-1yserjw{display:flex;position:absolute;top:0;right:0;justify-content:center;align-items:center;transform:translateY(var(--size-6));z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono);text-align:center}.error.svelte-1yserjw.svelte-1yserjw{box-shadow:var(--shadow-drop);border:solid 1px var(--error-border-color);border-radius:var(--radius-full);background:var(--error-background-fill);padding-right:var(--size-4);padding-left:var(--size-4);color:var(--error-text-color);font-weight:var(--weight-semibold);font-size:var(--text-lg);line-height:var(--line-lg);font-family:var(--font)}.minimal.svelte-1yserjw .progress-text.svelte-1yserjw{background:var(--block-background-fill)}.border.svelte-1yserjw.svelte-1yserjw{border:1px solid var(--border-color-primary)}.toast-body.svelte-solcu7{display:flex;position:relative;right:0;left:0;align-items:center;margin:var(--size-6) var(--size-4);margin:auto;border-radius:var(--container-radius);overflow:hidden;pointer-events:auto}.toast-body.error.svelte-solcu7{border:1px solid var(--color-red-700);background:var(--color-red-50)}.dark .toast-body.error.svelte-solcu7{border:1px solid var(--color-red-500);background-color:var(--color-grey-950)}.toast-body.warning.svelte-solcu7{border:1px solid var(--color-yellow-700);background:var(--color-yellow-50)}.dark .toast-body.warning.svelte-solcu7{border:1px solid var(--color-yellow-500);background-color:var(--color-grey-950)}.toast-body.info.svelte-solcu7{border:1px solid var(--color-grey-700);background:var(--color-grey-50)}.dark .toast-body.info.svelte-solcu7{border:1px solid var(--color-grey-500);background-color:var(--color-grey-950)}.toast-title.svelte-solcu7{display:flex;align-items:center;font-weight:var(--weight-bold);font-size:var(--text-lg);line-height:var(--line-sm);text-transform:capitalize}.toast-title.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-title.error.svelte-solcu7{color:var(--color-red-50)}.toast-title.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-title.warning.svelte-solcu7{color:var(--color-yellow-50)}.toast-title.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-title.info.svelte-solcu7{color:var(--color-grey-50)}.toast-close.svelte-solcu7{margin:0 var(--size-3);border-radius:var(--size-3);padding:0px var(--size-1-5);font-size:var(--size-5);line-height:var(--size-5)}.toast-close.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-close.error.svelte-solcu7{color:var(--color-red-500)}.toast-close.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-close.warning.svelte-solcu7{color:var(--color-yellow-500)}.toast-close.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-close.info.svelte-solcu7{color:var(--color-grey-500)}.toast-text.svelte-solcu7{font-size:var(--text-lg)}.toast-text.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-text.error.svelte-solcu7{color:var(--color-red-50)}.toast-text.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-text.warning.svelte-solcu7{color:var(--color-yellow-50)}.toast-text.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-text.info.svelte-solcu7{color:var(--color-grey-50)}.toast-details.svelte-solcu7{margin:var(--size-3) var(--size-3) var(--size-3) 0;width:100%}.toast-icon.svelte-solcu7{display:flex;position:absolute;position:relative;flex-shrink:0;justify-content:center;align-items:center;margin:var(--size-2);border-radius:var(--radius-full);padding:var(--size-1);padding-left:calc(var(--size-1) - 1px);width:35px;height:35px}.toast-icon.error.svelte-solcu7{color:var(--color-red-700)}.dark .toast-icon.error.svelte-solcu7{color:var(--color-red-500)}.toast-icon.warning.svelte-solcu7{color:var(--color-yellow-700)}.dark .toast-icon.warning.svelte-solcu7{color:var(--color-yellow-500)}.toast-icon.info.svelte-solcu7{color:var(--color-grey-700)}.dark .toast-icon.info.svelte-solcu7{color:var(--color-grey-500)}@keyframes svelte-solcu7-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.timer.svelte-solcu7{position:absolute;bottom:0;left:0;transform-origin:0 0;animation:svelte-solcu7-countdown 10s linear forwards;width:100%;height:var(--size-1)}.timer.error.svelte-solcu7{background:var(--color-red-700)}.dark .timer.error.svelte-solcu7{background:var(--color-red-500)}.timer.warning.svelte-solcu7{background:var(--color-yellow-700)}.dark .timer.warning.svelte-solcu7{background:var(--color-yellow-500)}.timer.info.svelte-solcu7{background:var(--color-grey-700)}.dark .timer.info.svelte-solcu7{background:var(--color-grey-500)}.toast-wrap.svelte-gatr8h{display:flex;position:fixed;top:var(--size-4);right:var(--size-4);flex-direction:column;align-items:end;gap:var(--size-2);z-index:var(--layer-top);width:calc(100% - var(--size-8))}@media (--screen-sm){.toast-wrap.svelte-gatr8h{width:calc(var(--size-96) + var(--size-10))}}.gallery.svelte-84cxb8{padding:var(--size-1) var(--size-2)}div.svelte-84cxb8{overflow:hidden;min-width:var(--local-text-width);white-space:nowrap}label.svelte-18tqgac.svelte-18tqgac{display:block;width:100%}input.svelte-18tqgac.svelte-18tqgac,textarea.svelte-18tqgac.svelte-18tqgac{display:block;position:relative;outline:none!important;box-shadow:var(--input-shadow);background:var(--input-background-fill);padding:var(--input-padding);width:100%;color:var(--body-text-color);font-weight:var(--input-text-weight);font-size:var(--input-text-size);line-height:var(--line-sm);border:none}label.svelte-18tqgac.svelte-18tqgac:not(.container),label.svelte-18tqgac:not(.container)>input.svelte-18tqgac,label.svelte-18tqgac:not(.container)>textarea.svelte-18tqgac{height:100%}.container.svelte-18tqgac>input.svelte-18tqgac,.container.svelte-18tqgac>textarea.svelte-18tqgac{border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-radius)}input.svelte-18tqgac.svelte-18tqgac:disabled,textarea.svelte-18tqgac.svelte-18tqgac:disabled{-webkit-text-fill-color:var(--body-text-color);-webkit-opacity:1;opacity:1}input.svelte-18tqgac.svelte-18tqgac:focus,textarea.svelte-18tqgac.svelte-18tqgac:focus{box-shadow:var(--input-shadow-focus);border-color:var(--input-border-color-focus)}input.svelte-18tqgac.svelte-18tqgac::placeholder,textarea.svelte-18tqgac.svelte-18tqgac::placeholder{color:var(--input-placeholder-color)}button.svelte-18tqgac.svelte-18tqgac{display:flex;position:absolute;top:var(--block-label-margin);right:var(--block-label-margin);align-items:center;box-shadow:var(--shadow-drop);border:1px solid var(--color-border-primary);border-top:none;border-right:none;border-radius:var(--block-label-right-radius);background:var(--block-label-background-fill);padding:5px;width:22px;height:22px;overflow:hidden;color:var(--block-label-color);font:var(--font-sans);font-size:var(--button-small-text-size)}
|
src/backend/gradio_cofoldinginput/templates/example/index.js
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const {
|
2 |
+
SvelteComponent: y,
|
3 |
+
add_iframe_resize_listener: b,
|
4 |
+
add_render_callback: v,
|
5 |
+
append: m,
|
6 |
+
attr: h,
|
7 |
+
binding_callbacks: p,
|
8 |
+
detach: w,
|
9 |
+
element: z,
|
10 |
+
init: k,
|
11 |
+
insert: E,
|
12 |
+
noop: c,
|
13 |
+
safe_not_equal: S,
|
14 |
+
set_data: q,
|
15 |
+
text: C,
|
16 |
+
toggle_class: r
|
17 |
+
} = window.__gradio__svelte__internal, { onMount: M } = window.__gradio__svelte__internal;
|
18 |
+
function P(t) {
|
19 |
+
let e, n = (
|
20 |
+
/*value*/
|
21 |
+
(t[0] ? (
|
22 |
+
/*value*/
|
23 |
+
t[0]
|
24 |
+
) : "") + ""
|
25 |
+
), _, d;
|
26 |
+
return {
|
27 |
+
c() {
|
28 |
+
e = z("div"), _ = C(n), h(e, "class", "svelte-84cxb8"), v(() => (
|
29 |
+
/*div_elementresize_handler*/
|
30 |
+
t[5].call(e)
|
31 |
+
)), r(
|
32 |
+
e,
|
33 |
+
"table",
|
34 |
+
/*type*/
|
35 |
+
t[1] === "table"
|
36 |
+
), r(
|
37 |
+
e,
|
38 |
+
"gallery",
|
39 |
+
/*type*/
|
40 |
+
t[1] === "gallery"
|
41 |
+
), r(
|
42 |
+
e,
|
43 |
+
"selected",
|
44 |
+
/*selected*/
|
45 |
+
t[2]
|
46 |
+
);
|
47 |
+
},
|
48 |
+
m(l, s) {
|
49 |
+
E(l, e, s), m(e, _), d = b(
|
50 |
+
e,
|
51 |
+
/*div_elementresize_handler*/
|
52 |
+
t[5].bind(e)
|
53 |
+
), t[6](e);
|
54 |
+
},
|
55 |
+
p(l, [s]) {
|
56 |
+
s & /*value*/
|
57 |
+
1 && n !== (n = /*value*/
|
58 |
+
(l[0] ? (
|
59 |
+
/*value*/
|
60 |
+
l[0]
|
61 |
+
) : "") + "") && q(_, n), s & /*type*/
|
62 |
+
2 && r(
|
63 |
+
e,
|
64 |
+
"table",
|
65 |
+
/*type*/
|
66 |
+
l[1] === "table"
|
67 |
+
), s & /*type*/
|
68 |
+
2 && r(
|
69 |
+
e,
|
70 |
+
"gallery",
|
71 |
+
/*type*/
|
72 |
+
l[1] === "gallery"
|
73 |
+
), s & /*selected*/
|
74 |
+
4 && r(
|
75 |
+
e,
|
76 |
+
"selected",
|
77 |
+
/*selected*/
|
78 |
+
l[2]
|
79 |
+
);
|
80 |
+
},
|
81 |
+
i: c,
|
82 |
+
o: c,
|
83 |
+
d(l) {
|
84 |
+
l && w(e), d(), t[6](null);
|
85 |
+
}
|
86 |
+
};
|
87 |
+
}
|
88 |
+
function W(t, e, n) {
|
89 |
+
let { value: _ } = e, { type: d } = e, { selected: l = !1 } = e, s, a;
|
90 |
+
function f(i, u) {
|
91 |
+
!i || !u || (a.style.setProperty("--local-text-width", `${u < 150 ? u : 200}px`), n(4, a.style.whiteSpace = "unset", a));
|
92 |
+
}
|
93 |
+
M(() => {
|
94 |
+
f(a, s);
|
95 |
+
});
|
96 |
+
function o() {
|
97 |
+
s = this.clientWidth, n(3, s);
|
98 |
+
}
|
99 |
+
function g(i) {
|
100 |
+
p[i ? "unshift" : "push"](() => {
|
101 |
+
a = i, n(4, a);
|
102 |
+
});
|
103 |
+
}
|
104 |
+
return t.$$set = (i) => {
|
105 |
+
"value" in i && n(0, _ = i.value), "type" in i && n(1, d = i.type), "selected" in i && n(2, l = i.selected);
|
106 |
+
}, [_, d, l, s, a, o, g];
|
107 |
+
}
|
108 |
+
class j extends y {
|
109 |
+
constructor(e) {
|
110 |
+
super(), k(this, e, W, P, S, { value: 0, type: 1, selected: 2 });
|
111 |
+
}
|
112 |
+
}
|
113 |
+
export {
|
114 |
+
j as default
|
115 |
+
};
|
src/backend/gradio_cofoldinginput/templates/example/style.css
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
.gallery.svelte-84cxb8{padding:var(--size-1) var(--size-2)}div.svelte-84cxb8{overflow:hidden;min-width:var(--local-text-width);white-space:nowrap}
|
src/demo/__init__.py
ADDED
File without changes
|
src/demo/app.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import gradio as gr
|
3 |
+
from gradio_cofoldinginput import CofoldingInput
|
4 |
+
|
5 |
+
import json
|
6 |
+
|
7 |
+
|
8 |
+
def predict(input):
|
9 |
+
input = json.dumps(input)
|
10 |
+
return input
|
11 |
+
|
12 |
+
with gr.Blocks() as demo:
|
13 |
+
inp=CofoldingInput(label="Input")
|
14 |
+
|
15 |
+
# preinput = {"chains": [
|
16 |
+
# {
|
17 |
+
# "class": "DNA",
|
18 |
+
# "sequence": "ATGCGT",
|
19 |
+
# "chain": "A"
|
20 |
+
# }
|
21 |
+
# ], "covMods":[]
|
22 |
+
# }
|
23 |
+
# inp2=CofoldingInput(preinput, label="Input prefilled")
|
24 |
+
btn = gr.Button("Submit")
|
25 |
+
out = gr.HTML()
|
26 |
+
|
27 |
+
btn.click(predict, inputs=[inp], outputs=[out])
|
28 |
+
|
29 |
+
if __name__ == "__main__":
|
30 |
+
demo.launch()
|
src/demo/css.css
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
html {
|
2 |
+
font-family: Inter;
|
3 |
+
font-size: 16px;
|
4 |
+
font-weight: 400;
|
5 |
+
line-height: 1.5;
|
6 |
+
-webkit-text-size-adjust: 100%;
|
7 |
+
background: #fff;
|
8 |
+
color: #323232;
|
9 |
+
-webkit-font-smoothing: antialiased;
|
10 |
+
-moz-osx-font-smoothing: grayscale;
|
11 |
+
text-rendering: optimizeLegibility;
|
12 |
+
}
|
13 |
+
|
14 |
+
:root {
|
15 |
+
--space: 1;
|
16 |
+
--vspace: calc(var(--space) * 1rem);
|
17 |
+
--vspace-0: calc(3 * var(--space) * 1rem);
|
18 |
+
--vspace-1: calc(2 * var(--space) * 1rem);
|
19 |
+
--vspace-2: calc(1.5 * var(--space) * 1rem);
|
20 |
+
--vspace-3: calc(0.5 * var(--space) * 1rem);
|
21 |
+
}
|
22 |
+
|
23 |
+
.app {
|
24 |
+
max-width: 748px !important;
|
25 |
+
}
|
26 |
+
|
27 |
+
.prose p {
|
28 |
+
margin: var(--vspace) 0;
|
29 |
+
line-height: var(--vspace * 2);
|
30 |
+
font-size: 1rem;
|
31 |
+
}
|
32 |
+
|
33 |
+
code {
|
34 |
+
font-family: "Inconsolata", sans-serif;
|
35 |
+
font-size: 16px;
|
36 |
+
}
|
37 |
+
|
38 |
+
h1,
|
39 |
+
h1 code {
|
40 |
+
font-weight: 400;
|
41 |
+
line-height: calc(2.5 / var(--space) * var(--vspace));
|
42 |
+
}
|
43 |
+
|
44 |
+
h1 code {
|
45 |
+
background: none;
|
46 |
+
border: none;
|
47 |
+
letter-spacing: 0.05em;
|
48 |
+
padding-bottom: 5px;
|
49 |
+
position: relative;
|
50 |
+
padding: 0;
|
51 |
+
}
|
52 |
+
|
53 |
+
h2 {
|
54 |
+
margin: var(--vspace-1) 0 var(--vspace-2) 0;
|
55 |
+
line-height: 1em;
|
56 |
+
}
|
57 |
+
|
58 |
+
h3,
|
59 |
+
h3 code {
|
60 |
+
margin: var(--vspace-1) 0 var(--vspace-2) 0;
|
61 |
+
line-height: 1em;
|
62 |
+
}
|
63 |
+
|
64 |
+
h4,
|
65 |
+
h5,
|
66 |
+
h6 {
|
67 |
+
margin: var(--vspace-3) 0 var(--vspace-3) 0;
|
68 |
+
line-height: var(--vspace);
|
69 |
+
}
|
70 |
+
|
71 |
+
.bigtitle,
|
72 |
+
h1,
|
73 |
+
h1 code {
|
74 |
+
font-size: calc(8px * 4.5);
|
75 |
+
word-break: break-word;
|
76 |
+
}
|
77 |
+
|
78 |
+
.title,
|
79 |
+
h2,
|
80 |
+
h2 code {
|
81 |
+
font-size: calc(8px * 3.375);
|
82 |
+
font-weight: lighter;
|
83 |
+
word-break: break-word;
|
84 |
+
border: none;
|
85 |
+
background: none;
|
86 |
+
}
|
87 |
+
|
88 |
+
.subheading1,
|
89 |
+
h3,
|
90 |
+
h3 code {
|
91 |
+
font-size: calc(8px * 1.8);
|
92 |
+
font-weight: 600;
|
93 |
+
border: none;
|
94 |
+
background: none;
|
95 |
+
letter-spacing: 0.1em;
|
96 |
+
text-transform: uppercase;
|
97 |
+
}
|
98 |
+
|
99 |
+
h2 code {
|
100 |
+
padding: 0;
|
101 |
+
position: relative;
|
102 |
+
letter-spacing: 0.05em;
|
103 |
+
}
|
104 |
+
|
105 |
+
blockquote {
|
106 |
+
font-size: calc(8px * 1.1667);
|
107 |
+
font-style: italic;
|
108 |
+
line-height: calc(1.1667 * var(--vspace));
|
109 |
+
margin: var(--vspace-2) var(--vspace-2);
|
110 |
+
}
|
111 |
+
|
112 |
+
.subheading2,
|
113 |
+
h4 {
|
114 |
+
font-size: calc(8px * 1.4292);
|
115 |
+
text-transform: uppercase;
|
116 |
+
font-weight: 600;
|
117 |
+
}
|
118 |
+
|
119 |
+
.subheading3,
|
120 |
+
h5 {
|
121 |
+
font-size: calc(8px * 1.2917);
|
122 |
+
line-height: calc(1.2917 * var(--vspace));
|
123 |
+
|
124 |
+
font-weight: lighter;
|
125 |
+
text-transform: uppercase;
|
126 |
+
letter-spacing: 0.15em;
|
127 |
+
}
|
128 |
+
|
129 |
+
h6 {
|
130 |
+
font-size: calc(8px * 1.1667);
|
131 |
+
font-size: 1.1667em;
|
132 |
+
font-weight: normal;
|
133 |
+
font-style: italic;
|
134 |
+
font-family: "le-monde-livre-classic-byol", serif !important;
|
135 |
+
letter-spacing: 0px !important;
|
136 |
+
}
|
137 |
+
|
138 |
+
#start .md > *:first-child {
|
139 |
+
margin-top: 0;
|
140 |
+
}
|
141 |
+
|
142 |
+
h2 + h3 {
|
143 |
+
margin-top: 0;
|
144 |
+
}
|
145 |
+
|
146 |
+
.md hr {
|
147 |
+
border: none;
|
148 |
+
border-top: 1px solid var(--block-border-color);
|
149 |
+
margin: var(--vspace-2) 0 var(--vspace-2) 0;
|
150 |
+
}
|
151 |
+
.prose ul {
|
152 |
+
margin: var(--vspace-2) 0 var(--vspace-1) 0;
|
153 |
+
}
|
154 |
+
|
155 |
+
.gap {
|
156 |
+
gap: 0;
|
157 |
+
}
|
src/demo/heme.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"m":[{"a":[{"x":-2.161,"y":-0.125,"z":0.49},{"x":1.458,"y":-3.419,"z":0.306},{"x":4.701,"y":0.169,"z":-0.069},{"x":1.075,"y":3.46,"z":0.018},{"x":-1.436,"y":-1.305,"z":0.38},{"x":-2.015,"y":-2.587,"z":0.32},{"x":-1.009,"y":-3.5,"z":0.27},{"x":0.216,"y":-2.803,"z":0.298},{"x":-1.175,"y":-4.996,"z":0.197},{"x":-3.49,"y":-2.893,"z":0.314},{"x":-3.998,"y":-2.926,"z":-1.129},{"x":-5.473,"y":-3.232,"z":-1.136},{"x":-6.059,"y":-3.405,"z":-0.094,"l":"O"},{"x":-6.137,"y":-3.311,"z":-2.3,"l":"O"},{"x":2.664,"y":-2.707,"z":0.308},{"x":3.937,"y":-3.328,"z":0.418},{"x":4.874,"y":-2.341,"z":0.314},{"x":4.117,"y":-1.079,"z":0.139},{"x":4.203,"y":-4.798,"z":0.613},{"x":6.339,"y":-2.497,"z":0.365},{"x":6.935,"y":-3.419,"z":-0.385},{"x":3.964,"y":1.345,"z":-0.174},{"x":4.531,"y":2.601,"z":-0.445},{"x":3.51,"y":3.536,"z":-0.437},{"x":2.304,"y":2.846,"z":-0.139},{"x":5.991,"y":2.88,"z":-0.697},{"x":3.649,"y":4.981,"z":-0.692},{"x":4.201,"y":5.407,"z":-1.823},{"x":-0.102,"y":2.753,"z":0.298},{"x":-1.382,"y":3.388,"z":0.641},{"x":-2.283,"y":2.389,"z":0.774},{"x":-1.561,"y":1.137,"z":0.511},{"x":-1.639,"y":4.863,"z":0.811},{"x":-3.741,"y":2.532,"z":1.123},{"x":-4.573,"y":2.563,"z":-0.16},{"x":-6.032,"y":2.706,"z":0.189},{"x":-6.372,"y":2.776,"z":1.347,"l":"O"},{"x":-6.954,"y":2.755,"z":-0.785,"l":"O"},{"x":-0.068,"y":-1.456,"z":0.321,"l":"N"},{"x":2.82,"y":-1.386,"z":0.207,"l":"N"},{"x":2.604,"y":1.506,"z":-0.033,"l":"N"},{"x":-0.276,"y":1.431,"z":0.298,"l":"N"},{"x":1.01,"y":0.157,"z":-0.06,"l":"Fe"},{"x":1.498,"y":-4.508,"z":0.309,"l":"H"},{"x":5.786,"y":0.229,"z":-0.153,"l":"H"},{"x":1.018,"y":4.543,"z":-0.083,"l":"H"},{"x":-1.22,"y":-5.306,"z":-0.847,"l":"H"},{"x":-0.328,"y":-5.48,"z":0.683,"l":"H"},{"x":-2.097,"y":-5.285,"z":0.702,"l":"H"},{"x":-3.662,"y":-3.862,"z":0.782,"l":"H"},{"x":-4.024,"y":-2.121,"z":0.869,"l":"H"},{"x":-3.825,"y":-1.956,"z":-1.597,"l":"H"},{"x":-3.464,"y":-3.697,"z":-1.684,"l":"H"},{"x":3.256,"y":-5.336,"z":0.66,"l":"H"},{"x":4.794,"y":-5.175,"z":-0.222,"l":"H"},{"x":4.752,"y":-4.948,"z":1.543,"l":"H"},{"x":6.927,"y":-1.863,"z":1.011,"l":"H"},{"x":7.994,"y":-3.6,"z":-0.277,"l":"H"},{"x":6.36,"y":-3.987,"z":-1.102,"l":"H"},{"x":6.554,"y":1.949,"z":-0.639,"l":"H"},{"x":6.11,"y":3.316,"z":-1.689,"l":"H"},{"x":6.362,"y":3.578,"z":0.053,"l":"H"},{"x":3.303,"y":5.694,"z":0.042,"l":"H"},{"x":4.614,"y":4.696,"z":-2.523,"l":"H"},{"x":4.235,"y":6.464,"z":-2.043,"l":"H"},{"x":-0.715,"y":5.415,"z":0.639,"l":"H"},{"x":-2.394,"y":5.185,"z":0.094,"l":"H"},{"x":-1.994,"y":5.055,"z":1.824,"l":"H"},{"x":-4.052,"y":1.687,"z":1.738,"l":"H"},{"x":-3.893,"y":3.459,"z":1.677,"l":"H"},{"x":-4.262,"y":3.408,"z":-0.775,"l":"H"},{"x":-4.421,"y":1.636,"z":-0.714,"l":"H"},{"x":-7.082,"y":-3.51,"z":-2.254,"l":"H"},{"x":-7.877,"y":2.847,"z":-0.512,"l":"H"},{"x":-3.246,"y":-0.188,"z":0.567,"l":"H"}],"b":[{"b":0,"e":4},{"b":0,"e":31,"o":2},{"b":0,"e":74},{"b":1,"e":7},{"b":1,"e":14,"o":2},{"b":1,"e":43},{"b":2,"e":17},{"b":2,"e":21,"o":2},{"b":2,"e":44},{"b":3,"e":24,"o":2},{"b":3,"e":28},{"b":3,"e":45},{"b":4,"e":5,"o":2},{"b":4,"e":38},{"b":5,"e":6},{"b":5,"e":9},{"b":6,"e":7,"o":2},{"b":6,"e":8},{"b":7,"e":38},{"b":8,"e":46},{"b":8,"e":47},{"b":8,"e":48},{"b":9,"e":10},{"b":9,"e":49},{"b":9,"e":50},{"b":10,"e":11},{"b":10,"e":51},{"b":10,"e":52},{"b":11,"e":12,"o":2},{"b":11,"e":13},{"b":13,"e":72},{"b":14,"e":15},{"b":14,"e":39},{"b":15,"e":16,"o":2},{"b":15,"e":18},{"b":16,"e":17},{"b":16,"e":19},{"b":17,"e":39,"o":2},{"b":18,"e":53},{"b":18,"e":54},{"b":18,"e":55},{"b":19,"e":20,"o":2},{"b":19,"e":56},{"b":20,"e":57},{"b":20,"e":58},{"b":21,"e":22},{"b":21,"e":40},{"b":22,"e":23,"o":2},{"b":22,"e":25},{"b":23,"e":24},{"b":23,"e":26},{"b":24,"e":40},{"b":25,"e":59},{"b":25,"e":60},{"b":25,"e":61},{"b":26,"e":27,"o":2},{"b":26,"e":62},{"b":27,"e":63},{"b":27,"e":64},{"b":28,"e":29},{"b":28,"e":41,"o":2},{"b":29,"e":30,"o":2},{"b":29,"e":32},{"b":30,"e":31},{"b":30,"e":33},{"b":31,"e":41},{"b":32,"e":65},{"b":32,"e":66},{"b":32,"e":67},{"b":33,"e":34},{"b":33,"e":68},{"b":33,"e":69},{"b":34,"e":35},{"b":34,"e":70},{"b":34,"e":71},{"b":35,"e":36,"o":2},{"b":35,"e":37},{"b":37,"e":73},{"b":38,"e":42},{"b":39,"e":42},{"b":40,"e":42},{"b":41,"e":42}]}]}
|
src/demo/heme.sdf
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
OpenBabel03282415433D
|
3 |
+
|
4 |
+
75 82 0 0 0 0 0 0 0 0999 V2000
|
5 |
+
-2.1610 -0.1250 0.4900 C 0 0 0 0 0 0 0 0 0 0 0 0
|
6 |
+
1.4580 -3.4190 0.3060 C 0 0 0 0 0 0 0 0 0 0 0 0
|
7 |
+
4.7010 0.1690 -0.0690 C 0 0 0 0 0 0 0 0 0 0 0 0
|
8 |
+
1.0750 3.4600 0.0180 C 0 0 0 0 0 0 0 0 0 0 0 0
|
9 |
+
-1.4360 -1.3050 0.3800 C 0 0 0 0 0 0 0 0 0 0 0 0
|
10 |
+
-2.0150 -2.5870 0.3200 C 0 0 0 0 0 0 0 0 0 0 0 0
|
11 |
+
-1.0090 -3.5000 0.2700 C 0 0 0 0 0 0 0 0 0 0 0 0
|
12 |
+
0.2160 -2.8030 0.2980 C 0 0 0 0 0 0 0 0 0 0 0 0
|
13 |
+
-1.1750 -4.9960 0.1970 C 0 0 0 0 0 0 0 0 0 0 0 0
|
14 |
+
-3.4900 -2.8930 0.3140 C 0 0 0 0 0 0 0 0 0 0 0 0
|
15 |
+
-3.9980 -2.9260 -1.1290 C 0 0 0 0 0 0 0 0 0 0 0 0
|
16 |
+
-5.4730 -3.2320 -1.1360 C 0 0 0 0 0 0 0 0 0 0 0 0
|
17 |
+
-6.0590 -3.4050 -0.0940 O 0 0 0 0 0 0 0 0 0 0 0 0
|
18 |
+
-6.1370 -3.3110 -2.3000 O 0 0 0 0 0 0 0 0 0 0 0 0
|
19 |
+
2.6640 -2.7070 0.3080 C 0 0 0 0 0 0 0 0 0 0 0 0
|
20 |
+
3.9370 -3.3280 0.4180 C 0 0 0 0 0 0 0 0 0 0 0 0
|
21 |
+
4.8740 -2.3410 0.3140 C 0 0 0 0 0 0 0 0 0 0 0 0
|
22 |
+
4.1170 -1.0790 0.1390 C 0 0 0 0 0 0 0 0 0 0 0 0
|
23 |
+
4.2030 -4.7980 0.6130 C 0 0 0 0 0 0 0 0 0 0 0 0
|
24 |
+
6.3390 -2.4970 0.3650 C 0 0 0 0 0 0 0 0 0 0 0 0
|
25 |
+
6.9350 -3.4190 -0.3850 C 0 0 0 0 0 0 0 0 0 0 0 0
|
26 |
+
3.9640 1.3450 -0.1740 C 0 0 0 0 0 0 0 0 0 0 0 0
|
27 |
+
4.5310 2.6010 -0.4450 C 0 0 0 0 0 0 0 0 0 0 0 0
|
28 |
+
3.5100 3.5360 -0.4370 C 0 0 0 0 0 0 0 0 0 0 0 0
|
29 |
+
2.3040 2.8460 -0.1390 C 0 0 0 0 0 0 0 0 0 0 0 0
|
30 |
+
5.9910 2.8800 -0.6970 C 0 0 0 0 0 0 0 0 0 0 0 0
|
31 |
+
3.6490 4.9810 -0.6920 C 0 0 0 0 0 0 0 0 0 0 0 0
|
32 |
+
4.2010 5.4070 -1.8230 C 0 0 0 0 0 0 0 0 0 0 0 0
|
33 |
+
-0.1020 2.7530 0.2980 C 0 0 0 0 0 0 0 0 0 0 0 0
|
34 |
+
-1.3820 3.3880 0.6410 C 0 0 0 0 0 0 0 0 0 0 0 0
|
35 |
+
-2.2830 2.3890 0.7740 C 0 0 0 0 0 0 0 0 0 0 0 0
|
36 |
+
-1.5610 1.1370 0.5110 C 0 0 0 0 0 0 0 0 0 0 0 0
|
37 |
+
-1.6390 4.8630 0.8110 C 0 0 0 0 0 0 0 0 0 0 0 0
|
38 |
+
-3.7410 2.5320 1.1230 C 0 0 0 0 0 0 0 0 0 0 0 0
|
39 |
+
-4.5730 2.5630 -0.1600 C 0 0 0 0 0 0 0 0 0 0 0 0
|
40 |
+
-6.0320 2.7060 0.1890 C 0 0 0 0 0 0 0 0 0 0 0 0
|
41 |
+
-6.3720 2.7760 1.3470 O 0 0 0 0 0 0 0 0 0 0 0 0
|
42 |
+
-6.9540 2.7550 -0.7850 O 0 0 0 0 0 0 0 0 0 0 0 0
|
43 |
+
-0.0680 -1.4560 0.3210 N 0 0 0 0 0 0 0 0 0 0 0 0
|
44 |
+
2.8200 -1.3860 0.2070 N 0 0 0 0 0 4 0 0 0 0 0 0
|
45 |
+
2.6040 1.5060 -0.0330 N 0 0 0 0 0 0 0 0 0 0 0 0
|
46 |
+
-0.2760 1.4310 0.2980 N 0 0 0 0 0 4 0 0 0 0 0 0
|
47 |
+
1.0100 0.1570 -0.0600 Fe 0 0 1 0 0 0 0 0 0 0 0 0
|
48 |
+
1.4980 -4.5080 0.3090 H 0 0 0 0 0 0 0 0 0 0 0 0
|
49 |
+
5.7860 0.2290 -0.1530 H 0 0 0 0 0 0 0 0 0 0 0 0
|
50 |
+
1.0180 4.5430 -0.0830 H 0 0 0 0 0 0 0 0 0 0 0 0
|
51 |
+
-1.2200 -5.3060 -0.8470 H 0 0 0 0 0 0 0 0 0 0 0 0
|
52 |
+
-0.3280 -5.4800 0.6830 H 0 0 0 0 0 0 0 0 0 0 0 0
|
53 |
+
-2.0970 -5.2850 0.7020 H 0 0 0 0 0 0 0 0 0 0 0 0
|
54 |
+
-3.6620 -3.8620 0.7820 H 0 0 0 0 0 0 0 0 0 0 0 0
|
55 |
+
-4.0240 -2.1210 0.8690 H 0 0 0 0 0 0 0 0 0 0 0 0
|
56 |
+
-3.8250 -1.9560 -1.5970 H 0 0 0 0 0 0 0 0 0 0 0 0
|
57 |
+
-3.4640 -3.6970 -1.6840 H 0 0 0 0 0 0 0 0 0 0 0 0
|
58 |
+
3.2560 -5.3360 0.6600 H 0 0 0 0 0 0 0 0 0 0 0 0
|
59 |
+
4.7940 -5.1750 -0.2220 H 0 0 0 0 0 0 0 0 0 0 0 0
|
60 |
+
4.7520 -4.9480 1.5430 H 0 0 0 0 0 0 0 0 0 0 0 0
|
61 |
+
6.9270 -1.8630 1.0110 H 0 0 0 0 0 0 0 0 0 0 0 0
|
62 |
+
7.9940 -3.6000 -0.2770 H 0 0 0 0 0 0 0 0 0 0 0 0
|
63 |
+
6.3600 -3.9870 -1.1020 H 0 0 0 0 0 0 0 0 0 0 0 0
|
64 |
+
6.5540 1.9490 -0.6390 H 0 0 0 0 0 0 0 0 0 0 0 0
|
65 |
+
6.1100 3.3160 -1.6890 H 0 0 0 0 0 0 0 0 0 0 0 0
|
66 |
+
6.3620 3.5780 0.0530 H 0 0 0 0 0 0 0 0 0 0 0 0
|
67 |
+
3.3030 5.6940 0.0420 H 0 0 0 0 0 0 0 0 0 0 0 0
|
68 |
+
4.6140 4.6960 -2.5230 H 0 0 0 0 0 0 0 0 0 0 0 0
|
69 |
+
4.2350 6.4640 -2.0430 H 0 0 0 0 0 0 0 0 0 0 0 0
|
70 |
+
-0.7150 5.4150 0.6390 H 0 0 0 0 0 0 0 0 0 0 0 0
|
71 |
+
-2.3940 5.1850 0.0940 H 0 0 0 0 0 0 0 0 0 0 0 0
|
72 |
+
-1.9940 5.0550 1.8240 H 0 0 0 0 0 0 0 0 0 0 0 0
|
73 |
+
-4.0520 1.6870 1.7380 H 0 0 0 0 0 0 0 0 0 0 0 0
|
74 |
+
-3.8930 3.4590 1.6770 H 0 0 0 0 0 0 0 0 0 0 0 0
|
75 |
+
-4.2620 3.4080 -0.7750 H 0 0 0 0 0 0 0 0 0 0 0 0
|
76 |
+
-4.4210 1.6360 -0.7140 H 0 0 0 0 0 0 0 0 0 0 0 0
|
77 |
+
-7.0820 -3.5100 -2.2540 H 0 0 0 0 0 0 0 0 0 0 0 0
|
78 |
+
-7.8770 2.8470 -0.5120 H 0 0 0 0 0 0 0 0 0 0 0 0
|
79 |
+
-3.2460 -0.1880 0.5670 H 0 0 0 0 0 0 0 0 0 0 0 0
|
80 |
+
1 5 1 0 0 0 0
|
81 |
+
1 32 2 0 0 0 0
|
82 |
+
1 75 1 0 0 0 0
|
83 |
+
2 8 1 0 0 0 0
|
84 |
+
2 15 2 0 0 0 0
|
85 |
+
2 44 1 0 0 0 0
|
86 |
+
3 18 1 0 0 0 0
|
87 |
+
3 22 2 0 0 0 0
|
88 |
+
3 45 1 0 0 0 0
|
89 |
+
4 25 2 0 0 0 0
|
90 |
+
4 29 1 0 0 0 0
|
91 |
+
4 46 1 0 0 0 0
|
92 |
+
5 6 2 0 0 0 0
|
93 |
+
5 39 1 0 0 0 0
|
94 |
+
6 7 1 0 0 0 0
|
95 |
+
6 10 1 0 0 0 0
|
96 |
+
7 8 2 0 0 0 0
|
97 |
+
7 9 1 0 0 0 0
|
98 |
+
8 39 1 0 0 0 0
|
99 |
+
9 47 1 0 0 0 0
|
100 |
+
9 48 1 0 0 0 0
|
101 |
+
9 49 1 0 0 0 0
|
102 |
+
10 11 1 0 0 0 0
|
103 |
+
10 50 1 0 0 0 0
|
104 |
+
10 51 1 0 0 0 0
|
105 |
+
11 12 1 0 0 0 0
|
106 |
+
11 52 1 0 0 0 0
|
107 |
+
11 53 1 0 0 0 0
|
108 |
+
12 13 2 0 0 0 0
|
109 |
+
12 14 1 0 0 0 0
|
110 |
+
14 73 1 0 0 0 0
|
111 |
+
15 16 1 0 0 0 0
|
112 |
+
15 40 1 0 0 0 0
|
113 |
+
16 17 2 0 0 0 0
|
114 |
+
16 19 1 0 0 0 0
|
115 |
+
17 18 1 0 0 0 0
|
116 |
+
17 20 1 0 0 0 0
|
117 |
+
18 40 2 0 0 0 0
|
118 |
+
19 54 1 0 0 0 0
|
119 |
+
19 55 1 0 0 0 0
|
120 |
+
19 56 1 0 0 0 0
|
121 |
+
20 21 2 0 0 0 0
|
122 |
+
20 57 1 0 0 0 0
|
123 |
+
21 58 1 0 0 0 0
|
124 |
+
21 59 1 0 0 0 0
|
125 |
+
22 23 1 0 0 0 0
|
126 |
+
22 41 1 0 0 0 0
|
127 |
+
23 24 2 0 0 0 0
|
128 |
+
23 26 1 0 0 0 0
|
129 |
+
24 25 1 0 0 0 0
|
130 |
+
24 27 1 0 0 0 0
|
131 |
+
25 41 1 0 0 0 0
|
132 |
+
26 60 1 0 0 0 0
|
133 |
+
26 61 1 0 0 0 0
|
134 |
+
26 62 1 0 0 0 0
|
135 |
+
27 28 2 0 0 0 0
|
136 |
+
27 63 1 0 0 0 0
|
137 |
+
28 64 1 0 0 0 0
|
138 |
+
28 65 1 0 0 0 0
|
139 |
+
29 30 1 0 0 0 0
|
140 |
+
29 42 2 0 0 0 0
|
141 |
+
30 31 2 0 0 0 0
|
142 |
+
30 33 1 0 0 0 0
|
143 |
+
31 32 1 0 0 0 0
|
144 |
+
31 34 1 0 0 0 0
|
145 |
+
32 42 1 0 0 0 0
|
146 |
+
33 66 1 0 0 0 0
|
147 |
+
33 67 1 0 0 0 0
|
148 |
+
33 68 1 0 0 0 0
|
149 |
+
34 35 1 0 0 0 0
|
150 |
+
34 69 1 0 0 0 0
|
151 |
+
34 70 1 0 0 0 0
|
152 |
+
35 36 1 0 0 0 0
|
153 |
+
35 71 1 0 0 0 0
|
154 |
+
35 72 1 0 0 0 0
|
155 |
+
36 37 2 0 0 0 0
|
156 |
+
36 38 1 0 0 0 0
|
157 |
+
38 74 1 0 0 0 0
|
158 |
+
40 43 1 0 0 0 0
|
159 |
+
41 43 1 0 0 0 0
|
160 |
+
42 43 1 0 0 0 0
|
161 |
+
43 39 1 6 0 0 0
|
162 |
+
M END
|
163 |
+
$$$$
|
src/demo/space.py
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import gradio as gr
|
3 |
+
from app import demo as app
|
4 |
+
import os
|
5 |
+
|
6 |
+
_docs = {'CofoldingInput': {'description': 'Creates a textarea for user to enter string input or display string output.\n', 'members': {'__init__': {'value': {'type': 'dict | None', 'default': '{"chains": [], "covMods": []}', 'description': 'list of items.'}, 'label': {'type': 'str | None', 'default': 'None', 'description': 'The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.'}, 'info': {'type': 'str | None', 'default': 'None', 'description': 'additional component description.'}, 'every': {'type': 'float | None', 'default': 'None', 'description': "If `value` is a callable, run the function 'every' number of seconds while the client connection is open. Has no effect otherwise. The event can be accessed (e.g. to cancel it) via this component's .load_event attribute."}, 'show_label': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will display label.'}, 'container': {'type': 'bool', 'default': 'True', 'description': 'If True, will place the component in a container - providing some extra padding around the border.'}, 'scale': {'type': 'int | None', 'default': 'None', 'description': 'relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.'}, 'min_width': {'type': 'int', 'default': '160', 'description': 'minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.'}, 'interactive': {'type': 'bool | None', 'default': 'None', 'description': 'if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.'}, 'visible': {'type': 'bool', 'default': 'True', 'description': 'If False, component will be hidden.'}, 'elem_id': {'type': 'str | None', 'default': 'None', 'description': 'An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'autofocus': {'type': 'bool', 'default': 'False', 'description': 'If True, will focus on the textbox when the page loads. Use this carefully, as it can cause usability issues for sighted and non-sighted users.'}, 'autoscroll': {'type': 'bool', 'default': 'True', 'description': None}, 'elem_classes': {'type': 'list[str] | str | None', 'default': 'None', 'description': 'An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.'}, 'render': {'type': 'bool', 'default': 'True', 'description': 'If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.'}}, 'postprocess': {'value': {'type': 'dict | None', 'description': 'Expects a {str} returned from function and sets textarea value to it.'}}, 'preprocess': {}}, 'events': {'change': {'type': None, 'default': None, 'description': 'Triggered when the value of the CofoldingInput changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input.'}, 'input': {'type': None, 'default': None, 'description': 'This listener is triggered when the user changes the value of the CofoldingInput.'}, 'select': {'type': None, 'default': None, 'description': 'Event listener for when the user selects or deselects the CofoldingInput. Uses event data gradio.SelectData to carry `value` referring to the label of the CofoldingInput, and `selected` to refer to state of the CofoldingInput. See EventData documentation on how to use this event data'}, 'submit': {'type': None, 'default': None, 'description': 'This listener is triggered when the user presses the Enter key while the CofoldingInput is focused.'}, 'focus': {'type': None, 'default': None, 'description': 'This listener is triggered when the CofoldingInput is focused.'}, 'blur': {'type': None, 'default': None, 'description': 'This listener is triggered when the CofoldingInput is unfocused/blurred.'}}}, '__meta__': {'additional_interfaces': {}, 'user_fn_refs': {'CofoldingInput': []}}}
|
7 |
+
|
8 |
+
abs_path = os.path.join(os.path.dirname(__file__), "css.css")
|
9 |
+
|
10 |
+
with gr.Blocks(
|
11 |
+
css=abs_path,
|
12 |
+
theme=gr.themes.Default(
|
13 |
+
font_mono=[
|
14 |
+
gr.themes.GoogleFont("Inconsolata"),
|
15 |
+
"monospace",
|
16 |
+
],
|
17 |
+
),
|
18 |
+
) as demo:
|
19 |
+
gr.Markdown(
|
20 |
+
"""
|
21 |
+
# `gradio_cofoldinginput`
|
22 |
+
|
23 |
+
<div style="display: flex; gap: 7px;">
|
24 |
+
<img alt="Static Badge" src="https://img.shields.io/badge/version%20-%200.0.2%20-%20orange">
|
25 |
+
</div>
|
26 |
+
|
27 |
+
Component to enter protein and DNA sequences + small molecules for cofolding
|
28 |
+
""", elem_classes=["md-custom"], header_links=True)
|
29 |
+
app.render()
|
30 |
+
gr.Markdown(
|
31 |
+
"""
|
32 |
+
## Installation
|
33 |
+
|
34 |
+
```bash
|
35 |
+
pip install gradio_cofoldinginput
|
36 |
+
```
|
37 |
+
|
38 |
+
## Usage
|
39 |
+
|
40 |
+
```python
|
41 |
+
|
42 |
+
import gradio as gr
|
43 |
+
from gradio_cofoldinginput import CofoldingInput
|
44 |
+
|
45 |
+
import json
|
46 |
+
|
47 |
+
|
48 |
+
def predict(input):
|
49 |
+
input = json.dumps(input)
|
50 |
+
return input
|
51 |
+
|
52 |
+
with gr.Blocks() as demo:
|
53 |
+
inp=CofoldingInput(label="Input")
|
54 |
+
|
55 |
+
# preinput = {"chains": [
|
56 |
+
# {
|
57 |
+
# "class": "DNA",
|
58 |
+
# "sequence": "ATGCGT",
|
59 |
+
# "chain": "A"
|
60 |
+
# }
|
61 |
+
# ], "covMods":[]
|
62 |
+
# }
|
63 |
+
# inp2=CofoldingInput(preinput, label="Input prefilled")
|
64 |
+
btn = gr.Button("Submit")
|
65 |
+
out = gr.HTML()
|
66 |
+
|
67 |
+
btn.click(predict, inputs=[inp], outputs=[out])
|
68 |
+
|
69 |
+
if __name__ == "__main__":
|
70 |
+
demo.launch()
|
71 |
+
|
72 |
+
```
|
73 |
+
""", elem_classes=["md-custom"], header_links=True)
|
74 |
+
|
75 |
+
|
76 |
+
gr.Markdown("""
|
77 |
+
## `CofoldingInput`
|
78 |
+
|
79 |
+
### Initialization
|
80 |
+
""", elem_classes=["md-custom"], header_links=True)
|
81 |
+
|
82 |
+
gr.ParamViewer(value=_docs["CofoldingInput"]["members"]["__init__"], linkify=[])
|
83 |
+
|
84 |
+
|
85 |
+
gr.Markdown("### Events")
|
86 |
+
gr.ParamViewer(value=_docs["CofoldingInput"]["events"], linkify=['Event'])
|
87 |
+
|
88 |
+
|
89 |
+
|
90 |
+
|
91 |
+
gr.Markdown("""
|
92 |
+
|
93 |
+
### User function
|
94 |
+
|
95 |
+
The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both).
|
96 |
+
|
97 |
+
- When used as an Input, the component only impacts the input signature of the user function.
|
98 |
+
- When used as an output, the component only impacts the return signature of the user function.
|
99 |
+
|
100 |
+
The code snippet below is accurate in cases where the component is used as both an input and an output.
|
101 |
+
|
102 |
+
- **As output:** Should return, expects a {str} returned from function and sets textarea value to it.
|
103 |
+
|
104 |
+
```python
|
105 |
+
def predict(
|
106 |
+
value: Unknown
|
107 |
+
) -> dict | None:
|
108 |
+
return value
|
109 |
+
```
|
110 |
+
""", elem_classes=["md-custom", "CofoldingInput-user-fn"], header_links=True)
|
111 |
+
|
112 |
+
|
113 |
+
|
114 |
+
|
115 |
+
demo.load(None, js=r"""function() {
|
116 |
+
const refs = {};
|
117 |
+
const user_fn_refs = {
|
118 |
+
CofoldingInput: [], };
|
119 |
+
requestAnimationFrame(() => {
|
120 |
+
|
121 |
+
Object.entries(user_fn_refs).forEach(([key, refs]) => {
|
122 |
+
if (refs.length > 0) {
|
123 |
+
const el = document.querySelector(`.${key}-user-fn`);
|
124 |
+
if (!el) return;
|
125 |
+
refs.forEach(ref => {
|
126 |
+
el.innerHTML = el.innerHTML.replace(
|
127 |
+
new RegExp("\\b"+ref+"\\b", "g"),
|
128 |
+
`<a href="#h-${ref.toLowerCase()}">${ref}</a>`
|
129 |
+
);
|
130 |
+
})
|
131 |
+
}
|
132 |
+
})
|
133 |
+
|
134 |
+
Object.entries(refs).forEach(([key, refs]) => {
|
135 |
+
if (refs.length > 0) {
|
136 |
+
const el = document.querySelector(`.${key}`);
|
137 |
+
if (!el) return;
|
138 |
+
refs.forEach(ref => {
|
139 |
+
el.innerHTML = el.innerHTML.replace(
|
140 |
+
new RegExp("\\b"+ref+"\\b", "g"),
|
141 |
+
`<a href="#h-${ref.toLowerCase()}">${ref}</a>`
|
142 |
+
);
|
143 |
+
})
|
144 |
+
}
|
145 |
+
})
|
146 |
+
})
|
147 |
+
}
|
148 |
+
|
149 |
+
""")
|
150 |
+
|
151 |
+
demo.launch()
|
src/frontend/Example.svelte
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script lang="ts">
|
2 |
+
import { onMount } from "svelte";
|
3 |
+
|
4 |
+
export let value: string | null;
|
5 |
+
export let type: "gallery" | "table";
|
6 |
+
export let selected = false;
|
7 |
+
|
8 |
+
let size: number;
|
9 |
+
let el: HTMLDivElement;
|
10 |
+
|
11 |
+
function set_styles(element: HTMLElement, el_width: number): void {
|
12 |
+
if (!element || !el_width) return;
|
13 |
+
el.style.setProperty(
|
14 |
+
"--local-text-width",
|
15 |
+
`${el_width < 150 ? el_width : 200}px`
|
16 |
+
);
|
17 |
+
el.style.whiteSpace = "unset";
|
18 |
+
}
|
19 |
+
|
20 |
+
onMount(() => {
|
21 |
+
set_styles(el, size);
|
22 |
+
});
|
23 |
+
</script>
|
24 |
+
|
25 |
+
<div
|
26 |
+
bind:clientWidth={size}
|
27 |
+
bind:this={el}
|
28 |
+
class:table={type === "table"}
|
29 |
+
class:gallery={type === "gallery"}
|
30 |
+
class:selected
|
31 |
+
>
|
32 |
+
{value ? value : ""}
|
33 |
+
</div>
|
34 |
+
|
35 |
+
<style>
|
36 |
+
.gallery {
|
37 |
+
padding: var(--size-1) var(--size-2);
|
38 |
+
}
|
39 |
+
|
40 |
+
div {
|
41 |
+
overflow: hidden;
|
42 |
+
min-width: var(--local-text-width);
|
43 |
+
|
44 |
+
white-space: nowrap;
|
45 |
+
}
|
46 |
+
</style>
|
src/frontend/Index.svelte
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<svelte:options accessors={true} />
|
2 |
+
|
3 |
+
<script context="module" lang="ts">
|
4 |
+
export { default as BaseTextbox } from "./shared/Textbox.svelte";
|
5 |
+
export { default as BaseExample } from "./Example.svelte";
|
6 |
+
</script>
|
7 |
+
|
8 |
+
<script lang="ts">
|
9 |
+
import { onMount } from "svelte";
|
10 |
+
import type { Gradio, SelectData } from "@gradio/utils";
|
11 |
+
import { BlockTitle } from "@gradio/atoms";
|
12 |
+
|
13 |
+
import SequenceInput from "./shared/SequenceInput.svelte";
|
14 |
+
import { Block } from "@gradio/atoms";
|
15 |
+
import { StatusTracker } from "@gradio/statustracker";
|
16 |
+
import type { LoadingStatus } from "@gradio/statustracker";
|
17 |
+
|
18 |
+
export let gradio: Gradio<{
|
19 |
+
change: string;
|
20 |
+
submit: never;
|
21 |
+
blur: never;
|
22 |
+
select: SelectData;
|
23 |
+
input: never;
|
24 |
+
focus: never;
|
25 |
+
}>;
|
26 |
+
export let label = "CofoldingInput";
|
27 |
+
export let info: string | undefined = undefined;
|
28 |
+
export let elem_id = "";
|
29 |
+
export let elem_classes: string[] = [];
|
30 |
+
export let visible = true;
|
31 |
+
export let value = { chains: [], covMods: [] };
|
32 |
+
export let show_label: boolean;
|
33 |
+
export let container = true;
|
34 |
+
export let scale: number | null = null;
|
35 |
+
export let min_width: number | undefined = undefined;
|
36 |
+
export let loading_status: LoadingStatus | undefined = undefined;
|
37 |
+
|
38 |
+
function syncValue(event) {
|
39 |
+
//remove empty values and open attributes
|
40 |
+
let entries = event.detail.map((entry) =>
|
41 |
+
Object.fromEntries(
|
42 |
+
Object.entries(entry).filter(
|
43 |
+
([key, value]) => key !== "open" && value !== ""
|
44 |
+
)
|
45 |
+
)
|
46 |
+
);
|
47 |
+
value["chains"] = entries;
|
48 |
+
}
|
49 |
+
|
50 |
+
function syncCovMod(event) {
|
51 |
+
value["covMods"] = event.detail;
|
52 |
+
}
|
53 |
+
|
54 |
+
onMount(() => {});
|
55 |
+
</script>
|
56 |
+
|
57 |
+
<Block
|
58 |
+
{visible}
|
59 |
+
{elem_id}
|
60 |
+
{elem_classes}
|
61 |
+
{scale}
|
62 |
+
{min_width}
|
63 |
+
allow_overflow={false}
|
64 |
+
padding={container}
|
65 |
+
>
|
66 |
+
{#if loading_status}
|
67 |
+
<StatusTracker
|
68 |
+
autoscroll={gradio.autoscroll}
|
69 |
+
i18n={gradio.i18n}
|
70 |
+
{...loading_status}
|
71 |
+
/>
|
72 |
+
{/if}
|
73 |
+
|
74 |
+
<BlockTitle {show_label} {info}>{label}</BlockTitle>
|
75 |
+
|
76 |
+
<SequenceInput
|
77 |
+
bind:value
|
78 |
+
on:updateVals={syncValue}
|
79 |
+
on:updateCovMod={syncCovMod}
|
80 |
+
/>
|
81 |
+
</Block>
|
src/frontend/package-lock.json
ADDED
@@ -0,0 +1,1697 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "gradio_cofoldinginput",
|
3 |
+
"version": "0.4.12",
|
4 |
+
"lockfileVersion": 2,
|
5 |
+
"requires": true,
|
6 |
+
"packages": {
|
7 |
+
"": {
|
8 |
+
"name": "gradio_cofoldinginput",
|
9 |
+
"version": "0.4.12",
|
10 |
+
"license": "ISC",
|
11 |
+
"dependencies": {
|
12 |
+
"@gradio/atoms": "0.5.3",
|
13 |
+
"@gradio/icons": "0.3.3",
|
14 |
+
"@gradio/statustracker": "0.4.8",
|
15 |
+
"@gradio/utils": "0.3.0",
|
16 |
+
"3dmol": "^2.1.0"
|
17 |
+
}
|
18 |
+
},
|
19 |
+
"node_modules/@ampproject/remapping": {
|
20 |
+
"version": "2.3.0",
|
21 |
+
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
|
22 |
+
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
|
23 |
+
"peer": true,
|
24 |
+
"dependencies": {
|
25 |
+
"@jridgewell/gen-mapping": "^0.3.5",
|
26 |
+
"@jridgewell/trace-mapping": "^0.3.24"
|
27 |
+
},
|
28 |
+
"engines": {
|
29 |
+
"node": ">=6.0.0"
|
30 |
+
}
|
31 |
+
},
|
32 |
+
"node_modules/@esbuild/aix-ppc64": {
|
33 |
+
"version": "0.19.12",
|
34 |
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
|
35 |
+
"integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
|
36 |
+
"cpu": [
|
37 |
+
"ppc64"
|
38 |
+
],
|
39 |
+
"optional": true,
|
40 |
+
"os": [
|
41 |
+
"aix"
|
42 |
+
],
|
43 |
+
"engines": {
|
44 |
+
"node": ">=12"
|
45 |
+
}
|
46 |
+
},
|
47 |
+
"node_modules/@esbuild/android-arm": {
|
48 |
+
"version": "0.19.12",
|
49 |
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
|
50 |
+
"integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
|
51 |
+
"cpu": [
|
52 |
+
"arm"
|
53 |
+
],
|
54 |
+
"optional": true,
|
55 |
+
"os": [
|
56 |
+
"android"
|
57 |
+
],
|
58 |
+
"engines": {
|
59 |
+
"node": ">=12"
|
60 |
+
}
|
61 |
+
},
|
62 |
+
"node_modules/@esbuild/android-arm64": {
|
63 |
+
"version": "0.19.12",
|
64 |
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
|
65 |
+
"integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
|
66 |
+
"cpu": [
|
67 |
+
"arm64"
|
68 |
+
],
|
69 |
+
"optional": true,
|
70 |
+
"os": [
|
71 |
+
"android"
|
72 |
+
],
|
73 |
+
"engines": {
|
74 |
+
"node": ">=12"
|
75 |
+
}
|
76 |
+
},
|
77 |
+
"node_modules/@esbuild/android-x64": {
|
78 |
+
"version": "0.19.12",
|
79 |
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
|
80 |
+
"integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
|
81 |
+
"cpu": [
|
82 |
+
"x64"
|
83 |
+
],
|
84 |
+
"optional": true,
|
85 |
+
"os": [
|
86 |
+
"android"
|
87 |
+
],
|
88 |
+
"engines": {
|
89 |
+
"node": ">=12"
|
90 |
+
}
|
91 |
+
},
|
92 |
+
"node_modules/@esbuild/darwin-arm64": {
|
93 |
+
"version": "0.19.12",
|
94 |
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
|
95 |
+
"integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
|
96 |
+
"cpu": [
|
97 |
+
"arm64"
|
98 |
+
],
|
99 |
+
"optional": true,
|
100 |
+
"os": [
|
101 |
+
"darwin"
|
102 |
+
],
|
103 |
+
"engines": {
|
104 |
+
"node": ">=12"
|
105 |
+
}
|
106 |
+
},
|
107 |
+
"node_modules/@esbuild/darwin-x64": {
|
108 |
+
"version": "0.19.12",
|
109 |
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
|
110 |
+
"integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
|
111 |
+
"cpu": [
|
112 |
+
"x64"
|
113 |
+
],
|
114 |
+
"optional": true,
|
115 |
+
"os": [
|
116 |
+
"darwin"
|
117 |
+
],
|
118 |
+
"engines": {
|
119 |
+
"node": ">=12"
|
120 |
+
}
|
121 |
+
},
|
122 |
+
"node_modules/@esbuild/freebsd-arm64": {
|
123 |
+
"version": "0.19.12",
|
124 |
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
|
125 |
+
"integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
|
126 |
+
"cpu": [
|
127 |
+
"arm64"
|
128 |
+
],
|
129 |
+
"optional": true,
|
130 |
+
"os": [
|
131 |
+
"freebsd"
|
132 |
+
],
|
133 |
+
"engines": {
|
134 |
+
"node": ">=12"
|
135 |
+
}
|
136 |
+
},
|
137 |
+
"node_modules/@esbuild/freebsd-x64": {
|
138 |
+
"version": "0.19.12",
|
139 |
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
|
140 |
+
"integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
|
141 |
+
"cpu": [
|
142 |
+
"x64"
|
143 |
+
],
|
144 |
+
"optional": true,
|
145 |
+
"os": [
|
146 |
+
"freebsd"
|
147 |
+
],
|
148 |
+
"engines": {
|
149 |
+
"node": ">=12"
|
150 |
+
}
|
151 |
+
},
|
152 |
+
"node_modules/@esbuild/linux-arm": {
|
153 |
+
"version": "0.19.12",
|
154 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
|
155 |
+
"integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
|
156 |
+
"cpu": [
|
157 |
+
"arm"
|
158 |
+
],
|
159 |
+
"optional": true,
|
160 |
+
"os": [
|
161 |
+
"linux"
|
162 |
+
],
|
163 |
+
"engines": {
|
164 |
+
"node": ">=12"
|
165 |
+
}
|
166 |
+
},
|
167 |
+
"node_modules/@esbuild/linux-arm64": {
|
168 |
+
"version": "0.19.12",
|
169 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
|
170 |
+
"integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
|
171 |
+
"cpu": [
|
172 |
+
"arm64"
|
173 |
+
],
|
174 |
+
"optional": true,
|
175 |
+
"os": [
|
176 |
+
"linux"
|
177 |
+
],
|
178 |
+
"engines": {
|
179 |
+
"node": ">=12"
|
180 |
+
}
|
181 |
+
},
|
182 |
+
"node_modules/@esbuild/linux-ia32": {
|
183 |
+
"version": "0.19.12",
|
184 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
|
185 |
+
"integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
|
186 |
+
"cpu": [
|
187 |
+
"ia32"
|
188 |
+
],
|
189 |
+
"optional": true,
|
190 |
+
"os": [
|
191 |
+
"linux"
|
192 |
+
],
|
193 |
+
"engines": {
|
194 |
+
"node": ">=12"
|
195 |
+
}
|
196 |
+
},
|
197 |
+
"node_modules/@esbuild/linux-loong64": {
|
198 |
+
"version": "0.19.12",
|
199 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
|
200 |
+
"integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
|
201 |
+
"cpu": [
|
202 |
+
"loong64"
|
203 |
+
],
|
204 |
+
"optional": true,
|
205 |
+
"os": [
|
206 |
+
"linux"
|
207 |
+
],
|
208 |
+
"engines": {
|
209 |
+
"node": ">=12"
|
210 |
+
}
|
211 |
+
},
|
212 |
+
"node_modules/@esbuild/linux-mips64el": {
|
213 |
+
"version": "0.19.12",
|
214 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
|
215 |
+
"integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
|
216 |
+
"cpu": [
|
217 |
+
"mips64el"
|
218 |
+
],
|
219 |
+
"optional": true,
|
220 |
+
"os": [
|
221 |
+
"linux"
|
222 |
+
],
|
223 |
+
"engines": {
|
224 |
+
"node": ">=12"
|
225 |
+
}
|
226 |
+
},
|
227 |
+
"node_modules/@esbuild/linux-ppc64": {
|
228 |
+
"version": "0.19.12",
|
229 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
|
230 |
+
"integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
|
231 |
+
"cpu": [
|
232 |
+
"ppc64"
|
233 |
+
],
|
234 |
+
"optional": true,
|
235 |
+
"os": [
|
236 |
+
"linux"
|
237 |
+
],
|
238 |
+
"engines": {
|
239 |
+
"node": ">=12"
|
240 |
+
}
|
241 |
+
},
|
242 |
+
"node_modules/@esbuild/linux-riscv64": {
|
243 |
+
"version": "0.19.12",
|
244 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
|
245 |
+
"integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
|
246 |
+
"cpu": [
|
247 |
+
"riscv64"
|
248 |
+
],
|
249 |
+
"optional": true,
|
250 |
+
"os": [
|
251 |
+
"linux"
|
252 |
+
],
|
253 |
+
"engines": {
|
254 |
+
"node": ">=12"
|
255 |
+
}
|
256 |
+
},
|
257 |
+
"node_modules/@esbuild/linux-s390x": {
|
258 |
+
"version": "0.19.12",
|
259 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
|
260 |
+
"integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
|
261 |
+
"cpu": [
|
262 |
+
"s390x"
|
263 |
+
],
|
264 |
+
"optional": true,
|
265 |
+
"os": [
|
266 |
+
"linux"
|
267 |
+
],
|
268 |
+
"engines": {
|
269 |
+
"node": ">=12"
|
270 |
+
}
|
271 |
+
},
|
272 |
+
"node_modules/@esbuild/linux-x64": {
|
273 |
+
"version": "0.19.12",
|
274 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
|
275 |
+
"integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
|
276 |
+
"cpu": [
|
277 |
+
"x64"
|
278 |
+
],
|
279 |
+
"optional": true,
|
280 |
+
"os": [
|
281 |
+
"linux"
|
282 |
+
],
|
283 |
+
"engines": {
|
284 |
+
"node": ">=12"
|
285 |
+
}
|
286 |
+
},
|
287 |
+
"node_modules/@esbuild/netbsd-x64": {
|
288 |
+
"version": "0.19.12",
|
289 |
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
|
290 |
+
"integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
|
291 |
+
"cpu": [
|
292 |
+
"x64"
|
293 |
+
],
|
294 |
+
"optional": true,
|
295 |
+
"os": [
|
296 |
+
"netbsd"
|
297 |
+
],
|
298 |
+
"engines": {
|
299 |
+
"node": ">=12"
|
300 |
+
}
|
301 |
+
},
|
302 |
+
"node_modules/@esbuild/openbsd-x64": {
|
303 |
+
"version": "0.19.12",
|
304 |
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
|
305 |
+
"integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
|
306 |
+
"cpu": [
|
307 |
+
"x64"
|
308 |
+
],
|
309 |
+
"optional": true,
|
310 |
+
"os": [
|
311 |
+
"openbsd"
|
312 |
+
],
|
313 |
+
"engines": {
|
314 |
+
"node": ">=12"
|
315 |
+
}
|
316 |
+
},
|
317 |
+
"node_modules/@esbuild/sunos-x64": {
|
318 |
+
"version": "0.19.12",
|
319 |
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
|
320 |
+
"integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
|
321 |
+
"cpu": [
|
322 |
+
"x64"
|
323 |
+
],
|
324 |
+
"optional": true,
|
325 |
+
"os": [
|
326 |
+
"sunos"
|
327 |
+
],
|
328 |
+
"engines": {
|
329 |
+
"node": ">=12"
|
330 |
+
}
|
331 |
+
},
|
332 |
+
"node_modules/@esbuild/win32-arm64": {
|
333 |
+
"version": "0.19.12",
|
334 |
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
|
335 |
+
"integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
|
336 |
+
"cpu": [
|
337 |
+
"arm64"
|
338 |
+
],
|
339 |
+
"optional": true,
|
340 |
+
"os": [
|
341 |
+
"win32"
|
342 |
+
],
|
343 |
+
"engines": {
|
344 |
+
"node": ">=12"
|
345 |
+
}
|
346 |
+
},
|
347 |
+
"node_modules/@esbuild/win32-ia32": {
|
348 |
+
"version": "0.19.12",
|
349 |
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
|
350 |
+
"integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
|
351 |
+
"cpu": [
|
352 |
+
"ia32"
|
353 |
+
],
|
354 |
+
"optional": true,
|
355 |
+
"os": [
|
356 |
+
"win32"
|
357 |
+
],
|
358 |
+
"engines": {
|
359 |
+
"node": ">=12"
|
360 |
+
}
|
361 |
+
},
|
362 |
+
"node_modules/@esbuild/win32-x64": {
|
363 |
+
"version": "0.19.12",
|
364 |
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
|
365 |
+
"integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
|
366 |
+
"cpu": [
|
367 |
+
"x64"
|
368 |
+
],
|
369 |
+
"optional": true,
|
370 |
+
"os": [
|
371 |
+
"win32"
|
372 |
+
],
|
373 |
+
"engines": {
|
374 |
+
"node": ">=12"
|
375 |
+
}
|
376 |
+
},
|
377 |
+
"node_modules/@formatjs/ecma402-abstract": {
|
378 |
+
"version": "1.11.4",
|
379 |
+
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
|
380 |
+
"integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
|
381 |
+
"dependencies": {
|
382 |
+
"@formatjs/intl-localematcher": "0.2.25",
|
383 |
+
"tslib": "^2.1.0"
|
384 |
+
}
|
385 |
+
},
|
386 |
+
"node_modules/@formatjs/fast-memoize": {
|
387 |
+
"version": "1.2.1",
|
388 |
+
"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz",
|
389 |
+
"integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==",
|
390 |
+
"dependencies": {
|
391 |
+
"tslib": "^2.1.0"
|
392 |
+
}
|
393 |
+
},
|
394 |
+
"node_modules/@formatjs/icu-messageformat-parser": {
|
395 |
+
"version": "2.1.0",
|
396 |
+
"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz",
|
397 |
+
"integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==",
|
398 |
+
"dependencies": {
|
399 |
+
"@formatjs/ecma402-abstract": "1.11.4",
|
400 |
+
"@formatjs/icu-skeleton-parser": "1.3.6",
|
401 |
+
"tslib": "^2.1.0"
|
402 |
+
}
|
403 |
+
},
|
404 |
+
"node_modules/@formatjs/icu-skeleton-parser": {
|
405 |
+
"version": "1.3.6",
|
406 |
+
"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz",
|
407 |
+
"integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==",
|
408 |
+
"dependencies": {
|
409 |
+
"@formatjs/ecma402-abstract": "1.11.4",
|
410 |
+
"tslib": "^2.1.0"
|
411 |
+
}
|
412 |
+
},
|
413 |
+
"node_modules/@formatjs/intl-localematcher": {
|
414 |
+
"version": "0.2.25",
|
415 |
+
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
|
416 |
+
"integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
|
417 |
+
"dependencies": {
|
418 |
+
"tslib": "^2.1.0"
|
419 |
+
}
|
420 |
+
},
|
421 |
+
"node_modules/@gradio/atoms": {
|
422 |
+
"version": "0.5.3",
|
423 |
+
"resolved": "https://registry.npmjs.org/@gradio/atoms/-/atoms-0.5.3.tgz",
|
424 |
+
"integrity": "sha512-1HZgmhbAPzCYt6muyttrJi/P5zXTnD3kVMgneXuDd2j9qB21kSqzshmpnPcvDO3lO0vro55HuxgH22PJ1XHWqg==",
|
425 |
+
"dependencies": {
|
426 |
+
"@gradio/icons": "^0.3.3",
|
427 |
+
"@gradio/utils": "^0.3.0"
|
428 |
+
}
|
429 |
+
},
|
430 |
+
"node_modules/@gradio/column": {
|
431 |
+
"version": "0.1.0",
|
432 |
+
"resolved": "https://registry.npmjs.org/@gradio/column/-/column-0.1.0.tgz",
|
433 |
+
"integrity": "sha512-P24nqqVnMXBaDA1f/zSN5HZRho4PxP8Dq+7VltPHlmxIEiZYik2AJ4J0LeuIha34FDO0guu/16evdrpvGIUAfw=="
|
434 |
+
},
|
435 |
+
"node_modules/@gradio/icons": {
|
436 |
+
"version": "0.3.3",
|
437 |
+
"resolved": "https://registry.npmjs.org/@gradio/icons/-/icons-0.3.3.tgz",
|
438 |
+
"integrity": "sha512-UFTHpjzFJVwaRzZsdslWxnKUPGgtVeErmUGzrG9di4Vn0oHn1FgHt1Yr2SVu4lO3JI/r2u3H49tb6iax4U9HjA=="
|
439 |
+
},
|
440 |
+
"node_modules/@gradio/statustracker": {
|
441 |
+
"version": "0.4.8",
|
442 |
+
"resolved": "https://registry.npmjs.org/@gradio/statustracker/-/statustracker-0.4.8.tgz",
|
443 |
+
"integrity": "sha512-B/SN7T9BbcdzPrWYfKVxwy3e4u85MS+DAZSeuXgPbAL5n5QravCtvNW7zwkUWb0OlBloaglN3Y7K3M8l1hR5qg==",
|
444 |
+
"dependencies": {
|
445 |
+
"@gradio/atoms": "^0.5.3",
|
446 |
+
"@gradio/column": "^0.1.0",
|
447 |
+
"@gradio/icons": "^0.3.3",
|
448 |
+
"@gradio/utils": "^0.3.0"
|
449 |
+
}
|
450 |
+
},
|
451 |
+
"node_modules/@gradio/theme": {
|
452 |
+
"version": "0.2.0",
|
453 |
+
"resolved": "https://registry.npmjs.org/@gradio/theme/-/theme-0.2.0.tgz",
|
454 |
+
"integrity": "sha512-33c68Nk7oRXLn08OxPfjcPm7S4tXGOUV1I1bVgzdM2YV5o1QBOS1GEnXPZPu/CEYPePLMB6bsDwffrLEyLGWVQ=="
|
455 |
+
},
|
456 |
+
"node_modules/@gradio/utils": {
|
457 |
+
"version": "0.3.0",
|
458 |
+
"resolved": "https://registry.npmjs.org/@gradio/utils/-/utils-0.3.0.tgz",
|
459 |
+
"integrity": "sha512-VxP0h7UoWazkdSB875ChvTXWamBwMguuRc+8OyQFZjdj14lcqLEQuj54es3FDBpXOp5GMLFh48Q5FLLjYxMgSg==",
|
460 |
+
"dependencies": {
|
461 |
+
"@gradio/theme": "^0.2.0",
|
462 |
+
"svelte-i18n": "^3.6.0"
|
463 |
+
}
|
464 |
+
},
|
465 |
+
"node_modules/@jridgewell/gen-mapping": {
|
466 |
+
"version": "0.3.5",
|
467 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
|
468 |
+
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
|
469 |
+
"peer": true,
|
470 |
+
"dependencies": {
|
471 |
+
"@jridgewell/set-array": "^1.2.1",
|
472 |
+
"@jridgewell/sourcemap-codec": "^1.4.10",
|
473 |
+
"@jridgewell/trace-mapping": "^0.3.24"
|
474 |
+
},
|
475 |
+
"engines": {
|
476 |
+
"node": ">=6.0.0"
|
477 |
+
}
|
478 |
+
},
|
479 |
+
"node_modules/@jridgewell/resolve-uri": {
|
480 |
+
"version": "3.1.2",
|
481 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
482 |
+
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
483 |
+
"peer": true,
|
484 |
+
"engines": {
|
485 |
+
"node": ">=6.0.0"
|
486 |
+
}
|
487 |
+
},
|
488 |
+
"node_modules/@jridgewell/set-array": {
|
489 |
+
"version": "1.2.1",
|
490 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
491 |
+
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
492 |
+
"peer": true,
|
493 |
+
"engines": {
|
494 |
+
"node": ">=6.0.0"
|
495 |
+
}
|
496 |
+
},
|
497 |
+
"node_modules/@jridgewell/sourcemap-codec": {
|
498 |
+
"version": "1.4.15",
|
499 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
500 |
+
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
|
501 |
+
"peer": true
|
502 |
+
},
|
503 |
+
"node_modules/@jridgewell/trace-mapping": {
|
504 |
+
"version": "0.3.25",
|
505 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
506 |
+
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
507 |
+
"peer": true,
|
508 |
+
"dependencies": {
|
509 |
+
"@jridgewell/resolve-uri": "^3.1.0",
|
510 |
+
"@jridgewell/sourcemap-codec": "^1.4.14"
|
511 |
+
}
|
512 |
+
},
|
513 |
+
"node_modules/@types/estree": {
|
514 |
+
"version": "1.0.5",
|
515 |
+
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
516 |
+
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
517 |
+
"peer": true
|
518 |
+
},
|
519 |
+
"node_modules/3dmol": {
|
520 |
+
"version": "2.1.0",
|
521 |
+
"resolved": "https://registry.npmjs.org/3dmol/-/3dmol-2.1.0.tgz",
|
522 |
+
"integrity": "sha512-w1pfTR8+pDtOpxbGDrBWCbOXiTBqLhHO/OQ5xK3nD4trM0OTPCl8opaTl2iyCfwFRUbqmd2I4Qtjw7x9Boe+OA==",
|
523 |
+
"dependencies": {
|
524 |
+
"iobuffer": "^5.3.1",
|
525 |
+
"netcdfjs": "^3.0.0",
|
526 |
+
"pako": "^2.1.0",
|
527 |
+
"upng-js": "^2.1.0"
|
528 |
+
},
|
529 |
+
"engines": {
|
530 |
+
"node": ">=16.16.0",
|
531 |
+
"npm": ">=8.11"
|
532 |
+
}
|
533 |
+
},
|
534 |
+
"node_modules/acorn": {
|
535 |
+
"version": "8.11.3",
|
536 |
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
|
537 |
+
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
|
538 |
+
"peer": true,
|
539 |
+
"bin": {
|
540 |
+
"acorn": "bin/acorn"
|
541 |
+
},
|
542 |
+
"engines": {
|
543 |
+
"node": ">=0.4.0"
|
544 |
+
}
|
545 |
+
},
|
546 |
+
"node_modules/aria-query": {
|
547 |
+
"version": "5.3.0",
|
548 |
+
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
|
549 |
+
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
|
550 |
+
"peer": true,
|
551 |
+
"dependencies": {
|
552 |
+
"dequal": "^2.0.3"
|
553 |
+
}
|
554 |
+
},
|
555 |
+
"node_modules/axobject-query": {
|
556 |
+
"version": "4.0.0",
|
557 |
+
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
|
558 |
+
"integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
|
559 |
+
"peer": true,
|
560 |
+
"dependencies": {
|
561 |
+
"dequal": "^2.0.3"
|
562 |
+
}
|
563 |
+
},
|
564 |
+
"node_modules/cli-color": {
|
565 |
+
"version": "2.0.4",
|
566 |
+
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
|
567 |
+
"integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
|
568 |
+
"dependencies": {
|
569 |
+
"d": "^1.0.1",
|
570 |
+
"es5-ext": "^0.10.64",
|
571 |
+
"es6-iterator": "^2.0.3",
|
572 |
+
"memoizee": "^0.4.15",
|
573 |
+
"timers-ext": "^0.1.7"
|
574 |
+
},
|
575 |
+
"engines": {
|
576 |
+
"node": ">=0.10"
|
577 |
+
}
|
578 |
+
},
|
579 |
+
"node_modules/code-red": {
|
580 |
+
"version": "1.0.4",
|
581 |
+
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
|
582 |
+
"integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
|
583 |
+
"peer": true,
|
584 |
+
"dependencies": {
|
585 |
+
"@jridgewell/sourcemap-codec": "^1.4.15",
|
586 |
+
"@types/estree": "^1.0.1",
|
587 |
+
"acorn": "^8.10.0",
|
588 |
+
"estree-walker": "^3.0.3",
|
589 |
+
"periscopic": "^3.1.0"
|
590 |
+
}
|
591 |
+
},
|
592 |
+
"node_modules/css-tree": {
|
593 |
+
"version": "2.3.1",
|
594 |
+
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
|
595 |
+
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
|
596 |
+
"peer": true,
|
597 |
+
"dependencies": {
|
598 |
+
"mdn-data": "2.0.30",
|
599 |
+
"source-map-js": "^1.0.1"
|
600 |
+
},
|
601 |
+
"engines": {
|
602 |
+
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
|
603 |
+
}
|
604 |
+
},
|
605 |
+
"node_modules/d": {
|
606 |
+
"version": "1.0.2",
|
607 |
+
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
|
608 |
+
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
|
609 |
+
"dependencies": {
|
610 |
+
"es5-ext": "^0.10.64",
|
611 |
+
"type": "^2.7.2"
|
612 |
+
},
|
613 |
+
"engines": {
|
614 |
+
"node": ">=0.12"
|
615 |
+
}
|
616 |
+
},
|
617 |
+
"node_modules/deepmerge": {
|
618 |
+
"version": "4.3.1",
|
619 |
+
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
|
620 |
+
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
621 |
+
"engines": {
|
622 |
+
"node": ">=0.10.0"
|
623 |
+
}
|
624 |
+
},
|
625 |
+
"node_modules/dequal": {
|
626 |
+
"version": "2.0.3",
|
627 |
+
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
628 |
+
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
|
629 |
+
"peer": true,
|
630 |
+
"engines": {
|
631 |
+
"node": ">=6"
|
632 |
+
}
|
633 |
+
},
|
634 |
+
"node_modules/es5-ext": {
|
635 |
+
"version": "0.10.64",
|
636 |
+
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
|
637 |
+
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
|
638 |
+
"hasInstallScript": true,
|
639 |
+
"dependencies": {
|
640 |
+
"es6-iterator": "^2.0.3",
|
641 |
+
"es6-symbol": "^3.1.3",
|
642 |
+
"esniff": "^2.0.1",
|
643 |
+
"next-tick": "^1.1.0"
|
644 |
+
},
|
645 |
+
"engines": {
|
646 |
+
"node": ">=0.10"
|
647 |
+
}
|
648 |
+
},
|
649 |
+
"node_modules/es6-iterator": {
|
650 |
+
"version": "2.0.3",
|
651 |
+
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
652 |
+
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
653 |
+
"dependencies": {
|
654 |
+
"d": "1",
|
655 |
+
"es5-ext": "^0.10.35",
|
656 |
+
"es6-symbol": "^3.1.1"
|
657 |
+
}
|
658 |
+
},
|
659 |
+
"node_modules/es6-symbol": {
|
660 |
+
"version": "3.1.4",
|
661 |
+
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
|
662 |
+
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
|
663 |
+
"dependencies": {
|
664 |
+
"d": "^1.0.2",
|
665 |
+
"ext": "^1.7.0"
|
666 |
+
},
|
667 |
+
"engines": {
|
668 |
+
"node": ">=0.12"
|
669 |
+
}
|
670 |
+
},
|
671 |
+
"node_modules/es6-weak-map": {
|
672 |
+
"version": "2.0.3",
|
673 |
+
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
|
674 |
+
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
|
675 |
+
"dependencies": {
|
676 |
+
"d": "1",
|
677 |
+
"es5-ext": "^0.10.46",
|
678 |
+
"es6-iterator": "^2.0.3",
|
679 |
+
"es6-symbol": "^3.1.1"
|
680 |
+
}
|
681 |
+
},
|
682 |
+
"node_modules/esbuild": {
|
683 |
+
"version": "0.19.12",
|
684 |
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
|
685 |
+
"integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
|
686 |
+
"hasInstallScript": true,
|
687 |
+
"bin": {
|
688 |
+
"esbuild": "bin/esbuild"
|
689 |
+
},
|
690 |
+
"engines": {
|
691 |
+
"node": ">=12"
|
692 |
+
},
|
693 |
+
"optionalDependencies": {
|
694 |
+
"@esbuild/aix-ppc64": "0.19.12",
|
695 |
+
"@esbuild/android-arm": "0.19.12",
|
696 |
+
"@esbuild/android-arm64": "0.19.12",
|
697 |
+
"@esbuild/android-x64": "0.19.12",
|
698 |
+
"@esbuild/darwin-arm64": "0.19.12",
|
699 |
+
"@esbuild/darwin-x64": "0.19.12",
|
700 |
+
"@esbuild/freebsd-arm64": "0.19.12",
|
701 |
+
"@esbuild/freebsd-x64": "0.19.12",
|
702 |
+
"@esbuild/linux-arm": "0.19.12",
|
703 |
+
"@esbuild/linux-arm64": "0.19.12",
|
704 |
+
"@esbuild/linux-ia32": "0.19.12",
|
705 |
+
"@esbuild/linux-loong64": "0.19.12",
|
706 |
+
"@esbuild/linux-mips64el": "0.19.12",
|
707 |
+
"@esbuild/linux-ppc64": "0.19.12",
|
708 |
+
"@esbuild/linux-riscv64": "0.19.12",
|
709 |
+
"@esbuild/linux-s390x": "0.19.12",
|
710 |
+
"@esbuild/linux-x64": "0.19.12",
|
711 |
+
"@esbuild/netbsd-x64": "0.19.12",
|
712 |
+
"@esbuild/openbsd-x64": "0.19.12",
|
713 |
+
"@esbuild/sunos-x64": "0.19.12",
|
714 |
+
"@esbuild/win32-arm64": "0.19.12",
|
715 |
+
"@esbuild/win32-ia32": "0.19.12",
|
716 |
+
"@esbuild/win32-x64": "0.19.12"
|
717 |
+
}
|
718 |
+
},
|
719 |
+
"node_modules/esniff": {
|
720 |
+
"version": "2.0.1",
|
721 |
+
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
|
722 |
+
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
|
723 |
+
"dependencies": {
|
724 |
+
"d": "^1.0.1",
|
725 |
+
"es5-ext": "^0.10.62",
|
726 |
+
"event-emitter": "^0.3.5",
|
727 |
+
"type": "^2.7.2"
|
728 |
+
},
|
729 |
+
"engines": {
|
730 |
+
"node": ">=0.10"
|
731 |
+
}
|
732 |
+
},
|
733 |
+
"node_modules/estree-walker": {
|
734 |
+
"version": "3.0.3",
|
735 |
+
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
|
736 |
+
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
|
737 |
+
"peer": true,
|
738 |
+
"dependencies": {
|
739 |
+
"@types/estree": "^1.0.0"
|
740 |
+
}
|
741 |
+
},
|
742 |
+
"node_modules/event-emitter": {
|
743 |
+
"version": "0.3.5",
|
744 |
+
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
|
745 |
+
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
|
746 |
+
"dependencies": {
|
747 |
+
"d": "1",
|
748 |
+
"es5-ext": "~0.10.14"
|
749 |
+
}
|
750 |
+
},
|
751 |
+
"node_modules/ext": {
|
752 |
+
"version": "1.7.0",
|
753 |
+
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
754 |
+
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
755 |
+
"dependencies": {
|
756 |
+
"type": "^2.7.2"
|
757 |
+
}
|
758 |
+
},
|
759 |
+
"node_modules/globalyzer": {
|
760 |
+
"version": "0.1.0",
|
761 |
+
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
|
762 |
+
"integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
|
763 |
+
},
|
764 |
+
"node_modules/globrex": {
|
765 |
+
"version": "0.1.2",
|
766 |
+
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
|
767 |
+
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
|
768 |
+
},
|
769 |
+
"node_modules/intl-messageformat": {
|
770 |
+
"version": "9.13.0",
|
771 |
+
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
|
772 |
+
"integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==",
|
773 |
+
"dependencies": {
|
774 |
+
"@formatjs/ecma402-abstract": "1.11.4",
|
775 |
+
"@formatjs/fast-memoize": "1.2.1",
|
776 |
+
"@formatjs/icu-messageformat-parser": "2.1.0",
|
777 |
+
"tslib": "^2.1.0"
|
778 |
+
}
|
779 |
+
},
|
780 |
+
"node_modules/iobuffer": {
|
781 |
+
"version": "5.3.2",
|
782 |
+
"resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.3.2.tgz",
|
783 |
+
"integrity": "sha512-kO3CjNfLZ9t+tHxAMd+Xk4v3D/31E91rMs1dHrm7ikEQrlZ8mLDbQ4z3tZfDM48zOkReas2jx8MWSAmN9+c8Fw=="
|
784 |
+
},
|
785 |
+
"node_modules/is-promise": {
|
786 |
+
"version": "2.2.2",
|
787 |
+
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
788 |
+
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
789 |
+
},
|
790 |
+
"node_modules/is-reference": {
|
791 |
+
"version": "3.0.2",
|
792 |
+
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
|
793 |
+
"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
|
794 |
+
"peer": true,
|
795 |
+
"dependencies": {
|
796 |
+
"@types/estree": "*"
|
797 |
+
}
|
798 |
+
},
|
799 |
+
"node_modules/locate-character": {
|
800 |
+
"version": "3.0.0",
|
801 |
+
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
|
802 |
+
"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
|
803 |
+
"peer": true
|
804 |
+
},
|
805 |
+
"node_modules/lru-queue": {
|
806 |
+
"version": "0.1.0",
|
807 |
+
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
|
808 |
+
"integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
|
809 |
+
"dependencies": {
|
810 |
+
"es5-ext": "~0.10.2"
|
811 |
+
}
|
812 |
+
},
|
813 |
+
"node_modules/magic-string": {
|
814 |
+
"version": "0.30.8",
|
815 |
+
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
|
816 |
+
"integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
|
817 |
+
"peer": true,
|
818 |
+
"dependencies": {
|
819 |
+
"@jridgewell/sourcemap-codec": "^1.4.15"
|
820 |
+
},
|
821 |
+
"engines": {
|
822 |
+
"node": ">=12"
|
823 |
+
}
|
824 |
+
},
|
825 |
+
"node_modules/mdn-data": {
|
826 |
+
"version": "2.0.30",
|
827 |
+
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
|
828 |
+
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
|
829 |
+
"peer": true
|
830 |
+
},
|
831 |
+
"node_modules/memoizee": {
|
832 |
+
"version": "0.4.15",
|
833 |
+
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
|
834 |
+
"integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
|
835 |
+
"dependencies": {
|
836 |
+
"d": "^1.0.1",
|
837 |
+
"es5-ext": "^0.10.53",
|
838 |
+
"es6-weak-map": "^2.0.3",
|
839 |
+
"event-emitter": "^0.3.5",
|
840 |
+
"is-promise": "^2.2.2",
|
841 |
+
"lru-queue": "^0.1.0",
|
842 |
+
"next-tick": "^1.1.0",
|
843 |
+
"timers-ext": "^0.1.7"
|
844 |
+
}
|
845 |
+
},
|
846 |
+
"node_modules/mri": {
|
847 |
+
"version": "1.2.0",
|
848 |
+
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
|
849 |
+
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
|
850 |
+
"engines": {
|
851 |
+
"node": ">=4"
|
852 |
+
}
|
853 |
+
},
|
854 |
+
"node_modules/netcdfjs": {
|
855 |
+
"version": "3.0.0",
|
856 |
+
"resolved": "https://registry.npmjs.org/netcdfjs/-/netcdfjs-3.0.0.tgz",
|
857 |
+
"integrity": "sha512-LOvT8KkC308qtpUkcBPiCMBtii7ZQCN6LxcVheWgyUeZ6DQWcpSRFV9dcVXLj/2eHZ/bre9tV5HTH4Sf93vrFw==",
|
858 |
+
"dependencies": {
|
859 |
+
"iobuffer": "^5.3.2"
|
860 |
+
}
|
861 |
+
},
|
862 |
+
"node_modules/next-tick": {
|
863 |
+
"version": "1.1.0",
|
864 |
+
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
865 |
+
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
|
866 |
+
},
|
867 |
+
"node_modules/pako": {
|
868 |
+
"version": "2.1.0",
|
869 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
|
870 |
+
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
|
871 |
+
},
|
872 |
+
"node_modules/periscopic": {
|
873 |
+
"version": "3.1.0",
|
874 |
+
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
|
875 |
+
"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
|
876 |
+
"peer": true,
|
877 |
+
"dependencies": {
|
878 |
+
"@types/estree": "^1.0.0",
|
879 |
+
"estree-walker": "^3.0.0",
|
880 |
+
"is-reference": "^3.0.0"
|
881 |
+
}
|
882 |
+
},
|
883 |
+
"node_modules/sade": {
|
884 |
+
"version": "1.8.1",
|
885 |
+
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
|
886 |
+
"integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
|
887 |
+
"dependencies": {
|
888 |
+
"mri": "^1.1.0"
|
889 |
+
},
|
890 |
+
"engines": {
|
891 |
+
"node": ">=6"
|
892 |
+
}
|
893 |
+
},
|
894 |
+
"node_modules/source-map-js": {
|
895 |
+
"version": "1.2.0",
|
896 |
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
897 |
+
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
898 |
+
"peer": true,
|
899 |
+
"engines": {
|
900 |
+
"node": ">=0.10.0"
|
901 |
+
}
|
902 |
+
},
|
903 |
+
"node_modules/svelte": {
|
904 |
+
"version": "4.2.12",
|
905 |
+
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.12.tgz",
|
906 |
+
"integrity": "sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==",
|
907 |
+
"peer": true,
|
908 |
+
"dependencies": {
|
909 |
+
"@ampproject/remapping": "^2.2.1",
|
910 |
+
"@jridgewell/sourcemap-codec": "^1.4.15",
|
911 |
+
"@jridgewell/trace-mapping": "^0.3.18",
|
912 |
+
"@types/estree": "^1.0.1",
|
913 |
+
"acorn": "^8.9.0",
|
914 |
+
"aria-query": "^5.3.0",
|
915 |
+
"axobject-query": "^4.0.0",
|
916 |
+
"code-red": "^1.0.3",
|
917 |
+
"css-tree": "^2.3.1",
|
918 |
+
"estree-walker": "^3.0.3",
|
919 |
+
"is-reference": "^3.0.1",
|
920 |
+
"locate-character": "^3.0.0",
|
921 |
+
"magic-string": "^0.30.4",
|
922 |
+
"periscopic": "^3.1.0"
|
923 |
+
},
|
924 |
+
"engines": {
|
925 |
+
"node": ">=16"
|
926 |
+
}
|
927 |
+
},
|
928 |
+
"node_modules/svelte-i18n": {
|
929 |
+
"version": "3.7.4",
|
930 |
+
"resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.7.4.tgz",
|
931 |
+
"integrity": "sha512-yGRCNo+eBT4cPuU7IVsYTYjxB7I2V8qgUZPlHnNctJj5IgbJgV78flsRzpjZ/8iUYZrS49oCt7uxlU3AZv/N5Q==",
|
932 |
+
"dependencies": {
|
933 |
+
"cli-color": "^2.0.3",
|
934 |
+
"deepmerge": "^4.2.2",
|
935 |
+
"esbuild": "^0.19.2",
|
936 |
+
"estree-walker": "^2",
|
937 |
+
"intl-messageformat": "^9.13.0",
|
938 |
+
"sade": "^1.8.1",
|
939 |
+
"tiny-glob": "^0.2.9"
|
940 |
+
},
|
941 |
+
"bin": {
|
942 |
+
"svelte-i18n": "dist/cli.js"
|
943 |
+
},
|
944 |
+
"engines": {
|
945 |
+
"node": ">= 16"
|
946 |
+
},
|
947 |
+
"peerDependencies": {
|
948 |
+
"svelte": "^3 || ^4"
|
949 |
+
}
|
950 |
+
},
|
951 |
+
"node_modules/svelte-i18n/node_modules/estree-walker": {
|
952 |
+
"version": "2.0.2",
|
953 |
+
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
954 |
+
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
955 |
+
},
|
956 |
+
"node_modules/timers-ext": {
|
957 |
+
"version": "0.1.7",
|
958 |
+
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
|
959 |
+
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
|
960 |
+
"dependencies": {
|
961 |
+
"es5-ext": "~0.10.46",
|
962 |
+
"next-tick": "1"
|
963 |
+
}
|
964 |
+
},
|
965 |
+
"node_modules/tiny-glob": {
|
966 |
+
"version": "0.2.9",
|
967 |
+
"resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
|
968 |
+
"integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
|
969 |
+
"dependencies": {
|
970 |
+
"globalyzer": "0.1.0",
|
971 |
+
"globrex": "^0.1.2"
|
972 |
+
}
|
973 |
+
},
|
974 |
+
"node_modules/tslib": {
|
975 |
+
"version": "2.6.2",
|
976 |
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
977 |
+
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
|
978 |
+
},
|
979 |
+
"node_modules/type": {
|
980 |
+
"version": "2.7.2",
|
981 |
+
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
982 |
+
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
983 |
+
},
|
984 |
+
"node_modules/upng-js": {
|
985 |
+
"version": "2.1.0",
|
986 |
+
"resolved": "https://registry.npmjs.org/upng-js/-/upng-js-2.1.0.tgz",
|
987 |
+
"integrity": "sha512-d3xzZzpMP64YkjP5pr8gNyvBt7dLk/uGI67EctzDuVp4lCZyVMo0aJO6l/VDlgbInJYDY6cnClLoBp29eKWI6g==",
|
988 |
+
"dependencies": {
|
989 |
+
"pako": "^1.0.5"
|
990 |
+
}
|
991 |
+
},
|
992 |
+
"node_modules/upng-js/node_modules/pako": {
|
993 |
+
"version": "1.0.11",
|
994 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
995 |
+
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
996 |
+
}
|
997 |
+
},
|
998 |
+
"dependencies": {
|
999 |
+
"@ampproject/remapping": {
|
1000 |
+
"version": "2.3.0",
|
1001 |
+
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
|
1002 |
+
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
|
1003 |
+
"peer": true,
|
1004 |
+
"requires": {
|
1005 |
+
"@jridgewell/gen-mapping": "^0.3.5",
|
1006 |
+
"@jridgewell/trace-mapping": "^0.3.24"
|
1007 |
+
}
|
1008 |
+
},
|
1009 |
+
"@esbuild/aix-ppc64": {
|
1010 |
+
"version": "0.19.12",
|
1011 |
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
|
1012 |
+
"integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
|
1013 |
+
"optional": true
|
1014 |
+
},
|
1015 |
+
"@esbuild/android-arm": {
|
1016 |
+
"version": "0.19.12",
|
1017 |
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
|
1018 |
+
"integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
|
1019 |
+
"optional": true
|
1020 |
+
},
|
1021 |
+
"@esbuild/android-arm64": {
|
1022 |
+
"version": "0.19.12",
|
1023 |
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
|
1024 |
+
"integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
|
1025 |
+
"optional": true
|
1026 |
+
},
|
1027 |
+
"@esbuild/android-x64": {
|
1028 |
+
"version": "0.19.12",
|
1029 |
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
|
1030 |
+
"integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
|
1031 |
+
"optional": true
|
1032 |
+
},
|
1033 |
+
"@esbuild/darwin-arm64": {
|
1034 |
+
"version": "0.19.12",
|
1035 |
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
|
1036 |
+
"integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
|
1037 |
+
"optional": true
|
1038 |
+
},
|
1039 |
+
"@esbuild/darwin-x64": {
|
1040 |
+
"version": "0.19.12",
|
1041 |
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
|
1042 |
+
"integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
|
1043 |
+
"optional": true
|
1044 |
+
},
|
1045 |
+
"@esbuild/freebsd-arm64": {
|
1046 |
+
"version": "0.19.12",
|
1047 |
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
|
1048 |
+
"integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
|
1049 |
+
"optional": true
|
1050 |
+
},
|
1051 |
+
"@esbuild/freebsd-x64": {
|
1052 |
+
"version": "0.19.12",
|
1053 |
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
|
1054 |
+
"integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
|
1055 |
+
"optional": true
|
1056 |
+
},
|
1057 |
+
"@esbuild/linux-arm": {
|
1058 |
+
"version": "0.19.12",
|
1059 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
|
1060 |
+
"integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
|
1061 |
+
"optional": true
|
1062 |
+
},
|
1063 |
+
"@esbuild/linux-arm64": {
|
1064 |
+
"version": "0.19.12",
|
1065 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
|
1066 |
+
"integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
|
1067 |
+
"optional": true
|
1068 |
+
},
|
1069 |
+
"@esbuild/linux-ia32": {
|
1070 |
+
"version": "0.19.12",
|
1071 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
|
1072 |
+
"integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
|
1073 |
+
"optional": true
|
1074 |
+
},
|
1075 |
+
"@esbuild/linux-loong64": {
|
1076 |
+
"version": "0.19.12",
|
1077 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
|
1078 |
+
"integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
|
1079 |
+
"optional": true
|
1080 |
+
},
|
1081 |
+
"@esbuild/linux-mips64el": {
|
1082 |
+
"version": "0.19.12",
|
1083 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
|
1084 |
+
"integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
|
1085 |
+
"optional": true
|
1086 |
+
},
|
1087 |
+
"@esbuild/linux-ppc64": {
|
1088 |
+
"version": "0.19.12",
|
1089 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
|
1090 |
+
"integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
|
1091 |
+
"optional": true
|
1092 |
+
},
|
1093 |
+
"@esbuild/linux-riscv64": {
|
1094 |
+
"version": "0.19.12",
|
1095 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
|
1096 |
+
"integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
|
1097 |
+
"optional": true
|
1098 |
+
},
|
1099 |
+
"@esbuild/linux-s390x": {
|
1100 |
+
"version": "0.19.12",
|
1101 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
|
1102 |
+
"integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
|
1103 |
+
"optional": true
|
1104 |
+
},
|
1105 |
+
"@esbuild/linux-x64": {
|
1106 |
+
"version": "0.19.12",
|
1107 |
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
|
1108 |
+
"integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
|
1109 |
+
"optional": true
|
1110 |
+
},
|
1111 |
+
"@esbuild/netbsd-x64": {
|
1112 |
+
"version": "0.19.12",
|
1113 |
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
|
1114 |
+
"integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
|
1115 |
+
"optional": true
|
1116 |
+
},
|
1117 |
+
"@esbuild/openbsd-x64": {
|
1118 |
+
"version": "0.19.12",
|
1119 |
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
|
1120 |
+
"integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
|
1121 |
+
"optional": true
|
1122 |
+
},
|
1123 |
+
"@esbuild/sunos-x64": {
|
1124 |
+
"version": "0.19.12",
|
1125 |
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
|
1126 |
+
"integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
|
1127 |
+
"optional": true
|
1128 |
+
},
|
1129 |
+
"@esbuild/win32-arm64": {
|
1130 |
+
"version": "0.19.12",
|
1131 |
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
|
1132 |
+
"integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
|
1133 |
+
"optional": true
|
1134 |
+
},
|
1135 |
+
"@esbuild/win32-ia32": {
|
1136 |
+
"version": "0.19.12",
|
1137 |
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
|
1138 |
+
"integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
|
1139 |
+
"optional": true
|
1140 |
+
},
|
1141 |
+
"@esbuild/win32-x64": {
|
1142 |
+
"version": "0.19.12",
|
1143 |
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
|
1144 |
+
"integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
|
1145 |
+
"optional": true
|
1146 |
+
},
|
1147 |
+
"@formatjs/ecma402-abstract": {
|
1148 |
+
"version": "1.11.4",
|
1149 |
+
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
|
1150 |
+
"integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
|
1151 |
+
"requires": {
|
1152 |
+
"@formatjs/intl-localematcher": "0.2.25",
|
1153 |
+
"tslib": "^2.1.0"
|
1154 |
+
}
|
1155 |
+
},
|
1156 |
+
"@formatjs/fast-memoize": {
|
1157 |
+
"version": "1.2.1",
|
1158 |
+
"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz",
|
1159 |
+
"integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==",
|
1160 |
+
"requires": {
|
1161 |
+
"tslib": "^2.1.0"
|
1162 |
+
}
|
1163 |
+
},
|
1164 |
+
"@formatjs/icu-messageformat-parser": {
|
1165 |
+
"version": "2.1.0",
|
1166 |
+
"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz",
|
1167 |
+
"integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==",
|
1168 |
+
"requires": {
|
1169 |
+
"@formatjs/ecma402-abstract": "1.11.4",
|
1170 |
+
"@formatjs/icu-skeleton-parser": "1.3.6",
|
1171 |
+
"tslib": "^2.1.0"
|
1172 |
+
}
|
1173 |
+
},
|
1174 |
+
"@formatjs/icu-skeleton-parser": {
|
1175 |
+
"version": "1.3.6",
|
1176 |
+
"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz",
|
1177 |
+
"integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==",
|
1178 |
+
"requires": {
|
1179 |
+
"@formatjs/ecma402-abstract": "1.11.4",
|
1180 |
+
"tslib": "^2.1.0"
|
1181 |
+
}
|
1182 |
+
},
|
1183 |
+
"@formatjs/intl-localematcher": {
|
1184 |
+
"version": "0.2.25",
|
1185 |
+
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
|
1186 |
+
"integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
|
1187 |
+
"requires": {
|
1188 |
+
"tslib": "^2.1.0"
|
1189 |
+
}
|
1190 |
+
},
|
1191 |
+
"@gradio/atoms": {
|
1192 |
+
"version": "0.5.3",
|
1193 |
+
"resolved": "https://registry.npmjs.org/@gradio/atoms/-/atoms-0.5.3.tgz",
|
1194 |
+
"integrity": "sha512-1HZgmhbAPzCYt6muyttrJi/P5zXTnD3kVMgneXuDd2j9qB21kSqzshmpnPcvDO3lO0vro55HuxgH22PJ1XHWqg==",
|
1195 |
+
"requires": {
|
1196 |
+
"@gradio/icons": "^0.3.3",
|
1197 |
+
"@gradio/utils": "^0.3.0"
|
1198 |
+
}
|
1199 |
+
},
|
1200 |
+
"@gradio/column": {
|
1201 |
+
"version": "0.1.0",
|
1202 |
+
"resolved": "https://registry.npmjs.org/@gradio/column/-/column-0.1.0.tgz",
|
1203 |
+
"integrity": "sha512-P24nqqVnMXBaDA1f/zSN5HZRho4PxP8Dq+7VltPHlmxIEiZYik2AJ4J0LeuIha34FDO0guu/16evdrpvGIUAfw=="
|
1204 |
+
},
|
1205 |
+
"@gradio/icons": {
|
1206 |
+
"version": "0.3.3",
|
1207 |
+
"resolved": "https://registry.npmjs.org/@gradio/icons/-/icons-0.3.3.tgz",
|
1208 |
+
"integrity": "sha512-UFTHpjzFJVwaRzZsdslWxnKUPGgtVeErmUGzrG9di4Vn0oHn1FgHt1Yr2SVu4lO3JI/r2u3H49tb6iax4U9HjA=="
|
1209 |
+
},
|
1210 |
+
"@gradio/statustracker": {
|
1211 |
+
"version": "0.4.8",
|
1212 |
+
"resolved": "https://registry.npmjs.org/@gradio/statustracker/-/statustracker-0.4.8.tgz",
|
1213 |
+
"integrity": "sha512-B/SN7T9BbcdzPrWYfKVxwy3e4u85MS+DAZSeuXgPbAL5n5QravCtvNW7zwkUWb0OlBloaglN3Y7K3M8l1hR5qg==",
|
1214 |
+
"requires": {
|
1215 |
+
"@gradio/atoms": "^0.5.3",
|
1216 |
+
"@gradio/column": "^0.1.0",
|
1217 |
+
"@gradio/icons": "^0.3.3",
|
1218 |
+
"@gradio/utils": "^0.3.0"
|
1219 |
+
}
|
1220 |
+
},
|
1221 |
+
"@gradio/theme": {
|
1222 |
+
"version": "0.2.0",
|
1223 |
+
"resolved": "https://registry.npmjs.org/@gradio/theme/-/theme-0.2.0.tgz",
|
1224 |
+
"integrity": "sha512-33c68Nk7oRXLn08OxPfjcPm7S4tXGOUV1I1bVgzdM2YV5o1QBOS1GEnXPZPu/CEYPePLMB6bsDwffrLEyLGWVQ=="
|
1225 |
+
},
|
1226 |
+
"@gradio/utils": {
|
1227 |
+
"version": "0.3.0",
|
1228 |
+
"resolved": "https://registry.npmjs.org/@gradio/utils/-/utils-0.3.0.tgz",
|
1229 |
+
"integrity": "sha512-VxP0h7UoWazkdSB875ChvTXWamBwMguuRc+8OyQFZjdj14lcqLEQuj54es3FDBpXOp5GMLFh48Q5FLLjYxMgSg==",
|
1230 |
+
"requires": {
|
1231 |
+
"@gradio/theme": "^0.2.0",
|
1232 |
+
"svelte-i18n": "^3.6.0"
|
1233 |
+
}
|
1234 |
+
},
|
1235 |
+
"@jridgewell/gen-mapping": {
|
1236 |
+
"version": "0.3.5",
|
1237 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
|
1238 |
+
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
|
1239 |
+
"peer": true,
|
1240 |
+
"requires": {
|
1241 |
+
"@jridgewell/set-array": "^1.2.1",
|
1242 |
+
"@jridgewell/sourcemap-codec": "^1.4.10",
|
1243 |
+
"@jridgewell/trace-mapping": "^0.3.24"
|
1244 |
+
}
|
1245 |
+
},
|
1246 |
+
"@jridgewell/resolve-uri": {
|
1247 |
+
"version": "3.1.2",
|
1248 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
1249 |
+
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
1250 |
+
"peer": true
|
1251 |
+
},
|
1252 |
+
"@jridgewell/set-array": {
|
1253 |
+
"version": "1.2.1",
|
1254 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
1255 |
+
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
1256 |
+
"peer": true
|
1257 |
+
},
|
1258 |
+
"@jridgewell/sourcemap-codec": {
|
1259 |
+
"version": "1.4.15",
|
1260 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
1261 |
+
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
|
1262 |
+
"peer": true
|
1263 |
+
},
|
1264 |
+
"@jridgewell/trace-mapping": {
|
1265 |
+
"version": "0.3.25",
|
1266 |
+
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
1267 |
+
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
1268 |
+
"peer": true,
|
1269 |
+
"requires": {
|
1270 |
+
"@jridgewell/resolve-uri": "^3.1.0",
|
1271 |
+
"@jridgewell/sourcemap-codec": "^1.4.14"
|
1272 |
+
}
|
1273 |
+
},
|
1274 |
+
"@types/estree": {
|
1275 |
+
"version": "1.0.5",
|
1276 |
+
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
1277 |
+
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
1278 |
+
"peer": true
|
1279 |
+
},
|
1280 |
+
"3dmol": {
|
1281 |
+
"version": "2.1.0",
|
1282 |
+
"resolved": "https://registry.npmjs.org/3dmol/-/3dmol-2.1.0.tgz",
|
1283 |
+
"integrity": "sha512-w1pfTR8+pDtOpxbGDrBWCbOXiTBqLhHO/OQ5xK3nD4trM0OTPCl8opaTl2iyCfwFRUbqmd2I4Qtjw7x9Boe+OA==",
|
1284 |
+
"requires": {
|
1285 |
+
"iobuffer": "^5.3.1",
|
1286 |
+
"netcdfjs": "^3.0.0",
|
1287 |
+
"pako": "^2.1.0",
|
1288 |
+
"upng-js": "^2.1.0"
|
1289 |
+
}
|
1290 |
+
},
|
1291 |
+
"acorn": {
|
1292 |
+
"version": "8.11.3",
|
1293 |
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
|
1294 |
+
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
|
1295 |
+
"peer": true
|
1296 |
+
},
|
1297 |
+
"aria-query": {
|
1298 |
+
"version": "5.3.0",
|
1299 |
+
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
|
1300 |
+
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
|
1301 |
+
"peer": true,
|
1302 |
+
"requires": {
|
1303 |
+
"dequal": "^2.0.3"
|
1304 |
+
}
|
1305 |
+
},
|
1306 |
+
"axobject-query": {
|
1307 |
+
"version": "4.0.0",
|
1308 |
+
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
|
1309 |
+
"integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
|
1310 |
+
"peer": true,
|
1311 |
+
"requires": {
|
1312 |
+
"dequal": "^2.0.3"
|
1313 |
+
}
|
1314 |
+
},
|
1315 |
+
"cli-color": {
|
1316 |
+
"version": "2.0.4",
|
1317 |
+
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
|
1318 |
+
"integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
|
1319 |
+
"requires": {
|
1320 |
+
"d": "^1.0.1",
|
1321 |
+
"es5-ext": "^0.10.64",
|
1322 |
+
"es6-iterator": "^2.0.3",
|
1323 |
+
"memoizee": "^0.4.15",
|
1324 |
+
"timers-ext": "^0.1.7"
|
1325 |
+
}
|
1326 |
+
},
|
1327 |
+
"code-red": {
|
1328 |
+
"version": "1.0.4",
|
1329 |
+
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
|
1330 |
+
"integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
|
1331 |
+
"peer": true,
|
1332 |
+
"requires": {
|
1333 |
+
"@jridgewell/sourcemap-codec": "^1.4.15",
|
1334 |
+
"@types/estree": "^1.0.1",
|
1335 |
+
"acorn": "^8.10.0",
|
1336 |
+
"estree-walker": "^3.0.3",
|
1337 |
+
"periscopic": "^3.1.0"
|
1338 |
+
}
|
1339 |
+
},
|
1340 |
+
"css-tree": {
|
1341 |
+
"version": "2.3.1",
|
1342 |
+
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
|
1343 |
+
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
|
1344 |
+
"peer": true,
|
1345 |
+
"requires": {
|
1346 |
+
"mdn-data": "2.0.30",
|
1347 |
+
"source-map-js": "^1.0.1"
|
1348 |
+
}
|
1349 |
+
},
|
1350 |
+
"d": {
|
1351 |
+
"version": "1.0.2",
|
1352 |
+
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
|
1353 |
+
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
|
1354 |
+
"requires": {
|
1355 |
+
"es5-ext": "^0.10.64",
|
1356 |
+
"type": "^2.7.2"
|
1357 |
+
}
|
1358 |
+
},
|
1359 |
+
"deepmerge": {
|
1360 |
+
"version": "4.3.1",
|
1361 |
+
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
|
1362 |
+
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="
|
1363 |
+
},
|
1364 |
+
"dequal": {
|
1365 |
+
"version": "2.0.3",
|
1366 |
+
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
1367 |
+
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
|
1368 |
+
"peer": true
|
1369 |
+
},
|
1370 |
+
"es5-ext": {
|
1371 |
+
"version": "0.10.64",
|
1372 |
+
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
|
1373 |
+
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
|
1374 |
+
"requires": {
|
1375 |
+
"es6-iterator": "^2.0.3",
|
1376 |
+
"es6-symbol": "^3.1.3",
|
1377 |
+
"esniff": "^2.0.1",
|
1378 |
+
"next-tick": "^1.1.0"
|
1379 |
+
}
|
1380 |
+
},
|
1381 |
+
"es6-iterator": {
|
1382 |
+
"version": "2.0.3",
|
1383 |
+
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
1384 |
+
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
1385 |
+
"requires": {
|
1386 |
+
"d": "1",
|
1387 |
+
"es5-ext": "^0.10.35",
|
1388 |
+
"es6-symbol": "^3.1.1"
|
1389 |
+
}
|
1390 |
+
},
|
1391 |
+
"es6-symbol": {
|
1392 |
+
"version": "3.1.4",
|
1393 |
+
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
|
1394 |
+
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
|
1395 |
+
"requires": {
|
1396 |
+
"d": "^1.0.2",
|
1397 |
+
"ext": "^1.7.0"
|
1398 |
+
}
|
1399 |
+
},
|
1400 |
+
"es6-weak-map": {
|
1401 |
+
"version": "2.0.3",
|
1402 |
+
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
|
1403 |
+
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
|
1404 |
+
"requires": {
|
1405 |
+
"d": "1",
|
1406 |
+
"es5-ext": "^0.10.46",
|
1407 |
+
"es6-iterator": "^2.0.3",
|
1408 |
+
"es6-symbol": "^3.1.1"
|
1409 |
+
}
|
1410 |
+
},
|
1411 |
+
"esbuild": {
|
1412 |
+
"version": "0.19.12",
|
1413 |
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
|
1414 |
+
"integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
|
1415 |
+
"requires": {
|
1416 |
+
"@esbuild/aix-ppc64": "0.19.12",
|
1417 |
+
"@esbuild/android-arm": "0.19.12",
|
1418 |
+
"@esbuild/android-arm64": "0.19.12",
|
1419 |
+
"@esbuild/android-x64": "0.19.12",
|
1420 |
+
"@esbuild/darwin-arm64": "0.19.12",
|
1421 |
+
"@esbuild/darwin-x64": "0.19.12",
|
1422 |
+
"@esbuild/freebsd-arm64": "0.19.12",
|
1423 |
+
"@esbuild/freebsd-x64": "0.19.12",
|
1424 |
+
"@esbuild/linux-arm": "0.19.12",
|
1425 |
+
"@esbuild/linux-arm64": "0.19.12",
|
1426 |
+
"@esbuild/linux-ia32": "0.19.12",
|
1427 |
+
"@esbuild/linux-loong64": "0.19.12",
|
1428 |
+
"@esbuild/linux-mips64el": "0.19.12",
|
1429 |
+
"@esbuild/linux-ppc64": "0.19.12",
|
1430 |
+
"@esbuild/linux-riscv64": "0.19.12",
|
1431 |
+
"@esbuild/linux-s390x": "0.19.12",
|
1432 |
+
"@esbuild/linux-x64": "0.19.12",
|
1433 |
+
"@esbuild/netbsd-x64": "0.19.12",
|
1434 |
+
"@esbuild/openbsd-x64": "0.19.12",
|
1435 |
+
"@esbuild/sunos-x64": "0.19.12",
|
1436 |
+
"@esbuild/win32-arm64": "0.19.12",
|
1437 |
+
"@esbuild/win32-ia32": "0.19.12",
|
1438 |
+
"@esbuild/win32-x64": "0.19.12"
|
1439 |
+
}
|
1440 |
+
},
|
1441 |
+
"esniff": {
|
1442 |
+
"version": "2.0.1",
|
1443 |
+
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
|
1444 |
+
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
|
1445 |
+
"requires": {
|
1446 |
+
"d": "^1.0.1",
|
1447 |
+
"es5-ext": "^0.10.62",
|
1448 |
+
"event-emitter": "^0.3.5",
|
1449 |
+
"type": "^2.7.2"
|
1450 |
+
}
|
1451 |
+
},
|
1452 |
+
"estree-walker": {
|
1453 |
+
"version": "3.0.3",
|
1454 |
+
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
|
1455 |
+
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
|
1456 |
+
"peer": true,
|
1457 |
+
"requires": {
|
1458 |
+
"@types/estree": "^1.0.0"
|
1459 |
+
}
|
1460 |
+
},
|
1461 |
+
"event-emitter": {
|
1462 |
+
"version": "0.3.5",
|
1463 |
+
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
|
1464 |
+
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
|
1465 |
+
"requires": {
|
1466 |
+
"d": "1",
|
1467 |
+
"es5-ext": "~0.10.14"
|
1468 |
+
}
|
1469 |
+
},
|
1470 |
+
"ext": {
|
1471 |
+
"version": "1.7.0",
|
1472 |
+
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
1473 |
+
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
1474 |
+
"requires": {
|
1475 |
+
"type": "^2.7.2"
|
1476 |
+
}
|
1477 |
+
},
|
1478 |
+
"globalyzer": {
|
1479 |
+
"version": "0.1.0",
|
1480 |
+
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
|
1481 |
+
"integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
|
1482 |
+
},
|
1483 |
+
"globrex": {
|
1484 |
+
"version": "0.1.2",
|
1485 |
+
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
|
1486 |
+
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
|
1487 |
+
},
|
1488 |
+
"intl-messageformat": {
|
1489 |
+
"version": "9.13.0",
|
1490 |
+
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
|
1491 |
+
"integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==",
|
1492 |
+
"requires": {
|
1493 |
+
"@formatjs/ecma402-abstract": "1.11.4",
|
1494 |
+
"@formatjs/fast-memoize": "1.2.1",
|
1495 |
+
"@formatjs/icu-messageformat-parser": "2.1.0",
|
1496 |
+
"tslib": "^2.1.0"
|
1497 |
+
}
|
1498 |
+
},
|
1499 |
+
"iobuffer": {
|
1500 |
+
"version": "5.3.2",
|
1501 |
+
"resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.3.2.tgz",
|
1502 |
+
"integrity": "sha512-kO3CjNfLZ9t+tHxAMd+Xk4v3D/31E91rMs1dHrm7ikEQrlZ8mLDbQ4z3tZfDM48zOkReas2jx8MWSAmN9+c8Fw=="
|
1503 |
+
},
|
1504 |
+
"is-promise": {
|
1505 |
+
"version": "2.2.2",
|
1506 |
+
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
1507 |
+
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
1508 |
+
},
|
1509 |
+
"is-reference": {
|
1510 |
+
"version": "3.0.2",
|
1511 |
+
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
|
1512 |
+
"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
|
1513 |
+
"peer": true,
|
1514 |
+
"requires": {
|
1515 |
+
"@types/estree": "*"
|
1516 |
+
}
|
1517 |
+
},
|
1518 |
+
"locate-character": {
|
1519 |
+
"version": "3.0.0",
|
1520 |
+
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
|
1521 |
+
"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
|
1522 |
+
"peer": true
|
1523 |
+
},
|
1524 |
+
"lru-queue": {
|
1525 |
+
"version": "0.1.0",
|
1526 |
+
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
|
1527 |
+
"integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
|
1528 |
+
"requires": {
|
1529 |
+
"es5-ext": "~0.10.2"
|
1530 |
+
}
|
1531 |
+
},
|
1532 |
+
"magic-string": {
|
1533 |
+
"version": "0.30.8",
|
1534 |
+
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
|
1535 |
+
"integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
|
1536 |
+
"peer": true,
|
1537 |
+
"requires": {
|
1538 |
+
"@jridgewell/sourcemap-codec": "^1.4.15"
|
1539 |
+
}
|
1540 |
+
},
|
1541 |
+
"mdn-data": {
|
1542 |
+
"version": "2.0.30",
|
1543 |
+
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
|
1544 |
+
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
|
1545 |
+
"peer": true
|
1546 |
+
},
|
1547 |
+
"memoizee": {
|
1548 |
+
"version": "0.4.15",
|
1549 |
+
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
|
1550 |
+
"integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
|
1551 |
+
"requires": {
|
1552 |
+
"d": "^1.0.1",
|
1553 |
+
"es5-ext": "^0.10.53",
|
1554 |
+
"es6-weak-map": "^2.0.3",
|
1555 |
+
"event-emitter": "^0.3.5",
|
1556 |
+
"is-promise": "^2.2.2",
|
1557 |
+
"lru-queue": "^0.1.0",
|
1558 |
+
"next-tick": "^1.1.0",
|
1559 |
+
"timers-ext": "^0.1.7"
|
1560 |
+
}
|
1561 |
+
},
|
1562 |
+
"mri": {
|
1563 |
+
"version": "1.2.0",
|
1564 |
+
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
|
1565 |
+
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="
|
1566 |
+
},
|
1567 |
+
"netcdfjs": {
|
1568 |
+
"version": "3.0.0",
|
1569 |
+
"resolved": "https://registry.npmjs.org/netcdfjs/-/netcdfjs-3.0.0.tgz",
|
1570 |
+
"integrity": "sha512-LOvT8KkC308qtpUkcBPiCMBtii7ZQCN6LxcVheWgyUeZ6DQWcpSRFV9dcVXLj/2eHZ/bre9tV5HTH4Sf93vrFw==",
|
1571 |
+
"requires": {
|
1572 |
+
"iobuffer": "^5.3.2"
|
1573 |
+
}
|
1574 |
+
},
|
1575 |
+
"next-tick": {
|
1576 |
+
"version": "1.1.0",
|
1577 |
+
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
1578 |
+
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
|
1579 |
+
},
|
1580 |
+
"pako": {
|
1581 |
+
"version": "2.1.0",
|
1582 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
|
1583 |
+
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
|
1584 |
+
},
|
1585 |
+
"periscopic": {
|
1586 |
+
"version": "3.1.0",
|
1587 |
+
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
|
1588 |
+
"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
|
1589 |
+
"peer": true,
|
1590 |
+
"requires": {
|
1591 |
+
"@types/estree": "^1.0.0",
|
1592 |
+
"estree-walker": "^3.0.0",
|
1593 |
+
"is-reference": "^3.0.0"
|
1594 |
+
}
|
1595 |
+
},
|
1596 |
+
"sade": {
|
1597 |
+
"version": "1.8.1",
|
1598 |
+
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
|
1599 |
+
"integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
|
1600 |
+
"requires": {
|
1601 |
+
"mri": "^1.1.0"
|
1602 |
+
}
|
1603 |
+
},
|
1604 |
+
"source-map-js": {
|
1605 |
+
"version": "1.2.0",
|
1606 |
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
1607 |
+
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
1608 |
+
"peer": true
|
1609 |
+
},
|
1610 |
+
"svelte": {
|
1611 |
+
"version": "4.2.12",
|
1612 |
+
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.12.tgz",
|
1613 |
+
"integrity": "sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==",
|
1614 |
+
"peer": true,
|
1615 |
+
"requires": {
|
1616 |
+
"@ampproject/remapping": "^2.2.1",
|
1617 |
+
"@jridgewell/sourcemap-codec": "^1.4.15",
|
1618 |
+
"@jridgewell/trace-mapping": "^0.3.18",
|
1619 |
+
"@types/estree": "^1.0.1",
|
1620 |
+
"acorn": "^8.9.0",
|
1621 |
+
"aria-query": "^5.3.0",
|
1622 |
+
"axobject-query": "^4.0.0",
|
1623 |
+
"code-red": "^1.0.3",
|
1624 |
+
"css-tree": "^2.3.1",
|
1625 |
+
"estree-walker": "^3.0.3",
|
1626 |
+
"is-reference": "^3.0.1",
|
1627 |
+
"locate-character": "^3.0.0",
|
1628 |
+
"magic-string": "^0.30.4",
|
1629 |
+
"periscopic": "^3.1.0"
|
1630 |
+
}
|
1631 |
+
},
|
1632 |
+
"svelte-i18n": {
|
1633 |
+
"version": "3.7.4",
|
1634 |
+
"resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.7.4.tgz",
|
1635 |
+
"integrity": "sha512-yGRCNo+eBT4cPuU7IVsYTYjxB7I2V8qgUZPlHnNctJj5IgbJgV78flsRzpjZ/8iUYZrS49oCt7uxlU3AZv/N5Q==",
|
1636 |
+
"requires": {
|
1637 |
+
"cli-color": "^2.0.3",
|
1638 |
+
"deepmerge": "^4.2.2",
|
1639 |
+
"esbuild": "^0.19.2",
|
1640 |
+
"estree-walker": "^2",
|
1641 |
+
"intl-messageformat": "^9.13.0",
|
1642 |
+
"sade": "^1.8.1",
|
1643 |
+
"tiny-glob": "^0.2.9"
|
1644 |
+
},
|
1645 |
+
"dependencies": {
|
1646 |
+
"estree-walker": {
|
1647 |
+
"version": "2.0.2",
|
1648 |
+
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
1649 |
+
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
1650 |
+
}
|
1651 |
+
}
|
1652 |
+
},
|
1653 |
+
"timers-ext": {
|
1654 |
+
"version": "0.1.7",
|
1655 |
+
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
|
1656 |
+
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
|
1657 |
+
"requires": {
|
1658 |
+
"es5-ext": "~0.10.46",
|
1659 |
+
"next-tick": "1"
|
1660 |
+
}
|
1661 |
+
},
|
1662 |
+
"tiny-glob": {
|
1663 |
+
"version": "0.2.9",
|
1664 |
+
"resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
|
1665 |
+
"integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
|
1666 |
+
"requires": {
|
1667 |
+
"globalyzer": "0.1.0",
|
1668 |
+
"globrex": "^0.1.2"
|
1669 |
+
}
|
1670 |
+
},
|
1671 |
+
"tslib": {
|
1672 |
+
"version": "2.6.2",
|
1673 |
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
1674 |
+
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
|
1675 |
+
},
|
1676 |
+
"type": {
|
1677 |
+
"version": "2.7.2",
|
1678 |
+
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
1679 |
+
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
1680 |
+
},
|
1681 |
+
"upng-js": {
|
1682 |
+
"version": "2.1.0",
|
1683 |
+
"resolved": "https://registry.npmjs.org/upng-js/-/upng-js-2.1.0.tgz",
|
1684 |
+
"integrity": "sha512-d3xzZzpMP64YkjP5pr8gNyvBt7dLk/uGI67EctzDuVp4lCZyVMo0aJO6l/VDlgbInJYDY6cnClLoBp29eKWI6g==",
|
1685 |
+
"requires": {
|
1686 |
+
"pako": "^1.0.5"
|
1687 |
+
},
|
1688 |
+
"dependencies": {
|
1689 |
+
"pako": {
|
1690 |
+
"version": "1.0.11",
|
1691 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
1692 |
+
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
1693 |
+
}
|
1694 |
+
}
|
1695 |
+
}
|
1696 |
+
}
|
1697 |
+
}
|
src/frontend/package.json
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "gradio_cofoldinginput",
|
3 |
+
"version": "0.4.12",
|
4 |
+
"description": "Gradio UI packages",
|
5 |
+
"type": "module",
|
6 |
+
"author": "",
|
7 |
+
"license": "ISC",
|
8 |
+
"private": false,
|
9 |
+
"main_changeset": true,
|
10 |
+
"main": "Index.svelte",
|
11 |
+
"exports": {
|
12 |
+
".": "./Index.svelte",
|
13 |
+
"./example": "./Example.svelte",
|
14 |
+
"./package.json": "./package.json"
|
15 |
+
},
|
16 |
+
"dependencies": {
|
17 |
+
"@gradio/atoms": "0.5.3",
|
18 |
+
"@gradio/icons": "0.3.3",
|
19 |
+
"@gradio/statustracker": "0.4.8",
|
20 |
+
"@gradio/utils": "0.3.0",
|
21 |
+
"3dmol": "^2.1.0"
|
22 |
+
}
|
23 |
+
}
|
src/frontend/shared/Accordion.svelte
ADDED
@@ -0,0 +1,1694 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
import { createEventDispatcher } from "svelte";
|
3 |
+
|
4 |
+
import Sequence from "./Sequence.svelte";
|
5 |
+
import SearchInput from "./SearchInput.svelte";
|
6 |
+
import Molecule from "./Molecule.svelte";
|
7 |
+
|
8 |
+
const dispatch = createEventDispatcher();
|
9 |
+
|
10 |
+
export let vals = [];
|
11 |
+
|
12 |
+
export let covMods = [];
|
13 |
+
|
14 |
+
let showCovModVals = [];
|
15 |
+
$: {
|
16 |
+
if (covMods) {
|
17 |
+
// iterate over each val
|
18 |
+
showCovModVals = vals.map((val) => {
|
19 |
+
// check if val is in covMods and return index in CovMods or null
|
20 |
+
return covMods.findIndex((covMod) => covMod.ligand === val.chain);
|
21 |
+
// if index is not -1 return true else false
|
22 |
+
|
23 |
+
// return covMods.some((covMod) => covMod.ligand === val.chain);
|
24 |
+
});
|
25 |
+
|
26 |
+
// dispatch("updateCovMod", covMods);
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
let labels = {
|
31 |
+
DNA: "NA sequence",
|
32 |
+
RNA: "NA sequence",
|
33 |
+
protein: "Protein sequence",
|
34 |
+
ligand: "Small molecule",
|
35 |
+
};
|
36 |
+
|
37 |
+
let colorCode = {
|
38 |
+
DNA: "bg-green-200 text-blue-800",
|
39 |
+
RNA: "bg-green-200 text-blue-800",
|
40 |
+
protein: "bg-blue-200 text-blue-800",
|
41 |
+
ligand: "bg-orange-200 text-blue-800",
|
42 |
+
};
|
43 |
+
|
44 |
+
let metals = [
|
45 |
+
"ZN",
|
46 |
+
"MG",
|
47 |
+
"CA",
|
48 |
+
"FE",
|
49 |
+
"NA",
|
50 |
+
"K",
|
51 |
+
"CL",
|
52 |
+
"CU",
|
53 |
+
"MN",
|
54 |
+
"CO",
|
55 |
+
"NI",
|
56 |
+
];
|
57 |
+
|
58 |
+
let proteinChains = [];
|
59 |
+
|
60 |
+
$: proteinChains = vals
|
61 |
+
.filter((val) => val.class === "protein")
|
62 |
+
.map((val) => val.chain);
|
63 |
+
|
64 |
+
let ligandChains = [];
|
65 |
+
|
66 |
+
$: ligandChains = vals
|
67 |
+
.filter((val) => val.class === "ligand")
|
68 |
+
.map((val) => val.chain);
|
69 |
+
|
70 |
+
let residue_atoms = {
|
71 |
+
A: ["C", "CA", "CB", "N", "O"],
|
72 |
+
R: ["C", "CA", "CB", "CG", "CD", "CZ", "N", "NE", "O", "NH1", "NH2"],
|
73 |
+
D: ["C", "CA", "CB", "CG", "N", "O", "OD1", "OD2"],
|
74 |
+
N: ["C", "CA", "CB", "CG", "N", "ND2", "O", "OD1"],
|
75 |
+
C: ["C", "CA", "CB", "N", "O", "SG"],
|
76 |
+
E: ["C", "CA", "CB", "CG", "CD", "N", "O", "OE1", "OE2"],
|
77 |
+
N: ["C", "CA", "CB", "CG", "CD", "N", "NE2", "O", "OE1"],
|
78 |
+
G: ["C", "CA", "N", "O"],
|
79 |
+
H: ["C", "CA", "CB", "CG", "CD2", "CE1", "N", "ND1", "NE2", "O"],
|
80 |
+
I: ["C", "CA", "CB", "CG1", "CG2", "CD1", "N", "O"],
|
81 |
+
L: ["C", "CA", "CB", "CG", "CD1", "CD2", "N", "O"],
|
82 |
+
K: ["C", "CA", "CB", "CG", "CD", "CE", "N", "NZ", "O"],
|
83 |
+
M: ["C", "CA", "CB", "CG", "CE", "N", "O", "SD"],
|
84 |
+
F: ["C", "CA", "CB", "CG", "CD1", "CD2", "CE1", "CE2", "CZ", "N", "O"],
|
85 |
+
P: ["C", "CA", "CB", "CG", "CD", "N", "O"],
|
86 |
+
S: ["C", "CA", "CB", "N", "O", "OG"],
|
87 |
+
T: ["C", "CA", "CB", "CG2", "N", "O", "OG1"],
|
88 |
+
W: [
|
89 |
+
"C",
|
90 |
+
"CA",
|
91 |
+
"CB",
|
92 |
+
"CG",
|
93 |
+
"CD1",
|
94 |
+
"CD2",
|
95 |
+
"CE2",
|
96 |
+
"CE3",
|
97 |
+
"CZ2",
|
98 |
+
"CZ3",
|
99 |
+
"CH2",
|
100 |
+
"N",
|
101 |
+
"NE1",
|
102 |
+
"O",
|
103 |
+
],
|
104 |
+
Y: [
|
105 |
+
"C",
|
106 |
+
"CA",
|
107 |
+
"CB",
|
108 |
+
"CG",
|
109 |
+
"CD1",
|
110 |
+
"CD2",
|
111 |
+
"CE1",
|
112 |
+
"CE2",
|
113 |
+
"CZ",
|
114 |
+
"N",
|
115 |
+
"O",
|
116 |
+
"OH",
|
117 |
+
],
|
118 |
+
V: ["C", "CA", "CB", "CG1", "CG2", "N", "O"],
|
119 |
+
};
|
120 |
+
|
121 |
+
let resmap = {
|
122 |
+
H: "HIS",
|
123 |
+
A: "ALA",
|
124 |
+
R: "ARG",
|
125 |
+
N: "ASN",
|
126 |
+
D: "ASP",
|
127 |
+
C: "CYS",
|
128 |
+
E: "GLU",
|
129 |
+
Q: "GLN",
|
130 |
+
G: "GLY",
|
131 |
+
H: "HIS",
|
132 |
+
I: "ILE",
|
133 |
+
L: "LEU",
|
134 |
+
K: "LYS",
|
135 |
+
M: "MET",
|
136 |
+
F: "PHE",
|
137 |
+
P: "PRO",
|
138 |
+
S: "SER",
|
139 |
+
T: "THR",
|
140 |
+
W: "TRP",
|
141 |
+
Y: "TYR",
|
142 |
+
V: "VAL",
|
143 |
+
};
|
144 |
+
|
145 |
+
function getResAtoms(covMod) {
|
146 |
+
// get sequence of matching protein chain
|
147 |
+
let seq = vals.find((val) => val.chain === covMod.protein).sequence;
|
148 |
+
|
149 |
+
//do something if sequence is too short
|
150 |
+
if (seq.length < covMod.residue) {
|
151 |
+
alert("Residue number is too high");
|
152 |
+
return [];
|
153 |
+
}
|
154 |
+
// get residue
|
155 |
+
let residue = seq[covMod.residue - 1];
|
156 |
+
// get atoms
|
157 |
+
return residue_atoms[residue];
|
158 |
+
}
|
159 |
+
|
160 |
+
function getResname(covMod) {
|
161 |
+
// get sequence of matching protein chain
|
162 |
+
let seq = vals.find((val) => val.chain === covMod.protein).sequence;
|
163 |
+
// get residue
|
164 |
+
let residue = seq[covMod.residue - 1];
|
165 |
+
// get atoms
|
166 |
+
return resmap[residue];
|
167 |
+
}
|
168 |
+
|
169 |
+
function updateMol(event) {
|
170 |
+
let index = event.detail.index;
|
171 |
+
covMods[index].mol = event.detail.mol;
|
172 |
+
covMods[index].attachmentIndex = event.detail.attachmentIndex;
|
173 |
+
covMods[index].deleteIndexes = event.detail.deleteIndexes;
|
174 |
+
|
175 |
+
dispatch("updateCovMod", covMods);
|
176 |
+
}
|
177 |
+
|
178 |
+
function handleMessage(event) {
|
179 |
+
// fetch sdf content from https://files.rcsb.org/ligands/download/{name}_ideal.sdf
|
180 |
+
// alert(event.detail.text);
|
181 |
+
|
182 |
+
fetch(
|
183 |
+
`https://files.rcsb.org/ligands/download/${event.detail.text}_ideal.sdf`
|
184 |
+
)
|
185 |
+
.then((response) => {
|
186 |
+
if (!response.ok) {
|
187 |
+
// Check if the status code is 200
|
188 |
+
throw new Error("Network response was not ok");
|
189 |
+
}
|
190 |
+
return response.text();
|
191 |
+
})
|
192 |
+
.then((data) => {
|
193 |
+
dispatch("updateVals", {
|
194 |
+
sdf: data,
|
195 |
+
index: event.detail.index,
|
196 |
+
close: true,
|
197 |
+
});
|
198 |
+
})
|
199 |
+
.catch((error) => {
|
200 |
+
alert("Error fetching sdf file");
|
201 |
+
});
|
202 |
+
}
|
203 |
+
</script>
|
204 |
+
|
205 |
+
<div id="accordion-collapse" data-accordion="collapse">
|
206 |
+
{#each vals as item, i}
|
207 |
+
<h2 id={`accordion-collapse-heading-${i}`}>
|
208 |
+
<button
|
209 |
+
type="button"
|
210 |
+
class="flex items-center justify-between w-full p-5 font-medium rtl:text-right text-gray-500 border border-gray-200 dark:border-gray-700 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 gap-3"
|
211 |
+
data-accordion-target={`#accordion-collapse-body-${i}`}
|
212 |
+
class:rounded-t-xl={i === 0}
|
213 |
+
class:rounded-b-xl={i == vals.length - 1}
|
214 |
+
class:border-b-0={i != vals.length - 1}
|
215 |
+
aria-expanded={item.open}
|
216 |
+
aria-controls={`accordion-collapse-body-${i}`}
|
217 |
+
on:click={() => (item.open = !item.open)}
|
218 |
+
>
|
219 |
+
<div>
|
220 |
+
<span
|
221 |
+
class="inline-flex items-center justify-center p-1 px-2 text-xs font-semibold rounded-full {colorCode[
|
222 |
+
item.class
|
223 |
+
]}"
|
224 |
+
>
|
225 |
+
{item.chain}
|
226 |
+
</span>
|
227 |
+
<span>{labels[item.class]}</span>
|
228 |
+
<span class="px-2 text-gray-800 font-bold">
|
229 |
+
{#if !item.open && item.class === "ligand"}
|
230 |
+
{#if metals.includes(item.name)}
|
231 |
+
{item.name}
|
232 |
+
{:else}
|
233 |
+
{item.smiles}
|
234 |
+
{/if}
|
235 |
+
{/if}
|
236 |
+
</span>
|
237 |
+
</div>
|
238 |
+
|
239 |
+
<div class="flex items-center space-x-2">
|
240 |
+
<svg
|
241 |
+
data-slot="icon"
|
242 |
+
fill="none"
|
243 |
+
stroke-width="3"
|
244 |
+
stroke="currentColor"
|
245 |
+
viewBox="0 0 24 24"
|
246 |
+
xmlns="http://www.w3.org/2000/svg"
|
247 |
+
aria-hidden="true"
|
248 |
+
class="w-4 h-4 text-red-800"
|
249 |
+
on:click={(e) => {
|
250 |
+
dispatch("removeVal", i);
|
251 |
+
}}
|
252 |
+
>
|
253 |
+
<path
|
254 |
+
stroke-linecap="round"
|
255 |
+
stroke-linejoin="round"
|
256 |
+
d="M6 18 18 6M6 6l12 12"
|
257 |
+
></path>
|
258 |
+
</svg>
|
259 |
+
|
260 |
+
<svg
|
261 |
+
data-accordion-icon
|
262 |
+
class="w-3 h-3 shrink-0"
|
263 |
+
class:rotate-180={item.open}
|
264 |
+
class:-rotate-90={!item.open}
|
265 |
+
aria-hidden="true"
|
266 |
+
xmlns="http://www.w3.org/2000/svg"
|
267 |
+
fill="none"
|
268 |
+
viewBox="0 0 10 6"
|
269 |
+
>
|
270 |
+
<path
|
271 |
+
stroke="currentColor"
|
272 |
+
stroke-linecap="round"
|
273 |
+
stroke-linejoin="round"
|
274 |
+
stroke-width="2"
|
275 |
+
d="M9 5 5 1 1 5"
|
276 |
+
/>
|
277 |
+
</svg>
|
278 |
+
</div>
|
279 |
+
</button>
|
280 |
+
</h2>
|
281 |
+
|
282 |
+
{#if item.open}
|
283 |
+
<div
|
284 |
+
id={`accordion-collapse-body-${i}`}
|
285 |
+
aria-labelledby={`accordion-collapse-heading-${i}`}
|
286 |
+
>
|
287 |
+
<div
|
288 |
+
class="p-5 border border-t-0 border-gray-200 dark:border-gray-700 dark:bg-gray-900"
|
289 |
+
>
|
290 |
+
{#if ["DNA", "RNA", "protein"].includes(item.class)}
|
291 |
+
<textarea
|
292 |
+
id="message"
|
293 |
+
rows="4"
|
294 |
+
class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
295 |
+
placeholder="MSAVGH..."
|
296 |
+
value={item.sequence}
|
297 |
+
on:input={(e) => {
|
298 |
+
// vals[i].sequence = e.target.value;
|
299 |
+
dispatch("updateVals", { sequence: e.target.value, index: i });
|
300 |
+
}}
|
301 |
+
></textarea>
|
302 |
+
{:else if item.class === "ligand"}
|
303 |
+
<textarea
|
304 |
+
rows="1"
|
305 |
+
class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
306 |
+
placeholder="SMILES like CCC ..."
|
307 |
+
value={item.smiles}
|
308 |
+
on:input={(e) => {
|
309 |
+
// vals[i].sequence = e.target.value;
|
310 |
+
dispatch("updateVals", { smiles: e.target.value, index: i });
|
311 |
+
}}
|
312 |
+
></textarea>
|
313 |
+
|
314 |
+
<div class="text-center text-gray-400 w-full my-2">- or -</div>
|
315 |
+
|
316 |
+
<SearchInput
|
317 |
+
database="rcsb-3ligand"
|
318 |
+
index={i}
|
319 |
+
on:triggerFetch={handleMessage}
|
320 |
+
/>
|
321 |
+
|
322 |
+
<div class="text-center text-gray-400 w-full my-2">- or -</div>
|
323 |
+
|
324 |
+
<textarea
|
325 |
+
rows="3"
|
326 |
+
class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
327 |
+
placeholder="SDF format 3D molecule ..."
|
328 |
+
value={item.sdf}
|
329 |
+
on:input={(e) => {
|
330 |
+
// vals[i].sequence = e.target.value;
|
331 |
+
dispatch("updateVals", { sdf: e.target.value, index: i });
|
332 |
+
}}
|
333 |
+
></textarea>
|
334 |
+
|
335 |
+
<div class="text-center text-gray-400 w-full my-2">- or -</div>
|
336 |
+
|
337 |
+
<div class="text-center text-gray-600 font-bold mb-2">
|
338 |
+
Metal ion
|
339 |
+
</div>
|
340 |
+
|
341 |
+
<div class="flex justify-center space-x-2">
|
342 |
+
{#each metals as metal}
|
343 |
+
<button
|
344 |
+
class="relative inline-flex items-center justify-center w-10 h-10 overflow-hidden rounded-full dark:bg-gray-600"
|
345 |
+
class:bg-blue-200={item.name === metal}
|
346 |
+
class:bg-violet-100={item.name !== metal}
|
347 |
+
on:click={() =>
|
348 |
+
dispatch("updateVals", { name: metal, index: i })}
|
349 |
+
>
|
350 |
+
<span class="font-medium text-gray-600 dark:text-gray-300"
|
351 |
+
>{metal}</span
|
352 |
+
>
|
353 |
+
</button>
|
354 |
+
{/each}
|
355 |
+
</div>
|
356 |
+
{/if}
|
357 |
+
|
358 |
+
<!-- <div class="text-center text-gray-400 w-full my-2">- or -</div>
|
359 |
+
|
360 |
+
<label
|
361 |
+
class="block mb-2 text-sm font-medium text-gray-900 dark:text-white hidden"
|
362 |
+
for="file_input">Upload file</label
|
363 |
+
>
|
364 |
+
<input
|
365 |
+
class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400"
|
366 |
+
aria-describedby="file_input_help"
|
367 |
+
id="file_input"
|
368 |
+
type="file"
|
369 |
+
/>
|
370 |
+
<p
|
371 |
+
class="mt-1 text-sm text-gray-500 dark:text-gray-300"
|
372 |
+
id="file_input_help"
|
373 |
+
>
|
374 |
+
.fasta files
|
375 |
+
</p> -->
|
376 |
+
</div>
|
377 |
+
</div>
|
378 |
+
{/if}
|
379 |
+
{#if !item.open}
|
380 |
+
{#if ["DNA", "RNA", "protein"].includes(item.class)}
|
381 |
+
<div
|
382 |
+
id={`accordion-collapse-body-${i}`}
|
383 |
+
aria-labelledby={`accordion-collapse-heading-${i}`}
|
384 |
+
>
|
385 |
+
<div
|
386 |
+
class="p-5 border border-t-0 border-gray-200 dark:border-gray-700"
|
387 |
+
class:border-b-0={i != vals.length - 1}
|
388 |
+
>
|
389 |
+
{#if item.sequence !== ""}
|
390 |
+
<Sequence seq={item.sequence} />
|
391 |
+
{/if}
|
392 |
+
</div>
|
393 |
+
</div>
|
394 |
+
{:else if item.class === "ligand"}
|
395 |
+
{#if item.sdf !== ""}
|
396 |
+
<div
|
397 |
+
class="p-5 border border-t-0 border-gray-200 dark:border-gray-700"
|
398 |
+
class:border-b-0={i != vals.length - 1}
|
399 |
+
>
|
400 |
+
<div class="relative">
|
401 |
+
<Molecule
|
402 |
+
molvalue={item.sdf}
|
403 |
+
showCovMod={showCovModVals[i]}
|
404 |
+
on:updateMol={updateMol}
|
405 |
+
/>
|
406 |
+
</div>
|
407 |
+
</div>
|
408 |
+
<!-- {:else if metals.includes(item.name)}
|
409 |
+
{item.name}
|
410 |
+
{:else}
|
411 |
+
{item.smiles} -->
|
412 |
+
{/if}
|
413 |
+
{/if}
|
414 |
+
{/if}
|
415 |
+
{/each}
|
416 |
+
|
417 |
+
<div class="p-5 border border-t-0 border-gray-200 dark:border-gray-700">
|
418 |
+
{#if covMods.length > 0}
|
419 |
+
<h4 class="text-center font-bold text-xl">Covalent Modification</h4>
|
420 |
+
{#each covMods as covMod, i}
|
421 |
+
<div class="flex p-10">
|
422 |
+
<div class="flex divide-x rounded border p-1">
|
423 |
+
<div class="w-3/5 flex-col px-2">
|
424 |
+
<div class="flex justify-center">
|
425 |
+
<span class="text-base font-medium text-gray-900">Protein</span>
|
426 |
+
</div>
|
427 |
+
<div class="grid grid-cols-4 font-bold">
|
428 |
+
<span>Chain</span>
|
429 |
+
<span>Residue</span>
|
430 |
+
<span>Atom</span>
|
431 |
+
<span>Chirality</span>
|
432 |
+
</div>
|
433 |
+
<div class="grid grid-cols-4">
|
434 |
+
<select
|
435 |
+
name=""
|
436 |
+
id=""
|
437 |
+
bind:value={covMods[i].protein}
|
438 |
+
on:change={() => dispatch("updateCovMod", covMods)}
|
439 |
+
>
|
440 |
+
{#each proteinChains as chain}
|
441 |
+
<option value={chain}>{chain}</option>
|
442 |
+
{/each}
|
443 |
+
</select>
|
444 |
+
<input
|
445 |
+
type="text"
|
446 |
+
placeholder="residue "
|
447 |
+
class="px-3"
|
448 |
+
value={covMod.residue}
|
449 |
+
on:input={(e) => {
|
450 |
+
covMods[i].residue = e.target.value;
|
451 |
+
dispatch("updateCovMod", covMods);
|
452 |
+
}}
|
453 |
+
/>
|
454 |
+
|
455 |
+
<select
|
456 |
+
name=""
|
457 |
+
id=""
|
458 |
+
bind:value={covMods[i].atom}
|
459 |
+
on:change={() => dispatch("updateCovMod", covMods)}
|
460 |
+
>
|
461 |
+
{#if covMod.residue != ""}
|
462 |
+
{#each getResAtoms(covMod) as atom}}
|
463 |
+
<option value={atom}>{getResname(covMod)}:{atom}</option>
|
464 |
+
{/each}
|
465 |
+
{:else}
|
466 |
+
<option disabled></option>
|
467 |
+
{/if}
|
468 |
+
</select>
|
469 |
+
|
470 |
+
<select
|
471 |
+
name=""
|
472 |
+
id=""
|
473 |
+
bind:value={covMods[i].protein_symmetry}
|
474 |
+
on:change={() => dispatch("updateCovMod", covMods)}
|
475 |
+
>
|
476 |
+
<option value="">no chirality defined</option>
|
477 |
+
<option value="CW">CW</option>
|
478 |
+
<option value="CCW">CCW</option>
|
479 |
+
</select>
|
480 |
+
</div>
|
481 |
+
</div>
|
482 |
+
|
483 |
+
<div class="w-2/5 px-2">
|
484 |
+
<div class="flex-col p-1">
|
485 |
+
<div class="flex justify-center">
|
486 |
+
<span
|
487 |
+
class="w-full whitespace-nowrap text-center text-base font-medium text-gray-900"
|
488 |
+
>Small molecule</span
|
489 |
+
>
|
490 |
+
</div>
|
491 |
+
<div class="grid grid-cols-3 font-bold">
|
492 |
+
<span>Chain</span>
|
493 |
+
<span title="click on atom in structure">Atom index </span>
|
494 |
+
|
495 |
+
<span>Chirality</span>
|
496 |
+
</div>
|
497 |
+
<div class="grid grid-cols-3">
|
498 |
+
<select
|
499 |
+
name=""
|
500 |
+
id=""
|
501 |
+
title="click on atom in structure"
|
502 |
+
bind:value={covMods[i].ligand}
|
503 |
+
on:change={() => dispatch("updateCovMod", covMods)}
|
504 |
+
>
|
505 |
+
{#each ligandChains as chain}
|
506 |
+
<option value={chain} selected={chain === covMod.ligand}
|
507 |
+
>{chain}</option
|
508 |
+
>
|
509 |
+
{/each}
|
510 |
+
</select>
|
511 |
+
<div>
|
512 |
+
{#if covMod.attachmentIndex}
|
513 |
+
<p class="font-mono">index {covMod.attachmentIndex}</p>
|
514 |
+
{:else}
|
515 |
+
<p class="font-mono">click on atom</p>
|
516 |
+
{/if}
|
517 |
+
</div>
|
518 |
+
|
519 |
+
<select
|
520 |
+
name=""
|
521 |
+
id=""
|
522 |
+
bind:value={covMods[i].ligand_symmetry}
|
523 |
+
on:change={() => dispatch("updateCovMod", covMods)}
|
524 |
+
>
|
525 |
+
<option value="">no chirality defined</option>
|
526 |
+
<option value="CW">CW</option>
|
527 |
+
<option value="CCW">CCW</option>
|
528 |
+
</select>
|
529 |
+
</div>
|
530 |
+
</div>
|
531 |
+
</div>
|
532 |
+
</div>
|
533 |
+
|
534 |
+
<div class="flex items-center p-2">
|
535 |
+
<svg
|
536 |
+
data-slot="icon"
|
537 |
+
fill="none"
|
538 |
+
stroke-width="2"
|
539 |
+
stroke="currentColor"
|
540 |
+
viewBox="0 0 24 24"
|
541 |
+
xmlns="http://www.w3.org/2000/svg"
|
542 |
+
aria-hidden="true"
|
543 |
+
class="w-8 h-8 text-red-800 cursor-pointer"
|
544 |
+
on:click={(e) => {
|
545 |
+
dispatch("removeCovMod", i);
|
546 |
+
}}
|
547 |
+
>
|
548 |
+
<path
|
549 |
+
stroke-linecap="round"
|
550 |
+
stroke-linejoin="round"
|
551 |
+
d="M6 18 18 6M6 6l12 12"
|
552 |
+
></path>
|
553 |
+
</svg>
|
554 |
+
</div>
|
555 |
+
</div>
|
556 |
+
{/each}
|
557 |
+
{/if}
|
558 |
+
</div>
|
559 |
+
<!--
|
560 |
+
<h2 id="accordion-collapse-heading-2">
|
561 |
+
<button
|
562 |
+
type="button"
|
563 |
+
class="flex items-center justify-between w-full p-5 font-medium rtl:text-right text-gray-500 border border-b-0 border-gray-200 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-800 dark:border-gray-700 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 gap-3"
|
564 |
+
data-accordion-target="#accordion-collapse-body-2"
|
565 |
+
aria-expanded="false"
|
566 |
+
aria-controls="accordion-collapse-body-2"
|
567 |
+
>
|
568 |
+
<div>
|
569 |
+
<span
|
570 |
+
class="inline-flex items-center justify-center p-1 px-2 text-xs font-semibold text-blue-800 bg-blue-200 rounded-full"
|
571 |
+
>
|
572 |
+
A
|
573 |
+
</span>
|
574 |
+
<span>NA sequence</span>
|
575 |
+
</div>
|
576 |
+
<svg
|
577 |
+
data-accordion-icon
|
578 |
+
class="w-3 h-3 -rotate-90 shrink-0"
|
579 |
+
aria-hidden="true"
|
580 |
+
xmlns="http://www.w3.org/2000/svg"
|
581 |
+
fill="none"
|
582 |
+
viewBox="0 0 10 6"
|
583 |
+
>
|
584 |
+
<path
|
585 |
+
stroke="currentColor"
|
586 |
+
stroke-linecap="round"
|
587 |
+
stroke-linejoin="round"
|
588 |
+
stroke-width="2"
|
589 |
+
d="M9 5 5 1 1 5"
|
590 |
+
/>
|
591 |
+
</svg>
|
592 |
+
</button>
|
593 |
+
<div class="px-2">
|
594 |
+
<Sequence />
|
595 |
+
</div>
|
596 |
+
</h2>
|
597 |
+
|
598 |
+
<div
|
599 |
+
id="accordion-collapse-body-2"
|
600 |
+
class="hidden"
|
601 |
+
aria-labelledby="accordion-collapse-heading-2"
|
602 |
+
>
|
603 |
+
<div
|
604 |
+
class="p-5 border border-b-0 border-gray-200 dark:border-gray-700"
|
605 |
+
></div>
|
606 |
+
</div>
|
607 |
+
<h2 id="accordion-collapse-heading-3">
|
608 |
+
<button
|
609 |
+
type="button"
|
610 |
+
class="flex items-center justify-between w-full p-5 font-medium rtl:text-right text-gray-500 border border-gray-200 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-800 dark:border-gray-700 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 gap-3"
|
611 |
+
data-accordion-target="#accordion-collapse-body-3"
|
612 |
+
aria-expanded="false"
|
613 |
+
aria-controls="accordion-collapse-body-3"
|
614 |
+
>
|
615 |
+
<div>
|
616 |
+
<span
|
617 |
+
class="inline-flex items-center justify-center p-1 px-2 text-xs font-semibold text-blue-800 bg-orange-200 rounded-full"
|
618 |
+
>
|
619 |
+
C
|
620 |
+
</span>
|
621 |
+
<span>Small molecule</span>
|
622 |
+
</div>
|
623 |
+
<svg
|
624 |
+
data-accordion-icon
|
625 |
+
class="w-3 h-3 rotate-180 shrink-0"
|
626 |
+
aria-hidden="true"
|
627 |
+
xmlns="http://www.w3.org/2000/svg"
|
628 |
+
fill="none"
|
629 |
+
viewBox="0 0 10 6"
|
630 |
+
>
|
631 |
+
<path
|
632 |
+
stroke="currentColor"
|
633 |
+
stroke-linecap="round"
|
634 |
+
stroke-linejoin="round"
|
635 |
+
stroke-width="2"
|
636 |
+
d="M9 5 5 1 1 5"
|
637 |
+
/>
|
638 |
+
</svg>
|
639 |
+
</button>
|
640 |
+
</h2>
|
641 |
+
<div
|
642 |
+
id="accordion-collapse-body-3"
|
643 |
+
aria-labelledby="accordion-collapse-heading-3"
|
644 |
+
>
|
645 |
+
<div class="p-5 border border-t-0 border-gray-200 dark:border-gray-700">
|
646 |
+
<label
|
647 |
+
class="block mb-2 text-sm font-medium text-gray-900 dark:text-white"
|
648 |
+
for="file_input">Upload file</label
|
649 |
+
>
|
650 |
+
<input
|
651 |
+
class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400"
|
652 |
+
aria-describedby="file_input_help"
|
653 |
+
id="file_input"
|
654 |
+
type="file"
|
655 |
+
/>
|
656 |
+
<p
|
657 |
+
class="mt-1 text-sm text-gray-500 dark:text-gray-300"
|
658 |
+
id="file_input_help"
|
659 |
+
>
|
660 |
+
SVG, PNG, JPG or GIF (MAX. 800x400px).
|
661 |
+
</p>
|
662 |
+
<div class="text-center text-gray-400 w-full my-2">- or -</div>
|
663 |
+
|
664 |
+
<textarea
|
665 |
+
id="message"
|
666 |
+
rows="4"
|
667 |
+
class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
668 |
+
placeholder="SMILES like CCC ..."
|
669 |
+
></textarea>
|
670 |
+
|
671 |
+
<div class="text-center text-gray-400 w-full my-2">- or -</div>
|
672 |
+
|
673 |
+
<SearchInput database="rcsb-3ligand" />
|
674 |
+
|
675 |
+
<div class="text-center text-gray-400 w-full my-2">- or -</div>
|
676 |
+
|
677 |
+
<div class="text-center text-gray-600 font-bold mb-2">Metal ion</div>
|
678 |
+
<div class="flex justify-center space-x-2">
|
679 |
+
<div
|
680 |
+
class="relative inline-flex items-center justify-center w-10 h-10 overflow-hidden bg-violet-100 rounded-full dark:bg-gray-600"
|
681 |
+
>
|
682 |
+
<span class="font-medium text-gray-600 dark:text-gray-300">ZN</span>
|
683 |
+
</div>
|
684 |
+
|
685 |
+
<div
|
686 |
+
class="relative inline-flex items-center justify-center w-10 h-10 overflow-hidden bg-green-100 rounded-full dark:bg-gray-600"
|
687 |
+
>
|
688 |
+
<span class="font-medium text-gray-600 dark:text-gray-300">MG</span>
|
689 |
+
</div>
|
690 |
+
|
691 |
+
<div
|
692 |
+
class="relative inline-flex items-center justify-center w-10 h-10 overflow-hidden bg-green-100 rounded-full dark:bg-gray-600"
|
693 |
+
>
|
694 |
+
<span class="font-medium text-gray-600 dark:text-gray-300">CA</span>
|
695 |
+
</div>
|
696 |
+
|
697 |
+
<div
|
698 |
+
class="relative inline-flex items-center justify-center w-10 h-10 overflow-hidden bg-violet-100 rounded-full dark:bg-gray-600"
|
699 |
+
>
|
700 |
+
<span class="font-medium text-gray-600 dark:text-gray-300">FE</span>
|
701 |
+
</div>
|
702 |
+
|
703 |
+
<div
|
704 |
+
class="relative inline-flex items-center justify-center w-10 h-10 overflow-hidden bg-yellow-100 rounded-full dark:bg-gray-600"
|
705 |
+
>
|
706 |
+
<span class="font-medium text-gray-600 dark:text-gray-300">NA</span>
|
707 |
+
</div>
|
708 |
+
</div>
|
709 |
+
</div>
|
710 |
+
</div>
|
711 |
+
|
712 |
+
-->
|
713 |
+
</div>
|
714 |
+
|
715 |
+
<style>
|
716 |
+
/*
|
717 |
+
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
|
718 |
+
*/
|
719 |
+
|
720 |
+
/*
|
721 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
722 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
723 |
+
*/
|
724 |
+
|
725 |
+
*,
|
726 |
+
::before,
|
727 |
+
::after {
|
728 |
+
box-sizing: border-box;
|
729 |
+
/* 1 */
|
730 |
+
border-width: 0;
|
731 |
+
/* 2 */
|
732 |
+
border-style: solid;
|
733 |
+
/* 2 */
|
734 |
+
border-color: #e5e7eb;
|
735 |
+
/* 2 */
|
736 |
+
}
|
737 |
+
|
738 |
+
::before,
|
739 |
+
::after {
|
740 |
+
--tw-content: "";
|
741 |
+
}
|
742 |
+
|
743 |
+
/*
|
744 |
+
1. Use a consistent sensible line-height in all browsers.
|
745 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
746 |
+
3. Use a more readable tab size.
|
747 |
+
4. Use the user's configured `sans` font-family by default.
|
748 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
749 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
750 |
+
7. Disable tap highlights on iOS
|
751 |
+
*/
|
752 |
+
|
753 |
+
html,
|
754 |
+
:host {
|
755 |
+
line-height: 1.5;
|
756 |
+
/* 1 */
|
757 |
+
-webkit-text-size-adjust: 100%;
|
758 |
+
/* 2 */
|
759 |
+
-moz-tab-size: 4;
|
760 |
+
/* 3 */
|
761 |
+
tab-size: 4;
|
762 |
+
/* 3 */
|
763 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
764 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
765 |
+
/* 4 */
|
766 |
+
font-feature-settings: normal;
|
767 |
+
/* 5 */
|
768 |
+
font-variation-settings: normal;
|
769 |
+
/* 6 */
|
770 |
+
-webkit-tap-highlight-color: transparent;
|
771 |
+
/* 7 */
|
772 |
+
}
|
773 |
+
|
774 |
+
/*
|
775 |
+
1. Remove the margin in all browsers.
|
776 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
777 |
+
*/
|
778 |
+
|
779 |
+
body {
|
780 |
+
margin: 0;
|
781 |
+
/* 1 */
|
782 |
+
line-height: inherit;
|
783 |
+
/* 2 */
|
784 |
+
}
|
785 |
+
|
786 |
+
/*
|
787 |
+
1. Add the correct height in Firefox.
|
788 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
789 |
+
3. Ensure horizontal rules are visible by default.
|
790 |
+
*/
|
791 |
+
|
792 |
+
hr {
|
793 |
+
height: 0;
|
794 |
+
/* 1 */
|
795 |
+
color: inherit;
|
796 |
+
/* 2 */
|
797 |
+
border-top-width: 1px;
|
798 |
+
/* 3 */
|
799 |
+
}
|
800 |
+
|
801 |
+
/*
|
802 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
803 |
+
*/
|
804 |
+
|
805 |
+
abbr:where([title]) {
|
806 |
+
text-decoration: underline dotted;
|
807 |
+
}
|
808 |
+
|
809 |
+
/*
|
810 |
+
Remove the default font size and weight for headings.
|
811 |
+
*/
|
812 |
+
|
813 |
+
h1,
|
814 |
+
h2,
|
815 |
+
h3,
|
816 |
+
h4,
|
817 |
+
h5,
|
818 |
+
h6 {
|
819 |
+
font-size: inherit;
|
820 |
+
font-weight: inherit;
|
821 |
+
}
|
822 |
+
|
823 |
+
/*
|
824 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
825 |
+
*/
|
826 |
+
|
827 |
+
a {
|
828 |
+
color: inherit;
|
829 |
+
text-decoration: inherit;
|
830 |
+
}
|
831 |
+
|
832 |
+
/*
|
833 |
+
Add the correct font weight in Edge and Safari.
|
834 |
+
*/
|
835 |
+
|
836 |
+
b,
|
837 |
+
strong {
|
838 |
+
font-weight: bolder;
|
839 |
+
}
|
840 |
+
|
841 |
+
/*
|
842 |
+
1. Use the user's configured `mono` font-family by default.
|
843 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
844 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
845 |
+
4. Correct the odd `em` font sizing in all browsers.
|
846 |
+
*/
|
847 |
+
|
848 |
+
code,
|
849 |
+
kbd,
|
850 |
+
samp,
|
851 |
+
pre {
|
852 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
853 |
+
"Liberation Mono", "Courier New", monospace;
|
854 |
+
/* 1 */
|
855 |
+
font-feature-settings: normal;
|
856 |
+
/* 2 */
|
857 |
+
font-variation-settings: normal;
|
858 |
+
/* 3 */
|
859 |
+
font-size: 1em;
|
860 |
+
/* 4 */
|
861 |
+
}
|
862 |
+
|
863 |
+
/*
|
864 |
+
Add the correct font size in all browsers.
|
865 |
+
*/
|
866 |
+
|
867 |
+
small {
|
868 |
+
font-size: 80%;
|
869 |
+
}
|
870 |
+
|
871 |
+
/*
|
872 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
873 |
+
*/
|
874 |
+
|
875 |
+
sub,
|
876 |
+
sup {
|
877 |
+
font-size: 75%;
|
878 |
+
line-height: 0;
|
879 |
+
position: relative;
|
880 |
+
vertical-align: baseline;
|
881 |
+
}
|
882 |
+
|
883 |
+
sub {
|
884 |
+
bottom: -0.25em;
|
885 |
+
}
|
886 |
+
|
887 |
+
sup {
|
888 |
+
top: -0.5em;
|
889 |
+
}
|
890 |
+
|
891 |
+
/*
|
892 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
893 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
894 |
+
3. Remove gaps between table borders by default.
|
895 |
+
*/
|
896 |
+
|
897 |
+
table {
|
898 |
+
text-indent: 0;
|
899 |
+
/* 1 */
|
900 |
+
border-color: inherit;
|
901 |
+
/* 2 */
|
902 |
+
border-collapse: collapse;
|
903 |
+
/* 3 */
|
904 |
+
}
|
905 |
+
|
906 |
+
/*
|
907 |
+
1. Change the font styles in all browsers.
|
908 |
+
2. Remove the margin in Firefox and Safari.
|
909 |
+
3. Remove default padding in all browsers.
|
910 |
+
*/
|
911 |
+
|
912 |
+
button,
|
913 |
+
input,
|
914 |
+
optgroup,
|
915 |
+
select,
|
916 |
+
textarea {
|
917 |
+
font-family: inherit;
|
918 |
+
/* 1 */
|
919 |
+
font-feature-settings: inherit;
|
920 |
+
/* 1 */
|
921 |
+
font-variation-settings: inherit;
|
922 |
+
/* 1 */
|
923 |
+
font-size: 100%;
|
924 |
+
/* 1 */
|
925 |
+
font-weight: inherit;
|
926 |
+
/* 1 */
|
927 |
+
line-height: inherit;
|
928 |
+
/* 1 */
|
929 |
+
letter-spacing: inherit;
|
930 |
+
/* 1 */
|
931 |
+
color: inherit;
|
932 |
+
/* 1 */
|
933 |
+
margin: 0;
|
934 |
+
/* 2 */
|
935 |
+
padding: 0;
|
936 |
+
/* 3 */
|
937 |
+
}
|
938 |
+
|
939 |
+
/*
|
940 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
941 |
+
*/
|
942 |
+
|
943 |
+
button,
|
944 |
+
select {
|
945 |
+
text-transform: none;
|
946 |
+
}
|
947 |
+
|
948 |
+
/*
|
949 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
950 |
+
2. Remove default button styles.
|
951 |
+
*/
|
952 |
+
|
953 |
+
button,
|
954 |
+
input:where([type="button"]),
|
955 |
+
input:where([type="reset"]),
|
956 |
+
input:where([type="submit"]) {
|
957 |
+
-webkit-appearance: button;
|
958 |
+
/* 1 */
|
959 |
+
background-color: transparent;
|
960 |
+
/* 2 */
|
961 |
+
background-image: none;
|
962 |
+
/* 2 */
|
963 |
+
}
|
964 |
+
|
965 |
+
/*
|
966 |
+
Use the modern Firefox focus style for all focusable elements.
|
967 |
+
*/
|
968 |
+
|
969 |
+
:-moz-focusring {
|
970 |
+
outline: auto;
|
971 |
+
}
|
972 |
+
|
973 |
+
/*
|
974 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
975 |
+
*/
|
976 |
+
|
977 |
+
:-moz-ui-invalid {
|
978 |
+
box-shadow: none;
|
979 |
+
}
|
980 |
+
|
981 |
+
/*
|
982 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
983 |
+
*/
|
984 |
+
|
985 |
+
progress {
|
986 |
+
vertical-align: baseline;
|
987 |
+
}
|
988 |
+
|
989 |
+
/*
|
990 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
991 |
+
*/
|
992 |
+
|
993 |
+
::-webkit-inner-spin-button,
|
994 |
+
::-webkit-outer-spin-button {
|
995 |
+
height: auto;
|
996 |
+
}
|
997 |
+
|
998 |
+
/*
|
999 |
+
1. Correct the odd appearance in Chrome and Safari.
|
1000 |
+
2. Correct the outline style in Safari.
|
1001 |
+
*/
|
1002 |
+
|
1003 |
+
[type="search"] {
|
1004 |
+
-webkit-appearance: textfield;
|
1005 |
+
/* 1 */
|
1006 |
+
outline-offset: -2px;
|
1007 |
+
/* 2 */
|
1008 |
+
}
|
1009 |
+
|
1010 |
+
/*
|
1011 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
1012 |
+
*/
|
1013 |
+
|
1014 |
+
::-webkit-search-decoration {
|
1015 |
+
-webkit-appearance: none;
|
1016 |
+
}
|
1017 |
+
|
1018 |
+
/*
|
1019 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
1020 |
+
2. Change font properties to `inherit` in Safari.
|
1021 |
+
*/
|
1022 |
+
|
1023 |
+
::-webkit-file-upload-button {
|
1024 |
+
-webkit-appearance: button;
|
1025 |
+
/* 1 */
|
1026 |
+
font: inherit;
|
1027 |
+
/* 2 */
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
/*
|
1031 |
+
Add the correct display in Chrome and Safari.
|
1032 |
+
*/
|
1033 |
+
|
1034 |
+
summary {
|
1035 |
+
display: list-item;
|
1036 |
+
}
|
1037 |
+
|
1038 |
+
/*
|
1039 |
+
Removes the default spacing and border for appropriate elements.
|
1040 |
+
*/
|
1041 |
+
|
1042 |
+
blockquote,
|
1043 |
+
dl,
|
1044 |
+
dd,
|
1045 |
+
h1,
|
1046 |
+
h2,
|
1047 |
+
h3,
|
1048 |
+
h4,
|
1049 |
+
h5,
|
1050 |
+
h6,
|
1051 |
+
hr,
|
1052 |
+
figure,
|
1053 |
+
p,
|
1054 |
+
pre {
|
1055 |
+
margin: 0;
|
1056 |
+
}
|
1057 |
+
|
1058 |
+
fieldset {
|
1059 |
+
margin: 0;
|
1060 |
+
padding: 0;
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
legend {
|
1064 |
+
padding: 0;
|
1065 |
+
}
|
1066 |
+
|
1067 |
+
ol,
|
1068 |
+
ul,
|
1069 |
+
menu {
|
1070 |
+
list-style: none;
|
1071 |
+
margin: 0;
|
1072 |
+
padding: 0;
|
1073 |
+
}
|
1074 |
+
|
1075 |
+
/*
|
1076 |
+
Reset default styling for dialogs.
|
1077 |
+
*/
|
1078 |
+
|
1079 |
+
dialog {
|
1080 |
+
padding: 0;
|
1081 |
+
}
|
1082 |
+
|
1083 |
+
/*
|
1084 |
+
Prevent resizing textareas horizontally by default.
|
1085 |
+
*/
|
1086 |
+
|
1087 |
+
textarea {
|
1088 |
+
resize: vertical;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
/*
|
1092 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
1093 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
1094 |
+
*/
|
1095 |
+
|
1096 |
+
input::placeholder,
|
1097 |
+
textarea::placeholder {
|
1098 |
+
opacity: 1;
|
1099 |
+
/* 1 */
|
1100 |
+
color: #9ca3af;
|
1101 |
+
/* 2 */
|
1102 |
+
}
|
1103 |
+
|
1104 |
+
/*
|
1105 |
+
Set the default cursor for buttons.
|
1106 |
+
*/
|
1107 |
+
|
1108 |
+
button,
|
1109 |
+
[role="button"] {
|
1110 |
+
cursor: pointer;
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
/*
|
1114 |
+
Make sure disabled buttons don't get the pointer cursor.
|
1115 |
+
*/
|
1116 |
+
|
1117 |
+
:disabled {
|
1118 |
+
cursor: default;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
/*
|
1122 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
1123 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
1124 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
1125 |
+
*/
|
1126 |
+
|
1127 |
+
img,
|
1128 |
+
svg,
|
1129 |
+
video,
|
1130 |
+
canvas,
|
1131 |
+
audio,
|
1132 |
+
iframe,
|
1133 |
+
embed,
|
1134 |
+
object {
|
1135 |
+
display: block;
|
1136 |
+
/* 1 */
|
1137 |
+
vertical-align: middle;
|
1138 |
+
/* 2 */
|
1139 |
+
}
|
1140 |
+
|
1141 |
+
/*
|
1142 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
1143 |
+
*/
|
1144 |
+
|
1145 |
+
img,
|
1146 |
+
video {
|
1147 |
+
max-width: 100%;
|
1148 |
+
height: auto;
|
1149 |
+
}
|
1150 |
+
|
1151 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
1152 |
+
|
1153 |
+
[hidden] {
|
1154 |
+
display: none;
|
1155 |
+
}
|
1156 |
+
|
1157 |
+
*,
|
1158 |
+
::before,
|
1159 |
+
::after {
|
1160 |
+
--tw-border-spacing-x: 0;
|
1161 |
+
--tw-border-spacing-y: 0;
|
1162 |
+
--tw-translate-x: 0;
|
1163 |
+
--tw-translate-y: 0;
|
1164 |
+
--tw-rotate: 0;
|
1165 |
+
--tw-skew-x: 0;
|
1166 |
+
--tw-skew-y: 0;
|
1167 |
+
--tw-scale-x: 1;
|
1168 |
+
--tw-scale-y: 1;
|
1169 |
+
--tw-pan-x: ;
|
1170 |
+
--tw-pan-y: ;
|
1171 |
+
--tw-pinch-zoom: ;
|
1172 |
+
--tw-scroll-snap-strictness: proximity;
|
1173 |
+
--tw-gradient-from-position: ;
|
1174 |
+
--tw-gradient-via-position: ;
|
1175 |
+
--tw-gradient-to-position: ;
|
1176 |
+
--tw-ordinal: ;
|
1177 |
+
--tw-slashed-zero: ;
|
1178 |
+
--tw-numeric-figure: ;
|
1179 |
+
--tw-numeric-spacing: ;
|
1180 |
+
--tw-numeric-fraction: ;
|
1181 |
+
--tw-ring-inset: ;
|
1182 |
+
--tw-ring-offset-width: 0px;
|
1183 |
+
--tw-ring-offset-color: #fff;
|
1184 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
1185 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
1186 |
+
--tw-ring-shadow: 0 0 #0000;
|
1187 |
+
--tw-shadow: 0 0 #0000;
|
1188 |
+
--tw-shadow-colored: 0 0 #0000;
|
1189 |
+
--tw-blur: ;
|
1190 |
+
--tw-brightness: ;
|
1191 |
+
--tw-contrast: ;
|
1192 |
+
--tw-grayscale: ;
|
1193 |
+
--tw-hue-rotate: ;
|
1194 |
+
--tw-invert: ;
|
1195 |
+
--tw-saturate: ;
|
1196 |
+
--tw-sepia: ;
|
1197 |
+
--tw-drop-shadow: ;
|
1198 |
+
--tw-backdrop-blur: ;
|
1199 |
+
--tw-backdrop-brightness: ;
|
1200 |
+
--tw-backdrop-contrast: ;
|
1201 |
+
--tw-backdrop-grayscale: ;
|
1202 |
+
--tw-backdrop-hue-rotate: ;
|
1203 |
+
--tw-backdrop-invert: ;
|
1204 |
+
--tw-backdrop-opacity: ;
|
1205 |
+
--tw-backdrop-saturate: ;
|
1206 |
+
--tw-backdrop-sepia: ;
|
1207 |
+
--tw-contain-size: ;
|
1208 |
+
--tw-contain-layout: ;
|
1209 |
+
--tw-contain-paint: ;
|
1210 |
+
--tw-contain-style:
|
1211 |
+
;
|
1212 |
+
}
|
1213 |
+
|
1214 |
+
::backdrop {
|
1215 |
+
--tw-border-spacing-x: 0;
|
1216 |
+
--tw-border-spacing-y: 0;
|
1217 |
+
--tw-translate-x: 0;
|
1218 |
+
--tw-translate-y: 0;
|
1219 |
+
--tw-rotate: 0;
|
1220 |
+
--tw-skew-x: 0;
|
1221 |
+
--tw-skew-y: 0;
|
1222 |
+
--tw-scale-x: 1;
|
1223 |
+
--tw-scale-y: 1;
|
1224 |
+
--tw-pan-x: ;
|
1225 |
+
--tw-pan-y: ;
|
1226 |
+
--tw-pinch-zoom: ;
|
1227 |
+
--tw-scroll-snap-strictness: proximity;
|
1228 |
+
--tw-gradient-from-position: ;
|
1229 |
+
--tw-gradient-via-position: ;
|
1230 |
+
--tw-gradient-to-position: ;
|
1231 |
+
--tw-ordinal: ;
|
1232 |
+
--tw-slashed-zero: ;
|
1233 |
+
--tw-numeric-figure: ;
|
1234 |
+
--tw-numeric-spacing: ;
|
1235 |
+
--tw-numeric-fraction: ;
|
1236 |
+
--tw-ring-inset: ;
|
1237 |
+
--tw-ring-offset-width: 0px;
|
1238 |
+
--tw-ring-offset-color: #fff;
|
1239 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
1240 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
1241 |
+
--tw-ring-shadow: 0 0 #0000;
|
1242 |
+
--tw-shadow: 0 0 #0000;
|
1243 |
+
--tw-shadow-colored: 0 0 #0000;
|
1244 |
+
--tw-blur: ;
|
1245 |
+
--tw-brightness: ;
|
1246 |
+
--tw-contrast: ;
|
1247 |
+
--tw-grayscale: ;
|
1248 |
+
--tw-hue-rotate: ;
|
1249 |
+
--tw-invert: ;
|
1250 |
+
--tw-saturate: ;
|
1251 |
+
--tw-sepia: ;
|
1252 |
+
--tw-drop-shadow: ;
|
1253 |
+
--tw-backdrop-blur: ;
|
1254 |
+
--tw-backdrop-brightness: ;
|
1255 |
+
--tw-backdrop-contrast: ;
|
1256 |
+
--tw-backdrop-grayscale: ;
|
1257 |
+
--tw-backdrop-hue-rotate: ;
|
1258 |
+
--tw-backdrop-invert: ;
|
1259 |
+
--tw-backdrop-opacity: ;
|
1260 |
+
--tw-backdrop-saturate: ;
|
1261 |
+
--tw-backdrop-sepia: ;
|
1262 |
+
--tw-contain-size: ;
|
1263 |
+
--tw-contain-layout: ;
|
1264 |
+
--tw-contain-paint: ;
|
1265 |
+
--tw-contain-style:
|
1266 |
+
;
|
1267 |
+
}
|
1268 |
+
|
1269 |
+
.collapse {
|
1270 |
+
visibility: collapse;
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
.relative {
|
1274 |
+
position: relative;
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
.my-2 {
|
1278 |
+
margin-top: 0.5rem;
|
1279 |
+
margin-bottom: 0.5rem;
|
1280 |
+
}
|
1281 |
+
|
1282 |
+
.mb-2 {
|
1283 |
+
margin-bottom: 0.5rem;
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
.mt-1 {
|
1287 |
+
margin-top: 0.25rem;
|
1288 |
+
}
|
1289 |
+
|
1290 |
+
.block {
|
1291 |
+
display: block;
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
.flex {
|
1295 |
+
display: flex;
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
.inline-flex {
|
1299 |
+
display: inline-flex;
|
1300 |
+
}
|
1301 |
+
|
1302 |
+
.grid {
|
1303 |
+
display: grid;
|
1304 |
+
}
|
1305 |
+
|
1306 |
+
.hidden {
|
1307 |
+
display: none;
|
1308 |
+
}
|
1309 |
+
|
1310 |
+
.h-10 {
|
1311 |
+
height: 2.5rem;
|
1312 |
+
}
|
1313 |
+
|
1314 |
+
.h-3 {
|
1315 |
+
height: 0.75rem;
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
.h-4 {
|
1319 |
+
height: 1rem;
|
1320 |
+
}
|
1321 |
+
|
1322 |
+
.w-10 {
|
1323 |
+
width: 2.5rem;
|
1324 |
+
}
|
1325 |
+
|
1326 |
+
.w-2\/5 {
|
1327 |
+
width: 40%;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
.w-3 {
|
1331 |
+
width: 0.75rem;
|
1332 |
+
}
|
1333 |
+
|
1334 |
+
.w-3\/5 {
|
1335 |
+
width: 60%;
|
1336 |
+
}
|
1337 |
+
|
1338 |
+
.w-4 {
|
1339 |
+
width: 1rem;
|
1340 |
+
}
|
1341 |
+
|
1342 |
+
.w-8 {
|
1343 |
+
width: 2rem;
|
1344 |
+
}
|
1345 |
+
|
1346 |
+
.w-full {
|
1347 |
+
width: 100%;
|
1348 |
+
}
|
1349 |
+
|
1350 |
+
.shrink-0 {
|
1351 |
+
flex-shrink: 0;
|
1352 |
+
}
|
1353 |
+
|
1354 |
+
.-rotate-90 {
|
1355 |
+
--tw-rotate: -90deg;
|
1356 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
1357 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
1358 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
1359 |
+
}
|
1360 |
+
|
1361 |
+
.rotate-180 {
|
1362 |
+
--tw-rotate: 180deg;
|
1363 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
1364 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
1365 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
1366 |
+
}
|
1367 |
+
|
1368 |
+
.cursor-pointer {
|
1369 |
+
cursor: pointer;
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
.grid-cols-3 {
|
1373 |
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
1374 |
+
}
|
1375 |
+
|
1376 |
+
.grid-cols-4 {
|
1377 |
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
.flex-col {
|
1381 |
+
flex-direction: column;
|
1382 |
+
}
|
1383 |
+
|
1384 |
+
.items-center {
|
1385 |
+
align-items: center;
|
1386 |
+
}
|
1387 |
+
|
1388 |
+
.justify-center {
|
1389 |
+
justify-content: center;
|
1390 |
+
}
|
1391 |
+
|
1392 |
+
.justify-between {
|
1393 |
+
justify-content: space-between;
|
1394 |
+
}
|
1395 |
+
|
1396 |
+
.gap-3 {
|
1397 |
+
gap: 0.75rem;
|
1398 |
+
}
|
1399 |
+
|
1400 |
+
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
1401 |
+
--tw-space-x-reverse: 0;
|
1402 |
+
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
1403 |
+
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
.divide-x > :not([hidden]) ~ :not([hidden]) {
|
1407 |
+
--tw-divide-x-reverse: 0;
|
1408 |
+
border-right-width: calc(1px * var(--tw-divide-x-reverse));
|
1409 |
+
border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
.overflow-hidden {
|
1413 |
+
overflow: hidden;
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
.whitespace-nowrap {
|
1417 |
+
white-space: nowrap;
|
1418 |
+
}
|
1419 |
+
|
1420 |
+
.rounded {
|
1421 |
+
border-radius: 0.25rem;
|
1422 |
+
}
|
1423 |
+
|
1424 |
+
.rounded-full {
|
1425 |
+
border-radius: 9999px;
|
1426 |
+
}
|
1427 |
+
|
1428 |
+
.rounded-lg {
|
1429 |
+
border-radius: 0.5rem;
|
1430 |
+
}
|
1431 |
+
|
1432 |
+
.border {
|
1433 |
+
border-width: 1px;
|
1434 |
+
}
|
1435 |
+
|
1436 |
+
.border-b-0 {
|
1437 |
+
border-bottom-width: 0px;
|
1438 |
+
}
|
1439 |
+
|
1440 |
+
.border-t-0 {
|
1441 |
+
border-top-width: 0px;
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
.border-gray-200 {
|
1445 |
+
--tw-border-opacity: 1;
|
1446 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
.border-gray-300 {
|
1450 |
+
--tw-border-opacity: 1;
|
1451 |
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
1452 |
+
}
|
1453 |
+
|
1454 |
+
.bg-blue-200 {
|
1455 |
+
--tw-bg-opacity: 1;
|
1456 |
+
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
|
1457 |
+
}
|
1458 |
+
|
1459 |
+
.bg-gray-50 {
|
1460 |
+
--tw-bg-opacity: 1;
|
1461 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
1462 |
+
}
|
1463 |
+
|
1464 |
+
.bg-green-100 {
|
1465 |
+
--tw-bg-opacity: 1;
|
1466 |
+
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
1467 |
+
}
|
1468 |
+
|
1469 |
+
.bg-orange-200 {
|
1470 |
+
--tw-bg-opacity: 1;
|
1471 |
+
background-color: rgb(254 215 170 / var(--tw-bg-opacity));
|
1472 |
+
}
|
1473 |
+
|
1474 |
+
.bg-violet-100 {
|
1475 |
+
--tw-bg-opacity: 1;
|
1476 |
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity));
|
1477 |
+
}
|
1478 |
+
|
1479 |
+
.bg-yellow-100 {
|
1480 |
+
--tw-bg-opacity: 1;
|
1481 |
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity));
|
1482 |
+
}
|
1483 |
+
|
1484 |
+
.p-1 {
|
1485 |
+
padding: 0.25rem;
|
1486 |
+
}
|
1487 |
+
|
1488 |
+
.p-10 {
|
1489 |
+
padding: 2.5rem;
|
1490 |
+
}
|
1491 |
+
|
1492 |
+
.p-2 {
|
1493 |
+
padding: 0.5rem;
|
1494 |
+
}
|
1495 |
+
|
1496 |
+
.p-2\.5 {
|
1497 |
+
padding: 0.625rem;
|
1498 |
+
}
|
1499 |
+
|
1500 |
+
.p-5 {
|
1501 |
+
padding: 1.25rem;
|
1502 |
+
}
|
1503 |
+
|
1504 |
+
.px-2 {
|
1505 |
+
padding-left: 0.5rem;
|
1506 |
+
padding-right: 0.5rem;
|
1507 |
+
}
|
1508 |
+
|
1509 |
+
.px-3 {
|
1510 |
+
padding-left: 0.75rem;
|
1511 |
+
padding-right: 0.75rem;
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
.text-center {
|
1515 |
+
text-align: center;
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
.font-mono {
|
1519 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
1520 |
+
"Liberation Mono", "Courier New", monospace;
|
1521 |
+
}
|
1522 |
+
|
1523 |
+
.text-base {
|
1524 |
+
font-size: 1rem;
|
1525 |
+
line-height: 1.5rem;
|
1526 |
+
}
|
1527 |
+
|
1528 |
+
.text-sm {
|
1529 |
+
font-size: 0.875rem;
|
1530 |
+
line-height: 1.25rem;
|
1531 |
+
}
|
1532 |
+
|
1533 |
+
.text-xl {
|
1534 |
+
font-size: 1.25rem;
|
1535 |
+
line-height: 1.75rem;
|
1536 |
+
}
|
1537 |
+
|
1538 |
+
.text-xs {
|
1539 |
+
font-size: 0.75rem;
|
1540 |
+
line-height: 1rem;
|
1541 |
+
}
|
1542 |
+
|
1543 |
+
.font-bold {
|
1544 |
+
font-weight: 700;
|
1545 |
+
}
|
1546 |
+
|
1547 |
+
.font-medium {
|
1548 |
+
font-weight: 500;
|
1549 |
+
}
|
1550 |
+
|
1551 |
+
.font-semibold {
|
1552 |
+
font-weight: 600;
|
1553 |
+
}
|
1554 |
+
|
1555 |
+
.text-blue-800 {
|
1556 |
+
--tw-text-opacity: 1;
|
1557 |
+
color: rgb(30 64 175 / var(--tw-text-opacity));
|
1558 |
+
}
|
1559 |
+
|
1560 |
+
.text-gray-400 {
|
1561 |
+
--tw-text-opacity: 1;
|
1562 |
+
color: rgb(156 163 175 / var(--tw-text-opacity));
|
1563 |
+
}
|
1564 |
+
|
1565 |
+
.text-gray-500 {
|
1566 |
+
--tw-text-opacity: 1;
|
1567 |
+
color: rgb(107 114 128 / var(--tw-text-opacity));
|
1568 |
+
}
|
1569 |
+
|
1570 |
+
.text-gray-600 {
|
1571 |
+
--tw-text-opacity: 1;
|
1572 |
+
color: rgb(75 85 99 / var(--tw-text-opacity));
|
1573 |
+
}
|
1574 |
+
|
1575 |
+
.text-gray-800 {
|
1576 |
+
--tw-text-opacity: 1;
|
1577 |
+
color: rgb(31 41 55 / var(--tw-text-opacity));
|
1578 |
+
}
|
1579 |
+
|
1580 |
+
.text-gray-900 {
|
1581 |
+
--tw-text-opacity: 1;
|
1582 |
+
color: rgb(17 24 39 / var(--tw-text-opacity));
|
1583 |
+
}
|
1584 |
+
|
1585 |
+
.text-red-800 {
|
1586 |
+
--tw-text-opacity: 1;
|
1587 |
+
color: rgb(153 27 27 / var(--tw-text-opacity));
|
1588 |
+
}
|
1589 |
+
|
1590 |
+
.hover\:bg-gray-100:hover {
|
1591 |
+
--tw-bg-opacity: 1;
|
1592 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1593 |
+
}
|
1594 |
+
|
1595 |
+
.focus\:border-blue-500:focus {
|
1596 |
+
--tw-border-opacity: 1;
|
1597 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
.focus\:outline-none:focus {
|
1601 |
+
outline: 2px solid transparent;
|
1602 |
+
outline-offset: 2px;
|
1603 |
+
}
|
1604 |
+
|
1605 |
+
.focus\:ring-4:focus {
|
1606 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1607 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1608 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1609 |
+
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1610 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1611 |
+
var(--tw-shadow, 0 0 #0000);
|
1612 |
+
}
|
1613 |
+
|
1614 |
+
.focus\:ring-blue-500:focus {
|
1615 |
+
--tw-ring-opacity: 1;
|
1616 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1617 |
+
}
|
1618 |
+
|
1619 |
+
.focus\:ring-gray-200:focus {
|
1620 |
+
--tw-ring-opacity: 1;
|
1621 |
+
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
1622 |
+
}
|
1623 |
+
|
1624 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1625 |
+
text-align: right;
|
1626 |
+
}
|
1627 |
+
|
1628 |
+
@media (prefers-color-scheme: dark) {
|
1629 |
+
.dark\:border-gray-600 {
|
1630 |
+
--tw-border-opacity: 1;
|
1631 |
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1632 |
+
}
|
1633 |
+
|
1634 |
+
.dark\:border-gray-700 {
|
1635 |
+
--tw-border-opacity: 1;
|
1636 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1637 |
+
}
|
1638 |
+
|
1639 |
+
.dark\:bg-gray-600 {
|
1640 |
+
--tw-bg-opacity: 1;
|
1641 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1642 |
+
}
|
1643 |
+
|
1644 |
+
.dark\:bg-gray-700 {
|
1645 |
+
--tw-bg-opacity: 1;
|
1646 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1647 |
+
}
|
1648 |
+
|
1649 |
+
.dark\:bg-gray-900 {
|
1650 |
+
--tw-bg-opacity: 1;
|
1651 |
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
|
1652 |
+
}
|
1653 |
+
|
1654 |
+
.dark\:text-gray-300 {
|
1655 |
+
--tw-text-opacity: 1;
|
1656 |
+
color: rgb(209 213 219 / var(--tw-text-opacity));
|
1657 |
+
}
|
1658 |
+
|
1659 |
+
.dark\:text-gray-400 {
|
1660 |
+
--tw-text-opacity: 1;
|
1661 |
+
color: rgb(156 163 175 / var(--tw-text-opacity));
|
1662 |
+
}
|
1663 |
+
|
1664 |
+
.dark\:text-white {
|
1665 |
+
--tw-text-opacity: 1;
|
1666 |
+
color: rgb(255 255 255 / var(--tw-text-opacity));
|
1667 |
+
}
|
1668 |
+
|
1669 |
+
.dark\:placeholder-gray-400::placeholder {
|
1670 |
+
--tw-placeholder-opacity: 1;
|
1671 |
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1672 |
+
}
|
1673 |
+
|
1674 |
+
.dark\:hover\:bg-gray-800:hover {
|
1675 |
+
--tw-bg-opacity: 1;
|
1676 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1677 |
+
}
|
1678 |
+
|
1679 |
+
.dark\:focus\:border-blue-500:focus {
|
1680 |
+
--tw-border-opacity: 1;
|
1681 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1682 |
+
}
|
1683 |
+
|
1684 |
+
.dark\:focus\:ring-blue-500:focus {
|
1685 |
+
--tw-ring-opacity: 1;
|
1686 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1687 |
+
}
|
1688 |
+
|
1689 |
+
.dark\:focus\:ring-gray-800:focus {
|
1690 |
+
--tw-ring-opacity: 1;
|
1691 |
+
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
|
1692 |
+
}
|
1693 |
+
}
|
1694 |
+
</style>
|
src/frontend/shared/Button.svelte
ADDED
@@ -0,0 +1,1438 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
import { createEventDispatcher } from "svelte";
|
3 |
+
|
4 |
+
const dispatch = createEventDispatcher();
|
5 |
+
export let vals = [];
|
6 |
+
function addNewChain(type) {
|
7 |
+
dispatch("addNewChain", {
|
8 |
+
type: type,
|
9 |
+
});
|
10 |
+
}
|
11 |
+
function addCovalentModification() {
|
12 |
+
dispatch("addCovalentModification");
|
13 |
+
}
|
14 |
+
|
15 |
+
let displayCovMod = false;
|
16 |
+
// check if vals contains at least one protein and one ligand with sdf set
|
17 |
+
$: {
|
18 |
+
displayCovMod =
|
19 |
+
vals.filter((val) => val.class === "protein" && val.sequence.length > 0)
|
20 |
+
.length > 0 &&
|
21 |
+
vals.filter((val) => val.class === "ligand" && val.sdf != "").length > 0;
|
22 |
+
}
|
23 |
+
</script>
|
24 |
+
|
25 |
+
<div>
|
26 |
+
<div class="flex justify-center mt-2">
|
27 |
+
<button
|
28 |
+
class="flex items-center space-x-2 block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
|
29 |
+
on:click={() => {
|
30 |
+
addNewChain("protein");
|
31 |
+
}}
|
32 |
+
>
|
33 |
+
<svg
|
34 |
+
data-slot="icon"
|
35 |
+
fill="none"
|
36 |
+
stroke-width="1.5"
|
37 |
+
stroke="currentColor"
|
38 |
+
viewBox="0 0 24 24"
|
39 |
+
xmlns="http://www.w3.org/2000/svg"
|
40 |
+
aria-hidden="true"
|
41 |
+
class="w-4 h-4"
|
42 |
+
>
|
43 |
+
<path
|
44 |
+
stroke-linecap="round"
|
45 |
+
stroke-linejoin="round"
|
46 |
+
d="M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
47 |
+
></path>
|
48 |
+
</svg>
|
49 |
+
|
50 |
+
<span> Protein</span></button
|
51 |
+
>
|
52 |
+
|
53 |
+
<button
|
54 |
+
class="flex items-center space-x-2 block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
|
55 |
+
on:click={() => {
|
56 |
+
addNewChain("DNA");
|
57 |
+
}}
|
58 |
+
>
|
59 |
+
<svg
|
60 |
+
data-slot="icon"
|
61 |
+
fill="none"
|
62 |
+
stroke-width="1.5"
|
63 |
+
stroke="currentColor"
|
64 |
+
viewBox="0 0 24 24"
|
65 |
+
xmlns="http://www.w3.org/2000/svg"
|
66 |
+
aria-hidden="true"
|
67 |
+
class="w-4 h-4"
|
68 |
+
>
|
69 |
+
<path
|
70 |
+
stroke-linecap="round"
|
71 |
+
stroke-linejoin="round"
|
72 |
+
d="M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
73 |
+
></path>
|
74 |
+
</svg>
|
75 |
+
|
76 |
+
<span> Nucleic acid</span></button
|
77 |
+
>
|
78 |
+
|
79 |
+
<button
|
80 |
+
class="flex items-center space-x-2 block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
|
81 |
+
on:click={() => {
|
82 |
+
addNewChain("ligand");
|
83 |
+
}}
|
84 |
+
>
|
85 |
+
<svg
|
86 |
+
data-slot="icon"
|
87 |
+
fill="none"
|
88 |
+
stroke-width="1.5"
|
89 |
+
stroke="currentColor"
|
90 |
+
viewBox="0 0 24 24"
|
91 |
+
xmlns="http://www.w3.org/2000/svg"
|
92 |
+
aria-hidden="true"
|
93 |
+
class="w-4 h-4"
|
94 |
+
>
|
95 |
+
<path
|
96 |
+
stroke-linecap="round"
|
97 |
+
stroke-linejoin="round"
|
98 |
+
d="M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
99 |
+
></path>
|
100 |
+
</svg>
|
101 |
+
|
102 |
+
<span> Small molecule</span></button
|
103 |
+
>
|
104 |
+
|
105 |
+
{#if displayCovMod}
|
106 |
+
<button
|
107 |
+
class="flex items-center space-x-2 block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
|
108 |
+
on:click={() => {
|
109 |
+
addCovalentModification();
|
110 |
+
}}
|
111 |
+
>
|
112 |
+
<svg
|
113 |
+
data-slot="icon"
|
114 |
+
fill="none"
|
115 |
+
stroke-width="1.5"
|
116 |
+
stroke="currentColor"
|
117 |
+
viewBox="0 0 24 24"
|
118 |
+
xmlns="http://www.w3.org/2000/svg"
|
119 |
+
aria-hidden="true"
|
120 |
+
class="w-4 h-4"
|
121 |
+
>
|
122 |
+
<path
|
123 |
+
stroke-linecap="round"
|
124 |
+
stroke-linejoin="round"
|
125 |
+
d="M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
126 |
+
></path>
|
127 |
+
</svg>
|
128 |
+
|
129 |
+
<span> Covalent modifcation</span></button
|
130 |
+
>
|
131 |
+
{/if}
|
132 |
+
</div>
|
133 |
+
</div>
|
134 |
+
|
135 |
+
<style>
|
136 |
+
/*
|
137 |
+
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
|
138 |
+
*/
|
139 |
+
|
140 |
+
/*
|
141 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
142 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
143 |
+
*/
|
144 |
+
|
145 |
+
*,
|
146 |
+
::before,
|
147 |
+
::after {
|
148 |
+
box-sizing: border-box;
|
149 |
+
/* 1 */
|
150 |
+
border-width: 0;
|
151 |
+
/* 2 */
|
152 |
+
border-style: solid;
|
153 |
+
/* 2 */
|
154 |
+
border-color: #e5e7eb;
|
155 |
+
/* 2 */
|
156 |
+
}
|
157 |
+
|
158 |
+
::before,
|
159 |
+
::after {
|
160 |
+
--tw-content: "";
|
161 |
+
}
|
162 |
+
|
163 |
+
/*
|
164 |
+
1. Use a consistent sensible line-height in all browsers.
|
165 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
166 |
+
3. Use a more readable tab size.
|
167 |
+
4. Use the user's configured `sans` font-family by default.
|
168 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
169 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
170 |
+
7. Disable tap highlights on iOS
|
171 |
+
*/
|
172 |
+
|
173 |
+
html,
|
174 |
+
:host {
|
175 |
+
line-height: 1.5;
|
176 |
+
/* 1 */
|
177 |
+
-webkit-text-size-adjust: 100%;
|
178 |
+
/* 2 */
|
179 |
+
-moz-tab-size: 4;
|
180 |
+
/* 3 */
|
181 |
+
tab-size: 4;
|
182 |
+
/* 3 */
|
183 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
184 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
185 |
+
/* 4 */
|
186 |
+
font-feature-settings: normal;
|
187 |
+
/* 5 */
|
188 |
+
font-variation-settings: normal;
|
189 |
+
/* 6 */
|
190 |
+
-webkit-tap-highlight-color: transparent;
|
191 |
+
/* 7 */
|
192 |
+
}
|
193 |
+
|
194 |
+
/*
|
195 |
+
1. Remove the margin in all browsers.
|
196 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
197 |
+
*/
|
198 |
+
|
199 |
+
body {
|
200 |
+
margin: 0;
|
201 |
+
/* 1 */
|
202 |
+
line-height: inherit;
|
203 |
+
/* 2 */
|
204 |
+
}
|
205 |
+
|
206 |
+
/*
|
207 |
+
1. Add the correct height in Firefox.
|
208 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
209 |
+
3. Ensure horizontal rules are visible by default.
|
210 |
+
*/
|
211 |
+
|
212 |
+
hr {
|
213 |
+
height: 0;
|
214 |
+
/* 1 */
|
215 |
+
color: inherit;
|
216 |
+
/* 2 */
|
217 |
+
border-top-width: 1px;
|
218 |
+
/* 3 */
|
219 |
+
}
|
220 |
+
|
221 |
+
/*
|
222 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
223 |
+
*/
|
224 |
+
|
225 |
+
abbr:where([title]) {
|
226 |
+
text-decoration: underline dotted;
|
227 |
+
}
|
228 |
+
|
229 |
+
/*
|
230 |
+
Remove the default font size and weight for headings.
|
231 |
+
*/
|
232 |
+
|
233 |
+
h1,
|
234 |
+
h2,
|
235 |
+
h3,
|
236 |
+
h4,
|
237 |
+
h5,
|
238 |
+
h6 {
|
239 |
+
font-size: inherit;
|
240 |
+
font-weight: inherit;
|
241 |
+
}
|
242 |
+
|
243 |
+
/*
|
244 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
245 |
+
*/
|
246 |
+
|
247 |
+
a {
|
248 |
+
color: inherit;
|
249 |
+
text-decoration: inherit;
|
250 |
+
}
|
251 |
+
|
252 |
+
/*
|
253 |
+
Add the correct font weight in Edge and Safari.
|
254 |
+
*/
|
255 |
+
|
256 |
+
b,
|
257 |
+
strong {
|
258 |
+
font-weight: bolder;
|
259 |
+
}
|
260 |
+
|
261 |
+
/*
|
262 |
+
1. Use the user's configured `mono` font-family by default.
|
263 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
264 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
265 |
+
4. Correct the odd `em` font sizing in all browsers.
|
266 |
+
*/
|
267 |
+
|
268 |
+
code,
|
269 |
+
kbd,
|
270 |
+
samp,
|
271 |
+
pre {
|
272 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
273 |
+
"Liberation Mono", "Courier New", monospace;
|
274 |
+
/* 1 */
|
275 |
+
font-feature-settings: normal;
|
276 |
+
/* 2 */
|
277 |
+
font-variation-settings: normal;
|
278 |
+
/* 3 */
|
279 |
+
font-size: 1em;
|
280 |
+
/* 4 */
|
281 |
+
}
|
282 |
+
|
283 |
+
/*
|
284 |
+
Add the correct font size in all browsers.
|
285 |
+
*/
|
286 |
+
|
287 |
+
small {
|
288 |
+
font-size: 80%;
|
289 |
+
}
|
290 |
+
|
291 |
+
/*
|
292 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
293 |
+
*/
|
294 |
+
|
295 |
+
sub,
|
296 |
+
sup {
|
297 |
+
font-size: 75%;
|
298 |
+
line-height: 0;
|
299 |
+
position: relative;
|
300 |
+
vertical-align: baseline;
|
301 |
+
}
|
302 |
+
|
303 |
+
sub {
|
304 |
+
bottom: -0.25em;
|
305 |
+
}
|
306 |
+
|
307 |
+
sup {
|
308 |
+
top: -0.5em;
|
309 |
+
}
|
310 |
+
|
311 |
+
/*
|
312 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
313 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
314 |
+
3. Remove gaps between table borders by default.
|
315 |
+
*/
|
316 |
+
|
317 |
+
table {
|
318 |
+
text-indent: 0;
|
319 |
+
/* 1 */
|
320 |
+
border-color: inherit;
|
321 |
+
/* 2 */
|
322 |
+
border-collapse: collapse;
|
323 |
+
/* 3 */
|
324 |
+
}
|
325 |
+
|
326 |
+
/*
|
327 |
+
1. Change the font styles in all browsers.
|
328 |
+
2. Remove the margin in Firefox and Safari.
|
329 |
+
3. Remove default padding in all browsers.
|
330 |
+
*/
|
331 |
+
|
332 |
+
button,
|
333 |
+
input,
|
334 |
+
optgroup,
|
335 |
+
select,
|
336 |
+
textarea {
|
337 |
+
font-family: inherit;
|
338 |
+
/* 1 */
|
339 |
+
font-feature-settings: inherit;
|
340 |
+
/* 1 */
|
341 |
+
font-variation-settings: inherit;
|
342 |
+
/* 1 */
|
343 |
+
font-size: 100%;
|
344 |
+
/* 1 */
|
345 |
+
font-weight: inherit;
|
346 |
+
/* 1 */
|
347 |
+
line-height: inherit;
|
348 |
+
/* 1 */
|
349 |
+
color: inherit;
|
350 |
+
/* 1 */
|
351 |
+
margin: 0;
|
352 |
+
/* 2 */
|
353 |
+
padding: 0;
|
354 |
+
/* 3 */
|
355 |
+
}
|
356 |
+
|
357 |
+
/*
|
358 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
359 |
+
*/
|
360 |
+
|
361 |
+
button,
|
362 |
+
select {
|
363 |
+
text-transform: none;
|
364 |
+
}
|
365 |
+
|
366 |
+
/*
|
367 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
368 |
+
2. Remove default button styles.
|
369 |
+
*/
|
370 |
+
|
371 |
+
button,
|
372 |
+
[type="button"],
|
373 |
+
[type="reset"],
|
374 |
+
[type="submit"] {
|
375 |
+
-webkit-appearance: button;
|
376 |
+
/* 1 */
|
377 |
+
background-color: transparent;
|
378 |
+
/* 2 */
|
379 |
+
background-image: none;
|
380 |
+
/* 2 */
|
381 |
+
}
|
382 |
+
|
383 |
+
/*
|
384 |
+
Use the modern Firefox focus style for all focusable elements.
|
385 |
+
*/
|
386 |
+
|
387 |
+
:-moz-focusring {
|
388 |
+
outline: auto;
|
389 |
+
}
|
390 |
+
|
391 |
+
/*
|
392 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
393 |
+
*/
|
394 |
+
|
395 |
+
:-moz-ui-invalid {
|
396 |
+
box-shadow: none;
|
397 |
+
}
|
398 |
+
|
399 |
+
/*
|
400 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
401 |
+
*/
|
402 |
+
|
403 |
+
progress {
|
404 |
+
vertical-align: baseline;
|
405 |
+
}
|
406 |
+
|
407 |
+
/*
|
408 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
409 |
+
*/
|
410 |
+
|
411 |
+
::-webkit-inner-spin-button,
|
412 |
+
::-webkit-outer-spin-button {
|
413 |
+
height: auto;
|
414 |
+
}
|
415 |
+
|
416 |
+
/*
|
417 |
+
1. Correct the odd appearance in Chrome and Safari.
|
418 |
+
2. Correct the outline style in Safari.
|
419 |
+
*/
|
420 |
+
|
421 |
+
[type="search"] {
|
422 |
+
-webkit-appearance: textfield;
|
423 |
+
/* 1 */
|
424 |
+
outline-offset: -2px;
|
425 |
+
/* 2 */
|
426 |
+
}
|
427 |
+
|
428 |
+
/*
|
429 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
430 |
+
*/
|
431 |
+
|
432 |
+
::-webkit-search-decoration {
|
433 |
+
-webkit-appearance: none;
|
434 |
+
}
|
435 |
+
|
436 |
+
/*
|
437 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
438 |
+
2. Change font properties to `inherit` in Safari.
|
439 |
+
*/
|
440 |
+
|
441 |
+
::-webkit-file-upload-button {
|
442 |
+
-webkit-appearance: button;
|
443 |
+
/* 1 */
|
444 |
+
font: inherit;
|
445 |
+
/* 2 */
|
446 |
+
}
|
447 |
+
|
448 |
+
/*
|
449 |
+
Add the correct display in Chrome and Safari.
|
450 |
+
*/
|
451 |
+
|
452 |
+
summary {
|
453 |
+
display: list-item;
|
454 |
+
}
|
455 |
+
|
456 |
+
/*
|
457 |
+
Removes the default spacing and border for appropriate elements.
|
458 |
+
*/
|
459 |
+
|
460 |
+
blockquote,
|
461 |
+
dl,
|
462 |
+
dd,
|
463 |
+
h1,
|
464 |
+
h2,
|
465 |
+
h3,
|
466 |
+
h4,
|
467 |
+
h5,
|
468 |
+
h6,
|
469 |
+
hr,
|
470 |
+
figure,
|
471 |
+
p,
|
472 |
+
pre {
|
473 |
+
margin: 0;
|
474 |
+
}
|
475 |
+
|
476 |
+
fieldset {
|
477 |
+
margin: 0;
|
478 |
+
padding: 0;
|
479 |
+
}
|
480 |
+
|
481 |
+
legend {
|
482 |
+
padding: 0;
|
483 |
+
}
|
484 |
+
|
485 |
+
ol,
|
486 |
+
ul,
|
487 |
+
menu {
|
488 |
+
list-style: none;
|
489 |
+
margin: 0;
|
490 |
+
padding: 0;
|
491 |
+
}
|
492 |
+
|
493 |
+
/*
|
494 |
+
Reset default styling for dialogs.
|
495 |
+
*/
|
496 |
+
|
497 |
+
dialog {
|
498 |
+
padding: 0;
|
499 |
+
}
|
500 |
+
|
501 |
+
/*
|
502 |
+
Prevent resizing textareas horizontally by default.
|
503 |
+
*/
|
504 |
+
|
505 |
+
textarea {
|
506 |
+
resize: vertical;
|
507 |
+
}
|
508 |
+
|
509 |
+
/*
|
510 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
511 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
512 |
+
*/
|
513 |
+
|
514 |
+
input::placeholder,
|
515 |
+
textarea::placeholder {
|
516 |
+
opacity: 1;
|
517 |
+
/* 1 */
|
518 |
+
color: #9ca3af;
|
519 |
+
/* 2 */
|
520 |
+
}
|
521 |
+
|
522 |
+
/*
|
523 |
+
Set the default cursor for buttons.
|
524 |
+
*/
|
525 |
+
|
526 |
+
button,
|
527 |
+
[role="button"] {
|
528 |
+
cursor: pointer;
|
529 |
+
}
|
530 |
+
|
531 |
+
/*
|
532 |
+
Make sure disabled buttons don't get the pointer cursor.
|
533 |
+
*/
|
534 |
+
|
535 |
+
:disabled {
|
536 |
+
cursor: default;
|
537 |
+
}
|
538 |
+
|
539 |
+
/*
|
540 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
541 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
542 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
543 |
+
*/
|
544 |
+
|
545 |
+
img,
|
546 |
+
svg,
|
547 |
+
video,
|
548 |
+
canvas,
|
549 |
+
audio,
|
550 |
+
iframe,
|
551 |
+
embed,
|
552 |
+
object {
|
553 |
+
display: block;
|
554 |
+
/* 1 */
|
555 |
+
vertical-align: middle;
|
556 |
+
/* 2 */
|
557 |
+
}
|
558 |
+
|
559 |
+
/*
|
560 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
561 |
+
*/
|
562 |
+
|
563 |
+
img,
|
564 |
+
video {
|
565 |
+
max-width: 100%;
|
566 |
+
height: auto;
|
567 |
+
}
|
568 |
+
|
569 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
570 |
+
|
571 |
+
[hidden] {
|
572 |
+
display: none;
|
573 |
+
}
|
574 |
+
|
575 |
+
*,
|
576 |
+
::before,
|
577 |
+
::after {
|
578 |
+
--tw-border-spacing-x: 0;
|
579 |
+
--tw-border-spacing-y: 0;
|
580 |
+
--tw-translate-x: 0;
|
581 |
+
--tw-translate-y: 0;
|
582 |
+
--tw-rotate: 0;
|
583 |
+
--tw-skew-x: 0;
|
584 |
+
--tw-skew-y: 0;
|
585 |
+
--tw-scale-x: 1;
|
586 |
+
--tw-scale-y: 1;
|
587 |
+
--tw-pan-x: ;
|
588 |
+
--tw-pan-y: ;
|
589 |
+
--tw-pinch-zoom: ;
|
590 |
+
--tw-scroll-snap-strictness: proximity;
|
591 |
+
--tw-gradient-from-position: ;
|
592 |
+
--tw-gradient-via-position: ;
|
593 |
+
--tw-gradient-to-position: ;
|
594 |
+
--tw-ordinal: ;
|
595 |
+
--tw-slashed-zero: ;
|
596 |
+
--tw-numeric-figure: ;
|
597 |
+
--tw-numeric-spacing: ;
|
598 |
+
--tw-numeric-fraction: ;
|
599 |
+
--tw-ring-inset: ;
|
600 |
+
--tw-ring-offset-width: 0px;
|
601 |
+
--tw-ring-offset-color: #fff;
|
602 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
603 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
604 |
+
--tw-ring-shadow: 0 0 #0000;
|
605 |
+
--tw-shadow: 0 0 #0000;
|
606 |
+
--tw-shadow-colored: 0 0 #0000;
|
607 |
+
--tw-blur: ;
|
608 |
+
--tw-brightness: ;
|
609 |
+
--tw-contrast: ;
|
610 |
+
--tw-grayscale: ;
|
611 |
+
--tw-hue-rotate: ;
|
612 |
+
--tw-invert: ;
|
613 |
+
--tw-saturate: ;
|
614 |
+
--tw-sepia: ;
|
615 |
+
--tw-drop-shadow: ;
|
616 |
+
--tw-backdrop-blur: ;
|
617 |
+
--tw-backdrop-brightness: ;
|
618 |
+
--tw-backdrop-contrast: ;
|
619 |
+
--tw-backdrop-grayscale: ;
|
620 |
+
--tw-backdrop-hue-rotate: ;
|
621 |
+
--tw-backdrop-invert: ;
|
622 |
+
--tw-backdrop-opacity: ;
|
623 |
+
--tw-backdrop-saturate: ;
|
624 |
+
--tw-backdrop-sepia: ;
|
625 |
+
}
|
626 |
+
|
627 |
+
::backdrop {
|
628 |
+
--tw-border-spacing-x: 0;
|
629 |
+
--tw-border-spacing-y: 0;
|
630 |
+
--tw-translate-x: 0;
|
631 |
+
--tw-translate-y: 0;
|
632 |
+
--tw-rotate: 0;
|
633 |
+
--tw-skew-x: 0;
|
634 |
+
--tw-skew-y: 0;
|
635 |
+
--tw-scale-x: 1;
|
636 |
+
--tw-scale-y: 1;
|
637 |
+
--tw-pan-x: ;
|
638 |
+
--tw-pan-y: ;
|
639 |
+
--tw-pinch-zoom: ;
|
640 |
+
--tw-scroll-snap-strictness: proximity;
|
641 |
+
--tw-gradient-from-position: ;
|
642 |
+
--tw-gradient-via-position: ;
|
643 |
+
--tw-gradient-to-position: ;
|
644 |
+
--tw-ordinal: ;
|
645 |
+
--tw-slashed-zero: ;
|
646 |
+
--tw-numeric-figure: ;
|
647 |
+
--tw-numeric-spacing: ;
|
648 |
+
--tw-numeric-fraction: ;
|
649 |
+
--tw-ring-inset: ;
|
650 |
+
--tw-ring-offset-width: 0px;
|
651 |
+
--tw-ring-offset-color: #fff;
|
652 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
653 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
654 |
+
--tw-ring-shadow: 0 0 #0000;
|
655 |
+
--tw-shadow: 0 0 #0000;
|
656 |
+
--tw-shadow-colored: 0 0 #0000;
|
657 |
+
--tw-blur: ;
|
658 |
+
--tw-brightness: ;
|
659 |
+
--tw-contrast: ;
|
660 |
+
--tw-grayscale: ;
|
661 |
+
--tw-hue-rotate: ;
|
662 |
+
--tw-invert: ;
|
663 |
+
--tw-saturate: ;
|
664 |
+
--tw-sepia: ;
|
665 |
+
--tw-drop-shadow: ;
|
666 |
+
--tw-backdrop-blur: ;
|
667 |
+
--tw-backdrop-brightness: ;
|
668 |
+
--tw-backdrop-contrast: ;
|
669 |
+
--tw-backdrop-grayscale: ;
|
670 |
+
--tw-backdrop-hue-rotate: ;
|
671 |
+
--tw-backdrop-invert: ;
|
672 |
+
--tw-backdrop-opacity: ;
|
673 |
+
--tw-backdrop-saturate: ;
|
674 |
+
--tw-backdrop-sepia: ;
|
675 |
+
}
|
676 |
+
|
677 |
+
.sr-only {
|
678 |
+
position: absolute;
|
679 |
+
width: 1px;
|
680 |
+
height: 1px;
|
681 |
+
padding: 0;
|
682 |
+
margin: -1px;
|
683 |
+
overflow: hidden;
|
684 |
+
clip: rect(0, 0, 0, 0);
|
685 |
+
white-space: nowrap;
|
686 |
+
border-width: 0;
|
687 |
+
}
|
688 |
+
|
689 |
+
.collapse {
|
690 |
+
visibility: collapse;
|
691 |
+
}
|
692 |
+
|
693 |
+
.absolute {
|
694 |
+
position: absolute;
|
695 |
+
}
|
696 |
+
|
697 |
+
.relative {
|
698 |
+
position: relative;
|
699 |
+
}
|
700 |
+
|
701 |
+
.inset-0 {
|
702 |
+
inset: 0px;
|
703 |
+
}
|
704 |
+
|
705 |
+
.end-0 {
|
706 |
+
inset-inline-end: 0px;
|
707 |
+
}
|
708 |
+
|
709 |
+
.top-0 {
|
710 |
+
top: 0px;
|
711 |
+
}
|
712 |
+
|
713 |
+
.z-10 {
|
714 |
+
z-index: 10;
|
715 |
+
}
|
716 |
+
|
717 |
+
.z-20 {
|
718 |
+
z-index: 20;
|
719 |
+
}
|
720 |
+
|
721 |
+
.mx-10 {
|
722 |
+
margin-left: 2.5rem;
|
723 |
+
margin-right: 2.5rem;
|
724 |
+
}
|
725 |
+
|
726 |
+
.mx-auto {
|
727 |
+
margin-left: auto;
|
728 |
+
margin-right: auto;
|
729 |
+
}
|
730 |
+
|
731 |
+
.my-2 {
|
732 |
+
margin-top: 0.5rem;
|
733 |
+
margin-bottom: 0.5rem;
|
734 |
+
}
|
735 |
+
|
736 |
+
.mb-10 {
|
737 |
+
margin-bottom: 2.5rem;
|
738 |
+
}
|
739 |
+
|
740 |
+
.mb-2 {
|
741 |
+
margin-bottom: 0.5rem;
|
742 |
+
}
|
743 |
+
|
744 |
+
.ms-2 {
|
745 |
+
margin-inline-start: 0.5rem;
|
746 |
+
}
|
747 |
+
|
748 |
+
.ms-2\.5 {
|
749 |
+
margin-inline-start: 0.625rem;
|
750 |
+
}
|
751 |
+
|
752 |
+
.ms-3 {
|
753 |
+
margin-inline-start: 0.75rem;
|
754 |
+
}
|
755 |
+
|
756 |
+
.mt-1 {
|
757 |
+
margin-top: 0.25rem;
|
758 |
+
}
|
759 |
+
|
760 |
+
.mt-6 {
|
761 |
+
margin-top: 1.5rem;
|
762 |
+
}
|
763 |
+
|
764 |
+
.block {
|
765 |
+
display: block;
|
766 |
+
}
|
767 |
+
|
768 |
+
.inline-block {
|
769 |
+
display: inline-block;
|
770 |
+
}
|
771 |
+
|
772 |
+
.inline {
|
773 |
+
display: inline;
|
774 |
+
}
|
775 |
+
|
776 |
+
.flex {
|
777 |
+
display: flex;
|
778 |
+
}
|
779 |
+
|
780 |
+
.inline-flex {
|
781 |
+
display: inline-flex;
|
782 |
+
}
|
783 |
+
|
784 |
+
.hidden {
|
785 |
+
display: none;
|
786 |
+
}
|
787 |
+
|
788 |
+
.h-10 {
|
789 |
+
height: 2.5rem;
|
790 |
+
}
|
791 |
+
|
792 |
+
.h-2 {
|
793 |
+
height: 0.5rem;
|
794 |
+
}
|
795 |
+
|
796 |
+
.h-2\.5 {
|
797 |
+
height: 0.625rem;
|
798 |
+
}
|
799 |
+
|
800 |
+
.h-3 {
|
801 |
+
height: 0.75rem;
|
802 |
+
}
|
803 |
+
|
804 |
+
.h-4 {
|
805 |
+
height: 1rem;
|
806 |
+
}
|
807 |
+
|
808 |
+
.h-6 {
|
809 |
+
height: 1.5rem;
|
810 |
+
}
|
811 |
+
|
812 |
+
.h-full {
|
813 |
+
height: 100%;
|
814 |
+
}
|
815 |
+
|
816 |
+
.min-h-screen {
|
817 |
+
min-height: 100vh;
|
818 |
+
}
|
819 |
+
|
820 |
+
.w-1\/3 {
|
821 |
+
width: 33.333333%;
|
822 |
+
}
|
823 |
+
|
824 |
+
.w-10 {
|
825 |
+
width: 2.5rem;
|
826 |
+
}
|
827 |
+
|
828 |
+
.w-2 {
|
829 |
+
width: 0.5rem;
|
830 |
+
}
|
831 |
+
|
832 |
+
.w-2\.5 {
|
833 |
+
width: 0.625rem;
|
834 |
+
}
|
835 |
+
|
836 |
+
.w-3 {
|
837 |
+
width: 0.75rem;
|
838 |
+
}
|
839 |
+
|
840 |
+
.w-4 {
|
841 |
+
width: 1rem;
|
842 |
+
}
|
843 |
+
|
844 |
+
.w-44 {
|
845 |
+
width: 11rem;
|
846 |
+
}
|
847 |
+
|
848 |
+
.w-6 {
|
849 |
+
width: 1.5rem;
|
850 |
+
}
|
851 |
+
|
852 |
+
.w-full {
|
853 |
+
width: 100%;
|
854 |
+
}
|
855 |
+
|
856 |
+
.max-w-lg {
|
857 |
+
max-width: 32rem;
|
858 |
+
}
|
859 |
+
|
860 |
+
.flex-shrink-0 {
|
861 |
+
flex-shrink: 0;
|
862 |
+
}
|
863 |
+
|
864 |
+
.shrink-0 {
|
865 |
+
flex-shrink: 0;
|
866 |
+
}
|
867 |
+
|
868 |
+
.-rotate-90 {
|
869 |
+
--tw-rotate: -90deg;
|
870 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
871 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
872 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
873 |
+
}
|
874 |
+
|
875 |
+
.rotate-180 {
|
876 |
+
--tw-rotate: 180deg;
|
877 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
878 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
879 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
880 |
+
}
|
881 |
+
|
882 |
+
.cursor-pointer {
|
883 |
+
cursor: pointer;
|
884 |
+
}
|
885 |
+
|
886 |
+
.flex-col {
|
887 |
+
flex-direction: column;
|
888 |
+
}
|
889 |
+
|
890 |
+
.items-center {
|
891 |
+
align-items: center;
|
892 |
+
}
|
893 |
+
|
894 |
+
.justify-center {
|
895 |
+
justify-content: center;
|
896 |
+
}
|
897 |
+
|
898 |
+
.justify-between {
|
899 |
+
justify-content: space-between;
|
900 |
+
}
|
901 |
+
|
902 |
+
.gap-3 {
|
903 |
+
gap: 0.75rem;
|
904 |
+
}
|
905 |
+
|
906 |
+
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
907 |
+
--tw-space-x-reverse: 0;
|
908 |
+
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
909 |
+
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
910 |
+
}
|
911 |
+
|
912 |
+
.divide-y > :not([hidden]) ~ :not([hidden]) {
|
913 |
+
--tw-divide-y-reverse: 0;
|
914 |
+
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
915 |
+
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
|
916 |
+
}
|
917 |
+
|
918 |
+
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
|
919 |
+
--tw-divide-opacity: 1;
|
920 |
+
border-color: rgb(243 244 246 / var(--tw-divide-opacity));
|
921 |
+
}
|
922 |
+
|
923 |
+
.overflow-hidden {
|
924 |
+
overflow: hidden;
|
925 |
+
}
|
926 |
+
|
927 |
+
.whitespace-nowrap {
|
928 |
+
white-space: nowrap;
|
929 |
+
}
|
930 |
+
|
931 |
+
.rounded-full {
|
932 |
+
border-radius: 9999px;
|
933 |
+
}
|
934 |
+
|
935 |
+
.rounded-lg {
|
936 |
+
border-radius: 0.5rem;
|
937 |
+
}
|
938 |
+
|
939 |
+
.rounded-e-lg {
|
940 |
+
border-start-end-radius: 0.5rem;
|
941 |
+
border-end-end-radius: 0.5rem;
|
942 |
+
}
|
943 |
+
|
944 |
+
.rounded-s-lg {
|
945 |
+
border-start-start-radius: 0.5rem;
|
946 |
+
border-end-start-radius: 0.5rem;
|
947 |
+
}
|
948 |
+
|
949 |
+
.rounded-t-xl {
|
950 |
+
border-top-left-radius: 0.75rem;
|
951 |
+
border-top-right-radius: 0.75rem;
|
952 |
+
}
|
953 |
+
|
954 |
+
.border {
|
955 |
+
border-width: 1px;
|
956 |
+
}
|
957 |
+
|
958 |
+
.border-b-0 {
|
959 |
+
border-bottom-width: 0px;
|
960 |
+
}
|
961 |
+
|
962 |
+
.border-s-2 {
|
963 |
+
border-inline-start-width: 2px;
|
964 |
+
}
|
965 |
+
|
966 |
+
.border-t-0 {
|
967 |
+
border-top-width: 0px;
|
968 |
+
}
|
969 |
+
|
970 |
+
.border-blue-700 {
|
971 |
+
--tw-border-opacity: 1;
|
972 |
+
border-color: rgb(29 78 216 / var(--tw-border-opacity));
|
973 |
+
}
|
974 |
+
|
975 |
+
.border-gray-200 {
|
976 |
+
--tw-border-opacity: 1;
|
977 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
978 |
+
}
|
979 |
+
|
980 |
+
.border-gray-300 {
|
981 |
+
--tw-border-opacity: 1;
|
982 |
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
983 |
+
}
|
984 |
+
|
985 |
+
.border-s-gray-50 {
|
986 |
+
--tw-border-opacity: 1;
|
987 |
+
border-inline-start-color: rgb(249 250 251 / var(--tw-border-opacity));
|
988 |
+
}
|
989 |
+
|
990 |
+
.bg-blue-200 {
|
991 |
+
--tw-bg-opacity: 1;
|
992 |
+
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
|
993 |
+
}
|
994 |
+
|
995 |
+
.bg-blue-700 {
|
996 |
+
--tw-bg-opacity: 1;
|
997 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
998 |
+
}
|
999 |
+
|
1000 |
+
.bg-gray-100 {
|
1001 |
+
--tw-bg-opacity: 1;
|
1002 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
.bg-gray-50 {
|
1006 |
+
--tw-bg-opacity: 1;
|
1007 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
1008 |
+
}
|
1009 |
+
|
1010 |
+
.bg-green-100 {
|
1011 |
+
--tw-bg-opacity: 1;
|
1012 |
+
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
.bg-green-200 {
|
1016 |
+
--tw-bg-opacity: 1;
|
1017 |
+
background-color: rgb(187 247 208 / var(--tw-bg-opacity));
|
1018 |
+
}
|
1019 |
+
|
1020 |
+
.bg-orange-200 {
|
1021 |
+
--tw-bg-opacity: 1;
|
1022 |
+
background-color: rgb(254 215 170 / var(--tw-bg-opacity));
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
.bg-violet-100 {
|
1026 |
+
--tw-bg-opacity: 1;
|
1027 |
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity));
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
.bg-white {
|
1031 |
+
--tw-bg-opacity: 1;
|
1032 |
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
.bg-yellow-100 {
|
1036 |
+
--tw-bg-opacity: 1;
|
1037 |
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity));
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
.bg-\[url\(\/img\/grid\.svg\)\] {
|
1041 |
+
background-image: url(/img/grid.svg);
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
.bg-center {
|
1045 |
+
background-position: center;
|
1046 |
+
}
|
1047 |
+
|
1048 |
+
.p-0 {
|
1049 |
+
padding: 0px;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
.p-0\.5 {
|
1053 |
+
padding: 0.125rem;
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
.p-1 {
|
1057 |
+
padding: 0.25rem;
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
.p-2 {
|
1061 |
+
padding: 0.5rem;
|
1062 |
+
}
|
1063 |
+
|
1064 |
+
.p-2\.5 {
|
1065 |
+
padding: 0.625rem;
|
1066 |
+
}
|
1067 |
+
|
1068 |
+
.p-5 {
|
1069 |
+
padding: 1.25rem;
|
1070 |
+
}
|
1071 |
+
|
1072 |
+
.px-2 {
|
1073 |
+
padding-left: 0.5rem;
|
1074 |
+
padding-right: 0.5rem;
|
1075 |
+
}
|
1076 |
+
|
1077 |
+
.px-4 {
|
1078 |
+
padding-left: 1rem;
|
1079 |
+
padding-right: 1rem;
|
1080 |
+
}
|
1081 |
+
|
1082 |
+
.px-5 {
|
1083 |
+
padding-left: 1.25rem;
|
1084 |
+
padding-right: 1.25rem;
|
1085 |
+
}
|
1086 |
+
|
1087 |
+
.px-6 {
|
1088 |
+
padding-left: 1.5rem;
|
1089 |
+
padding-right: 1.5rem;
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
.py-2 {
|
1093 |
+
padding-top: 0.5rem;
|
1094 |
+
padding-bottom: 0.5rem;
|
1095 |
+
}
|
1096 |
+
|
1097 |
+
.py-2\.5 {
|
1098 |
+
padding-top: 0.625rem;
|
1099 |
+
padding-bottom: 0.625rem;
|
1100 |
+
}
|
1101 |
+
|
1102 |
+
.py-6 {
|
1103 |
+
padding-top: 1.5rem;
|
1104 |
+
padding-bottom: 1.5rem;
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
.pb-2 {
|
1108 |
+
padding-bottom: 0.5rem;
|
1109 |
+
}
|
1110 |
+
|
1111 |
+
.pb-8 {
|
1112 |
+
padding-bottom: 2rem;
|
1113 |
+
}
|
1114 |
+
|
1115 |
+
.pt-10 {
|
1116 |
+
padding-top: 2.5rem;
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
.text-center {
|
1120 |
+
text-align: center;
|
1121 |
+
}
|
1122 |
+
|
1123 |
+
.text-sm {
|
1124 |
+
font-size: 0.875rem;
|
1125 |
+
line-height: 1.25rem;
|
1126 |
+
}
|
1127 |
+
|
1128 |
+
.text-xs {
|
1129 |
+
font-size: 0.75rem;
|
1130 |
+
line-height: 1rem;
|
1131 |
+
}
|
1132 |
+
|
1133 |
+
.font-bold {
|
1134 |
+
font-weight: 700;
|
1135 |
+
}
|
1136 |
+
|
1137 |
+
.font-medium {
|
1138 |
+
font-weight: 500;
|
1139 |
+
}
|
1140 |
+
|
1141 |
+
.font-semibold {
|
1142 |
+
font-weight: 600;
|
1143 |
+
}
|
1144 |
+
|
1145 |
+
.text-blue-800 {
|
1146 |
+
--tw-text-opacity: 1;
|
1147 |
+
color: rgb(30 64 175);
|
1148 |
+
}
|
1149 |
+
|
1150 |
+
.text-gray-400 {
|
1151 |
+
--tw-text-opacity: 1;
|
1152 |
+
color: rgb(156 163 175);
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
.text-gray-500 {
|
1156 |
+
--tw-text-opacity: 1;
|
1157 |
+
color: rgb(107 114 128);
|
1158 |
+
}
|
1159 |
+
|
1160 |
+
.text-gray-600 {
|
1161 |
+
--tw-text-opacity: 1;
|
1162 |
+
color: rgb(75 85 99);
|
1163 |
+
}
|
1164 |
+
|
1165 |
+
.text-gray-700 {
|
1166 |
+
--tw-text-opacity: 1;
|
1167 |
+
color: rgb(55 65 81);
|
1168 |
+
}
|
1169 |
+
|
1170 |
+
.text-gray-900 {
|
1171 |
+
--tw-text-opacity: 1;
|
1172 |
+
color: rgb(17 24 39);
|
1173 |
+
}
|
1174 |
+
|
1175 |
+
.text-white {
|
1176 |
+
--tw-text-opacity: 1;
|
1177 |
+
color: rgb(255 255 255);
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
.shadow {
|
1181 |
+
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
1182 |
+
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
|
1183 |
+
0 1px 2px -1px var(--tw-shadow-color);
|
1184 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1185 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
.shadow-xl {
|
1189 |
+
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
|
1190 |
+
0 8px 10px -6px rgb(0 0 0 / 0.1);
|
1191 |
+
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
|
1192 |
+
0 8px 10px -6px var(--tw-shadow-color);
|
1193 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1194 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1195 |
+
}
|
1196 |
+
|
1197 |
+
.ring-1 {
|
1198 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1199 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1200 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1201 |
+
calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1202 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1203 |
+
var(--tw-shadow, 0 0 #0000);
|
1204 |
+
}
|
1205 |
+
|
1206 |
+
.ring-gray-900\/5 {
|
1207 |
+
--tw-ring-color: rgb(17 24 39 / 0.05);
|
1208 |
+
}
|
1209 |
+
|
1210 |
+
.sequence_container {
|
1211 |
+
overflow-wrap: anywhere;
|
1212 |
+
counter-reset: sequence;
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
.sequence_container .sequence__chunk {
|
1216 |
+
display: inline-block;
|
1217 |
+
margin: 0.1rem 0 1rem 1rem;
|
1218 |
+
/* width: 10ch; */
|
1219 |
+
position: relative;
|
1220 |
+
white-space: nowrap;
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
.sequence_container .sequence__chunk:not(:last-child):before,
|
1224 |
+
.sequence_container .sequence__chunk--display-last:before {
|
1225 |
+
content: counter(sequence);
|
1226 |
+
counter-increment: sequence 10;
|
1227 |
+
position: absolute;
|
1228 |
+
top: -0.8em;
|
1229 |
+
right: 0;
|
1230 |
+
opacity: 0.5;
|
1231 |
+
font-weight: bold;
|
1232 |
+
}
|
1233 |
+
|
1234 |
+
.sequence-container .sequence__chunk::after {
|
1235 |
+
content: "";
|
1236 |
+
position: absolute;
|
1237 |
+
bottom: 0;
|
1238 |
+
left: 0;
|
1239 |
+
right: 0;
|
1240 |
+
transform-origin: left;
|
1241 |
+
transform: scaleX(0.1);
|
1242 |
+
box-shadow: var(--box-shadow);
|
1243 |
+
}
|
1244 |
+
|
1245 |
+
.sequence__chunk span {
|
1246 |
+
padding: 0 0.05rem;
|
1247 |
+
}
|
1248 |
+
|
1249 |
+
.hover\:bg-blue-800:hover {
|
1250 |
+
--tw-bg-opacity: 1;
|
1251 |
+
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
|
1252 |
+
}
|
1253 |
+
|
1254 |
+
.hover\:bg-gray-100:hover {
|
1255 |
+
--tw-bg-opacity: 1;
|
1256 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1257 |
+
}
|
1258 |
+
|
1259 |
+
.hover\:bg-gray-200:hover {
|
1260 |
+
--tw-bg-opacity: 1;
|
1261 |
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
1262 |
+
}
|
1263 |
+
|
1264 |
+
.hover\:font-bold:hover {
|
1265 |
+
font-weight: 700;
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
.focus\:border-blue-500:focus {
|
1269 |
+
--tw-border-opacity: 1;
|
1270 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
.focus\:outline-none:focus {
|
1274 |
+
outline: 2px solid transparent;
|
1275 |
+
outline-offset: 2px;
|
1276 |
+
}
|
1277 |
+
|
1278 |
+
.focus\:ring-4:focus {
|
1279 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1280 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1281 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1282 |
+
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1283 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1284 |
+
var(--tw-shadow, 0 0 #0000);
|
1285 |
+
}
|
1286 |
+
|
1287 |
+
.focus\:ring-blue-300:focus {
|
1288 |
+
--tw-ring-opacity: 1;
|
1289 |
+
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
1290 |
+
}
|
1291 |
+
|
1292 |
+
.focus\:ring-blue-500:focus {
|
1293 |
+
--tw-ring-opacity: 1;
|
1294 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
.focus\:ring-gray-100:focus {
|
1298 |
+
--tw-ring-opacity: 1;
|
1299 |
+
--tw-ring-color: rgb(243 244 246 / var(--tw-ring-opacity));
|
1300 |
+
}
|
1301 |
+
|
1302 |
+
.focus\:ring-gray-200:focus {
|
1303 |
+
--tw-ring-opacity: 1;
|
1304 |
+
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
1305 |
+
}
|
1306 |
+
|
1307 |
+
@media (min-width: 640px) {
|
1308 |
+
.sm\:mx-auto {
|
1309 |
+
margin-left: auto;
|
1310 |
+
margin-right: auto;
|
1311 |
+
}
|
1312 |
+
|
1313 |
+
.sm\:rounded-lg {
|
1314 |
+
border-radius: 0.5rem;
|
1315 |
+
}
|
1316 |
+
|
1317 |
+
.sm\:px-10 {
|
1318 |
+
padding-left: 2.5rem;
|
1319 |
+
padding-right: 2.5rem;
|
1320 |
+
}
|
1321 |
+
|
1322 |
+
.sm\:py-12 {
|
1323 |
+
padding-top: 3rem;
|
1324 |
+
padding-bottom: 3rem;
|
1325 |
+
}
|
1326 |
+
}
|
1327 |
+
|
1328 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1329 |
+
text-align: right;
|
1330 |
+
}
|
1331 |
+
|
1332 |
+
@media (prefers-color-scheme: dark) {
|
1333 |
+
.dark\:border-gray-600 {
|
1334 |
+
--tw-border-opacity: 1;
|
1335 |
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1336 |
+
}
|
1337 |
+
|
1338 |
+
.dark\:border-gray-700 {
|
1339 |
+
--tw-border-opacity: 1;
|
1340 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1341 |
+
}
|
1342 |
+
|
1343 |
+
.dark\:border-s-gray-700 {
|
1344 |
+
--tw-border-opacity: 1;
|
1345 |
+
border-inline-start-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1346 |
+
}
|
1347 |
+
|
1348 |
+
.dark\:bg-blue-600 {
|
1349 |
+
--tw-bg-opacity: 1;
|
1350 |
+
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
.dark\:bg-gray-600 {
|
1354 |
+
--tw-bg-opacity: 1;
|
1355 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
.dark\:bg-gray-700 {
|
1359 |
+
--tw-bg-opacity: 1;
|
1360 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1361 |
+
}
|
1362 |
+
|
1363 |
+
.dark\:bg-gray-900 {
|
1364 |
+
--tw-bg-opacity: 1;
|
1365 |
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
|
1366 |
+
}
|
1367 |
+
|
1368 |
+
.dark\:text-gray-200 {
|
1369 |
+
--tw-text-opacity: 1;
|
1370 |
+
color: rgb(229 231 235);
|
1371 |
+
}
|
1372 |
+
|
1373 |
+
.dark\:text-gray-300 {
|
1374 |
+
--tw-text-opacity: 1;
|
1375 |
+
color: rgb(209 213 219);
|
1376 |
+
}
|
1377 |
+
|
1378 |
+
.dark\:text-gray-400 {
|
1379 |
+
--tw-text-opacity: 1;
|
1380 |
+
color: rgb(156 163 175);
|
1381 |
+
}
|
1382 |
+
|
1383 |
+
.dark\:text-white {
|
1384 |
+
--tw-text-opacity: 1;
|
1385 |
+
color: rgb(255 255 255);
|
1386 |
+
}
|
1387 |
+
|
1388 |
+
.dark\:placeholder-gray-400::placeholder {
|
1389 |
+
--tw-placeholder-opacity: 1;
|
1390 |
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1391 |
+
}
|
1392 |
+
|
1393 |
+
.dark\:hover\:bg-blue-700:hover {
|
1394 |
+
--tw-bg-opacity: 1;
|
1395 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
.dark\:hover\:bg-gray-600:hover {
|
1399 |
+
--tw-bg-opacity: 1;
|
1400 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1401 |
+
}
|
1402 |
+
|
1403 |
+
.dark\:hover\:bg-gray-800:hover {
|
1404 |
+
--tw-bg-opacity: 1;
|
1405 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1406 |
+
}
|
1407 |
+
|
1408 |
+
.dark\:hover\:text-white:hover {
|
1409 |
+
--tw-text-opacity: 1;
|
1410 |
+
color: rgb(255 255 255);
|
1411 |
+
}
|
1412 |
+
|
1413 |
+
.dark\:focus\:border-blue-500:focus {
|
1414 |
+
--tw-border-opacity: 1;
|
1415 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1416 |
+
}
|
1417 |
+
|
1418 |
+
.dark\:focus\:ring-blue-500:focus {
|
1419 |
+
--tw-ring-opacity: 1;
|
1420 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1421 |
+
}
|
1422 |
+
|
1423 |
+
.dark\:focus\:ring-blue-800:focus {
|
1424 |
+
--tw-ring-opacity: 1;
|
1425 |
+
--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
|
1426 |
+
}
|
1427 |
+
|
1428 |
+
.dark\:focus\:ring-gray-700:focus {
|
1429 |
+
--tw-ring-opacity: 1;
|
1430 |
+
--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity));
|
1431 |
+
}
|
1432 |
+
|
1433 |
+
.dark\:focus\:ring-gray-800:focus {
|
1434 |
+
--tw-ring-opacity: 1;
|
1435 |
+
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
|
1436 |
+
}
|
1437 |
+
}
|
1438 |
+
</style>
|
src/frontend/shared/Molecule.svelte
ADDED
@@ -0,0 +1,1029 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
import { createEventDispatcher, afterUpdate } from "svelte";
|
3 |
+
|
4 |
+
const dispatch = createEventDispatcher();
|
5 |
+
import Dmol from "3dmol";
|
6 |
+
|
7 |
+
// export let whichCovMod = 0;
|
8 |
+
|
9 |
+
let viewer = null;
|
10 |
+
|
11 |
+
let attachmentIndex = null;
|
12 |
+
let deleteIndexes = [];
|
13 |
+
|
14 |
+
let mode = "attach";
|
15 |
+
|
16 |
+
function updateReps(viewer) {
|
17 |
+
viewer.setStyle({ stick: {} });
|
18 |
+
if (showCovMod > -1) {
|
19 |
+
if (attachmentIndex !== null) {
|
20 |
+
viewer.addStyle(
|
21 |
+
{ index: attachmentIndex },
|
22 |
+
{ sphere: { color: "blue", scale: 0.5 } }
|
23 |
+
);
|
24 |
+
}
|
25 |
+
|
26 |
+
viewer.addStyle(
|
27 |
+
{ index: deleteIndexes },
|
28 |
+
{ sphere: { color: "red", scale: 0.5 } }
|
29 |
+
);
|
30 |
+
|
31 |
+
dispatch("updateMol", {
|
32 |
+
attachmentIndex: attachmentIndex,
|
33 |
+
deleteIndexes: deleteIndexes,
|
34 |
+
index: showCovMod,
|
35 |
+
mol: viewer.exportJSON(),
|
36 |
+
});
|
37 |
+
}
|
38 |
+
}
|
39 |
+
function initializeMoleculeViewer(molecule, container) {
|
40 |
+
let viewer = Dmol.createViewer(container, {});
|
41 |
+
viewer.addModel(molecule, "sdf");
|
42 |
+
updateReps(viewer);
|
43 |
+
viewer.setBackgroundColor("white");
|
44 |
+
viewer.zoomTo();
|
45 |
+
|
46 |
+
viewer
|
47 |
+
.getModel(0)
|
48 |
+
.setClickable({}, true, function (atom, viewer, event, container) {
|
49 |
+
if (showCovMod > -1) {
|
50 |
+
if (mode === "attach") {
|
51 |
+
attachmentIndex = atom.serial;
|
52 |
+
} else {
|
53 |
+
if (deleteIndexes.includes(atom.serial)) {
|
54 |
+
deleteIndexes = deleteIndexes.filter(
|
55 |
+
(index) => index !== atom.serial
|
56 |
+
);
|
57 |
+
} else {
|
58 |
+
deleteIndexes.push(atom.serial);
|
59 |
+
}
|
60 |
+
deleteIndexes = deleteIndexes;
|
61 |
+
updateReps(viewer);
|
62 |
+
}
|
63 |
+
}
|
64 |
+
});
|
65 |
+
viewer.render();
|
66 |
+
|
67 |
+
return viewer;
|
68 |
+
}
|
69 |
+
export let molvalue = "";
|
70 |
+
export let showCovMod = -1;
|
71 |
+
let molcontainer = null;
|
72 |
+
afterUpdate(() => {
|
73 |
+
viewer = initializeMoleculeViewer(molvalue, molcontainer);
|
74 |
+
});
|
75 |
+
</script>
|
76 |
+
|
77 |
+
<div class="mol-wrapper">
|
78 |
+
<div class="relative">
|
79 |
+
<div class="mol-canvas" bind:this={molcontainer}></div>
|
80 |
+
</div>
|
81 |
+
<div class="flex flex-col justify-center">
|
82 |
+
{#if showCovMod > -1}
|
83 |
+
<div class="w-full text-center text-lg mb-2">Covalent Modification</div>
|
84 |
+
<div class="flex items-center space-x-2 justify-center mb-2 text-xs">
|
85 |
+
<svg
|
86 |
+
data-slot="icon"
|
87 |
+
fill="none"
|
88 |
+
stroke-width="1.5"
|
89 |
+
class="w-4 h-4"
|
90 |
+
stroke="currentColor"
|
91 |
+
viewBox="0 0 24 24"
|
92 |
+
xmlns="http://www.w3.org/2000/svg"
|
93 |
+
aria-hidden="true"
|
94 |
+
>
|
95 |
+
<path
|
96 |
+
stroke-linecap="round"
|
97 |
+
stroke-linejoin="round"
|
98 |
+
d="M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672Zm-7.518-.267A8.25 8.25 0 1 1 20.25 10.5M8.288 14.212A5.25 5.25 0 1 1 17.25 10.5"
|
99 |
+
></path>
|
100 |
+
</svg> <span class="px-2">click on atoms in viewer to select them</span>
|
101 |
+
</div>
|
102 |
+
<div
|
103 |
+
class="flex rounded-full border-2 border-gray-200 bg-gray-200 text-sm leading-none text-gray-500"
|
104 |
+
>
|
105 |
+
<button
|
106 |
+
class="w-1/2 flex items-center rounded-l-full px-4 py-2 transition-colors duration-300 ease-in hover:text-orange-600 focus:text-orange-600 focus:outline-none"
|
107 |
+
id="attach"
|
108 |
+
class:active={mode === "attach"}
|
109 |
+
on:click={() => (mode = "attach")}
|
110 |
+
>
|
111 |
+
<svg
|
112 |
+
xmlns="http://www.w3.org/2000/svg"
|
113 |
+
fill="none"
|
114 |
+
viewBox="0 0 24 24"
|
115 |
+
stroke-width="1.5"
|
116 |
+
stroke="currentColor"
|
117 |
+
class="mx-1 h-4 w-4"
|
118 |
+
>
|
119 |
+
<path
|
120 |
+
stroke-linecap="round"
|
121 |
+
stroke-linejoin="round"
|
122 |
+
d="m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13"
|
123 |
+
/>
|
124 |
+
</svg>
|
125 |
+
|
126 |
+
<span>Attachment atom</span>
|
127 |
+
</button>
|
128 |
+
<button
|
129 |
+
class="w-1/2 flex items-center rounded-r-full px-4 py-2 transition-colors duration-300 ease-in hover:text-orange-600 focus:text-orange-600 focus:outline-none"
|
130 |
+
id="delete"
|
131 |
+
class:active={mode === "delete"}
|
132 |
+
on:click={() => (mode = "delete")}
|
133 |
+
>
|
134 |
+
<svg
|
135 |
+
xmlns="http://www.w3.org/2000/svg"
|
136 |
+
fill="none"
|
137 |
+
viewBox="0 0 24 24"
|
138 |
+
stroke-width="1.5"
|
139 |
+
stroke="currentColor"
|
140 |
+
class="mx-1 h-4 w-4"
|
141 |
+
>
|
142 |
+
<path
|
143 |
+
stroke-linecap="round"
|
144 |
+
stroke-linejoin="round"
|
145 |
+
d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"
|
146 |
+
/>
|
147 |
+
</svg>
|
148 |
+
|
149 |
+
<span>Atoms to delete</span>
|
150 |
+
</button>
|
151 |
+
</div>
|
152 |
+
|
153 |
+
<div class="relative overflow-x-auto mt-3">
|
154 |
+
<table
|
155 |
+
class="w-full text-sm text-left rtl:text-right text-gray-500 dark:text-gray-400"
|
156 |
+
>
|
157 |
+
<thead
|
158 |
+
class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400"
|
159 |
+
>
|
160 |
+
<tr>
|
161 |
+
<th scope="col" class="px-6 py-3"> </th>
|
162 |
+
<th scope="col" class="px-6 py-3"> index </th>
|
163 |
+
</tr>
|
164 |
+
</thead>
|
165 |
+
<tbody>
|
166 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
167 |
+
<th
|
168 |
+
scope="row"
|
169 |
+
class="px-6 py-4 font-medium text-gray-900 whitespace-nowrap dark:text-white text-right"
|
170 |
+
>
|
171 |
+
Attachment atom
|
172 |
+
</th>
|
173 |
+
<td class="px-6 py-4 font-mono">
|
174 |
+
{#if attachmentIndex !== null}
|
175 |
+
{attachmentIndex}
|
176 |
+
{:else}
|
177 |
+
not selected
|
178 |
+
{/if}
|
179 |
+
</td>
|
180 |
+
</tr>
|
181 |
+
|
182 |
+
<tr class="bg-white dark:bg-gray-800">
|
183 |
+
<th
|
184 |
+
scope="row"
|
185 |
+
class="px-6 py-4 font-medium text-gray-900 whitespace-nowrap dark:text-white text-right"
|
186 |
+
>
|
187 |
+
Deleted atoms
|
188 |
+
</th>
|
189 |
+
<td class="px-6 py-4 font-mono">
|
190 |
+
{#if deleteIndexes.length > 0}
|
191 |
+
{deleteIndexes.join(", ")}
|
192 |
+
{:else}
|
193 |
+
no atoms are deleted
|
194 |
+
{/if}
|
195 |
+
</td>
|
196 |
+
</tr>
|
197 |
+
</tbody>
|
198 |
+
</table>
|
199 |
+
</div>
|
200 |
+
{/if}
|
201 |
+
</div>
|
202 |
+
</div>
|
203 |
+
|
204 |
+
<style>
|
205 |
+
.active {
|
206 |
+
background: white;
|
207 |
+
border-radius: 9999px;
|
208 |
+
color: rgb(234, 88, 12);
|
209 |
+
}
|
210 |
+
.mol-canvas {
|
211 |
+
width: 200px;
|
212 |
+
height: 200px;
|
213 |
+
margin: 0 auto;
|
214 |
+
}
|
215 |
+
.mol-wrapper {
|
216 |
+
width: 100%;
|
217 |
+
display: flex;
|
218 |
+
justify-content: center;
|
219 |
+
}
|
220 |
+
/*
|
221 |
+
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
|
222 |
+
*/
|
223 |
+
|
224 |
+
/*
|
225 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
226 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
227 |
+
*/
|
228 |
+
|
229 |
+
*,
|
230 |
+
::before,
|
231 |
+
::after {
|
232 |
+
box-sizing: border-box;
|
233 |
+
/* 1 */
|
234 |
+
border-width: 0;
|
235 |
+
/* 2 */
|
236 |
+
border-style: solid;
|
237 |
+
/* 2 */
|
238 |
+
border-color: #e5e7eb;
|
239 |
+
/* 2 */
|
240 |
+
}
|
241 |
+
|
242 |
+
::before,
|
243 |
+
::after {
|
244 |
+
--tw-content: "";
|
245 |
+
}
|
246 |
+
|
247 |
+
/*
|
248 |
+
1. Use a consistent sensible line-height in all browsers.
|
249 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
250 |
+
3. Use a more readable tab size.
|
251 |
+
4. Use the user's configured `sans` font-family by default.
|
252 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
253 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
254 |
+
7. Disable tap highlights on iOS
|
255 |
+
*/
|
256 |
+
|
257 |
+
html,
|
258 |
+
:host {
|
259 |
+
line-height: 1.5;
|
260 |
+
/* 1 */
|
261 |
+
-webkit-text-size-adjust: 100%;
|
262 |
+
/* 2 */
|
263 |
+
-moz-tab-size: 4;
|
264 |
+
/* 3 */
|
265 |
+
tab-size: 4;
|
266 |
+
/* 3 */
|
267 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
268 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
269 |
+
/* 4 */
|
270 |
+
font-feature-settings: normal;
|
271 |
+
/* 5 */
|
272 |
+
font-variation-settings: normal;
|
273 |
+
/* 6 */
|
274 |
+
-webkit-tap-highlight-color: transparent;
|
275 |
+
/* 7 */
|
276 |
+
}
|
277 |
+
|
278 |
+
/*
|
279 |
+
1. Remove the margin in all browsers.
|
280 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
281 |
+
*/
|
282 |
+
|
283 |
+
body {
|
284 |
+
margin: 0;
|
285 |
+
/* 1 */
|
286 |
+
line-height: inherit;
|
287 |
+
/* 2 */
|
288 |
+
}
|
289 |
+
|
290 |
+
/*
|
291 |
+
1. Add the correct height in Firefox.
|
292 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
293 |
+
3. Ensure horizontal rules are visible by default.
|
294 |
+
*/
|
295 |
+
|
296 |
+
hr {
|
297 |
+
height: 0;
|
298 |
+
/* 1 */
|
299 |
+
color: inherit;
|
300 |
+
/* 2 */
|
301 |
+
border-top-width: 1px;
|
302 |
+
/* 3 */
|
303 |
+
}
|
304 |
+
|
305 |
+
/*
|
306 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
307 |
+
*/
|
308 |
+
|
309 |
+
abbr:where([title]) {
|
310 |
+
text-decoration: underline dotted;
|
311 |
+
}
|
312 |
+
|
313 |
+
/*
|
314 |
+
Remove the default font size and weight for headings.
|
315 |
+
*/
|
316 |
+
|
317 |
+
h1,
|
318 |
+
h2,
|
319 |
+
h3,
|
320 |
+
h4,
|
321 |
+
h5,
|
322 |
+
h6 {
|
323 |
+
font-size: inherit;
|
324 |
+
font-weight: inherit;
|
325 |
+
}
|
326 |
+
|
327 |
+
/*
|
328 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
329 |
+
*/
|
330 |
+
|
331 |
+
a {
|
332 |
+
color: inherit;
|
333 |
+
text-decoration: inherit;
|
334 |
+
}
|
335 |
+
|
336 |
+
/*
|
337 |
+
Add the correct font weight in Edge and Safari.
|
338 |
+
*/
|
339 |
+
|
340 |
+
b,
|
341 |
+
strong {
|
342 |
+
font-weight: bolder;
|
343 |
+
}
|
344 |
+
|
345 |
+
/*
|
346 |
+
1. Use the user's configured `mono` font-family by default.
|
347 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
348 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
349 |
+
4. Correct the odd `em` font sizing in all browsers.
|
350 |
+
*/
|
351 |
+
|
352 |
+
code,
|
353 |
+
kbd,
|
354 |
+
samp,
|
355 |
+
pre {
|
356 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
357 |
+
"Liberation Mono", "Courier New", monospace;
|
358 |
+
/* 1 */
|
359 |
+
font-feature-settings: normal;
|
360 |
+
/* 2 */
|
361 |
+
font-variation-settings: normal;
|
362 |
+
/* 3 */
|
363 |
+
font-size: 1em;
|
364 |
+
/* 4 */
|
365 |
+
}
|
366 |
+
|
367 |
+
/*
|
368 |
+
Add the correct font size in all browsers.
|
369 |
+
*/
|
370 |
+
|
371 |
+
small {
|
372 |
+
font-size: 80%;
|
373 |
+
}
|
374 |
+
|
375 |
+
/*
|
376 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
377 |
+
*/
|
378 |
+
|
379 |
+
sub,
|
380 |
+
sup {
|
381 |
+
font-size: 75%;
|
382 |
+
line-height: 0;
|
383 |
+
position: relative;
|
384 |
+
vertical-align: baseline;
|
385 |
+
}
|
386 |
+
|
387 |
+
sub {
|
388 |
+
bottom: -0.25em;
|
389 |
+
}
|
390 |
+
|
391 |
+
sup {
|
392 |
+
top: -0.5em;
|
393 |
+
}
|
394 |
+
|
395 |
+
/*
|
396 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
397 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
398 |
+
3. Remove gaps between table borders by default.
|
399 |
+
*/
|
400 |
+
|
401 |
+
table {
|
402 |
+
text-indent: 0;
|
403 |
+
/* 1 */
|
404 |
+
border-color: inherit;
|
405 |
+
/* 2 */
|
406 |
+
border-collapse: collapse;
|
407 |
+
/* 3 */
|
408 |
+
}
|
409 |
+
|
410 |
+
/*
|
411 |
+
1. Change the font styles in all browsers.
|
412 |
+
2. Remove the margin in Firefox and Safari.
|
413 |
+
3. Remove default padding in all browsers.
|
414 |
+
*/
|
415 |
+
|
416 |
+
button,
|
417 |
+
input,
|
418 |
+
optgroup,
|
419 |
+
select,
|
420 |
+
textarea {
|
421 |
+
font-family: inherit;
|
422 |
+
/* 1 */
|
423 |
+
font-feature-settings: inherit;
|
424 |
+
/* 1 */
|
425 |
+
font-variation-settings: inherit;
|
426 |
+
/* 1 */
|
427 |
+
font-size: 100%;
|
428 |
+
/* 1 */
|
429 |
+
font-weight: inherit;
|
430 |
+
/* 1 */
|
431 |
+
line-height: inherit;
|
432 |
+
/* 1 */
|
433 |
+
letter-spacing: inherit;
|
434 |
+
/* 1 */
|
435 |
+
color: inherit;
|
436 |
+
/* 1 */
|
437 |
+
margin: 0;
|
438 |
+
/* 2 */
|
439 |
+
padding: 0;
|
440 |
+
/* 3 */
|
441 |
+
}
|
442 |
+
|
443 |
+
/*
|
444 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
445 |
+
*/
|
446 |
+
|
447 |
+
button,
|
448 |
+
select {
|
449 |
+
text-transform: none;
|
450 |
+
}
|
451 |
+
|
452 |
+
/*
|
453 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
454 |
+
2. Remove default button styles.
|
455 |
+
*/
|
456 |
+
|
457 |
+
button,
|
458 |
+
input:where([type="button"]),
|
459 |
+
input:where([type="reset"]),
|
460 |
+
input:where([type="submit"]) {
|
461 |
+
-webkit-appearance: button;
|
462 |
+
/* 1 */
|
463 |
+
background-color: transparent;
|
464 |
+
/* 2 */
|
465 |
+
background-image: none;
|
466 |
+
/* 2 */
|
467 |
+
}
|
468 |
+
|
469 |
+
/*
|
470 |
+
Use the modern Firefox focus style for all focusable elements.
|
471 |
+
*/
|
472 |
+
|
473 |
+
:-moz-focusring {
|
474 |
+
outline: auto;
|
475 |
+
}
|
476 |
+
|
477 |
+
/*
|
478 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
479 |
+
*/
|
480 |
+
|
481 |
+
:-moz-ui-invalid {
|
482 |
+
box-shadow: none;
|
483 |
+
}
|
484 |
+
|
485 |
+
/*
|
486 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
487 |
+
*/
|
488 |
+
|
489 |
+
progress {
|
490 |
+
vertical-align: baseline;
|
491 |
+
}
|
492 |
+
|
493 |
+
/*
|
494 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
495 |
+
*/
|
496 |
+
|
497 |
+
::-webkit-inner-spin-button,
|
498 |
+
::-webkit-outer-spin-button {
|
499 |
+
height: auto;
|
500 |
+
}
|
501 |
+
|
502 |
+
/*
|
503 |
+
1. Correct the odd appearance in Chrome and Safari.
|
504 |
+
2. Correct the outline style in Safari.
|
505 |
+
*/
|
506 |
+
|
507 |
+
[type="search"] {
|
508 |
+
-webkit-appearance: textfield;
|
509 |
+
/* 1 */
|
510 |
+
outline-offset: -2px;
|
511 |
+
/* 2 */
|
512 |
+
}
|
513 |
+
|
514 |
+
/*
|
515 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
516 |
+
*/
|
517 |
+
|
518 |
+
::-webkit-search-decoration {
|
519 |
+
-webkit-appearance: none;
|
520 |
+
}
|
521 |
+
|
522 |
+
/*
|
523 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
524 |
+
2. Change font properties to `inherit` in Safari.
|
525 |
+
*/
|
526 |
+
|
527 |
+
::-webkit-file-upload-button {
|
528 |
+
-webkit-appearance: button;
|
529 |
+
/* 1 */
|
530 |
+
font: inherit;
|
531 |
+
/* 2 */
|
532 |
+
}
|
533 |
+
|
534 |
+
/*
|
535 |
+
Add the correct display in Chrome and Safari.
|
536 |
+
*/
|
537 |
+
|
538 |
+
summary {
|
539 |
+
display: list-item;
|
540 |
+
}
|
541 |
+
|
542 |
+
/*
|
543 |
+
Removes the default spacing and border for appropriate elements.
|
544 |
+
*/
|
545 |
+
|
546 |
+
blockquote,
|
547 |
+
dl,
|
548 |
+
dd,
|
549 |
+
h1,
|
550 |
+
h2,
|
551 |
+
h3,
|
552 |
+
h4,
|
553 |
+
h5,
|
554 |
+
h6,
|
555 |
+
hr,
|
556 |
+
figure,
|
557 |
+
p,
|
558 |
+
pre {
|
559 |
+
margin: 0;
|
560 |
+
}
|
561 |
+
|
562 |
+
fieldset {
|
563 |
+
margin: 0;
|
564 |
+
padding: 0;
|
565 |
+
}
|
566 |
+
|
567 |
+
legend {
|
568 |
+
padding: 0;
|
569 |
+
}
|
570 |
+
|
571 |
+
ol,
|
572 |
+
ul,
|
573 |
+
menu {
|
574 |
+
list-style: none;
|
575 |
+
margin: 0;
|
576 |
+
padding: 0;
|
577 |
+
}
|
578 |
+
|
579 |
+
/*
|
580 |
+
Reset default styling for dialogs.
|
581 |
+
*/
|
582 |
+
|
583 |
+
dialog {
|
584 |
+
padding: 0;
|
585 |
+
}
|
586 |
+
|
587 |
+
/*
|
588 |
+
Prevent resizing textareas horizontally by default.
|
589 |
+
*/
|
590 |
+
|
591 |
+
textarea {
|
592 |
+
resize: vertical;
|
593 |
+
}
|
594 |
+
|
595 |
+
/*
|
596 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
597 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
598 |
+
*/
|
599 |
+
|
600 |
+
input::placeholder,
|
601 |
+
textarea::placeholder {
|
602 |
+
opacity: 1;
|
603 |
+
/* 1 */
|
604 |
+
color: #9ca3af;
|
605 |
+
/* 2 */
|
606 |
+
}
|
607 |
+
|
608 |
+
/*
|
609 |
+
Set the default cursor for buttons.
|
610 |
+
*/
|
611 |
+
|
612 |
+
button,
|
613 |
+
[role="button"] {
|
614 |
+
cursor: pointer;
|
615 |
+
}
|
616 |
+
|
617 |
+
/*
|
618 |
+
Make sure disabled buttons don't get the pointer cursor.
|
619 |
+
*/
|
620 |
+
|
621 |
+
:disabled {
|
622 |
+
cursor: default;
|
623 |
+
}
|
624 |
+
|
625 |
+
/*
|
626 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
627 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
628 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
629 |
+
*/
|
630 |
+
|
631 |
+
img,
|
632 |
+
svg,
|
633 |
+
video,
|
634 |
+
canvas,
|
635 |
+
audio,
|
636 |
+
iframe,
|
637 |
+
embed,
|
638 |
+
object {
|
639 |
+
display: block;
|
640 |
+
/* 1 */
|
641 |
+
vertical-align: middle;
|
642 |
+
/* 2 */
|
643 |
+
}
|
644 |
+
|
645 |
+
/*
|
646 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
647 |
+
*/
|
648 |
+
|
649 |
+
img,
|
650 |
+
video {
|
651 |
+
max-width: 100%;
|
652 |
+
height: auto;
|
653 |
+
}
|
654 |
+
|
655 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
656 |
+
|
657 |
+
[hidden] {
|
658 |
+
display: none;
|
659 |
+
}
|
660 |
+
|
661 |
+
*,
|
662 |
+
::before,
|
663 |
+
::after {
|
664 |
+
--tw-border-spacing-x: 0;
|
665 |
+
--tw-border-spacing-y: 0;
|
666 |
+
--tw-translate-x: 0;
|
667 |
+
--tw-translate-y: 0;
|
668 |
+
--tw-rotate: 0;
|
669 |
+
--tw-skew-x: 0;
|
670 |
+
--tw-skew-y: 0;
|
671 |
+
--tw-scale-x: 1;
|
672 |
+
--tw-scale-y: 1;
|
673 |
+
--tw-pan-x: ;
|
674 |
+
--tw-pan-y: ;
|
675 |
+
--tw-pinch-zoom: ;
|
676 |
+
--tw-scroll-snap-strictness: proximity;
|
677 |
+
--tw-gradient-from-position: ;
|
678 |
+
--tw-gradient-via-position: ;
|
679 |
+
--tw-gradient-to-position: ;
|
680 |
+
--tw-ordinal: ;
|
681 |
+
--tw-slashed-zero: ;
|
682 |
+
--tw-numeric-figure: ;
|
683 |
+
--tw-numeric-spacing: ;
|
684 |
+
--tw-numeric-fraction: ;
|
685 |
+
--tw-ring-inset: ;
|
686 |
+
--tw-ring-offset-width: 0px;
|
687 |
+
--tw-ring-offset-color: #fff;
|
688 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
689 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
690 |
+
--tw-ring-shadow: 0 0 #0000;
|
691 |
+
--tw-shadow: 0 0 #0000;
|
692 |
+
--tw-shadow-colored: 0 0 #0000;
|
693 |
+
--tw-blur: ;
|
694 |
+
--tw-brightness: ;
|
695 |
+
--tw-contrast: ;
|
696 |
+
--tw-grayscale: ;
|
697 |
+
--tw-hue-rotate: ;
|
698 |
+
--tw-invert: ;
|
699 |
+
--tw-saturate: ;
|
700 |
+
--tw-sepia: ;
|
701 |
+
--tw-drop-shadow: ;
|
702 |
+
--tw-backdrop-blur: ;
|
703 |
+
--tw-backdrop-brightness: ;
|
704 |
+
--tw-backdrop-contrast: ;
|
705 |
+
--tw-backdrop-grayscale: ;
|
706 |
+
--tw-backdrop-hue-rotate: ;
|
707 |
+
--tw-backdrop-invert: ;
|
708 |
+
--tw-backdrop-opacity: ;
|
709 |
+
--tw-backdrop-saturate: ;
|
710 |
+
--tw-backdrop-sepia: ;
|
711 |
+
--tw-contain-size: ;
|
712 |
+
--tw-contain-layout: ;
|
713 |
+
--tw-contain-paint: ;
|
714 |
+
--tw-contain-style:
|
715 |
+
;
|
716 |
+
}
|
717 |
+
|
718 |
+
::backdrop {
|
719 |
+
--tw-border-spacing-x: 0;
|
720 |
+
--tw-border-spacing-y: 0;
|
721 |
+
--tw-translate-x: 0;
|
722 |
+
--tw-translate-y: 0;
|
723 |
+
--tw-rotate: 0;
|
724 |
+
--tw-skew-x: 0;
|
725 |
+
--tw-skew-y: 0;
|
726 |
+
--tw-scale-x: 1;
|
727 |
+
--tw-scale-y: 1;
|
728 |
+
--tw-pan-x: ;
|
729 |
+
--tw-pan-y: ;
|
730 |
+
--tw-pinch-zoom: ;
|
731 |
+
--tw-scroll-snap-strictness: proximity;
|
732 |
+
--tw-gradient-from-position: ;
|
733 |
+
--tw-gradient-via-position: ;
|
734 |
+
--tw-gradient-to-position: ;
|
735 |
+
--tw-ordinal: ;
|
736 |
+
--tw-slashed-zero: ;
|
737 |
+
--tw-numeric-figure: ;
|
738 |
+
--tw-numeric-spacing: ;
|
739 |
+
--tw-numeric-fraction: ;
|
740 |
+
--tw-ring-inset: ;
|
741 |
+
--tw-ring-offset-width: 0px;
|
742 |
+
--tw-ring-offset-color: #fff;
|
743 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
744 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
745 |
+
--tw-ring-shadow: 0 0 #0000;
|
746 |
+
--tw-shadow: 0 0 #0000;
|
747 |
+
--tw-shadow-colored: 0 0 #0000;
|
748 |
+
--tw-blur: ;
|
749 |
+
--tw-brightness: ;
|
750 |
+
--tw-contrast: ;
|
751 |
+
--tw-grayscale: ;
|
752 |
+
--tw-hue-rotate: ;
|
753 |
+
--tw-invert: ;
|
754 |
+
--tw-saturate: ;
|
755 |
+
--tw-sepia: ;
|
756 |
+
--tw-drop-shadow: ;
|
757 |
+
--tw-backdrop-blur: ;
|
758 |
+
--tw-backdrop-brightness: ;
|
759 |
+
--tw-backdrop-contrast: ;
|
760 |
+
--tw-backdrop-grayscale: ;
|
761 |
+
--tw-backdrop-hue-rotate: ;
|
762 |
+
--tw-backdrop-invert: ;
|
763 |
+
--tw-backdrop-opacity: ;
|
764 |
+
--tw-backdrop-saturate: ;
|
765 |
+
--tw-backdrop-sepia: ;
|
766 |
+
--tw-contain-size: ;
|
767 |
+
--tw-contain-layout: ;
|
768 |
+
--tw-contain-paint: ;
|
769 |
+
--tw-contain-style:
|
770 |
+
;
|
771 |
+
}
|
772 |
+
|
773 |
+
.relative {
|
774 |
+
position: relative;
|
775 |
+
}
|
776 |
+
|
777 |
+
.mx-1 {
|
778 |
+
margin-left: 0.25rem;
|
779 |
+
margin-right: 0.25rem;
|
780 |
+
}
|
781 |
+
|
782 |
+
.mb-2 {
|
783 |
+
margin-bottom: 0.5rem;
|
784 |
+
}
|
785 |
+
|
786 |
+
.mt-3 {
|
787 |
+
margin-top: 0.75rem;
|
788 |
+
}
|
789 |
+
|
790 |
+
.flex {
|
791 |
+
display: flex;
|
792 |
+
}
|
793 |
+
|
794 |
+
.table {
|
795 |
+
display: table;
|
796 |
+
}
|
797 |
+
|
798 |
+
.grid {
|
799 |
+
display: grid;
|
800 |
+
}
|
801 |
+
|
802 |
+
.h-4 {
|
803 |
+
height: 1rem;
|
804 |
+
}
|
805 |
+
|
806 |
+
.w-1\/2 {
|
807 |
+
width: 50%;
|
808 |
+
}
|
809 |
+
|
810 |
+
.w-4 {
|
811 |
+
width: 1rem;
|
812 |
+
}
|
813 |
+
|
814 |
+
.w-full {
|
815 |
+
width: 100%;
|
816 |
+
}
|
817 |
+
|
818 |
+
.flex-col {
|
819 |
+
flex-direction: column;
|
820 |
+
}
|
821 |
+
|
822 |
+
.items-center {
|
823 |
+
align-items: center;
|
824 |
+
}
|
825 |
+
|
826 |
+
.justify-center {
|
827 |
+
justify-content: center;
|
828 |
+
}
|
829 |
+
|
830 |
+
.overflow-x-auto {
|
831 |
+
overflow-x: auto;
|
832 |
+
}
|
833 |
+
|
834 |
+
.whitespace-nowrap {
|
835 |
+
white-space: nowrap;
|
836 |
+
}
|
837 |
+
|
838 |
+
.rounded-full {
|
839 |
+
border-radius: 9999px;
|
840 |
+
}
|
841 |
+
|
842 |
+
.rounded-l-full {
|
843 |
+
border-top-left-radius: 9999px;
|
844 |
+
border-bottom-left-radius: 9999px;
|
845 |
+
}
|
846 |
+
|
847 |
+
.rounded-r-full {
|
848 |
+
border-top-right-radius: 9999px;
|
849 |
+
border-bottom-right-radius: 9999px;
|
850 |
+
}
|
851 |
+
|
852 |
+
.border-2 {
|
853 |
+
border-width: 2px;
|
854 |
+
}
|
855 |
+
|
856 |
+
.border-b {
|
857 |
+
border-bottom-width: 1px;
|
858 |
+
}
|
859 |
+
|
860 |
+
.border-gray-200 {
|
861 |
+
--tw-border-opacity: 1;
|
862 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
863 |
+
}
|
864 |
+
|
865 |
+
.bg-gray-200 {
|
866 |
+
--tw-bg-opacity: 1;
|
867 |
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
868 |
+
}
|
869 |
+
|
870 |
+
.bg-gray-50 {
|
871 |
+
--tw-bg-opacity: 1;
|
872 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
873 |
+
}
|
874 |
+
|
875 |
+
.bg-white {
|
876 |
+
--tw-bg-opacity: 1;
|
877 |
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
878 |
+
}
|
879 |
+
|
880 |
+
.px-4 {
|
881 |
+
padding-left: 1rem;
|
882 |
+
padding-right: 1rem;
|
883 |
+
}
|
884 |
+
|
885 |
+
.px-6 {
|
886 |
+
padding-left: 1.5rem;
|
887 |
+
padding-right: 1.5rem;
|
888 |
+
}
|
889 |
+
|
890 |
+
.py-2 {
|
891 |
+
padding-top: 0.5rem;
|
892 |
+
padding-bottom: 0.5rem;
|
893 |
+
}
|
894 |
+
|
895 |
+
.py-3 {
|
896 |
+
padding-top: 0.75rem;
|
897 |
+
padding-bottom: 0.75rem;
|
898 |
+
}
|
899 |
+
|
900 |
+
.py-4 {
|
901 |
+
padding-top: 1rem;
|
902 |
+
padding-bottom: 1rem;
|
903 |
+
}
|
904 |
+
|
905 |
+
.text-left {
|
906 |
+
text-align: left;
|
907 |
+
}
|
908 |
+
|
909 |
+
.text-center {
|
910 |
+
text-align: center;
|
911 |
+
}
|
912 |
+
|
913 |
+
.text-right {
|
914 |
+
text-align: right;
|
915 |
+
}
|
916 |
+
|
917 |
+
.font-mono {
|
918 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
919 |
+
"Liberation Mono", "Courier New", monospace;
|
920 |
+
}
|
921 |
+
|
922 |
+
.text-lg {
|
923 |
+
font-size: 1.125rem;
|
924 |
+
line-height: 1.75rem;
|
925 |
+
}
|
926 |
+
|
927 |
+
.text-sm {
|
928 |
+
font-size: 0.875rem;
|
929 |
+
line-height: 1.25rem;
|
930 |
+
}
|
931 |
+
|
932 |
+
.text-xs {
|
933 |
+
font-size: 0.75rem;
|
934 |
+
line-height: 1rem;
|
935 |
+
}
|
936 |
+
|
937 |
+
.font-medium {
|
938 |
+
font-weight: 500;
|
939 |
+
}
|
940 |
+
|
941 |
+
.uppercase {
|
942 |
+
text-transform: uppercase;
|
943 |
+
}
|
944 |
+
|
945 |
+
.leading-none {
|
946 |
+
line-height: 1;
|
947 |
+
}
|
948 |
+
|
949 |
+
.text-blue-400 {
|
950 |
+
--tw-text-opacity: 1;
|
951 |
+
color: rgb(96 165 250 / var(--tw-text-opacity));
|
952 |
+
}
|
953 |
+
|
954 |
+
.text-gray-500 {
|
955 |
+
--tw-text-opacity: 1;
|
956 |
+
color: rgb(107 114 128 / var(--tw-text-opacity));
|
957 |
+
}
|
958 |
+
|
959 |
+
.text-gray-700 {
|
960 |
+
--tw-text-opacity: 1;
|
961 |
+
color: rgb(55 65 81 / var(--tw-text-opacity));
|
962 |
+
}
|
963 |
+
|
964 |
+
.text-gray-900 {
|
965 |
+
--tw-text-opacity: 1;
|
966 |
+
color: rgb(17 24 39 / var(--tw-text-opacity));
|
967 |
+
}
|
968 |
+
|
969 |
+
.transition-colors {
|
970 |
+
transition-property: color, background-color, border-color,
|
971 |
+
text-decoration-color, fill, stroke;
|
972 |
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
973 |
+
transition-duration: 150ms;
|
974 |
+
}
|
975 |
+
|
976 |
+
.duration-300 {
|
977 |
+
transition-duration: 300ms;
|
978 |
+
}
|
979 |
+
|
980 |
+
.ease-in {
|
981 |
+
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
982 |
+
}
|
983 |
+
|
984 |
+
.hover\:text-orange-600:hover {
|
985 |
+
--tw-text-opacity: 1;
|
986 |
+
color: rgb(234 88 12 / var(--tw-text-opacity));
|
987 |
+
}
|
988 |
+
|
989 |
+
.focus\:text-orange-600:focus {
|
990 |
+
--tw-text-opacity: 1;
|
991 |
+
color: rgb(234 88 12 / var(--tw-text-opacity));
|
992 |
+
}
|
993 |
+
|
994 |
+
.focus\:outline-none:focus {
|
995 |
+
outline: 2px solid transparent;
|
996 |
+
outline-offset: 2px;
|
997 |
+
}
|
998 |
+
|
999 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1000 |
+
text-align: right;
|
1001 |
+
}
|
1002 |
+
|
1003 |
+
@media (prefers-color-scheme: dark) {
|
1004 |
+
.dark\:border-gray-700 {
|
1005 |
+
--tw-border-opacity: 1;
|
1006 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
.dark\:bg-gray-700 {
|
1010 |
+
--tw-bg-opacity: 1;
|
1011 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
.dark\:bg-gray-800 {
|
1015 |
+
--tw-bg-opacity: 1;
|
1016 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
.dark\:text-gray-400 {
|
1020 |
+
--tw-text-opacity: 1;
|
1021 |
+
color: rgb(156 163 175 / var(--tw-text-opacity));
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
.dark\:text-white {
|
1025 |
+
--tw-text-opacity: 1;
|
1026 |
+
color: rgb(255 255 255 / var(--tw-text-opacity));
|
1027 |
+
}
|
1028 |
+
}
|
1029 |
+
</style>
|
src/frontend/shared/SearchInput.svelte
ADDED
@@ -0,0 +1,1422 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
import { createEventDispatcher } from "svelte";
|
3 |
+
|
4 |
+
const dispatch = createEventDispatcher();
|
5 |
+
|
6 |
+
export let database = "rcsb-bioass";
|
7 |
+
export let index = 0;
|
8 |
+
let databases = {
|
9 |
+
"rcsb-3ligand": "RCSB 3-Letter Codes",
|
10 |
+
pubchem: "Pubchem",
|
11 |
+
"rcsb-bioass": "RCSB BioAssembly",
|
12 |
+
};
|
13 |
+
|
14 |
+
let placeholder = {
|
15 |
+
"rcsb-3ligand": "e.g HEM, ZN, K, GOL ...",
|
16 |
+
pubchem: "molecule name",
|
17 |
+
"rcsb-bioass": "4 Letter PDB Code",
|
18 |
+
};
|
19 |
+
|
20 |
+
let currentSel = database;
|
21 |
+
let searchInput = "";
|
22 |
+
|
23 |
+
function triggerFetch() {
|
24 |
+
dispatch("triggerFetch", {
|
25 |
+
text: searchInput,
|
26 |
+
database: currentSel,
|
27 |
+
index: index,
|
28 |
+
});
|
29 |
+
}
|
30 |
+
</script>
|
31 |
+
|
32 |
+
<form class="max-w-lg mx-auto mb-2 my-2">
|
33 |
+
<div class="flex">
|
34 |
+
<label
|
35 |
+
for="search-dropdown"
|
36 |
+
class="mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"
|
37 |
+
>Search</label
|
38 |
+
>
|
39 |
+
<button
|
40 |
+
id="dropdown-button"
|
41 |
+
data-dropdown-toggle="dropdown"
|
42 |
+
class="flex-shrink-0 z-10 inline-flex items-center py-2.5 px-4 text-sm font-medium text-center text-gray-900 bg-gray-100 border border-gray-300 rounded-s-lg hover:bg-gray-200 focus:ring-4 focus:outline-none focus:ring-gray-100 dark:bg-gray-700 dark:hover:bg-gray-600 dark:focus:ring-gray-700 dark:text-white dark:border-gray-600"
|
43 |
+
type="button"
|
44 |
+
>{databases[currentSel]}
|
45 |
+
<!-- <svg
|
46 |
+
class="w-2.5 h-2.5 ms-2.5"
|
47 |
+
aria-hidden="true"
|
48 |
+
xmlns="http://www.w3.org/2000/svg"
|
49 |
+
fill="none"
|
50 |
+
viewBox="0 0 10 6"
|
51 |
+
>
|
52 |
+
<path
|
53 |
+
stroke="currentColor"
|
54 |
+
stroke-linecap="round"
|
55 |
+
stroke-linejoin="round"
|
56 |
+
stroke-width="2"
|
57 |
+
d="m1 1 4 4 4-4"
|
58 |
+
/>
|
59 |
+
</svg> -->
|
60 |
+
</button>
|
61 |
+
<div
|
62 |
+
id="dropdown"
|
63 |
+
class="z-10 hidden bg-white divide-y divide-gray-100 rounded-lg shadow w-44 dark:bg-gray-700"
|
64 |
+
>
|
65 |
+
<ul
|
66 |
+
class="py-2 text-sm text-gray-700 dark:text-gray-200"
|
67 |
+
aria-labelledby="dropdown-button"
|
68 |
+
>
|
69 |
+
<li>
|
70 |
+
<button
|
71 |
+
type="button"
|
72 |
+
class="inline-flex w-full px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
|
73 |
+
>Pubchem</button
|
74 |
+
>
|
75 |
+
</li>
|
76 |
+
<li>
|
77 |
+
<button
|
78 |
+
type="button"
|
79 |
+
class="inline-flex w-full px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white"
|
80 |
+
>RCSB 3 Letter code</button
|
81 |
+
>
|
82 |
+
</li>
|
83 |
+
</ul>
|
84 |
+
</div>
|
85 |
+
<div class="relative w-full">
|
86 |
+
<input
|
87 |
+
type="search"
|
88 |
+
id="search-dropdown"
|
89 |
+
class="block p-2.5 w-full z-20 text-sm text-gray-900 bg-gray-50 rounded-e-lg border-s-gray-50 border-s-2 border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-s-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:border-blue-500"
|
90 |
+
placeholder={placeholder[currentSel]}
|
91 |
+
on:input={(e) => (searchInput = e.target.value)}
|
92 |
+
/>
|
93 |
+
<button
|
94 |
+
type="submit"
|
95 |
+
class="absolute top-0 end-0 p-2.5 text-sm font-medium h-full text-white bg-blue-700 rounded-e-lg border border-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
|
96 |
+
on:click|preventDefault={triggerFetch}
|
97 |
+
>
|
98 |
+
<svg
|
99 |
+
class="w-4 h-4"
|
100 |
+
aria-hidden="true"
|
101 |
+
xmlns="http://www.w3.org/2000/svg"
|
102 |
+
fill="none"
|
103 |
+
viewBox="0 0 20 20"
|
104 |
+
>
|
105 |
+
<path
|
106 |
+
stroke="currentColor"
|
107 |
+
stroke-linecap="round"
|
108 |
+
stroke-linejoin="round"
|
109 |
+
stroke-width="2"
|
110 |
+
d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"
|
111 |
+
/>
|
112 |
+
</svg>
|
113 |
+
<span class="sr-only">Search</span>
|
114 |
+
</button>
|
115 |
+
</div>
|
116 |
+
</div>
|
117 |
+
</form>
|
118 |
+
|
119 |
+
<style>
|
120 |
+
/*
|
121 |
+
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
|
122 |
+
*/
|
123 |
+
|
124 |
+
/*
|
125 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
126 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
127 |
+
*/
|
128 |
+
|
129 |
+
*,
|
130 |
+
::before,
|
131 |
+
::after {
|
132 |
+
box-sizing: border-box;
|
133 |
+
/* 1 */
|
134 |
+
border-width: 0;
|
135 |
+
/* 2 */
|
136 |
+
border-style: solid;
|
137 |
+
/* 2 */
|
138 |
+
border-color: #e5e7eb;
|
139 |
+
/* 2 */
|
140 |
+
}
|
141 |
+
|
142 |
+
::before,
|
143 |
+
::after {
|
144 |
+
--tw-content: "";
|
145 |
+
}
|
146 |
+
|
147 |
+
/*
|
148 |
+
1. Use a consistent sensible line-height in all browsers.
|
149 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
150 |
+
3. Use a more readable tab size.
|
151 |
+
4. Use the user's configured `sans` font-family by default.
|
152 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
153 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
154 |
+
7. Disable tap highlights on iOS
|
155 |
+
*/
|
156 |
+
|
157 |
+
html,
|
158 |
+
:host {
|
159 |
+
line-height: 1.5;
|
160 |
+
/* 1 */
|
161 |
+
-webkit-text-size-adjust: 100%;
|
162 |
+
/* 2 */
|
163 |
+
-moz-tab-size: 4;
|
164 |
+
/* 3 */
|
165 |
+
tab-size: 4;
|
166 |
+
/* 3 */
|
167 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
168 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
169 |
+
/* 4 */
|
170 |
+
font-feature-settings: normal;
|
171 |
+
/* 5 */
|
172 |
+
font-variation-settings: normal;
|
173 |
+
/* 6 */
|
174 |
+
-webkit-tap-highlight-color: transparent;
|
175 |
+
/* 7 */
|
176 |
+
}
|
177 |
+
|
178 |
+
/*
|
179 |
+
1. Remove the margin in all browsers.
|
180 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
181 |
+
*/
|
182 |
+
|
183 |
+
body {
|
184 |
+
margin: 0;
|
185 |
+
/* 1 */
|
186 |
+
line-height: inherit;
|
187 |
+
/* 2 */
|
188 |
+
}
|
189 |
+
|
190 |
+
/*
|
191 |
+
1. Add the correct height in Firefox.
|
192 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
193 |
+
3. Ensure horizontal rules are visible by default.
|
194 |
+
*/
|
195 |
+
|
196 |
+
hr {
|
197 |
+
height: 0;
|
198 |
+
/* 1 */
|
199 |
+
color: inherit;
|
200 |
+
/* 2 */
|
201 |
+
border-top-width: 1px;
|
202 |
+
/* 3 */
|
203 |
+
}
|
204 |
+
|
205 |
+
/*
|
206 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
207 |
+
*/
|
208 |
+
|
209 |
+
abbr:where([title]) {
|
210 |
+
text-decoration: underline dotted;
|
211 |
+
}
|
212 |
+
|
213 |
+
/*
|
214 |
+
Remove the default font size and weight for headings.
|
215 |
+
*/
|
216 |
+
|
217 |
+
h1,
|
218 |
+
h2,
|
219 |
+
h3,
|
220 |
+
h4,
|
221 |
+
h5,
|
222 |
+
h6 {
|
223 |
+
font-size: inherit;
|
224 |
+
font-weight: inherit;
|
225 |
+
}
|
226 |
+
|
227 |
+
/*
|
228 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
229 |
+
*/
|
230 |
+
|
231 |
+
a {
|
232 |
+
color: inherit;
|
233 |
+
text-decoration: inherit;
|
234 |
+
}
|
235 |
+
|
236 |
+
/*
|
237 |
+
Add the correct font weight in Edge and Safari.
|
238 |
+
*/
|
239 |
+
|
240 |
+
b,
|
241 |
+
strong {
|
242 |
+
font-weight: bolder;
|
243 |
+
}
|
244 |
+
|
245 |
+
/*
|
246 |
+
1. Use the user's configured `mono` font-family by default.
|
247 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
248 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
249 |
+
4. Correct the odd `em` font sizing in all browsers.
|
250 |
+
*/
|
251 |
+
|
252 |
+
code,
|
253 |
+
kbd,
|
254 |
+
samp,
|
255 |
+
pre {
|
256 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
257 |
+
"Liberation Mono", "Courier New", monospace;
|
258 |
+
/* 1 */
|
259 |
+
font-feature-settings: normal;
|
260 |
+
/* 2 */
|
261 |
+
font-variation-settings: normal;
|
262 |
+
/* 3 */
|
263 |
+
font-size: 1em;
|
264 |
+
/* 4 */
|
265 |
+
}
|
266 |
+
|
267 |
+
/*
|
268 |
+
Add the correct font size in all browsers.
|
269 |
+
*/
|
270 |
+
|
271 |
+
small {
|
272 |
+
font-size: 80%;
|
273 |
+
}
|
274 |
+
|
275 |
+
/*
|
276 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
277 |
+
*/
|
278 |
+
|
279 |
+
sub,
|
280 |
+
sup {
|
281 |
+
font-size: 75%;
|
282 |
+
line-height: 0;
|
283 |
+
position: relative;
|
284 |
+
vertical-align: baseline;
|
285 |
+
}
|
286 |
+
|
287 |
+
sub {
|
288 |
+
bottom: -0.25em;
|
289 |
+
}
|
290 |
+
|
291 |
+
sup {
|
292 |
+
top: -0.5em;
|
293 |
+
}
|
294 |
+
|
295 |
+
/*
|
296 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
297 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
298 |
+
3. Remove gaps between table borders by default.
|
299 |
+
*/
|
300 |
+
|
301 |
+
table {
|
302 |
+
text-indent: 0;
|
303 |
+
/* 1 */
|
304 |
+
border-color: inherit;
|
305 |
+
/* 2 */
|
306 |
+
border-collapse: collapse;
|
307 |
+
/* 3 */
|
308 |
+
}
|
309 |
+
|
310 |
+
/*
|
311 |
+
1. Change the font styles in all browsers.
|
312 |
+
2. Remove the margin in Firefox and Safari.
|
313 |
+
3. Remove default padding in all browsers.
|
314 |
+
*/
|
315 |
+
|
316 |
+
button,
|
317 |
+
input,
|
318 |
+
optgroup,
|
319 |
+
select,
|
320 |
+
textarea {
|
321 |
+
font-family: inherit;
|
322 |
+
/* 1 */
|
323 |
+
font-feature-settings: inherit;
|
324 |
+
/* 1 */
|
325 |
+
font-variation-settings: inherit;
|
326 |
+
/* 1 */
|
327 |
+
font-size: 100%;
|
328 |
+
/* 1 */
|
329 |
+
font-weight: inherit;
|
330 |
+
/* 1 */
|
331 |
+
line-height: inherit;
|
332 |
+
/* 1 */
|
333 |
+
color: inherit;
|
334 |
+
/* 1 */
|
335 |
+
margin: 0;
|
336 |
+
/* 2 */
|
337 |
+
padding: 0;
|
338 |
+
/* 3 */
|
339 |
+
}
|
340 |
+
|
341 |
+
/*
|
342 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
343 |
+
*/
|
344 |
+
|
345 |
+
button,
|
346 |
+
select {
|
347 |
+
text-transform: none;
|
348 |
+
}
|
349 |
+
|
350 |
+
/*
|
351 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
352 |
+
2. Remove default button styles.
|
353 |
+
*/
|
354 |
+
|
355 |
+
button,
|
356 |
+
[type="button"],
|
357 |
+
[type="reset"],
|
358 |
+
[type="submit"] {
|
359 |
+
-webkit-appearance: button;
|
360 |
+
/* 1 */
|
361 |
+
background-color: transparent;
|
362 |
+
/* 2 */
|
363 |
+
background-image: none;
|
364 |
+
/* 2 */
|
365 |
+
}
|
366 |
+
|
367 |
+
/*
|
368 |
+
Use the modern Firefox focus style for all focusable elements.
|
369 |
+
*/
|
370 |
+
|
371 |
+
:-moz-focusring {
|
372 |
+
outline: auto;
|
373 |
+
}
|
374 |
+
|
375 |
+
/*
|
376 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
377 |
+
*/
|
378 |
+
|
379 |
+
:-moz-ui-invalid {
|
380 |
+
box-shadow: none;
|
381 |
+
}
|
382 |
+
|
383 |
+
/*
|
384 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
385 |
+
*/
|
386 |
+
|
387 |
+
progress {
|
388 |
+
vertical-align: baseline;
|
389 |
+
}
|
390 |
+
|
391 |
+
/*
|
392 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
393 |
+
*/
|
394 |
+
|
395 |
+
::-webkit-inner-spin-button,
|
396 |
+
::-webkit-outer-spin-button {
|
397 |
+
height: auto;
|
398 |
+
}
|
399 |
+
|
400 |
+
/*
|
401 |
+
1. Correct the odd appearance in Chrome and Safari.
|
402 |
+
2. Correct the outline style in Safari.
|
403 |
+
*/
|
404 |
+
|
405 |
+
[type="search"] {
|
406 |
+
-webkit-appearance: textfield;
|
407 |
+
/* 1 */
|
408 |
+
outline-offset: -2px;
|
409 |
+
/* 2 */
|
410 |
+
}
|
411 |
+
|
412 |
+
/*
|
413 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
414 |
+
*/
|
415 |
+
|
416 |
+
::-webkit-search-decoration {
|
417 |
+
-webkit-appearance: none;
|
418 |
+
}
|
419 |
+
|
420 |
+
/*
|
421 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
422 |
+
2. Change font properties to `inherit` in Safari.
|
423 |
+
*/
|
424 |
+
|
425 |
+
::-webkit-file-upload-button {
|
426 |
+
-webkit-appearance: button;
|
427 |
+
/* 1 */
|
428 |
+
font: inherit;
|
429 |
+
/* 2 */
|
430 |
+
}
|
431 |
+
|
432 |
+
/*
|
433 |
+
Add the correct display in Chrome and Safari.
|
434 |
+
*/
|
435 |
+
|
436 |
+
summary {
|
437 |
+
display: list-item;
|
438 |
+
}
|
439 |
+
|
440 |
+
/*
|
441 |
+
Removes the default spacing and border for appropriate elements.
|
442 |
+
*/
|
443 |
+
|
444 |
+
blockquote,
|
445 |
+
dl,
|
446 |
+
dd,
|
447 |
+
h1,
|
448 |
+
h2,
|
449 |
+
h3,
|
450 |
+
h4,
|
451 |
+
h5,
|
452 |
+
h6,
|
453 |
+
hr,
|
454 |
+
figure,
|
455 |
+
p,
|
456 |
+
pre {
|
457 |
+
margin: 0;
|
458 |
+
}
|
459 |
+
|
460 |
+
fieldset {
|
461 |
+
margin: 0;
|
462 |
+
padding: 0;
|
463 |
+
}
|
464 |
+
|
465 |
+
legend {
|
466 |
+
padding: 0;
|
467 |
+
}
|
468 |
+
|
469 |
+
ol,
|
470 |
+
ul,
|
471 |
+
menu {
|
472 |
+
list-style: none;
|
473 |
+
margin: 0;
|
474 |
+
padding: 0;
|
475 |
+
}
|
476 |
+
|
477 |
+
/*
|
478 |
+
Reset default styling for dialogs.
|
479 |
+
*/
|
480 |
+
|
481 |
+
dialog {
|
482 |
+
padding: 0;
|
483 |
+
}
|
484 |
+
|
485 |
+
/*
|
486 |
+
Prevent resizing textareas horizontally by default.
|
487 |
+
*/
|
488 |
+
|
489 |
+
textarea {
|
490 |
+
resize: vertical;
|
491 |
+
}
|
492 |
+
|
493 |
+
/*
|
494 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
495 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
496 |
+
*/
|
497 |
+
|
498 |
+
input::placeholder,
|
499 |
+
textarea::placeholder {
|
500 |
+
opacity: 1;
|
501 |
+
/* 1 */
|
502 |
+
color: #9ca3af;
|
503 |
+
/* 2 */
|
504 |
+
}
|
505 |
+
|
506 |
+
/*
|
507 |
+
Set the default cursor for buttons.
|
508 |
+
*/
|
509 |
+
|
510 |
+
button,
|
511 |
+
[role="button"] {
|
512 |
+
cursor: pointer;
|
513 |
+
}
|
514 |
+
|
515 |
+
/*
|
516 |
+
Make sure disabled buttons don't get the pointer cursor.
|
517 |
+
*/
|
518 |
+
|
519 |
+
:disabled {
|
520 |
+
cursor: default;
|
521 |
+
}
|
522 |
+
|
523 |
+
/*
|
524 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
525 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
526 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
527 |
+
*/
|
528 |
+
|
529 |
+
img,
|
530 |
+
svg,
|
531 |
+
video,
|
532 |
+
canvas,
|
533 |
+
audio,
|
534 |
+
iframe,
|
535 |
+
embed,
|
536 |
+
object {
|
537 |
+
display: block;
|
538 |
+
/* 1 */
|
539 |
+
vertical-align: middle;
|
540 |
+
/* 2 */
|
541 |
+
}
|
542 |
+
|
543 |
+
/*
|
544 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
545 |
+
*/
|
546 |
+
|
547 |
+
img,
|
548 |
+
video {
|
549 |
+
max-width: 100%;
|
550 |
+
height: auto;
|
551 |
+
}
|
552 |
+
|
553 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
554 |
+
|
555 |
+
[hidden] {
|
556 |
+
display: none;
|
557 |
+
}
|
558 |
+
|
559 |
+
*,
|
560 |
+
::before,
|
561 |
+
::after {
|
562 |
+
--tw-border-spacing-x: 0;
|
563 |
+
--tw-border-spacing-y: 0;
|
564 |
+
--tw-translate-x: 0;
|
565 |
+
--tw-translate-y: 0;
|
566 |
+
--tw-rotate: 0;
|
567 |
+
--tw-skew-x: 0;
|
568 |
+
--tw-skew-y: 0;
|
569 |
+
--tw-scale-x: 1;
|
570 |
+
--tw-scale-y: 1;
|
571 |
+
--tw-pan-x: ;
|
572 |
+
--tw-pan-y: ;
|
573 |
+
--tw-pinch-zoom: ;
|
574 |
+
--tw-scroll-snap-strictness: proximity;
|
575 |
+
--tw-gradient-from-position: ;
|
576 |
+
--tw-gradient-via-position: ;
|
577 |
+
--tw-gradient-to-position: ;
|
578 |
+
--tw-ordinal: ;
|
579 |
+
--tw-slashed-zero: ;
|
580 |
+
--tw-numeric-figure: ;
|
581 |
+
--tw-numeric-spacing: ;
|
582 |
+
--tw-numeric-fraction: ;
|
583 |
+
--tw-ring-inset: ;
|
584 |
+
--tw-ring-offset-width: 0px;
|
585 |
+
--tw-ring-offset-color: #fff;
|
586 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
587 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
588 |
+
--tw-ring-shadow: 0 0 #0000;
|
589 |
+
--tw-shadow: 0 0 #0000;
|
590 |
+
--tw-shadow-colored: 0 0 #0000;
|
591 |
+
--tw-blur: ;
|
592 |
+
--tw-brightness: ;
|
593 |
+
--tw-contrast: ;
|
594 |
+
--tw-grayscale: ;
|
595 |
+
--tw-hue-rotate: ;
|
596 |
+
--tw-invert: ;
|
597 |
+
--tw-saturate: ;
|
598 |
+
--tw-sepia: ;
|
599 |
+
--tw-drop-shadow: ;
|
600 |
+
--tw-backdrop-blur: ;
|
601 |
+
--tw-backdrop-brightness: ;
|
602 |
+
--tw-backdrop-contrast: ;
|
603 |
+
--tw-backdrop-grayscale: ;
|
604 |
+
--tw-backdrop-hue-rotate: ;
|
605 |
+
--tw-backdrop-invert: ;
|
606 |
+
--tw-backdrop-opacity: ;
|
607 |
+
--tw-backdrop-saturate: ;
|
608 |
+
--tw-backdrop-sepia: ;
|
609 |
+
}
|
610 |
+
|
611 |
+
::backdrop {
|
612 |
+
--tw-border-spacing-x: 0;
|
613 |
+
--tw-border-spacing-y: 0;
|
614 |
+
--tw-translate-x: 0;
|
615 |
+
--tw-translate-y: 0;
|
616 |
+
--tw-rotate: 0;
|
617 |
+
--tw-skew-x: 0;
|
618 |
+
--tw-skew-y: 0;
|
619 |
+
--tw-scale-x: 1;
|
620 |
+
--tw-scale-y: 1;
|
621 |
+
--tw-pan-x: ;
|
622 |
+
--tw-pan-y: ;
|
623 |
+
--tw-pinch-zoom: ;
|
624 |
+
--tw-scroll-snap-strictness: proximity;
|
625 |
+
--tw-gradient-from-position: ;
|
626 |
+
--tw-gradient-via-position: ;
|
627 |
+
--tw-gradient-to-position: ;
|
628 |
+
--tw-ordinal: ;
|
629 |
+
--tw-slashed-zero: ;
|
630 |
+
--tw-numeric-figure: ;
|
631 |
+
--tw-numeric-spacing: ;
|
632 |
+
--tw-numeric-fraction: ;
|
633 |
+
--tw-ring-inset: ;
|
634 |
+
--tw-ring-offset-width: 0px;
|
635 |
+
--tw-ring-offset-color: #fff;
|
636 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
637 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
638 |
+
--tw-ring-shadow: 0 0 #0000;
|
639 |
+
--tw-shadow: 0 0 #0000;
|
640 |
+
--tw-shadow-colored: 0 0 #0000;
|
641 |
+
--tw-blur: ;
|
642 |
+
--tw-brightness: ;
|
643 |
+
--tw-contrast: ;
|
644 |
+
--tw-grayscale: ;
|
645 |
+
--tw-hue-rotate: ;
|
646 |
+
--tw-invert: ;
|
647 |
+
--tw-saturate: ;
|
648 |
+
--tw-sepia: ;
|
649 |
+
--tw-drop-shadow: ;
|
650 |
+
--tw-backdrop-blur: ;
|
651 |
+
--tw-backdrop-brightness: ;
|
652 |
+
--tw-backdrop-contrast: ;
|
653 |
+
--tw-backdrop-grayscale: ;
|
654 |
+
--tw-backdrop-hue-rotate: ;
|
655 |
+
--tw-backdrop-invert: ;
|
656 |
+
--tw-backdrop-opacity: ;
|
657 |
+
--tw-backdrop-saturate: ;
|
658 |
+
--tw-backdrop-sepia: ;
|
659 |
+
}
|
660 |
+
|
661 |
+
.sr-only {
|
662 |
+
position: absolute;
|
663 |
+
width: 1px;
|
664 |
+
height: 1px;
|
665 |
+
padding: 0;
|
666 |
+
margin: -1px;
|
667 |
+
overflow: hidden;
|
668 |
+
clip: rect(0, 0, 0, 0);
|
669 |
+
white-space: nowrap;
|
670 |
+
border-width: 0;
|
671 |
+
}
|
672 |
+
|
673 |
+
.collapse {
|
674 |
+
visibility: collapse;
|
675 |
+
}
|
676 |
+
|
677 |
+
.absolute {
|
678 |
+
position: absolute;
|
679 |
+
}
|
680 |
+
|
681 |
+
.relative {
|
682 |
+
position: relative;
|
683 |
+
}
|
684 |
+
|
685 |
+
.inset-0 {
|
686 |
+
inset: 0px;
|
687 |
+
}
|
688 |
+
|
689 |
+
.end-0 {
|
690 |
+
inset-inline-end: 0px;
|
691 |
+
}
|
692 |
+
|
693 |
+
.top-0 {
|
694 |
+
top: 0px;
|
695 |
+
}
|
696 |
+
|
697 |
+
.z-10 {
|
698 |
+
z-index: 10;
|
699 |
+
}
|
700 |
+
|
701 |
+
.z-20 {
|
702 |
+
z-index: 20;
|
703 |
+
}
|
704 |
+
|
705 |
+
.mx-10 {
|
706 |
+
margin-left: 2.5rem;
|
707 |
+
margin-right: 2.5rem;
|
708 |
+
}
|
709 |
+
|
710 |
+
.mx-auto {
|
711 |
+
margin-left: auto;
|
712 |
+
margin-right: auto;
|
713 |
+
}
|
714 |
+
|
715 |
+
.my-2 {
|
716 |
+
margin-top: 0.5rem;
|
717 |
+
margin-bottom: 0.5rem;
|
718 |
+
}
|
719 |
+
|
720 |
+
.mb-10 {
|
721 |
+
margin-bottom: 2.5rem;
|
722 |
+
}
|
723 |
+
|
724 |
+
.mb-2 {
|
725 |
+
margin-bottom: 0.5rem;
|
726 |
+
}
|
727 |
+
|
728 |
+
.ms-2 {
|
729 |
+
margin-inline-start: 0.5rem;
|
730 |
+
}
|
731 |
+
|
732 |
+
.ms-2\.5 {
|
733 |
+
margin-inline-start: 0.625rem;
|
734 |
+
}
|
735 |
+
|
736 |
+
.ms-3 {
|
737 |
+
margin-inline-start: 0.75rem;
|
738 |
+
}
|
739 |
+
|
740 |
+
.mt-1 {
|
741 |
+
margin-top: 0.25rem;
|
742 |
+
}
|
743 |
+
|
744 |
+
.mt-6 {
|
745 |
+
margin-top: 1.5rem;
|
746 |
+
}
|
747 |
+
|
748 |
+
.block {
|
749 |
+
display: block;
|
750 |
+
}
|
751 |
+
|
752 |
+
.inline-block {
|
753 |
+
display: inline-block;
|
754 |
+
}
|
755 |
+
|
756 |
+
.inline {
|
757 |
+
display: inline;
|
758 |
+
}
|
759 |
+
|
760 |
+
.flex {
|
761 |
+
display: flex;
|
762 |
+
}
|
763 |
+
|
764 |
+
.inline-flex {
|
765 |
+
display: inline-flex;
|
766 |
+
}
|
767 |
+
|
768 |
+
.hidden {
|
769 |
+
display: none;
|
770 |
+
}
|
771 |
+
|
772 |
+
.h-10 {
|
773 |
+
height: 2.5rem;
|
774 |
+
}
|
775 |
+
|
776 |
+
.h-2 {
|
777 |
+
height: 0.5rem;
|
778 |
+
}
|
779 |
+
|
780 |
+
.h-2\.5 {
|
781 |
+
height: 0.625rem;
|
782 |
+
}
|
783 |
+
|
784 |
+
.h-3 {
|
785 |
+
height: 0.75rem;
|
786 |
+
}
|
787 |
+
|
788 |
+
.h-4 {
|
789 |
+
height: 1rem;
|
790 |
+
}
|
791 |
+
|
792 |
+
.h-6 {
|
793 |
+
height: 1.5rem;
|
794 |
+
}
|
795 |
+
|
796 |
+
.h-full {
|
797 |
+
height: 100%;
|
798 |
+
}
|
799 |
+
|
800 |
+
.min-h-screen {
|
801 |
+
min-height: 100vh;
|
802 |
+
}
|
803 |
+
|
804 |
+
.w-1\/3 {
|
805 |
+
width: 33.333333%;
|
806 |
+
}
|
807 |
+
|
808 |
+
.w-10 {
|
809 |
+
width: 2.5rem;
|
810 |
+
}
|
811 |
+
|
812 |
+
.w-2 {
|
813 |
+
width: 0.5rem;
|
814 |
+
}
|
815 |
+
|
816 |
+
.w-2\.5 {
|
817 |
+
width: 0.625rem;
|
818 |
+
}
|
819 |
+
|
820 |
+
.w-3 {
|
821 |
+
width: 0.75rem;
|
822 |
+
}
|
823 |
+
|
824 |
+
.w-4 {
|
825 |
+
width: 1rem;
|
826 |
+
}
|
827 |
+
|
828 |
+
.w-44 {
|
829 |
+
width: 11rem;
|
830 |
+
}
|
831 |
+
|
832 |
+
.w-6 {
|
833 |
+
width: 1.5rem;
|
834 |
+
}
|
835 |
+
|
836 |
+
.w-full {
|
837 |
+
width: 100%;
|
838 |
+
}
|
839 |
+
|
840 |
+
.max-w-lg {
|
841 |
+
max-width: 32rem;
|
842 |
+
}
|
843 |
+
|
844 |
+
.flex-shrink-0 {
|
845 |
+
flex-shrink: 0;
|
846 |
+
}
|
847 |
+
|
848 |
+
.shrink-0 {
|
849 |
+
flex-shrink: 0;
|
850 |
+
}
|
851 |
+
|
852 |
+
.-rotate-90 {
|
853 |
+
--tw-rotate: -90deg;
|
854 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
855 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
856 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
857 |
+
}
|
858 |
+
|
859 |
+
.rotate-180 {
|
860 |
+
--tw-rotate: 180deg;
|
861 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
862 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
863 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
864 |
+
}
|
865 |
+
|
866 |
+
.cursor-pointer {
|
867 |
+
cursor: pointer;
|
868 |
+
}
|
869 |
+
|
870 |
+
.flex-col {
|
871 |
+
flex-direction: column;
|
872 |
+
}
|
873 |
+
|
874 |
+
.items-center {
|
875 |
+
align-items: center;
|
876 |
+
}
|
877 |
+
|
878 |
+
.justify-center {
|
879 |
+
justify-content: center;
|
880 |
+
}
|
881 |
+
|
882 |
+
.justify-between {
|
883 |
+
justify-content: space-between;
|
884 |
+
}
|
885 |
+
|
886 |
+
.gap-3 {
|
887 |
+
gap: 0.75rem;
|
888 |
+
}
|
889 |
+
|
890 |
+
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
891 |
+
--tw-space-x-reverse: 0;
|
892 |
+
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
893 |
+
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
894 |
+
}
|
895 |
+
|
896 |
+
.divide-y > :not([hidden]) ~ :not([hidden]) {
|
897 |
+
--tw-divide-y-reverse: 0;
|
898 |
+
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
899 |
+
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
|
900 |
+
}
|
901 |
+
|
902 |
+
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
|
903 |
+
--tw-divide-opacity: 1;
|
904 |
+
border-color: rgb(243 244 246 / var(--tw-divide-opacity));
|
905 |
+
}
|
906 |
+
|
907 |
+
.overflow-hidden {
|
908 |
+
overflow: hidden;
|
909 |
+
}
|
910 |
+
|
911 |
+
.whitespace-nowrap {
|
912 |
+
white-space: nowrap;
|
913 |
+
}
|
914 |
+
|
915 |
+
.rounded-full {
|
916 |
+
border-radius: 9999px;
|
917 |
+
}
|
918 |
+
|
919 |
+
.rounded-lg {
|
920 |
+
border-radius: 0.5rem;
|
921 |
+
}
|
922 |
+
|
923 |
+
.rounded-e-lg {
|
924 |
+
border-start-end-radius: 0.5rem;
|
925 |
+
border-end-end-radius: 0.5rem;
|
926 |
+
}
|
927 |
+
|
928 |
+
.rounded-s-lg {
|
929 |
+
border-start-start-radius: 0.5rem;
|
930 |
+
border-end-start-radius: 0.5rem;
|
931 |
+
}
|
932 |
+
|
933 |
+
.rounded-t-xl {
|
934 |
+
border-top-left-radius: 0.75rem;
|
935 |
+
border-top-right-radius: 0.75rem;
|
936 |
+
}
|
937 |
+
|
938 |
+
.border {
|
939 |
+
border-width: 1px;
|
940 |
+
}
|
941 |
+
|
942 |
+
.border-b-0 {
|
943 |
+
border-bottom-width: 0px;
|
944 |
+
}
|
945 |
+
|
946 |
+
.border-s-2 {
|
947 |
+
border-inline-start-width: 2px;
|
948 |
+
}
|
949 |
+
|
950 |
+
.border-t-0 {
|
951 |
+
border-top-width: 0px;
|
952 |
+
}
|
953 |
+
|
954 |
+
.border-blue-700 {
|
955 |
+
--tw-border-opacity: 1;
|
956 |
+
border-color: rgb(29 78 216 / var(--tw-border-opacity));
|
957 |
+
}
|
958 |
+
|
959 |
+
.border-gray-200 {
|
960 |
+
--tw-border-opacity: 1;
|
961 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
962 |
+
}
|
963 |
+
|
964 |
+
.border-gray-300 {
|
965 |
+
--tw-border-opacity: 1;
|
966 |
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
967 |
+
}
|
968 |
+
|
969 |
+
.border-s-gray-50 {
|
970 |
+
--tw-border-opacity: 1;
|
971 |
+
border-inline-start-color: rgb(249 250 251 / var(--tw-border-opacity));
|
972 |
+
}
|
973 |
+
|
974 |
+
.bg-blue-200 {
|
975 |
+
--tw-bg-opacity: 1;
|
976 |
+
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
|
977 |
+
}
|
978 |
+
|
979 |
+
.bg-blue-700 {
|
980 |
+
--tw-bg-opacity: 1;
|
981 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
982 |
+
}
|
983 |
+
|
984 |
+
.bg-gray-100 {
|
985 |
+
--tw-bg-opacity: 1;
|
986 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
987 |
+
}
|
988 |
+
|
989 |
+
.bg-gray-50 {
|
990 |
+
--tw-bg-opacity: 1;
|
991 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
992 |
+
}
|
993 |
+
|
994 |
+
.bg-green-100 {
|
995 |
+
--tw-bg-opacity: 1;
|
996 |
+
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
997 |
+
}
|
998 |
+
|
999 |
+
.bg-green-200 {
|
1000 |
+
--tw-bg-opacity: 1;
|
1001 |
+
background-color: rgb(187 247 208 / var(--tw-bg-opacity));
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
.bg-orange-200 {
|
1005 |
+
--tw-bg-opacity: 1;
|
1006 |
+
background-color: rgb(254 215 170 / var(--tw-bg-opacity));
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
.bg-violet-100 {
|
1010 |
+
--tw-bg-opacity: 1;
|
1011 |
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity));
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
.bg-white {
|
1015 |
+
--tw-bg-opacity: 1;
|
1016 |
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
.bg-yellow-100 {
|
1020 |
+
--tw-bg-opacity: 1;
|
1021 |
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity));
|
1022 |
+
}
|
1023 |
+
|
1024 |
+
.bg-\[url\(\/img\/grid\.svg\)\] {
|
1025 |
+
background-image: url(/img/grid.svg);
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
.bg-center {
|
1029 |
+
background-position: center;
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
.p-0 {
|
1033 |
+
padding: 0px;
|
1034 |
+
}
|
1035 |
+
|
1036 |
+
.p-0\.5 {
|
1037 |
+
padding: 0.125rem;
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
.p-1 {
|
1041 |
+
padding: 0.25rem;
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
.p-2 {
|
1045 |
+
padding: 0.5rem;
|
1046 |
+
}
|
1047 |
+
|
1048 |
+
.p-2\.5 {
|
1049 |
+
padding: 0.625rem;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
.p-5 {
|
1053 |
+
padding: 1.25rem;
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
.px-2 {
|
1057 |
+
padding-left: 0.5rem;
|
1058 |
+
padding-right: 0.5rem;
|
1059 |
+
}
|
1060 |
+
|
1061 |
+
.px-4 {
|
1062 |
+
padding-left: 1rem;
|
1063 |
+
padding-right: 1rem;
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
.px-5 {
|
1067 |
+
padding-left: 1.25rem;
|
1068 |
+
padding-right: 1.25rem;
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
.px-6 {
|
1072 |
+
padding-left: 1.5rem;
|
1073 |
+
padding-right: 1.5rem;
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
.py-2 {
|
1077 |
+
padding-top: 0.5rem;
|
1078 |
+
padding-bottom: 0.5rem;
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
.py-2\.5 {
|
1082 |
+
padding-top: 0.625rem;
|
1083 |
+
padding-bottom: 0.625rem;
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
.py-6 {
|
1087 |
+
padding-top: 1.5rem;
|
1088 |
+
padding-bottom: 1.5rem;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
.pb-2 {
|
1092 |
+
padding-bottom: 0.5rem;
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
.pb-8 {
|
1096 |
+
padding-bottom: 2rem;
|
1097 |
+
}
|
1098 |
+
|
1099 |
+
.pt-10 {
|
1100 |
+
padding-top: 2.5rem;
|
1101 |
+
}
|
1102 |
+
|
1103 |
+
.text-center {
|
1104 |
+
text-align: center;
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
.text-sm {
|
1108 |
+
font-size: 0.875rem;
|
1109 |
+
line-height: 1.25rem;
|
1110 |
+
}
|
1111 |
+
|
1112 |
+
.text-xs {
|
1113 |
+
font-size: 0.75rem;
|
1114 |
+
line-height: 1rem;
|
1115 |
+
}
|
1116 |
+
|
1117 |
+
.font-bold {
|
1118 |
+
font-weight: 700;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
.font-medium {
|
1122 |
+
font-weight: 500;
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
.font-semibold {
|
1126 |
+
font-weight: 600;
|
1127 |
+
}
|
1128 |
+
|
1129 |
+
.text-blue-800 {
|
1130 |
+
--tw-text-opacity: 1;
|
1131 |
+
color: rgb(30 64 175);
|
1132 |
+
}
|
1133 |
+
|
1134 |
+
.text-gray-400 {
|
1135 |
+
--tw-text-opacity: 1;
|
1136 |
+
color: rgb(156 163 175);
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
.text-gray-500 {
|
1140 |
+
--tw-text-opacity: 1;
|
1141 |
+
color: rgb(107 114 128);
|
1142 |
+
}
|
1143 |
+
|
1144 |
+
.text-gray-600 {
|
1145 |
+
--tw-text-opacity: 1;
|
1146 |
+
color: rgb(75 85 99);
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
.text-gray-700 {
|
1150 |
+
--tw-text-opacity: 1;
|
1151 |
+
color: rgb(55 65 81);
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
.text-gray-900 {
|
1155 |
+
--tw-text-opacity: 1;
|
1156 |
+
color: rgb(17 24 39);
|
1157 |
+
}
|
1158 |
+
|
1159 |
+
.text-white {
|
1160 |
+
--tw-text-opacity: 1;
|
1161 |
+
color: rgb(255 255 255);
|
1162 |
+
}
|
1163 |
+
|
1164 |
+
.shadow {
|
1165 |
+
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
1166 |
+
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
|
1167 |
+
0 1px 2px -1px var(--tw-shadow-color);
|
1168 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1169 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
.shadow-xl {
|
1173 |
+
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
|
1174 |
+
0 8px 10px -6px rgb(0 0 0 / 0.1);
|
1175 |
+
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
|
1176 |
+
0 8px 10px -6px var(--tw-shadow-color);
|
1177 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1178 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
.ring-1 {
|
1182 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1183 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1184 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1185 |
+
calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1186 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1187 |
+
var(--tw-shadow, 0 0 #0000);
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
.ring-gray-900\/5 {
|
1191 |
+
--tw-ring-color: rgb(17 24 39 / 0.05);
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
.sequence_container {
|
1195 |
+
overflow-wrap: anywhere;
|
1196 |
+
counter-reset: sequence;
|
1197 |
+
}
|
1198 |
+
|
1199 |
+
.sequence_container .sequence__chunk {
|
1200 |
+
display: inline-block;
|
1201 |
+
margin: 0.1rem 0 1rem 1rem;
|
1202 |
+
/* width: 10ch; */
|
1203 |
+
position: relative;
|
1204 |
+
white-space: nowrap;
|
1205 |
+
}
|
1206 |
+
|
1207 |
+
.sequence_container .sequence__chunk:not(:last-child):before,
|
1208 |
+
.sequence_container .sequence__chunk--display-last:before {
|
1209 |
+
content: counter(sequence);
|
1210 |
+
counter-increment: sequence 10;
|
1211 |
+
position: absolute;
|
1212 |
+
top: -0.8em;
|
1213 |
+
right: 0;
|
1214 |
+
opacity: 0.5;
|
1215 |
+
font-weight: bold;
|
1216 |
+
}
|
1217 |
+
|
1218 |
+
.sequence-container .sequence__chunk::after {
|
1219 |
+
content: "";
|
1220 |
+
position: absolute;
|
1221 |
+
bottom: 0;
|
1222 |
+
left: 0;
|
1223 |
+
right: 0;
|
1224 |
+
transform-origin: left;
|
1225 |
+
transform: scaleX(0.1);
|
1226 |
+
box-shadow: var(--box-shadow);
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
.sequence__chunk span {
|
1230 |
+
padding: 0 0.05rem;
|
1231 |
+
}
|
1232 |
+
|
1233 |
+
.hover\:bg-blue-800:hover {
|
1234 |
+
--tw-bg-opacity: 1;
|
1235 |
+
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
|
1236 |
+
}
|
1237 |
+
|
1238 |
+
.hover\:bg-gray-100:hover {
|
1239 |
+
--tw-bg-opacity: 1;
|
1240 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1241 |
+
}
|
1242 |
+
|
1243 |
+
.hover\:bg-gray-200:hover {
|
1244 |
+
--tw-bg-opacity: 1;
|
1245 |
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
.hover\:font-bold:hover {
|
1249 |
+
font-weight: 700;
|
1250 |
+
}
|
1251 |
+
|
1252 |
+
.focus\:border-blue-500:focus {
|
1253 |
+
--tw-border-opacity: 1;
|
1254 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1255 |
+
}
|
1256 |
+
|
1257 |
+
.focus\:outline-none:focus {
|
1258 |
+
outline: 2px solid transparent;
|
1259 |
+
outline-offset: 2px;
|
1260 |
+
}
|
1261 |
+
|
1262 |
+
.focus\:ring-4:focus {
|
1263 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1264 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1265 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1266 |
+
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1267 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1268 |
+
var(--tw-shadow, 0 0 #0000);
|
1269 |
+
}
|
1270 |
+
|
1271 |
+
.focus\:ring-blue-300:focus {
|
1272 |
+
--tw-ring-opacity: 1;
|
1273 |
+
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
1274 |
+
}
|
1275 |
+
|
1276 |
+
.focus\:ring-blue-500:focus {
|
1277 |
+
--tw-ring-opacity: 1;
|
1278 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
.focus\:ring-gray-100:focus {
|
1282 |
+
--tw-ring-opacity: 1;
|
1283 |
+
--tw-ring-color: rgb(243 244 246 / var(--tw-ring-opacity));
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
.focus\:ring-gray-200:focus {
|
1287 |
+
--tw-ring-opacity: 1;
|
1288 |
+
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
@media (min-width: 640px) {
|
1292 |
+
.sm\:mx-auto {
|
1293 |
+
margin-left: auto;
|
1294 |
+
margin-right: auto;
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
.sm\:rounded-lg {
|
1298 |
+
border-radius: 0.5rem;
|
1299 |
+
}
|
1300 |
+
|
1301 |
+
.sm\:px-10 {
|
1302 |
+
padding-left: 2.5rem;
|
1303 |
+
padding-right: 2.5rem;
|
1304 |
+
}
|
1305 |
+
|
1306 |
+
.sm\:py-12 {
|
1307 |
+
padding-top: 3rem;
|
1308 |
+
padding-bottom: 3rem;
|
1309 |
+
}
|
1310 |
+
}
|
1311 |
+
|
1312 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1313 |
+
text-align: right;
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
@media (prefers-color-scheme: dark) {
|
1317 |
+
.dark\:border-gray-600 {
|
1318 |
+
--tw-border-opacity: 1;
|
1319 |
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1320 |
+
}
|
1321 |
+
|
1322 |
+
.dark\:border-gray-700 {
|
1323 |
+
--tw-border-opacity: 1;
|
1324 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1325 |
+
}
|
1326 |
+
|
1327 |
+
.dark\:border-s-gray-700 {
|
1328 |
+
--tw-border-opacity: 1;
|
1329 |
+
border-inline-start-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1330 |
+
}
|
1331 |
+
|
1332 |
+
.dark\:bg-blue-600 {
|
1333 |
+
--tw-bg-opacity: 1;
|
1334 |
+
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
|
1335 |
+
}
|
1336 |
+
|
1337 |
+
.dark\:bg-gray-600 {
|
1338 |
+
--tw-bg-opacity: 1;
|
1339 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1340 |
+
}
|
1341 |
+
|
1342 |
+
.dark\:bg-gray-700 {
|
1343 |
+
--tw-bg-opacity: 1;
|
1344 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1345 |
+
}
|
1346 |
+
|
1347 |
+
.dark\:bg-gray-900 {
|
1348 |
+
--tw-bg-opacity: 1;
|
1349 |
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
|
1350 |
+
}
|
1351 |
+
|
1352 |
+
.dark\:text-gray-200 {
|
1353 |
+
--tw-text-opacity: 1;
|
1354 |
+
color: rgb(229 231 235);
|
1355 |
+
}
|
1356 |
+
|
1357 |
+
.dark\:text-gray-300 {
|
1358 |
+
--tw-text-opacity: 1;
|
1359 |
+
color: rgb(209 213 219);
|
1360 |
+
}
|
1361 |
+
|
1362 |
+
.dark\:text-gray-400 {
|
1363 |
+
--tw-text-opacity: 1;
|
1364 |
+
color: rgb(156 163 175);
|
1365 |
+
}
|
1366 |
+
|
1367 |
+
.dark\:text-white {
|
1368 |
+
--tw-text-opacity: 1;
|
1369 |
+
color: rgb(255 255 255);
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
.dark\:placeholder-gray-400::placeholder {
|
1373 |
+
--tw-placeholder-opacity: 1;
|
1374 |
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1375 |
+
}
|
1376 |
+
|
1377 |
+
.dark\:hover\:bg-blue-700:hover {
|
1378 |
+
--tw-bg-opacity: 1;
|
1379 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1380 |
+
}
|
1381 |
+
|
1382 |
+
.dark\:hover\:bg-gray-600:hover {
|
1383 |
+
--tw-bg-opacity: 1;
|
1384 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1385 |
+
}
|
1386 |
+
|
1387 |
+
.dark\:hover\:bg-gray-800:hover {
|
1388 |
+
--tw-bg-opacity: 1;
|
1389 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1390 |
+
}
|
1391 |
+
|
1392 |
+
.dark\:hover\:text-white:hover {
|
1393 |
+
--tw-text-opacity: 1;
|
1394 |
+
color: rgb(255 255 255);
|
1395 |
+
}
|
1396 |
+
|
1397 |
+
.dark\:focus\:border-blue-500:focus {
|
1398 |
+
--tw-border-opacity: 1;
|
1399 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1400 |
+
}
|
1401 |
+
|
1402 |
+
.dark\:focus\:ring-blue-500:focus {
|
1403 |
+
--tw-ring-opacity: 1;
|
1404 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1405 |
+
}
|
1406 |
+
|
1407 |
+
.dark\:focus\:ring-blue-800:focus {
|
1408 |
+
--tw-ring-opacity: 1;
|
1409 |
+
--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
.dark\:focus\:ring-gray-700:focus {
|
1413 |
+
--tw-ring-opacity: 1;
|
1414 |
+
--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity));
|
1415 |
+
}
|
1416 |
+
|
1417 |
+
.dark\:focus\:ring-gray-800:focus {
|
1418 |
+
--tw-ring-opacity: 1;
|
1419 |
+
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
|
1420 |
+
}
|
1421 |
+
}
|
1422 |
+
</style>
|
src/frontend/shared/Sequence.svelte
ADDED
@@ -0,0 +1,1336 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
export let seq = "";
|
3 |
+
|
4 |
+
// convert sequence into chunked array of 10
|
5 |
+
|
6 |
+
let chunked_seq = seq.match(/.{1,10}/g);
|
7 |
+
|
8 |
+
// store residue index of each residue per chunk
|
9 |
+
let chunk_ids = chunked_seq.map((chunk, i) => {
|
10 |
+
return chunk.split("").map((_, j) => {
|
11 |
+
return i * 10 + j + 1;
|
12 |
+
});
|
13 |
+
});
|
14 |
+
</script>
|
15 |
+
|
16 |
+
<div class="sequence_container text-xs">
|
17 |
+
{#each chunked_seq as chunk, i}
|
18 |
+
<div class="sequence__chunk">
|
19 |
+
{#each chunk as letter, j}
|
20 |
+
<span
|
21 |
+
class="p-0.1 text-center w-full inline hover:font-bold cursor-pointer item-selectable ds-selectable"
|
22 |
+
style="font-family: monospace;"
|
23 |
+
>
|
24 |
+
<div class="inline-block p-0.5" title="residue {chunk_ids[i][j]}">
|
25 |
+
{letter}
|
26 |
+
</div>
|
27 |
+
</span>
|
28 |
+
{/each}
|
29 |
+
</div>
|
30 |
+
{/each}
|
31 |
+
</div>
|
32 |
+
|
33 |
+
<style>
|
34 |
+
/*
|
35 |
+
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
|
36 |
+
*/
|
37 |
+
|
38 |
+
/*
|
39 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
40 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
41 |
+
*/
|
42 |
+
|
43 |
+
*,
|
44 |
+
::before,
|
45 |
+
::after {
|
46 |
+
box-sizing: border-box;
|
47 |
+
/* 1 */
|
48 |
+
border-width: 0;
|
49 |
+
/* 2 */
|
50 |
+
border-style: solid;
|
51 |
+
/* 2 */
|
52 |
+
border-color: #e5e7eb;
|
53 |
+
/* 2 */
|
54 |
+
}
|
55 |
+
|
56 |
+
::before,
|
57 |
+
::after {
|
58 |
+
--tw-content: "";
|
59 |
+
}
|
60 |
+
|
61 |
+
/*
|
62 |
+
1. Use a consistent sensible line-height in all browsers.
|
63 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
64 |
+
3. Use a more readable tab size.
|
65 |
+
4. Use the user's configured `sans` font-family by default.
|
66 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
67 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
68 |
+
7. Disable tap highlights on iOS
|
69 |
+
*/
|
70 |
+
|
71 |
+
html,
|
72 |
+
:host {
|
73 |
+
line-height: 1.5;
|
74 |
+
/* 1 */
|
75 |
+
-webkit-text-size-adjust: 100%;
|
76 |
+
/* 2 */
|
77 |
+
-moz-tab-size: 4;
|
78 |
+
/* 3 */
|
79 |
+
tab-size: 4;
|
80 |
+
/* 3 */
|
81 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
82 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
83 |
+
/* 4 */
|
84 |
+
font-feature-settings: normal;
|
85 |
+
/* 5 */
|
86 |
+
font-variation-settings: normal;
|
87 |
+
/* 6 */
|
88 |
+
-webkit-tap-highlight-color: transparent;
|
89 |
+
/* 7 */
|
90 |
+
}
|
91 |
+
|
92 |
+
/*
|
93 |
+
1. Remove the margin in all browsers.
|
94 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
95 |
+
*/
|
96 |
+
|
97 |
+
body {
|
98 |
+
margin: 0;
|
99 |
+
/* 1 */
|
100 |
+
line-height: inherit;
|
101 |
+
/* 2 */
|
102 |
+
}
|
103 |
+
|
104 |
+
/*
|
105 |
+
1. Add the correct height in Firefox.
|
106 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
107 |
+
3. Ensure horizontal rules are visible by default.
|
108 |
+
*/
|
109 |
+
|
110 |
+
hr {
|
111 |
+
height: 0;
|
112 |
+
/* 1 */
|
113 |
+
color: inherit;
|
114 |
+
/* 2 */
|
115 |
+
border-top-width: 1px;
|
116 |
+
/* 3 */
|
117 |
+
}
|
118 |
+
|
119 |
+
/*
|
120 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
121 |
+
*/
|
122 |
+
|
123 |
+
abbr:where([title]) {
|
124 |
+
text-decoration: underline dotted;
|
125 |
+
}
|
126 |
+
|
127 |
+
/*
|
128 |
+
Remove the default font size and weight for headings.
|
129 |
+
*/
|
130 |
+
|
131 |
+
h1,
|
132 |
+
h2,
|
133 |
+
h3,
|
134 |
+
h4,
|
135 |
+
h5,
|
136 |
+
h6 {
|
137 |
+
font-size: inherit;
|
138 |
+
font-weight: inherit;
|
139 |
+
}
|
140 |
+
|
141 |
+
/*
|
142 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
143 |
+
*/
|
144 |
+
|
145 |
+
a {
|
146 |
+
color: inherit;
|
147 |
+
text-decoration: inherit;
|
148 |
+
}
|
149 |
+
|
150 |
+
/*
|
151 |
+
Add the correct font weight in Edge and Safari.
|
152 |
+
*/
|
153 |
+
|
154 |
+
b,
|
155 |
+
strong {
|
156 |
+
font-weight: bolder;
|
157 |
+
}
|
158 |
+
|
159 |
+
/*
|
160 |
+
1. Use the user's configured `mono` font-family by default.
|
161 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
162 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
163 |
+
4. Correct the odd `em` font sizing in all browsers.
|
164 |
+
*/
|
165 |
+
|
166 |
+
code,
|
167 |
+
kbd,
|
168 |
+
samp,
|
169 |
+
pre {
|
170 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
171 |
+
"Liberation Mono", "Courier New", monospace;
|
172 |
+
/* 1 */
|
173 |
+
font-feature-settings: normal;
|
174 |
+
/* 2 */
|
175 |
+
font-variation-settings: normal;
|
176 |
+
/* 3 */
|
177 |
+
font-size: 1em;
|
178 |
+
/* 4 */
|
179 |
+
}
|
180 |
+
|
181 |
+
/*
|
182 |
+
Add the correct font size in all browsers.
|
183 |
+
*/
|
184 |
+
|
185 |
+
small {
|
186 |
+
font-size: 80%;
|
187 |
+
}
|
188 |
+
|
189 |
+
/*
|
190 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
191 |
+
*/
|
192 |
+
|
193 |
+
sub,
|
194 |
+
sup {
|
195 |
+
font-size: 75%;
|
196 |
+
line-height: 0;
|
197 |
+
position: relative;
|
198 |
+
vertical-align: baseline;
|
199 |
+
}
|
200 |
+
|
201 |
+
sub {
|
202 |
+
bottom: -0.25em;
|
203 |
+
}
|
204 |
+
|
205 |
+
sup {
|
206 |
+
top: -0.5em;
|
207 |
+
}
|
208 |
+
|
209 |
+
/*
|
210 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
211 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
212 |
+
3. Remove gaps between table borders by default.
|
213 |
+
*/
|
214 |
+
|
215 |
+
table {
|
216 |
+
text-indent: 0;
|
217 |
+
/* 1 */
|
218 |
+
border-color: inherit;
|
219 |
+
/* 2 */
|
220 |
+
border-collapse: collapse;
|
221 |
+
/* 3 */
|
222 |
+
}
|
223 |
+
|
224 |
+
/*
|
225 |
+
1. Change the font styles in all browsers.
|
226 |
+
2. Remove the margin in Firefox and Safari.
|
227 |
+
3. Remove default padding in all browsers.
|
228 |
+
*/
|
229 |
+
|
230 |
+
button,
|
231 |
+
input,
|
232 |
+
optgroup,
|
233 |
+
select,
|
234 |
+
textarea {
|
235 |
+
font-family: inherit;
|
236 |
+
/* 1 */
|
237 |
+
font-feature-settings: inherit;
|
238 |
+
/* 1 */
|
239 |
+
font-variation-settings: inherit;
|
240 |
+
/* 1 */
|
241 |
+
font-size: 100%;
|
242 |
+
/* 1 */
|
243 |
+
font-weight: inherit;
|
244 |
+
/* 1 */
|
245 |
+
line-height: inherit;
|
246 |
+
/* 1 */
|
247 |
+
color: inherit;
|
248 |
+
/* 1 */
|
249 |
+
margin: 0;
|
250 |
+
/* 2 */
|
251 |
+
padding: 0;
|
252 |
+
/* 3 */
|
253 |
+
}
|
254 |
+
|
255 |
+
/*
|
256 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
257 |
+
*/
|
258 |
+
|
259 |
+
button,
|
260 |
+
select {
|
261 |
+
text-transform: none;
|
262 |
+
}
|
263 |
+
|
264 |
+
/*
|
265 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
266 |
+
2. Remove default button styles.
|
267 |
+
*/
|
268 |
+
|
269 |
+
button,
|
270 |
+
[type="button"],
|
271 |
+
[type="reset"],
|
272 |
+
[type="submit"] {
|
273 |
+
-webkit-appearance: button;
|
274 |
+
/* 1 */
|
275 |
+
background-color: transparent;
|
276 |
+
/* 2 */
|
277 |
+
background-image: none;
|
278 |
+
/* 2 */
|
279 |
+
}
|
280 |
+
|
281 |
+
/*
|
282 |
+
Use the modern Firefox focus style for all focusable elements.
|
283 |
+
*/
|
284 |
+
|
285 |
+
:-moz-focusring {
|
286 |
+
outline: auto;
|
287 |
+
}
|
288 |
+
|
289 |
+
/*
|
290 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
291 |
+
*/
|
292 |
+
|
293 |
+
:-moz-ui-invalid {
|
294 |
+
box-shadow: none;
|
295 |
+
}
|
296 |
+
|
297 |
+
/*
|
298 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
299 |
+
*/
|
300 |
+
|
301 |
+
progress {
|
302 |
+
vertical-align: baseline;
|
303 |
+
}
|
304 |
+
|
305 |
+
/*
|
306 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
307 |
+
*/
|
308 |
+
|
309 |
+
::-webkit-inner-spin-button,
|
310 |
+
::-webkit-outer-spin-button {
|
311 |
+
height: auto;
|
312 |
+
}
|
313 |
+
|
314 |
+
/*
|
315 |
+
1. Correct the odd appearance in Chrome and Safari.
|
316 |
+
2. Correct the outline style in Safari.
|
317 |
+
*/
|
318 |
+
|
319 |
+
[type="search"] {
|
320 |
+
-webkit-appearance: textfield;
|
321 |
+
/* 1 */
|
322 |
+
outline-offset: -2px;
|
323 |
+
/* 2 */
|
324 |
+
}
|
325 |
+
|
326 |
+
/*
|
327 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
328 |
+
*/
|
329 |
+
|
330 |
+
::-webkit-search-decoration {
|
331 |
+
-webkit-appearance: none;
|
332 |
+
}
|
333 |
+
|
334 |
+
/*
|
335 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
336 |
+
2. Change font properties to `inherit` in Safari.
|
337 |
+
*/
|
338 |
+
|
339 |
+
::-webkit-file-upload-button {
|
340 |
+
-webkit-appearance: button;
|
341 |
+
/* 1 */
|
342 |
+
font: inherit;
|
343 |
+
/* 2 */
|
344 |
+
}
|
345 |
+
|
346 |
+
/*
|
347 |
+
Add the correct display in Chrome and Safari.
|
348 |
+
*/
|
349 |
+
|
350 |
+
summary {
|
351 |
+
display: list-item;
|
352 |
+
}
|
353 |
+
|
354 |
+
/*
|
355 |
+
Removes the default spacing and border for appropriate elements.
|
356 |
+
*/
|
357 |
+
|
358 |
+
blockquote,
|
359 |
+
dl,
|
360 |
+
dd,
|
361 |
+
h1,
|
362 |
+
h2,
|
363 |
+
h3,
|
364 |
+
h4,
|
365 |
+
h5,
|
366 |
+
h6,
|
367 |
+
hr,
|
368 |
+
figure,
|
369 |
+
p,
|
370 |
+
pre {
|
371 |
+
margin: 0;
|
372 |
+
}
|
373 |
+
|
374 |
+
fieldset {
|
375 |
+
margin: 0;
|
376 |
+
padding: 0;
|
377 |
+
}
|
378 |
+
|
379 |
+
legend {
|
380 |
+
padding: 0;
|
381 |
+
}
|
382 |
+
|
383 |
+
ol,
|
384 |
+
ul,
|
385 |
+
menu {
|
386 |
+
list-style: none;
|
387 |
+
margin: 0;
|
388 |
+
padding: 0;
|
389 |
+
}
|
390 |
+
|
391 |
+
/*
|
392 |
+
Reset default styling for dialogs.
|
393 |
+
*/
|
394 |
+
|
395 |
+
dialog {
|
396 |
+
padding: 0;
|
397 |
+
}
|
398 |
+
|
399 |
+
/*
|
400 |
+
Prevent resizing textareas horizontally by default.
|
401 |
+
*/
|
402 |
+
|
403 |
+
textarea {
|
404 |
+
resize: vertical;
|
405 |
+
}
|
406 |
+
|
407 |
+
/*
|
408 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
409 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
410 |
+
*/
|
411 |
+
|
412 |
+
input::placeholder,
|
413 |
+
textarea::placeholder {
|
414 |
+
opacity: 1;
|
415 |
+
/* 1 */
|
416 |
+
color: #9ca3af;
|
417 |
+
/* 2 */
|
418 |
+
}
|
419 |
+
|
420 |
+
/*
|
421 |
+
Set the default cursor for buttons.
|
422 |
+
*/
|
423 |
+
|
424 |
+
button,
|
425 |
+
[role="button"] {
|
426 |
+
cursor: pointer;
|
427 |
+
}
|
428 |
+
|
429 |
+
/*
|
430 |
+
Make sure disabled buttons don't get the pointer cursor.
|
431 |
+
*/
|
432 |
+
|
433 |
+
:disabled {
|
434 |
+
cursor: default;
|
435 |
+
}
|
436 |
+
|
437 |
+
/*
|
438 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
439 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
440 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
441 |
+
*/
|
442 |
+
|
443 |
+
img,
|
444 |
+
svg,
|
445 |
+
video,
|
446 |
+
canvas,
|
447 |
+
audio,
|
448 |
+
iframe,
|
449 |
+
embed,
|
450 |
+
object {
|
451 |
+
display: block;
|
452 |
+
/* 1 */
|
453 |
+
vertical-align: middle;
|
454 |
+
/* 2 */
|
455 |
+
}
|
456 |
+
|
457 |
+
/*
|
458 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
459 |
+
*/
|
460 |
+
|
461 |
+
img,
|
462 |
+
video {
|
463 |
+
max-width: 100%;
|
464 |
+
height: auto;
|
465 |
+
}
|
466 |
+
|
467 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
468 |
+
|
469 |
+
[hidden] {
|
470 |
+
display: none;
|
471 |
+
}
|
472 |
+
|
473 |
+
*,
|
474 |
+
::before,
|
475 |
+
::after {
|
476 |
+
--tw-border-spacing-x: 0;
|
477 |
+
--tw-border-spacing-y: 0;
|
478 |
+
--tw-translate-x: 0;
|
479 |
+
--tw-translate-y: 0;
|
480 |
+
--tw-rotate: 0;
|
481 |
+
--tw-skew-x: 0;
|
482 |
+
--tw-skew-y: 0;
|
483 |
+
--tw-scale-x: 1;
|
484 |
+
--tw-scale-y: 1;
|
485 |
+
--tw-pan-x: ;
|
486 |
+
--tw-pan-y: ;
|
487 |
+
--tw-pinch-zoom: ;
|
488 |
+
--tw-scroll-snap-strictness: proximity;
|
489 |
+
--tw-gradient-from-position: ;
|
490 |
+
--tw-gradient-via-position: ;
|
491 |
+
--tw-gradient-to-position: ;
|
492 |
+
--tw-ordinal: ;
|
493 |
+
--tw-slashed-zero: ;
|
494 |
+
--tw-numeric-figure: ;
|
495 |
+
--tw-numeric-spacing: ;
|
496 |
+
--tw-numeric-fraction: ;
|
497 |
+
--tw-ring-inset: ;
|
498 |
+
--tw-ring-offset-width: 0px;
|
499 |
+
--tw-ring-offset-color: #fff;
|
500 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
501 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
502 |
+
--tw-ring-shadow: 0 0 #0000;
|
503 |
+
--tw-shadow: 0 0 #0000;
|
504 |
+
--tw-shadow-colored: 0 0 #0000;
|
505 |
+
--tw-blur: ;
|
506 |
+
--tw-brightness: ;
|
507 |
+
--tw-contrast: ;
|
508 |
+
--tw-grayscale: ;
|
509 |
+
--tw-hue-rotate: ;
|
510 |
+
--tw-invert: ;
|
511 |
+
--tw-saturate: ;
|
512 |
+
--tw-sepia: ;
|
513 |
+
--tw-drop-shadow: ;
|
514 |
+
--tw-backdrop-blur: ;
|
515 |
+
--tw-backdrop-brightness: ;
|
516 |
+
--tw-backdrop-contrast: ;
|
517 |
+
--tw-backdrop-grayscale: ;
|
518 |
+
--tw-backdrop-hue-rotate: ;
|
519 |
+
--tw-backdrop-invert: ;
|
520 |
+
--tw-backdrop-opacity: ;
|
521 |
+
--tw-backdrop-saturate: ;
|
522 |
+
--tw-backdrop-sepia: ;
|
523 |
+
}
|
524 |
+
|
525 |
+
::backdrop {
|
526 |
+
--tw-border-spacing-x: 0;
|
527 |
+
--tw-border-spacing-y: 0;
|
528 |
+
--tw-translate-x: 0;
|
529 |
+
--tw-translate-y: 0;
|
530 |
+
--tw-rotate: 0;
|
531 |
+
--tw-skew-x: 0;
|
532 |
+
--tw-skew-y: 0;
|
533 |
+
--tw-scale-x: 1;
|
534 |
+
--tw-scale-y: 1;
|
535 |
+
--tw-pan-x: ;
|
536 |
+
--tw-pan-y: ;
|
537 |
+
--tw-pinch-zoom: ;
|
538 |
+
--tw-scroll-snap-strictness: proximity;
|
539 |
+
--tw-gradient-from-position: ;
|
540 |
+
--tw-gradient-via-position: ;
|
541 |
+
--tw-gradient-to-position: ;
|
542 |
+
--tw-ordinal: ;
|
543 |
+
--tw-slashed-zero: ;
|
544 |
+
--tw-numeric-figure: ;
|
545 |
+
--tw-numeric-spacing: ;
|
546 |
+
--tw-numeric-fraction: ;
|
547 |
+
--tw-ring-inset: ;
|
548 |
+
--tw-ring-offset-width: 0px;
|
549 |
+
--tw-ring-offset-color: #fff;
|
550 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
551 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
552 |
+
--tw-ring-shadow: 0 0 #0000;
|
553 |
+
--tw-shadow: 0 0 #0000;
|
554 |
+
--tw-shadow-colored: 0 0 #0000;
|
555 |
+
--tw-blur: ;
|
556 |
+
--tw-brightness: ;
|
557 |
+
--tw-contrast: ;
|
558 |
+
--tw-grayscale: ;
|
559 |
+
--tw-hue-rotate: ;
|
560 |
+
--tw-invert: ;
|
561 |
+
--tw-saturate: ;
|
562 |
+
--tw-sepia: ;
|
563 |
+
--tw-drop-shadow: ;
|
564 |
+
--tw-backdrop-blur: ;
|
565 |
+
--tw-backdrop-brightness: ;
|
566 |
+
--tw-backdrop-contrast: ;
|
567 |
+
--tw-backdrop-grayscale: ;
|
568 |
+
--tw-backdrop-hue-rotate: ;
|
569 |
+
--tw-backdrop-invert: ;
|
570 |
+
--tw-backdrop-opacity: ;
|
571 |
+
--tw-backdrop-saturate: ;
|
572 |
+
--tw-backdrop-sepia: ;
|
573 |
+
}
|
574 |
+
|
575 |
+
.sr-only {
|
576 |
+
position: absolute;
|
577 |
+
width: 1px;
|
578 |
+
height: 1px;
|
579 |
+
padding: 0;
|
580 |
+
margin: -1px;
|
581 |
+
overflow: hidden;
|
582 |
+
clip: rect(0, 0, 0, 0);
|
583 |
+
white-space: nowrap;
|
584 |
+
border-width: 0;
|
585 |
+
}
|
586 |
+
|
587 |
+
.collapse {
|
588 |
+
visibility: collapse;
|
589 |
+
}
|
590 |
+
|
591 |
+
.absolute {
|
592 |
+
position: absolute;
|
593 |
+
}
|
594 |
+
|
595 |
+
.relative {
|
596 |
+
position: relative;
|
597 |
+
}
|
598 |
+
|
599 |
+
.inset-0 {
|
600 |
+
inset: 0px;
|
601 |
+
}
|
602 |
+
|
603 |
+
.end-0 {
|
604 |
+
inset-inline-end: 0px;
|
605 |
+
}
|
606 |
+
|
607 |
+
.top-0 {
|
608 |
+
top: 0px;
|
609 |
+
}
|
610 |
+
|
611 |
+
.z-10 {
|
612 |
+
z-index: 10;
|
613 |
+
}
|
614 |
+
|
615 |
+
.z-20 {
|
616 |
+
z-index: 20;
|
617 |
+
}
|
618 |
+
|
619 |
+
.mx-10 {
|
620 |
+
margin-left: 2.5rem;
|
621 |
+
margin-right: 2.5rem;
|
622 |
+
}
|
623 |
+
|
624 |
+
.mx-auto {
|
625 |
+
margin-left: auto;
|
626 |
+
margin-right: auto;
|
627 |
+
}
|
628 |
+
|
629 |
+
.my-2 {
|
630 |
+
margin-top: 0.5rem;
|
631 |
+
margin-bottom: 0.5rem;
|
632 |
+
}
|
633 |
+
|
634 |
+
.mb-10 {
|
635 |
+
margin-bottom: 2.5rem;
|
636 |
+
}
|
637 |
+
|
638 |
+
.mb-2 {
|
639 |
+
margin-bottom: 0.5rem;
|
640 |
+
}
|
641 |
+
|
642 |
+
.ms-2 {
|
643 |
+
margin-inline-start: 0.5rem;
|
644 |
+
}
|
645 |
+
|
646 |
+
.ms-2\.5 {
|
647 |
+
margin-inline-start: 0.625rem;
|
648 |
+
}
|
649 |
+
|
650 |
+
.ms-3 {
|
651 |
+
margin-inline-start: 0.75rem;
|
652 |
+
}
|
653 |
+
|
654 |
+
.mt-1 {
|
655 |
+
margin-top: 0.25rem;
|
656 |
+
}
|
657 |
+
|
658 |
+
.mt-6 {
|
659 |
+
margin-top: 1.5rem;
|
660 |
+
}
|
661 |
+
|
662 |
+
.block {
|
663 |
+
display: block;
|
664 |
+
}
|
665 |
+
|
666 |
+
.inline-block {
|
667 |
+
display: inline-block;
|
668 |
+
}
|
669 |
+
|
670 |
+
.inline {
|
671 |
+
display: inline;
|
672 |
+
}
|
673 |
+
|
674 |
+
.flex {
|
675 |
+
display: flex;
|
676 |
+
}
|
677 |
+
|
678 |
+
.inline-flex {
|
679 |
+
display: inline-flex;
|
680 |
+
}
|
681 |
+
|
682 |
+
.hidden {
|
683 |
+
display: none;
|
684 |
+
}
|
685 |
+
|
686 |
+
.h-10 {
|
687 |
+
height: 2.5rem;
|
688 |
+
}
|
689 |
+
|
690 |
+
.h-2 {
|
691 |
+
height: 0.5rem;
|
692 |
+
}
|
693 |
+
|
694 |
+
.h-2\.5 {
|
695 |
+
height: 0.625rem;
|
696 |
+
}
|
697 |
+
|
698 |
+
.h-3 {
|
699 |
+
height: 0.75rem;
|
700 |
+
}
|
701 |
+
|
702 |
+
.h-4 {
|
703 |
+
height: 1rem;
|
704 |
+
}
|
705 |
+
|
706 |
+
.h-6 {
|
707 |
+
height: 1.5rem;
|
708 |
+
}
|
709 |
+
|
710 |
+
.h-full {
|
711 |
+
height: 100%;
|
712 |
+
}
|
713 |
+
|
714 |
+
.min-h-screen {
|
715 |
+
min-height: 100vh;
|
716 |
+
}
|
717 |
+
|
718 |
+
.w-1\/3 {
|
719 |
+
width: 33.333333%;
|
720 |
+
}
|
721 |
+
|
722 |
+
.w-10 {
|
723 |
+
width: 2.5rem;
|
724 |
+
}
|
725 |
+
|
726 |
+
.w-2 {
|
727 |
+
width: 0.5rem;
|
728 |
+
}
|
729 |
+
|
730 |
+
.w-2\.5 {
|
731 |
+
width: 0.625rem;
|
732 |
+
}
|
733 |
+
|
734 |
+
.w-3 {
|
735 |
+
width: 0.75rem;
|
736 |
+
}
|
737 |
+
|
738 |
+
.w-4 {
|
739 |
+
width: 1rem;
|
740 |
+
}
|
741 |
+
|
742 |
+
.w-44 {
|
743 |
+
width: 11rem;
|
744 |
+
}
|
745 |
+
|
746 |
+
.w-6 {
|
747 |
+
width: 1.5rem;
|
748 |
+
}
|
749 |
+
|
750 |
+
.w-full {
|
751 |
+
width: 100%;
|
752 |
+
}
|
753 |
+
|
754 |
+
.max-w-lg {
|
755 |
+
max-width: 32rem;
|
756 |
+
}
|
757 |
+
|
758 |
+
.flex-shrink-0 {
|
759 |
+
flex-shrink: 0;
|
760 |
+
}
|
761 |
+
|
762 |
+
.shrink-0 {
|
763 |
+
flex-shrink: 0;
|
764 |
+
}
|
765 |
+
|
766 |
+
.-rotate-90 {
|
767 |
+
--tw-rotate: -90deg;
|
768 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
769 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
770 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
771 |
+
}
|
772 |
+
|
773 |
+
.rotate-180 {
|
774 |
+
--tw-rotate: 180deg;
|
775 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
776 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
777 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
778 |
+
}
|
779 |
+
|
780 |
+
.cursor-pointer {
|
781 |
+
cursor: pointer;
|
782 |
+
}
|
783 |
+
|
784 |
+
.flex-col {
|
785 |
+
flex-direction: column;
|
786 |
+
}
|
787 |
+
|
788 |
+
.items-center {
|
789 |
+
align-items: center;
|
790 |
+
}
|
791 |
+
|
792 |
+
.justify-center {
|
793 |
+
justify-content: center;
|
794 |
+
}
|
795 |
+
|
796 |
+
.justify-between {
|
797 |
+
justify-content: space-between;
|
798 |
+
}
|
799 |
+
|
800 |
+
.gap-3 {
|
801 |
+
gap: 0.75rem;
|
802 |
+
}
|
803 |
+
|
804 |
+
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
805 |
+
--tw-space-x-reverse: 0;
|
806 |
+
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
807 |
+
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
808 |
+
}
|
809 |
+
|
810 |
+
.divide-y > :not([hidden]) ~ :not([hidden]) {
|
811 |
+
--tw-divide-y-reverse: 0;
|
812 |
+
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
813 |
+
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
|
814 |
+
}
|
815 |
+
|
816 |
+
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
|
817 |
+
--tw-divide-opacity: 1;
|
818 |
+
border-color: rgb(243 244 246 / var(--tw-divide-opacity));
|
819 |
+
}
|
820 |
+
|
821 |
+
.overflow-hidden {
|
822 |
+
overflow: hidden;
|
823 |
+
}
|
824 |
+
|
825 |
+
.whitespace-nowrap {
|
826 |
+
white-space: nowrap;
|
827 |
+
}
|
828 |
+
|
829 |
+
.rounded-full {
|
830 |
+
border-radius: 9999px;
|
831 |
+
}
|
832 |
+
|
833 |
+
.rounded-lg {
|
834 |
+
border-radius: 0.5rem;
|
835 |
+
}
|
836 |
+
|
837 |
+
.rounded-e-lg {
|
838 |
+
border-start-end-radius: 0.5rem;
|
839 |
+
border-end-end-radius: 0.5rem;
|
840 |
+
}
|
841 |
+
|
842 |
+
.rounded-s-lg {
|
843 |
+
border-start-start-radius: 0.5rem;
|
844 |
+
border-end-start-radius: 0.5rem;
|
845 |
+
}
|
846 |
+
|
847 |
+
.rounded-t-xl {
|
848 |
+
border-top-left-radius: 0.75rem;
|
849 |
+
border-top-right-radius: 0.75rem;
|
850 |
+
}
|
851 |
+
|
852 |
+
.border {
|
853 |
+
border-width: 1px;
|
854 |
+
}
|
855 |
+
|
856 |
+
.border-b-0 {
|
857 |
+
border-bottom-width: 0px;
|
858 |
+
}
|
859 |
+
|
860 |
+
.border-s-2 {
|
861 |
+
border-inline-start-width: 2px;
|
862 |
+
}
|
863 |
+
|
864 |
+
.border-t-0 {
|
865 |
+
border-top-width: 0px;
|
866 |
+
}
|
867 |
+
|
868 |
+
.border-blue-700 {
|
869 |
+
--tw-border-opacity: 1;
|
870 |
+
border-color: rgb(29 78 216 / var(--tw-border-opacity));
|
871 |
+
}
|
872 |
+
|
873 |
+
.border-gray-200 {
|
874 |
+
--tw-border-opacity: 1;
|
875 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
876 |
+
}
|
877 |
+
|
878 |
+
.border-gray-300 {
|
879 |
+
--tw-border-opacity: 1;
|
880 |
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
881 |
+
}
|
882 |
+
|
883 |
+
.border-s-gray-50 {
|
884 |
+
--tw-border-opacity: 1;
|
885 |
+
border-inline-start-color: rgb(249 250 251 / var(--tw-border-opacity));
|
886 |
+
}
|
887 |
+
|
888 |
+
.bg-blue-200 {
|
889 |
+
--tw-bg-opacity: 1;
|
890 |
+
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
|
891 |
+
}
|
892 |
+
|
893 |
+
.bg-blue-700 {
|
894 |
+
--tw-bg-opacity: 1;
|
895 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
896 |
+
}
|
897 |
+
|
898 |
+
.bg-gray-100 {
|
899 |
+
--tw-bg-opacity: 1;
|
900 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
901 |
+
}
|
902 |
+
|
903 |
+
.bg-gray-50 {
|
904 |
+
--tw-bg-opacity: 1;
|
905 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
906 |
+
}
|
907 |
+
|
908 |
+
.bg-green-100 {
|
909 |
+
--tw-bg-opacity: 1;
|
910 |
+
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
911 |
+
}
|
912 |
+
|
913 |
+
.bg-green-200 {
|
914 |
+
--tw-bg-opacity: 1;
|
915 |
+
background-color: rgb(187 247 208 / var(--tw-bg-opacity));
|
916 |
+
}
|
917 |
+
|
918 |
+
.bg-orange-200 {
|
919 |
+
--tw-bg-opacity: 1;
|
920 |
+
background-color: rgb(254 215 170 / var(--tw-bg-opacity));
|
921 |
+
}
|
922 |
+
|
923 |
+
.bg-violet-100 {
|
924 |
+
--tw-bg-opacity: 1;
|
925 |
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity));
|
926 |
+
}
|
927 |
+
|
928 |
+
.bg-white {
|
929 |
+
--tw-bg-opacity: 1;
|
930 |
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
931 |
+
}
|
932 |
+
|
933 |
+
.bg-yellow-100 {
|
934 |
+
--tw-bg-opacity: 1;
|
935 |
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity));
|
936 |
+
}
|
937 |
+
|
938 |
+
.bg-\[url\(\/img\/grid\.svg\)\] {
|
939 |
+
background-image: url(/img/grid.svg);
|
940 |
+
}
|
941 |
+
|
942 |
+
.bg-center {
|
943 |
+
background-position: center;
|
944 |
+
}
|
945 |
+
|
946 |
+
.p-0 {
|
947 |
+
padding: 0px;
|
948 |
+
}
|
949 |
+
|
950 |
+
.p-0\.5 {
|
951 |
+
padding: 0.125rem;
|
952 |
+
}
|
953 |
+
|
954 |
+
.p-1 {
|
955 |
+
padding: 0.25rem;
|
956 |
+
}
|
957 |
+
|
958 |
+
.p-2 {
|
959 |
+
padding: 0.5rem;
|
960 |
+
}
|
961 |
+
|
962 |
+
.p-2\.5 {
|
963 |
+
padding: 0.625rem;
|
964 |
+
}
|
965 |
+
|
966 |
+
.p-5 {
|
967 |
+
padding: 1.25rem;
|
968 |
+
}
|
969 |
+
|
970 |
+
.px-2 {
|
971 |
+
padding-left: 0.5rem;
|
972 |
+
padding-right: 0.5rem;
|
973 |
+
}
|
974 |
+
|
975 |
+
.px-4 {
|
976 |
+
padding-left: 1rem;
|
977 |
+
padding-right: 1rem;
|
978 |
+
}
|
979 |
+
|
980 |
+
.px-5 {
|
981 |
+
padding-left: 1.25rem;
|
982 |
+
padding-right: 1.25rem;
|
983 |
+
}
|
984 |
+
|
985 |
+
.px-6 {
|
986 |
+
padding-left: 1.5rem;
|
987 |
+
padding-right: 1.5rem;
|
988 |
+
}
|
989 |
+
|
990 |
+
.py-2 {
|
991 |
+
padding-top: 0.5rem;
|
992 |
+
padding-bottom: 0.5rem;
|
993 |
+
}
|
994 |
+
|
995 |
+
.py-2\.5 {
|
996 |
+
padding-top: 0.625rem;
|
997 |
+
padding-bottom: 0.625rem;
|
998 |
+
}
|
999 |
+
|
1000 |
+
.py-6 {
|
1001 |
+
padding-top: 1.5rem;
|
1002 |
+
padding-bottom: 1.5rem;
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
.pb-2 {
|
1006 |
+
padding-bottom: 0.5rem;
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
.pb-8 {
|
1010 |
+
padding-bottom: 2rem;
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
.pt-10 {
|
1014 |
+
padding-top: 2.5rem;
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
.text-center {
|
1018 |
+
text-align: center;
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
.text-sm {
|
1022 |
+
font-size: 0.875rem;
|
1023 |
+
line-height: 1.25rem;
|
1024 |
+
}
|
1025 |
+
|
1026 |
+
.text-xs {
|
1027 |
+
font-size: 0.75rem;
|
1028 |
+
line-height: 1rem;
|
1029 |
+
}
|
1030 |
+
|
1031 |
+
.font-bold {
|
1032 |
+
font-weight: 700;
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
.font-medium {
|
1036 |
+
font-weight: 500;
|
1037 |
+
}
|
1038 |
+
|
1039 |
+
.font-semibold {
|
1040 |
+
font-weight: 600;
|
1041 |
+
}
|
1042 |
+
|
1043 |
+
.text-blue-800 {
|
1044 |
+
--tw-text-opacity: 1;
|
1045 |
+
color: rgb(30 64 175);
|
1046 |
+
}
|
1047 |
+
|
1048 |
+
.text-gray-400 {
|
1049 |
+
--tw-text-opacity: 1;
|
1050 |
+
color: rgb(156 163 175);
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
.text-gray-500 {
|
1054 |
+
--tw-text-opacity: 1;
|
1055 |
+
color: rgb(107 114 128);
|
1056 |
+
}
|
1057 |
+
|
1058 |
+
.text-gray-600 {
|
1059 |
+
--tw-text-opacity: 1;
|
1060 |
+
color: rgb(75 85 99);
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
.text-gray-700 {
|
1064 |
+
--tw-text-opacity: 1;
|
1065 |
+
color: rgb(55 65 81);
|
1066 |
+
}
|
1067 |
+
|
1068 |
+
.text-gray-900 {
|
1069 |
+
--tw-text-opacity: 1;
|
1070 |
+
color: rgb(17 24 39);
|
1071 |
+
}
|
1072 |
+
|
1073 |
+
.text-white {
|
1074 |
+
--tw-text-opacity: 1;
|
1075 |
+
color: rgb(255 255 255);
|
1076 |
+
}
|
1077 |
+
|
1078 |
+
.shadow {
|
1079 |
+
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
1080 |
+
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
|
1081 |
+
0 1px 2px -1px var(--tw-shadow-color);
|
1082 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1083 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
.shadow-xl {
|
1087 |
+
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
|
1088 |
+
0 8px 10px -6px rgb(0 0 0 / 0.1);
|
1089 |
+
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
|
1090 |
+
0 8px 10px -6px var(--tw-shadow-color);
|
1091 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1092 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
.ring-1 {
|
1096 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1097 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1098 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1099 |
+
calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1100 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1101 |
+
var(--tw-shadow, 0 0 #0000);
|
1102 |
+
}
|
1103 |
+
|
1104 |
+
.ring-gray-900\/5 {
|
1105 |
+
--tw-ring-color: rgb(17 24 39 / 0.05);
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
.sequence_container {
|
1109 |
+
overflow-wrap: anywhere;
|
1110 |
+
counter-reset: sequence;
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
.sequence_container .sequence__chunk {
|
1114 |
+
display: inline-block;
|
1115 |
+
margin: 0.1rem 0 1rem 1rem;
|
1116 |
+
/* width: 10ch; */
|
1117 |
+
position: relative;
|
1118 |
+
white-space: nowrap;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
.sequence_container .sequence__chunk:not(:last-child):before,
|
1122 |
+
.sequence_container .sequence__chunk--display-last:before {
|
1123 |
+
content: counter(sequence);
|
1124 |
+
counter-increment: sequence 10;
|
1125 |
+
position: absolute;
|
1126 |
+
top: -0.8em;
|
1127 |
+
right: 0;
|
1128 |
+
opacity: 0.5;
|
1129 |
+
font-weight: bold;
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
.sequence-container .sequence__chunk::after {
|
1133 |
+
content: "";
|
1134 |
+
position: absolute;
|
1135 |
+
bottom: 0;
|
1136 |
+
left: 0;
|
1137 |
+
right: 0;
|
1138 |
+
transform-origin: left;
|
1139 |
+
transform: scaleX(0.1);
|
1140 |
+
box-shadow: var(--box-shadow);
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
.sequence__chunk span {
|
1144 |
+
padding: 0 0.05rem;
|
1145 |
+
}
|
1146 |
+
|
1147 |
+
.hover\:bg-blue-800:hover {
|
1148 |
+
--tw-bg-opacity: 1;
|
1149 |
+
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
.hover\:bg-gray-100:hover {
|
1153 |
+
--tw-bg-opacity: 1;
|
1154 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1155 |
+
}
|
1156 |
+
|
1157 |
+
.hover\:bg-gray-200:hover {
|
1158 |
+
--tw-bg-opacity: 1;
|
1159 |
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
.hover\:font-bold:hover {
|
1163 |
+
font-weight: 700;
|
1164 |
+
}
|
1165 |
+
|
1166 |
+
.focus\:border-blue-500:focus {
|
1167 |
+
--tw-border-opacity: 1;
|
1168 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1169 |
+
}
|
1170 |
+
|
1171 |
+
.focus\:outline-none:focus {
|
1172 |
+
outline: 2px solid transparent;
|
1173 |
+
outline-offset: 2px;
|
1174 |
+
}
|
1175 |
+
|
1176 |
+
.focus\:ring-4:focus {
|
1177 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1178 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1179 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1180 |
+
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1181 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1182 |
+
var(--tw-shadow, 0 0 #0000);
|
1183 |
+
}
|
1184 |
+
|
1185 |
+
.focus\:ring-blue-300:focus {
|
1186 |
+
--tw-ring-opacity: 1;
|
1187 |
+
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
.focus\:ring-blue-500:focus {
|
1191 |
+
--tw-ring-opacity: 1;
|
1192 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1193 |
+
}
|
1194 |
+
|
1195 |
+
.focus\:ring-gray-100:focus {
|
1196 |
+
--tw-ring-opacity: 1;
|
1197 |
+
--tw-ring-color: rgb(243 244 246 / var(--tw-ring-opacity));
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
.focus\:ring-gray-200:focus {
|
1201 |
+
--tw-ring-opacity: 1;
|
1202 |
+
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
1203 |
+
}
|
1204 |
+
|
1205 |
+
@media (min-width: 640px) {
|
1206 |
+
.sm\:mx-auto {
|
1207 |
+
margin-left: auto;
|
1208 |
+
margin-right: auto;
|
1209 |
+
}
|
1210 |
+
|
1211 |
+
.sm\:rounded-lg {
|
1212 |
+
border-radius: 0.5rem;
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
.sm\:px-10 {
|
1216 |
+
padding-left: 2.5rem;
|
1217 |
+
padding-right: 2.5rem;
|
1218 |
+
}
|
1219 |
+
|
1220 |
+
.sm\:py-12 {
|
1221 |
+
padding-top: 3rem;
|
1222 |
+
padding-bottom: 3rem;
|
1223 |
+
}
|
1224 |
+
}
|
1225 |
+
|
1226 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1227 |
+
text-align: right;
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
@media (prefers-color-scheme: dark) {
|
1231 |
+
.dark\:border-gray-600 {
|
1232 |
+
--tw-border-opacity: 1;
|
1233 |
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1234 |
+
}
|
1235 |
+
|
1236 |
+
.dark\:border-gray-700 {
|
1237 |
+
--tw-border-opacity: 1;
|
1238 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
.dark\:border-s-gray-700 {
|
1242 |
+
--tw-border-opacity: 1;
|
1243 |
+
border-inline-start-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1244 |
+
}
|
1245 |
+
|
1246 |
+
.dark\:bg-blue-600 {
|
1247 |
+
--tw-bg-opacity: 1;
|
1248 |
+
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
|
1249 |
+
}
|
1250 |
+
|
1251 |
+
.dark\:bg-gray-600 {
|
1252 |
+
--tw-bg-opacity: 1;
|
1253 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
.dark\:bg-gray-700 {
|
1257 |
+
--tw-bg-opacity: 1;
|
1258 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1259 |
+
}
|
1260 |
+
|
1261 |
+
.dark\:bg-gray-900 {
|
1262 |
+
--tw-bg-opacity: 1;
|
1263 |
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
|
1264 |
+
}
|
1265 |
+
|
1266 |
+
.dark\:text-gray-200 {
|
1267 |
+
--tw-text-opacity: 1;
|
1268 |
+
color: rgb(229 231 235);
|
1269 |
+
}
|
1270 |
+
|
1271 |
+
.dark\:text-gray-300 {
|
1272 |
+
--tw-text-opacity: 1;
|
1273 |
+
color: rgb(209 213 219);
|
1274 |
+
}
|
1275 |
+
|
1276 |
+
.dark\:text-gray-400 {
|
1277 |
+
--tw-text-opacity: 1;
|
1278 |
+
color: rgb(156 163 175);
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
.dark\:text-white {
|
1282 |
+
--tw-text-opacity: 1;
|
1283 |
+
color: rgb(255 255 255);
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
.dark\:placeholder-gray-400::placeholder {
|
1287 |
+
--tw-placeholder-opacity: 1;
|
1288 |
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
.dark\:hover\:bg-blue-700:hover {
|
1292 |
+
--tw-bg-opacity: 1;
|
1293 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1294 |
+
}
|
1295 |
+
|
1296 |
+
.dark\:hover\:bg-gray-600:hover {
|
1297 |
+
--tw-bg-opacity: 1;
|
1298 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1299 |
+
}
|
1300 |
+
|
1301 |
+
.dark\:hover\:bg-gray-800:hover {
|
1302 |
+
--tw-bg-opacity: 1;
|
1303 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1304 |
+
}
|
1305 |
+
|
1306 |
+
.dark\:hover\:text-white:hover {
|
1307 |
+
--tw-text-opacity: 1;
|
1308 |
+
color: rgb(255 255 255);
|
1309 |
+
}
|
1310 |
+
|
1311 |
+
.dark\:focus\:border-blue-500:focus {
|
1312 |
+
--tw-border-opacity: 1;
|
1313 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
.dark\:focus\:ring-blue-500:focus {
|
1317 |
+
--tw-ring-opacity: 1;
|
1318 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1319 |
+
}
|
1320 |
+
|
1321 |
+
.dark\:focus\:ring-blue-800:focus {
|
1322 |
+
--tw-ring-opacity: 1;
|
1323 |
+
--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
|
1324 |
+
}
|
1325 |
+
|
1326 |
+
.dark\:focus\:ring-gray-700:focus {
|
1327 |
+
--tw-ring-opacity: 1;
|
1328 |
+
--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity));
|
1329 |
+
}
|
1330 |
+
|
1331 |
+
.dark\:focus\:ring-gray-800:focus {
|
1332 |
+
--tw-ring-opacity: 1;
|
1333 |
+
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
|
1334 |
+
}
|
1335 |
+
}
|
1336 |
+
</style>
|
src/frontend/shared/SequenceInput.svelte
ADDED
@@ -0,0 +1,1699 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<svelte:options accessors={true} />
|
2 |
+
|
3 |
+
<script>
|
4 |
+
import { tick } from "svelte";
|
5 |
+
|
6 |
+
import Btn from "./Button.svelte";
|
7 |
+
import SearchInput from "./SearchInput.svelte";
|
8 |
+
|
9 |
+
import Accordion from "./Accordion.svelte";
|
10 |
+
import { createEventDispatcher, onMount, afterUpdate } from "svelte";
|
11 |
+
|
12 |
+
export let value = { chains: [], covMods: [] };
|
13 |
+
|
14 |
+
const dispatch = createEventDispatcher();
|
15 |
+
|
16 |
+
let metals = [
|
17 |
+
"ZN",
|
18 |
+
"MG",
|
19 |
+
"CA",
|
20 |
+
"FE",
|
21 |
+
"NA",
|
22 |
+
"K",
|
23 |
+
"CL",
|
24 |
+
"CU",
|
25 |
+
"MN",
|
26 |
+
"CO",
|
27 |
+
"NI",
|
28 |
+
];
|
29 |
+
|
30 |
+
async function getSDF(id) {
|
31 |
+
let sdf = await fetch(
|
32 |
+
`https://files.rcsb.org/ligands/download/${id}_ideal.sdf`
|
33 |
+
)
|
34 |
+
.then((response) => {
|
35 |
+
if (!response.ok) {
|
36 |
+
// Check if the status code is 200
|
37 |
+
throw new Error("Network response was not ok");
|
38 |
+
}
|
39 |
+
return response.text();
|
40 |
+
})
|
41 |
+
.catch((error) => {
|
42 |
+
alert("Error fetching sdf file");
|
43 |
+
});
|
44 |
+
// console.log(sdf);
|
45 |
+
return sdf;
|
46 |
+
}
|
47 |
+
|
48 |
+
function nextChainTemp(currentChain) {
|
49 |
+
if (currentChain == "") {
|
50 |
+
return "A";
|
51 |
+
}
|
52 |
+
let nextChain = "";
|
53 |
+
if (currentChain == "Z") {
|
54 |
+
nextChain = "AA";
|
55 |
+
} else if (currentChain.length > 1 && currentChain.slice(-1) === "Z") {
|
56 |
+
nextChain = String.fromCharCode(currentChain.charCodeAt(0) + 1) + "A";
|
57 |
+
} else {
|
58 |
+
nextChain =
|
59 |
+
currentChain.slice(0, -1) +
|
60 |
+
String.fromCharCode(currentChain.slice(-1).charCodeAt(0) + 1);
|
61 |
+
}
|
62 |
+
return nextChain;
|
63 |
+
}
|
64 |
+
async function handleMessage(event) {
|
65 |
+
let pdbId = event.detail.text;
|
66 |
+
//convert to lowercase
|
67 |
+
pdbId = pdbId.toLowerCase();
|
68 |
+
let bioAssemblyInfo = await importBioAssembly(pdbId);
|
69 |
+
// console.log(bioAssemblyInfo);
|
70 |
+
// convert assembly info to vals
|
71 |
+
let tempVals = [];
|
72 |
+
let nextChain = "";
|
73 |
+
|
74 |
+
let promise = await Promise.all(
|
75 |
+
bioAssemblyInfo.map(async (entity) => {
|
76 |
+
if (["DNA", "RNA", "protein"].includes(entity.class)) {
|
77 |
+
for (let i = 0; i < entity.count; i++) {
|
78 |
+
nextChain = nextChainTemp(nextChain);
|
79 |
+
tempVals.push({
|
80 |
+
class: entity.class,
|
81 |
+
name: "",
|
82 |
+
smiles: "",
|
83 |
+
sdf: "",
|
84 |
+
sequence: entity.entityInfo,
|
85 |
+
open: false,
|
86 |
+
chain: nextChain,
|
87 |
+
});
|
88 |
+
await tick();
|
89 |
+
}
|
90 |
+
} else if (entity.class === "ligand") {
|
91 |
+
let name = "";
|
92 |
+
let sdf = "";
|
93 |
+
if (metals.includes(entity.entityInfo)) {
|
94 |
+
name = entity.entityInfo;
|
95 |
+
} else {
|
96 |
+
sdf = await getSDF(entity.entityInfo);
|
97 |
+
}
|
98 |
+
for (let i = 0; i < entity.count; i++) {
|
99 |
+
nextChain = nextChainTemp(nextChain);
|
100 |
+
tempVals.push({
|
101 |
+
class: entity.class,
|
102 |
+
name: name,
|
103 |
+
smiles: "",
|
104 |
+
sdf: sdf,
|
105 |
+
sequence: "",
|
106 |
+
open: false,
|
107 |
+
chain: nextChain,
|
108 |
+
});
|
109 |
+
}
|
110 |
+
await tick();
|
111 |
+
}
|
112 |
+
})
|
113 |
+
);
|
114 |
+
vals = tempVals;
|
115 |
+
dispatch("updateVals", vals);
|
116 |
+
}
|
117 |
+
|
118 |
+
let vals = [];
|
119 |
+
let covMods = [];
|
120 |
+
|
121 |
+
function update(event) {
|
122 |
+
// vals[event.detail.index].open = event.detail.open;
|
123 |
+
if (event.detail.sequence !== undefined) {
|
124 |
+
vals[event.detail.index].sequence = event.detail.sequence;
|
125 |
+
}
|
126 |
+
if (event.detail.name !== undefined) {
|
127 |
+
vals[event.detail.index].name = event.detail.name;
|
128 |
+
vals[event.detail.index].open = event.detail.open;
|
129 |
+
vals[event.detail.index].sdf = "";
|
130 |
+
vals[event.detail.index].smiles = "";
|
131 |
+
}
|
132 |
+
if (event.detail.smiles !== undefined) {
|
133 |
+
vals[event.detail.index].smiles = event.detail.smiles;
|
134 |
+
vals[event.detail.index].sdf = "";
|
135 |
+
vals[event.detail.index].name = "";
|
136 |
+
}
|
137 |
+
if (event.detail.sdf !== undefined) {
|
138 |
+
if (event.detail.close == true) {
|
139 |
+
vals[event.detail.index].open = false;
|
140 |
+
}
|
141 |
+
vals[event.detail.index].sdf = event.detail.sdf;
|
142 |
+
vals[event.detail.index].name = "";
|
143 |
+
vals[event.detail.index].smiles = "";
|
144 |
+
}
|
145 |
+
dispatch("updateVals", vals);
|
146 |
+
}
|
147 |
+
|
148 |
+
function getNextChainLetter() {
|
149 |
+
let highestChainLetter = "A";
|
150 |
+
for (let val of vals) {
|
151 |
+
if (val.chain > highestChainLetter) {
|
152 |
+
highestChainLetter = val.chain;
|
153 |
+
}
|
154 |
+
}
|
155 |
+
|
156 |
+
// Increment the highest chain letter to get the next chain letter
|
157 |
+
let nextChainLetter = "";
|
158 |
+
if (highestChainLetter < "Z") {
|
159 |
+
nextChainLetter = String.fromCharCode(
|
160 |
+
highestChainLetter.charCodeAt(0) + 1
|
161 |
+
);
|
162 |
+
} else {
|
163 |
+
let lastChar = highestChainLetter.slice(-1);
|
164 |
+
if (lastChar < "Z") {
|
165 |
+
nextChainLetter =
|
166 |
+
highestChainLetter.slice(0, -1) +
|
167 |
+
String.fromCharCode(lastChar.charCodeAt(0) + 1);
|
168 |
+
} else {
|
169 |
+
nextChainLetter = highestChainLetter + "A";
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
return nextChainLetter;
|
174 |
+
}
|
175 |
+
|
176 |
+
function insertChain(event) {
|
177 |
+
// what chain to add next
|
178 |
+
let nextChainLetter = getNextChainLetter();
|
179 |
+
vals.push({
|
180 |
+
class: event.detail.type,
|
181 |
+
name: "",
|
182 |
+
smiles: "",
|
183 |
+
sdf: "",
|
184 |
+
sequence: "",
|
185 |
+
open: true,
|
186 |
+
chain: nextChainLetter,
|
187 |
+
});
|
188 |
+
vals = vals;
|
189 |
+
// console.log(vals);
|
190 |
+
}
|
191 |
+
|
192 |
+
function remove(event) {
|
193 |
+
vals.splice(event.detail, 1);
|
194 |
+
vals = vals;
|
195 |
+
}
|
196 |
+
|
197 |
+
async function fetchMolecules(pdbId) {
|
198 |
+
const url = `https://www.ebi.ac.uk/pdbe/api/pdb/entry/molecules/${pdbId}`;
|
199 |
+
try {
|
200 |
+
const response = await fetch(url);
|
201 |
+
if (!response.ok) {
|
202 |
+
throw new Error(
|
203 |
+
`Error fetching molecules for PDB ID ${pdbId}: ${response.statusText}`
|
204 |
+
);
|
205 |
+
}
|
206 |
+
const data = await response.json();
|
207 |
+
return data;
|
208 |
+
} catch (error) {
|
209 |
+
console.error("Error fetching molecules:", error);
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
async function fetchXmlText(url) {
|
214 |
+
try {
|
215 |
+
const response = await fetch(url);
|
216 |
+
if (!response.ok) {
|
217 |
+
throw new Error(`Error fetching XML: ${response.statusText}`);
|
218 |
+
}
|
219 |
+
const textData = await response.text();
|
220 |
+
return textData;
|
221 |
+
} catch (error) {
|
222 |
+
console.error("Error fetching XML:", error);
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
// Function to parse a single assembly element
|
227 |
+
function parseAssembly(assemblyElement) {
|
228 |
+
const assembly = {
|
229 |
+
id: assemblyElement.getAttribute("id"),
|
230 |
+
composition: assemblyElement.getAttribute("composition"),
|
231 |
+
molecularWeight: assemblyElement.getAttribute("molecular_weight"),
|
232 |
+
name: assemblyElement.getAttribute("name"),
|
233 |
+
};
|
234 |
+
const entities = [];
|
235 |
+
assemblyElement.querySelectorAll("entity").forEach((entityElement) => {
|
236 |
+
entities.push({
|
237 |
+
chainIds: entityElement.getAttribute("chain_ids"),
|
238 |
+
class: entityElement.getAttribute("class"),
|
239 |
+
count: entityElement.getAttribute("count"),
|
240 |
+
entityId: Number(entityElement.getAttribute("entity_id")), // Added entityId
|
241 |
+
});
|
242 |
+
});
|
243 |
+
assembly.entities = entities;
|
244 |
+
return assembly;
|
245 |
+
}
|
246 |
+
|
247 |
+
function extractEntityInfo(entity, moleculeData) {
|
248 |
+
if (
|
249 |
+
entity.class === "DNA" ||
|
250 |
+
entity.class === "RNA" ||
|
251 |
+
entity.class === "protein"
|
252 |
+
) {
|
253 |
+
// find the entry in moleculedata that matches the entity ID
|
254 |
+
const matchingEntity = moleculeData.find(
|
255 |
+
(molecule) => molecule.entity_id === entity["entityId"]
|
256 |
+
);
|
257 |
+
if (matchingEntity) {
|
258 |
+
return matchingEntity.sequence;
|
259 |
+
}
|
260 |
+
} else {
|
261 |
+
const matchingEntity = moleculeData.find(
|
262 |
+
(molecule) => molecule.entity_id === entity["entityId"]
|
263 |
+
);
|
264 |
+
if (matchingEntity) {
|
265 |
+
// return the sequence of the matching entity
|
266 |
+
return matchingEntity.chem_comp_ids[0];
|
267 |
+
}
|
268 |
+
}
|
269 |
+
}
|
270 |
+
|
271 |
+
function importBioAssembly(pdbId) {
|
272 |
+
const moleculeData = fetchMolecules(pdbId)
|
273 |
+
.then((data) => {
|
274 |
+
return data;
|
275 |
+
})
|
276 |
+
.catch((error) => {
|
277 |
+
console.error("Error:", error);
|
278 |
+
});
|
279 |
+
|
280 |
+
// Example usage
|
281 |
+
const xmlUrl = `https://www.ebi.ac.uk/pdbe/static/entry/${pdbId}-assembly.xml`;
|
282 |
+
const assemblies = fetchXmlText(xmlUrl).then((data) => {
|
283 |
+
// Parse the entire assembly list
|
284 |
+
const assemblyList = [];
|
285 |
+
const parser = new DOMParser();
|
286 |
+
const doc = parser.parseFromString(data, "text/xml");
|
287 |
+
const assemblyElements = doc.querySelectorAll("assembly");
|
288 |
+
assemblyElements.forEach((assemblyElement) => {
|
289 |
+
assemblyList.push(parseAssembly(assemblyElement));
|
290 |
+
});
|
291 |
+
|
292 |
+
return assemblyList;
|
293 |
+
});
|
294 |
+
|
295 |
+
// wait for both fetches to complete
|
296 |
+
let result = Promise.all([moleculeData, assemblies]).then(
|
297 |
+
([moleculeData, assemblies]) => {
|
298 |
+
let bioAssemblyInfo = [];
|
299 |
+
|
300 |
+
let assembly = assemblies[0];
|
301 |
+
assembly.entities.forEach((entity) => {
|
302 |
+
const entityInfo = extractEntityInfo(entity, moleculeData[pdbId]);
|
303 |
+
bioAssemblyInfo.push({
|
304 |
+
class: entity.class,
|
305 |
+
entityInfo: entityInfo,
|
306 |
+
count: entity.count,
|
307 |
+
});
|
308 |
+
});
|
309 |
+
|
310 |
+
return bioAssemblyInfo;
|
311 |
+
}
|
312 |
+
);
|
313 |
+
return result;
|
314 |
+
}
|
315 |
+
let display = false;
|
316 |
+
|
317 |
+
function addCovMod(event) {
|
318 |
+
let firstProteinChain = vals.find((val) => val.class === "protein").chain;
|
319 |
+
|
320 |
+
if (firstProteinChain === undefined) {
|
321 |
+
alert("Please add a protein chain first");
|
322 |
+
return;
|
323 |
+
}
|
324 |
+
let firstLigandChain = vals.find((val) => val.class === "ligand").chain;
|
325 |
+
|
326 |
+
if (firstLigandChain === undefined) {
|
327 |
+
alert("Please add a ligand chain first");
|
328 |
+
return;
|
329 |
+
}
|
330 |
+
let covMod = {
|
331 |
+
protein: firstProteinChain,
|
332 |
+
residue: "1",
|
333 |
+
atom: "N",
|
334 |
+
protein_symmetry: "CW",
|
335 |
+
ligand: firstLigandChain,
|
336 |
+
attachmentIndex: 1,
|
337 |
+
deleteIndexes: [],
|
338 |
+
ligand_symmetry: "CW",
|
339 |
+
};
|
340 |
+
covMods.push(covMod);
|
341 |
+
covMods = covMods;
|
342 |
+
vals = vals;
|
343 |
+
dispatch("updateCovMod", covMods);
|
344 |
+
}
|
345 |
+
|
346 |
+
function removeCovMod(event) {
|
347 |
+
covMods.splice(event.detail, 1);
|
348 |
+
covMods = covMods;
|
349 |
+
}
|
350 |
+
function syncCovMod(event) {
|
351 |
+
covMods = event.detail;
|
352 |
+
dispatch("updateCovMod", covMods);
|
353 |
+
}
|
354 |
+
|
355 |
+
onMount(async () => {
|
356 |
+
vals = value["chains"];
|
357 |
+
covMods = value["covMods"];
|
358 |
+
// vals = value["chains"];
|
359 |
+
});
|
360 |
+
</script>
|
361 |
+
|
362 |
+
{#if vals != undefined}
|
363 |
+
{#if vals.length > 0}
|
364 |
+
<Accordion
|
365 |
+
{vals}
|
366 |
+
{covMods}
|
367 |
+
on:updateVals={update}
|
368 |
+
on:removeVal={remove}
|
369 |
+
on:removeCovMod={removeCovMod}
|
370 |
+
on:updateCovMod={syncCovMod}
|
371 |
+
/>
|
372 |
+
{:else}
|
373 |
+
<div class="my-8 text-center text-gray-600">Empty input</div>
|
374 |
+
|
375 |
+
<div class="text-center text-gray-400">
|
376 |
+
You can import a protein from the PDB
|
377 |
+
</div>
|
378 |
+
<SearchInput database="rcsb-bioass" on:triggerFetch={handleMessage} />
|
379 |
+
|
380 |
+
<div class="text-center text-gray-400 w-full my-2">
|
381 |
+
- or create the input from scratch -
|
382 |
+
</div>
|
383 |
+
{/if}
|
384 |
+
{/if}
|
385 |
+
<Btn
|
386 |
+
{vals}
|
387 |
+
on:addNewChain={insertChain}
|
388 |
+
on:addCovalentModification={addCovMod}
|
389 |
+
/>
|
390 |
+
|
391 |
+
<style>
|
392 |
+
/*
|
393 |
+
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
|
394 |
+
*/
|
395 |
+
|
396 |
+
/*
|
397 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
398 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
399 |
+
*/
|
400 |
+
|
401 |
+
*,
|
402 |
+
::before,
|
403 |
+
::after {
|
404 |
+
box-sizing: border-box;
|
405 |
+
/* 1 */
|
406 |
+
border-width: 0;
|
407 |
+
/* 2 */
|
408 |
+
border-style: solid;
|
409 |
+
/* 2 */
|
410 |
+
border-color: #e5e7eb;
|
411 |
+
/* 2 */
|
412 |
+
}
|
413 |
+
|
414 |
+
::before,
|
415 |
+
::after {
|
416 |
+
--tw-content: "";
|
417 |
+
}
|
418 |
+
|
419 |
+
/*
|
420 |
+
1. Use a consistent sensible line-height in all browsers.
|
421 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
422 |
+
3. Use a more readable tab size.
|
423 |
+
4. Use the user's configured `sans` font-family by default.
|
424 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
425 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
426 |
+
7. Disable tap highlights on iOS
|
427 |
+
*/
|
428 |
+
|
429 |
+
html,
|
430 |
+
:host {
|
431 |
+
line-height: 1.5;
|
432 |
+
/* 1 */
|
433 |
+
-webkit-text-size-adjust: 100%;
|
434 |
+
/* 2 */
|
435 |
+
-moz-tab-size: 4;
|
436 |
+
/* 3 */
|
437 |
+
tab-size: 4;
|
438 |
+
/* 3 */
|
439 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
440 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
441 |
+
/* 4 */
|
442 |
+
font-feature-settings: normal;
|
443 |
+
/* 5 */
|
444 |
+
font-variation-settings: normal;
|
445 |
+
/* 6 */
|
446 |
+
-webkit-tap-highlight-color: transparent;
|
447 |
+
/* 7 */
|
448 |
+
}
|
449 |
+
|
450 |
+
/*
|
451 |
+
1. Remove the margin in all browsers.
|
452 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
453 |
+
*/
|
454 |
+
|
455 |
+
body {
|
456 |
+
margin: 0;
|
457 |
+
/* 1 */
|
458 |
+
line-height: inherit;
|
459 |
+
/* 2 */
|
460 |
+
}
|
461 |
+
|
462 |
+
/*
|
463 |
+
1. Add the correct height in Firefox.
|
464 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
465 |
+
3. Ensure horizontal rules are visible by default.
|
466 |
+
*/
|
467 |
+
|
468 |
+
hr {
|
469 |
+
height: 0;
|
470 |
+
/* 1 */
|
471 |
+
color: inherit;
|
472 |
+
/* 2 */
|
473 |
+
border-top-width: 1px;
|
474 |
+
/* 3 */
|
475 |
+
}
|
476 |
+
|
477 |
+
/*
|
478 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
479 |
+
*/
|
480 |
+
|
481 |
+
abbr:where([title]) {
|
482 |
+
text-decoration: underline dotted;
|
483 |
+
}
|
484 |
+
|
485 |
+
/*
|
486 |
+
Remove the default font size and weight for headings.
|
487 |
+
*/
|
488 |
+
|
489 |
+
h1,
|
490 |
+
h2,
|
491 |
+
h3,
|
492 |
+
h4,
|
493 |
+
h5,
|
494 |
+
h6 {
|
495 |
+
font-size: inherit;
|
496 |
+
font-weight: inherit;
|
497 |
+
}
|
498 |
+
|
499 |
+
/*
|
500 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
501 |
+
*/
|
502 |
+
|
503 |
+
a {
|
504 |
+
color: inherit;
|
505 |
+
text-decoration: inherit;
|
506 |
+
}
|
507 |
+
|
508 |
+
/*
|
509 |
+
Add the correct font weight in Edge and Safari.
|
510 |
+
*/
|
511 |
+
|
512 |
+
b,
|
513 |
+
strong {
|
514 |
+
font-weight: bolder;
|
515 |
+
}
|
516 |
+
|
517 |
+
/*
|
518 |
+
1. Use the user's configured `mono` font-family by default.
|
519 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
520 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
521 |
+
4. Correct the odd `em` font sizing in all browsers.
|
522 |
+
*/
|
523 |
+
|
524 |
+
code,
|
525 |
+
kbd,
|
526 |
+
samp,
|
527 |
+
pre {
|
528 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
529 |
+
"Liberation Mono", "Courier New", monospace;
|
530 |
+
/* 1 */
|
531 |
+
font-feature-settings: normal;
|
532 |
+
/* 2 */
|
533 |
+
font-variation-settings: normal;
|
534 |
+
/* 3 */
|
535 |
+
font-size: 1em;
|
536 |
+
/* 4 */
|
537 |
+
}
|
538 |
+
|
539 |
+
/*
|
540 |
+
Add the correct font size in all browsers.
|
541 |
+
*/
|
542 |
+
|
543 |
+
small {
|
544 |
+
font-size: 80%;
|
545 |
+
}
|
546 |
+
|
547 |
+
/*
|
548 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
549 |
+
*/
|
550 |
+
|
551 |
+
sub,
|
552 |
+
sup {
|
553 |
+
font-size: 75%;
|
554 |
+
line-height: 0;
|
555 |
+
position: relative;
|
556 |
+
vertical-align: baseline;
|
557 |
+
}
|
558 |
+
|
559 |
+
sub {
|
560 |
+
bottom: -0.25em;
|
561 |
+
}
|
562 |
+
|
563 |
+
sup {
|
564 |
+
top: -0.5em;
|
565 |
+
}
|
566 |
+
|
567 |
+
/*
|
568 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
569 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
570 |
+
3. Remove gaps between table borders by default.
|
571 |
+
*/
|
572 |
+
|
573 |
+
table {
|
574 |
+
text-indent: 0;
|
575 |
+
/* 1 */
|
576 |
+
border-color: inherit;
|
577 |
+
/* 2 */
|
578 |
+
border-collapse: collapse;
|
579 |
+
/* 3 */
|
580 |
+
}
|
581 |
+
|
582 |
+
/*
|
583 |
+
1. Change the font styles in all browsers.
|
584 |
+
2. Remove the margin in Firefox and Safari.
|
585 |
+
3. Remove default padding in all browsers.
|
586 |
+
*/
|
587 |
+
|
588 |
+
button,
|
589 |
+
input,
|
590 |
+
optgroup,
|
591 |
+
select,
|
592 |
+
textarea {
|
593 |
+
font-family: inherit;
|
594 |
+
/* 1 */
|
595 |
+
font-feature-settings: inherit;
|
596 |
+
/* 1 */
|
597 |
+
font-variation-settings: inherit;
|
598 |
+
/* 1 */
|
599 |
+
font-size: 100%;
|
600 |
+
/* 1 */
|
601 |
+
font-weight: inherit;
|
602 |
+
/* 1 */
|
603 |
+
line-height: inherit;
|
604 |
+
/* 1 */
|
605 |
+
color: inherit;
|
606 |
+
/* 1 */
|
607 |
+
margin: 0;
|
608 |
+
/* 2 */
|
609 |
+
padding: 0;
|
610 |
+
/* 3 */
|
611 |
+
}
|
612 |
+
|
613 |
+
/*
|
614 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
615 |
+
*/
|
616 |
+
|
617 |
+
button,
|
618 |
+
select {
|
619 |
+
text-transform: none;
|
620 |
+
}
|
621 |
+
|
622 |
+
/*
|
623 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
624 |
+
2. Remove default button styles.
|
625 |
+
*/
|
626 |
+
|
627 |
+
button,
|
628 |
+
[type="button"],
|
629 |
+
[type="reset"],
|
630 |
+
[type="submit"] {
|
631 |
+
-webkit-appearance: button;
|
632 |
+
/* 1 */
|
633 |
+
background-color: transparent;
|
634 |
+
/* 2 */
|
635 |
+
background-image: none;
|
636 |
+
/* 2 */
|
637 |
+
}
|
638 |
+
|
639 |
+
/*
|
640 |
+
Use the modern Firefox focus style for all focusable elements.
|
641 |
+
*/
|
642 |
+
|
643 |
+
:-moz-focusring {
|
644 |
+
outline: auto;
|
645 |
+
}
|
646 |
+
|
647 |
+
/*
|
648 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
649 |
+
*/
|
650 |
+
|
651 |
+
:-moz-ui-invalid {
|
652 |
+
box-shadow: none;
|
653 |
+
}
|
654 |
+
|
655 |
+
/*
|
656 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
657 |
+
*/
|
658 |
+
|
659 |
+
progress {
|
660 |
+
vertical-align: baseline;
|
661 |
+
}
|
662 |
+
|
663 |
+
/*
|
664 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
665 |
+
*/
|
666 |
+
|
667 |
+
::-webkit-inner-spin-button,
|
668 |
+
::-webkit-outer-spin-button {
|
669 |
+
height: auto;
|
670 |
+
}
|
671 |
+
|
672 |
+
/*
|
673 |
+
1. Correct the odd appearance in Chrome and Safari.
|
674 |
+
2. Correct the outline style in Safari.
|
675 |
+
*/
|
676 |
+
|
677 |
+
[type="search"] {
|
678 |
+
-webkit-appearance: textfield;
|
679 |
+
/* 1 */
|
680 |
+
outline-offset: -2px;
|
681 |
+
/* 2 */
|
682 |
+
}
|
683 |
+
|
684 |
+
/*
|
685 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
686 |
+
*/
|
687 |
+
|
688 |
+
::-webkit-search-decoration {
|
689 |
+
-webkit-appearance: none;
|
690 |
+
}
|
691 |
+
|
692 |
+
/*
|
693 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
694 |
+
2. Change font properties to `inherit` in Safari.
|
695 |
+
*/
|
696 |
+
|
697 |
+
::-webkit-file-upload-button {
|
698 |
+
-webkit-appearance: button;
|
699 |
+
/* 1 */
|
700 |
+
font: inherit;
|
701 |
+
/* 2 */
|
702 |
+
}
|
703 |
+
|
704 |
+
/*
|
705 |
+
Add the correct display in Chrome and Safari.
|
706 |
+
*/
|
707 |
+
|
708 |
+
summary {
|
709 |
+
display: list-item;
|
710 |
+
}
|
711 |
+
|
712 |
+
/*
|
713 |
+
Removes the default spacing and border for appropriate elements.
|
714 |
+
*/
|
715 |
+
|
716 |
+
blockquote,
|
717 |
+
dl,
|
718 |
+
dd,
|
719 |
+
h1,
|
720 |
+
h2,
|
721 |
+
h3,
|
722 |
+
h4,
|
723 |
+
h5,
|
724 |
+
h6,
|
725 |
+
hr,
|
726 |
+
figure,
|
727 |
+
p,
|
728 |
+
pre {
|
729 |
+
margin: 0;
|
730 |
+
}
|
731 |
+
|
732 |
+
fieldset {
|
733 |
+
margin: 0;
|
734 |
+
padding: 0;
|
735 |
+
}
|
736 |
+
|
737 |
+
legend {
|
738 |
+
padding: 0;
|
739 |
+
}
|
740 |
+
|
741 |
+
ol,
|
742 |
+
ul,
|
743 |
+
menu {
|
744 |
+
list-style: none;
|
745 |
+
margin: 0;
|
746 |
+
padding: 0;
|
747 |
+
}
|
748 |
+
|
749 |
+
/*
|
750 |
+
Reset default styling for dialogs.
|
751 |
+
*/
|
752 |
+
|
753 |
+
dialog {
|
754 |
+
padding: 0;
|
755 |
+
}
|
756 |
+
|
757 |
+
/*
|
758 |
+
Prevent resizing textareas horizontally by default.
|
759 |
+
*/
|
760 |
+
|
761 |
+
textarea {
|
762 |
+
resize: vertical;
|
763 |
+
}
|
764 |
+
|
765 |
+
/*
|
766 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
767 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
768 |
+
*/
|
769 |
+
|
770 |
+
input::placeholder,
|
771 |
+
textarea::placeholder {
|
772 |
+
opacity: 1;
|
773 |
+
/* 1 */
|
774 |
+
color: #9ca3af;
|
775 |
+
/* 2 */
|
776 |
+
}
|
777 |
+
|
778 |
+
/*
|
779 |
+
Set the default cursor for buttons.
|
780 |
+
*/
|
781 |
+
|
782 |
+
button,
|
783 |
+
[role="button"] {
|
784 |
+
cursor: pointer;
|
785 |
+
}
|
786 |
+
|
787 |
+
/*
|
788 |
+
Make sure disabled buttons don't get the pointer cursor.
|
789 |
+
*/
|
790 |
+
|
791 |
+
:disabled {
|
792 |
+
cursor: default;
|
793 |
+
}
|
794 |
+
|
795 |
+
/*
|
796 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
797 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
798 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
799 |
+
*/
|
800 |
+
|
801 |
+
img,
|
802 |
+
svg,
|
803 |
+
video,
|
804 |
+
canvas,
|
805 |
+
audio,
|
806 |
+
iframe,
|
807 |
+
embed,
|
808 |
+
object {
|
809 |
+
display: block;
|
810 |
+
/* 1 */
|
811 |
+
vertical-align: middle;
|
812 |
+
/* 2 */
|
813 |
+
}
|
814 |
+
|
815 |
+
/*
|
816 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
817 |
+
*/
|
818 |
+
|
819 |
+
img,
|
820 |
+
video {
|
821 |
+
max-width: 100%;
|
822 |
+
height: auto;
|
823 |
+
}
|
824 |
+
|
825 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
826 |
+
|
827 |
+
[hidden] {
|
828 |
+
display: none;
|
829 |
+
}
|
830 |
+
|
831 |
+
*,
|
832 |
+
::before,
|
833 |
+
::after {
|
834 |
+
--tw-border-spacing-x: 0;
|
835 |
+
--tw-border-spacing-y: 0;
|
836 |
+
--tw-translate-x: 0;
|
837 |
+
--tw-translate-y: 0;
|
838 |
+
--tw-rotate: 0;
|
839 |
+
--tw-skew-x: 0;
|
840 |
+
--tw-skew-y: 0;
|
841 |
+
--tw-scale-x: 1;
|
842 |
+
--tw-scale-y: 1;
|
843 |
+
--tw-pan-x: ;
|
844 |
+
--tw-pan-y: ;
|
845 |
+
--tw-pinch-zoom: ;
|
846 |
+
--tw-scroll-snap-strictness: proximity;
|
847 |
+
--tw-gradient-from-position: ;
|
848 |
+
--tw-gradient-via-position: ;
|
849 |
+
--tw-gradient-to-position: ;
|
850 |
+
--tw-ordinal: ;
|
851 |
+
--tw-slashed-zero: ;
|
852 |
+
--tw-numeric-figure: ;
|
853 |
+
--tw-numeric-spacing: ;
|
854 |
+
--tw-numeric-fraction: ;
|
855 |
+
--tw-ring-inset: ;
|
856 |
+
--tw-ring-offset-width: 0px;
|
857 |
+
--tw-ring-offset-color: #fff;
|
858 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
859 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
860 |
+
--tw-ring-shadow: 0 0 #0000;
|
861 |
+
--tw-shadow: 0 0 #0000;
|
862 |
+
--tw-shadow-colored: 0 0 #0000;
|
863 |
+
--tw-blur: ;
|
864 |
+
--tw-brightness: ;
|
865 |
+
--tw-contrast: ;
|
866 |
+
--tw-grayscale: ;
|
867 |
+
--tw-hue-rotate: ;
|
868 |
+
--tw-invert: ;
|
869 |
+
--tw-saturate: ;
|
870 |
+
--tw-sepia: ;
|
871 |
+
--tw-drop-shadow: ;
|
872 |
+
--tw-backdrop-blur: ;
|
873 |
+
--tw-backdrop-brightness: ;
|
874 |
+
--tw-backdrop-contrast: ;
|
875 |
+
--tw-backdrop-grayscale: ;
|
876 |
+
--tw-backdrop-hue-rotate: ;
|
877 |
+
--tw-backdrop-invert: ;
|
878 |
+
--tw-backdrop-opacity: ;
|
879 |
+
--tw-backdrop-saturate: ;
|
880 |
+
--tw-backdrop-sepia: ;
|
881 |
+
}
|
882 |
+
|
883 |
+
::backdrop {
|
884 |
+
--tw-border-spacing-x: 0;
|
885 |
+
--tw-border-spacing-y: 0;
|
886 |
+
--tw-translate-x: 0;
|
887 |
+
--tw-translate-y: 0;
|
888 |
+
--tw-rotate: 0;
|
889 |
+
--tw-skew-x: 0;
|
890 |
+
--tw-skew-y: 0;
|
891 |
+
--tw-scale-x: 1;
|
892 |
+
--tw-scale-y: 1;
|
893 |
+
--tw-pan-x: ;
|
894 |
+
--tw-pan-y: ;
|
895 |
+
--tw-pinch-zoom: ;
|
896 |
+
--tw-scroll-snap-strictness: proximity;
|
897 |
+
--tw-gradient-from-position: ;
|
898 |
+
--tw-gradient-via-position: ;
|
899 |
+
--tw-gradient-to-position: ;
|
900 |
+
--tw-ordinal: ;
|
901 |
+
--tw-slashed-zero: ;
|
902 |
+
--tw-numeric-figure: ;
|
903 |
+
--tw-numeric-spacing: ;
|
904 |
+
--tw-numeric-fraction: ;
|
905 |
+
--tw-ring-inset: ;
|
906 |
+
--tw-ring-offset-width: 0px;
|
907 |
+
--tw-ring-offset-color: #fff;
|
908 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
909 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
910 |
+
--tw-ring-shadow: 0 0 #0000;
|
911 |
+
--tw-shadow: 0 0 #0000;
|
912 |
+
--tw-shadow-colored: 0 0 #0000;
|
913 |
+
--tw-blur: ;
|
914 |
+
--tw-brightness: ;
|
915 |
+
--tw-contrast: ;
|
916 |
+
--tw-grayscale: ;
|
917 |
+
--tw-hue-rotate: ;
|
918 |
+
--tw-invert: ;
|
919 |
+
--tw-saturate: ;
|
920 |
+
--tw-sepia: ;
|
921 |
+
--tw-drop-shadow: ;
|
922 |
+
--tw-backdrop-blur: ;
|
923 |
+
--tw-backdrop-brightness: ;
|
924 |
+
--tw-backdrop-contrast: ;
|
925 |
+
--tw-backdrop-grayscale: ;
|
926 |
+
--tw-backdrop-hue-rotate: ;
|
927 |
+
--tw-backdrop-invert: ;
|
928 |
+
--tw-backdrop-opacity: ;
|
929 |
+
--tw-backdrop-saturate: ;
|
930 |
+
--tw-backdrop-sepia: ;
|
931 |
+
}
|
932 |
+
|
933 |
+
.sr-only {
|
934 |
+
position: absolute;
|
935 |
+
width: 1px;
|
936 |
+
height: 1px;
|
937 |
+
padding: 0;
|
938 |
+
margin: -1px;
|
939 |
+
overflow: hidden;
|
940 |
+
clip: rect(0, 0, 0, 0);
|
941 |
+
white-space: nowrap;
|
942 |
+
border-width: 0;
|
943 |
+
}
|
944 |
+
|
945 |
+
.collapse {
|
946 |
+
visibility: collapse;
|
947 |
+
}
|
948 |
+
|
949 |
+
.absolute {
|
950 |
+
position: absolute;
|
951 |
+
}
|
952 |
+
|
953 |
+
.relative {
|
954 |
+
position: relative;
|
955 |
+
}
|
956 |
+
|
957 |
+
.inset-0 {
|
958 |
+
inset: 0px;
|
959 |
+
}
|
960 |
+
|
961 |
+
.end-0 {
|
962 |
+
inset-inline-end: 0px;
|
963 |
+
}
|
964 |
+
|
965 |
+
.top-0 {
|
966 |
+
top: 0px;
|
967 |
+
}
|
968 |
+
|
969 |
+
.z-10 {
|
970 |
+
z-index: 10;
|
971 |
+
}
|
972 |
+
|
973 |
+
.z-20 {
|
974 |
+
z-index: 20;
|
975 |
+
}
|
976 |
+
|
977 |
+
.mx-10 {
|
978 |
+
margin-left: 2.5rem;
|
979 |
+
margin-right: 2.5rem;
|
980 |
+
}
|
981 |
+
|
982 |
+
.mx-auto {
|
983 |
+
margin-left: auto;
|
984 |
+
margin-right: auto;
|
985 |
+
}
|
986 |
+
|
987 |
+
.my-2 {
|
988 |
+
margin-top: 0.5rem;
|
989 |
+
margin-bottom: 0.5rem;
|
990 |
+
}
|
991 |
+
|
992 |
+
.my-8 {
|
993 |
+
margin-top: 2rem;
|
994 |
+
margin-bottom: 2rem;
|
995 |
+
}
|
996 |
+
|
997 |
+
.mb-10 {
|
998 |
+
margin-bottom: 2.5rem;
|
999 |
+
}
|
1000 |
+
|
1001 |
+
.mb-2 {
|
1002 |
+
margin-bottom: 0.5rem;
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
.ms-2 {
|
1006 |
+
margin-inline-start: 0.5rem;
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
.ms-2\.5 {
|
1010 |
+
margin-inline-start: 0.625rem;
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
.ms-3 {
|
1014 |
+
margin-inline-start: 0.75rem;
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
.mt-1 {
|
1018 |
+
margin-top: 0.25rem;
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
.mt-6 {
|
1022 |
+
margin-top: 1.5rem;
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
.block {
|
1026 |
+
display: block;
|
1027 |
+
}
|
1028 |
+
|
1029 |
+
.inline-block {
|
1030 |
+
display: inline-block;
|
1031 |
+
}
|
1032 |
+
|
1033 |
+
.inline {
|
1034 |
+
display: inline;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
.flex {
|
1038 |
+
display: flex;
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
.inline-flex {
|
1042 |
+
display: inline-flex;
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
.hidden {
|
1046 |
+
display: none;
|
1047 |
+
}
|
1048 |
+
|
1049 |
+
.h-10 {
|
1050 |
+
height: 2.5rem;
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
.h-2 {
|
1054 |
+
height: 0.5rem;
|
1055 |
+
}
|
1056 |
+
|
1057 |
+
.h-2\.5 {
|
1058 |
+
height: 0.625rem;
|
1059 |
+
}
|
1060 |
+
|
1061 |
+
.h-3 {
|
1062 |
+
height: 0.75rem;
|
1063 |
+
}
|
1064 |
+
|
1065 |
+
.h-4 {
|
1066 |
+
height: 1rem;
|
1067 |
+
}
|
1068 |
+
|
1069 |
+
.h-6 {
|
1070 |
+
height: 1.5rem;
|
1071 |
+
}
|
1072 |
+
|
1073 |
+
.h-full {
|
1074 |
+
height: 100%;
|
1075 |
+
}
|
1076 |
+
|
1077 |
+
.min-h-screen {
|
1078 |
+
min-height: 100vh;
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
.w-1\/3 {
|
1082 |
+
width: 33.333333%;
|
1083 |
+
}
|
1084 |
+
|
1085 |
+
.w-10 {
|
1086 |
+
width: 2.5rem;
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
.w-2 {
|
1090 |
+
width: 0.5rem;
|
1091 |
+
}
|
1092 |
+
|
1093 |
+
.w-2\.5 {
|
1094 |
+
width: 0.625rem;
|
1095 |
+
}
|
1096 |
+
|
1097 |
+
.w-3 {
|
1098 |
+
width: 0.75rem;
|
1099 |
+
}
|
1100 |
+
|
1101 |
+
.w-4 {
|
1102 |
+
width: 1rem;
|
1103 |
+
}
|
1104 |
+
|
1105 |
+
.w-44 {
|
1106 |
+
width: 11rem;
|
1107 |
+
}
|
1108 |
+
|
1109 |
+
.w-6 {
|
1110 |
+
width: 1.5rem;
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
.w-full {
|
1114 |
+
width: 100%;
|
1115 |
+
}
|
1116 |
+
|
1117 |
+
.max-w-lg {
|
1118 |
+
max-width: 32rem;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
.flex-shrink-0 {
|
1122 |
+
flex-shrink: 0;
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
.shrink-0 {
|
1126 |
+
flex-shrink: 0;
|
1127 |
+
}
|
1128 |
+
|
1129 |
+
.-rotate-90 {
|
1130 |
+
--tw-rotate: -90deg;
|
1131 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
1132 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
1133 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
1134 |
+
}
|
1135 |
+
|
1136 |
+
.rotate-180 {
|
1137 |
+
--tw-rotate: 180deg;
|
1138 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
1139 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
1140 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
.cursor-pointer {
|
1144 |
+
cursor: pointer;
|
1145 |
+
}
|
1146 |
+
|
1147 |
+
.flex-col {
|
1148 |
+
flex-direction: column;
|
1149 |
+
}
|
1150 |
+
|
1151 |
+
.items-center {
|
1152 |
+
align-items: center;
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
.justify-center {
|
1156 |
+
justify-content: center;
|
1157 |
+
}
|
1158 |
+
|
1159 |
+
.justify-between {
|
1160 |
+
justify-content: space-between;
|
1161 |
+
}
|
1162 |
+
|
1163 |
+
.gap-3 {
|
1164 |
+
gap: 0.75rem;
|
1165 |
+
}
|
1166 |
+
|
1167 |
+
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
1168 |
+
--tw-space-x-reverse: 0;
|
1169 |
+
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
1170 |
+
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
1171 |
+
}
|
1172 |
+
|
1173 |
+
.divide-y > :not([hidden]) ~ :not([hidden]) {
|
1174 |
+
--tw-divide-y-reverse: 0;
|
1175 |
+
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
1176 |
+
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
|
1177 |
+
}
|
1178 |
+
|
1179 |
+
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
|
1180 |
+
--tw-divide-opacity: 1;
|
1181 |
+
border-color: rgb(243 244 246 / var(--tw-divide-opacity));
|
1182 |
+
}
|
1183 |
+
|
1184 |
+
.overflow-hidden {
|
1185 |
+
overflow: hidden;
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
.whitespace-nowrap {
|
1189 |
+
white-space: nowrap;
|
1190 |
+
}
|
1191 |
+
|
1192 |
+
.rounded-full {
|
1193 |
+
border-radius: 9999px;
|
1194 |
+
}
|
1195 |
+
|
1196 |
+
.rounded-lg {
|
1197 |
+
border-radius: 0.5rem;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
.rounded-e-lg {
|
1201 |
+
border-start-end-radius: 0.5rem;
|
1202 |
+
border-end-end-radius: 0.5rem;
|
1203 |
+
}
|
1204 |
+
|
1205 |
+
.rounded-s-lg {
|
1206 |
+
border-start-start-radius: 0.5rem;
|
1207 |
+
border-end-start-radius: 0.5rem;
|
1208 |
+
}
|
1209 |
+
|
1210 |
+
.rounded-t-xl {
|
1211 |
+
border-top-left-radius: 0.75rem;
|
1212 |
+
border-top-right-radius: 0.75rem;
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
.border {
|
1216 |
+
border-width: 1px;
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
.border-b-0 {
|
1220 |
+
border-bottom-width: 0px;
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
.border-s-2 {
|
1224 |
+
border-inline-start-width: 2px;
|
1225 |
+
}
|
1226 |
+
|
1227 |
+
.border-t-0 {
|
1228 |
+
border-top-width: 0px;
|
1229 |
+
}
|
1230 |
+
|
1231 |
+
.border-blue-700 {
|
1232 |
+
--tw-border-opacity: 1;
|
1233 |
+
border-color: rgb(29 78 216 / var(--tw-border-opacity));
|
1234 |
+
}
|
1235 |
+
|
1236 |
+
.border-gray-200 {
|
1237 |
+
--tw-border-opacity: 1;
|
1238 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
.border-gray-300 {
|
1242 |
+
--tw-border-opacity: 1;
|
1243 |
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
1244 |
+
}
|
1245 |
+
|
1246 |
+
.border-s-gray-50 {
|
1247 |
+
--tw-border-opacity: 1;
|
1248 |
+
border-inline-start-color: rgb(249 250 251 / var(--tw-border-opacity));
|
1249 |
+
}
|
1250 |
+
|
1251 |
+
.bg-blue-200 {
|
1252 |
+
--tw-bg-opacity: 1;
|
1253 |
+
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
.bg-blue-700 {
|
1257 |
+
--tw-bg-opacity: 1;
|
1258 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1259 |
+
}
|
1260 |
+
|
1261 |
+
.bg-gray-100 {
|
1262 |
+
--tw-bg-opacity: 1;
|
1263 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1264 |
+
}
|
1265 |
+
|
1266 |
+
.bg-gray-50 {
|
1267 |
+
--tw-bg-opacity: 1;
|
1268 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
1269 |
+
}
|
1270 |
+
|
1271 |
+
.bg-green-100 {
|
1272 |
+
--tw-bg-opacity: 1;
|
1273 |
+
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
1274 |
+
}
|
1275 |
+
|
1276 |
+
.bg-green-200 {
|
1277 |
+
--tw-bg-opacity: 1;
|
1278 |
+
background-color: rgb(187 247 208 / var(--tw-bg-opacity));
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
.bg-orange-200 {
|
1282 |
+
--tw-bg-opacity: 1;
|
1283 |
+
background-color: rgb(254 215 170 / var(--tw-bg-opacity));
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
.bg-violet-100 {
|
1287 |
+
--tw-bg-opacity: 1;
|
1288 |
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity));
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
.bg-white {
|
1292 |
+
--tw-bg-opacity: 1;
|
1293 |
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
1294 |
+
}
|
1295 |
+
|
1296 |
+
.bg-yellow-100 {
|
1297 |
+
--tw-bg-opacity: 1;
|
1298 |
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity));
|
1299 |
+
}
|
1300 |
+
|
1301 |
+
.bg-\[url\(\/img\/grid\.svg\)\] {
|
1302 |
+
background-image: url(/img/grid.svg);
|
1303 |
+
}
|
1304 |
+
|
1305 |
+
.bg-center {
|
1306 |
+
background-position: center;
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
.p-0 {
|
1310 |
+
padding: 0px;
|
1311 |
+
}
|
1312 |
+
|
1313 |
+
.p-0\.5 {
|
1314 |
+
padding: 0.125rem;
|
1315 |
+
}
|
1316 |
+
|
1317 |
+
.p-1 {
|
1318 |
+
padding: 0.25rem;
|
1319 |
+
}
|
1320 |
+
|
1321 |
+
.p-2 {
|
1322 |
+
padding: 0.5rem;
|
1323 |
+
}
|
1324 |
+
|
1325 |
+
.p-2\.5 {
|
1326 |
+
padding: 0.625rem;
|
1327 |
+
}
|
1328 |
+
|
1329 |
+
.p-5 {
|
1330 |
+
padding: 1.25rem;
|
1331 |
+
}
|
1332 |
+
|
1333 |
+
.px-2 {
|
1334 |
+
padding-left: 0.5rem;
|
1335 |
+
padding-right: 0.5rem;
|
1336 |
+
}
|
1337 |
+
|
1338 |
+
.px-4 {
|
1339 |
+
padding-left: 1rem;
|
1340 |
+
padding-right: 1rem;
|
1341 |
+
}
|
1342 |
+
|
1343 |
+
.px-5 {
|
1344 |
+
padding-left: 1.25rem;
|
1345 |
+
padding-right: 1.25rem;
|
1346 |
+
}
|
1347 |
+
|
1348 |
+
.px-6 {
|
1349 |
+
padding-left: 1.5rem;
|
1350 |
+
padding-right: 1.5rem;
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
.py-2 {
|
1354 |
+
padding-top: 0.5rem;
|
1355 |
+
padding-bottom: 0.5rem;
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
.py-2\.5 {
|
1359 |
+
padding-top: 0.625rem;
|
1360 |
+
padding-bottom: 0.625rem;
|
1361 |
+
}
|
1362 |
+
|
1363 |
+
.py-6 {
|
1364 |
+
padding-top: 1.5rem;
|
1365 |
+
padding-bottom: 1.5rem;
|
1366 |
+
}
|
1367 |
+
|
1368 |
+
.pb-2 {
|
1369 |
+
padding-bottom: 0.5rem;
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
.pb-8 {
|
1373 |
+
padding-bottom: 2rem;
|
1374 |
+
}
|
1375 |
+
|
1376 |
+
.pt-10 {
|
1377 |
+
padding-top: 2.5rem;
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
.text-center {
|
1381 |
+
text-align: center;
|
1382 |
+
}
|
1383 |
+
|
1384 |
+
.text-sm {
|
1385 |
+
font-size: 0.875rem;
|
1386 |
+
line-height: 1.25rem;
|
1387 |
+
}
|
1388 |
+
|
1389 |
+
.text-xs {
|
1390 |
+
font-size: 0.75rem;
|
1391 |
+
line-height: 1rem;
|
1392 |
+
}
|
1393 |
+
|
1394 |
+
.font-bold {
|
1395 |
+
font-weight: 700;
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
.font-medium {
|
1399 |
+
font-weight: 500;
|
1400 |
+
}
|
1401 |
+
|
1402 |
+
.font-semibold {
|
1403 |
+
font-weight: 600;
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
.text-blue-800 {
|
1407 |
+
--tw-text-opacity: 1;
|
1408 |
+
color: rgb(30 64 175);
|
1409 |
+
}
|
1410 |
+
|
1411 |
+
.text-gray-400 {
|
1412 |
+
--tw-text-opacity: 1;
|
1413 |
+
color: rgb(156 163 175);
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
.text-gray-500 {
|
1417 |
+
--tw-text-opacity: 1;
|
1418 |
+
color: rgb(107 114 128);
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
.text-gray-600 {
|
1422 |
+
--tw-text-opacity: 1;
|
1423 |
+
color: rgb(75 85 99);
|
1424 |
+
}
|
1425 |
+
|
1426 |
+
.text-gray-700 {
|
1427 |
+
--tw-text-opacity: 1;
|
1428 |
+
color: rgb(55 65 81);
|
1429 |
+
}
|
1430 |
+
|
1431 |
+
.text-gray-900 {
|
1432 |
+
--tw-text-opacity: 1;
|
1433 |
+
color: rgb(17 24 39);
|
1434 |
+
}
|
1435 |
+
|
1436 |
+
.text-white {
|
1437 |
+
--tw-text-opacity: 1;
|
1438 |
+
color: rgb(255 255 255);
|
1439 |
+
}
|
1440 |
+
|
1441 |
+
.shadow {
|
1442 |
+
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
1443 |
+
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
|
1444 |
+
0 1px 2px -1px var(--tw-shadow-color);
|
1445 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1446 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
.shadow-xl {
|
1450 |
+
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
|
1451 |
+
0 8px 10px -6px rgb(0 0 0 / 0.1);
|
1452 |
+
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
|
1453 |
+
0 8px 10px -6px var(--tw-shadow-color);
|
1454 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1455 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1456 |
+
}
|
1457 |
+
|
1458 |
+
.ring-1 {
|
1459 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1460 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1461 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1462 |
+
calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1463 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1464 |
+
var(--tw-shadow, 0 0 #0000);
|
1465 |
+
}
|
1466 |
+
|
1467 |
+
.ring-gray-900\/5 {
|
1468 |
+
--tw-ring-color: rgb(17 24 39 / 0.05);
|
1469 |
+
}
|
1470 |
+
|
1471 |
+
.sequence_container {
|
1472 |
+
overflow-wrap: anywhere;
|
1473 |
+
counter-reset: sequence;
|
1474 |
+
}
|
1475 |
+
|
1476 |
+
.sequence_container .sequence__chunk {
|
1477 |
+
display: inline-block;
|
1478 |
+
margin: 0.1rem 0 1rem 1rem;
|
1479 |
+
/* width: 10ch; */
|
1480 |
+
position: relative;
|
1481 |
+
white-space: nowrap;
|
1482 |
+
}
|
1483 |
+
|
1484 |
+
.sequence_container .sequence__chunk:not(:last-child):before,
|
1485 |
+
.sequence_container .sequence__chunk--display-last:before {
|
1486 |
+
content: counter(sequence);
|
1487 |
+
counter-increment: sequence 10;
|
1488 |
+
position: absolute;
|
1489 |
+
top: -0.8em;
|
1490 |
+
right: 0;
|
1491 |
+
opacity: 0.5;
|
1492 |
+
font-weight: bold;
|
1493 |
+
}
|
1494 |
+
|
1495 |
+
.sequence-container .sequence__chunk::after {
|
1496 |
+
content: "";
|
1497 |
+
position: absolute;
|
1498 |
+
bottom: 0;
|
1499 |
+
left: 0;
|
1500 |
+
right: 0;
|
1501 |
+
transform-origin: left;
|
1502 |
+
transform: scaleX(0.1);
|
1503 |
+
box-shadow: var(--box-shadow);
|
1504 |
+
}
|
1505 |
+
|
1506 |
+
.sequence__chunk span {
|
1507 |
+
padding: 0 0.05rem;
|
1508 |
+
}
|
1509 |
+
|
1510 |
+
.hover\:bg-blue-800:hover {
|
1511 |
+
--tw-bg-opacity: 1;
|
1512 |
+
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
|
1513 |
+
}
|
1514 |
+
|
1515 |
+
.hover\:bg-gray-100:hover {
|
1516 |
+
--tw-bg-opacity: 1;
|
1517 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1518 |
+
}
|
1519 |
+
|
1520 |
+
.hover\:bg-gray-200:hover {
|
1521 |
+
--tw-bg-opacity: 1;
|
1522 |
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
1523 |
+
}
|
1524 |
+
|
1525 |
+
.hover\:font-bold:hover {
|
1526 |
+
font-weight: 700;
|
1527 |
+
}
|
1528 |
+
|
1529 |
+
.focus\:border-blue-500:focus {
|
1530 |
+
--tw-border-opacity: 1;
|
1531 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1532 |
+
}
|
1533 |
+
|
1534 |
+
.focus\:outline-none:focus {
|
1535 |
+
outline: 2px solid transparent;
|
1536 |
+
outline-offset: 2px;
|
1537 |
+
}
|
1538 |
+
|
1539 |
+
.focus\:ring-4:focus {
|
1540 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1541 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1542 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1543 |
+
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1544 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1545 |
+
var(--tw-shadow, 0 0 #0000);
|
1546 |
+
}
|
1547 |
+
|
1548 |
+
.focus\:ring-blue-300:focus {
|
1549 |
+
--tw-ring-opacity: 1;
|
1550 |
+
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
1551 |
+
}
|
1552 |
+
|
1553 |
+
.focus\:ring-blue-500:focus {
|
1554 |
+
--tw-ring-opacity: 1;
|
1555 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1556 |
+
}
|
1557 |
+
|
1558 |
+
.focus\:ring-gray-100:focus {
|
1559 |
+
--tw-ring-opacity: 1;
|
1560 |
+
--tw-ring-color: rgb(243 244 246 / var(--tw-ring-opacity));
|
1561 |
+
}
|
1562 |
+
|
1563 |
+
.focus\:ring-gray-200:focus {
|
1564 |
+
--tw-ring-opacity: 1;
|
1565 |
+
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
1566 |
+
}
|
1567 |
+
|
1568 |
+
@media (min-width: 640px) {
|
1569 |
+
.sm\:mx-auto {
|
1570 |
+
margin-left: auto;
|
1571 |
+
margin-right: auto;
|
1572 |
+
}
|
1573 |
+
|
1574 |
+
.sm\:rounded-lg {
|
1575 |
+
border-radius: 0.5rem;
|
1576 |
+
}
|
1577 |
+
|
1578 |
+
.sm\:px-10 {
|
1579 |
+
padding-left: 2.5rem;
|
1580 |
+
padding-right: 2.5rem;
|
1581 |
+
}
|
1582 |
+
|
1583 |
+
.sm\:py-12 {
|
1584 |
+
padding-top: 3rem;
|
1585 |
+
padding-bottom: 3rem;
|
1586 |
+
}
|
1587 |
+
}
|
1588 |
+
|
1589 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1590 |
+
text-align: right;
|
1591 |
+
}
|
1592 |
+
|
1593 |
+
@media (prefers-color-scheme: dark) {
|
1594 |
+
.dark\:border-gray-600 {
|
1595 |
+
--tw-border-opacity: 1;
|
1596 |
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1597 |
+
}
|
1598 |
+
|
1599 |
+
.dark\:border-gray-700 {
|
1600 |
+
--tw-border-opacity: 1;
|
1601 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1602 |
+
}
|
1603 |
+
|
1604 |
+
.dark\:border-s-gray-700 {
|
1605 |
+
--tw-border-opacity: 1;
|
1606 |
+
border-inline-start-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1607 |
+
}
|
1608 |
+
|
1609 |
+
.dark\:bg-blue-600 {
|
1610 |
+
--tw-bg-opacity: 1;
|
1611 |
+
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
|
1612 |
+
}
|
1613 |
+
|
1614 |
+
.dark\:bg-gray-600 {
|
1615 |
+
--tw-bg-opacity: 1;
|
1616 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1617 |
+
}
|
1618 |
+
|
1619 |
+
.dark\:bg-gray-700 {
|
1620 |
+
--tw-bg-opacity: 1;
|
1621 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1622 |
+
}
|
1623 |
+
|
1624 |
+
.dark\:bg-gray-900 {
|
1625 |
+
--tw-bg-opacity: 1;
|
1626 |
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
|
1627 |
+
}
|
1628 |
+
|
1629 |
+
.dark\:text-gray-200 {
|
1630 |
+
--tw-text-opacity: 1;
|
1631 |
+
color: rgb(229 231 235);
|
1632 |
+
}
|
1633 |
+
|
1634 |
+
.dark\:text-gray-300 {
|
1635 |
+
--tw-text-opacity: 1;
|
1636 |
+
color: rgb(209 213 219);
|
1637 |
+
}
|
1638 |
+
|
1639 |
+
.dark\:text-gray-400 {
|
1640 |
+
--tw-text-opacity: 1;
|
1641 |
+
color: rgb(156 163 175);
|
1642 |
+
}
|
1643 |
+
|
1644 |
+
.dark\:text-white {
|
1645 |
+
--tw-text-opacity: 1;
|
1646 |
+
color: rgb(255 255 255);
|
1647 |
+
}
|
1648 |
+
|
1649 |
+
.dark\:placeholder-gray-400::placeholder {
|
1650 |
+
--tw-placeholder-opacity: 1;
|
1651 |
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1652 |
+
}
|
1653 |
+
|
1654 |
+
.dark\:hover\:bg-blue-700:hover {
|
1655 |
+
--tw-bg-opacity: 1;
|
1656 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1657 |
+
}
|
1658 |
+
|
1659 |
+
.dark\:hover\:bg-gray-600:hover {
|
1660 |
+
--tw-bg-opacity: 1;
|
1661 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1662 |
+
}
|
1663 |
+
|
1664 |
+
.dark\:hover\:bg-gray-800:hover {
|
1665 |
+
--tw-bg-opacity: 1;
|
1666 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1667 |
+
}
|
1668 |
+
|
1669 |
+
.dark\:hover\:text-white:hover {
|
1670 |
+
--tw-text-opacity: 1;
|
1671 |
+
color: rgb(255 255 255);
|
1672 |
+
}
|
1673 |
+
|
1674 |
+
.dark\:focus\:border-blue-500:focus {
|
1675 |
+
--tw-border-opacity: 1;
|
1676 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1677 |
+
}
|
1678 |
+
|
1679 |
+
.dark\:focus\:ring-blue-500:focus {
|
1680 |
+
--tw-ring-opacity: 1;
|
1681 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1682 |
+
}
|
1683 |
+
|
1684 |
+
.dark\:focus\:ring-blue-800:focus {
|
1685 |
+
--tw-ring-opacity: 1;
|
1686 |
+
--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
|
1687 |
+
}
|
1688 |
+
|
1689 |
+
.dark\:focus\:ring-gray-700:focus {
|
1690 |
+
--tw-ring-opacity: 1;
|
1691 |
+
--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity));
|
1692 |
+
}
|
1693 |
+
|
1694 |
+
.dark\:focus\:ring-gray-800:focus {
|
1695 |
+
--tw-ring-opacity: 1;
|
1696 |
+
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
|
1697 |
+
}
|
1698 |
+
}
|
1699 |
+
</style>
|
src/frontend/shared/Textbox.svelte
ADDED
@@ -0,0 +1,341 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script lang="ts">
|
2 |
+
import {
|
3 |
+
beforeUpdate,
|
4 |
+
afterUpdate,
|
5 |
+
createEventDispatcher,
|
6 |
+
tick
|
7 |
+
} from "svelte";
|
8 |
+
import { BlockTitle } from "@gradio/atoms";
|
9 |
+
import { Copy, Check } from "@gradio/icons";
|
10 |
+
import { fade } from "svelte/transition";
|
11 |
+
import type { SelectData } from "@gradio/utils";
|
12 |
+
|
13 |
+
export let value = "";
|
14 |
+
export let value_is_output = false;
|
15 |
+
export let lines = 1;
|
16 |
+
export let placeholder = "Type here...";
|
17 |
+
export let label: string;
|
18 |
+
export let info: string | undefined = undefined;
|
19 |
+
export let disabled = false;
|
20 |
+
export let show_label = true;
|
21 |
+
export let container = true;
|
22 |
+
export let max_lines: number;
|
23 |
+
export let type: "text" | "password" | "email" = "text";
|
24 |
+
export let show_copy_button = false;
|
25 |
+
export let rtl = false;
|
26 |
+
export let autofocus = false;
|
27 |
+
export let text_align: "left" | "right" | undefined = undefined;
|
28 |
+
export let autoscroll = true;
|
29 |
+
|
30 |
+
let el: HTMLTextAreaElement | HTMLInputElement;
|
31 |
+
let copied = false;
|
32 |
+
let timer: NodeJS.Timeout;
|
33 |
+
let can_scroll: boolean;
|
34 |
+
let previous_scroll_top = 0;
|
35 |
+
let user_has_scrolled_up = false;
|
36 |
+
|
37 |
+
$: value, el && lines !== max_lines && resize({ target: el });
|
38 |
+
|
39 |
+
$: if (value === null) value = "";
|
40 |
+
|
41 |
+
const dispatch = createEventDispatcher<{
|
42 |
+
change: string;
|
43 |
+
submit: undefined;
|
44 |
+
blur: undefined;
|
45 |
+
select: SelectData;
|
46 |
+
input: undefined;
|
47 |
+
focus: undefined;
|
48 |
+
}>();
|
49 |
+
|
50 |
+
beforeUpdate(() => {
|
51 |
+
can_scroll = el && el.offsetHeight + el.scrollTop > el.scrollHeight - 100;
|
52 |
+
});
|
53 |
+
|
54 |
+
const scroll = (): void => {
|
55 |
+
if (can_scroll && autoscroll && !user_has_scrolled_up) {
|
56 |
+
el.scrollTo(0, el.scrollHeight);
|
57 |
+
}
|
58 |
+
};
|
59 |
+
|
60 |
+
function handle_change(): void {
|
61 |
+
dispatch("change", value);
|
62 |
+
if (!value_is_output) {
|
63 |
+
dispatch("input");
|
64 |
+
}
|
65 |
+
}
|
66 |
+
afterUpdate(() => {
|
67 |
+
if (autofocus) {
|
68 |
+
el.focus();
|
69 |
+
}
|
70 |
+
if (can_scroll && autoscroll) {
|
71 |
+
scroll();
|
72 |
+
}
|
73 |
+
value_is_output = false;
|
74 |
+
});
|
75 |
+
$: value, handle_change();
|
76 |
+
|
77 |
+
async function handle_copy(): Promise<void> {
|
78 |
+
if ("clipboard" in navigator) {
|
79 |
+
await navigator.clipboard.writeText(value);
|
80 |
+
copy_feedback();
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
function copy_feedback(): void {
|
85 |
+
copied = true;
|
86 |
+
if (timer) clearTimeout(timer);
|
87 |
+
timer = setTimeout(() => {
|
88 |
+
copied = false;
|
89 |
+
}, 1000);
|
90 |
+
}
|
91 |
+
|
92 |
+
function handle_select(event: Event): void {
|
93 |
+
const target: HTMLTextAreaElement | HTMLInputElement = event.target as
|
94 |
+
| HTMLTextAreaElement
|
95 |
+
| HTMLInputElement;
|
96 |
+
const text = target.value;
|
97 |
+
const index: [number, number] = [
|
98 |
+
target.selectionStart as number,
|
99 |
+
target.selectionEnd as number
|
100 |
+
];
|
101 |
+
dispatch("select", { value: text.substring(...index), index: index });
|
102 |
+
}
|
103 |
+
|
104 |
+
async function handle_keypress(e: KeyboardEvent): Promise<void> {
|
105 |
+
await tick();
|
106 |
+
if (e.key === "Enter" && e.shiftKey && lines > 1) {
|
107 |
+
e.preventDefault();
|
108 |
+
dispatch("submit");
|
109 |
+
} else if (
|
110 |
+
e.key === "Enter" &&
|
111 |
+
!e.shiftKey &&
|
112 |
+
lines === 1 &&
|
113 |
+
max_lines >= 1
|
114 |
+
) {
|
115 |
+
e.preventDefault();
|
116 |
+
dispatch("submit");
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
function handle_scroll(event: Event): void {
|
121 |
+
const target = event.target as HTMLElement;
|
122 |
+
const current_scroll_top = target.scrollTop;
|
123 |
+
if (current_scroll_top < previous_scroll_top) {
|
124 |
+
user_has_scrolled_up = true;
|
125 |
+
}
|
126 |
+
previous_scroll_top = current_scroll_top;
|
127 |
+
|
128 |
+
const max_scroll_top = target.scrollHeight - target.clientHeight;
|
129 |
+
const user_has_scrolled_to_bottom = current_scroll_top >= max_scroll_top;
|
130 |
+
if (user_has_scrolled_to_bottom) {
|
131 |
+
user_has_scrolled_up = false;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
async function resize(
|
136 |
+
event: Event | { target: HTMLTextAreaElement | HTMLInputElement }
|
137 |
+
): Promise<void> {
|
138 |
+
await tick();
|
139 |
+
if (lines === max_lines) return;
|
140 |
+
|
141 |
+
let max =
|
142 |
+
max_lines === undefined
|
143 |
+
? false
|
144 |
+
: max_lines === undefined // default
|
145 |
+
? 21 * 11
|
146 |
+
: 21 * (max_lines + 1);
|
147 |
+
let min = 21 * (lines + 1);
|
148 |
+
|
149 |
+
const target = event.target as HTMLTextAreaElement;
|
150 |
+
target.style.height = "1px";
|
151 |
+
|
152 |
+
let scroll_height;
|
153 |
+
if (max && target.scrollHeight > max) {
|
154 |
+
scroll_height = max;
|
155 |
+
} else if (target.scrollHeight < min) {
|
156 |
+
scroll_height = min;
|
157 |
+
} else {
|
158 |
+
scroll_height = target.scrollHeight;
|
159 |
+
}
|
160 |
+
|
161 |
+
target.style.height = `${scroll_height}px`;
|
162 |
+
}
|
163 |
+
|
164 |
+
function text_area_resize(
|
165 |
+
_el: HTMLTextAreaElement,
|
166 |
+
_value: string
|
167 |
+
): any | undefined {
|
168 |
+
if (lines === max_lines) return;
|
169 |
+
_el.style.overflowY = "scroll";
|
170 |
+
_el.addEventListener("input", resize);
|
171 |
+
|
172 |
+
if (!_value.trim()) return;
|
173 |
+
resize({ target: _el });
|
174 |
+
|
175 |
+
return {
|
176 |
+
destroy: () => _el.removeEventListener("input", resize)
|
177 |
+
};
|
178 |
+
}
|
179 |
+
</script>
|
180 |
+
|
181 |
+
<!-- svelte-ignore a11y-autofocus -->
|
182 |
+
<label class:container>
|
183 |
+
<BlockTitle {show_label} {info}>{label}</BlockTitle>
|
184 |
+
|
185 |
+
{#if lines === 1 && max_lines === 1}
|
186 |
+
{#if type === "text"}
|
187 |
+
<input
|
188 |
+
data-testid="textbox"
|
189 |
+
type="text"
|
190 |
+
class="scroll-hide"
|
191 |
+
dir={rtl ? "rtl" : "ltr"}
|
192 |
+
bind:value
|
193 |
+
bind:this={el}
|
194 |
+
{placeholder}
|
195 |
+
{disabled}
|
196 |
+
{autofocus}
|
197 |
+
on:keypress={handle_keypress}
|
198 |
+
on:blur
|
199 |
+
on:select={handle_select}
|
200 |
+
on:focus
|
201 |
+
style={text_align ? "text-align: " + text_align : ""}
|
202 |
+
/>
|
203 |
+
{:else if type === "password"}
|
204 |
+
<input
|
205 |
+
data-testid="password"
|
206 |
+
type="password"
|
207 |
+
class="scroll-hide"
|
208 |
+
bind:value
|
209 |
+
bind:this={el}
|
210 |
+
{placeholder}
|
211 |
+
{disabled}
|
212 |
+
{autofocus}
|
213 |
+
on:keypress={handle_keypress}
|
214 |
+
on:blur
|
215 |
+
on:select={handle_select}
|
216 |
+
on:focus
|
217 |
+
autocomplete=""
|
218 |
+
/>
|
219 |
+
{:else if type === "email"}
|
220 |
+
<input
|
221 |
+
data-testid="textbox"
|
222 |
+
type="email"
|
223 |
+
class="scroll-hide"
|
224 |
+
bind:value
|
225 |
+
bind:this={el}
|
226 |
+
{placeholder}
|
227 |
+
{disabled}
|
228 |
+
{autofocus}
|
229 |
+
on:keypress={handle_keypress}
|
230 |
+
on:blur
|
231 |
+
on:select={handle_select}
|
232 |
+
on:focus
|
233 |
+
autocomplete="email"
|
234 |
+
/>
|
235 |
+
{/if}
|
236 |
+
{:else}
|
237 |
+
{#if show_label && show_copy_button}
|
238 |
+
{#if copied}
|
239 |
+
<button
|
240 |
+
in:fade={{ duration: 300 }}
|
241 |
+
aria-label="Copied"
|
242 |
+
aria-roledescription="Text copied"><Check /></button
|
243 |
+
>
|
244 |
+
{:else}
|
245 |
+
<button
|
246 |
+
on:click={handle_copy}
|
247 |
+
aria-label="Copy"
|
248 |
+
aria-roledescription="Copy text"><Copy /></button
|
249 |
+
>
|
250 |
+
{/if}
|
251 |
+
{/if}
|
252 |
+
<textarea
|
253 |
+
data-testid="textbox"
|
254 |
+
use:text_area_resize={value}
|
255 |
+
class="scroll-hide"
|
256 |
+
dir={rtl ? "rtl" : "ltr"}
|
257 |
+
bind:value
|
258 |
+
bind:this={el}
|
259 |
+
{placeholder}
|
260 |
+
rows={lines}
|
261 |
+
{disabled}
|
262 |
+
{autofocus}
|
263 |
+
on:keypress={handle_keypress}
|
264 |
+
on:blur
|
265 |
+
on:select={handle_select}
|
266 |
+
on:focus
|
267 |
+
on:scroll={handle_scroll}
|
268 |
+
style={text_align ? "text-align: " + text_align : ""}
|
269 |
+
/>
|
270 |
+
{/if}
|
271 |
+
</label>
|
272 |
+
|
273 |
+
<style>
|
274 |
+
label {
|
275 |
+
display: block;
|
276 |
+
width: 100%;
|
277 |
+
}
|
278 |
+
|
279 |
+
input,
|
280 |
+
textarea {
|
281 |
+
display: block;
|
282 |
+
position: relative;
|
283 |
+
outline: none !important;
|
284 |
+
box-shadow: var(--input-shadow);
|
285 |
+
background: var(--input-background-fill);
|
286 |
+
padding: var(--input-padding);
|
287 |
+
width: 100%;
|
288 |
+
color: var(--body-text-color);
|
289 |
+
font-weight: var(--input-text-weight);
|
290 |
+
font-size: var(--input-text-size);
|
291 |
+
line-height: var(--line-sm);
|
292 |
+
border: none;
|
293 |
+
}
|
294 |
+
label:not(.container),
|
295 |
+
label:not(.container) > input,
|
296 |
+
label:not(.container) > textarea {
|
297 |
+
height: 100%;
|
298 |
+
}
|
299 |
+
.container > input,
|
300 |
+
.container > textarea {
|
301 |
+
border: var(--input-border-width) solid var(--input-border-color);
|
302 |
+
border-radius: var(--input-radius);
|
303 |
+
}
|
304 |
+
input:disabled,
|
305 |
+
textarea:disabled {
|
306 |
+
-webkit-text-fill-color: var(--body-text-color);
|
307 |
+
-webkit-opacity: 1;
|
308 |
+
opacity: 1;
|
309 |
+
}
|
310 |
+
|
311 |
+
input:focus,
|
312 |
+
textarea:focus {
|
313 |
+
box-shadow: var(--input-shadow-focus);
|
314 |
+
border-color: var(--input-border-color-focus);
|
315 |
+
}
|
316 |
+
|
317 |
+
input::placeholder,
|
318 |
+
textarea::placeholder {
|
319 |
+
color: var(--input-placeholder-color);
|
320 |
+
}
|
321 |
+
button {
|
322 |
+
display: flex;
|
323 |
+
position: absolute;
|
324 |
+
top: var(--block-label-margin);
|
325 |
+
right: var(--block-label-margin);
|
326 |
+
align-items: center;
|
327 |
+
box-shadow: var(--shadow-drop);
|
328 |
+
border: 1px solid var(--color-border-primary);
|
329 |
+
border-top: none;
|
330 |
+
border-right: none;
|
331 |
+
border-radius: var(--block-label-right-radius);
|
332 |
+
background: var(--block-label-background-fill);
|
333 |
+
padding: 5px;
|
334 |
+
width: 22px;
|
335 |
+
height: 22px;
|
336 |
+
overflow: hidden;
|
337 |
+
color: var(--block-label-color);
|
338 |
+
font: var(--font-sans);
|
339 |
+
font-size: var(--button-small-text-size);
|
340 |
+
}
|
341 |
+
</style>
|
src/frontend/shared/style.css
ADDED
@@ -0,0 +1,1302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
|
3 |
+
*/
|
4 |
+
|
5 |
+
/*
|
6 |
+
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
7 |
+
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
8 |
+
*/
|
9 |
+
|
10 |
+
*,
|
11 |
+
::before,
|
12 |
+
::after {
|
13 |
+
box-sizing: border-box;
|
14 |
+
/* 1 */
|
15 |
+
border-width: 0;
|
16 |
+
/* 2 */
|
17 |
+
border-style: solid;
|
18 |
+
/* 2 */
|
19 |
+
border-color: #e5e7eb;
|
20 |
+
/* 2 */
|
21 |
+
}
|
22 |
+
|
23 |
+
::before,
|
24 |
+
::after {
|
25 |
+
--tw-content: "";
|
26 |
+
}
|
27 |
+
|
28 |
+
/*
|
29 |
+
1. Use a consistent sensible line-height in all browsers.
|
30 |
+
2. Prevent adjustments of font size after orientation changes in iOS.
|
31 |
+
3. Use a more readable tab size.
|
32 |
+
4. Use the user's configured `sans` font-family by default.
|
33 |
+
5. Use the user's configured `sans` font-feature-settings by default.
|
34 |
+
6. Use the user's configured `sans` font-variation-settings by default.
|
35 |
+
7. Disable tap highlights on iOS
|
36 |
+
*/
|
37 |
+
|
38 |
+
html,
|
39 |
+
:host {
|
40 |
+
line-height: 1.5;
|
41 |
+
/* 1 */
|
42 |
+
-webkit-text-size-adjust: 100%;
|
43 |
+
/* 2 */
|
44 |
+
-moz-tab-size: 4;
|
45 |
+
/* 3 */
|
46 |
+
tab-size: 4;
|
47 |
+
/* 3 */
|
48 |
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
49 |
+
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
50 |
+
/* 4 */
|
51 |
+
font-feature-settings: normal;
|
52 |
+
/* 5 */
|
53 |
+
font-variation-settings: normal;
|
54 |
+
/* 6 */
|
55 |
+
-webkit-tap-highlight-color: transparent;
|
56 |
+
/* 7 */
|
57 |
+
}
|
58 |
+
|
59 |
+
/*
|
60 |
+
1. Remove the margin in all browsers.
|
61 |
+
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
|
62 |
+
*/
|
63 |
+
|
64 |
+
body {
|
65 |
+
margin: 0;
|
66 |
+
/* 1 */
|
67 |
+
line-height: inherit;
|
68 |
+
/* 2 */
|
69 |
+
}
|
70 |
+
|
71 |
+
/*
|
72 |
+
1. Add the correct height in Firefox.
|
73 |
+
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
74 |
+
3. Ensure horizontal rules are visible by default.
|
75 |
+
*/
|
76 |
+
|
77 |
+
hr {
|
78 |
+
height: 0;
|
79 |
+
/* 1 */
|
80 |
+
color: inherit;
|
81 |
+
/* 2 */
|
82 |
+
border-top-width: 1px;
|
83 |
+
/* 3 */
|
84 |
+
}
|
85 |
+
|
86 |
+
/*
|
87 |
+
Add the correct text decoration in Chrome, Edge, and Safari.
|
88 |
+
*/
|
89 |
+
|
90 |
+
abbr:where([title]) {
|
91 |
+
text-decoration: underline dotted;
|
92 |
+
}
|
93 |
+
|
94 |
+
/*
|
95 |
+
Remove the default font size and weight for headings.
|
96 |
+
*/
|
97 |
+
|
98 |
+
h1,
|
99 |
+
h2,
|
100 |
+
h3,
|
101 |
+
h4,
|
102 |
+
h5,
|
103 |
+
h6 {
|
104 |
+
font-size: inherit;
|
105 |
+
font-weight: inherit;
|
106 |
+
}
|
107 |
+
|
108 |
+
/*
|
109 |
+
Reset links to optimize for opt-in styling instead of opt-out.
|
110 |
+
*/
|
111 |
+
|
112 |
+
a {
|
113 |
+
color: inherit;
|
114 |
+
text-decoration: inherit;
|
115 |
+
}
|
116 |
+
|
117 |
+
/*
|
118 |
+
Add the correct font weight in Edge and Safari.
|
119 |
+
*/
|
120 |
+
|
121 |
+
b,
|
122 |
+
strong {
|
123 |
+
font-weight: bolder;
|
124 |
+
}
|
125 |
+
|
126 |
+
/*
|
127 |
+
1. Use the user's configured `mono` font-family by default.
|
128 |
+
2. Use the user's configured `mono` font-feature-settings by default.
|
129 |
+
3. Use the user's configured `mono` font-variation-settings by default.
|
130 |
+
4. Correct the odd `em` font sizing in all browsers.
|
131 |
+
*/
|
132 |
+
|
133 |
+
code,
|
134 |
+
kbd,
|
135 |
+
samp,
|
136 |
+
pre {
|
137 |
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
138 |
+
"Liberation Mono", "Courier New", monospace;
|
139 |
+
/* 1 */
|
140 |
+
font-feature-settings: normal;
|
141 |
+
/* 2 */
|
142 |
+
font-variation-settings: normal;
|
143 |
+
/* 3 */
|
144 |
+
font-size: 1em;
|
145 |
+
/* 4 */
|
146 |
+
}
|
147 |
+
|
148 |
+
/*
|
149 |
+
Add the correct font size in all browsers.
|
150 |
+
*/
|
151 |
+
|
152 |
+
small {
|
153 |
+
font-size: 80%;
|
154 |
+
}
|
155 |
+
|
156 |
+
/*
|
157 |
+
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
|
158 |
+
*/
|
159 |
+
|
160 |
+
sub,
|
161 |
+
sup {
|
162 |
+
font-size: 75%;
|
163 |
+
line-height: 0;
|
164 |
+
position: relative;
|
165 |
+
vertical-align: baseline;
|
166 |
+
}
|
167 |
+
|
168 |
+
sub {
|
169 |
+
bottom: -0.25em;
|
170 |
+
}
|
171 |
+
|
172 |
+
sup {
|
173 |
+
top: -0.5em;
|
174 |
+
}
|
175 |
+
|
176 |
+
/*
|
177 |
+
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
178 |
+
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
179 |
+
3. Remove gaps between table borders by default.
|
180 |
+
*/
|
181 |
+
|
182 |
+
table {
|
183 |
+
text-indent: 0;
|
184 |
+
/* 1 */
|
185 |
+
border-color: inherit;
|
186 |
+
/* 2 */
|
187 |
+
border-collapse: collapse;
|
188 |
+
/* 3 */
|
189 |
+
}
|
190 |
+
|
191 |
+
/*
|
192 |
+
1. Change the font styles in all browsers.
|
193 |
+
2. Remove the margin in Firefox and Safari.
|
194 |
+
3. Remove default padding in all browsers.
|
195 |
+
*/
|
196 |
+
|
197 |
+
button,
|
198 |
+
input,
|
199 |
+
optgroup,
|
200 |
+
select,
|
201 |
+
textarea {
|
202 |
+
font-family: inherit;
|
203 |
+
/* 1 */
|
204 |
+
font-feature-settings: inherit;
|
205 |
+
/* 1 */
|
206 |
+
font-variation-settings: inherit;
|
207 |
+
/* 1 */
|
208 |
+
font-size: 100%;
|
209 |
+
/* 1 */
|
210 |
+
font-weight: inherit;
|
211 |
+
/* 1 */
|
212 |
+
line-height: inherit;
|
213 |
+
/* 1 */
|
214 |
+
color: inherit;
|
215 |
+
/* 1 */
|
216 |
+
margin: 0;
|
217 |
+
/* 2 */
|
218 |
+
padding: 0;
|
219 |
+
/* 3 */
|
220 |
+
}
|
221 |
+
|
222 |
+
/*
|
223 |
+
Remove the inheritance of text transform in Edge and Firefox.
|
224 |
+
*/
|
225 |
+
|
226 |
+
button,
|
227 |
+
select {
|
228 |
+
text-transform: none;
|
229 |
+
}
|
230 |
+
|
231 |
+
/*
|
232 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
233 |
+
2. Remove default button styles.
|
234 |
+
*/
|
235 |
+
|
236 |
+
button,
|
237 |
+
[type="button"],
|
238 |
+
[type="reset"],
|
239 |
+
[type="submit"] {
|
240 |
+
-webkit-appearance: button;
|
241 |
+
/* 1 */
|
242 |
+
background-color: transparent;
|
243 |
+
/* 2 */
|
244 |
+
background-image: none;
|
245 |
+
/* 2 */
|
246 |
+
}
|
247 |
+
|
248 |
+
/*
|
249 |
+
Use the modern Firefox focus style for all focusable elements.
|
250 |
+
*/
|
251 |
+
|
252 |
+
:-moz-focusring {
|
253 |
+
outline: auto;
|
254 |
+
}
|
255 |
+
|
256 |
+
/*
|
257 |
+
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
|
258 |
+
*/
|
259 |
+
|
260 |
+
:-moz-ui-invalid {
|
261 |
+
box-shadow: none;
|
262 |
+
}
|
263 |
+
|
264 |
+
/*
|
265 |
+
Add the correct vertical alignment in Chrome and Firefox.
|
266 |
+
*/
|
267 |
+
|
268 |
+
progress {
|
269 |
+
vertical-align: baseline;
|
270 |
+
}
|
271 |
+
|
272 |
+
/*
|
273 |
+
Correct the cursor style of increment and decrement buttons in Safari.
|
274 |
+
*/
|
275 |
+
|
276 |
+
::-webkit-inner-spin-button,
|
277 |
+
::-webkit-outer-spin-button {
|
278 |
+
height: auto;
|
279 |
+
}
|
280 |
+
|
281 |
+
/*
|
282 |
+
1. Correct the odd appearance in Chrome and Safari.
|
283 |
+
2. Correct the outline style in Safari.
|
284 |
+
*/
|
285 |
+
|
286 |
+
[type="search"] {
|
287 |
+
-webkit-appearance: textfield;
|
288 |
+
/* 1 */
|
289 |
+
outline-offset: -2px;
|
290 |
+
/* 2 */
|
291 |
+
}
|
292 |
+
|
293 |
+
/*
|
294 |
+
Remove the inner padding in Chrome and Safari on macOS.
|
295 |
+
*/
|
296 |
+
|
297 |
+
::-webkit-search-decoration {
|
298 |
+
-webkit-appearance: none;
|
299 |
+
}
|
300 |
+
|
301 |
+
/*
|
302 |
+
1. Correct the inability to style clickable types in iOS and Safari.
|
303 |
+
2. Change font properties to `inherit` in Safari.
|
304 |
+
*/
|
305 |
+
|
306 |
+
::-webkit-file-upload-button {
|
307 |
+
-webkit-appearance: button;
|
308 |
+
/* 1 */
|
309 |
+
font: inherit;
|
310 |
+
/* 2 */
|
311 |
+
}
|
312 |
+
|
313 |
+
/*
|
314 |
+
Add the correct display in Chrome and Safari.
|
315 |
+
*/
|
316 |
+
|
317 |
+
summary {
|
318 |
+
display: list-item;
|
319 |
+
}
|
320 |
+
|
321 |
+
/*
|
322 |
+
Removes the default spacing and border for appropriate elements.
|
323 |
+
*/
|
324 |
+
|
325 |
+
blockquote,
|
326 |
+
dl,
|
327 |
+
dd,
|
328 |
+
h1,
|
329 |
+
h2,
|
330 |
+
h3,
|
331 |
+
h4,
|
332 |
+
h5,
|
333 |
+
h6,
|
334 |
+
hr,
|
335 |
+
figure,
|
336 |
+
p,
|
337 |
+
pre {
|
338 |
+
margin: 0;
|
339 |
+
}
|
340 |
+
|
341 |
+
fieldset {
|
342 |
+
margin: 0;
|
343 |
+
padding: 0;
|
344 |
+
}
|
345 |
+
|
346 |
+
legend {
|
347 |
+
padding: 0;
|
348 |
+
}
|
349 |
+
|
350 |
+
ol,
|
351 |
+
ul,
|
352 |
+
menu {
|
353 |
+
list-style: none;
|
354 |
+
margin: 0;
|
355 |
+
padding: 0;
|
356 |
+
}
|
357 |
+
|
358 |
+
/*
|
359 |
+
Reset default styling for dialogs.
|
360 |
+
*/
|
361 |
+
|
362 |
+
dialog {
|
363 |
+
padding: 0;
|
364 |
+
}
|
365 |
+
|
366 |
+
/*
|
367 |
+
Prevent resizing textareas horizontally by default.
|
368 |
+
*/
|
369 |
+
|
370 |
+
textarea {
|
371 |
+
resize: vertical;
|
372 |
+
}
|
373 |
+
|
374 |
+
/*
|
375 |
+
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
|
376 |
+
2. Set the default placeholder color to the user's configured gray 400 color.
|
377 |
+
*/
|
378 |
+
|
379 |
+
input::placeholder,
|
380 |
+
textarea::placeholder {
|
381 |
+
opacity: 1;
|
382 |
+
/* 1 */
|
383 |
+
color: #9ca3af;
|
384 |
+
/* 2 */
|
385 |
+
}
|
386 |
+
|
387 |
+
/*
|
388 |
+
Set the default cursor for buttons.
|
389 |
+
*/
|
390 |
+
|
391 |
+
button,
|
392 |
+
[role="button"] {
|
393 |
+
cursor: pointer;
|
394 |
+
}
|
395 |
+
|
396 |
+
/*
|
397 |
+
Make sure disabled buttons don't get the pointer cursor.
|
398 |
+
*/
|
399 |
+
|
400 |
+
:disabled {
|
401 |
+
cursor: default;
|
402 |
+
}
|
403 |
+
|
404 |
+
/*
|
405 |
+
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
|
406 |
+
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
|
407 |
+
This can trigger a poorly considered lint error in some tools but is included by design.
|
408 |
+
*/
|
409 |
+
|
410 |
+
img,
|
411 |
+
svg,
|
412 |
+
video,
|
413 |
+
canvas,
|
414 |
+
audio,
|
415 |
+
iframe,
|
416 |
+
embed,
|
417 |
+
object {
|
418 |
+
display: block;
|
419 |
+
/* 1 */
|
420 |
+
vertical-align: middle;
|
421 |
+
/* 2 */
|
422 |
+
}
|
423 |
+
|
424 |
+
/*
|
425 |
+
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
|
426 |
+
*/
|
427 |
+
|
428 |
+
img,
|
429 |
+
video {
|
430 |
+
max-width: 100%;
|
431 |
+
height: auto;
|
432 |
+
}
|
433 |
+
|
434 |
+
/* Make elements with the HTML hidden attribute stay hidden by default */
|
435 |
+
|
436 |
+
[hidden] {
|
437 |
+
display: none;
|
438 |
+
}
|
439 |
+
|
440 |
+
*,
|
441 |
+
::before,
|
442 |
+
::after {
|
443 |
+
--tw-border-spacing-x: 0;
|
444 |
+
--tw-border-spacing-y: 0;
|
445 |
+
--tw-translate-x: 0;
|
446 |
+
--tw-translate-y: 0;
|
447 |
+
--tw-rotate: 0;
|
448 |
+
--tw-skew-x: 0;
|
449 |
+
--tw-skew-y: 0;
|
450 |
+
--tw-scale-x: 1;
|
451 |
+
--tw-scale-y: 1;
|
452 |
+
--tw-pan-x: ;
|
453 |
+
--tw-pan-y: ;
|
454 |
+
--tw-pinch-zoom: ;
|
455 |
+
--tw-scroll-snap-strictness: proximity;
|
456 |
+
--tw-gradient-from-position: ;
|
457 |
+
--tw-gradient-via-position: ;
|
458 |
+
--tw-gradient-to-position: ;
|
459 |
+
--tw-ordinal: ;
|
460 |
+
--tw-slashed-zero: ;
|
461 |
+
--tw-numeric-figure: ;
|
462 |
+
--tw-numeric-spacing: ;
|
463 |
+
--tw-numeric-fraction: ;
|
464 |
+
--tw-ring-inset: ;
|
465 |
+
--tw-ring-offset-width: 0px;
|
466 |
+
--tw-ring-offset-color: #fff;
|
467 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
468 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
469 |
+
--tw-ring-shadow: 0 0 #0000;
|
470 |
+
--tw-shadow: 0 0 #0000;
|
471 |
+
--tw-shadow-colored: 0 0 #0000;
|
472 |
+
--tw-blur: ;
|
473 |
+
--tw-brightness: ;
|
474 |
+
--tw-contrast: ;
|
475 |
+
--tw-grayscale: ;
|
476 |
+
--tw-hue-rotate: ;
|
477 |
+
--tw-invert: ;
|
478 |
+
--tw-saturate: ;
|
479 |
+
--tw-sepia: ;
|
480 |
+
--tw-drop-shadow: ;
|
481 |
+
--tw-backdrop-blur: ;
|
482 |
+
--tw-backdrop-brightness: ;
|
483 |
+
--tw-backdrop-contrast: ;
|
484 |
+
--tw-backdrop-grayscale: ;
|
485 |
+
--tw-backdrop-hue-rotate: ;
|
486 |
+
--tw-backdrop-invert: ;
|
487 |
+
--tw-backdrop-opacity: ;
|
488 |
+
--tw-backdrop-saturate: ;
|
489 |
+
--tw-backdrop-sepia: ;
|
490 |
+
}
|
491 |
+
|
492 |
+
::backdrop {
|
493 |
+
--tw-border-spacing-x: 0;
|
494 |
+
--tw-border-spacing-y: 0;
|
495 |
+
--tw-translate-x: 0;
|
496 |
+
--tw-translate-y: 0;
|
497 |
+
--tw-rotate: 0;
|
498 |
+
--tw-skew-x: 0;
|
499 |
+
--tw-skew-y: 0;
|
500 |
+
--tw-scale-x: 1;
|
501 |
+
--tw-scale-y: 1;
|
502 |
+
--tw-pan-x: ;
|
503 |
+
--tw-pan-y: ;
|
504 |
+
--tw-pinch-zoom: ;
|
505 |
+
--tw-scroll-snap-strictness: proximity;
|
506 |
+
--tw-gradient-from-position: ;
|
507 |
+
--tw-gradient-via-position: ;
|
508 |
+
--tw-gradient-to-position: ;
|
509 |
+
--tw-ordinal: ;
|
510 |
+
--tw-slashed-zero: ;
|
511 |
+
--tw-numeric-figure: ;
|
512 |
+
--tw-numeric-spacing: ;
|
513 |
+
--tw-numeric-fraction: ;
|
514 |
+
--tw-ring-inset: ;
|
515 |
+
--tw-ring-offset-width: 0px;
|
516 |
+
--tw-ring-offset-color: #fff;
|
517 |
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
518 |
+
--tw-ring-offset-shadow: 0 0 #0000;
|
519 |
+
--tw-ring-shadow: 0 0 #0000;
|
520 |
+
--tw-shadow: 0 0 #0000;
|
521 |
+
--tw-shadow-colored: 0 0 #0000;
|
522 |
+
--tw-blur: ;
|
523 |
+
--tw-brightness: ;
|
524 |
+
--tw-contrast: ;
|
525 |
+
--tw-grayscale: ;
|
526 |
+
--tw-hue-rotate: ;
|
527 |
+
--tw-invert: ;
|
528 |
+
--tw-saturate: ;
|
529 |
+
--tw-sepia: ;
|
530 |
+
--tw-drop-shadow: ;
|
531 |
+
--tw-backdrop-blur: ;
|
532 |
+
--tw-backdrop-brightness: ;
|
533 |
+
--tw-backdrop-contrast: ;
|
534 |
+
--tw-backdrop-grayscale: ;
|
535 |
+
--tw-backdrop-hue-rotate: ;
|
536 |
+
--tw-backdrop-invert: ;
|
537 |
+
--tw-backdrop-opacity: ;
|
538 |
+
--tw-backdrop-saturate: ;
|
539 |
+
--tw-backdrop-sepia: ;
|
540 |
+
}
|
541 |
+
|
542 |
+
.sr-only {
|
543 |
+
position: absolute;
|
544 |
+
width: 1px;
|
545 |
+
height: 1px;
|
546 |
+
padding: 0;
|
547 |
+
margin: -1px;
|
548 |
+
overflow: hidden;
|
549 |
+
clip: rect(0, 0, 0, 0);
|
550 |
+
white-space: nowrap;
|
551 |
+
border-width: 0;
|
552 |
+
}
|
553 |
+
|
554 |
+
.collapse {
|
555 |
+
visibility: collapse;
|
556 |
+
}
|
557 |
+
|
558 |
+
.absolute {
|
559 |
+
position: absolute;
|
560 |
+
}
|
561 |
+
|
562 |
+
.relative {
|
563 |
+
position: relative;
|
564 |
+
}
|
565 |
+
|
566 |
+
.inset-0 {
|
567 |
+
inset: 0px;
|
568 |
+
}
|
569 |
+
|
570 |
+
.end-0 {
|
571 |
+
inset-inline-end: 0px;
|
572 |
+
}
|
573 |
+
|
574 |
+
.top-0 {
|
575 |
+
top: 0px;
|
576 |
+
}
|
577 |
+
|
578 |
+
.z-10 {
|
579 |
+
z-index: 10;
|
580 |
+
}
|
581 |
+
|
582 |
+
.z-20 {
|
583 |
+
z-index: 20;
|
584 |
+
}
|
585 |
+
|
586 |
+
.mx-10 {
|
587 |
+
margin-left: 2.5rem;
|
588 |
+
margin-right: 2.5rem;
|
589 |
+
}
|
590 |
+
|
591 |
+
.mx-auto {
|
592 |
+
margin-left: auto;
|
593 |
+
margin-right: auto;
|
594 |
+
}
|
595 |
+
|
596 |
+
.my-2 {
|
597 |
+
margin-top: 0.5rem;
|
598 |
+
margin-bottom: 0.5rem;
|
599 |
+
}
|
600 |
+
|
601 |
+
.mb-10 {
|
602 |
+
margin-bottom: 2.5rem;
|
603 |
+
}
|
604 |
+
|
605 |
+
.mb-2 {
|
606 |
+
margin-bottom: 0.5rem;
|
607 |
+
}
|
608 |
+
|
609 |
+
.ms-2 {
|
610 |
+
margin-inline-start: 0.5rem;
|
611 |
+
}
|
612 |
+
|
613 |
+
.ms-2\.5 {
|
614 |
+
margin-inline-start: 0.625rem;
|
615 |
+
}
|
616 |
+
|
617 |
+
.ms-3 {
|
618 |
+
margin-inline-start: 0.75rem;
|
619 |
+
}
|
620 |
+
|
621 |
+
.mt-1 {
|
622 |
+
margin-top: 0.25rem;
|
623 |
+
}
|
624 |
+
|
625 |
+
.mt-6 {
|
626 |
+
margin-top: 1.5rem;
|
627 |
+
}
|
628 |
+
|
629 |
+
.block {
|
630 |
+
display: block;
|
631 |
+
}
|
632 |
+
|
633 |
+
.inline-block {
|
634 |
+
display: inline-block;
|
635 |
+
}
|
636 |
+
|
637 |
+
.inline {
|
638 |
+
display: inline;
|
639 |
+
}
|
640 |
+
|
641 |
+
.flex {
|
642 |
+
display: flex;
|
643 |
+
}
|
644 |
+
|
645 |
+
.inline-flex {
|
646 |
+
display: inline-flex;
|
647 |
+
}
|
648 |
+
|
649 |
+
.hidden {
|
650 |
+
display: none;
|
651 |
+
}
|
652 |
+
|
653 |
+
.h-10 {
|
654 |
+
height: 2.5rem;
|
655 |
+
}
|
656 |
+
|
657 |
+
.h-2 {
|
658 |
+
height: 0.5rem;
|
659 |
+
}
|
660 |
+
|
661 |
+
.h-2\.5 {
|
662 |
+
height: 0.625rem;
|
663 |
+
}
|
664 |
+
|
665 |
+
.h-3 {
|
666 |
+
height: 0.75rem;
|
667 |
+
}
|
668 |
+
|
669 |
+
.h-4 {
|
670 |
+
height: 1rem;
|
671 |
+
}
|
672 |
+
|
673 |
+
.h-6 {
|
674 |
+
height: 1.5rem;
|
675 |
+
}
|
676 |
+
|
677 |
+
.h-full {
|
678 |
+
height: 100%;
|
679 |
+
}
|
680 |
+
|
681 |
+
.min-h-screen {
|
682 |
+
min-height: 100vh;
|
683 |
+
}
|
684 |
+
|
685 |
+
.w-1\/3 {
|
686 |
+
width: 33.333333%;
|
687 |
+
}
|
688 |
+
|
689 |
+
.w-10 {
|
690 |
+
width: 2.5rem;
|
691 |
+
}
|
692 |
+
|
693 |
+
.w-2 {
|
694 |
+
width: 0.5rem;
|
695 |
+
}
|
696 |
+
|
697 |
+
.w-2\.5 {
|
698 |
+
width: 0.625rem;
|
699 |
+
}
|
700 |
+
|
701 |
+
.w-3 {
|
702 |
+
width: 0.75rem;
|
703 |
+
}
|
704 |
+
|
705 |
+
.w-4 {
|
706 |
+
width: 1rem;
|
707 |
+
}
|
708 |
+
|
709 |
+
.w-44 {
|
710 |
+
width: 11rem;
|
711 |
+
}
|
712 |
+
|
713 |
+
.w-6 {
|
714 |
+
width: 1.5rem;
|
715 |
+
}
|
716 |
+
|
717 |
+
.w-full {
|
718 |
+
width: 100%;
|
719 |
+
}
|
720 |
+
|
721 |
+
.max-w-lg {
|
722 |
+
max-width: 32rem;
|
723 |
+
}
|
724 |
+
|
725 |
+
.flex-shrink-0 {
|
726 |
+
flex-shrink: 0;
|
727 |
+
}
|
728 |
+
|
729 |
+
.shrink-0 {
|
730 |
+
flex-shrink: 0;
|
731 |
+
}
|
732 |
+
|
733 |
+
.-rotate-90 {
|
734 |
+
--tw-rotate: -90deg;
|
735 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
736 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
737 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
738 |
+
}
|
739 |
+
|
740 |
+
.rotate-180 {
|
741 |
+
--tw-rotate: 180deg;
|
742 |
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
743 |
+
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
744 |
+
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
745 |
+
}
|
746 |
+
|
747 |
+
.cursor-pointer {
|
748 |
+
cursor: pointer;
|
749 |
+
}
|
750 |
+
|
751 |
+
.flex-col {
|
752 |
+
flex-direction: column;
|
753 |
+
}
|
754 |
+
|
755 |
+
.items-center {
|
756 |
+
align-items: center;
|
757 |
+
}
|
758 |
+
|
759 |
+
.justify-center {
|
760 |
+
justify-content: center;
|
761 |
+
}
|
762 |
+
|
763 |
+
.justify-between {
|
764 |
+
justify-content: space-between;
|
765 |
+
}
|
766 |
+
|
767 |
+
.gap-3 {
|
768 |
+
gap: 0.75rem;
|
769 |
+
}
|
770 |
+
|
771 |
+
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
772 |
+
--tw-space-x-reverse: 0;
|
773 |
+
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
|
774 |
+
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
|
775 |
+
}
|
776 |
+
|
777 |
+
.divide-y > :not([hidden]) ~ :not([hidden]) {
|
778 |
+
--tw-divide-y-reverse: 0;
|
779 |
+
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
780 |
+
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
|
781 |
+
}
|
782 |
+
|
783 |
+
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
|
784 |
+
--tw-divide-opacity: 1;
|
785 |
+
border-color: rgb(243 244 246 / var(--tw-divide-opacity));
|
786 |
+
}
|
787 |
+
|
788 |
+
.overflow-hidden {
|
789 |
+
overflow: hidden;
|
790 |
+
}
|
791 |
+
|
792 |
+
.whitespace-nowrap {
|
793 |
+
white-space: nowrap;
|
794 |
+
}
|
795 |
+
|
796 |
+
.rounded-full {
|
797 |
+
border-radius: 9999px;
|
798 |
+
}
|
799 |
+
|
800 |
+
.rounded-lg {
|
801 |
+
border-radius: 0.5rem;
|
802 |
+
}
|
803 |
+
|
804 |
+
.rounded-e-lg {
|
805 |
+
border-start-end-radius: 0.5rem;
|
806 |
+
border-end-end-radius: 0.5rem;
|
807 |
+
}
|
808 |
+
|
809 |
+
.rounded-s-lg {
|
810 |
+
border-start-start-radius: 0.5rem;
|
811 |
+
border-end-start-radius: 0.5rem;
|
812 |
+
}
|
813 |
+
|
814 |
+
.rounded-t-xl {
|
815 |
+
border-top-left-radius: 0.75rem;
|
816 |
+
border-top-right-radius: 0.75rem;
|
817 |
+
}
|
818 |
+
|
819 |
+
.border {
|
820 |
+
border-width: 1px;
|
821 |
+
}
|
822 |
+
|
823 |
+
.border-b-0 {
|
824 |
+
border-bottom-width: 0px;
|
825 |
+
}
|
826 |
+
|
827 |
+
.border-s-2 {
|
828 |
+
border-inline-start-width: 2px;
|
829 |
+
}
|
830 |
+
|
831 |
+
.border-t-0 {
|
832 |
+
border-top-width: 0px;
|
833 |
+
}
|
834 |
+
|
835 |
+
.border-blue-700 {
|
836 |
+
--tw-border-opacity: 1;
|
837 |
+
border-color: rgb(29 78 216 / var(--tw-border-opacity));
|
838 |
+
}
|
839 |
+
|
840 |
+
.border-gray-200 {
|
841 |
+
--tw-border-opacity: 1;
|
842 |
+
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
843 |
+
}
|
844 |
+
|
845 |
+
.border-gray-300 {
|
846 |
+
--tw-border-opacity: 1;
|
847 |
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
848 |
+
}
|
849 |
+
|
850 |
+
.border-s-gray-50 {
|
851 |
+
--tw-border-opacity: 1;
|
852 |
+
border-inline-start-color: rgb(249 250 251 / var(--tw-border-opacity));
|
853 |
+
}
|
854 |
+
|
855 |
+
.bg-blue-200 {
|
856 |
+
--tw-bg-opacity: 1;
|
857 |
+
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
|
858 |
+
}
|
859 |
+
|
860 |
+
.bg-blue-700 {
|
861 |
+
--tw-bg-opacity: 1;
|
862 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
863 |
+
}
|
864 |
+
|
865 |
+
.bg-gray-100 {
|
866 |
+
--tw-bg-opacity: 1;
|
867 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
868 |
+
}
|
869 |
+
|
870 |
+
.bg-gray-50 {
|
871 |
+
--tw-bg-opacity: 1;
|
872 |
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
873 |
+
}
|
874 |
+
|
875 |
+
.bg-green-100 {
|
876 |
+
--tw-bg-opacity: 1;
|
877 |
+
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
878 |
+
}
|
879 |
+
|
880 |
+
.bg-green-200 {
|
881 |
+
--tw-bg-opacity: 1;
|
882 |
+
background-color: rgb(187 247 208 / var(--tw-bg-opacity));
|
883 |
+
}
|
884 |
+
|
885 |
+
.bg-orange-200 {
|
886 |
+
--tw-bg-opacity: 1;
|
887 |
+
background-color: rgb(254 215 170 / var(--tw-bg-opacity));
|
888 |
+
}
|
889 |
+
|
890 |
+
.bg-violet-100 {
|
891 |
+
--tw-bg-opacity: 1;
|
892 |
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity));
|
893 |
+
}
|
894 |
+
|
895 |
+
.bg-white {
|
896 |
+
--tw-bg-opacity: 1;
|
897 |
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
898 |
+
}
|
899 |
+
|
900 |
+
.bg-yellow-100 {
|
901 |
+
--tw-bg-opacity: 1;
|
902 |
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity));
|
903 |
+
}
|
904 |
+
|
905 |
+
.bg-\[url\(\/img\/grid\.svg\)\] {
|
906 |
+
background-image: url(/img/grid.svg);
|
907 |
+
}
|
908 |
+
|
909 |
+
.bg-center {
|
910 |
+
background-position: center;
|
911 |
+
}
|
912 |
+
|
913 |
+
.p-0 {
|
914 |
+
padding: 0px;
|
915 |
+
}
|
916 |
+
|
917 |
+
.p-0\.5 {
|
918 |
+
padding: 0.125rem;
|
919 |
+
}
|
920 |
+
|
921 |
+
.p-1 {
|
922 |
+
padding: 0.25rem;
|
923 |
+
}
|
924 |
+
|
925 |
+
.p-2 {
|
926 |
+
padding: 0.5rem;
|
927 |
+
}
|
928 |
+
|
929 |
+
.p-2\.5 {
|
930 |
+
padding: 0.625rem;
|
931 |
+
}
|
932 |
+
|
933 |
+
.p-5 {
|
934 |
+
padding: 1.25rem;
|
935 |
+
}
|
936 |
+
|
937 |
+
.px-2 {
|
938 |
+
padding-left: 0.5rem;
|
939 |
+
padding-right: 0.5rem;
|
940 |
+
}
|
941 |
+
|
942 |
+
.px-4 {
|
943 |
+
padding-left: 1rem;
|
944 |
+
padding-right: 1rem;
|
945 |
+
}
|
946 |
+
|
947 |
+
.px-5 {
|
948 |
+
padding-left: 1.25rem;
|
949 |
+
padding-right: 1.25rem;
|
950 |
+
}
|
951 |
+
|
952 |
+
.px-6 {
|
953 |
+
padding-left: 1.5rem;
|
954 |
+
padding-right: 1.5rem;
|
955 |
+
}
|
956 |
+
|
957 |
+
.py-2 {
|
958 |
+
padding-top: 0.5rem;
|
959 |
+
padding-bottom: 0.5rem;
|
960 |
+
}
|
961 |
+
|
962 |
+
.py-2\.5 {
|
963 |
+
padding-top: 0.625rem;
|
964 |
+
padding-bottom: 0.625rem;
|
965 |
+
}
|
966 |
+
|
967 |
+
.py-6 {
|
968 |
+
padding-top: 1.5rem;
|
969 |
+
padding-bottom: 1.5rem;
|
970 |
+
}
|
971 |
+
|
972 |
+
.pb-2 {
|
973 |
+
padding-bottom: 0.5rem;
|
974 |
+
}
|
975 |
+
|
976 |
+
.pb-8 {
|
977 |
+
padding-bottom: 2rem;
|
978 |
+
}
|
979 |
+
|
980 |
+
.pt-10 {
|
981 |
+
padding-top: 2.5rem;
|
982 |
+
}
|
983 |
+
|
984 |
+
.text-center {
|
985 |
+
text-align: center;
|
986 |
+
}
|
987 |
+
|
988 |
+
.text-sm {
|
989 |
+
font-size: 0.875rem;
|
990 |
+
line-height: 1.25rem;
|
991 |
+
}
|
992 |
+
|
993 |
+
.text-xs {
|
994 |
+
font-size: 0.75rem;
|
995 |
+
line-height: 1rem;
|
996 |
+
}
|
997 |
+
|
998 |
+
.font-bold {
|
999 |
+
font-weight: 700;
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
.font-medium {
|
1003 |
+
font-weight: 500;
|
1004 |
+
}
|
1005 |
+
|
1006 |
+
.font-semibold {
|
1007 |
+
font-weight: 600;
|
1008 |
+
}
|
1009 |
+
|
1010 |
+
.text-blue-800 {
|
1011 |
+
--tw-text-opacity: 1;
|
1012 |
+
color: rgb(30 64 175);
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
.text-gray-400 {
|
1016 |
+
--tw-text-opacity: 1;
|
1017 |
+
color: rgb(156 163 175);
|
1018 |
+
}
|
1019 |
+
|
1020 |
+
.text-gray-500 {
|
1021 |
+
--tw-text-opacity: 1;
|
1022 |
+
color: rgb(107 114 128);
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
.text-gray-600 {
|
1026 |
+
--tw-text-opacity: 1;
|
1027 |
+
color: rgb(75 85 99);
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
.text-gray-700 {
|
1031 |
+
--tw-text-opacity: 1;
|
1032 |
+
color: rgb(55 65 81);
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
.text-gray-900 {
|
1036 |
+
--tw-text-opacity: 1;
|
1037 |
+
color: rgb(17 24 39);
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
.text-white {
|
1041 |
+
--tw-text-opacity: 1;
|
1042 |
+
color: rgb(255 255 255);
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
.shadow {
|
1046 |
+
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
1047 |
+
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
|
1048 |
+
0 1px 2px -1px var(--tw-shadow-color);
|
1049 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1050 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
.shadow-xl {
|
1054 |
+
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
|
1055 |
+
0 8px 10px -6px rgb(0 0 0 / 0.1);
|
1056 |
+
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
|
1057 |
+
0 8px 10px -6px var(--tw-shadow-color);
|
1058 |
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
1059 |
+
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1060 |
+
}
|
1061 |
+
|
1062 |
+
.ring-1 {
|
1063 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1064 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1065 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1066 |
+
calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1067 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1068 |
+
var(--tw-shadow, 0 0 #0000);
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
.ring-gray-900\/5 {
|
1072 |
+
--tw-ring-color: rgb(17 24 39 / 0.05);
|
1073 |
+
}
|
1074 |
+
|
1075 |
+
.sequence_container {
|
1076 |
+
overflow-wrap: anywhere;
|
1077 |
+
counter-reset: sequence;
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
.sequence_container .sequence__chunk {
|
1081 |
+
display: inline-block;
|
1082 |
+
margin: 0.1rem 0 1rem 1rem;
|
1083 |
+
/* width: 10ch; */
|
1084 |
+
position: relative;
|
1085 |
+
white-space: nowrap;
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
.sequence_container .sequence__chunk:not(:last-child):before,
|
1089 |
+
.sequence_container .sequence__chunk--display-last:before {
|
1090 |
+
content: counter(sequence);
|
1091 |
+
counter-increment: sequence 10;
|
1092 |
+
position: absolute;
|
1093 |
+
top: -0.8em;
|
1094 |
+
right: 0;
|
1095 |
+
opacity: 0.5;
|
1096 |
+
font-weight: bold;
|
1097 |
+
}
|
1098 |
+
|
1099 |
+
.sequence-container .sequence__chunk::after {
|
1100 |
+
content: "";
|
1101 |
+
position: absolute;
|
1102 |
+
bottom: 0;
|
1103 |
+
left: 0;
|
1104 |
+
right: 0;
|
1105 |
+
transform-origin: left;
|
1106 |
+
transform: scaleX(0.1);
|
1107 |
+
box-shadow: var(--box-shadow);
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
.sequence__chunk span {
|
1111 |
+
padding: 0 0.05rem;
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
.hover\:bg-blue-800:hover {
|
1115 |
+
--tw-bg-opacity: 1;
|
1116 |
+
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
.hover\:bg-gray-100:hover {
|
1120 |
+
--tw-bg-opacity: 1;
|
1121 |
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1122 |
+
}
|
1123 |
+
|
1124 |
+
.hover\:bg-gray-200:hover {
|
1125 |
+
--tw-bg-opacity: 1;
|
1126 |
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
1127 |
+
}
|
1128 |
+
|
1129 |
+
.hover\:font-bold:hover {
|
1130 |
+
font-weight: 700;
|
1131 |
+
}
|
1132 |
+
|
1133 |
+
.focus\:border-blue-500:focus {
|
1134 |
+
--tw-border-opacity: 1;
|
1135 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1136 |
+
}
|
1137 |
+
|
1138 |
+
.focus\:outline-none:focus {
|
1139 |
+
outline: 2px solid transparent;
|
1140 |
+
outline-offset: 2px;
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
.focus\:ring-4:focus {
|
1144 |
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
1145 |
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1146 |
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
1147 |
+
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1148 |
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
1149 |
+
var(--tw-shadow, 0 0 #0000);
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
.focus\:ring-blue-300:focus {
|
1153 |
+
--tw-ring-opacity: 1;
|
1154 |
+
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
1155 |
+
}
|
1156 |
+
|
1157 |
+
.focus\:ring-blue-500:focus {
|
1158 |
+
--tw-ring-opacity: 1;
|
1159 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
.focus\:ring-gray-100:focus {
|
1163 |
+
--tw-ring-opacity: 1;
|
1164 |
+
--tw-ring-color: rgb(243 244 246 / var(--tw-ring-opacity));
|
1165 |
+
}
|
1166 |
+
|
1167 |
+
.focus\:ring-gray-200:focus {
|
1168 |
+
--tw-ring-opacity: 1;
|
1169 |
+
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
@media (min-width: 640px) {
|
1173 |
+
.sm\:mx-auto {
|
1174 |
+
margin-left: auto;
|
1175 |
+
margin-right: auto;
|
1176 |
+
}
|
1177 |
+
|
1178 |
+
.sm\:rounded-lg {
|
1179 |
+
border-radius: 0.5rem;
|
1180 |
+
}
|
1181 |
+
|
1182 |
+
.sm\:px-10 {
|
1183 |
+
padding-left: 2.5rem;
|
1184 |
+
padding-right: 2.5rem;
|
1185 |
+
}
|
1186 |
+
|
1187 |
+
.sm\:py-12 {
|
1188 |
+
padding-top: 3rem;
|
1189 |
+
padding-bottom: 3rem;
|
1190 |
+
}
|
1191 |
+
}
|
1192 |
+
|
1193 |
+
.rtl\:text-right:where([dir="rtl"], [dir="rtl"] *) {
|
1194 |
+
text-align: right;
|
1195 |
+
}
|
1196 |
+
|
1197 |
+
@media (prefers-color-scheme: dark) {
|
1198 |
+
.dark\:border-gray-600 {
|
1199 |
+
--tw-border-opacity: 1;
|
1200 |
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1201 |
+
}
|
1202 |
+
|
1203 |
+
.dark\:border-gray-700 {
|
1204 |
+
--tw-border-opacity: 1;
|
1205 |
+
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1206 |
+
}
|
1207 |
+
|
1208 |
+
.dark\:border-s-gray-700 {
|
1209 |
+
--tw-border-opacity: 1;
|
1210 |
+
border-inline-start-color: rgb(55 65 81 / var(--tw-border-opacity));
|
1211 |
+
}
|
1212 |
+
|
1213 |
+
.dark\:bg-blue-600 {
|
1214 |
+
--tw-bg-opacity: 1;
|
1215 |
+
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
|
1216 |
+
}
|
1217 |
+
|
1218 |
+
.dark\:bg-gray-600 {
|
1219 |
+
--tw-bg-opacity: 1;
|
1220 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
.dark\:bg-gray-700 {
|
1224 |
+
--tw-bg-opacity: 1;
|
1225 |
+
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1226 |
+
}
|
1227 |
+
|
1228 |
+
.dark\:bg-gray-900 {
|
1229 |
+
--tw-bg-opacity: 1;
|
1230 |
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
|
1231 |
+
}
|
1232 |
+
|
1233 |
+
.dark\:text-gray-200 {
|
1234 |
+
--tw-text-opacity: 1;
|
1235 |
+
color: rgb(229 231 235);
|
1236 |
+
}
|
1237 |
+
|
1238 |
+
.dark\:text-gray-300 {
|
1239 |
+
--tw-text-opacity: 1;
|
1240 |
+
color: rgb(209 213 219);
|
1241 |
+
}
|
1242 |
+
|
1243 |
+
.dark\:text-gray-400 {
|
1244 |
+
--tw-text-opacity: 1;
|
1245 |
+
color: rgb(156 163 175);
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
.dark\:text-white {
|
1249 |
+
--tw-text-opacity: 1;
|
1250 |
+
color: rgb(255 255 255);
|
1251 |
+
}
|
1252 |
+
|
1253 |
+
.dark\:placeholder-gray-400::placeholder {
|
1254 |
+
--tw-placeholder-opacity: 1;
|
1255 |
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1256 |
+
}
|
1257 |
+
|
1258 |
+
.dark\:hover\:bg-blue-700:hover {
|
1259 |
+
--tw-bg-opacity: 1;
|
1260 |
+
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1261 |
+
}
|
1262 |
+
|
1263 |
+
.dark\:hover\:bg-gray-600:hover {
|
1264 |
+
--tw-bg-opacity: 1;
|
1265 |
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
.dark\:hover\:bg-gray-800:hover {
|
1269 |
+
--tw-bg-opacity: 1;
|
1270 |
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
.dark\:hover\:text-white:hover {
|
1274 |
+
--tw-text-opacity: 1;
|
1275 |
+
color: rgb(255 255 255);
|
1276 |
+
}
|
1277 |
+
|
1278 |
+
.dark\:focus\:border-blue-500:focus {
|
1279 |
+
--tw-border-opacity: 1;
|
1280 |
+
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
1281 |
+
}
|
1282 |
+
|
1283 |
+
.dark\:focus\:ring-blue-500:focus {
|
1284 |
+
--tw-ring-opacity: 1;
|
1285 |
+
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
|
1286 |
+
}
|
1287 |
+
|
1288 |
+
.dark\:focus\:ring-blue-800:focus {
|
1289 |
+
--tw-ring-opacity: 1;
|
1290 |
+
--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
|
1291 |
+
}
|
1292 |
+
|
1293 |
+
.dark\:focus\:ring-gray-700:focus {
|
1294 |
+
--tw-ring-opacity: 1;
|
1295 |
+
--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity));
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
.dark\:focus\:ring-gray-800:focus {
|
1299 |
+
--tw-ring-opacity: 1;
|
1300 |
+
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
|
1301 |
+
}
|
1302 |
+
}
|
src/heme.sdf
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
OpenBabel03292410433D
|
3 |
+
|
4 |
+
75 82 0 0 0 0 0 0 0 0999 V2000
|
5 |
+
-0.1081 -0.0063 0.0245 C 0 0 0 0 0 0 0 0 0 0 0 0
|
6 |
+
0.0729 -0.1709 0.0153 C 0 0 0 0 0 0 0 0 0 0 0 0
|
7 |
+
0.2350 0.0085 -0.0035 C 0 0 0 0 0 0 0 0 0 0 0 0
|
8 |
+
0.0537 0.1730 0.0009 C 0 0 0 0 0 0 0 0 0 0 0 0
|
9 |
+
-0.0718 -0.0653 0.0190 C 0 0 0 0 0 0 0 0 0 0 0 0
|
10 |
+
-0.1008 -0.1294 0.0160 C 0 0 0 0 0 0 0 0 0 0 0 0
|
11 |
+
-0.0504 -0.1750 0.0135 C 0 0 0 0 0 0 0 0 0 0 0 0
|
12 |
+
0.0108 -0.1401 0.0149 C 0 0 0 0 0 0 0 0 0 0 0 0
|
13 |
+
-0.0588 -0.2498 0.0099 C 0 0 0 0 0 0 0 0 0 0 0 0
|
14 |
+
-0.1745 -0.1447 0.0157 C 0 0 0 0 0 0 0 0 0 0 0 0
|
15 |
+
-0.1999 -0.1463 -0.0565 C 0 0 0 0 0 0 0 0 0 0 0 0
|
16 |
+
-0.2737 -0.1616 -0.0568 C 0 0 0 0 0 0 0 0 0 0 0 0
|
17 |
+
-0.3029 -0.1702 -0.0047 O 0 0 0 0 0 0 0 0 0 0 0 0
|
18 |
+
-0.3068 -0.1656 -0.1150 O 0 0 0 0 0 0 0 0 0 0 0 0
|
19 |
+
0.1332 -0.1353 0.0154 C 0 0 0 0 0 0 0 0 0 0 0 0
|
20 |
+
0.1968 -0.1664 0.0209 C 0 0 0 0 0 0 0 0 0 0 0 0
|
21 |
+
0.2437 -0.1171 0.0157 C 0 0 0 0 0 0 0 0 0 0 0 0
|
22 |
+
0.2059 -0.0539 0.0070 C 0 0 0 0 0 0 0 0 0 0 0 0
|
23 |
+
0.2102 -0.2399 0.0307 C 0 0 0 0 0 0 0 0 0 0 0 0
|
24 |
+
0.3170 -0.1248 0.0182 C 0 0 0 0 0 0 0 0 0 0 0 0
|
25 |
+
0.3468 -0.1709 -0.0192 C 0 0 0 0 0 0 0 0 0 0 0 0
|
26 |
+
0.1982 0.0673 -0.0087 C 0 0 0 0 0 0 0 0 0 0 0 0
|
27 |
+
0.2265 0.1300 -0.0222 C 0 0 0 0 0 0 0 0 0 0 0 0
|
28 |
+
0.1755 0.1768 -0.0219 C 0 0 0 0 0 0 0 0 0 0 0 0
|
29 |
+
0.1152 0.1423 -0.0070 C 0 0 0 0 0 0 0 0 0 0 0 0
|
30 |
+
0.2995 0.1440 -0.0348 C 0 0 0 0 0 0 0 0 0 0 0 0
|
31 |
+
0.1825 0.2490 -0.0346 C 0 0 0 0 0 0 0 0 0 0 0 0
|
32 |
+
0.2100 0.2703 -0.0911 C 0 0 0 0 0 0 0 0 0 0 0 0
|
33 |
+
-0.0051 0.1376 0.0149 C 0 0 0 0 0 0 0 0 0 0 0 0
|
34 |
+
-0.0691 0.1694 0.0321 C 0 0 0 0 0 0 0 0 0 0 0 0
|
35 |
+
-0.1142 0.1194 0.0387 C 0 0 0 0 0 0 0 0 0 0 0 0
|
36 |
+
-0.0780 0.0568 0.0255 C 0 0 0 0 0 0 0 0 0 0 0 0
|
37 |
+
-0.0819 0.2432 0.0406 C 0 0 0 0 0 0 0 0 0 0 0 0
|
38 |
+
-0.1870 0.1266 0.0561 C 0 0 0 0 0 0 0 0 0 0 0 0
|
39 |
+
-0.2287 0.1282 -0.0080 C 0 0 0 0 0 0 0 0 0 0 0 0
|
40 |
+
-0.3016 0.1353 0.0095 C 0 0 0 0 0 0 0 0 0 0 0 0
|
41 |
+
-0.3186 0.1388 0.0673 O 0 0 0 0 0 0 0 0 0 0 0 0
|
42 |
+
-0.3477 0.1377 -0.0393 O 0 0 0 0 0 0 0 0 0 0 0 0
|
43 |
+
-0.0034 -0.0728 0.0161 N 0 0 0 0 0 0 0 0 0 0 0 0
|
44 |
+
0.1410 -0.0693 0.0103 N 0 0 0 0 0 4 0 0 0 0 0 0
|
45 |
+
0.1302 0.0753 -0.0016 N 0 0 0 0 0 0 0 0 0 0 0 0
|
46 |
+
-0.0138 0.0716 0.0149 N 0 0 0 0 0 4 0 0 0 0 0 0
|
47 |
+
0.0505 0.0078 -0.0030 Fe 0 0 1 0 0 0 0 0 0 0 0 0
|
48 |
+
0.0749 -0.2254 0.0155 H 0 0 0 0 0 0 0 0 0 0 0 0
|
49 |
+
0.2893 0.0115 -0.0076 H 0 0 0 0 0 0 0 0 0 0 0 0
|
50 |
+
0.0509 0.2272 -0.0042 H 0 0 0 0 0 0 0 0 0 0 0 0
|
51 |
+
-0.0610 -0.2653 -0.0423 H 0 0 0 0 0 0 0 0 0 0 0 0
|
52 |
+
-0.0164 -0.2740 0.0341 H 0 0 0 0 0 0 0 0 0 0 0 0
|
53 |
+
-0.1048 -0.2642 0.0351 H 0 0 0 0 0 0 0 0 0 0 0 0
|
54 |
+
-0.1831 -0.1931 0.0391 H 0 0 0 0 0 0 0 0 0 0 0 0
|
55 |
+
-0.2012 -0.1061 0.0435 H 0 0 0 0 0 0 0 0 0 0 0 0
|
56 |
+
-0.1913 -0.0978 -0.0799 H 0 0 0 0 0 0 0 0 0 0 0 0
|
57 |
+
-0.1732 -0.1849 -0.0842 H 0 0 0 0 0 0 0 0 0 0 0 0
|
58 |
+
0.1628 -0.2668 0.0330 H 0 0 0 0 0 0 0 0 0 0 0 0
|
59 |
+
0.2397 -0.2587 -0.0111 H 0 0 0 0 0 0 0 0 0 0 0 0
|
60 |
+
0.2376 -0.2474 0.0771 H 0 0 0 0 0 0 0 0 0 0 0 0
|
61 |
+
0.3463 -0.0931 0.0505 H 0 0 0 0 0 0 0 0 0 0 0 0
|
62 |
+
0.3997 -0.1800 -0.0139 H 0 0 0 0 0 0 0 0 0 0 0 0
|
63 |
+
0.3180 -0.1993 -0.0551 H 0 0 0 0 0 0 0 0 0 0 0 0
|
64 |
+
0.3277 0.0975 -0.0319 H 0 0 0 0 0 0 0 0 0 0 0 0
|
65 |
+
0.3055 0.1658 -0.0844 H 0 0 0 0 0 0 0 0 0 0 0 0
|
66 |
+
0.3181 0.1789 0.0027 H 0 0 0 0 0 0 0 0 0 0 0 0
|
67 |
+
0.1651 0.2847 0.0021 H 0 0 0 0 0 0 0 0 0 0 0 0
|
68 |
+
0.2307 0.2348 -0.1262 H 0 0 0 0 0 0 0 0 0 0 0 0
|
69 |
+
0.2118 0.3232 -0.1022 H 0 0 0 0 0 0 0 0 0 0 0 0
|
70 |
+
-0.0357 0.2707 0.0319 H 0 0 0 0 0 0 0 0 0 0 0 0
|
71 |
+
-0.1197 0.2592 0.0047 H 0 0 0 0 0 0 0 0 0 0 0 0
|
72 |
+
-0.0997 0.2527 0.0912 H 0 0 0 0 0 0 0 0 0 0 0 0
|
73 |
+
-0.2026 0.0844 0.0869 H 0 0 0 0 0 0 0 0 0 0 0 0
|
74 |
+
-0.1946 0.1729 0.0839 H 0 0 0 0 0 0 0 0 0 0 0 0
|
75 |
+
-0.2131 0.1704 -0.0387 H 0 0 0 0 0 0 0 0 0 0 0 0
|
76 |
+
-0.2211 0.0818 -0.0357 H 0 0 0 0 0 0 0 0 0 0 0 0
|
77 |
+
-0.3541 -0.1755 -0.1127 H 0 0 0 0 0 0 0 0 0 0 0 0
|
78 |
+
-0.3938 0.1424 -0.0256 H 0 0 0 0 0 0 0 0 0 0 0 0
|
79 |
+
-0.1623 -0.0094 0.0283 H 0 0 0 0 0 0 0 0 0 0 0 0
|
80 |
+
1 5 1 0 0 0 0
|
81 |
+
1 32 2 0 0 0 0
|
82 |
+
1 75 1 0 0 0 0
|
83 |
+
2 8 1 0 0 0 0
|
84 |
+
2 15 2 0 0 0 0
|
85 |
+
2 44 1 0 0 0 0
|
86 |
+
3 18 1 0 0 0 0
|
87 |
+
3 22 2 0 0 0 0
|
88 |
+
3 45 1 0 0 0 0
|
89 |
+
4 25 2 0 0 0 0
|
90 |
+
4 29 1 0 0 0 0
|
91 |
+
4 46 1 0 0 0 0
|
92 |
+
5 6 2 0 0 0 0
|
93 |
+
5 39 1 0 0 0 0
|
94 |
+
6 7 1 0 0 0 0
|
95 |
+
6 10 1 0 0 0 0
|
96 |
+
7 8 2 0 0 0 0
|
97 |
+
7 9 1 0 0 0 0
|
98 |
+
8 39 1 0 0 0 0
|
99 |
+
9 47 1 0 0 0 0
|
100 |
+
9 48 1 0 0 0 0
|
101 |
+
9 49 1 0 0 0 0
|
102 |
+
10 11 1 0 0 0 0
|
103 |
+
10 50 1 0 0 0 0
|
104 |
+
10 51 1 0 0 0 0
|
105 |
+
11 12 1 0 0 0 0
|
106 |
+
11 52 1 0 0 0 0
|
107 |
+
11 53 1 0 0 0 0
|
108 |
+
12 13 2 0 0 0 0
|
109 |
+
12 14 1 0 0 0 0
|
110 |
+
14 73 1 0 0 0 0
|
111 |
+
15 16 1 0 0 0 0
|
112 |
+
15 40 1 0 0 0 0
|
113 |
+
16 17 2 0 0 0 0
|
114 |
+
16 19 1 0 0 0 0
|
115 |
+
17 18 1 0 0 0 0
|
116 |
+
17 20 1 0 0 0 0
|
117 |
+
18 40 2 0 0 0 0
|
118 |
+
19 54 1 0 0 0 0
|
119 |
+
19 55 1 0 0 0 0
|
120 |
+
19 56 1 0 0 0 0
|
121 |
+
20 21 2 0 0 0 0
|
122 |
+
20 57 1 0 0 0 0
|
123 |
+
21 58 1 0 0 0 0
|
124 |
+
21 59 1 0 0 0 0
|
125 |
+
22 23 1 0 0 0 0
|
126 |
+
22 41 1 0 0 0 0
|
127 |
+
23 24 2 0 0 0 0
|
128 |
+
23 26 1 0 0 0 0
|
129 |
+
24 25 1 0 0 0 0
|
130 |
+
24 27 1 0 0 0 0
|
131 |
+
25 41 1 0 0 0 0
|
132 |
+
26 60 1 0 0 0 0
|
133 |
+
26 61 1 0 0 0 0
|
134 |
+
26 62 1 0 0 0 0
|
135 |
+
27 28 2 0 0 0 0
|
136 |
+
27 63 1 0 0 0 0
|
137 |
+
28 64 1 0 0 0 0
|
138 |
+
28 65 1 0 0 0 0
|
139 |
+
29 30 1 0 0 0 0
|
140 |
+
29 42 2 0 0 0 0
|
141 |
+
30 31 2 0 0 0 0
|
142 |
+
30 33 1 0 0 0 0
|
143 |
+
31 32 1 0 0 0 0
|
144 |
+
31 34 1 0 0 0 0
|
145 |
+
32 42 1 0 0 0 0
|
146 |
+
33 66 1 0 0 0 0
|
147 |
+
33 67 1 0 0 0 0
|
148 |
+
33 68 1 0 0 0 0
|
149 |
+
34 35 1 0 0 0 0
|
150 |
+
34 69 1 0 0 0 0
|
151 |
+
34 70 1 0 0 0 0
|
152 |
+
35 36 1 0 0 0 0
|
153 |
+
35 71 1 0 0 0 0
|
154 |
+
35 72 1 0 0 0 0
|
155 |
+
36 37 2 0 0 0 0
|
156 |
+
36 38 1 0 0 0 0
|
157 |
+
38 74 1 0 0 0 0
|
158 |
+
40 43 1 0 0 0 0
|
159 |
+
41 43 1 0 0 0 0
|
160 |
+
42 43 1 0 0 0 0
|
161 |
+
43 39 1 6 0 0 0
|
162 |
+
M END
|
163 |
+
$$$$
|
src/pyproject.toml
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[build-system]
|
2 |
+
requires = [
|
3 |
+
"hatchling",
|
4 |
+
"hatch-requirements-txt",
|
5 |
+
"hatch-fancy-pypi-readme>=22.5.0",
|
6 |
+
]
|
7 |
+
build-backend = "hatchling.build"
|
8 |
+
|
9 |
+
[project]
|
10 |
+
name = "gradio_cofoldinginput"
|
11 |
+
version = "0.0.2"
|
12 |
+
description = "Component to enter protein and DNA sequences + small molecules for cofolding"
|
13 |
+
readme = "README.md"
|
14 |
+
license = "MIT"
|
15 |
+
requires-python = ">=3.8"
|
16 |
+
authors = [{ name = "YOUR NAME", email = "YOUREMAIL@domain.com" }]
|
17 |
+
keywords = ["gradio-custom-component", "gradio-template-Textbox"]
|
18 |
+
# Add dependencies here
|
19 |
+
dependencies = ["gradio>=4.0,<5.0"]
|
20 |
+
classifiers = [
|
21 |
+
'Development Status :: 3 - Alpha',
|
22 |
+
'License :: OSI Approved :: Apache Software License',
|
23 |
+
'Operating System :: OS Independent',
|
24 |
+
'Programming Language :: Python :: 3',
|
25 |
+
'Programming Language :: Python :: 3 :: Only',
|
26 |
+
'Programming Language :: Python :: 3.8',
|
27 |
+
'Programming Language :: Python :: 3.9',
|
28 |
+
'Programming Language :: Python :: 3.10',
|
29 |
+
'Programming Language :: Python :: 3.11',
|
30 |
+
'Topic :: Scientific/Engineering',
|
31 |
+
'Topic :: Scientific/Engineering :: Artificial Intelligence',
|
32 |
+
'Topic :: Scientific/Engineering :: Visualization',
|
33 |
+
]
|
34 |
+
|
35 |
+
[project.optional-dependencies]
|
36 |
+
dev = ["build", "twine"]
|
37 |
+
|
38 |
+
[tool.hatch.build]
|
39 |
+
artifacts = ["/backend/gradio_cofoldinginput/templates", "*.pyi", "backend/gradio_cofoldinginput/templates", "backend/gradio_cofoldinginput/templates", "backend/gradio_cofoldinginput/templates", "backend/gradio_cofoldinginput/templates", "backend/gradio_cofoldinginput/templates"]
|
40 |
+
|
41 |
+
[tool.hatch.build.targets.wheel]
|
42 |
+
packages = ["/backend/gradio_cofoldinginput"]
|