@chai-ui/react 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +6 -0
- package/README.md +16 -1
- package/dist/Composer.d.ts +21 -4
- package/dist/Composer.d.ts.map +1 -1
- package/dist/Composer.js +37 -14
- package/dist/Composer.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/primitives/SearchMenu.d.ts +4 -1
- package/dist/primitives/SearchMenu.d.ts.map +1 -1
- package/dist/primitives/SearchMenu.js +8 -3
- package/dist/primitives/SearchMenu.js.map +1 -1
- package/dist/style.css +47 -12
- package/package.json +3 -3
- package/src/Composer.tsx +101 -8
- package/src/index.ts +3 -0
- package/src/primitives/SearchMenu.tsx +11 -3
- package/src/style.css +47 -12
package/DESIGN.md
CHANGED
|
@@ -60,6 +60,11 @@ use these names: `Results`, `Compare`, `ModelPicker`,
|
|
|
60
60
|
8. **Only show what's real.** Show cost only when the engine reports it.
|
|
61
61
|
Don't show model rankings or leaderboard positions you can't keep up to
|
|
62
62
|
date. Don't show a control the selected model can't honor.
|
|
63
|
+
9. **Say where the bar is docked.** A `Composer` fixed to the bottom of
|
|
64
|
+
the screen gets `menuPlacement="above"`, one fixed to the top
|
|
65
|
+
`menuPlacement="below"`, so its menus always open into the page. Leave
|
|
66
|
+
it out for a bar in the page flow: `"auto"` picks the side with room
|
|
67
|
+
each time a menu opens.
|
|
63
68
|
|
|
64
69
|
### In Vue
|
|
65
70
|
|
|
@@ -155,6 +160,7 @@ Rules:
|
|
|
155
160
|
| No use case picked | The prompt is a text request and gets a text reply | Set `defaultUseCase` if your app's default should be image or video |
|
|
156
161
|
| Voice input | A mic left of submit; while recording, a live waveform replaces the prompt and the mic becomes stop; the transcript is added to the prompt, never sent; submit hides until it's in; inline messages for a blocked or missing mic | Pass `voiceInput={{ model: "fal-ai/wizper" }}` (any Fal speech-to-text model, through your `/api/chai/fal` route) or `voiceInput={{ transcribe }}` for another provider. Chai never picks the model. |
|
|
157
162
|
| Create world | Two prompts, Environment (required) and Character (optional), each with its own Enhance; a frame rate menu from the models' `frameRates`; submit waits for an environment and says so | Add `"create-world"` to `attachMenuActions`, pass your world models, `character` + `onCharacterChange`, and route `engineByKind.world` to your world engine. Show the world in your own viewer. |
|
|
163
|
+
| Create speech, Create music | The attach menu's audio group, under a divider; speech asks for the words to speak, music for a description; Enhance keeps a speech script's words and only makes them read aloud well; once one model is picked, a Voice menu from its `voices` (speech), or a multi-select Genre menu from the picked models' `genres` (music, written into the prompt) | Add `"create-speech"` / `"create-music"` to `attachMenuActions`, set `CREATE_SPEECH_USE_CASE` / `CREATE_MUSIC_USE_CASE` on the pick, pass your audio models (with `voices` or `genres`) and `engineByKind.audio`, and wire `speechVoice` / `genres`. No duration, instrumental or reference-audio controls yet |
|
|
158
164
|
| Result pending | `ResultCard` shows a spinner for `queued` / `running` | Nothing. `useComposer` sets the status. |
|
|
159
165
|
| Long text answer | `ResultCard` keeps line breaks, scrolls past 400px with a visible scrollbar, and follows streaming text unless the person scrolls up | Change the height with `textMaxHeight` if needed |
|
|
160
166
|
| Text streaming in | `ResultCard` renders partial text with a caret, marked `aria-busy` | Use an engine that calls `onText` (OpenRouter does, and so does the mock text engine). `useComposer` wires it. |
|
package/README.md
CHANGED
|
@@ -186,6 +186,21 @@ If routing can't run (no `ChaiProvider`, a failed reasoning call, an
|
|
|
186
186
|
unlisted reply), the request runs on the first listed model and
|
|
187
187
|
`onRoutingFallback` says why.
|
|
188
188
|
|
|
189
|
+
### Where the bar sits: `menuPlacement`
|
|
190
|
+
|
|
191
|
+
Every menu in the bar (the `+` menu, Model, Aspect ratio, Voice, Genre,
|
|
192
|
+
Frame rate) opens the same way. Tell `Composer` where the bar is docked:
|
|
193
|
+
|
|
194
|
+
```tsx
|
|
195
|
+
<Composer menuPlacement="above" {...props} /> // docked to the bottom of the screen, like a chat app
|
|
196
|
+
<Composer menuPlacement="below" {...props} /> // docked to the top
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Leave it out (`"auto"`) for a bar that sits in the page: each menu is
|
|
200
|
+
measured when it opens and goes below if it fits, else above if that fits,
|
|
201
|
+
else toward the side with more room, so it's never cut off by the edge of
|
|
202
|
+
the screen.
|
|
203
|
+
|
|
189
204
|
## What else this package ships
|
|
190
205
|
|
|
191
206
|
- **`MediaAnalyzer`** — drop in an image, video, or audio clip and get a
|
|
@@ -373,7 +388,7 @@ const model = SUGGESTED_EDIT_MODELS.find((m) => m.id === modelId) ?? SUGGESTED_E
|
|
|
373
388
|
// ...your other Composer props
|
|
374
389
|
useCase={useCase}
|
|
375
390
|
onAttachMenuSelect={(action) => {
|
|
376
|
-
if (action === "edit-
|
|
391
|
+
if (action === "edit-image") setUseCase(EDIT_IMAGE_USE_CASE);
|
|
377
392
|
}}
|
|
378
393
|
regions={edit?.regions}
|
|
379
394
|
onRegionsChange={edit?.onRegionsChange}
|
package/dist/Composer.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { type ComposerAttachMenuAction, type ComposerPromptField, type VoiceInputConfig } from "@chai-ui/core";
|
|
2
|
+
import { type ComposerAttachMenuAction, type ComposerPromptField, type MenuPlacement, type VoiceInputConfig } from "@chai-ui/core";
|
|
3
3
|
import type { EditRegion, GenerationUseCase, ModelOption, ParameterOption, OutputKind } from "@chai-ui/core";
|
|
4
4
|
import type { ComposerAttachment, ComposerSubmitPayload, ComposerUseCase } from "@chai-ui/core";
|
|
5
|
-
export { EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, type ComposerAttachMenuAction, type ComposerAttachment, type ComposerPromptField, type ComposerSelection, type ComposerSubmitPayload, type ComposerUseCase, } from "@chai-ui/core";
|
|
5
|
+
export { CREATE_MUSIC_USE_CASE, CREATE_SPEECH_USE_CASE, EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, type AudioUseCase, type ComposerAttachMenuAction, type ComposerAttachment, type ComposerPromptField, type ComposerSelection, type ComposerSubmitPayload, type ComposerUseCase, } from "@chai-ui/core";
|
|
6
6
|
export interface ComposerProps {
|
|
7
7
|
/** The prompt text. Controlled — Composer owns no text state of its own. */
|
|
8
8
|
value: string;
|
|
@@ -23,7 +23,10 @@ export interface ComposerProps {
|
|
|
23
23
|
* Builder opt-in, off by default: several use cases at once (e.g. an image
|
|
24
24
|
* and a video from one prompt), at most one per kind. Uses `useCases`,
|
|
25
25
|
* `onUseCasesChange` and `modelsByKind` instead of `useCase` and `models`;
|
|
26
|
-
* the model menu shows one section per picked use case.
|
|
26
|
+
* the model menu shows one section per picked use case. Edit image and
|
|
27
|
+
* Create speech run alone: an edit works on one image, and speech's prompt
|
|
28
|
+
* is the words to say, which no other use case can share. Create music
|
|
29
|
+
* can join Image and Video.
|
|
27
30
|
*/
|
|
28
31
|
multiSelectUseCases?: boolean;
|
|
29
32
|
useCases?: ComposerUseCase[];
|
|
@@ -106,6 +109,20 @@ export interface ComposerProps {
|
|
|
106
109
|
/** A world's frame rate menu, from the selected models' `ModelOption.frameRates`. */
|
|
107
110
|
frameRate?: number | null;
|
|
108
111
|
onFrameRateChange?: (value: number) => void;
|
|
112
|
+
/** Create speech's Voice menu, from the one picked model's `ModelOption.voices`. Not `voiceInput`, which is dictation. */
|
|
113
|
+
speechVoice?: string | null;
|
|
114
|
+
onSpeechVoiceChange?: (value: string) => void;
|
|
115
|
+
/** Create music's Genre menu, several at once, from the picked models' `ModelOption.genres`. */
|
|
116
|
+
genres?: string[];
|
|
117
|
+
onGenresChange?: (values: string[]) => void;
|
|
118
|
+
/**
|
|
119
|
+
* Which way the bar's menus open (the + menu, Model, Aspect ratio and the
|
|
120
|
+
* rest). `"above"` for a bar docked to the bottom of the screen, `"below"`
|
|
121
|
+
* for one docked to the top. `"auto"` (default) measures when a menu opens:
|
|
122
|
+
* below if it fits, else above if that fits, else toward the side with
|
|
123
|
+
* more room.
|
|
124
|
+
*/
|
|
125
|
+
menuPlacement?: MenuPlacement;
|
|
109
126
|
/** Fires with everything Composer tracks — see `ComposerSubmitPayload`. Also what retry calls, with the same payload, when `submitError` is set. */
|
|
110
127
|
onSubmit: (payload: ComposerSubmitPayload) => void;
|
|
111
128
|
/**
|
|
@@ -171,5 +188,5 @@ export interface ComposerProps {
|
|
|
171
188
|
* `control-*` semantic tokens, restylable per instance through the
|
|
172
189
|
* `--chai-composer-*` custom properties in style.css.
|
|
173
190
|
*/
|
|
174
|
-
export declare function Composer({ value, onChange, placeholder, promptLabel, attachments, onAttachmentsChange, onUnsupportedFile, useCase, onClearUseCase, defaultUseCase, multiSelectUseCases, useCases, onUseCasesChange, modelsByKind, multiSelectModels, modelIds, onModelIdsChange, models, modelId, onModelChange, autoSelectModel, showAutoSelectToggle, onAutoSelectModelChange, aspectRatios, aspectRatio, onAspectRatioChange, onEnhance, enhancing, character, onCharacterChange, frameRate, onFrameRateChange, onSubmit, submitError, submitDisabled, submitting, onAbort, onAttachMenuSelect, attachMenuActions, regions, onRegionsChange, voiceInput, disabled, className, style, }: ComposerProps): React.JSX.Element;
|
|
191
|
+
export declare function Composer({ value, onChange, placeholder, promptLabel, attachments, onAttachmentsChange, onUnsupportedFile, useCase, onClearUseCase, defaultUseCase, multiSelectUseCases, useCases, onUseCasesChange, modelsByKind, multiSelectModels, modelIds, onModelIdsChange, models, modelId, onModelChange, autoSelectModel, showAutoSelectToggle, onAutoSelectModelChange, aspectRatios, aspectRatio, onAspectRatioChange, onEnhance, enhancing, character, onCharacterChange, frameRate, onFrameRateChange, speechVoice, onSpeechVoiceChange, genres, onGenresChange, menuPlacement, onSubmit, submitError, submitDisabled, submitting, onAbort, onAttachMenuSelect, attachMenuActions, regions, onRegionsChange, voiceInput, disabled, className, style, }: ComposerProps): React.JSX.Element;
|
|
175
192
|
//# sourceMappingURL=Composer.d.ts.map
|
package/dist/Composer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"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"}
|
package/dist/Composer.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { AddIcon, ArrowForwardIcon, CloseSymbolIcon, StopIcon } from "./icons.js";
|
|
3
|
-
import { useEffect, useId, useRef, useState, useSyncExternalStore } from "react";
|
|
3
|
+
import { useEffect, useId, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
4
4
|
import { createComponent } from "@lit/react";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { MdFab } from "@material/web/fab/fab.js";
|
|
7
|
-
import { composerAttachmentsFromFiles, composerAttachMenuItems, composerView, createVoiceInput, enhanceRevealDurationMs, formatVoiceElapsed, VOICE_LEVEL_COUNT, MAX_ANIMATE_ENHANCE_LENGTH, regionColor, TEXT_USE_CASE, } from "@chai-ui/core";
|
|
7
|
+
import { composerAttachmentsFromFiles, composerAttachMenuItems, composerView, createVoiceInput, enhanceRevealDurationMs, formatVoiceElapsed, VOICE_LEVEL_COUNT, MAX_ANIMATE_ENHANCE_LENGTH, regionColor, TEXT_USE_CASE, menuOpensAbove, } from "@chai-ui/core";
|
|
8
8
|
import { useLatest } from "./use-latest.js";
|
|
9
9
|
import { SearchMenu } from "./primitives/SearchMenu.js";
|
|
10
|
-
export { EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, } from "@chai-ui/core";
|
|
10
|
+
export { CREATE_MUSIC_USE_CASE, CREATE_SPEECH_USE_CASE, EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, } from "@chai-ui/core";
|
|
11
11
|
/** See primitives/Toggle.tsx for why `createComponent` is used instead of raw JSX on custom-element tags. */
|
|
12
12
|
const MdFabElement = createComponent({
|
|
13
13
|
react: React,
|
|
@@ -25,7 +25,7 @@ const MdFabElement = createComponent({
|
|
|
25
25
|
* `control-*` semantic tokens, restylable per instance through the
|
|
26
26
|
* `--chai-composer-*` custom properties in style.css.
|
|
27
27
|
*/
|
|
28
|
-
export function Composer({ value, onChange, placeholder, promptLabel, attachments = [], onAttachmentsChange, onUnsupportedFile, useCase = null, onClearUseCase, defaultUseCase = TEXT_USE_CASE, multiSelectUseCases = false, useCases = [], onUseCasesChange, modelsByKind, multiSelectModels = false, modelIds = [], onModelIdsChange, models, modelId = null, onModelChange, autoSelectModel = false, showAutoSelectToggle = false, onAutoSelectModelChange, aspectRatios, aspectRatio = null, onAspectRatioChange, onEnhance, enhancing = false, character = "", onCharacterChange, frameRate = null, onFrameRateChange, onSubmit, submitError = null, submitDisabled, submitting = false, onAbort, onAttachMenuSelect, attachMenuActions, regions = [], onRegionsChange, voiceInput, disabled = false, className, style, }) {
|
|
28
|
+
export function Composer({ value, onChange, placeholder, promptLabel, attachments = [], onAttachmentsChange, onUnsupportedFile, useCase = null, onClearUseCase, defaultUseCase = TEXT_USE_CASE, multiSelectUseCases = false, useCases = [], onUseCasesChange, modelsByKind, multiSelectModels = false, modelIds = [], onModelIdsChange, models, modelId = null, onModelChange, autoSelectModel = false, showAutoSelectToggle = false, onAutoSelectModelChange, aspectRatios, aspectRatio = null, onAspectRatioChange, onEnhance, enhancing = false, character = "", onCharacterChange, frameRate = null, onFrameRateChange, speechVoice = null, onSpeechVoiceChange, genres = [], onGenresChange, menuPlacement = "auto", onSubmit, submitError = null, submitDisabled, submitting = false, onAbort, onAttachMenuSelect, attachMenuActions, regions = [], onRegionsChange, voiceInput, disabled = false, className, style, }) {
|
|
29
29
|
const view = composerView({
|
|
30
30
|
value,
|
|
31
31
|
placeholder,
|
|
@@ -46,6 +46,8 @@ export function Composer({ value, onChange, placeholder, promptLabel, attachment
|
|
|
46
46
|
aspectRatio,
|
|
47
47
|
character,
|
|
48
48
|
frameRate,
|
|
49
|
+
speechVoice,
|
|
50
|
+
genres,
|
|
49
51
|
submitError,
|
|
50
52
|
submitDisabled,
|
|
51
53
|
submitting,
|
|
@@ -113,9 +115,9 @@ export function Composer({ value, onChange, placeholder, promptLabel, attachment
|
|
|
113
115
|
function handleRemoveAttachment(id) {
|
|
114
116
|
onAttachmentsChange?.(attachments.filter((a) => a.id !== id));
|
|
115
117
|
}
|
|
116
|
-
return (_jsxs("div", { className: className ? `chai-composer ${className}` : "chai-composer", style: style, children: [attachments.length > 0 && (_jsx("div", { className: "chai-composer__thumbnails", children: attachments.map((a) => (_jsx(ComposerThumbnail, { attachment: a, onRemove: onAttachmentsChange ? () => handleRemoveAttachment(a.id) : undefined }, a.id))) })), editing && regions.length > 0 && (_jsx("ul", { className: "chai-composer__regions", "aria-label": "Edit regions", children: regions.map((r) => (_jsx("li", { children: _jsx(RegionChip, { region: r, onRemove: onRegionsChange ? () => onRegionsChange(regions.filter((x) => x.id !== r.id)) : undefined, disabled: disabled }) }, r.id))) })), voiceInput && voice.state.status === "recording" ? (_jsx(VoiceWaveform, { levels: voice.state.levels, elapsedMs: voice.state.elapsedMs })) : view.world ? (_jsxs("div", { className: "chai-composer__world-fields", children: [_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, heading: "Environment", note: "(required)", hint: view.environmentHint, onEnhance: enhanceField("environment"), enhancing: enhancing && enhancingField === "environment", disabled: disabled }), onCharacterChange && (_jsx(PromptField, { value: character, onChange: onCharacterChange, placeholder: view.characterPlaceholder, heading: "Character", note: "(optional)", onEnhance: enhanceField("character"), enhancing: enhancing && enhancingField === "character", disabled: disabled }))] })) : (_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, label: promptLabel, onEnhance: enhanceField("prompt"), enhancing: enhancing, disabled: disabled })), submitError && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), submitError] })), voiceInput && voice.state.status === "error" && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), voice.state.error] })), _jsxs("div", { className: "chai-composer__controls", children: [_jsxs("div", { className: "chai-composer__controls-start", children: [menuItems.length > 0 && (_jsx(ComposerAttachMenu, { items: menuItems, onSelect: onAttachMenuSelect, onAddMediaFiles: handleFilesSelected, imagesOnly: editing, disabled: disabled })), view.pickedUseCases.map((u) => (_jsx(UseCaseChip, { useCase: u, onRemove: multiSelectUseCases
|
|
118
|
+
return (_jsxs("div", { className: className ? `chai-composer ${className}` : "chai-composer", style: style, children: [attachments.length > 0 && (_jsx("div", { className: "chai-composer__thumbnails", children: attachments.map((a) => (_jsx(ComposerThumbnail, { attachment: a, onRemove: onAttachmentsChange ? () => handleRemoveAttachment(a.id) : undefined }, a.id))) })), editing && regions.length > 0 && (_jsx("ul", { className: "chai-composer__regions", "aria-label": "Edit regions", children: regions.map((r) => (_jsx("li", { children: _jsx(RegionChip, { region: r, onRemove: onRegionsChange ? () => onRegionsChange(regions.filter((x) => x.id !== r.id)) : undefined, disabled: disabled }) }, r.id))) })), voiceInput && voice.state.status === "recording" ? (_jsx(VoiceWaveform, { levels: voice.state.levels, elapsedMs: voice.state.elapsedMs })) : view.world ? (_jsxs("div", { className: "chai-composer__world-fields", children: [_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, heading: "Environment", note: "(required)", hint: view.environmentHint, onEnhance: enhanceField("environment"), enhancing: enhancing && enhancingField === "environment", disabled: disabled }), onCharacterChange && (_jsx(PromptField, { value: character, onChange: onCharacterChange, placeholder: view.characterPlaceholder, heading: "Character", note: "(optional)", onEnhance: enhanceField("character"), enhancing: enhancing && enhancingField === "character", disabled: disabled }))] })) : (_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, label: promptLabel, onEnhance: enhanceField("prompt"), enhancing: enhancing, disabled: disabled })), submitError && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), submitError] })), voiceInput && voice.state.status === "error" && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), voice.state.error] })), _jsxs("div", { className: "chai-composer__controls", children: [_jsxs("div", { className: "chai-composer__controls-start", children: [menuItems.length > 0 && (_jsx(ComposerAttachMenu, { items: menuItems, onSelect: onAttachMenuSelect, onAddMediaFiles: handleFilesSelected, imagesOnly: editing, disabled: disabled, placement: menuPlacement })), view.pickedUseCases.map((u) => (_jsx(UseCaseChip, { useCase: u, onRemove: multiSelectUseCases
|
|
117
119
|
? onUseCasesChange && (() => onUseCasesChange(useCases.filter((x) => x.kind !== u.kind)))
|
|
118
|
-
: onClearUseCase, disabled: disabled }, u.kind))), modelSections.length > 0 && view.canPickModel && (_jsx(SearchMenu, { ...(multiSelectUseCases
|
|
120
|
+
: onClearUseCase, disabled: disabled }, u.kind))), modelSections.length > 0 && view.canPickModel && (_jsx(SearchMenu, { placement: menuPlacement, ...(multiSelectUseCases
|
|
119
121
|
? { sections: modelSections.map((s) => ({ label: s.label, options: s.options })) }
|
|
120
122
|
: { options: modelSections[0].options }), value: multiModel ? pickedModelIds : modelId, multiple: multiModel, toggleHeader: showAutoSelectToggle
|
|
121
123
|
? {
|
|
@@ -123,7 +125,14 @@ export function Composer({ value, onChange, placeholder, promptLabel, attachment
|
|
|
123
125
|
value: autoSelectModel,
|
|
124
126
|
onChange: (v) => onAutoSelectModelChange?.(v),
|
|
125
127
|
}
|
|
126
|
-
: undefined, triggerLabel: view.modelTriggerLabel, menuLabel: multiModel ? "Select models" : "Select model", onSelect: (opt) => toggleModel(opt.id), searchable: false, triggerVariant: "text", disabled: disabled || (autoSelectModel && !showAutoSelectToggle), panelWidth: showAutoSelectToggle ? 320 : undefined })), view.showAspectRatio && aspectOptions.length > 0 && onAspectRatioChange && (_jsx(SearchMenu, { options: aspectOptions.map((o) => ({ id: o.value, label: o.label })), value: offeredAspect, triggerLabel: view.selectedAspect?.label ?? "Aspect ratio", menuLabel: "Aspect ratio", onSelect: (opt) => onAspectRatioChange?.(opt.id), searchable: false, triggerVariant: "text", disabled: disabled })), view.
|
|
128
|
+
: undefined, triggerLabel: view.modelTriggerLabel, menuLabel: multiModel ? "Select models" : "Select model", onSelect: (opt) => toggleModel(opt.id), searchable: false, triggerVariant: "text", disabled: disabled || (autoSelectModel && !showAutoSelectToggle), panelWidth: showAutoSelectToggle ? 320 : undefined })), view.showAspectRatio && aspectOptions.length > 0 && onAspectRatioChange && (_jsx(SearchMenu, { placement: menuPlacement, options: aspectOptions.map((o) => ({ id: o.value, label: o.label })), value: offeredAspect, triggerLabel: view.selectedAspect?.label ?? "Aspect ratio", menuLabel: "Aspect ratio", onSelect: (opt) => onAspectRatioChange?.(opt.id), searchable: false, triggerVariant: "text", disabled: disabled })), view.voiceOptions.length > 0 && onSpeechVoiceChange && (_jsx(SearchMenu, { placement: menuPlacement, ...(view.voiceSections
|
|
129
|
+
? {
|
|
130
|
+
sections: view.voiceSections.map((s) => ({
|
|
131
|
+
label: s.label,
|
|
132
|
+
options: s.options.map((v) => ({ id: v.value, label: v.label })),
|
|
133
|
+
})),
|
|
134
|
+
}
|
|
135
|
+
: { options: view.voiceOptions.map((v) => ({ id: v.value, label: v.label })) }), value: view.offeredVoice, triggerLabel: view.voiceTriggerLabel, menuLabel: "Voice", onSelect: (opt) => onSpeechVoiceChange(opt.id), searchable: view.voiceOptions.length > view.searchableAt, triggerVariant: "text", disabled: disabled })), view.genreOptions.length > 0 && onGenresChange && (_jsx(SearchMenu, { placement: menuPlacement, options: view.genreOptions.map((g) => ({ id: g.value, label: g.label })), value: view.offeredGenres, multiple: true, triggerLabel: view.genreTriggerLabel, menuLabel: "Genre", onSelect: (opt) => onGenresChange(view.toggledGenres(opt.id)), searchable: view.genreOptions.length > view.searchableAt, triggerVariant: "text", disabled: disabled })), view.frameRateOptions.length > 0 && onFrameRateChange && (_jsx(SearchMenu, { placement: menuPlacement, options: view.frameRateOptions.map((r) => ({ id: String(r), label: `${r}fps` })), value: view.offeredFrameRate == null ? null : String(view.offeredFrameRate), triggerLabel: view.offeredFrameRate == null ? "Frame rate" : `${view.offeredFrameRate}fps`, menuLabel: "Frame rate", onSelect: (opt) => onFrameRateChange(Number(opt.id)), searchable: false, triggerVariant: "text", disabled: disabled }))] }), _jsxs("div", { className: "chai-composer__controls-end", children: [voiceInput && _jsx(VoiceButton, { voice: voice, disabled: disabled }), !(voiceInput && (voice.state.status === "recording" || voice.state.status === "transcribing")) && (_jsx(MdFabElement, { className: "chai-composer__submit", size: "small", variant: "secondary", label: "", "data-ready": showStop || !isSubmitDisabled || undefined, "data-error": Boolean(submitError) || undefined, "data-stop": showStop || undefined, ...{
|
|
127
136
|
ariaLabel: showStop ? "Stop" : submitError ? "Retry" : "Submit",
|
|
128
137
|
ariaDisabled: showStop ? "false" : submitting ? "true" : isSubmitDisabled ? "true" : "false",
|
|
129
138
|
}, onClick: () => {
|
|
@@ -275,7 +284,9 @@ const ATTACH_MENU_ICONS = {
|
|
|
275
284
|
"create-image": _jsx(ImageIcon, {}),
|
|
276
285
|
"create-video": _jsx(VideocamIcon, {}),
|
|
277
286
|
"create-world": _jsx(GlobeIcon, {}),
|
|
278
|
-
"edit-
|
|
287
|
+
"edit-image": _jsx(ContentCutIcon, {}),
|
|
288
|
+
"create-speech": _jsx(VolumeUpIcon, {}),
|
|
289
|
+
"create-music": _jsx(MusicNoteIcon, {}),
|
|
279
290
|
};
|
|
280
291
|
/**
|
|
281
292
|
* The "+" / "×" attach control (reference: Composer_01 "Menu open" state,
|
|
@@ -284,9 +295,18 @@ const ATTACH_MENU_ICONS = {
|
|
|
284
295
|
* documents for its own panel (this needs to live inline under the trigger,
|
|
285
296
|
* not `<md-menu>`'s corner-anchored popover model).
|
|
286
297
|
*/
|
|
287
|
-
function ComposerAttachMenu({ items, onSelect, onAddMediaFiles, imagesOnly, disabled, }) {
|
|
298
|
+
function ComposerAttachMenu({ items, onSelect, onAddMediaFiles, imagesOnly, disabled, placement, }) {
|
|
288
299
|
const [open, setOpen] = useState(false);
|
|
300
|
+
const [above, setAbove] = useState(false);
|
|
289
301
|
const rootRef = useRef(null);
|
|
302
|
+
const menuRef = useRef(null);
|
|
303
|
+
// Up or down, before the first paint, so it never flashes on the wrong side.
|
|
304
|
+
useLayoutEffect(() => {
|
|
305
|
+
const menu = menuRef.current;
|
|
306
|
+
if (!open || !menu)
|
|
307
|
+
return;
|
|
308
|
+
setAbove(menuOpensAbove(placement, rootRef.current.getBoundingClientRect(), menu.offsetHeight, document.documentElement.clientHeight));
|
|
309
|
+
}, [open, placement]);
|
|
290
310
|
const inputRef = useRef(null);
|
|
291
311
|
useEffect(() => {
|
|
292
312
|
if (!open)
|
|
@@ -312,7 +332,7 @@ function ComposerAttachMenu({ items, onSelect, onAddMediaFiles, imagesOnly, disa
|
|
|
312
332
|
inputRef.current?.click();
|
|
313
333
|
onSelect?.(action);
|
|
314
334
|
}
|
|
315
|
-
return (_jsxs("div", { className: "chai-composer__attach", ref: rootRef, children: [_jsx("button", { type: "button", className: `chai-composer__attach-toggle${open ? " chai-composer__attach-toggle--open" : ""}`, onClick: () => setOpen((v) => !v), disabled: disabled, "aria-expanded": open, "aria-haspopup": "menu", "aria-label": open ? "Close attach menu" : "Add media", children: open ? _jsx(CloseSymbolIcon, {}) : _jsx(AddIcon, {}) }), open && (_jsx("ul", { className: "chai-composer__attach-menu"
|
|
335
|
+
return (_jsxs("div", { className: "chai-composer__attach", ref: rootRef, children: [_jsx("button", { type: "button", className: `chai-composer__attach-toggle${open ? " chai-composer__attach-toggle--open" : ""}`, onClick: () => setOpen((v) => !v), disabled: disabled, "aria-expanded": open, "aria-haspopup": "menu", "aria-label": open ? "Close attach menu" : "Add media", children: open ? _jsx(CloseSymbolIcon, {}) : _jsx(AddIcon, {}) }), open && (_jsx("ul", { ref: menuRef, className: `chai-composer__attach-menu${above ? " chai-composer__attach-menu--above" : ""}`, role: "menu", children: items.map((item, i) => (_jsxs("li", { role: "none", children: [_jsxs("button", { type: "button", role: "menuitem", className: "chai-composer__attach-menu-item", onClick: () => handleItemClick(item.action), children: [_jsx("span", { className: "chai-composer__attach-menu-icon", children: ATTACH_MENU_ICONS[item.action] }), item.label] }), item.divider && i < items.length - 1 && _jsx("hr", { className: "chai-composer__attach-menu-divider", role: "separator" })] }, item.action))) })), _jsx("input", { ref: inputRef, type: "file", accept: imagesOnly ? "image/*" : "image/*,video/*,audio/*", multiple: !imagesOnly, hidden: true, disabled: disabled, onChange: (e) => {
|
|
316
336
|
onAddMediaFiles(e.target.files);
|
|
317
337
|
e.target.value = "";
|
|
318
338
|
} })] }));
|
|
@@ -349,7 +369,7 @@ function kindIcon(kind) {
|
|
|
349
369
|
case "video":
|
|
350
370
|
return _jsx(VideocamIcon, {});
|
|
351
371
|
case "audio":
|
|
352
|
-
return _jsx(
|
|
372
|
+
return _jsx(MusicNoteIcon, {});
|
|
353
373
|
default:
|
|
354
374
|
return _jsx(ImageIcon, {});
|
|
355
375
|
}
|
|
@@ -364,11 +384,11 @@ function kindIcon(kind) {
|
|
|
364
384
|
// codebase's existing "trace and inline as a currentColor component"
|
|
365
385
|
// convention). Fixes an earlier pass
|
|
366
386
|
// that hand-approximated several of these (Add media/Create image/Create
|
|
367
|
-
// video/Edit
|
|
387
|
+
// video/Edit image's icons, plus/close/arrow) because `get_design_context`
|
|
368
388
|
// couldn't resolve their specific instance-swap nodes — those
|
|
369
389
|
// approximations read as visibly off-brand, not real MD3, correctly
|
|
370
390
|
// flagged and replaced with the genuine glyphs (add, close, arrow_forward,
|
|
371
|
-
// attach_file, image, videocam, content_cut, music_note).
|
|
391
|
+
// attach_file, image, videocam, content_cut, music_note, volume_up).
|
|
372
392
|
//
|
|
373
393
|
// `OptimizeIcon` is the one exception, still traced exactly from the real
|
|
374
394
|
// exported design asset ("Optimize_icon") — not a Material Symbol at all, this is CHAI's own "prompt
|
|
@@ -415,7 +435,10 @@ function VideocamIcon() {
|
|
|
415
435
|
function ContentCutIcon() {
|
|
416
436
|
return (_jsx("svg", { viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M782-114 481-415 364-298q11 17 13.5 33t2.5 35q0 64-43 107T230-80q-64 0-107-43T80-230q0-64 43-107t107-43q18 0 35.5 5t36.5 15l116-116-118-118q-17 8-34.5 11t-35.5 3q-64 0-107-43T80-730q0-64 43-107t107-43q64 0 107 43t43 107q0 19-2.5 36T367-662l514 514v34h-99ZM599-527l-66-66 249-249h99v33L599-527ZM294-666q26-26 26-64t-26-64q-26-26-64-26t-64 26q-26 26-26 64t26 64q26 26 64 26t64-26Zm202.5 203.5Q502-468 502-476t-5.5-13.5Q491-495 483-495t-13.5 5.5Q464-484 464-476t5.5 13.5Q475-457 483-457t13.5-5.5ZM294-166q26-26 26-64t-26-64q-26-26-64-26t-64 26q-26 26-26 64t26 64q26 26 64 26t64-26Z", fill: "currentColor" }) }));
|
|
417
437
|
}
|
|
418
|
-
function
|
|
438
|
+
function MusicNoteIcon() {
|
|
419
439
|
return (_jsx("svg", { viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M286.5-163.5Q243-207 243-270t43.5-106.5Q330-420 393-420q28 0 50.5 8t39.5 22v-450h234v135H543v435q0 63-43.5 106.5T393-120q-63 0-106.5-43.5Z", fill: "currentColor" }) }));
|
|
420
440
|
}
|
|
441
|
+
function VolumeUpIcon() {
|
|
442
|
+
return (_jsx("svg", { viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M560-131v-62q97-28 158.5-107.5T780-481q0-101-61-181T560-769v-62q124 28 202 125.5T840-481q0 127-78 224.5T560-131ZM120-360v-240h160l200-200v640L280-360H120Zm420 48v-337q55 17 87.5 64T660-480q0 57-33 104t-87 64ZM420-648 307-540H180v120h127l113 109v-337Zm-94 168Z", fill: "currentColor" }) }));
|
|
443
|
+
}
|
|
421
444
|
//# sourceMappingURL=Composer.js.map
|
package/dist/Composer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAoB,MAAM,OAAO,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC1B,WAAW,EACX,aAAa,GAId,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EACL,mBAAmB,EACnB,aAAa,GAOd,MAAM,eAAe,CAAC;AAEvB,6GAA6G;AAC7G,MAAM,YAAY,GAAG,eAAe,CAAC;IACnC,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;CAC7B,CAAC,CAAC;AAiKH;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,GAAG,EAAE,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,OAAO,GAAG,IAAI,EACd,cAAc,EACd,cAAc,GAAG,aAAa,EAC9B,mBAAmB,GAAG,KAAK,EAC3B,QAAQ,GAAG,EAAE,EACb,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAAG,KAAK,EACzB,QAAQ,GAAG,EAAE,EACb,gBAAgB,EAChB,MAAM,EACN,OAAO,GAAG,IAAI,EACd,aAAa,EACb,eAAe,GAAG,KAAK,EACvB,oBAAoB,GAAG,KAAK,EAC5B,uBAAuB,EACvB,YAAY,EACZ,WAAW,GAAG,IAAI,EAClB,mBAAmB,EACnB,SAAS,EACT,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,EAAE,EACd,iBAAiB,EACjB,SAAS,GAAG,IAAI,EAChB,iBAAiB,EACjB,QAAQ,EACR,WAAW,GAAG,IAAI,EAClB,cAAc,EACd,UAAU,GAAG,KAAK,EAClB,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,GAAG,EAAE,EACZ,eAAe,EACf,UAAU,EACV,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,KAAK,GACS;IACd,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,KAAK;QACL,WAAW;QACX,WAAW;QACX,OAAO;QACP,cAAc;QACd,mBAAmB;QACnB,QAAQ;QACR,YAAY;QACZ,iBAAiB;QACjB,QAAQ;QACR,MAAM;QACN,OAAO;QACP,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,YAAY;QACZ,WAAW;QACX,SAAS;QACT,SAAS;QACT,WAAW;QACX,cAAc;QACd,UAAU;QACV,OAAO;QACP,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAE9H,SAAS,WAAW,CAAC,EAAU;QAC7B,IAAI,CAAC,UAAU;YAAE,OAAO,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,gBAAgB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,qEAAqE;IACrE,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,cAAc,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO;QACvD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QACzC,IAAI,eAAe,IAAI,oBAAoB;YAAE,uBAAuB,EAAE,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAEtF,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,eAAe,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,UAAU;gBAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;;gBAClC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,aAAa,CAAC,OAAO,GAAG,eAAe,CAAC;IAC1C,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnE,yEAAyE;IACzE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAsB,QAAQ,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,CAAC,KAA0B,EAAE,EAAE,CAClD,SAAS;QACT,CAAC,CAAC,OAAe,EAAE,EAAE;YACnB,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IAEL,qEAAqE;IACrE,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QAC1C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,mBAAmB,CAAC,QAAyB;QAC1D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACvE,iFAAiF;QACjF,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,4BAA4B,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9G,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,IAAI;YAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,qEAAqE;IACrE,MAAM,SAAS,GAAG,uBAAuB,CAAC,iBAAiB,EAAE;QAC3D,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC;QACzC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC;KACvC,CAAC,CAAC;IAEH,SAAS,sBAAsB,CAAC,EAAU;QACxC,mBAAmB,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,aACrF,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CACzB,cAAK,SAAS,EAAC,2BAA2B,YACvC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,iBAAiB,IAEhB,UAAU,EAAE,CAAC,EACb,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAFzE,CAAC,CAAC,EAAE,CAGT,CACH,CAAC,GACE,CACP,EAEA,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,aAAI,SAAS,EAAC,wBAAwB,gBAAY,cAAc,YAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,uBACE,KAAC,UAAU,IACT,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACnG,QAAQ,EAAE,QAAQ,GAClB,IALK,CAAC,CAAC,EAAE,CAMR,CACN,CAAC,GACC,CACN,EAEA,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAClD,KAAC,aAAa,IAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,GAAI,CAChF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,eAAK,SAAS,EAAC,6BAA6B,aAC1C,KAAC,WAAW,IACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,OAAO,EAAC,aAAa,EACrB,IAAI,EAAC,YAAY,EACjB,IAAI,EAAE,IAAI,CAAC,eAAe,EAC1B,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,EACtC,SAAS,EAAE,SAAS,IAAI,cAAc,KAAK,aAAa,EACxD,QAAQ,EAAE,QAAQ,GAClB,EACD,iBAAiB,IAAI,CACpB,KAAC,WAAW,IACV,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,IAAI,CAAC,oBAAoB,EACtC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,YAAY,EACjB,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,EACpC,SAAS,EAAE,SAAS,IAAI,cAAc,KAAK,WAAW,EACtD,QAAQ,EAAE,QAAQ,GAClB,CACH,IACG,CACP,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,EACjC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,CACH,EAEA,WAAW,IAAI,CACd,aAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,OAAO,aAC9C,KAAC,SAAS,KAAG,EACZ,WAAW,IACV,CACL,EAEA,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,CAC/C,aAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,OAAO,aAC9C,KAAC,SAAS,KAAG,EACZ,KAAK,CAAC,KAAK,CAAC,KAAK,IAChB,CACL,EAED,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,+BAA+B,aAC3C,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,KAAC,kBAAkB,IACjB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,eAAe,EAAE,mBAAmB,EACpC,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,QAAQ,GAClB,CACH,EAEA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,WAAW,IAEV,OAAO,EAAE,CAAC,EACV,QAAQ,EACN,mBAAmB;oCACjB,CAAC,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oCACzF,CAAC,CAAC,cAAc,EAEpB,QAAQ,EAAE,QAAQ,IAPb,CAAC,CAAC,IAAI,CAQX,CACH,CAAC,EAQD,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAChD,KAAC,UAAU,OACL,CAAC,mBAAmB;oCACtB,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;oCAClF,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,EAC3C,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAC5C,QAAQ,EAAE,UAAU,EACpB,YAAY,EACV,oBAAoB;oCAClB,CAAC,CAAC;wCACE,KAAK,EAAE,mBAAmB;wCAC1B,KAAK,EAAE,eAAe;wCACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;qCAC9C;oCACH,CAAC,CAAC,SAAS,EAEf,YAAY,EAAE,IAAI,CAAC,iBAAiB,EACpC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EACxD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EACtC,UAAU,EAAE,KAAK,EACjB,cAAc,EAAC,MAAM,EACrB,QAAQ,EAAE,QAAQ,IAAI,CAAC,eAAe,IAAI,CAAC,oBAAoB,CAAC,EAChE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAClD,CACH,EAEA,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,IAAI,CAC1E,KAAC,UAAU,IACT,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EACpE,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,cAAc,EAC1D,SAAS,EAAC,cAAc,EACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAChD,UAAU,EAAE,KAAK,EACjB,cAAc,EAAC,MAAM,EACrB,QAAQ,EAAE,QAAQ,GAClB,CACH,EAEA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,IAAI,CACxD,KAAC,UAAU,IACT,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAChF,KAAK,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC3E,YAAY,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,KAAK,EAC1F,SAAS,EAAC,YAAY,EACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EACpD,UAAU,EAAE,KAAK,EACjB,cAAc,EAAC,MAAM,EACrB,QAAQ,EAAE,QAAQ,GAClB,CACH,IACG,EAsCN,eAAK,SAAS,EAAC,6BAA6B,aAC3C,UAAU,IAAI,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAG/D,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,IAAI,CACnG,KAAC,YAAY,IACX,SAAS,EAAC,uBAAuB,EACjC,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,EAAE,gBACI,QAAQ,IAAI,CAAC,gBAAgB,IAAI,SAAS,gBAC1C,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,eAClC,QAAQ,IAAI,SAAS,KAM3B;oCACH,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;oCAC/D,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;iCACjE,EAC7B,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,QAAQ;wCAAE,OAAO,EAAE,EAAE,CAAC;yCACrB,IAAI,CAAC,gBAAgB,IAAI,CAAC,UAAU;wCAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gCACtE,CAAC,YAED,eAAM,IAAI,EAAC,MAAM,YACd,QAAQ,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAC,WAAW,KAAG,CAAC,CAAC,CAAC,KAAC,gBAAgB,KAAG,GAC1E,GACM,CACd,IACK,IACF,IACF,CACP,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,SAAS,QAAQ,CAAC,MAAoC,EAAE,YAAoC;IAC1F,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC5B,gBAAgB,CACd,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,EAC7D,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAC5C,CACF,CAAC;IACF,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpF,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAA2C;IACnF,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IACnG,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,iBAAa,MAAM,aACzD,cAAK,SAAS,EAAC,8BAA8B,YAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,eAAc,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,IAA7F,CAAC,CAAgG,CAC7G,CAAC,GACE,EACN,eAAM,SAAS,EAAC,8BAA8B,YAAE,kBAAkB,CAAC,SAAS,CAAC,GAAQ,IACjF,CACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAA6D;IACjG,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;IAC/B,MAAM,KAAK,GACT,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACtI,SAAS,WAAW;QAClB,IAAI,MAAM,KAAK,WAAW;YAAE,KAAK,CAAC,IAAI,EAAE,CAAC;aACpC,IAAI,MAAM,KAAK,cAAc;YAAE,KAAK,CAAC,MAAM,EAAE,CAAC;aAC9C,CAAC;YACJ,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,iBAAc,MAAM,aACvD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW;wBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBACnE,CAAC,EACD,QAAQ,EAAE,QAAQ,gBACN,KAAK,EACjB,KAAK,EAAE,KAAK,YAEX,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,CAC3B,eAAM,SAAS,EAAC,8BAA8B,iBAAa,MAAM,GAAG,CACrE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAC3B,KAAC,QAAQ,KAAG,CACb,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,KAAG,CACZ,GACM,EAET,eAAM,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,QAAQ,YACjD,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAClF,IACH,CACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,GAcT;IACC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,GAAG,EAAE,OAAO,CAAC;IAE5B,mEAAmE;IACnE,mEAAmE;IACnE,oEAAoE;IACpE,sEAAsE;IACtE,uBAAuB;IACvB,MAAM,WAAW,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACtD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,IAAI,CAAC;IAC3C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,uEAAuE;IACvE,yEAAyE;IACzE,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExD,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,aAAa,IAAI,CAAC,SAAS,IAAI,aAAa,IAAI,IAAI,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YACpF,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,gEAAgE;YAChE,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,aAAa,GACjB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;YACnG,IAAI,KAAK,CAAC,MAAM,IAAI,0BAA0B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjE,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACrB,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,IAAI,IAAI;YAAE,OAAO;QAClC,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,GAAW,CAAC;QAChB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACvE,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,IAAI,GAAG,KAAK;gBAAE,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;;gBAC/C,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,aAAa,IAAI,IAAI,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,aAAa,IAAI,IAAI,IAAI,KAAK,KAAK,aAAa,CAAC;IAClF,MAAM,WAAW,GAAG,SAAS,IAAI,SAAS,CAAC;IAE3C,SAAS,mBAAmB;QAC1B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,aAAa,CAAC;YAC/B,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,QAAQ,IAAI,IAAI;gBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,oDAAoD;QAC7E,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;IACrE,MAAM,YAAY,GAAG,GAAG,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtF;;;;;;sCAMkC;IAClC,MAAM,QAAQ,GAAG,SAAS,IAAI,CAC5B,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,0BAA0B,WAAW,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,EAAE,EAC5F,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,gBAC7D,YAAY,EACxB,KAAK,EAAE,YAAY,YAElB,UAAU,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,CAAC,CAAC,CAAC,KAAC,YAAY,KAAG,GACtC,CACV,CAAC;IAEF,MAAM,KAAK,GAAG,CACZ,eAAK,SAAS,EAAE,uBAAuB,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,EAAE,aACpF,mBACE,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,2CAA2C,SAAS,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,EAAE,EAC3G,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,WAAW,EAAE,WAAW,gBACZ,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,sBACtC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,QAAQ,IAAI,SAAS,GAC/B,EAOD,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,2CAA2C,iBAAa,MAAM,YAC3E,eAAM,SAAS,EAAC,4BAA4B,YAAE,aAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAQ,GACzF,CACP,EACA,CAAC,OAAO,IAAI,QAAQ,IACjB,CACP,CAAC;IAEF,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aACzC,eAAK,SAAS,EAAC,iCAAiC,aAC9C,iBAAO,OAAO,EAAE,EAAE,EAAE,SAAS,EAAC,kCAAkC,aAC9D,2BAAS,OAAO,GAAU,OAAE,IAAI,IAC1B,EACP,QAAQ,IACL,EACL,KAAK,EACL,IAAI,IAAI,CACP,YAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,2BAA2B,YACjD,IAAI,GACH,CACL,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAsD;IAC3E,WAAW,EAAE,KAAC,cAAc,KAAG;IAC/B,cAAc,EAAE,KAAC,SAAS,KAAG;IAC7B,cAAc,EAAE,KAAC,YAAY,KAAG;IAChC,cAAc,EAAE,KAAC,SAAS,KAAG;IAC7B,YAAY,EAAE,KAAC,cAAc,KAAG;CACjC,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,eAAe,EACf,UAAU,EACV,QAAQ,GAQT;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,SAAS,iBAAiB,CAAC,CAAe;YACxC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC;QACD,SAAS,aAAa,CAAC,CAAgB;YACrC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC5D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAC/D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,eAAe,CAAC,MAAgC;QACvD,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,MAAM,KAAK,WAAW;YAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtD,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,EAAC,GAAG,EAAE,OAAO,aACjD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,+BAA+B,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7F,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,QAAQ,EAAE,QAAQ,mBACH,IAAI,mBACL,MAAM,gBACR,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,YAEnD,IAAI,CAAC,CAAC,CAAC,KAAC,eAAe,KAAG,CAAC,CAAC,CAAC,KAAC,OAAO,KAAG,GAClC,EAER,IAAI,IAAI,CACP,aAAI,SAAS,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,YACnD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,cAAsB,IAAI,EAAC,MAAM,aAC/B,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,iCAAiC,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAE3C,eAAM,SAAS,EAAC,iCAAiC,YAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAQ,EACxF,IAAI,CAAC,KAAK,IACJ,EACR,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,aAAI,SAAS,EAAC,oCAAoC,EAAC,IAAI,EAAC,WAAW,GAAG,KAVxG,IAAI,CAAC,MAAM,CAWf,CACN,CAAC,GACC,CACN,EAED,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,EAC1D,QAAQ,EAAE,CAAC,UAAU,EACrB,MAAM,QACN,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAgC,EAAE,EAAE;oBAC7C,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtB,CAAC,GACD,IACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAA6D;IAC5G,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,aAClC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC7B,cAAK,SAAS,EAAC,0BAA0B,EAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAC,EAAE,GAAG,CACzE,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,2BAA2B,YAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAQ,CAC/E,EACA,QAAQ,IAAI,CACX,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,6BAA6B,EAAC,OAAO,EAAE,QAAQ,gBAAa,mBAAmB,YAC7G,KAAC,eAAe,KAAG,GACZ,CACV,IACG,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,WAAW,CAAC,EACnB,OAAO,EACP,QAAQ,EACR,QAAQ,GAKT;IACC,OAAO,CACL,gBAAM,SAAS,EAAC,qBAAqB,aAClC,OAAO,CAAC,KAAK,EACb,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,QAAQ,gBACN,UAAU,OAAO,CAAC,KAAK,EAAE,YAErC,KAAC,eAAe,KAAG,GACZ,CACV,IACI,CACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAClB,MAAM,EACN,QAAQ,EACR,QAAQ,GAKT;IACC,MAAM,IAAI,GAAG,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;IACvC,OAAO,CACL,gBACE,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,EAAE,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAyB,aAEnF,eAAM,SAAS,EAAC,6BAA6B,iBAAa,MAAM,YAC7D,MAAM,CAAC,MAAM,GACT,EACN,IAAI,EACJ,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,QAAQ,gBACN,UAAU,IAAI,EAAE,YAE5B,KAAC,eAAe,KAAG,GACZ,CACV,IACI,CACR,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAe;IAC/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,KAAC,YAAY,KAAG,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,KAAC,SAAS,KAAG,CAAC;QACvB;YACE,OAAO,KAAC,SAAS,KAAG,CAAC;IACzB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,uEAAuE;AACvE,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,qCAAqC;AACrC,yEAAyE;AACzE,2EAA2E;AAC3E,8DAA8D;AAC9D,oEAAoE;AACpE,2EAA2E;AAC3E,0DAA0D;AAC1D,EAAE;AACF,0EAA0E;AAC1E,qGAAqG;AACrG,0EAA0E;AAC1E,iEAAiE;AACjE,2DAA2D;AAC3D,0EAA0E;AAC1E,0EAA0E;AAE1E,6DAA6D;AAC7D,SAAS,WAAW;IAClB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,qOAAqO,EACvO,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,SAAS,SAAS;IAChB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,2iBAA2iB,EAC7iB,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,CACL,eAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aACrD,eACE,CAAC,EAAC,yaAAya,EAC3a,IAAI,EAAC,cAAc,GACnB,EACF,eAAM,CAAC,EAAC,iGAAiG,EAAC,IAAI,EAAC,cAAc,GAAG,EAChI,eAAM,CAAC,EAAC,yFAAyF,EAAC,IAAI,EAAC,cAAc,GAAG,IACpH,CACP,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,0EAA0E;AAC1E,sEAAsE;AACtE,iEAAiE;AACjE,SAAS,QAAQ;IACf,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,uKAAuK,EACzK,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,iYAAiY,EACnY,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,wCAAwC;AACxC,SAAS,OAAO;IACd,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,waAAwa,EAC1a,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,SAAS,SAAS;IAChB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,ijBAAijB,EACnjB,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,sLAAsL,EACxL,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,gKAAgK,EAClK,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,okBAAokB,EACtkB,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CACL,cAAK,OAAO,EAAC,gBAAgB,iBAAa,MAAM,YAC9C,eACE,CAAC,EAAC,4IAA4I,EAC9I,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,6 @@ export * from "./EditCard.js";
|
|
|
6
6
|
export * from "./useComposer.js";
|
|
7
7
|
export * from "./ChaiProvider.js";
|
|
8
8
|
export * from "./useMediaAnalyzer.js";
|
|
9
|
-
export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, checkSuggestedModels, } from "@chai-ui/core";
|
|
10
|
-
export type { DroppedMedia, EditRegion, Evaluation, GenerationEngine, GenerationUseCase, MediaAnalysisKind, MediaAnalysisPromptLength, MediaKind, ModelOption, OutputKind, Transcribe, VoiceClip, VoiceInputConfig, ParameterOption, RegionBox, RegionFormat, Request, Result, ResultStatus, Run, SuggestedModelProblem, SuggestedModelsCheck, FalInputFormat, Usage, } from "@chai-ui/core";
|
|
9
|
+
export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, promptWithGenres, checkSuggestedModels, } from "@chai-ui/core";
|
|
10
|
+
export type { DroppedMedia, EditRegion, Evaluation, GenerationEngine, GenerationUseCase, MediaAnalysisKind, MediaAnalysisPromptLength, MediaKind, MenuPlacement, ModelOption, OutputKind, Transcribe, VoiceClip, VoiceInputConfig, VoiceOption, ParameterOption, RegionBox, RegionFormat, Request, Result, ResultStatus, Run, SuggestedModelProblem, SuggestedModelsCheck, FalInputFormat, Usage, } from "@chai-ui/core";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,YAAY,EACZ,GAAG,EACH,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,KAAK,GACN,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,YAAY,EACZ,GAAG,EACH,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,KAAK,GACN,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,5 +8,5 @@ export * from "./ChaiProvider.js";
|
|
|
8
8
|
export * from "./useMediaAnalyzer.js";
|
|
9
9
|
// Re-export the core engines and types so a consumer typically only needs
|
|
10
10
|
// to import from @chai-ui/react.
|
|
11
|
-
export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, checkSuggestedModels, } from "@chai-ui/core";
|
|
11
|
+
export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, promptWithGenres, checkSuggestedModels, } from "@chai-ui/core";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,0EAA0E;AAC1E,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,0EAA0E;AAC1E,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { type MenuPlacement } from "@chai-ui/core";
|
|
2
3
|
export interface SearchMenuOption {
|
|
3
4
|
id: string;
|
|
4
5
|
/** Shown on the trigger once this option is selected, and used for search-filtering. Keep this the short/canonical name. */
|
|
@@ -53,6 +54,8 @@ interface SearchMenuProps<T extends SearchMenuOption> {
|
|
|
53
54
|
triggerVariant?: "outlined" | "text";
|
|
54
55
|
/** Panel width in px (default 280) — widen for a menu whose option labels run long; anything still too long past that ellipsizes rather than wrapping or overflowing. */
|
|
55
56
|
panelWidth?: number;
|
|
57
|
+
/** Which way the panel opens: `"auto"` (default) below when it fits, else above when that fits, else toward the side with more room. */
|
|
58
|
+
placement?: MenuPlacement;
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
61
|
* The searchable menu-button pattern behind every Model/option menu
|
|
@@ -64,6 +67,6 @@ interface SearchMenuProps<T extends SearchMenuOption> {
|
|
|
64
67
|
* positioning model — same reasoning SegmentedButton documents for why it
|
|
65
68
|
* isn't a `@material/web` custom element either.
|
|
66
69
|
*/
|
|
67
|
-
export declare function SearchMenu<T extends SearchMenuOption>({ options, sections, toggleHeader, value, multiple, triggerLabel, menuLabel, onSelect, disabled, searchable, triggerVariant, panelWidth, }: SearchMenuProps<T>): React.JSX.Element;
|
|
70
|
+
export declare function SearchMenu<T extends SearchMenuOption>({ options, sections, toggleHeader, value, multiple, triggerLabel, menuLabel, onSelect, disabled, searchable, triggerVariant, panelWidth, placement, }: SearchMenuProps<T>): React.JSX.Element;
|
|
68
71
|
export {};
|
|
69
72
|
//# sourceMappingURL=SearchMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchMenu.d.ts","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchMenu.d.ts","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAuBnE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,4HAA4H;IAC5H,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uLAAuL;AACvL,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,gBAAgB;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,EAAE,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,UAAU,eAAe,CAAC,CAAC,SAAS,gBAAgB;IAClD,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,iKAAiK;IACjK,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,uGAAuG;IACvG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,0PAA0P;IAC1P,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mLAAmL;IACnL,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uKAAuK;IACvK,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACrC,yKAAyK;IACzK,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wIAAwI;IACxI,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,gBAAgB,EAAE,EACrD,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,QAAgB,EAChB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAiB,EACjB,cAA2B,EAC3B,UAAgB,EAChB,SAAkB,GACnB,EAAE,eAAe,CAAC,CAAC,CAAC,qBAmLpB"}
|
|
@@ -6,6 +6,7 @@ import { MdOutlinedTextField } from "@material/web/textfield/outlined-text-field
|
|
|
6
6
|
import { MdCheckbox } from "@material/web/checkbox/checkbox.js";
|
|
7
7
|
import { Toggle } from "./Toggle.js";
|
|
8
8
|
import { CheckIcon } from "../icons.js";
|
|
9
|
+
import { menuOpensAbove } from "@chai-ui/core";
|
|
9
10
|
const MdOutlinedTextFieldElement = createComponent({
|
|
10
11
|
react: React,
|
|
11
12
|
tagName: "md-outlined-text-field",
|
|
@@ -35,8 +36,9 @@ const MdCheckboxElement = createComponent({
|
|
|
35
36
|
* positioning model — same reasoning SegmentedButton documents for why it
|
|
36
37
|
* isn't a `@material/web` custom element either.
|
|
37
38
|
*/
|
|
38
|
-
export function SearchMenu({ options, sections, toggleHeader, value, multiple = false, triggerLabel, menuLabel, onSelect, disabled, searchable = true, triggerVariant = "outlined", panelWidth = 280, }) {
|
|
39
|
+
export function SearchMenu({ options, sections, toggleHeader, value, multiple = false, triggerLabel, menuLabel, onSelect, disabled, searchable = true, triggerVariant = "outlined", panelWidth = 280, placement = "auto", }) {
|
|
39
40
|
const [open, setOpen] = useState(false);
|
|
41
|
+
const [above, setAbove] = useState(false);
|
|
40
42
|
const [search, setSearch] = useState("");
|
|
41
43
|
// Closing also clears the search, so the menu reopens on the full list.
|
|
42
44
|
const close = useCallback(() => {
|
|
@@ -57,7 +59,10 @@ export function SearchMenu({ options, sections, toggleHeader, value, multiple =
|
|
|
57
59
|
const over = rect.right - (document.documentElement.clientWidth - 16);
|
|
58
60
|
if (over > 0)
|
|
59
61
|
panel.style.left = `${-Math.min(over, Math.max(0, rect.left - 16))}px`;
|
|
60
|
-
|
|
62
|
+
// Up or down, before the first paint, so it never flashes on the wrong side.
|
|
63
|
+
const trigger = rootRef.current.getBoundingClientRect();
|
|
64
|
+
setAbove(menuOpensAbove(placement, trigger, panel.offsetHeight, document.documentElement.clientHeight));
|
|
65
|
+
}, [open, placement]);
|
|
61
66
|
useEffect(() => {
|
|
62
67
|
if (!open)
|
|
63
68
|
return;
|
|
@@ -90,7 +95,7 @@ export function SearchMenu({ options, sections, toggleHeader, value, multiple =
|
|
|
90
95
|
}, [options, sections, search]);
|
|
91
96
|
const hasAnyOption = groups.some((g) => g.options.length > 0);
|
|
92
97
|
const isSelected = (id) => (Array.isArray(value) ? value.includes(id) : id === value);
|
|
93
|
-
return (_jsxs("div", { className: "chai-search-menu", ref: rootRef, children: [_jsxs("button", { type: "button", className: `${triggerVariant === "outlined" ? "chai-btn chai-btn--outlined" : "chai-search-menu__trigger--text"} chai-search-menu__trigger${open ? " chai-search-menu__trigger--open" : ""}`, disabled: disabled, "aria-expanded": open, onClick: () => (open ? close() : setOpen(true)), children: [_jsx("span", { className: "chai-search-menu__trigger-label", title: triggerLabel, children: triggerLabel }), _jsx("svg", { className: `chai-search-menu__chevron${open ? " chai-search-menu__chevron--open" : ""}`, viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z", fill: "currentColor" }) })] }), open && (_jsxs("div", { ref: panelRef, className: "chai-search-menu__panel"
|
|
98
|
+
return (_jsxs("div", { className: "chai-search-menu", ref: rootRef, children: [_jsxs("button", { type: "button", className: `${triggerVariant === "outlined" ? "chai-btn chai-btn--outlined" : "chai-search-menu__trigger--text"} chai-search-menu__trigger${open ? " chai-search-menu__trigger--open" : ""}`, disabled: disabled, "aria-expanded": open, onClick: () => (open ? close() : setOpen(true)), children: [_jsx("span", { className: "chai-search-menu__trigger-label", title: triggerLabel, children: triggerLabel }), _jsx("svg", { className: `chai-search-menu__chevron${open ? " chai-search-menu__chevron--open" : ""}`, viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z", fill: "currentColor" }) })] }), open && (_jsxs("div", { ref: panelRef, className: `chai-search-menu__panel${above ? " chai-search-menu__panel--above" : ""}`, role: "group", "aria-label": menuLabel, style: { width: panelWidth }, children: [toggleHeader && (_jsxs("div", { className: "chai-search-menu__toggle-header", children: [_jsx("span", { className: "chai-search-menu__toggle-header-label", children: menuLabel }), _jsxs("span", { className: "chai-search-menu__toggle-header-row", children: [_jsx("span", { className: "chai-search-menu__toggle-header-text", children: toggleHeader.label }), _jsx(Toggle, { value: toggleHeader.value, onChange: toggleHeader.onChange, ariaLabel: toggleHeader.label })] })] })), searchable && (_jsxs(MdOutlinedTextFieldElement, { className: "chai-search-menu__search", label: menuLabel, placeholder: "Search", value: search, onInput: (e) => setSearch(e.target.value), children: [_jsx("span", { slot: "leading-icon", className: "chai-search-menu__search-icon", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "11", cy: "11", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m20 20-3.6-3.6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }), search && (_jsx("button", { type: "button", slot: "trailing-icon", className: "chai-search-menu__clear", "aria-label": "Clear search", onClick: () => setSearch(""), children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m9 9 6 6m0-6-6 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }))] })), _jsxs("ul", { className: "chai-search-menu__list", children: [groups.map((group, i) => (_jsxs("li", { children: [group.label && _jsx("p", { className: "chai-search-menu__section-label", children: group.label }), _jsx("ul", { className: "chai-search-menu__section-list", "aria-label": group.label || undefined, children: group.options.map((o) => (_jsx("li", { children: _jsxs("button", { type: "button", "aria-pressed": isSelected(o.id), disabled: toggleHeader?.value, className: `chai-search-menu__option${!multiple && isSelected(o.id) ? " chai-search-menu__option--selected" : ""}`, onClick: () => {
|
|
94
99
|
onSelect(o);
|
|
95
100
|
if (!multiple)
|
|
96
101
|
close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchMenu.js","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchMenu.js","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -209,8 +209,17 @@
|
|
|
209
209
|
gap: var(--chai-space-2);
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
/* Opens upward: `placement="above"`, or `"auto"` with no room below. */
|
|
213
|
+
.chai-search-menu__panel--above {
|
|
214
|
+
top: auto;
|
|
215
|
+
bottom: calc(100% + 8px);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* 44px tall, not Material's 56px: the field sits inside a compact menu. */
|
|
212
219
|
.chai-search-menu__search {
|
|
213
220
|
width: 100%;
|
|
221
|
+
--md-outlined-text-field-top-space: 10px;
|
|
222
|
+
--md-outlined-text-field-bottom-space: 10px;
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
.chai-search-menu__search-icon {
|
|
@@ -249,9 +258,13 @@
|
|
|
249
258
|
border: none;
|
|
250
259
|
border-radius: var(--chai-radius-sm);
|
|
251
260
|
background: transparent;
|
|
252
|
-
|
|
261
|
+
/* The same grey and 14px label type as the menu triggers and the rest
|
|
262
|
+
of the controls: 40px rows, the attach menu's density. */
|
|
263
|
+
color: var(--chai-color-semantic-control-text);
|
|
253
264
|
font-family: var(--chai-type-family-material);
|
|
254
|
-
font-size: var(--chai-type-size-
|
|
265
|
+
font-size: var(--chai-type-size-label-large);
|
|
266
|
+
line-height: var(--chai-type-leading-label-large);
|
|
267
|
+
letter-spacing: var(--chai-type-tracking-label-large);
|
|
255
268
|
text-align: left;
|
|
256
269
|
cursor: pointer;
|
|
257
270
|
}
|
|
@@ -296,6 +309,9 @@
|
|
|
296
309
|
.chai-search-menu__checkbox {
|
|
297
310
|
flex: none;
|
|
298
311
|
pointer-events: none;
|
|
312
|
+
/* 16px, not MD3's 18px, beside 14px labels. */
|
|
313
|
+
--md-checkbox-container-size: 16px;
|
|
314
|
+
--md-checkbox-icon-size: 16px;
|
|
299
315
|
}
|
|
300
316
|
|
|
301
317
|
.chai-search-menu__option svg {
|
|
@@ -339,11 +355,13 @@
|
|
|
339
355
|
gap: var(--chai-space-3);
|
|
340
356
|
}
|
|
341
357
|
|
|
358
|
+
/* The menu triggers' type: 14px medium, the controls' grey. */
|
|
342
359
|
.chai-search-menu__toggle-header-text {
|
|
343
360
|
font-family: var(--chai-type-family-material);
|
|
344
|
-
font-size: var(--chai-type-size-
|
|
361
|
+
font-size: var(--chai-type-size-label-large);
|
|
345
362
|
font-weight: var(--chai-type-weight-material-medium);
|
|
346
|
-
|
|
363
|
+
letter-spacing: var(--chai-type-tracking-label-large);
|
|
364
|
+
color: var(--chai-color-semantic-control-text);
|
|
347
365
|
}
|
|
348
366
|
|
|
349
367
|
.chai-search-menu__empty {
|
|
@@ -870,18 +888,26 @@
|
|
|
870
888
|
position: relative;
|
|
871
889
|
}
|
|
872
890
|
|
|
891
|
+
/* A 40px rounded square, the size of the mic button's target, with
|
|
892
|
+
-8px margins so the 24px icon and the row's layout stay where they were. */
|
|
873
893
|
.chai-composer__attach-toggle {
|
|
874
894
|
display: flex;
|
|
875
895
|
align-items: center;
|
|
876
896
|
justify-content: center;
|
|
877
|
-
width:
|
|
878
|
-
height:
|
|
897
|
+
width: 40px;
|
|
898
|
+
height: 40px;
|
|
899
|
+
margin: -8px;
|
|
879
900
|
padding: 0;
|
|
880
901
|
border: none;
|
|
881
|
-
border-radius: var(--chai-radius-
|
|
902
|
+
border-radius: var(--chai-radius-sm);
|
|
882
903
|
background: transparent;
|
|
883
904
|
color: var(--chai-composer-text);
|
|
884
905
|
cursor: pointer;
|
|
906
|
+
transition: background-color var(--chai-motion-duration-fast) var(--chai-motion-easing-standard);
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
.chai-composer__attach-toggle:hover:not(:disabled) {
|
|
910
|
+
background: var(--chai-composer-hover);
|
|
885
911
|
}
|
|
886
912
|
|
|
887
913
|
.chai-composer__attach-toggle svg {
|
|
@@ -901,7 +927,7 @@
|
|
|
901
927
|
.chai-composer__attach-menu {
|
|
902
928
|
position: absolute;
|
|
903
929
|
z-index: 10;
|
|
904
|
-
|
|
930
|
+
top: calc(100% + 8px);
|
|
905
931
|
left: 0;
|
|
906
932
|
min-width: 180px;
|
|
907
933
|
margin: 0;
|
|
@@ -912,12 +938,21 @@
|
|
|
912
938
|
box-shadow: var(--chai-shadow-menu);
|
|
913
939
|
}
|
|
914
940
|
|
|
941
|
+
/* Opens upward: `menuPlacement="above"`, or `"auto"` with no room below. */
|
|
942
|
+
.chai-composer__attach-menu--above {
|
|
943
|
+
top: auto;
|
|
944
|
+
bottom: calc(100% + 8px);
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
/* MD3 menu density -2: 40px items (48px at density 0, 4px less per step),
|
|
948
|
+
so the longer menu with the audio group stays compact. */
|
|
915
949
|
.chai-composer__attach-menu-item {
|
|
916
950
|
display: flex;
|
|
917
951
|
align-items: center;
|
|
918
952
|
gap: var(--chai-space-3);
|
|
919
953
|
width: 100%;
|
|
920
|
-
|
|
954
|
+
min-height: 40px;
|
|
955
|
+
padding: 0 var(--chai-space-4);
|
|
921
956
|
border: none;
|
|
922
957
|
background: transparent;
|
|
923
958
|
color: var(--chai-color-semantic-control-text-strong);
|
|
@@ -946,9 +981,9 @@
|
|
|
946
981
|
height: 100%;
|
|
947
982
|
}
|
|
948
983
|
|
|
949
|
-
/*
|
|
950
|
-
|
|
951
|
-
|
|
984
|
+
/* Between menu groups (see `COMPOSER_ATTACH_MENU_ITEMS`): under "Add media",
|
|
985
|
+
separating the real attach action from the visual use cases, and above
|
|
986
|
+
the audio use cases. */
|
|
952
987
|
.chai-composer__attach-menu-divider {
|
|
953
988
|
margin: var(--chai-space-2) 0;
|
|
954
989
|
border: none;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chai-ui/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Chai UI React components — smart, drop-in UI for AI apps: Composer, Media Analyzer, Result Card, and the useComposer hook.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "kazarazat",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"@fontsource/roboto": "^5.3.0",
|
|
50
50
|
"@lit/react": "^1.0.8",
|
|
51
51
|
"@material/web": "^2.5.0",
|
|
52
|
-
"@chai-ui/
|
|
53
|
-
"@chai-ui/
|
|
52
|
+
"@chai-ui/core": "0.11.0",
|
|
53
|
+
"@chai-ui/tokens": "0.11.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@material-symbols/svg-400": "^0.47.5",
|
package/src/Composer.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AddIcon, ArrowForwardIcon, CloseSymbolIcon, StopIcon } from "./icons.js";
|
|
2
|
-
import { useEffect, useId, useRef, useState, useSyncExternalStore, type ChangeEvent } from "react";
|
|
2
|
+
import { useEffect, useId, useLayoutEffect, useRef, useState, useSyncExternalStore, type ChangeEvent } from "react";
|
|
3
3
|
import { createComponent } from "@lit/react";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { MdFab } from "@material/web/fab/fab.js";
|
|
@@ -14,8 +14,10 @@ import {
|
|
|
14
14
|
MAX_ANIMATE_ENHANCE_LENGTH,
|
|
15
15
|
regionColor,
|
|
16
16
|
TEXT_USE_CASE,
|
|
17
|
+
menuOpensAbove,
|
|
17
18
|
type ComposerAttachMenuAction,
|
|
18
19
|
type ComposerPromptField,
|
|
20
|
+
type MenuPlacement,
|
|
19
21
|
type VoiceInputConfig,
|
|
20
22
|
} from "@chai-ui/core";
|
|
21
23
|
import { useLatest } from "./use-latest.js";
|
|
@@ -24,8 +26,11 @@ import { SearchMenu } from "./primitives/SearchMenu.js";
|
|
|
24
26
|
import type { ComposerAttachment, ComposerSubmitPayload, ComposerUseCase } from "@chai-ui/core";
|
|
25
27
|
|
|
26
28
|
export {
|
|
29
|
+
CREATE_MUSIC_USE_CASE,
|
|
30
|
+
CREATE_SPEECH_USE_CASE,
|
|
27
31
|
EDIT_IMAGE_USE_CASE,
|
|
28
32
|
TEXT_USE_CASE,
|
|
33
|
+
type AudioUseCase,
|
|
29
34
|
type ComposerAttachMenuAction,
|
|
30
35
|
type ComposerAttachment,
|
|
31
36
|
type ComposerPromptField,
|
|
@@ -62,7 +67,10 @@ export interface ComposerProps {
|
|
|
62
67
|
* Builder opt-in, off by default: several use cases at once (e.g. an image
|
|
63
68
|
* and a video from one prompt), at most one per kind. Uses `useCases`,
|
|
64
69
|
* `onUseCasesChange` and `modelsByKind` instead of `useCase` and `models`;
|
|
65
|
-
* the model menu shows one section per picked use case.
|
|
70
|
+
* the model menu shows one section per picked use case. Edit image and
|
|
71
|
+
* Create speech run alone: an edit works on one image, and speech's prompt
|
|
72
|
+
* is the words to say, which no other use case can share. Create music
|
|
73
|
+
* can join Image and Video.
|
|
66
74
|
*/
|
|
67
75
|
multiSelectUseCases?: boolean;
|
|
68
76
|
useCases?: ComposerUseCase[];
|
|
@@ -145,6 +153,20 @@ export interface ComposerProps {
|
|
|
145
153
|
/** A world's frame rate menu, from the selected models' `ModelOption.frameRates`. */
|
|
146
154
|
frameRate?: number | null;
|
|
147
155
|
onFrameRateChange?: (value: number) => void;
|
|
156
|
+
/** Create speech's Voice menu, from the one picked model's `ModelOption.voices`. Not `voiceInput`, which is dictation. */
|
|
157
|
+
speechVoice?: string | null;
|
|
158
|
+
onSpeechVoiceChange?: (value: string) => void;
|
|
159
|
+
/** Create music's Genre menu, several at once, from the picked models' `ModelOption.genres`. */
|
|
160
|
+
genres?: string[];
|
|
161
|
+
onGenresChange?: (values: string[]) => void;
|
|
162
|
+
/**
|
|
163
|
+
* Which way the bar's menus open (the + menu, Model, Aspect ratio and the
|
|
164
|
+
* rest). `"above"` for a bar docked to the bottom of the screen, `"below"`
|
|
165
|
+
* for one docked to the top. `"auto"` (default) measures when a menu opens:
|
|
166
|
+
* below if it fits, else above if that fits, else toward the side with
|
|
167
|
+
* more room.
|
|
168
|
+
*/
|
|
169
|
+
menuPlacement?: MenuPlacement;
|
|
148
170
|
/** Fires with everything Composer tracks — see `ComposerSubmitPayload`. Also what retry calls, with the same payload, when `submitError` is set. */
|
|
149
171
|
onSubmit: (payload: ComposerSubmitPayload) => void;
|
|
150
172
|
/**
|
|
@@ -244,6 +266,11 @@ export function Composer({
|
|
|
244
266
|
onCharacterChange,
|
|
245
267
|
frameRate = null,
|
|
246
268
|
onFrameRateChange,
|
|
269
|
+
speechVoice = null,
|
|
270
|
+
onSpeechVoiceChange,
|
|
271
|
+
genres = [],
|
|
272
|
+
onGenresChange,
|
|
273
|
+
menuPlacement = "auto",
|
|
247
274
|
onSubmit,
|
|
248
275
|
submitError = null,
|
|
249
276
|
submitDisabled,
|
|
@@ -278,6 +305,8 @@ export function Composer({
|
|
|
278
305
|
aspectRatio,
|
|
279
306
|
character,
|
|
280
307
|
frameRate,
|
|
308
|
+
speechVoice,
|
|
309
|
+
genres,
|
|
281
310
|
submitError,
|
|
282
311
|
submitDisabled,
|
|
283
312
|
submitting,
|
|
@@ -439,6 +468,7 @@ export function Composer({
|
|
|
439
468
|
onAddMediaFiles={handleFilesSelected}
|
|
440
469
|
imagesOnly={editing}
|
|
441
470
|
disabled={disabled}
|
|
471
|
+
placement={menuPlacement}
|
|
442
472
|
/>
|
|
443
473
|
)}
|
|
444
474
|
|
|
@@ -463,6 +493,7 @@ export function Composer({
|
|
|
463
493
|
itself while auto-select is on. */}
|
|
464
494
|
{modelSections.length > 0 && view.canPickModel && (
|
|
465
495
|
<SearchMenu
|
|
496
|
+
placement={menuPlacement}
|
|
466
497
|
{...(multiSelectUseCases
|
|
467
498
|
? { sections: modelSections.map((s) => ({ label: s.label, options: s.options })) }
|
|
468
499
|
: { options: modelSections[0]!.options })}
|
|
@@ -489,6 +520,7 @@ export function Composer({
|
|
|
489
520
|
|
|
490
521
|
{view.showAspectRatio && aspectOptions.length > 0 && onAspectRatioChange && (
|
|
491
522
|
<SearchMenu
|
|
523
|
+
placement={menuPlacement}
|
|
492
524
|
options={aspectOptions.map((o) => ({ id: o.value, label: o.label }))}
|
|
493
525
|
value={offeredAspect}
|
|
494
526
|
triggerLabel={view.selectedAspect?.label ?? "Aspect ratio"}
|
|
@@ -500,8 +532,45 @@ export function Composer({
|
|
|
500
532
|
/>
|
|
501
533
|
)}
|
|
502
534
|
|
|
535
|
+
{view.voiceOptions.length > 0 && onSpeechVoiceChange && (
|
|
536
|
+
<SearchMenu
|
|
537
|
+
placement={menuPlacement}
|
|
538
|
+
{...(view.voiceSections
|
|
539
|
+
? {
|
|
540
|
+
sections: view.voiceSections.map((s) => ({
|
|
541
|
+
label: s.label,
|
|
542
|
+
options: s.options.map((v) => ({ id: v.value, label: v.label })),
|
|
543
|
+
})),
|
|
544
|
+
}
|
|
545
|
+
: { options: view.voiceOptions.map((v) => ({ id: v.value, label: v.label })) })}
|
|
546
|
+
value={view.offeredVoice}
|
|
547
|
+
triggerLabel={view.voiceTriggerLabel}
|
|
548
|
+
menuLabel="Voice"
|
|
549
|
+
onSelect={(opt) => onSpeechVoiceChange(opt.id)}
|
|
550
|
+
searchable={view.voiceOptions.length > view.searchableAt}
|
|
551
|
+
triggerVariant="text"
|
|
552
|
+
disabled={disabled}
|
|
553
|
+
/>
|
|
554
|
+
)}
|
|
555
|
+
|
|
556
|
+
{view.genreOptions.length > 0 && onGenresChange && (
|
|
557
|
+
<SearchMenu
|
|
558
|
+
placement={menuPlacement}
|
|
559
|
+
options={view.genreOptions.map((g) => ({ id: g.value, label: g.label }))}
|
|
560
|
+
value={view.offeredGenres}
|
|
561
|
+
multiple
|
|
562
|
+
triggerLabel={view.genreTriggerLabel}
|
|
563
|
+
menuLabel="Genre"
|
|
564
|
+
onSelect={(opt) => onGenresChange(view.toggledGenres(opt.id))}
|
|
565
|
+
searchable={view.genreOptions.length > view.searchableAt}
|
|
566
|
+
triggerVariant="text"
|
|
567
|
+
disabled={disabled}
|
|
568
|
+
/>
|
|
569
|
+
)}
|
|
570
|
+
|
|
503
571
|
{view.frameRateOptions.length > 0 && onFrameRateChange && (
|
|
504
572
|
<SearchMenu
|
|
573
|
+
placement={menuPlacement}
|
|
505
574
|
options={view.frameRateOptions.map((r) => ({ id: String(r), label: `${r}fps` }))}
|
|
506
575
|
value={view.offeredFrameRate == null ? null : String(view.offeredFrameRate)}
|
|
507
576
|
triggerLabel={view.offeredFrameRate == null ? "Frame rate" : `${view.offeredFrameRate}fps`}
|
|
@@ -851,7 +920,9 @@ const ATTACH_MENU_ICONS: Record<ComposerAttachMenuAction, React.ReactNode> = {
|
|
|
851
920
|
"create-image": <ImageIcon />,
|
|
852
921
|
"create-video": <VideocamIcon />,
|
|
853
922
|
"create-world": <GlobeIcon />,
|
|
854
|
-
"edit-
|
|
923
|
+
"edit-image": <ContentCutIcon />,
|
|
924
|
+
"create-speech": <VolumeUpIcon />,
|
|
925
|
+
"create-music": <MusicNoteIcon />,
|
|
855
926
|
};
|
|
856
927
|
|
|
857
928
|
/**
|
|
@@ -867,6 +938,7 @@ function ComposerAttachMenu({
|
|
|
867
938
|
onAddMediaFiles,
|
|
868
939
|
imagesOnly,
|
|
869
940
|
disabled,
|
|
941
|
+
placement,
|
|
870
942
|
}: {
|
|
871
943
|
items: ReturnType<typeof composerAttachMenuItems>;
|
|
872
944
|
onSelect?: (action: ComposerAttachMenuAction) => void;
|
|
@@ -874,9 +946,19 @@ function ComposerAttachMenu({
|
|
|
874
946
|
/** Edit mode: one image file at a time. */
|
|
875
947
|
imagesOnly?: boolean;
|
|
876
948
|
disabled?: boolean;
|
|
949
|
+
placement: MenuPlacement;
|
|
877
950
|
}) {
|
|
878
951
|
const [open, setOpen] = useState(false);
|
|
952
|
+
const [above, setAbove] = useState(false);
|
|
879
953
|
const rootRef = useRef<HTMLDivElement>(null);
|
|
954
|
+
const menuRef = useRef<HTMLUListElement>(null);
|
|
955
|
+
|
|
956
|
+
// Up or down, before the first paint, so it never flashes on the wrong side.
|
|
957
|
+
useLayoutEffect(() => {
|
|
958
|
+
const menu = menuRef.current;
|
|
959
|
+
if (!open || !menu) return;
|
|
960
|
+
setAbove(menuOpensAbove(placement, rootRef.current!.getBoundingClientRect(), menu.offsetHeight, document.documentElement.clientHeight));
|
|
961
|
+
}, [open, placement]);
|
|
880
962
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
881
963
|
|
|
882
964
|
useEffect(() => {
|
|
@@ -916,7 +998,7 @@ function ComposerAttachMenu({
|
|
|
916
998
|
</button>
|
|
917
999
|
|
|
918
1000
|
{open && (
|
|
919
|
-
<ul className="chai-composer__attach-menu" role="menu">
|
|
1001
|
+
<ul ref={menuRef} className={`chai-composer__attach-menu${above ? " chai-composer__attach-menu--above" : ""}`} role="menu">
|
|
920
1002
|
{items.map((item, i) => (
|
|
921
1003
|
<li key={item.action} role="none">
|
|
922
1004
|
<button
|
|
@@ -1050,7 +1132,7 @@ function kindIcon(kind: MediaKind) {
|
|
|
1050
1132
|
case "video":
|
|
1051
1133
|
return <VideocamIcon />;
|
|
1052
1134
|
case "audio":
|
|
1053
|
-
return <
|
|
1135
|
+
return <MusicNoteIcon />;
|
|
1054
1136
|
default:
|
|
1055
1137
|
return <ImageIcon />;
|
|
1056
1138
|
}
|
|
@@ -1066,11 +1148,11 @@ function kindIcon(kind: MediaKind) {
|
|
|
1066
1148
|
// codebase's existing "trace and inline as a currentColor component"
|
|
1067
1149
|
// convention). Fixes an earlier pass
|
|
1068
1150
|
// that hand-approximated several of these (Add media/Create image/Create
|
|
1069
|
-
// video/Edit
|
|
1151
|
+
// video/Edit image's icons, plus/close/arrow) because `get_design_context`
|
|
1070
1152
|
// couldn't resolve their specific instance-swap nodes — those
|
|
1071
1153
|
// approximations read as visibly off-brand, not real MD3, correctly
|
|
1072
1154
|
// flagged and replaced with the genuine glyphs (add, close, arrow_forward,
|
|
1073
|
-
// attach_file, image, videocam, content_cut, music_note).
|
|
1155
|
+
// attach_file, image, videocam, content_cut, music_note, volume_up).
|
|
1074
1156
|
//
|
|
1075
1157
|
// `OptimizeIcon` is the one exception, still traced exactly from the real
|
|
1076
1158
|
// exported design asset ("Optimize_icon") — not a Material Symbol at all, this is CHAI's own "prompt
|
|
@@ -1200,7 +1282,7 @@ function ContentCutIcon() {
|
|
|
1200
1282
|
);
|
|
1201
1283
|
}
|
|
1202
1284
|
|
|
1203
|
-
function
|
|
1285
|
+
function MusicNoteIcon() {
|
|
1204
1286
|
return (
|
|
1205
1287
|
<svg viewBox="0 -960 960 960" aria-hidden="true">
|
|
1206
1288
|
<path
|
|
@@ -1210,3 +1292,14 @@ function AudioIcon() {
|
|
|
1210
1292
|
</svg>
|
|
1211
1293
|
);
|
|
1212
1294
|
}
|
|
1295
|
+
|
|
1296
|
+
function VolumeUpIcon() {
|
|
1297
|
+
return (
|
|
1298
|
+
<svg viewBox="0 -960 960 960" aria-hidden="true">
|
|
1299
|
+
<path
|
|
1300
|
+
d="M560-131v-62q97-28 158.5-107.5T780-481q0-101-61-181T560-769v-62q124 28 202 125.5T840-481q0 127-78 224.5T560-131ZM120-360v-240h160l200-200v640L280-360H120Zm420 48v-337q55 17 87.5 64T660-480q0 57-33 104t-87 64ZM420-648 307-540H180v120h127l113 109v-337Zm-94 168Z"
|
|
1301
|
+
fill="currentColor"
|
|
1302
|
+
/>
|
|
1303
|
+
</svg>
|
|
1304
|
+
);
|
|
1305
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -29,6 +29,7 @@ export {
|
|
|
29
29
|
SUGGESTED_EDIT_MODELS,
|
|
30
30
|
SUGGESTED_ANALYSIS_MODELS,
|
|
31
31
|
suggestedModels,
|
|
32
|
+
promptWithGenres,
|
|
32
33
|
checkSuggestedModels,
|
|
33
34
|
} from "@chai-ui/core";
|
|
34
35
|
export type {
|
|
@@ -40,11 +41,13 @@ export type {
|
|
|
40
41
|
MediaAnalysisKind,
|
|
41
42
|
MediaAnalysisPromptLength,
|
|
42
43
|
MediaKind,
|
|
44
|
+
MenuPlacement,
|
|
43
45
|
ModelOption,
|
|
44
46
|
OutputKind,
|
|
45
47
|
Transcribe,
|
|
46
48
|
VoiceClip,
|
|
47
49
|
VoiceInputConfig,
|
|
50
|
+
VoiceOption,
|
|
48
51
|
ParameterOption,
|
|
49
52
|
RegionBox,
|
|
50
53
|
RegionFormat,
|
|
@@ -5,6 +5,7 @@ import { MdOutlinedTextField } from "@material/web/textfield/outlined-text-field
|
|
|
5
5
|
import { MdCheckbox } from "@material/web/checkbox/checkbox.js";
|
|
6
6
|
import { Toggle } from "./Toggle.js";
|
|
7
7
|
import { CheckIcon } from "../icons.js";
|
|
8
|
+
import { menuOpensAbove, type MenuPlacement } from "@chai-ui/core";
|
|
8
9
|
|
|
9
10
|
const MdOutlinedTextFieldElement = createComponent({
|
|
10
11
|
react: React,
|
|
@@ -84,6 +85,8 @@ interface SearchMenuProps<T extends SearchMenuOption> {
|
|
|
84
85
|
triggerVariant?: "outlined" | "text";
|
|
85
86
|
/** Panel width in px (default 280) — widen for a menu whose option labels run long; anything still too long past that ellipsizes rather than wrapping or overflowing. */
|
|
86
87
|
panelWidth?: number;
|
|
88
|
+
/** Which way the panel opens: `"auto"` (default) below when it fits, else above when that fits, else toward the side with more room. */
|
|
89
|
+
placement?: MenuPlacement;
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
/**
|
|
@@ -109,8 +112,10 @@ export function SearchMenu<T extends SearchMenuOption>({
|
|
|
109
112
|
searchable = true,
|
|
110
113
|
triggerVariant = "outlined",
|
|
111
114
|
panelWidth = 280,
|
|
115
|
+
placement = "auto",
|
|
112
116
|
}: SearchMenuProps<T>) {
|
|
113
117
|
const [open, setOpen] = useState(false);
|
|
118
|
+
const [above, setAbove] = useState(false);
|
|
114
119
|
const [search, setSearch] = useState("");
|
|
115
120
|
// Closing also clears the search, so the menu reopens on the full list.
|
|
116
121
|
const close = useCallback(() => {
|
|
@@ -130,7 +135,10 @@ export function SearchMenu<T extends SearchMenuOption>({
|
|
|
130
135
|
const rect = panel.getBoundingClientRect();
|
|
131
136
|
const over = rect.right - (document.documentElement.clientWidth - 16);
|
|
132
137
|
if (over > 0) panel.style.left = `${-Math.min(over, Math.max(0, rect.left - 16))}px`;
|
|
133
|
-
|
|
138
|
+
// Up or down, before the first paint, so it never flashes on the wrong side.
|
|
139
|
+
const trigger = rootRef.current!.getBoundingClientRect();
|
|
140
|
+
setAbove(menuOpensAbove(placement, trigger, panel.offsetHeight, document.documentElement.clientHeight));
|
|
141
|
+
}, [open, placement]);
|
|
134
142
|
|
|
135
143
|
useEffect(() => {
|
|
136
144
|
if (!open) return;
|
|
@@ -195,7 +203,7 @@ export function SearchMenu<T extends SearchMenuOption>({
|
|
|
195
203
|
{open && (
|
|
196
204
|
<div
|
|
197
205
|
ref={panelRef}
|
|
198
|
-
className="chai-search-menu__panel"
|
|
206
|
+
className={`chai-search-menu__panel${above ? " chai-search-menu__panel--above" : ""}`}
|
|
199
207
|
role="group"
|
|
200
208
|
aria-label={menuLabel}
|
|
201
209
|
style={{ width: panelWidth }}
|
|
@@ -213,7 +221,7 @@ export function SearchMenu<T extends SearchMenuOption>({
|
|
|
213
221
|
<MdOutlinedTextFieldElement
|
|
214
222
|
className="chai-search-menu__search"
|
|
215
223
|
label={menuLabel}
|
|
216
|
-
placeholder="
|
|
224
|
+
placeholder="Search"
|
|
217
225
|
value={search}
|
|
218
226
|
onInput={(e) => setSearch((e.target as MdOutlinedTextField).value)}
|
|
219
227
|
>
|
package/src/style.css
CHANGED
|
@@ -209,8 +209,17 @@
|
|
|
209
209
|
gap: var(--chai-space-2);
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
/* Opens upward: `placement="above"`, or `"auto"` with no room below. */
|
|
213
|
+
.chai-search-menu__panel--above {
|
|
214
|
+
top: auto;
|
|
215
|
+
bottom: calc(100% + 8px);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* 44px tall, not Material's 56px: the field sits inside a compact menu. */
|
|
212
219
|
.chai-search-menu__search {
|
|
213
220
|
width: 100%;
|
|
221
|
+
--md-outlined-text-field-top-space: 10px;
|
|
222
|
+
--md-outlined-text-field-bottom-space: 10px;
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
.chai-search-menu__search-icon {
|
|
@@ -249,9 +258,13 @@
|
|
|
249
258
|
border: none;
|
|
250
259
|
border-radius: var(--chai-radius-sm);
|
|
251
260
|
background: transparent;
|
|
252
|
-
|
|
261
|
+
/* The same grey and 14px label type as the menu triggers and the rest
|
|
262
|
+
of the controls: 40px rows, the attach menu's density. */
|
|
263
|
+
color: var(--chai-color-semantic-control-text);
|
|
253
264
|
font-family: var(--chai-type-family-material);
|
|
254
|
-
font-size: var(--chai-type-size-
|
|
265
|
+
font-size: var(--chai-type-size-label-large);
|
|
266
|
+
line-height: var(--chai-type-leading-label-large);
|
|
267
|
+
letter-spacing: var(--chai-type-tracking-label-large);
|
|
255
268
|
text-align: left;
|
|
256
269
|
cursor: pointer;
|
|
257
270
|
}
|
|
@@ -296,6 +309,9 @@
|
|
|
296
309
|
.chai-search-menu__checkbox {
|
|
297
310
|
flex: none;
|
|
298
311
|
pointer-events: none;
|
|
312
|
+
/* 16px, not MD3's 18px, beside 14px labels. */
|
|
313
|
+
--md-checkbox-container-size: 16px;
|
|
314
|
+
--md-checkbox-icon-size: 16px;
|
|
299
315
|
}
|
|
300
316
|
|
|
301
317
|
.chai-search-menu__option svg {
|
|
@@ -339,11 +355,13 @@
|
|
|
339
355
|
gap: var(--chai-space-3);
|
|
340
356
|
}
|
|
341
357
|
|
|
358
|
+
/* The menu triggers' type: 14px medium, the controls' grey. */
|
|
342
359
|
.chai-search-menu__toggle-header-text {
|
|
343
360
|
font-family: var(--chai-type-family-material);
|
|
344
|
-
font-size: var(--chai-type-size-
|
|
361
|
+
font-size: var(--chai-type-size-label-large);
|
|
345
362
|
font-weight: var(--chai-type-weight-material-medium);
|
|
346
|
-
|
|
363
|
+
letter-spacing: var(--chai-type-tracking-label-large);
|
|
364
|
+
color: var(--chai-color-semantic-control-text);
|
|
347
365
|
}
|
|
348
366
|
|
|
349
367
|
.chai-search-menu__empty {
|
|
@@ -870,18 +888,26 @@
|
|
|
870
888
|
position: relative;
|
|
871
889
|
}
|
|
872
890
|
|
|
891
|
+
/* A 40px rounded square, the size of the mic button's target, with
|
|
892
|
+
-8px margins so the 24px icon and the row's layout stay where they were. */
|
|
873
893
|
.chai-composer__attach-toggle {
|
|
874
894
|
display: flex;
|
|
875
895
|
align-items: center;
|
|
876
896
|
justify-content: center;
|
|
877
|
-
width:
|
|
878
|
-
height:
|
|
897
|
+
width: 40px;
|
|
898
|
+
height: 40px;
|
|
899
|
+
margin: -8px;
|
|
879
900
|
padding: 0;
|
|
880
901
|
border: none;
|
|
881
|
-
border-radius: var(--chai-radius-
|
|
902
|
+
border-radius: var(--chai-radius-sm);
|
|
882
903
|
background: transparent;
|
|
883
904
|
color: var(--chai-composer-text);
|
|
884
905
|
cursor: pointer;
|
|
906
|
+
transition: background-color var(--chai-motion-duration-fast) var(--chai-motion-easing-standard);
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
.chai-composer__attach-toggle:hover:not(:disabled) {
|
|
910
|
+
background: var(--chai-composer-hover);
|
|
885
911
|
}
|
|
886
912
|
|
|
887
913
|
.chai-composer__attach-toggle svg {
|
|
@@ -901,7 +927,7 @@
|
|
|
901
927
|
.chai-composer__attach-menu {
|
|
902
928
|
position: absolute;
|
|
903
929
|
z-index: 10;
|
|
904
|
-
|
|
930
|
+
top: calc(100% + 8px);
|
|
905
931
|
left: 0;
|
|
906
932
|
min-width: 180px;
|
|
907
933
|
margin: 0;
|
|
@@ -912,12 +938,21 @@
|
|
|
912
938
|
box-shadow: var(--chai-shadow-menu);
|
|
913
939
|
}
|
|
914
940
|
|
|
941
|
+
/* Opens upward: `menuPlacement="above"`, or `"auto"` with no room below. */
|
|
942
|
+
.chai-composer__attach-menu--above {
|
|
943
|
+
top: auto;
|
|
944
|
+
bottom: calc(100% + 8px);
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
/* MD3 menu density -2: 40px items (48px at density 0, 4px less per step),
|
|
948
|
+
so the longer menu with the audio group stays compact. */
|
|
915
949
|
.chai-composer__attach-menu-item {
|
|
916
950
|
display: flex;
|
|
917
951
|
align-items: center;
|
|
918
952
|
gap: var(--chai-space-3);
|
|
919
953
|
width: 100%;
|
|
920
|
-
|
|
954
|
+
min-height: 40px;
|
|
955
|
+
padding: 0 var(--chai-space-4);
|
|
921
956
|
border: none;
|
|
922
957
|
background: transparent;
|
|
923
958
|
color: var(--chai-color-semantic-control-text-strong);
|
|
@@ -946,9 +981,9 @@
|
|
|
946
981
|
height: 100%;
|
|
947
982
|
}
|
|
948
983
|
|
|
949
|
-
/*
|
|
950
|
-
|
|
951
|
-
|
|
984
|
+
/* Between menu groups (see `COMPOSER_ATTACH_MENU_ITEMS`): under "Add media",
|
|
985
|
+
separating the real attach action from the visual use cases, and above
|
|
986
|
+
the audio use cases. */
|
|
952
987
|
.chai-composer__attach-menu-divider {
|
|
953
988
|
margin: var(--chai-space-2) 0;
|
|
954
989
|
border: none;
|