gradio/js/dropdown/shared/Multiselect.svelte
pngwn 287fe67828
Version 4 development branch (#5498)
* squash commit

* BugFix: Make FileExplorer Component Templateable (#5933)

* Make FileExplorer templateable

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix notebooks (#5935)

* V4: Update Component pyi file (#5937)

* Add code

* add changeset

* delete

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Use beta release versions for '@gradio' packages (#5938)

* Fix versions

* add changeset

* fix

* add changeset

* fix

* add changeset

* Fix

* fix preview

* add changeset

* final fix

* add changeset

* fix

* add changeset

* fix

* add changeset

* revert change

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* maybe fix (#5946)

* Merge main again (#5948)

* maybe fix

* fix

* Merge main again (#5949)

* maybe fix

* fix

* weird weird weird

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Merge main again (#5950)

* maybe fix

* fix

* weird weird weird

* fix

* log

* log

* fix changesets

* rererefactor frontend files (#5960)

* do all the things

* add changeset

* remove codemod

* fix

* change casing

* condense upload button

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Strip vite import warning (#5962)

* Add code

* Remove comment

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5769)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* release wasm (#5963)

* release wasm

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Wasm release (#5964)

* release wasm

* release wasm

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5965)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Add json schema unit tests (#5970)

* Add tests

* add changeset

* Fix tests

* api-info

* Add test

* Add test

* Add email tests

* 3.8 fix 🙄

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Simple textbox (#5990)

* Simple textbox

* add changeset

* Trim down events

* Trim

* Clean up change event

* Add comment

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* File upload optimization (#5961)

* Use custom multipart parser

* add changeset

* remove print

* Add comment

* Lint

* fix code

* remove print

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Removes deprecated arguments and parameters from v4 (#5968)

* Removes deprecated arguments and methods for v4

* remove update

* style

* add changeset

* added params

* typign

* fixed all of the typing

* tests

* fix layouts

* layout

* fix config

* fix

* fix form

* fix

* fix blocks tests

* fix some more tests

* lint

* fix test routes

* doc

* notebooks

* remove doc

* format

* format

* remove group

* label docstring

* remov test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Simple dropdown (#5996)

* Add code

* lint

* comment

* add changeset

* revert

* Fix update + docstring cleanup

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* pass props to example components and to example outputs (#6014)

* pass props to example components and to example outputs

* add changeset

* make util less egenric/ more useful

* fix demo

* fix demo

* fix

* fix test

* Fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Format js in v4 branch (#6016)

* Format v4 branch js

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Fix component update bug  (#6027)

* Fix tests + bugs

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* lockfile update

* Fixing test

* fix test

* Add a cli command to list available templates (#6018)

* Add code

* dataset

* Add test

* add changeset

* add changeset

* add changeset

* add changeset

* Exclude FormComponent

* Paginate the output

* No colors but emojis:

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix tests (#6046)

* fix storybook (#6065)

* fix storybook

* add changeset

* fix

* add changeset

* fix

* fix

* fix components

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* remove dupe component (#6067)

* remove dupe component

* add changeset

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Simplify File Component (#6044)

* Add code

* Add code

* Add code

* Reuse code UploadButton

* Use two files for UploadButton

* Address feedback

* Lint

* add changeset

* Update js/uploadbutton/shared/UploadButton.svelte

Co-authored-by: pngwn <hello@pngwn.io>

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: pngwn <hello@pngwn.io>

* Clean up backend of `File` and `UploadButton` and change the return type of `preprocess()` from TemporaryFIle to string filepath (#6060)

* changes

* add changeset

* upload button

* file

* add changeset

* valid types

* fix tests

* address review

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix Dropdown Example component and example processing logic (#6075)

* fix examples

* helpers

* dropdown

* fix cc build (#6079)

* fix cc build

* add changeset

* throw error if build fails

* fix entry points

* add changeset

* fix lockfile

* Add test

* update workflow

* try resolve

* lint 🙄

* Use xfail

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Fixes markdown rendering in examples (#6071)

* Fixes markdown rendering in examples

* add changeset

* update delimiters

* format

* format

* docstrings

* test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Proposal: sample demo for custom components should be a `gr.Interface` (#6077)

* update sample demo to interface

* add changeset

* modify

* Update gradio/cli/commands/components/_create_utils.py

Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>

* added layout and static

* fix

* refine

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>

* WIP: Fix docs (#6082)

* Website fix

* add changeset

* Fix code

* pin version

* Add code

* skip code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Pending events behavior (#5826)

* enter changesets pre-release mode

* release first version (#5500)

* release packages

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix changeset (#5502)

* add changeset

* release first version

* Custom components (#5507)

* Add flag

* Copy front-end

* Add backend code

* Remove breakpoint

* Fix init

* Add code

* File reorg

* Fix types

* Upload files

* Fix code

* Custom components

* Add code

* Client changes

* More changes

* Add code

* Add code

* Fix reversion

* build hook integration

* Add code

* rm file

* Add code

* rename cli

* Add code

* Nicer cli

* Add display class

* Add backend devmide

* Add code?

* Add code

* Add paths and fix reload mdoe

* Fix .then

* changes

* fix

* fix

* changes

* changes

* changes

* Fix versions

* Fix wheel build from source

* Add code

* Get no template case working

* Cc fe (#5509)

* tweaks

* fix 18n

* fix 18n

* tweaks

* Change name

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Do not use live display for dev mode

* Clean up front-end server print statements a little bit

* Fix success event

* Cc fe 2 (#5526)

* tweaks

* fix examples

* fix backend port

* fix things

* fix

* Fix json component flagging

* fix

* fuix

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Fix template (#5533)

* Fix type hint (#5536)

* fix custom components when installed from wheel (#5552)

* Fix all demos custom components (#5555)

* Fix all_demos

* Fix issues

* trigger ci

* add changeset

* Fix merge

* lockfile

* Add code

* add code

* Fix command

* Add code

* Fix highlighted text

* fix interactive highlighted text

* tweak ci

* Disable example caching for load right now

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* image fixes (#5589)

* Add flag

* Copy front-end

* Add backend code

* Remove breakpoint

* Fix init

* Add code

* File reorg

* Fix types

* Upload files

* Fix code

* Custom components

* Add code

* Client changes

* More changes

* Add code

* Add code

* Fix reversion

* build hook integration

* Add code

* rm file

* Add code

* rename cli

* Add code

* Nicer cli

* Add display class

* Add backend devmide

* Add code?

* Add code

* Add paths and fix reload mdoe

* Fix .then

* changes

* fix

* fix

* changes

* changes

* changes

* Fix versions

* Fix wheel build from source

* Add code

* Get no template case working

* Cc fe (#5509)

* tweaks

* fix 18n

* fix 18n

* tweaks

* Change name

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Do not use live display for dev mode

* Clean up front-end server print statements a little bit

* Fix success event

* Cc fe 2 (#5526)

* tweaks

* fix examples

* fix backend port

* fix things

* fix

* Fix json component flagging

* fix

* fuix

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Fix template (#5533)

* Fix type hint (#5536)

* fix custom components when installed from wheel (#5552)

* Fix all demos custom components (#5555)

* Fix all_demos

* Fix issues

* trigger ci

* add changeset

* Fix merge

* lockfile

* Add code

* add code

* Fix command

* Add code

* Fix highlighted text

* fix interactive highlighted text

* tweak ci

* fix image uploads

* add changeset

* remove changeset

* add changeset

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Support Literal Typehints (#5591)

* Fix updateable

* Deploy for failing actions

* fix enum

* Add code

* remove gradio lite from publish ci

* fix

* fix

* chore: update versions (beta) (#5501)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix js deps in cli and add gradio-preview artifacts to build (#5610)

* Fix js dependencies in cli

* Add preview to build command

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5612)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* backend linting (#5613)

* backend linting

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Publish js theme (#5615)

* Publish js theme

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5614)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Add code (#5617)

* Add docstring to trigger release (#5618)

* Add docstring

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5619)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix build and broken imports (#5620)

* fix broken import

* fix build scripts

* add changeset

* Update js/statustracker/static/index.svelte

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5621)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix esbuild (#5624)

* fix build

* fix build

* add changeset

* fix build

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5626)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix esbuild (#5629)

* fix build

* fix build

* add changeset

* fix build

* fix

* asd

* more fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* asd (#5630)

* chore: update versions (beta) (#5631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Some minor v4 fixes (#5637)

* Add code

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Publish all components to npm (#5648)

* Publish image component

* publish components

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5638)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix front-end imports + other misc fixes (#5649)

* Fix console error

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Add overwrite flag to create command (#5651)

* Add overwrite flag to create command

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5650)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Make layout components templateable (#5665)

* Split out layouts

* Refactor cli

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Patch fixes (#5678)

* Handle lowercase template name frontend

* Lint

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix build and file route (#5680)

* Add code

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5662)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* V4 fix typing (#5686)

* Add examples for series and parallel

* v4 fix typing

* add changeset

* Fix

* Fix

* Fix 3.8

* Fix typing 3.8

* Lint

* Add code

* Add key

* Fix typing

* Add code

* Fix deps

* Fix fastapi

* Fix version
'
:

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Use overrides (#5695)

* Use overrides

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* ensure client is copied along with components (#5709)

* ensure client is copied along with components

* add changeset

* add changeset

* chore: update versions (beta) (#5688)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix build config (#5710)

* Fix python unit tests for v4 (#5715)

* Add code

* Fix tests

* Add ci

* Add code

* fix test_blocks

* More fixes

* Last changes

* add changeset

* Add code

* Continue for the sake of some green ci

* Proper api info

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Better test dir check (#5719)

* FIx test-dir check

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Use path to npm executable in subprocess (#5736)

* Use path to npm in subprocess

* Fix dev mode too

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Add Error + test (#5738)

* Add Error + test

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix component regex (#5739)

* Add code

* Fix component regex

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix layout templates (#5740)

* Fix templates

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix template remaining components (#5743)

* add code

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* --overwrite deletes previous content (#5744)

* Add code

* Add code

* add changeset

* Add test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Support call method (#5751)

* Support call method

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix windows ci build (#5752)

* Try bash

* Use cross-env

* Trigger CI

* Fix comma

* add changeset

* Modify lock file

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix windows paths (#5745)

* Use posix path

* add changeset

* add changeset

* Try normalize

* to_posix v2

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#5717)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Simplify how files are handled in components in 4.0 (#5768)

* Client and upload route hash files

* Refactor logic

* add changeset

* Add code

* View API fix

* Fix client tests

* Dumb windows fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix deployed demos on v4 branch (#5770)

* Template fixes

* add changeset

* add changeset

* Fix streaming audio

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Name Endpoints if api_name is None (#5782)

* Implementation and test

* add changeset

* fix lint

* Fix nits

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* pending events

* add changeset

* Set api=False for cancel events (#5851)

* Set api=False for cancel events

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Set cache dir for some component tests (#5852)

* Add code

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Use async version of shutil in upload route (#5853)

* Use async shutil copy

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* trigger_mode

* changes

* undo

* undo

* add changeset

* undo

* add changeset

* image undo

* add changeset

* fix merge errors

* remove prints

* change

* fix

* fix error

* change

* quick fix

* trigger_mode param

* type

* value error

---------

Co-authored-by: pngwn <hello@pngwn.io>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fixes: slider bar are too thin on FireFox (#5984)

* firefox slider fix

* add changeset

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix remaining xfail tests in backend (#6073)

* Add code'

* Add code

* Add code

* Fix dataset

* add changeset

* Add some comments

* Add recover_kwargs

* Remove from docstring

* Audio-to-audio

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix dev mode model3D (#5955)

* Fix dev mode

* Lint

* add changeset

* Fix dev mode

* Lint

* remove console.log

* add changeset

* interactive fix

* Fix tests

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Dawood <dawoodkhan82@gmail.com>

* V4: Single-file implementation of form components (#6026)

* Checkbox and number

* Number, Checkboxgroup, Radio, and Slider

* Format

* remove range

* Refactor checkbox

* Forgot to add

* Refactor

* Lint

* add changeset

* use rich emoji markup

* Fix ts

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update logos for v4 (#6089)

* update v4 logo

* add changeset

* size

* fix on website

* fix on demos

* add changeset

* favicon for demos

* margin on footer logo

* margin bottom to footer logo

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>

* Add a stand-alone install command and tidy-up the fallback template (#6092)

* Add code

* add changeset

* Add test

* Make install default

* Better error message

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4: Fix constructor_args (#6093)

* Fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix: Move to cache in init postprocess + Fallback Fixes (#6107)

* Add code and test

* restore

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix build (#6112)

* fix build

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update cold-lemons-roll.md

* Revert "Update cold-lemons-roll.md" (#6113)

This reverts commit 20dbf90811.

* Try to trigger a major beta release (#6114)

* pyproject fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Delete bad changelog (#6115)

* Delete bad changelog

* Revert "Delete bad changelog"

This reverts commit a8ca614eaf.

* Delete bad

* formatting

* Revert "formatting"

This reverts commit 94f43859e7.

* Improve Audio Component (#5966)

* replace <audio> with wavesurfer: add recording, playing and trimming, playback

* add changeset

* merge cleanup

* improving recording styling

* add recording timer

* add trim region duration

* allow trimming recordings

* clean up playing logic

* add pause_recording event

* remove crop min/max

* add waveform options param

* remove trimmingmode and use mode

* streaming + cleanup

* add changeset

* clean up types

* mobile adjustments

* add min/max length  + trim accessibility

* update pnpm lock

* amend source to a list and allow source switching

* fix no microphone found logic

* change undo logic to reset trims

* tweaks

* tweak reset logic

* ensure recording is sent to backend

* fix audio duration reactivity

* list tweak

* clean up

* change source -> sources + restore wasm changes

* formatting

* fix tests

* fix test

* add default sources value in fe + fix audio demos

* fix audio file name test

* add better sources typing

* ui test tweaks

* add default value in templates.py

* formatting

* remove unused prop

* add audio story

* add changeset

* revert sources changes

* remove story id

* fix be test

* fix be test

* fix notebooks

* formatting

* fix test

* fix test again

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: pngwn <hello@pngwn.io>

* Fix changesets 2 (#6116)

* fix changesets

* release major

* Fix changesets 2 (#6117)

* fix changesets

* release major

* asd

* fix version

* chore: update versions (beta) (#5973)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* v4

* Open source FRP server and allow `gradio` to connect to custom share servers (#6091)

* add param

* add support for custom address

* add changeset

* share guide

* guide

* add params

* add changeset

* fix launch

* add test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Gradio custom component publish (#6098)

* Add code

* add changeset

* F-string

* Add pwd

* Add source to space

* Add template

* Twine import

* add changeset

* ignore

* restore

* add changeset

* Address feedback

* Update gradio/cli/commands/components/publish.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix static issues with Lite on v4 (#6124)

* fix missing props

* fix path to types

* add changeset

* fix path to i18n

* fix audio tests

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Ali Abid <aabid94@gmail.com>

* Refactor `Blocks.load()` so that it is in the same style as the other listeners (#6126)

* restore decorator

* remove

* refactor load

* remove restriction

* add changeset

* add pyi

* add test

* add test

* fix tests

* metaclass

* future

* reduce'

* docstring

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Small change to make `api_open=False` by default (#6138)

* set api_open to False by default

* add changeset

* tests

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Image v4 (#6094)

* simplify image interface

* changes

* asd

* asd

* more

* add code (#6095)

* more

* fix tests

* add changeset

* fix client build

* fix linting

* fix test

* lint

* Fix tests + lint

* asd

* finish

* webcam selection

* fix backend

* address comments

* fix static checks

* fix everything

* add changeset

* Apply suggestions from code review

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* fix examples

* fix tests

* fix tests

---------

Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix fallback demo app template code (#6129)

* Add test

* add changeset

* Add JSON note

* Fix test

* Update gradio/cli/commands/components/_create_utils.py

* Update test/test_gradio_component_cli.py

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* fix video path

* Revert "fix video path"

This reverts commit 5916b3dc8a.

* Fix selectable prop in the backend (#6135)

* Add to init

* Fix events

* add changeset

* Add code

* add changeset

* Fix typo

* Add code

* Fix highlighted text typo

* remove from docs

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix video (#6140)

* fix video

* add changeset

* fixes

* fixes

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix some tests on mac

* fix circular dependency with client + upload (#6143)

* fix circular dependency

* add changeset

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix image double change bug (#6146)

* fix test

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* make lite private (#6147)

* make lite private

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix dropdown arrow size (#6148)

* fix dropdown arrow size

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* swap `mode` on the frontned to `interactive` to match the backend (#6149)

* JS READMEs and Storybook on Docs (#6142)

* changes

* changes

* working

* remove storybook path

* add changeset

* pin code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Don't serve files in working directory by default (#6128)

* don't serve files in working directory by default

* add changeset

* handle examples

* remove dotfiles

* guide

* guide

* fix tests

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix issues with website deploy (#6151)

* fixes

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Swap websockets for SSE (#6069)

* changes

* changes

* changes

* changes

* changes

* merge

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* add changeset

* changes

* changes

* changes

* add changeset

* changes

* changes

* changes

* add changeset

* changes

* changes

* changes

* add changeset

* changes

* changes

* changes

* changes

* changes

* add changeset

* Fix client tests sse branch (#6150)

* Switch spaces

* Fix tests

* Add code

* changes

* changes

---------

Co-authored-by: Ali Abid <aabid94@gmail.com>

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>

* Remove duplicate `elem_ids` from components (#6152)

* remove elem_ids from components

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Moves `gradio_cached_folder` inside the gradio temp direcotry (#6155)

* cache -> temp

* restore

* add changeset

* add exception for cached examples

* security policy

* join

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove `show_edit_button` param in Audio (#6153)

* remove `show_edit_button` param

* add changeset

* hide overflow

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove interpretation for good (#6154)

* interpretation

* notebooks

* add changeset

* removed from readme

* lint

* fix demo

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Make output components not editable if they are being updated (#6157)

* make outputs not editable

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* JS Component Documentation (#6136)

* Simple template

* More changes

* Properly handle change event video

* add changeset

* Add code'

* Fix play/pause bugs

* add changeset

* atoms doc

* Chatbot

* add changeset

* Some more components

* Add code

* add changeset

* Lint

* add changeset

* Simple template

* More changes

* Properly handle change event video

* add changeset

* Add code'

* Fix play/pause bugs

* add changeset

* atoms doc

* Chatbot

* add changeset

* Some more components

* Add code

* add changeset

* Lint

* Merge in latest changes

* Fix typo

* Fix build

* Lockfile

* Fix

* Fix interactive

* correct the title

* add versions to readme

* only document public

* add changeset

* Remove simplevideo and audio

* add changeset

* changes to readmes

* add changeset

* remove tootils and theme

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>

* Improve Video Component (#6118)

* change source to sources + add length logic

* add changeset

* add min/max logic

* tweak tests

* change sources

* formatting

* fix test_components.py test

* add trimming

* add changeset

* add keyboard events to trimming timeline

* UX improvements

* Add fix

* add loading status

* flip if webcam is only source

* generate notebooks

* remove scroll

* add file extension

* trim (#6156)

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* add loading indicator to video

* ensure correct file ext is used

* tweak

* change where ffmpeg is loaded

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* chore: update versions (beta) (#6122)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* V4 fixes (#6161)

* changes

* changes

* Pin 8.9 (#6162)

* Pending outputs fix (#6160)

* fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Clean root url (#6159)

* clean

* cleanup

* formatting

* add changeset

* fe

* add changeset

* selectable

* block

* fix

* fixes

* fix update

* gradio/events

* configs

* remove

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* V4 fixes (#6167)

* changes

* changes

* Fixes remaining backend tests (#6165)

* fix backend tests

* add changeset

* changes

* fix strings

* lint

* lint

* fixes

* delete test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

---------

Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Dawood Khan <dawoodkhan82@gmail.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>
Co-authored-by: Ali Abid <aabid94@gmail.com>
2023-10-31 04:46:02 +00:00

411 lines
10 KiB
Svelte

<script lang="ts">
import { afterUpdate, createEventDispatcher } from "svelte";
import { _, number } from "svelte-i18n";
import { BlockTitle } from "@gradio/atoms";
import { Remove, DropdownArrow } from "@gradio/icons";
import type { SelectData, I18nFormatter } from "@gradio/utils";
import DropdownOptions from "./DropdownOptions.svelte";
import { handle_filter, handle_change, handle_shared_keys } from "./utils";
export let label: string;
export let info: string | undefined = undefined;
export let value: string | number | (string | number)[] | undefined = [];
let old_value: string | number | (string | number)[] | undefined = [];
export let value_is_output = false;
export let max_choices: number | null = null;
export let choices: [string, string | number][];
let old_choices: [string, string | number][];
export let disabled = false;
export let show_label: boolean;
export let container = true;
export let allow_custom_value = false;
export let filterable = true;
export let i18n: I18nFormatter;
let filter_input: HTMLElement;
let input_text = "";
let old_input_text = "";
let show_options = false;
let choices_names: string[];
let choices_values: (string | number)[];
// All of these are indices with respect to the choices array
let filtered_indices: number[] = [];
let active_index: number | null = null;
// selected_index consists of indices from choices or strings if allow_custom_value is true and user types in a custom value
let selected_indices: (number | string)[] = [];
let old_selected_index: (number | string)[] = [];
const dispatch = createEventDispatcher<{
change: string | string[] | undefined;
input: undefined;
select: SelectData;
blur: undefined;
focus: undefined;
}>();
// Setting the initial value of the multiselect dropdown
if (Array.isArray(value)) {
value.forEach((element) => {
const index = choices.map((c) => c[1]).indexOf(element);
if (index !== -1) {
selected_indices.push(index);
} else {
selected_indices.push(element);
}
});
}
$: {
choices_names = choices.map((c) => c[0]);
choices_values = choices.map((c) => c[1]);
}
$: {
if (choices !== old_choices || input_text !== old_input_text) {
filtered_indices = handle_filter(choices, input_text);
old_choices = choices;
old_input_text = input_text;
if (!allow_custom_value) {
active_index = filtered_indices[0];
}
}
}
$: {
if (JSON.stringify(value) != JSON.stringify(old_value)) {
handle_change(dispatch, value, value_is_output);
old_value = Array.isArray(value) ? value.slice() : value;
}
}
$: {
if (
JSON.stringify(selected_indices) != JSON.stringify(old_selected_index)
) {
value = selected_indices.map((index) =>
typeof index === "number" ? choices_values[index] : index
);
old_selected_index = selected_indices.slice();
}
}
function handle_blur(): void {
if (!allow_custom_value) {
input_text = "";
}
if (allow_custom_value && input_text !== "") {
add_selected_choice(input_text);
input_text = "";
}
show_options = false;
active_index = null;
dispatch("blur");
}
function remove_selected_choice(option_index: number | string): void {
selected_indices = selected_indices.filter((v) => v !== option_index);
dispatch("select", {
index: typeof option_index === "number" ? option_index : -1,
value:
typeof option_index === "number"
? choices_values[option_index]
: option_index,
selected: false
});
}
function add_selected_choice(option_index: number | string): void {
if (max_choices === null || selected_indices.length < max_choices) {
selected_indices = [...selected_indices, option_index];
dispatch("select", {
index: typeof option_index === "number" ? option_index : -1,
value:
typeof option_index === "number"
? choices_values[option_index]
: option_index,
selected: true
});
}
if (selected_indices.length === max_choices) {
show_options = false;
active_index = null;
filter_input.blur();
}
}
function handle_option_selected(e: any): void {
const option_index = parseInt(e.detail.target.dataset.index);
add_or_remove_index(option_index);
}
function add_or_remove_index(option_index: number): void {
if (selected_indices.includes(option_index)) {
remove_selected_choice(option_index);
} else {
add_selected_choice(option_index);
}
input_text = "";
}
function remove_all(e: any): void {
selected_indices = [];
input_text = "";
e.preventDefault();
}
function handle_focus(e: FocusEvent): void {
filtered_indices = choices.map((_, i) => i);
if (max_choices === null || selected_indices.length < max_choices) {
show_options = true;
}
dispatch("focus");
}
function handle_key_down(e: KeyboardEvent): void {
[show_options, active_index] = handle_shared_keys(
e,
active_index,
filtered_indices
);
if (e.key === "Enter") {
if (active_index !== null) {
add_or_remove_index(active_index);
} else {
if (allow_custom_value) {
add_selected_choice(input_text);
input_text = "";
}
}
}
if (e.key === "Backspace" && input_text === "") {
selected_indices = [...selected_indices.slice(0, -1)];
}
if (selected_indices.length === max_choices) {
show_options = false;
active_index = null;
}
}
function set_selected_indices(): void {
if (value === undefined) {
selected_indices = [];
} else if (Array.isArray(value)) {
selected_indices = value
.map((v) => {
const index = choices_values.indexOf(v);
if (index !== -1) {
return index;
}
if (allow_custom_value) {
return v;
}
// Instead of returning null, skip this iteration
return undefined;
})
.filter((val): val is string | number => val !== undefined);
}
}
$: value, set_selected_indices();
afterUpdate(() => {
value_is_output = false;
});
</script>
<label class:container>
<BlockTitle {show_label} {info}>{label}</BlockTitle>
<div class="wrap">
<div class="wrap-inner" class:show_options>
{#each selected_indices as s}
<div class="token">
<span>
{#if typeof s === "number"}
{choices_names[s]}
{:else}
{s}
{/if}
</span>
{#if !disabled}
<div
class="token-remove"
on:click|preventDefault={() => remove_selected_choice(s)}
on:keydown|preventDefault={(event) => {
if (event.key === "Enter") {
remove_selected_choice(s);
}
}}
role="button"
tabindex="0"
title={i18n("common.remove") + " " + s}
>
<Remove />
</div>
{/if}
</div>
{/each}
<div class="secondary-wrap">
<input
class="border-none"
class:subdued={(!choices_names.includes(input_text) &&
!allow_custom_value) ||
selected_indices.length === max_choices}
{disabled}
autocomplete="off"
bind:value={input_text}
bind:this={filter_input}
on:keydown={handle_key_down}
on:blur={handle_blur}
on:focus={handle_focus}
readonly={!filterable}
/>
{#if !disabled}
{#if selected_indices.length > 0}
<div
role="button"
tabindex="0"
class="token-remove remove-all"
title={i18n("common.clear")}
on:click={remove_all}
on:keydown={(event) => {
if (event.key === "Enter") {
remove_all(event);
}
}}
>
<Remove />
</div>
{/if}
<span class="icon-wrap"> <DropdownArrow /></span>
{/if}
</div>
</div>
<DropdownOptions
{show_options}
{choices}
{filtered_indices}
{disabled}
{selected_indices}
{active_index}
on:change={handle_option_selected}
/>
</div>
</label>
<style>
.icon-wrap {
color: var(--body-text-color);
margin-right: var(--size-2);
width: var(--size-5);
}
label:not(.container),
label:not(.container) .wrap,
label:not(.container) .wrap-inner,
label:not(.container) .secondary-wrap,
label:not(.container) .token,
label:not(.container) input {
height: 100%;
}
.container .wrap {
box-shadow: var(--input-shadow);
border: var(--input-border-width) solid var(--border-color-primary);
}
.wrap {
position: relative;
border-radius: var(--input-radius);
background: var(--input-background-fill);
}
.wrap:focus-within {
box-shadow: var(--input-shadow-focus);
border-color: var(--input-border-color-focus);
}
.wrap-inner {
display: flex;
position: relative;
flex-wrap: wrap;
align-items: center;
gap: var(--checkbox-label-gap);
padding: var(--checkbox-label-padding);
}
.token {
display: flex;
align-items: center;
transition: var(--button-transition);
cursor: pointer;
box-shadow: var(--checkbox-label-shadow);
border: var(--checkbox-label-border-width) solid
var(--checkbox-label-border-color);
border-radius: var(--button-small-radius);
background: var(--checkbox-label-background-fill);
padding: var(--checkbox-label-padding);
color: var(--checkbox-label-text-color);
font-weight: var(--checkbox-label-text-weight);
font-size: var(--checkbox-label-text-size);
line-height: var(--line-md);
}
.token > * + * {
margin-left: var(--size-2);
}
.token-remove {
fill: var(--body-text-color);
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
border: var(--checkbox-border-width) solid var(--border-color-primary);
border-radius: var(--radius-full);
background: var(--background-fill-primary);
padding: var(--size-0-5);
width: 18px;
height: 18px;
}
.secondary-wrap {
display: flex;
flex: 1 1 0%;
align-items: center;
border: none;
min-width: min-content;
}
input {
margin: var(--spacing-sm);
outline: none;
border: none;
background: inherit;
width: var(--size-full);
color: var(--body-text-color);
font-size: var(--input-text-size);
}
input:disabled {
-webkit-text-fill-color: var(--body-text-color);
-webkit-opacity: 1;
opacity: 1;
cursor: not-allowed;
}
.remove-all {
margin-left: var(--size-1);
width: 20px;
height: 20px;
}
.subdued {
color: var(--body-text-color-subdued);
}
input[readonly] {
cursor: pointer;
}
</style>