@chai-ui/core 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/dist/composer-view.d.ts +30 -6
- package/dist/composer-view.d.ts.map +1 -1
- package/dist/composer-view.js +79 -18
- package/dist/composer-view.js.map +1 -1
- package/dist/composer.d.ts +13 -1
- package/dist/composer.d.ts.map +1 -1
- package/dist/composer.js +23 -6
- package/dist/composer.js.map +1 -1
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js.map +1 -1
- package/dist/engines/fal.d.ts +10 -1
- package/dist/engines/fal.d.ts.map +1 -1
- package/dist/engines/fal.js +10 -7
- package/dist/engines/fal.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/menu-placement.d.ts +16 -0
- package/dist/menu-placement.d.ts.map +1 -0
- package/dist/menu-placement.js +20 -0
- package/dist/menu-placement.js.map +1 -0
- package/dist/run.d.ts +6 -4
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +7 -3
- package/dist/run.js.map +1 -1
- package/dist/types.d.ts +29 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/composer-view.ts +102 -19
- package/src/composer.ts +28 -3
- package/src/engine.ts +2 -0
- package/src/engines/fal.ts +19 -8
- package/src/index.ts +1 -0
- package/src/menu-placement.ts +29 -0
- package/src/run.ts +9 -5
- package/src/types.ts +33 -3
package/dist/engines/fal.d.ts
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* key into this file would put it in the browser bundle; don't add one.
|
|
22
22
|
*/
|
|
23
23
|
import { type GenerationEngine } from "../engine.js";
|
|
24
|
-
import type { DroppedMedia, MediaKind } from "../types.js";
|
|
24
|
+
import type { DroppedMedia, FalInputFormat, MediaKind, ModelOption } from "../types.js";
|
|
25
25
|
import type { Transcribe } from "../voice-input.js";
|
|
26
26
|
/** Output kinds this engine can produce — text goes through a reasoning engine instead (see file doc comment). */
|
|
27
27
|
type FalOutputKind = Exclude<MediaKind, "text">;
|
|
@@ -34,6 +34,12 @@ export interface FalEngineOptions {
|
|
|
34
34
|
modelByKind?: Partial<Record<FalOutputKind, string>>;
|
|
35
35
|
/** Which kind of media this engine instance produces. Defaults to "image". */
|
|
36
36
|
outputKind?: FalOutputKind;
|
|
37
|
+
/**
|
|
38
|
+
* Your own models, so the engine sends each one's inputs in the fields its
|
|
39
|
+
* Fal schema names (`ModelOption.falInput`). Chai's suggested models are
|
|
40
|
+
* already known.
|
|
41
|
+
*/
|
|
42
|
+
models?: ModelOption[];
|
|
37
43
|
/** Poll interval while a queued job is in progress. Defaults to 1500ms. */
|
|
38
44
|
pollIntervalMs?: number;
|
|
39
45
|
/** Give up waiting after this long. Defaults to 120000ms (2 min) — video/audio jobs run longer than image ones. */
|
|
@@ -76,6 +82,9 @@ export declare function buildFalRequestBody(args: {
|
|
|
76
82
|
attachments?: DroppedMedia[];
|
|
77
83
|
model?: string;
|
|
78
84
|
aspectRatio?: string;
|
|
85
|
+
voice?: string;
|
|
86
|
+
/** The model's input format when the caller knows it (see `FalEngineOptions.models`); else a suggested model's, else guessed. */
|
|
87
|
+
input?: FalInputFormat;
|
|
79
88
|
}): Record<string, unknown>;
|
|
80
89
|
/** Pulls the generated media URL out of Fal's result JSON for the given output kind — the response shape differs by modality. */
|
|
81
90
|
export declare function extractFalResultSrc(json: FalResultResponse, kind: FalOutputKind): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../src/engines/fal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAA6D,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../src/engines/fal.ts"],"names":[],"mappings":"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"}
|
package/dist/engines/fal.js
CHANGED
|
@@ -24,9 +24,9 @@ import { abortError, abortableSleep, isAbortError, readEvaluations } from "../en
|
|
|
24
24
|
import { SUGGESTED_FAL_MODELS } from "../suggested-models.js";
|
|
25
25
|
/**
|
|
26
26
|
* Fal model ids verified live against fal.ai's own docs/catalog
|
|
27
|
-
* 2026-09-24, not invented. No default for "audio":
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* 2026-09-24, not invented. No default for "audio": Create speech and
|
|
28
|
+
* Create music are opt-in, so the builder names the model when they turn
|
|
29
|
+
* one on.
|
|
30
30
|
*/
|
|
31
31
|
const DEFAULT_MODEL_BY_KIND = {
|
|
32
32
|
image: "fal-ai/flux/schnell",
|
|
@@ -75,8 +75,10 @@ const GPT_IMAGE_1_SIZES = {
|
|
|
75
75
|
* schema); for any other model the field is guessed from its id.
|
|
76
76
|
*/
|
|
77
77
|
export function buildFalRequestBody(args) {
|
|
78
|
-
const
|
|
79
|
-
const
|
|
78
|
+
const known = args.input ?? (args.model ? SUGGESTED_FAL_MODELS.get(args.model)?.falInput : undefined);
|
|
79
|
+
const body = { [known?.prompt ?? "prompt"]: args.prompt };
|
|
80
|
+
if (args.voice)
|
|
81
|
+
body.voice = args.voice;
|
|
80
82
|
if (args.aspectRatio) {
|
|
81
83
|
const sizes = args.model?.startsWith("fal-ai/gpt-image")
|
|
82
84
|
? GPT_IMAGE_1_SIZES
|
|
@@ -173,12 +175,13 @@ export function createFalEngine(options = {}) {
|
|
|
173
175
|
const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
|
|
174
176
|
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
175
177
|
return {
|
|
176
|
-
async generate({ modelId, prompt, attachments, aspectRatio, signal }) {
|
|
178
|
+
async generate({ modelId, prompt, attachments, aspectRatio, voice, signal }) {
|
|
177
179
|
const model = modelId ?? options.modelByKind?.[outputKind] ?? options.model ?? DEFAULT_MODEL_BY_KIND[outputKind];
|
|
178
180
|
if (!model) {
|
|
179
181
|
throw new Error(`falEngine: no model configured for outputKind "${outputKind}" — pass \`model\` or \`modelByKind.${outputKind}\`.`);
|
|
180
182
|
}
|
|
181
|
-
const
|
|
183
|
+
const input = options.models?.find((m) => m.id === model)?.falInput;
|
|
184
|
+
const body = buildFalRequestBody({ prompt, attachments, model, aspectRatio, voice, input });
|
|
182
185
|
if (signal?.aborted)
|
|
183
186
|
throw abortError();
|
|
184
187
|
try {
|
package/dist/engines/fal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fal.js","sourceRoot":"","sources":["../../src/engines/fal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAyB,MAAM,cAAc,CAAC;AAEhH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"fal.js","sourceRoot":"","sources":["../../src/engines/fal.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
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,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which way a component's menus open from their trigger. `"above"` suits a
|
|
3
|
+
* bar docked to the bottom of the screen and `"below"` one docked to the
|
|
4
|
+
* top; `"auto"` measures at open time, for a bar that sits in the page.
|
|
5
|
+
*/
|
|
6
|
+
export type MenuPlacement = "auto" | "above" | "below";
|
|
7
|
+
/**
|
|
8
|
+
* Whether a menu opens above its trigger. `"auto"` opens below when the menu
|
|
9
|
+
* fits there, above when only that side fits, and otherwise toward the side
|
|
10
|
+
* with more room, so it's never cut off when it could have fit.
|
|
11
|
+
*/
|
|
12
|
+
export declare function menuOpensAbove(placement: MenuPlacement, trigger: {
|
|
13
|
+
top: number;
|
|
14
|
+
bottom: number;
|
|
15
|
+
}, menuHeight: number, viewportHeight: number): boolean;
|
|
16
|
+
//# sourceMappingURL=menu-placement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-placement.d.ts","sourceRoot":"","sources":["../src/menu-placement.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAMvD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACxC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAOT"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The gap between a trigger and its open menu, and the least room kept to the screen's edge. */
|
|
2
|
+
const GAP = 8;
|
|
3
|
+
const EDGE = 16;
|
|
4
|
+
/**
|
|
5
|
+
* Whether a menu opens above its trigger. `"auto"` opens below when the menu
|
|
6
|
+
* fits there, above when only that side fits, and otherwise toward the side
|
|
7
|
+
* with more room, so it's never cut off when it could have fit.
|
|
8
|
+
*/
|
|
9
|
+
export function menuOpensAbove(placement, trigger, menuHeight, viewportHeight) {
|
|
10
|
+
if (placement !== "auto")
|
|
11
|
+
return placement === "above";
|
|
12
|
+
const roomBelow = viewportHeight - EDGE - (trigger.bottom + GAP);
|
|
13
|
+
const roomAbove = trigger.top - GAP - EDGE;
|
|
14
|
+
if (menuHeight <= roomBelow)
|
|
15
|
+
return false;
|
|
16
|
+
if (menuHeight <= roomAbove)
|
|
17
|
+
return true;
|
|
18
|
+
return roomAbove > roomBelow;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=menu-placement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-placement.js","sourceRoot":"","sources":["../src/menu-placement.ts"],"names":[],"mappings":"AAOA,iGAAiG;AACjG,MAAM,GAAG,GAAG,CAAC,CAAC;AACd,MAAM,IAAI,GAAG,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAwB,EACxB,OAAwC,EACxC,UAAkB,EAClB,cAAsB;IAEtB,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,SAAS,KAAK,OAAO,CAAC;IACvD,MAAM,SAAS,GAAG,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IAC3C,IAAI,UAAU,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,UAAU,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,SAAS,GAAG,SAAS,CAAC;AAC/B,CAAC"}
|
package/dist/run.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* transitions over it: pure, framework-free logic here; `useComposer`
|
|
4
4
|
* (`@chai-ui/react`) is the thin React binding on top.
|
|
5
5
|
*/
|
|
6
|
-
import type { DroppedMedia, Evaluation, GenerationUseCase, MediaKind, OutputKind, Usage } from "./types.js";
|
|
6
|
+
import type { AudioUseCase, DroppedMedia, Evaluation, GenerationUseCase, MediaKind, OutputKind, Usage } from "./types.js";
|
|
7
7
|
export interface Request {
|
|
8
8
|
/** The specific generation use case, when one could be derived — see `deriveGenerationUseCase`. Undefined when the use case (or its kind) has no `GenerationUseCase` match yet, e.g. audio. */
|
|
9
9
|
mode?: GenerationUseCase;
|
|
@@ -70,12 +70,14 @@ export declare function cancelResult(run: Run, resultId: string): Run;
|
|
|
70
70
|
* Derives a `GenerationUseCase` from Composer's own `{ kind, label }` use
|
|
71
71
|
* case plus whether anything is attached — this is real derivation logic,
|
|
72
72
|
* not just plumbing: the same `kind: "video"` means `"text-to-video"` with
|
|
73
|
-
* nothing attached but `"image-to-video"` once an image is.
|
|
74
|
-
*
|
|
75
|
-
*
|
|
73
|
+
* nothing attached but `"image-to-video"` once an image is. An `"audio"`
|
|
74
|
+
* use case is `"text-to-speech"` or `"text-to-music"` by its `audio` field,
|
|
75
|
+
* and `undefined` without one. Returns `undefined` for "world" (world
|
|
76
|
+
* models await provider specs). `"text"` is a text request: a reply to
|
|
76
77
|
* the prompt, or a description of the attached media ("vision").
|
|
77
78
|
*/
|
|
78
79
|
export declare function deriveGenerationUseCase(useCase: {
|
|
79
80
|
kind: OutputKind;
|
|
81
|
+
audio?: AudioUseCase;
|
|
80
82
|
} | null | undefined, attachments: DroppedMedia[]): GenerationUseCase | undefined;
|
|
81
83
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE1H,MAAM,WAAW,OAAO;IACtB,+LAA+L;IAC/L,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjF,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,kKAAkK;IAClK,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4SAA4S;IAC5S,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAQ1C;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAa/C;AAMD,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAI/E;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,KAAK,CAAC,EAAE,KAAK,EACb,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,GAAG,CASL;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAOlF;AAED,oGAAoG;AACpG,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAM5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EACtE,WAAW,EAAE,YAAY,EAAE,GAC1B,iBAAiB,GAAG,SAAS,CAU/B"}
|
package/dist/run.js
CHANGED
|
@@ -76,14 +76,18 @@ export function cancelResult(run, resultId) {
|
|
|
76
76
|
* Derives a `GenerationUseCase` from Composer's own `{ kind, label }` use
|
|
77
77
|
* case plus whether anything is attached — this is real derivation logic,
|
|
78
78
|
* not just plumbing: the same `kind: "video"` means `"text-to-video"` with
|
|
79
|
-
* nothing attached but `"image-to-video"` once an image is.
|
|
80
|
-
*
|
|
81
|
-
*
|
|
79
|
+
* nothing attached but `"image-to-video"` once an image is. An `"audio"`
|
|
80
|
+
* use case is `"text-to-speech"` or `"text-to-music"` by its `audio` field,
|
|
81
|
+
* and `undefined` without one. Returns `undefined` for "world" (world
|
|
82
|
+
* models await provider specs). `"text"` is a text request: a reply to
|
|
82
83
|
* the prompt, or a description of the attached media ("vision").
|
|
83
84
|
*/
|
|
84
85
|
export function deriveGenerationUseCase(useCase, attachments) {
|
|
85
86
|
if (!useCase)
|
|
86
87
|
return undefined;
|
|
88
|
+
if (useCase.kind === "audio") {
|
|
89
|
+
return useCase.audio === "speech" ? "text-to-speech" : useCase.audio === "music" ? "text-to-music" : undefined;
|
|
90
|
+
}
|
|
87
91
|
const hasMedia = attachments.length > 0;
|
|
88
92
|
if (useCase.kind === "video")
|
|
89
93
|
return hasMedia ? "image-to-video" : "text-to-video";
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -9,6 +9,12 @@ export type MediaKind = "image" | "video" | "audio" | "text";
|
|
|
9
9
|
* here rather than in `MediaKind`.
|
|
10
10
|
*/
|
|
11
11
|
export type OutputKind = MediaKind | "world";
|
|
12
|
+
/**
|
|
13
|
+
* Which audio an `"audio"` use case creates: spoken words (Create speech) or
|
|
14
|
+
* music (Create music). Each needs its own models and result surface, so a
|
|
15
|
+
* new kind of audio (e.g. sound effects) gets its own value, not a reuse.
|
|
16
|
+
*/
|
|
17
|
+
export type AudioUseCase = "speech" | "music";
|
|
12
18
|
/**
|
|
13
19
|
* A piece of media a person attached (or an engine received) — just enough
|
|
14
20
|
* to know its kind and where it lives.
|
|
@@ -114,11 +120,31 @@ export interface ModelOption {
|
|
|
114
120
|
* a model with one fixed rate it doesn't take as an input: no menu shows.
|
|
115
121
|
*/
|
|
116
122
|
frameRates?: number[];
|
|
123
|
+
/**
|
|
124
|
+
* The voices a text-to-speech model speaks in, from its schema. Composer's
|
|
125
|
+
* Voice menu offers them once this is the one model picked, and the
|
|
126
|
+
* engine sends the pick as the model's `voice` input. Leave it out for a
|
|
127
|
+
* model with no voice to choose.
|
|
128
|
+
*/
|
|
129
|
+
voices?: VoiceOption[];
|
|
130
|
+
/**
|
|
131
|
+
* The genres offered with a music model. Composer's Genre menu offers the
|
|
132
|
+
* ones every picked model lists, several at once. Music models take genre
|
|
133
|
+
* as part of the description, so the picks are written into the prompt
|
|
134
|
+
* (see `promptWithGenres`).
|
|
135
|
+
*/
|
|
136
|
+
genres?: ParameterOption<string>[];
|
|
137
|
+
}
|
|
138
|
+
/** One voice in `ModelOption.voices`: the model's own id for it, its name, and an optional menu section (e.g. "Female"). */
|
|
139
|
+
export interface VoiceOption extends ParameterOption<string> {
|
|
140
|
+
group?: string;
|
|
117
141
|
}
|
|
118
142
|
/** See `ModelOption.falInput`. */
|
|
119
143
|
export interface FalInputFormat {
|
|
120
144
|
image?: "image_url" | "image_urls" | "start_image_url";
|
|
121
145
|
aspectRatio?: "aspect_ratio" | "image_size";
|
|
146
|
+
/** Which field the prompt goes in. Most models take `prompt`; some text-to-speech models take the words as `text`. */
|
|
147
|
+
prompt?: "prompt" | "text";
|
|
122
148
|
}
|
|
123
149
|
/** How an edit's regions reach the model — see `ModelOption.regionFormat`. */
|
|
124
150
|
export type RegionFormat = "flux-3-boxes" | "text";
|
|
@@ -127,8 +153,8 @@ export type RegionFormat = "flux-3-boxes" | "text";
|
|
|
127
153
|
* leaderboard categories at github.com/oolong-tea-2026/arena-ai-leaderboards,
|
|
128
154
|
* so a future model-ranking lookup can join on it directly, plus
|
|
129
155
|
* "text-to-text" for a plain text request (a Composer with no use case
|
|
130
|
-
* picked). That repo has no audio-generation category
|
|
131
|
-
*
|
|
156
|
+
* picked). That repo has no audio-generation category, so "text-to-speech"
|
|
157
|
+
* and "text-to-music" have nothing to join on yet.
|
|
132
158
|
*/
|
|
133
|
-
export type GenerationUseCase = "text-to-image" | "image-edit" | "text-to-video" | "image-to-video" | "video-edit" | "vision" | "text-to-text";
|
|
159
|
+
export type GenerationUseCase = "text-to-image" | "image-edit" | "text-to-video" | "image-to-video" | "video-edit" | "vision" | "text-to-text" | "text-to-speech" | "text-to-music";
|
|
134
160
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chai-ui/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Chai UI headless core — the Request/Run/Result data model and pluggable generation engines (Fal.ai, OpenRouter, Vercel AI Gateway, mock). No framework, no rendering.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "kazarazat",
|
package/src/composer-view.ts
CHANGED
|
@@ -14,25 +14,37 @@ import type { ModelOption, OutputKind, ParameterOption } from "./types.js";
|
|
|
14
14
|
/** Which prompt field an Enhance click is for: the bar's prompt, or a world's environment or character. */
|
|
15
15
|
export type ComposerPromptField = "prompt" | "environment" | "character";
|
|
16
16
|
|
|
17
|
-
export type ComposerAttachMenuAction =
|
|
17
|
+
export type ComposerAttachMenuAction =
|
|
18
|
+
| "add-media"
|
|
19
|
+
| "create-image"
|
|
20
|
+
| "create-video"
|
|
21
|
+
| "create-world"
|
|
22
|
+
| "edit-image"
|
|
23
|
+
| "create-speech"
|
|
24
|
+
| "create-music";
|
|
18
25
|
|
|
19
26
|
/**
|
|
20
|
-
* The `+` menu, in order
|
|
21
|
-
*
|
|
27
|
+
* The `+` menu, in order, in groups: attaching, then visual media, then
|
|
28
|
+
* audio. A divider separates two groups that both have items showing. An
|
|
29
|
+
* `optIn` item shows only when `attachMenuActions` lists it.
|
|
22
30
|
*/
|
|
23
31
|
export const COMPOSER_ATTACH_MENU_ITEMS: {
|
|
24
32
|
action: ComposerAttachMenuAction;
|
|
25
33
|
label: string;
|
|
26
|
-
|
|
34
|
+
group: "attach" | "visual" | "audio";
|
|
27
35
|
optIn?: boolean;
|
|
28
36
|
}[] = [
|
|
29
|
-
{ action: "add-media", label: "Add media",
|
|
30
|
-
{ action: "create-image", label: "Create image" },
|
|
31
|
-
{ action: "create-video", label: "Create video" },
|
|
37
|
+
{ action: "add-media", label: "Add media", group: "attach" },
|
|
38
|
+
{ action: "create-image", label: "Create image", group: "visual" },
|
|
39
|
+
{ action: "create-video", label: "Create video", group: "visual" },
|
|
32
40
|
// No suggested world models or shipped world engine yet: a builder adds
|
|
33
41
|
// this with their own models and `engineByKind.world`.
|
|
34
|
-
{ action: "create-world", label: "Create world", optIn: true },
|
|
35
|
-
{ action: "edit-
|
|
42
|
+
{ action: "create-world", label: "Create world", group: "visual", optIn: true },
|
|
43
|
+
{ action: "edit-image", label: "Edit image", group: "visual" },
|
|
44
|
+
// No suggested audio models yet: a builder adds these with their own
|
|
45
|
+
// models and `engineByKind.audio`.
|
|
46
|
+
{ action: "create-speech", label: "Create speech", group: "audio", optIn: true },
|
|
47
|
+
{ action: "create-music", label: "Create music", group: "audio", optIn: true },
|
|
36
48
|
];
|
|
37
49
|
|
|
38
50
|
/**
|
|
@@ -68,6 +80,10 @@ export interface ComposerViewInput {
|
|
|
68
80
|
/** A world's character field. */
|
|
69
81
|
character?: string;
|
|
70
82
|
frameRate?: number | null;
|
|
83
|
+
/** Create speech's voice. */
|
|
84
|
+
speechVoice?: string | null;
|
|
85
|
+
/** Create music's genres. */
|
|
86
|
+
genres?: string[];
|
|
71
87
|
submitError?: string | null;
|
|
72
88
|
submitDisabled?: boolean;
|
|
73
89
|
submitting?: boolean;
|
|
@@ -94,6 +110,8 @@ export function composerView(props: ComposerViewInput) {
|
|
|
94
110
|
aspectRatio = null,
|
|
95
111
|
character = "",
|
|
96
112
|
frameRate = null,
|
|
113
|
+
speechVoice = null,
|
|
114
|
+
genres = [],
|
|
97
115
|
submitError = null,
|
|
98
116
|
submitting = false,
|
|
99
117
|
regions = [],
|
|
@@ -111,6 +129,7 @@ export function composerView(props: ComposerViewInput) {
|
|
|
111
129
|
// character the person plays (optional). An image can start the world,
|
|
112
130
|
// but the environment is still needed.
|
|
113
131
|
const world = activeUseCases.some((u) => u.kind === "world");
|
|
132
|
+
const audio = activeUseCases.find((u) => u.kind === "audio")?.audio;
|
|
114
133
|
const hasImage = attachments.some((a) => a.kind === "image");
|
|
115
134
|
const hasContent = editing
|
|
116
135
|
? hasImage && (value.trim().length > 0 || regions.length > 0)
|
|
@@ -127,7 +146,11 @@ export function composerView(props: ComposerViewInput) {
|
|
|
127
146
|
? attachments.length > 0
|
|
128
147
|
? "Describe the world, and how to use the attached media"
|
|
129
148
|
: "Describe the world and how you move through it"
|
|
130
|
-
:
|
|
149
|
+
: audio === "speech"
|
|
150
|
+
? "Type the words to speak"
|
|
151
|
+
: audio === "music"
|
|
152
|
+
? "Describe the music to create"
|
|
153
|
+
: "Describe media to create");
|
|
131
154
|
// The stop icon only appears with somewhere for its click to go.
|
|
132
155
|
const showStop = submitting && Boolean(props.onAbort);
|
|
133
156
|
|
|
@@ -141,7 +164,7 @@ export function composerView(props: ComposerViewInput) {
|
|
|
141
164
|
};
|
|
142
165
|
// One menu section per use case with multi-use-case select; otherwise one flat roster.
|
|
143
166
|
const modelSections = (multiSelectUseCases ? activeUseCases : activeUseCases.slice(0, 1))
|
|
144
|
-
.map((u) => ({ label: multiSelectUseCases ? u.label : "", kind: u.kind, ...rosterFor(u) }))
|
|
167
|
+
.map((u) => ({ label: multiSelectUseCases ? u.label : "", kind: u.kind, useCase: u, ...rosterFor(u) }))
|
|
145
168
|
.filter((s) => s.options.length > 0);
|
|
146
169
|
const allModels = modelSections.flatMap((s) => s.options);
|
|
147
170
|
// No menu that can't change anything: without its handler, the Model menu hides.
|
|
@@ -166,12 +189,23 @@ export function composerView(props: ComposerViewInput) {
|
|
|
166
189
|
const needsModel = canPickModel && modelSections.length > 0 && !autoSelectModel && pickedModelIds.length === 0;
|
|
167
190
|
const isSubmitDisabled = submitError ? disabled : (props.submitDisabled ?? (disabled || !hasContent || needsModel));
|
|
168
191
|
|
|
192
|
+
// The models a control is for: only those of the use cases it applies to,
|
|
193
|
+
// so with Image and Music picked together, Music's models don't empty the
|
|
194
|
+
// Aspect ratio menu and Image's don't empty the Genre menu. `offered` is
|
|
195
|
+
// what might run: the picks, or with none picked (or auto-select on) the
|
|
196
|
+
// whole list.
|
|
197
|
+
const modelsFor = (applies: (u: ComposerUseCase) => boolean) => {
|
|
198
|
+
const ids = new Set(modelSections.filter((s) => applies(s.useCase)).flatMap((s) => s.options.map((o) => o.id)));
|
|
199
|
+
const picked = pickedModels.filter((m) => ids.has(m.id));
|
|
200
|
+
return { picked, offered: picked.length > 0 && !autoSelectModel ? picked : allModels.filter((m) => ids.has(m.id)) };
|
|
201
|
+
};
|
|
202
|
+
|
|
169
203
|
// An edit keeps the source image's shape.
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
//
|
|
204
|
+
const isVisual = (u: ComposerUseCase) => !u.edit && (u.kind === "image" || u.kind === "video");
|
|
205
|
+
const showAspectRatio = activeUseCases.some(isVisual);
|
|
206
|
+
// Only ratios every model that might run takes, so whichever runs can
|
|
173
207
|
// honor it. A model with no `aspectRatios` sets its own shape: no menu.
|
|
174
|
-
const ratioModels =
|
|
208
|
+
const ratioModels = modelsFor(isVisual).offered;
|
|
175
209
|
const sharedRatios =
|
|
176
210
|
ratioModels.reduce<string[] | null>((shared, m) => (shared ?? m.aspectRatios ?? []).filter((r) => m.aspectRatios?.includes(r)), null) ??
|
|
177
211
|
[];
|
|
@@ -185,10 +219,41 @@ export function composerView(props: ComposerViewInput) {
|
|
|
185
219
|
// A world's frame rate works like aspect ratio: only rates every model
|
|
186
220
|
// that might run takes, and a pick outside them is never sent.
|
|
187
221
|
const frameRateOptions = world
|
|
188
|
-
? (
|
|
222
|
+
? (modelsFor((u) => u.kind === "world").offered.reduce<number[] | null>((shared, m) => (shared ?? m.frameRates ?? []).filter((r) => m.frameRates?.includes(r)), null) ?? [])
|
|
189
223
|
: [];
|
|
190
224
|
const offeredFrameRate = frameRate != null && frameRateOptions.includes(frameRate) ? frameRate : null;
|
|
191
225
|
|
|
226
|
+
// A voice belongs to one model: the Voice menu shows once exactly one is
|
|
227
|
+
// picked, never under auto-select (no model yet to take voices from).
|
|
228
|
+
const speechPicks = modelsFor((u) => u.audio === "speech").picked;
|
|
229
|
+
const voiceModel = audio === "speech" && !autoSelectModel && speechPicks.length === 1 ? speechPicks[0] : undefined;
|
|
230
|
+
const voiceOptions = voiceModel?.voices ?? [];
|
|
231
|
+
const offeredVoice = voiceOptions.some((v) => v.value === speechVoice) ? speechVoice : null;
|
|
232
|
+
const voiceSections = voiceOptions.some((v) => v.group)
|
|
233
|
+
? [...new Set(voiceOptions.map((v) => v.group ?? ""))].map((label) => ({
|
|
234
|
+
label,
|
|
235
|
+
options: voiceOptions.filter((v) => (v.group ?? "") === label),
|
|
236
|
+
}))
|
|
237
|
+
: null;
|
|
238
|
+
|
|
239
|
+
// Genres every picked music model lists, once one is picked. A pick the
|
|
240
|
+
// current models don't list is shown as unpicked and never sent.
|
|
241
|
+
const genreModels = audio === "music" && !autoSelectModel ? modelsFor((u) => u.audio === "music").picked : [];
|
|
242
|
+
const genreOptions =
|
|
243
|
+
genreModels.length > 0
|
|
244
|
+
? (genreModels.reduce<ParameterOption<string>[] | null>(
|
|
245
|
+
(shared, m) => (shared ?? m.genres ?? []).filter((g) => m.genres?.some((o) => o.value === g.value)),
|
|
246
|
+
null
|
|
247
|
+
) ?? [])
|
|
248
|
+
: [];
|
|
249
|
+
const offeredGenres = genres.filter((g) => genreOptions.some((o) => o.value === g));
|
|
250
|
+
const genreTriggerLabel =
|
|
251
|
+
offeredGenres.length === 0
|
|
252
|
+
? "Genre"
|
|
253
|
+
: offeredGenres.length === 1
|
|
254
|
+
? genreOptions.find((o) => o.value === offeredGenres[0])!.label
|
|
255
|
+
: `${offeredGenres.length} genres`;
|
|
256
|
+
|
|
192
257
|
const selections = (): ComposerSelection[] =>
|
|
193
258
|
activeUseCases.map((u) => ({
|
|
194
259
|
useCase: u,
|
|
@@ -204,7 +269,7 @@ export function composerView(props: ComposerViewInput) {
|
|
|
204
269
|
* belongs to the Model menu it was turned on in, so a new use case
|
|
205
270
|
* starts with its model picked by hand.
|
|
206
271
|
*/
|
|
207
|
-
useCaseKey: pickedUseCases.map((u) => `${u.kind}${u.edit ? ":edit" : ""}`).join(","),
|
|
272
|
+
useCaseKey: pickedUseCases.map((u) => `${u.kind}${u.edit ? ":edit" : ""}${u.audio ? `:${u.audio}` : ""}`).join(","),
|
|
208
273
|
activeUseCases,
|
|
209
274
|
editing,
|
|
210
275
|
isSubmitDisabled,
|
|
@@ -237,6 +302,20 @@ export function composerView(props: ComposerViewInput) {
|
|
|
237
302
|
characterPlaceholder: "Describe who you play as, or leave this empty",
|
|
238
303
|
frameRateOptions,
|
|
239
304
|
offeredFrameRate,
|
|
305
|
+
/** Create speech's Voice menu: the one picked model's voices, in sections when they have groups. */
|
|
306
|
+
voiceOptions,
|
|
307
|
+
voiceSections,
|
|
308
|
+
offeredVoice,
|
|
309
|
+
voiceTriggerLabel: voiceOptions.find((v) => v.value === offeredVoice)?.label ?? "Voice",
|
|
310
|
+
/** Create music's Genre menu, several at once. */
|
|
311
|
+
genreOptions,
|
|
312
|
+
offeredGenres,
|
|
313
|
+
genreTriggerLabel,
|
|
314
|
+
/** The genres after a row click: that one toggled. */
|
|
315
|
+
toggledGenres: (value: string) =>
|
|
316
|
+
offeredGenres.includes(value) ? offeredGenres.filter((g) => g !== value) : [...offeredGenres, value],
|
|
317
|
+
/** Past this many options, a Voice or Genre menu gets a search field. */
|
|
318
|
+
searchableAt: 10,
|
|
240
319
|
/** The model ids after a row click: the one picked, or with multi-select that one toggled. */
|
|
241
320
|
toggledModelIds: (id: string) => (modelIds.includes(id) ? modelIds.filter((m) => m !== id) : [...modelIds, id]),
|
|
242
321
|
/** Everything a submit sends. */
|
|
@@ -250,6 +329,8 @@ export function composerView(props: ComposerViewInput) {
|
|
|
250
329
|
autoSelectModel,
|
|
251
330
|
regions: editing ? regions : [],
|
|
252
331
|
...(world && { character, frameRate: offeredFrameRate }),
|
|
332
|
+
...(audio === "speech" && { speechVoice: offeredVoice }),
|
|
333
|
+
...(audio === "music" && { genres: offeredGenres }),
|
|
253
334
|
}),
|
|
254
335
|
};
|
|
255
336
|
}
|
|
@@ -259,17 +340,19 @@ export type ComposerView = ReturnType<typeof composerView>;
|
|
|
259
340
|
/**
|
|
260
341
|
* The `+` menu items that can work: "Add media" needs somewhere to put
|
|
261
342
|
* files, the use-case items a handler. With no `actions`, every item that
|
|
262
|
-
* isn't opt-in.
|
|
343
|
+
* isn't opt-in. `divider` marks the last showing item of a group with
|
|
344
|
+
* another group after it.
|
|
263
345
|
*/
|
|
264
346
|
export function composerAttachMenuItems(
|
|
265
347
|
actions: ComposerAttachMenuAction[] | undefined,
|
|
266
348
|
{ canAddMedia, canSelect }: { canAddMedia: boolean; canSelect: boolean }
|
|
267
349
|
) {
|
|
268
|
-
|
|
350
|
+
const shown = COMPOSER_ATTACH_MENU_ITEMS.filter(
|
|
269
351
|
(item) =>
|
|
270
352
|
(actions ? actions.includes(item.action) : !item.optIn) &&
|
|
271
353
|
(item.action === "add-media" ? canAddMedia : canSelect)
|
|
272
354
|
);
|
|
355
|
+
return shown.map((item, i) => ({ ...item, divider: i < shown.length - 1 && shown[i + 1]!.group !== item.group }));
|
|
273
356
|
}
|
|
274
357
|
|
|
275
358
|
/**
|