Improvements to gr.Dataset (#2437)

* Adding example components

* formatting

* formatting
This commit is contained in:
Abubakar Abid 2022-10-12 15:48:53 -05:00 committed by GitHub
parent 3c1172404a
commit e935f105e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 158 additions and 85 deletions

View File

@ -5,13 +5,15 @@
* Ensure that Gradio does not take control of the HTML page title when embedding a gradio app as a web component, this behaviour flipped by adding `control_page_title="true"` to the webcomponent. [@pngwn](https://github.com/pngwn) in [PR 2400](https://github.com/gradio-app/gradio/pull/2400)
* Decreased latency in iterative-output demos by making the iteration asynchronous [@freddyaboulton](https://github.com/freddyaboulton) in [PR 2409](https://github.com/gradio-app/gradio/pull/2409)
## New Features:
* When an `Image` component is set to `source="upload"`, it is now possible to drag and drop and image to replace a previously uploaded image by [@pngwn](https://github.com/pngwn) in [PR 1711](https://github.com/gradio-app/gradio/issues/1711)
* The `gr.Dataset` component now accepts `HTML` and `Markdown` components by [@abidlabs](https://github.com/abidlabs) in [PR 2437](https://github.com/gradio-app/gradio/pull/2437)
## Documentation Changes:
No changes to highlight.
* Improved documentation for the `gr.Dataset` component by [@abidlabs](https://github.com/abidlabs) in [PR 2437](https://github.com/gradio-app/gradio/pull/2437)
## Testing and Infrastructure Changes:
No changes to highlight.
@ -32,6 +34,7 @@ No changes to highlight.
* Change "return ValueError" to "raise ValueError" by [@vzakharov](https://github.com/vzakharov) in [PR 2445](https://github.com/gradio-app/gradio/pull/2445)
## Contributors Shoutout:
No changes to highlight.

View File

@ -3739,9 +3739,12 @@ class Markdown(IOComponent, Changeable, SimpleSerializable):
def style(self):
return self
def as_example(self, input_data: str) -> str:
return self.postprocess(input_data)
############################
# Static Components
# Special Components
############################
@ -3750,7 +3753,7 @@ class Dataset(Clickable, Component):
"""
Used to create an output widget for showing datasets. Used to render the examples
box.
Preprocessing: this component does *not* accept input.
Preprocessing: passes the selected sample either as a {list} of data (if type="value") or as an {int} index (if type="index")
Postprocessing: expects a {list} of {lists} corresponding to the dataset data.
"""
@ -3759,7 +3762,7 @@ class Dataset(Clickable, Component):
*,
label: Optional[str] = None,
components: List[IOComponent] | List[str],
samples: List[List[Any]],
samples: List[List[Any]] = None,
headers: Optional[List[str]] = None,
type: str = "values",
visible: bool = True,
@ -3768,7 +3771,7 @@ class Dataset(Clickable, Component):
):
"""
Parameters:
components: Which component types to show in this dataset widget, can be passed in as a list of string names or Components instances
components: Which component types to show in this dataset widget, can be passed in as a list of string names or Components instances. The following components are supported in a Dataset: Audio, Checkbox, CheckboxGroup, ColorPicker, Dataframe, Dropdown, File, HTML, Image, Markdown, Model3D, Number, Radio, Slider, Textbox, TimeSeries, Video
samples: a nested list of samples. Each sublist within the outer list represents a data sample, and each element within the sublist represents an value for each component
headers: Column headers in the Dataset widget, should be the same len as components. If not provided, inferred from component labels
type: 'values' if clicking on a sample should pass the value of the sample, or "index" if it should pass the index of the sample
@ -3777,7 +3780,8 @@ class Dataset(Clickable, Component):
"""
Component.__init__(self, visible=visible, elem_id=elem_id, **kwargs)
self.components = [get_component_instance(c, render=False) for c in components]
for example in samples:
self.samples = [[]] if samples is None else samples
for example in self.samples:
for i, (component, ex) in enumerate(zip(self.components, example)):
example[i] = component.as_example(ex)
self.type = type
@ -3788,7 +3792,6 @@ class Dataset(Clickable, Component):
self.headers = []
else:
self.headers = [c.label or "" for c in self.components]
self.samples = samples
def get_config(self):
return {
@ -3822,6 +3825,12 @@ class Dataset(Clickable, Component):
elif self.type == "values":
return self.samples[x]
def postprocess(self, samples: List[List[Any]]) -> Dict:
return {
"samples": samples,
"__type__": "update",
}
def style(self, **kwargs):
"""
This method can be used to change the appearance of the Dataset component.

View File

@ -1147,6 +1147,62 @@ class TestDataframe(unittest.TestCase):
}
class TestDataset:
def test_preprocessing(self):
test_file_dir = pathlib.Path(pathlib.Path(__file__).parent, "test_files")
bus = pathlib.Path(test_file_dir, "bus.png")
dataset = gr.Dataset(
components=["number", "textbox", "image", "html", "markdown"],
samples=[
[5, "hello", bus, "<b>Bold</b>", "**Bold**"],
[15, "hi", bus, "<i>Italics</i>", "*Italics*"],
],
)
assert dataset.preprocess(1) == [
15,
"hi",
bus,
"<i>Italics</i>",
"<p><em>Italics</em></p>\n",
]
dataset = gr.Dataset(
components=["number", "textbox", "image", "html", "markdown"],
samples=[
[5, "hello", bus, "<b>Bold</b>", "**Bold**"],
[15, "hi", bus, "<i>Italics</i>", "*Italics*"],
],
type="index",
)
assert dataset.preprocess(1) == 1
def test_postprocessing(self):
test_file_dir = pathlib.Path(pathlib.Path(__file__).parent, "test_files")
bus = pathlib.Path(test_file_dir, "bus.png")
dataset = gr.Dataset(
components=["number", "textbox", "image", "html", "markdown"], type="index"
)
output = dataset.postprocess(
samples=[
[5, "hello", bus, "<b>Bold</b>", "**Bold**"],
[15, "hi", bus, "<i>Italics</i>", "*Italics*"],
],
)
assert output == {
"samples": [
[5, "hello", bus, "<b>Bold</b>", "**Bold**"],
[15, "hi", bus, "<i>Italics</i>", "*Italics*"],
],
"__type__": "update",
}
class TestVideo(unittest.TestCase):
def test_component_functions(self):
"""

View File

@ -0,0 +1,5 @@
<script lang="ts">
export let value: string;
</script>
<div class="gr-sample-html">{@html value}</div>

View File

@ -0,0 +1,5 @@
<script lang="ts">
export let value: string;
</script>
<div class="gr-sample-markdown">{@html value}</div>

View File

@ -13,6 +13,8 @@ import ExampleDataframe from "./ExampleComponents/Dataframe.svelte";
import ExampleModel3D from "./ExampleComponents/Model3D.svelte";
import ExampleColorPicker from "./ExampleComponents/ColorPicker.svelte";
import ExampleTimeSeries from "./ExampleComponents/TimeSeries.svelte";
import ExampleMarkdown from "./ExampleComponents/Markdown.svelte";
import ExampleHTML from "./ExampleComponents/HTML.svelte";
export const component_map = {
dropdown: ExampleDropdown,
@ -29,5 +31,7 @@ export const component_map = {
dataframe: ExampleDataframe,
model3d: ExampleModel3D,
colorpicker: ExampleColorPicker,
timeseries: ExampleTimeSeries
timeseries: ExampleTimeSeries,
markdown: ExampleMarkdown,
html: ExampleHTML
};

View File

@ -112,6 +112,8 @@
}
.gr-sample-textbox,
.gr-sample-markdown,
.gr-sample-html,
.gr-sample-slider,
.gr-sample-checkbox,
.gr-sample-checkboxgroup,

143
ui/pnpm-lock.yaml generated
View File

@ -1,4 +1,4 @@
lockfileVersion: 5.4
lockfileVersion: 5.3
importers:
@ -43,7 +43,7 @@ importers:
'@tailwindcss/forms': 0.5.0_tailwindcss@3.1.6
'@testing-library/dom': 8.11.3
'@testing-library/svelte': 3.1.0_svelte@3.49.0
'@testing-library/user-event': 13.5.0_gzufz4q333be4gqfrvipwvqt6a
'@testing-library/user-event': 13.5.0_@testing-library+dom@8.11.3
autoprefixer: 10.4.4_postcss@8.4.6
babylonjs: 5.18.0
babylonjs-loaders: 5.18.0
@ -56,14 +56,14 @@ importers:
postcss: 8.4.6
postcss-nested: 5.0.6_postcss@8.4.6
prettier: 2.6.2
prettier-plugin-svelte: 2.7.0_3cyj5wbackxvw67rnaarcmbw7y
prettier-plugin-svelte: 2.7.0_prettier@2.6.2+svelte@3.49.0
sirv: 2.0.2
sirv-cli: 2.0.2
svelte: 3.49.0
svelte-check: 2.8.0_mgmdnb6x5rpawk37gozc2sbtta
svelte-check: 2.8.0_postcss@8.4.6+svelte@3.49.0
svelte-i18n: 3.3.13_svelte@3.49.0
svelte-preprocess: 4.10.6_mlkquajfpxs65rn6bdfntu7nmy
tailwindcss: 3.1.6_postcss@8.4.6
svelte-preprocess: 4.10.6_62d50a01257de5eec5be08cad9d3ed66
tailwindcss: 3.1.6
tinyspy: 0.3.0
typescript: 4.7.4
vite: 2.9.5
@ -131,7 +131,7 @@ importers:
'@gradio/video': link:../video
d3-dsv: 3.0.1
mime-types: 2.1.34
svelte-i18n: 3.3.13
svelte-i18n: 3.3.13_svelte@3.49.0
packages/atoms:
specifiers:
@ -391,14 +391,14 @@ importers:
'@gradio/upload': link:../upload
'@gradio/video': link:../video
devDependencies:
'@sveltejs/adapter-auto': 1.0.0-next.82
'@sveltejs/kit': 1.0.0-next.318
'@sveltejs/adapter-auto': 1.0.0-next.83
'@sveltejs/kit': 1.0.0-next.318_svelte@3.49.0
autoprefixer: 10.4.2_postcss@8.4.6
postcss: 8.4.6
postcss-load-config: 3.1.1
svelte-check: 2.4.1_2y4otvh2n6klv6metqycpfiuzy
svelte-preprocess: 4.10.2_bw7ic75prjd4umr4fb55sbospu
tailwindcss: 3.0.23_qm7bagfnbv4vjkuayu3hle4sne
svelte-check: 2.4.1_736abba5ed1eb6f8ecf70b1d49ead14b
svelte-preprocess: 4.10.2_d50790bb30dd88cc44babe7efa52bace
tailwindcss: 3.0.23_autoprefixer@10.4.2
tslib: 2.3.1
typescript: 4.5.5
@ -578,35 +578,35 @@ packages:
estree-walker: 2.0.2
picomatch: 2.3.1
/@sveltejs/adapter-auto/1.0.0-next.82:
resolution: {integrity: sha512-TWckpkD7fLwwNcHHN7gDuV+xpu07NJ6aaMa6p9FgeFF16yBeEyGVtsM2bpujjS+u0w6IP4VGsRWEMOOF2b/WYA==}
/@sveltejs/adapter-auto/1.0.0-next.83:
resolution: {integrity: sha512-6Km4x792PjHaN0H0odsy7JOj3jdDZqN1tA58B1b96xWUUUj87tw6XYC7VWRBjwo2wZqWkRat94IegrtAAhYVaA==}
dependencies:
'@sveltejs/adapter-cloudflare': 1.0.0-next.38
'@sveltejs/adapter-netlify': 1.0.0-next.80
'@sveltejs/adapter-vercel': 1.0.0-next.78
'@sveltejs/adapter-cloudflare': 1.0.0-next.39
'@sveltejs/adapter-netlify': 1.0.0-next.81
'@sveltejs/adapter-vercel': 1.0.0-next.79
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@sveltejs/adapter-cloudflare/1.0.0-next.38:
resolution: {integrity: sha512-N6jdTomRZkdKlcNoguwYD7lpdXSt0beIyUJsp0MS/YLm/4gI83y698zFYInFKJ9t5e6DAnuEBSAXcg568z2oFA==}
/@sveltejs/adapter-cloudflare/1.0.0-next.39:
resolution: {integrity: sha512-95iRY3+mFVqEp4BqTJQGAyga7gSovIsm4SvhqsfBE/IQLkb2MnwLq2usRkXm9R6nby4w/jzEwgQM2ohsZD2HHA==}
dependencies:
'@cloudflare/workers-types': 3.14.1
esbuild: 0.15.7
worktop: 0.8.0-next.14
dev: true
/@sveltejs/adapter-netlify/1.0.0-next.80:
resolution: {integrity: sha512-L7Y3hXenJwmPbuzG+o8eUPm/6F3KpHHPUKRgoryYKgVjYGEHt1y1Go1k0JF6Tww8WF59y/j+ljWcBo9RU7MpeQ==}
/@sveltejs/adapter-netlify/1.0.0-next.81:
resolution: {integrity: sha512-jWZHw2uqUMJk8lFPzRm0xxmBZoDc430tbeCU9EtYhG+ypze2B6pJAlNTtcN3/J7wapHq19TgEK5oNt4LqORfNg==}
dependencies:
'@iarna/toml': 2.2.5
esbuild: 0.15.7
set-cookie-parser: 2.4.8
dev: true
/@sveltejs/adapter-vercel/1.0.0-next.78:
resolution: {integrity: sha512-K7zOlVwX/MV/b6iUbrY7QVn+v8ABBSEi6rjIfYiXCZc+j0nS5WNrcH1/Qdk/pzxK+7O5OuaNZAw3QylJDV5CZw==}
/@sveltejs/adapter-vercel/1.0.0-next.79:
resolution: {integrity: sha512-Mitw34vS+wR/qxZm6qOUltf910N8gcekYZHaEVxO6HaE/9LyEZ/O03e9rRKwo4LAWrHXOkHMdUxvv1VcS9BqmQ==}
dependencies:
'@vercel/nft': 0.22.0
esbuild: 0.15.7
@ -615,15 +615,16 @@ packages:
- supports-color
dev: true
/@sveltejs/kit/1.0.0-next.318:
/@sveltejs/kit/1.0.0-next.318_svelte@3.49.0:
resolution: {integrity: sha512-/M/XNvEqK71KCGro1xLuiUuklsMPe+G5DiVMs39tpfFIFhH4oCzAt+YBaIZDKORogGz3QDaYc5BV+eFv9E5cyw==}
engines: {node: '>=14.13'}
hasBin: true
peerDependencies:
svelte: ^3.44.0
dependencies:
'@sveltejs/vite-plugin-svelte': 1.0.0-next.44_vite@2.9.9
'@sveltejs/vite-plugin-svelte': 1.0.0-next.44_svelte@3.49.0+vite@2.9.9
sade: 1.8.1
svelte: 3.49.0
vite: 2.9.9
transitivePeerDependencies:
- diff-match-patch
@ -656,7 +657,7 @@ packages:
- supports-color
dev: false
/@sveltejs/vite-plugin-svelte/1.0.0-next.44_vite@2.9.9:
/@sveltejs/vite-plugin-svelte/1.0.0-next.44_svelte@3.49.0+vite@2.9.9:
resolution: {integrity: sha512-n+sssEWbzykPS447FmnNyU5GxEhrBPDVd0lxNZnxRGz9P6651LjjwAnISKr3CKgT9v8IybP8VD0n2i5XzbqExg==}
engines: {node: ^14.13.1 || >= 16}
peerDependencies:
@ -672,7 +673,8 @@ packages:
deepmerge: 4.2.2
kleur: 4.1.4
magic-string: 0.26.1
svelte-hmr: 0.14.11
svelte: 3.49.0
svelte-hmr: 0.14.11_svelte@3.49.0
vite: 2.9.9
transitivePeerDependencies:
- supports-color
@ -684,7 +686,7 @@ packages:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: 3.1.6_postcss@8.4.6
tailwindcss: 3.1.6
dev: false
/@testing-library/dom/7.31.2:
@ -725,7 +727,7 @@ packages:
svelte: 3.49.0
dev: false
/@testing-library/user-event/13.5.0_gzufz4q333be4gqfrvipwvqt6a:
/@testing-library/user-event/13.5.0_@testing-library+dom@8.11.3:
resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==}
engines: {node: '>=10', npm: '>=6'}
peerDependencies:
@ -2876,26 +2878,26 @@ packages:
trouter: 3.2.0
dev: false
/postcss-import/14.1.0_postcss@8.4.6:
/postcss-import/14.1.0_postcss@8.4.14:
resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
engines: {node: '>=10.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.6
postcss: 8.4.14
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.1
dev: false
/postcss-js/4.0.0_postcss@8.4.6:
/postcss-js/4.0.0_postcss@8.4.14:
resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.3.3
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.6
postcss: 8.4.14
/postcss-load-config/3.1.1:
resolution: {integrity: sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==}
@ -2910,7 +2912,7 @@ packages:
yaml: 1.10.2
dev: true
/postcss-load-config/3.1.4_postcss@8.4.6:
/postcss-load-config/3.1.4_postcss@8.4.14:
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
peerDependencies:
@ -2923,10 +2925,19 @@ packages:
optional: true
dependencies:
lilconfig: 2.0.6
postcss: 8.4.6
postcss: 8.4.14
yaml: 1.10.2
dev: false
/postcss-nested/5.0.6_postcss@8.4.14:
resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss: 8.4.14
postcss-selector-parser: 6.0.9
/postcss-nested/5.0.6_postcss@8.4.6:
resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
engines: {node: '>=12.0'}
@ -2935,6 +2946,7 @@ packages:
dependencies:
postcss: 8.4.6
postcss-selector-parser: 6.0.9
dev: false
/postcss-selector-parser/6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
@ -2979,7 +2991,7 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
/prettier-plugin-svelte/2.7.0_3cyj5wbackxvw67rnaarcmbw7y:
/prettier-plugin-svelte/2.7.0_prettier@2.6.2+svelte@3.49.0:
resolution: {integrity: sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==}
peerDependencies:
prettier: ^1.16.4 || ^2.0.0
@ -3423,7 +3435,7 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
/svelte-check/2.4.1_2y4otvh2n6klv6metqycpfiuzy:
/svelte-check/2.4.1_736abba5ed1eb6f8ecf70b1d49ead14b:
resolution: {integrity: sha512-xhf3ShP5rnRwBokrgTBJ/0cO9QIc1DAVu1NWNRTfCDsDBNjGmkS3HgitgUadRuoMKj1+irZR/yHJ+Uqobnkbrw==}
hasBin: true
peerDependencies:
@ -3436,7 +3448,8 @@ packages:
picocolors: 1.0.0
sade: 1.8.1
source-map: 0.7.3
svelte-preprocess: 4.10.2_bw7ic75prjd4umr4fb55sbospu
svelte: 3.49.0
svelte-preprocess: 4.10.2_d50790bb30dd88cc44babe7efa52bace
typescript: 4.5.5
transitivePeerDependencies:
- '@babel/core'
@ -3451,7 +3464,7 @@ packages:
- sugarss
dev: true
/svelte-check/2.8.0_mgmdnb6x5rpawk37gozc2sbtta:
/svelte-check/2.8.0_postcss@8.4.6+svelte@3.49.0:
resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==}
hasBin: true
peerDependencies:
@ -3464,7 +3477,7 @@ packages:
picocolors: 1.0.0
sade: 1.8.1
svelte: 3.49.0
svelte-preprocess: 4.10.6_mlkquajfpxs65rn6bdfntu7nmy
svelte-preprocess: 4.10.6_62d50a01257de5eec5be08cad9d3ed66
typescript: 4.7.4
transitivePeerDependencies:
- '@babel/core'
@ -3479,13 +3492,6 @@ packages:
- sugarss
dev: false
/svelte-hmr/0.14.11:
resolution: {integrity: sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
svelte: '>=3.19.0'
dev: true
/svelte-hmr/0.14.11_svelte@3.49.0:
resolution: {integrity: sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
@ -3493,21 +3499,6 @@ packages:
svelte: '>=3.19.0'
dependencies:
svelte: 3.49.0
dev: false
/svelte-i18n/3.3.13:
resolution: {integrity: sha512-RQM+ys4+Y9ztH//tX22H1UL2cniLNmIR+N4xmYygV6QpQ6EyQvloZiENRew8XrVzfvJ8HaE8NU6/yurLkl7z3g==}
engines: {node: '>= 11.15.0'}
hasBin: true
peerDependencies:
svelte: ^3.25.1
dependencies:
deepmerge: 4.2.2
estree-walker: 2.0.2
intl-messageformat: 9.11.4
sade: 1.8.1
tiny-glob: 0.2.9
dev: false
/svelte-i18n/3.3.13_svelte@3.49.0:
resolution: {integrity: sha512-RQM+ys4+Y9ztH//tX22H1UL2cniLNmIR+N4xmYygV6QpQ6EyQvloZiENRew8XrVzfvJ8HaE8NU6/yurLkl7z3g==}
@ -3524,7 +3515,7 @@ packages:
tiny-glob: 0.2.9
dev: false
/svelte-preprocess/4.10.2_bw7ic75prjd4umr4fb55sbospu:
/svelte-preprocess/4.10.2_d50790bb30dd88cc44babe7efa52bace:
resolution: {integrity: sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==}
engines: {node: '>= 9.11.2'}
requiresBuild: true
@ -3573,10 +3564,11 @@ packages:
postcss-load-config: 3.1.1
sorcery: 0.10.0
strip-indent: 3.0.0
svelte: 3.49.0
typescript: 4.5.5
dev: true
/svelte-preprocess/4.10.6_mlkquajfpxs65rn6bdfntu7nmy:
/svelte-preprocess/4.10.6_62d50a01257de5eec5be08cad9d3ed66:
resolution: {integrity: sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==}
engines: {node: '>= 9.11.2'}
requiresBuild: true
@ -3652,13 +3644,12 @@ packages:
get-port: 3.2.0
dev: false
/tailwindcss/3.0.23_qm7bagfnbv4vjkuayu3hle4sne:
/tailwindcss/3.0.23_autoprefixer@10.4.2:
resolution: {integrity: sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==}
engines: {node: '>=12.13.0'}
hasBin: true
peerDependencies:
autoprefixer: ^10.0.2
postcss: ^8.0.9
dependencies:
arg: 5.0.1
autoprefixer: 10.4.2_postcss@8.4.6
@ -3674,10 +3665,10 @@ packages:
is-glob: 4.0.3
normalize-path: 3.0.0
object-hash: 2.2.0
postcss: 8.4.6
postcss-js: 4.0.0_postcss@8.4.6
postcss: 8.4.14
postcss-js: 4.0.0_postcss@8.4.14
postcss-load-config: 3.1.1
postcss-nested: 5.0.6_postcss@8.4.6
postcss-nested: 5.0.6_postcss@8.4.14
postcss-selector-parser: 6.0.9
postcss-value-parser: 4.2.0
quick-lru: 5.1.1
@ -3686,12 +3677,10 @@ packages:
- ts-node
dev: true
/tailwindcss/3.1.6_postcss@8.4.6:
/tailwindcss/3.1.6:
resolution: {integrity: sha512-7skAOY56erZAFQssT1xkpk+kWt2NrO45kORlxFPXUt3CiGsVPhH1smuH5XoDH6sGPXLyBv+zgCKA2HWBsgCytg==}
engines: {node: '>=12.13.0'}
hasBin: true
peerDependencies:
postcss: ^8.0.9
dependencies:
arg: 5.0.2
chokidar: 3.5.3
@ -3706,11 +3695,11 @@ packages:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.6
postcss-import: 14.1.0_postcss@8.4.6
postcss-js: 4.0.0_postcss@8.4.6
postcss-load-config: 3.1.4_postcss@8.4.6
postcss-nested: 5.0.6_postcss@8.4.6
postcss: 8.4.14
postcss-import: 14.1.0_postcss@8.4.14
postcss-js: 4.0.0_postcss@8.4.14
postcss-load-config: 3.1.4_postcss@8.4.14
postcss-nested: 5.0.6_postcss@8.4.14
postcss-selector-parser: 6.0.10
postcss-value-parser: 4.2.0
quick-lru: 5.1.1