Spaces:
Runtime error
Runtime error
import math | |
from pathlib import Path | |
from faicons import icon_svg | |
from htmltools import HTMLDependency | |
from shiny import module, ui | |
__all__ = ( | |
"input_video_clip", | |
"audio_spinner", | |
) | |
multimodal_dep = HTMLDependency( | |
"multimodal", | |
"0.0.1", | |
source={ | |
"subdir": str(Path(__file__).parent / "dist"), | |
}, | |
script={"src": "index.js"}, | |
stylesheet={"href": "index.css"}, | |
) | |
def input_video_clip(id: str, **kwargs): | |
id = module.resolve_id(id) | |
return ui.Tag( | |
"video-clipper", | |
multimodal_dep, | |
ui.Tag( | |
"av-settings-menu", | |
ui.div( | |
ui.tags.button( | |
icon_svg("gear").add_class("fw"), | |
class_="btn btn-sm btn-secondary dropdown-toggle px-3 py-2", | |
type="button", | |
**{"data-bs-toggle": "dropdown"}, | |
), | |
ui.tags.ul( | |
ui.tags.li( | |
ui.tags.h6("Camera", class_="dropdown-header"), | |
class_="camera-header", | |
), | |
# Camera items will go here | |
ui.tags.li(ui.tags.hr(class_="dropdown-divider")), | |
ui.tags.li( | |
ui.tags.h6("Microphone", class_="dropdown-header"), | |
class_="mic-header", | |
), | |
# Microphone items will go here | |
class_="dropdown-menu", | |
), | |
class_="btn-group", | |
), | |
slot="settings", | |
), | |
ui.div( | |
ui.tags.button( | |
ui.TagList( | |
ui.tags.div( | |
style="display: inline-block; background-color: red; width: 1rem; height: 1rem; border-radius: 100%; position: relative; top: 0.175rem; margin-right: 0.3rem;" | |
), | |
"Record", | |
), | |
style="display: block;", | |
class_="record-button btn btn-secondary px-3 mx-auto", | |
), | |
ui.tags.button( | |
ui.TagList( | |
ui.tags.div( | |
style="display: inline-block; background-color: currentColor; width: 1rem; height: 1rem; position: relative; top: 0.175rem; margin-right: 0.3rem;" | |
), | |
"Stop", | |
), | |
style="display: block;", | |
class_="stop-button btn btn-secondary px-3 mx-auto", | |
), | |
slot="recording-controls", | |
class_="btn-group", | |
**{"aria-label": "Recording controls"}, | |
), | |
id=id, | |
**kwargs, | |
) | |
def audio_spinner( | |
*, | |
src: str, | |
spin_velocity: float = 1, | |
gap: float = math.pi / 5, | |
thickness: float = 2.5, | |
min_radius: float = 30, | |
radius_factor: float = 1.8, | |
steps: float = 3, | |
blades: float = 3, | |
**kwargs | |
): | |
return ui.Tag( | |
"audio-spinner", | |
multimodal_dep, | |
src=src, | |
style="width: 125px; height: 125px;", | |
class_="mx-auto", | |
**{ | |
"data-spin-velocity": spin_velocity, | |
"data-gap": gap, | |
"data-thickness": thickness, | |
"data-min-radius": min_radius, | |
"data-radius-factor": radius_factor, | |
"data-steps": steps, | |
"data-blades": blades, | |
}, | |
) | |