@nodaro/prompts 1.46.0 → 1.48.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/{catalog-packs-C9CXEWfl.d.cts → catalog-packs-BDsrv8St.d.cts} +1 -1
- package/dist/{catalog-packs-D7NJpo4k.d.ts → catalog-packs-CAK42voB.d.ts} +1 -1
- package/dist/{chunk-SMKIVT7P.js → chunk-36XMRVY4.js} +4 -4
- package/dist/{chunk-SMKIVT7P.js.map → chunk-36XMRVY4.js.map} +1 -1
- package/dist/{chunk-JHEZJKTX.cjs → chunk-54BYDWAM.cjs} +62 -52
- package/dist/chunk-54BYDWAM.cjs.map +1 -0
- package/dist/{chunk-IKHRZ5UQ.js → chunk-BTV2I7EN.js} +3 -3
- package/dist/{chunk-IKHRZ5UQ.js.map → chunk-BTV2I7EN.js.map} +1 -1
- package/dist/{chunk-57PTYJJX.js → chunk-CMEUYFBZ.js} +13 -13
- package/dist/chunk-CMEUYFBZ.js.map +1 -0
- package/dist/{chunk-2OIKQ4WB.js → chunk-GZVCBSFG.js} +5 -5
- package/dist/{chunk-2OIKQ4WB.js.map → chunk-GZVCBSFG.js.map} +1 -1
- package/dist/{chunk-FCTK7RGO.cjs → chunk-IMQB7GIK.cjs} +42 -39
- package/dist/chunk-IMQB7GIK.cjs.map +1 -0
- package/dist/{chunk-2HJJBXGA.js → chunk-JHRVNWBS.js} +6 -6
- package/dist/{chunk-2HJJBXGA.js.map → chunk-JHRVNWBS.js.map} +1 -1
- package/dist/{chunk-OSKABA64.cjs → chunk-JV2WSMAA.cjs} +8 -8
- package/dist/{chunk-OSKABA64.cjs.map → chunk-JV2WSMAA.cjs.map} +1 -1
- package/dist/{chunk-VAK4RUNU.cjs → chunk-KNAKOSKV.cjs} +13 -13
- package/dist/{chunk-VAK4RUNU.cjs.map → chunk-KNAKOSKV.cjs.map} +1 -1
- package/dist/{chunk-TXHFL725.js → chunk-LD47QOKS.js} +62 -53
- package/dist/chunk-LD47QOKS.js.map +1 -0
- package/dist/{chunk-QKD2KUZW.cjs → chunk-MGK6SFTV.cjs} +20 -6
- package/dist/chunk-MGK6SFTV.cjs.map +1 -0
- package/dist/{chunk-YCCQXX3U.cjs → chunk-MYVJVOPB.cjs} +39 -39
- package/dist/{chunk-YCCQXX3U.cjs.map → chunk-MYVJVOPB.cjs.map} +1 -1
- package/dist/{chunk-PHR4UETI.cjs → chunk-PJFX3MFI.cjs} +18 -18
- package/dist/{chunk-PHR4UETI.cjs.map → chunk-PJFX3MFI.cjs.map} +1 -1
- package/dist/{chunk-PUWJ2ZBG.js → chunk-RRHU6MD5.js} +20 -6
- package/dist/chunk-RRHU6MD5.js.map +1 -0
- package/dist/{chunk-NN4FL7SB.js → chunk-XBRW75LM.js} +4 -4
- package/dist/{chunk-NN4FL7SB.js.map → chunk-XBRW75LM.js.map} +1 -1
- package/dist/{chunk-C4FDHCEZ.cjs → chunk-XGNUOU4F.cjs} +125 -125
- package/dist/{chunk-C4FDHCEZ.cjs.map → chunk-XGNUOU4F.cjs.map} +1 -1
- package/dist/{chunk-CPKYIVWP.js → chunk-YXJSPQC6.js} +12 -9
- package/dist/chunk-YXJSPQC6.js.map +1 -0
- package/dist/{chunk-OY7XOPDG.cjs → chunk-Z755PH3K.cjs} +57 -57
- package/dist/chunk-Z755PH3K.cjs.map +1 -0
- package/dist/entries/assembly.cjs +28 -28
- package/dist/entries/assembly.d.cts +1 -2
- package/dist/entries/assembly.d.ts +1 -2
- package/dist/entries/assembly.js +5 -5
- package/dist/entries/catalog-packs.d.cts +3 -3
- package/dist/entries/catalog-packs.d.ts +3 -3
- package/dist/entries/person.d.cts +2 -2
- package/dist/entries/person.d.ts +2 -2
- package/dist/entries/picker-catalogs.cjs +56 -56
- package/dist/entries/picker-catalogs.d.cts +26 -4
- package/dist/entries/picker-catalogs.d.ts +26 -4
- package/dist/entries/picker-catalogs.js +4 -4
- package/dist/entries/pickers.cjs +377 -373
- package/dist/entries/pickers.d.cts +473 -2
- package/dist/entries/pickers.d.ts +473 -2
- package/dist/entries/pickers.js +2 -2
- package/dist/entries/presets.cjs +35 -35
- package/dist/entries/presets.js +1 -1
- package/dist/entries/prompt-builder.cjs +75 -75
- package/dist/entries/prompt-builder.d.cts +2 -3
- package/dist/entries/prompt-builder.d.ts +2 -3
- package/dist/entries/prompt-builder.js +4 -4
- package/dist/index.cjs +564 -560
- package/dist/index.d.cts +5 -6
- package/dist/index.d.ts +5 -6
- package/dist/index.js +9 -9
- package/dist/{picker-catalogs-C3utGMRB.d.cts → picker-catalogs-BiRCs_5G.d.cts} +8 -0
- package/dist/{picker-catalogs-BM8IphF1.d.ts → picker-catalogs-CX8pHi8q.d.ts} +8 -0
- package/dist/{subject-registry-DFiGx49v.d.ts → subject-registry-Cf802LQ5.d.ts} +8 -4
- package/dist/{subject-registry-CQi_CZfJ.d.cts → subject-registry-D2uMBVpP.d.cts} +8 -4
- package/package.json +2 -2
- package/src/__tests__/assemble-video-input.test.ts +13 -11
- package/src/__tests__/direction-registry.test.ts +5 -5
- package/src/__tests__/factory-presets.test.ts +26 -2
- package/src/__tests__/image-unwired-reference-tokens.test.ts +3 -2
- package/src/__tests__/prompt-style-section.test.ts +2 -2
- package/src/__tests__/style-video-wording.test.ts +258 -0
- package/src/catalog-overlay.ts +15 -1
- package/src/direction-registry.ts +25 -7
- package/src/factory-presets/generate-image.ts +18 -4
- package/src/parameter-prompt-hint.ts +23 -7
- package/src/picker-catalogs.ts +11 -0
- package/src/style.ts +78 -49
- package/dist/chunk-57PTYJJX.js.map +0 -1
- package/dist/chunk-CPKYIVWP.js.map +0 -1
- package/dist/chunk-FCTK7RGO.cjs.map +0 -1
- package/dist/chunk-JHEZJKTX.cjs.map +0 -1
- package/dist/chunk-OY7XOPDG.cjs.map +0 -1
- package/dist/chunk-PUWJ2ZBG.js.map +0 -1
- package/dist/chunk-QKD2KUZW.cjs.map +0 -1
- package/dist/chunk-TXHFL725.js.map +0 -1
- package/dist/transitions-BLFfAJUH.d.cts +0 -450
- package/dist/transitions-BgwWM37i.d.ts +0 -450
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getRegisteredSubjectKeys, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_ID_MAX_CHARS, SUBJECT_ARRAY_CEILING } from './chunk-
|
|
2
|
-
import { DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_ARRAY_CEILING } from './chunk-
|
|
1
|
+
import { getRegisteredSubjectKeys, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_ID_MAX_CHARS, SUBJECT_ARRAY_CEILING } from './chunk-36XMRVY4.js';
|
|
2
|
+
import { DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_ARRAY_CEILING } from './chunk-YXJSPQC6.js';
|
|
3
3
|
|
|
4
4
|
// src/read-node-direction.ts
|
|
5
5
|
function readDirectionFields(value) {
|
|
@@ -114,5 +114,5 @@ function readStructuredFields(value) {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
export { readDirectionFields, readStructuredFields, readSubjectFields };
|
|
117
|
-
//# sourceMappingURL=chunk-
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
117
|
+
//# sourceMappingURL=chunk-XBRW75LM.js.map
|
|
118
|
+
//# sourceMappingURL=chunk-XBRW75LM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/read-node-direction.ts"],"names":[],"mappings":"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","file":"chunk-NN4FL7SB.js","sourcesContent":["/**\n * Narrow readers turning UNTRUSTED persisted node data (`workflows.nodes`\n * JSONB — import, MCP write, node preset, a Studio-emitted graph) into the\n * typed `subject` / `direction` / `structured` levers `assembleImageInput`\n * accepts.\n * `buildPayload` has no zod and workflow writes are\n * `z.record(z.string(), z.unknown())`, so this blob may have been written years\n * ago by any client.\n *\n * Used by ALL THREE image-assembly sites so what the canvas accepts cannot\n * drift between them: the frontend single-node executor (`execute-node.ts`),\n * the orchestrator (`payload-builder.ts`), and the config-panel final-prompt\n * preview (`build-image-assemble-input.ts`).\n *\n * `readDirectionFields` is DERIVED FROM `DIRECTION_FIELDS`, never a hand list:\n * a dimension added to the registry is honored here by construction, so the\n * reader can never silently drop a key the wire schema and the renderer both\n * know about. Anything unrecognised is DROPPED, never thrown on — a malformed\n * blob must not fail a canvas run, and an unknown catalog ID already degrades\n * to `\"\"` inside each `get*PromptHint`, so this validates SHAPE only.\n *\n * BOUNDS MATCH THE WIRE SCHEMA where both exist, by SHARED CONSTANT:\n * `DIRECTION_ID_MAX_CHARS` and `DIRECTION_ARRAY_CEILING` are the same two\n * literals the `generate-image` route's `directionSchema` enforces, imported\n * from the registry rather than re-typed here — a body the route accepts and a\n * node the canvas re-runs must not disagree about which strings are ids.\n *\n * DELIBERATELY STRICTER THAN THE WIRE SCHEMA on `structured` values: the\n * route's `structuredPromptFieldsSchema` declares every field as a bare\n * `z.string().optional()` (unbounded), while `MAX_STRUCTURED_VALUE_CHARS` below\n * bounds them at 200. Do not \"fix\" that asymmetry by loosening HERE — this\n * reads a blob any client may have written years ago, and the values land\n * verbatim in `jobs.input_data.prompt`. Tightening the ROUTE instead would be a\n * new 400 on currently-accepted input, so a >200-char structured value stored\n * on a node is dropped on a canvas run while `POST /v1/generate-image` still\n * renders it. That is the one known divergence; it is bounded to a field the\n * canvas UI never writes that long.\n *\n * RETURNS `undefined`, NEVER `{}`: an empty object would still be a *defined*\n * `direction`, and the call sites' `...(x !== undefined ? { x } : {})` spread\n * would then hand `assembleImageInput` a defined-but-empty lever. Returning\n * `undefined` keeps that spread honest and the exact no-op branch taken.\n */\nimport {\n DIRECTION_ARRAY_CEILING,\n DIRECTION_FIELDS,\n DIRECTION_ID_MAX_CHARS,\n type DirectionFields,\n} from \"./direction-registry.js\"\nimport {\n SUBJECT_ARRAY_CEILING,\n SUBJECT_CUSTOM_AGE_KEY,\n SUBJECT_ID_MAX_CHARS,\n getRegisteredSubjectKeys,\n type SubjectFields,\n} from \"./subject-registry.js\"\nimport type { StructuredPromptFields } from \"./prompt-builder-structured-fields.js\"\n\n/**\n * Read a node's stored cinematic-direction ids. Accepts a single id OR an array\n * on every key (multi-pick dimensions carry arrays; a single-pick key may\n * legitimately carry one).\n *\n * The SEMANTIC per-dimension cap stays the renderer's slice (`maxPicks`) — this\n * reader does not know a row's pick budget and must not guess it. But it DOES\n * bound cardinality at `DIRECTION_ARRAY_CEILING`, the same ceiling the wire\n * schema enforces: the value is untrusted persisted JSONB (a node blob is\n * validated only as `z.record(z.string(), z.unknown())` on write), and handing\n * an unbounded array to `renderDirectionHints` would put an `includes`-dedupe\n * scan in front of that slice. Keeping the FIRST `DIRECTION_ARRAY_CEILING`\n * survivors is what the wire door already does to the same input.\n *\n * Junk is filtered BEFORE the cap, so valid ids sitting behind malformed\n * entries survive rather than being crowded out by them.\n */\nexport function readDirectionFields(value: unknown): DirectionFields | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined\n const src = value as Record<string, unknown>\n const out: Record<string, string | string[]> = {}\n for (const spec of DIRECTION_FIELDS) {\n const v = src[spec.key]\n if (typeof v === \"string\") {\n if (v.length > 0 && v.length <= DIRECTION_ID_MAX_CHARS) out[spec.key] = v\n } else if (Array.isArray(v)) {\n const kept: string[] = []\n for (const x of v) {\n if (kept.length >= DIRECTION_ARRAY_CEILING) break\n if (typeof x === \"string\" && x.length > 0 && x.length <= DIRECTION_ID_MAX_CHARS) {\n kept.push(x)\n }\n }\n if (kept.length > 0) out[spec.key] = kept\n }\n }\n return Object.keys(out).length > 0 ? (out as DirectionFields) : undefined\n}\n\n// ── subject ──────────────────────────────────────────────────────────────────\n\n/**\n * Read a node's stored SUBJECT ids — the flat Person / Styling / prop bag the\n * `subject` channel carries. Same three contracts as `readDirectionFields`:\n * drop-never-throw, `undefined` never `{}`, and bounds shared with the wire\n * door by CONSTANT (`SUBJECT_ID_MAX_CHARS` / `SUBJECT_ARRAY_CEILING`, which are\n * defined AS the direction constants) so a body the route accepts and the same\n * node re-run from the canvas cannot disagree about which strings are ids.\n *\n * DERIVED from `getRegisteredSubjectKeys()`, never a hand-authored field list —\n * that is the whole lesson of `readStructuredFields` below, whose hand table is\n * only viable because `StructuredPromptFields` is a small hand-authored type.\n * The subject vocabulary is ~54 catalog-derived fields PLUS deployment-registered\n * pack dimensions unknown at compile time, so it is read from the registry at\n * call time. Iterating the KEY SET (never `Object.keys(value)`) is also what\n * keeps an adversarial blob's key count off the hot path.\n *\n * The SEMANTIC per-dimension cap stays the renderer's job\n * (`normalizeSubjectFields`), exactly as `maxPicks` does for direction: this\n * reader bounds cardinality only. `customAge` is the one number on the wire and\n * is passed through finite-only — the renderer clamps it.\n */\nexport function readSubjectFields(value: unknown): SubjectFields | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined\n const src = value as Record<string, unknown>\n const out: Record<string, string | string[] | number> = {}\n for (const key of getRegisteredSubjectKeys()) {\n const v = src[key]\n if (key === SUBJECT_CUSTOM_AGE_KEY) {\n if (typeof v === \"number\" && Number.isFinite(v)) out[key] = v\n continue\n }\n if (typeof v === \"string\") {\n if (v.length > 0 && v.length <= SUBJECT_ID_MAX_CHARS) out[key] = v\n } else if (Array.isArray(v)) {\n // Junk is filtered BEFORE the cap, so valid ids sitting behind malformed\n // entries survive rather than being crowded out by them.\n const kept: string[] = []\n for (const x of v) {\n if (kept.length >= SUBJECT_ARRAY_CEILING) break\n if (typeof x === \"string\" && x.length > 0 && x.length <= SUBJECT_ID_MAX_CHARS) {\n kept.push(x)\n }\n }\n if (kept.length > 0) out[key] = kept\n }\n }\n return Object.keys(out).length > 0 ? (out as SubjectFields) : undefined\n}\n\n// ── structured ───────────────────────────────────────────────────────────────\n\ntype FieldKind = \"string\" | \"number\" | \"gender\"\nconst GENDERS = [\"man\", \"woman\", \"child\", \"non-binary\"] as const\nconst MAX_STRUCTURED_VALUE_CHARS = 200\n\ntype Group = Exclude<keyof StructuredPromptFields, \"mood\">\ntype GroupFields<K extends Group> = Record<keyof NonNullable<StructuredPromptFields[K]>, FieldKind>\n\n/**\n * A FIELD-BY-FIELD table (not a registry walk) on purpose:\n * `StructuredPromptFields` is a small HAND-AUTHORED type, not catalog-derived,\n * and the table is what blocks `person: { age: \"drop table\" }` from rendering\n * verbatim into `jobs.input_data.prompt` — `renderStructuredFields` never\n * throws on junk, but it does render it. Totality is enforced by the\n * `GroupFields<K>` / `{ [K in Group]: … }` mapped types: a new field or group\n * on the published type fails to typecheck here.\n */\nconst PERSON_FIELDS: GroupFields<\"person\"> = {\n age: \"number\",\n gender: \"gender\",\n hair: \"string\",\n eyes: \"string\",\n expression: \"string\",\n profession: \"string\",\n warriorType: \"string\",\n}\nconst STYLING_FIELDS: GroupFields<\"styling\"> = {\n mood: \"string\",\n lighting: \"string\",\n aesthetic: \"string\",\n colorLook: \"string\",\n}\nconst SETTING_FIELDS: GroupFields<\"setting\"> = {\n era: \"string\",\n atmosphere: \"string\",\n backdrop: \"string\",\n}\nconst CAMERA_FIELDS: GroupFields<\"camera\"> = {\n framing: \"string\",\n motion: \"string\",\n format: \"string\",\n}\nconst LENS_FIELDS: GroupFields<\"lens\"> = { focalLength: \"string\", aperture: \"string\" }\n\nconst STRUCTURED_GROUPS: { [K in Group]: GroupFields<K> } = {\n person: PERSON_FIELDS,\n styling: STYLING_FIELDS,\n setting: SETTING_FIELDS,\n camera: CAMERA_FIELDS,\n lens: LENS_FIELDS,\n}\n\nfunction readField(v: unknown, kind: FieldKind): string | number | undefined {\n if (kind === \"number\") return typeof v === \"number\" && Number.isFinite(v) ? v : undefined\n if (typeof v !== \"string\" || v.length === 0 || v.length > MAX_STRUCTURED_VALUE_CHARS) {\n return undefined\n }\n if (kind === \"gender\") return (GENDERS as readonly string[]).includes(v) ? v : undefined\n return v\n}\n\n/** Read a node's stored Path-1 structured prompt fields. Same drop-never-throw\n * and `undefined`-never-`{}` contract as `readDirectionFields`. */\nexport function readStructuredFields(value: unknown): StructuredPromptFields | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined\n const src = value as Record<string, unknown>\n const out: Record<string, unknown> = {}\n for (const group of Object.keys(STRUCTURED_GROUPS) as Group[]) {\n const raw = src[group]\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) continue\n const rawRec = raw as Record<string, unknown>\n const kept: Record<string, unknown> = {}\n for (const [field, kind] of Object.entries(\n STRUCTURED_GROUPS[group] as Record<string, FieldKind>,\n )) {\n const v = readField(rawRec[field], kind)\n if (v !== undefined) kept[field] = v\n }\n if (Object.keys(kept).length > 0) out[group] = kept\n }\n const mood = readField(src.mood, \"string\")\n if (mood !== undefined) out.mood = mood\n return Object.keys(out).length > 0 ? (out as StructuredPromptFields) : undefined\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/read-node-direction.ts"],"names":[],"mappings":"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","file":"chunk-XBRW75LM.js","sourcesContent":["/**\n * Narrow readers turning UNTRUSTED persisted node data (`workflows.nodes`\n * JSONB — import, MCP write, node preset, a Studio-emitted graph) into the\n * typed `subject` / `direction` / `structured` levers `assembleImageInput`\n * accepts.\n * `buildPayload` has no zod and workflow writes are\n * `z.record(z.string(), z.unknown())`, so this blob may have been written years\n * ago by any client.\n *\n * Used by ALL THREE image-assembly sites so what the canvas accepts cannot\n * drift between them: the frontend single-node executor (`execute-node.ts`),\n * the orchestrator (`payload-builder.ts`), and the config-panel final-prompt\n * preview (`build-image-assemble-input.ts`).\n *\n * `readDirectionFields` is DERIVED FROM `DIRECTION_FIELDS`, never a hand list:\n * a dimension added to the registry is honored here by construction, so the\n * reader can never silently drop a key the wire schema and the renderer both\n * know about. Anything unrecognised is DROPPED, never thrown on — a malformed\n * blob must not fail a canvas run, and an unknown catalog ID already degrades\n * to `\"\"` inside each `get*PromptHint`, so this validates SHAPE only.\n *\n * BOUNDS MATCH THE WIRE SCHEMA where both exist, by SHARED CONSTANT:\n * `DIRECTION_ID_MAX_CHARS` and `DIRECTION_ARRAY_CEILING` are the same two\n * literals the `generate-image` route's `directionSchema` enforces, imported\n * from the registry rather than re-typed here — a body the route accepts and a\n * node the canvas re-runs must not disagree about which strings are ids.\n *\n * DELIBERATELY STRICTER THAN THE WIRE SCHEMA on `structured` values: the\n * route's `structuredPromptFieldsSchema` declares every field as a bare\n * `z.string().optional()` (unbounded), while `MAX_STRUCTURED_VALUE_CHARS` below\n * bounds them at 200. Do not \"fix\" that asymmetry by loosening HERE — this\n * reads a blob any client may have written years ago, and the values land\n * verbatim in `jobs.input_data.prompt`. Tightening the ROUTE instead would be a\n * new 400 on currently-accepted input, so a >200-char structured value stored\n * on a node is dropped on a canvas run while `POST /v1/generate-image` still\n * renders it. That is the one known divergence; it is bounded to a field the\n * canvas UI never writes that long.\n *\n * RETURNS `undefined`, NEVER `{}`: an empty object would still be a *defined*\n * `direction`, and the call sites' `...(x !== undefined ? { x } : {})` spread\n * would then hand `assembleImageInput` a defined-but-empty lever. Returning\n * `undefined` keeps that spread honest and the exact no-op branch taken.\n */\nimport {\n DIRECTION_ARRAY_CEILING,\n DIRECTION_FIELDS,\n DIRECTION_ID_MAX_CHARS,\n type DirectionFields,\n} from \"./direction-registry.js\"\nimport {\n SUBJECT_ARRAY_CEILING,\n SUBJECT_CUSTOM_AGE_KEY,\n SUBJECT_ID_MAX_CHARS,\n getRegisteredSubjectKeys,\n type SubjectFields,\n} from \"./subject-registry.js\"\nimport type { StructuredPromptFields } from \"./prompt-builder-structured-fields.js\"\n\n/**\n * Read a node's stored cinematic-direction ids. Accepts a single id OR an array\n * on every key (multi-pick dimensions carry arrays; a single-pick key may\n * legitimately carry one).\n *\n * The SEMANTIC per-dimension cap stays the renderer's slice (`maxPicks`) — this\n * reader does not know a row's pick budget and must not guess it. But it DOES\n * bound cardinality at `DIRECTION_ARRAY_CEILING`, the same ceiling the wire\n * schema enforces: the value is untrusted persisted JSONB (a node blob is\n * validated only as `z.record(z.string(), z.unknown())` on write), and handing\n * an unbounded array to `renderDirectionHints` would put an `includes`-dedupe\n * scan in front of that slice. Keeping the FIRST `DIRECTION_ARRAY_CEILING`\n * survivors is what the wire door already does to the same input.\n *\n * Junk is filtered BEFORE the cap, so valid ids sitting behind malformed\n * entries survive rather than being crowded out by them.\n */\nexport function readDirectionFields(value: unknown): DirectionFields | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined\n const src = value as Record<string, unknown>\n const out: Record<string, string | string[]> = {}\n for (const spec of DIRECTION_FIELDS) {\n const v = src[spec.key]\n if (typeof v === \"string\") {\n if (v.length > 0 && v.length <= DIRECTION_ID_MAX_CHARS) out[spec.key] = v\n } else if (Array.isArray(v)) {\n const kept: string[] = []\n for (const x of v) {\n if (kept.length >= DIRECTION_ARRAY_CEILING) break\n if (typeof x === \"string\" && x.length > 0 && x.length <= DIRECTION_ID_MAX_CHARS) {\n kept.push(x)\n }\n }\n if (kept.length > 0) out[spec.key] = kept\n }\n }\n return Object.keys(out).length > 0 ? (out as DirectionFields) : undefined\n}\n\n// ── subject ──────────────────────────────────────────────────────────────────\n\n/**\n * Read a node's stored SUBJECT ids — the flat Person / Styling / prop bag the\n * `subject` channel carries. Same three contracts as `readDirectionFields`:\n * drop-never-throw, `undefined` never `{}`, and bounds shared with the wire\n * door by CONSTANT (`SUBJECT_ID_MAX_CHARS` / `SUBJECT_ARRAY_CEILING`, which are\n * defined AS the direction constants) so a body the route accepts and the same\n * node re-run from the canvas cannot disagree about which strings are ids.\n *\n * DERIVED from `getRegisteredSubjectKeys()`, never a hand-authored field list —\n * that is the whole lesson of `readStructuredFields` below, whose hand table is\n * only viable because `StructuredPromptFields` is a small hand-authored type.\n * The subject vocabulary is ~54 catalog-derived fields PLUS deployment-registered\n * pack dimensions unknown at compile time, so it is read from the registry at\n * call time. Iterating the KEY SET (never `Object.keys(value)`) is also what\n * keeps an adversarial blob's key count off the hot path.\n *\n * The SEMANTIC per-dimension cap stays the renderer's job\n * (`normalizeSubjectFields`), exactly as `maxPicks` does for direction: this\n * reader bounds cardinality only. `customAge` is the one number on the wire and\n * is passed through finite-only — the renderer clamps it.\n */\nexport function readSubjectFields(value: unknown): SubjectFields | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined\n const src = value as Record<string, unknown>\n const out: Record<string, string | string[] | number> = {}\n for (const key of getRegisteredSubjectKeys()) {\n const v = src[key]\n if (key === SUBJECT_CUSTOM_AGE_KEY) {\n if (typeof v === \"number\" && Number.isFinite(v)) out[key] = v\n continue\n }\n if (typeof v === \"string\") {\n if (v.length > 0 && v.length <= SUBJECT_ID_MAX_CHARS) out[key] = v\n } else if (Array.isArray(v)) {\n // Junk is filtered BEFORE the cap, so valid ids sitting behind malformed\n // entries survive rather than being crowded out by them.\n const kept: string[] = []\n for (const x of v) {\n if (kept.length >= SUBJECT_ARRAY_CEILING) break\n if (typeof x === \"string\" && x.length > 0 && x.length <= SUBJECT_ID_MAX_CHARS) {\n kept.push(x)\n }\n }\n if (kept.length > 0) out[key] = kept\n }\n }\n return Object.keys(out).length > 0 ? (out as SubjectFields) : undefined\n}\n\n// ── structured ───────────────────────────────────────────────────────────────\n\ntype FieldKind = \"string\" | \"number\" | \"gender\"\nconst GENDERS = [\"man\", \"woman\", \"child\", \"non-binary\"] as const\nconst MAX_STRUCTURED_VALUE_CHARS = 200\n\ntype Group = Exclude<keyof StructuredPromptFields, \"mood\">\ntype GroupFields<K extends Group> = Record<keyof NonNullable<StructuredPromptFields[K]>, FieldKind>\n\n/**\n * A FIELD-BY-FIELD table (not a registry walk) on purpose:\n * `StructuredPromptFields` is a small HAND-AUTHORED type, not catalog-derived,\n * and the table is what blocks `person: { age: \"drop table\" }` from rendering\n * verbatim into `jobs.input_data.prompt` — `renderStructuredFields` never\n * throws on junk, but it does render it. Totality is enforced by the\n * `GroupFields<K>` / `{ [K in Group]: … }` mapped types: a new field or group\n * on the published type fails to typecheck here.\n */\nconst PERSON_FIELDS: GroupFields<\"person\"> = {\n age: \"number\",\n gender: \"gender\",\n hair: \"string\",\n eyes: \"string\",\n expression: \"string\",\n profession: \"string\",\n warriorType: \"string\",\n}\nconst STYLING_FIELDS: GroupFields<\"styling\"> = {\n mood: \"string\",\n lighting: \"string\",\n aesthetic: \"string\",\n colorLook: \"string\",\n}\nconst SETTING_FIELDS: GroupFields<\"setting\"> = {\n era: \"string\",\n atmosphere: \"string\",\n backdrop: \"string\",\n}\nconst CAMERA_FIELDS: GroupFields<\"camera\"> = {\n framing: \"string\",\n motion: \"string\",\n format: \"string\",\n}\nconst LENS_FIELDS: GroupFields<\"lens\"> = { focalLength: \"string\", aperture: \"string\" }\n\nconst STRUCTURED_GROUPS: { [K in Group]: GroupFields<K> } = {\n person: PERSON_FIELDS,\n styling: STYLING_FIELDS,\n setting: SETTING_FIELDS,\n camera: CAMERA_FIELDS,\n lens: LENS_FIELDS,\n}\n\nfunction readField(v: unknown, kind: FieldKind): string | number | undefined {\n if (kind === \"number\") return typeof v === \"number\" && Number.isFinite(v) ? v : undefined\n if (typeof v !== \"string\" || v.length === 0 || v.length > MAX_STRUCTURED_VALUE_CHARS) {\n return undefined\n }\n if (kind === \"gender\") return (GENDERS as readonly string[]).includes(v) ? v : undefined\n return v\n}\n\n/** Read a node's stored Path-1 structured prompt fields. Same drop-never-throw\n * and `undefined`-never-`{}` contract as `readDirectionFields`. */\nexport function readStructuredFields(value: unknown): StructuredPromptFields | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined\n const src = value as Record<string, unknown>\n const out: Record<string, unknown> = {}\n for (const group of Object.keys(STRUCTURED_GROUPS) as Group[]) {\n const raw = src[group]\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) continue\n const rawRec = raw as Record<string, unknown>\n const kept: Record<string, unknown> = {}\n for (const [field, kind] of Object.entries(\n STRUCTURED_GROUPS[group] as Record<string, FieldKind>,\n )) {\n const v = readField(rawRec[field], kind)\n if (v !== undefined) kept[field] = v\n }\n if (Object.keys(kept).length > 0) out[group] = kept\n }\n const mood = readField(src.mood, \"string\")\n if (mood !== undefined) out.mood = mood\n return Object.keys(out).length > 0 ? (out as StructuredPromptFields) : undefined\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkZ755PH3K_cjs = require('./chunk-Z755PH3K.cjs');
|
|
4
|
+
var chunkIMQB7GIK_cjs = require('./chunk-IMQB7GIK.cjs');
|
|
5
|
+
var chunk54BYDWAM_cjs = require('./chunk-54BYDWAM.cjs');
|
|
6
6
|
var chunkK6NT635Z_cjs = require('./chunk-K6NT635Z.cjs');
|
|
7
7
|
var chunkFY4AMIDB_cjs = require('./chunk-FY4AMIDB.cjs');
|
|
8
8
|
var chunkQ7SFCCGT_cjs = require('./chunk-Q7SFCCGT.cjs');
|
|
@@ -34,7 +34,7 @@ function fieldTable() {
|
|
|
34
34
|
m.set(field, catalogId);
|
|
35
35
|
if (!byField.has(field)) byField.set(field, catalogId);
|
|
36
36
|
};
|
|
37
|
-
for (const c of
|
|
37
|
+
for (const c of chunk54BYDWAM_cjs.PICKER_CATALOGS) {
|
|
38
38
|
if (c.valueField) put(c.nodeType, c.valueField, c.catalogId);
|
|
39
39
|
for (const d of c.dimensions ?? []) put(c.nodeType, d.field, c.catalogId);
|
|
40
40
|
for (const f of c.fields ?? []) put(c.nodeType, f, c.catalogId);
|
|
@@ -50,7 +50,7 @@ function composedIds(catalogId) {
|
|
|
50
50
|
if (!idsMemo || idsMemo.v !== v) idsMemo = { v, byCatalog: /* @__PURE__ */ new Map() };
|
|
51
51
|
const hit = idsMemo.byCatalog.get(catalogId);
|
|
52
52
|
if (hit) return hit;
|
|
53
|
-
const cat =
|
|
53
|
+
const cat = chunk54BYDWAM_cjs.getPickerCatalog(catalogId);
|
|
54
54
|
const ids = /* @__PURE__ */ new Set();
|
|
55
55
|
for (const o of cat?.options ?? []) ids.add(o.id);
|
|
56
56
|
for (const d of cat?.dimensions ?? []) for (const o of d.options) ids.add(o.id);
|
|
@@ -66,8 +66,8 @@ function catalogGuardActive() {
|
|
|
66
66
|
return chunkFY4AMIDB_cjs.getRegisteredCatalogPacks().length > 0;
|
|
67
67
|
}
|
|
68
68
|
function isOwnUserRef(field, id) {
|
|
69
|
-
const ref =
|
|
70
|
-
return ref !== null &&
|
|
69
|
+
const ref = chunkIMQB7GIK_cjs.parseUserDirectionRef(id);
|
|
70
|
+
return ref !== null && chunkIMQB7GIK_cjs.userRefKindOfDirectionKey(field) === ref.kind;
|
|
71
71
|
}
|
|
72
72
|
function checkRecord(nodeType, nodeId, data, fields, out, skip) {
|
|
73
73
|
for (const [field, catalogId] of fields) {
|
|
@@ -14639,7 +14639,7 @@ var personCleanup = (patch, mode) => {
|
|
|
14639
14639
|
patch.customAge = void 0;
|
|
14640
14640
|
}
|
|
14641
14641
|
if (chunkK6NT635Z_cjs.isMinorAge(patch)) {
|
|
14642
|
-
const drop =
|
|
14642
|
+
const drop = chunkZ755PH3K_cjs.getAdultOnlyIds();
|
|
14643
14643
|
for (const [k, v] of Object.entries(patch)) {
|
|
14644
14644
|
if (typeof v === "string" && drop.has(v)) patch[k] = void 0;
|
|
14645
14645
|
else if (Array.isArray(v)) patch[k] = v.filter((x) => !(typeof x === "string" && drop.has(x)));
|
|
@@ -14663,61 +14663,61 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14663
14663
|
kind: "discriminated",
|
|
14664
14664
|
toolName: "emit_styling",
|
|
14665
14665
|
discriminator: "dimension",
|
|
14666
|
-
order:
|
|
14667
|
-
fieldByKey:
|
|
14668
|
-
labels:
|
|
14669
|
-
entries:
|
|
14670
|
-
limitFn: (k) =>
|
|
14666
|
+
order: chunk54BYDWAM_cjs.STYLING_DIMENSION_ORDER,
|
|
14667
|
+
fieldByKey: chunk54BYDWAM_cjs.STYLING_FIELD_BY_DIMENSION,
|
|
14668
|
+
labels: chunk54BYDWAM_cjs.STYLING_DIMENSION_LABELS,
|
|
14669
|
+
entries: chunk54BYDWAM_cjs.STYLINGS,
|
|
14670
|
+
limitFn: (k) => chunk54BYDWAM_cjs.getStylingDimensionLimit(k)
|
|
14671
14671
|
},
|
|
14672
14672
|
framing: {
|
|
14673
14673
|
kind: "discriminated",
|
|
14674
14674
|
toolName: "emit_framing",
|
|
14675
14675
|
discriminator: "category",
|
|
14676
|
-
order:
|
|
14677
|
-
fieldByKey:
|
|
14678
|
-
labels:
|
|
14679
|
-
entries:
|
|
14680
|
-
limitFn: (k) =>
|
|
14676
|
+
order: chunk54BYDWAM_cjs.FRAMING_CATEGORY_ORDER,
|
|
14677
|
+
fieldByKey: chunk54BYDWAM_cjs.FRAMING_FIELD_BY_CATEGORY,
|
|
14678
|
+
labels: chunk54BYDWAM_cjs.FRAMING_CATEGORY_LABELS,
|
|
14679
|
+
entries: chunk54BYDWAM_cjs.FRAMINGS,
|
|
14680
|
+
limitFn: (k) => chunk54BYDWAM_cjs.getFramingCategoryLimit(k)
|
|
14681
14681
|
},
|
|
14682
14682
|
lens: {
|
|
14683
14683
|
kind: "flat",
|
|
14684
14684
|
toolName: "emit_lens",
|
|
14685
14685
|
field: "lens",
|
|
14686
14686
|
label: "Lens",
|
|
14687
|
-
entries:
|
|
14687
|
+
entries: chunk54BYDWAM_cjs.LENSES
|
|
14688
14688
|
},
|
|
14689
14689
|
"camera-format": {
|
|
14690
14690
|
kind: "flat",
|
|
14691
14691
|
toolName: "emit_camera_format",
|
|
14692
14692
|
field: "cameraFormat",
|
|
14693
14693
|
label: "Camera / Film Stock",
|
|
14694
|
-
entries:
|
|
14694
|
+
entries: chunk54BYDWAM_cjs.CAMERA_FORMATS
|
|
14695
14695
|
},
|
|
14696
14696
|
// ─── Text-to-picker expansion (Cine AI Fill): every remaining catalog ─────
|
|
14697
14697
|
// Flat single-value pickers — field names match the picker wiring's
|
|
14698
14698
|
// valueField (and the node-data shape the published-app input card writes).
|
|
14699
|
-
setting: { kind: "flat", toolName: "emit_setting", field: "setting", label: "Setting", entries:
|
|
14700
|
-
atmosphere: { kind: "flat", toolName: "emit_atmosphere", field: "atmosphere", label: "Atmosphere", entries:
|
|
14701
|
-
style: { kind: "flat", toolName: "emit_style", field: "style", label: "Style", entries:
|
|
14702
|
-
mood: { kind: "flat", toolName: "emit_mood", field: "mood", label: "Mood", entries:
|
|
14703
|
-
"color-look": { kind: "flat", toolName: "emit_color_look", field: "colorLook", label: "Color / Look", entries:
|
|
14704
|
-
photographer: { kind: "flat", toolName: "emit_photographer", field: "photographer", label: "Photographer / Artist", entries:
|
|
14705
|
-
aesthetic: { kind: "flat", toolName: "emit_aesthetic", field: "aesthetic", label: "Aesthetic / Microtrend", entries:
|
|
14706
|
-
era: { kind: "flat", toolName: "emit_era", field: "era", label: "Era / Period", entries:
|
|
14707
|
-
"photo-genre": { kind: "flat", toolName: "emit_photo_genre", field: "photoGenre", label: "Photo Genre", entries:
|
|
14708
|
-
backdrop: { kind: "flat", toolName: "emit_backdrop", field: "backdrop", label: "Backdrop", entries:
|
|
14709
|
-
"render-quality": { kind: "flat", toolName: "emit_render_quality", field: "renderQuality", label: "Render Quality", entries:
|
|
14710
|
-
"composition-effects": { kind: "flat", toolName: "emit_composition_effects", field: "compositionEffect", label: "Composition Effect", entries:
|
|
14711
|
-
"post-process-effects": { kind: "flat", toolName: "emit_post_process_effects", field: "postProcess", label: "Post-Process Effect", entries:
|
|
14712
|
-
"action-fx": { kind: "flat", toolName: "emit_action_fx", field: "actionFx", label: "Action FX", entries:
|
|
14713
|
-
"loop-subject": { kind: "flat", toolName: "emit_loop_subject", field: "loopSubject", label: "Loop Subject", entries:
|
|
14714
|
-
transition: { kind: "flat", toolName: "emit_transition", field: "transition", label: "Transition", entries:
|
|
14715
|
-
"character-fx": { kind: "flat", toolName: "emit_character_fx", field: "characterFx", label: "Character FX", entries:
|
|
14716
|
-
"character-motion": { kind: "flat", toolName: "emit_character_motion", field: "characterMotion", label: "Character Motion", entries:
|
|
14717
|
-
pose: { kind: "flat", toolName: "emit_pose", field: "pose", label: "Pose", entries:
|
|
14718
|
-
material: { kind: "flat", toolName: "emit_material", field: "material", label: "Material", entries:
|
|
14719
|
-
"held-prop": { kind: "flat", toolName: "emit_held_prop", field: "heldProp", label: "Held Prop", entries:
|
|
14720
|
-
"camera-motion": { kind: "flat", toolName: "emit_camera_motion", field: "cameraMotion", label: "Camera Motion", entries:
|
|
14699
|
+
setting: { kind: "flat", toolName: "emit_setting", field: "setting", label: "Setting", entries: chunk54BYDWAM_cjs.SETTINGS },
|
|
14700
|
+
atmosphere: { kind: "flat", toolName: "emit_atmosphere", field: "atmosphere", label: "Atmosphere", entries: chunk54BYDWAM_cjs.ATMOSPHERES },
|
|
14701
|
+
style: { kind: "flat", toolName: "emit_style", field: "style", label: "Style", entries: chunk54BYDWAM_cjs.STYLES },
|
|
14702
|
+
mood: { kind: "flat", toolName: "emit_mood", field: "mood", label: "Mood", entries: chunk54BYDWAM_cjs.MOODS },
|
|
14703
|
+
"color-look": { kind: "flat", toolName: "emit_color_look", field: "colorLook", label: "Color / Look", entries: chunk54BYDWAM_cjs.COLOR_LOOKS },
|
|
14704
|
+
photographer: { kind: "flat", toolName: "emit_photographer", field: "photographer", label: "Photographer / Artist", entries: chunk54BYDWAM_cjs.PHOTOGRAPHERS },
|
|
14705
|
+
aesthetic: { kind: "flat", toolName: "emit_aesthetic", field: "aesthetic", label: "Aesthetic / Microtrend", entries: chunk54BYDWAM_cjs.AESTHETICS },
|
|
14706
|
+
era: { kind: "flat", toolName: "emit_era", field: "era", label: "Era / Period", entries: chunk54BYDWAM_cjs.ERAS },
|
|
14707
|
+
"photo-genre": { kind: "flat", toolName: "emit_photo_genre", field: "photoGenre", label: "Photo Genre", entries: chunk54BYDWAM_cjs.PHOTO_GENRES },
|
|
14708
|
+
backdrop: { kind: "flat", toolName: "emit_backdrop", field: "backdrop", label: "Backdrop", entries: chunk54BYDWAM_cjs.BACKDROPS },
|
|
14709
|
+
"render-quality": { kind: "flat", toolName: "emit_render_quality", field: "renderQuality", label: "Render Quality", entries: chunk54BYDWAM_cjs.RENDER_QUALITIES },
|
|
14710
|
+
"composition-effects": { kind: "flat", toolName: "emit_composition_effects", field: "compositionEffect", label: "Composition Effect", entries: chunk54BYDWAM_cjs.COMPOSITION_EFFECTS },
|
|
14711
|
+
"post-process-effects": { kind: "flat", toolName: "emit_post_process_effects", field: "postProcess", label: "Post-Process Effect", entries: chunk54BYDWAM_cjs.POST_PROCESS_EFFECTS },
|
|
14712
|
+
"action-fx": { kind: "flat", toolName: "emit_action_fx", field: "actionFx", label: "Action FX", entries: chunk54BYDWAM_cjs.ACTION_FX },
|
|
14713
|
+
"loop-subject": { kind: "flat", toolName: "emit_loop_subject", field: "loopSubject", label: "Loop Subject", entries: chunk54BYDWAM_cjs.LOOP_SUBJECTS },
|
|
14714
|
+
transition: { kind: "flat", toolName: "emit_transition", field: "transition", label: "Transition", entries: chunk54BYDWAM_cjs.TRANSITIONS },
|
|
14715
|
+
"character-fx": { kind: "flat", toolName: "emit_character_fx", field: "characterFx", label: "Character FX", entries: chunk54BYDWAM_cjs.CHARACTER_FX },
|
|
14716
|
+
"character-motion": { kind: "flat", toolName: "emit_character_motion", field: "characterMotion", label: "Character Motion", entries: chunk54BYDWAM_cjs.CHARACTER_MOTIONS },
|
|
14717
|
+
pose: { kind: "flat", toolName: "emit_pose", field: "pose", label: "Pose", entries: chunk54BYDWAM_cjs.POSES },
|
|
14718
|
+
material: { kind: "flat", toolName: "emit_material", field: "material", label: "Material", entries: chunk54BYDWAM_cjs.MATERIALS },
|
|
14719
|
+
"held-prop": { kind: "flat", toolName: "emit_held_prop", field: "heldProp", label: "Held Prop", entries: chunk54BYDWAM_cjs.HELD_PROPS },
|
|
14720
|
+
"camera-motion": { kind: "flat", toolName: "emit_camera_motion", field: "cameraMotion", label: "Camera Motion", entries: chunk54BYDWAM_cjs.CAMERA_MOTIONS },
|
|
14721
14721
|
animal: { kind: "flat", toolName: "emit_animal", field: "animal", label: "Animal", entries: catalogs.ANIMALS },
|
|
14722
14722
|
vehicle: { kind: "flat", toolName: "emit_vehicle", field: "vehicle", label: "Vehicle", entries: catalogs.VEHICLES },
|
|
14723
14723
|
weapon: { kind: "flat", toolName: "emit_weapon", field: "weapon", label: "Weapon", entries: catalogs.WEAPONS },
|
|
@@ -14730,10 +14730,10 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14730
14730
|
kind: "discriminated",
|
|
14731
14731
|
toolName: "emit_lighting",
|
|
14732
14732
|
discriminator: "category",
|
|
14733
|
-
order:
|
|
14734
|
-
fieldByKey:
|
|
14735
|
-
labels:
|
|
14736
|
-
entries:
|
|
14733
|
+
order: chunk54BYDWAM_cjs.LIGHTING_CATEGORY_ORDER,
|
|
14734
|
+
fieldByKey: chunk54BYDWAM_cjs.LIGHTING_FIELD_BY_CATEGORY,
|
|
14735
|
+
labels: chunk54BYDWAM_cjs.LIGHTING_CATEGORY_LABELS,
|
|
14736
|
+
entries: chunk54BYDWAM_cjs.LIGHTINGS,
|
|
14737
14737
|
limitFn: () => 1
|
|
14738
14738
|
},
|
|
14739
14739
|
temporal: {
|
|
@@ -14743,7 +14743,7 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14743
14743
|
order: ["speed", "freeze", "direction", "shutter"],
|
|
14744
14744
|
fieldByKey: { speed: "temporalSpeed", freeze: "temporalFreeze", direction: "temporalDirection", shutter: "temporalShutter" },
|
|
14745
14745
|
labels: { speed: "Playback Speed", freeze: "Freeze", direction: "Direction", shutter: "Shutter" },
|
|
14746
|
-
entries:
|
|
14746
|
+
entries: chunk54BYDWAM_cjs.TEMPORALS,
|
|
14747
14747
|
limitFn: () => 1
|
|
14748
14748
|
},
|
|
14749
14749
|
"exposure-settings": {
|
|
@@ -14753,7 +14753,7 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14753
14753
|
order: ["aperture", "shutter-speed", "iso"],
|
|
14754
14754
|
fieldByKey: { aperture: "aperture", "shutter-speed": "shutterSpeed", iso: "isoValue" },
|
|
14755
14755
|
labels: { aperture: "Aperture", "shutter-speed": "Shutter Speed", iso: "ISO" },
|
|
14756
|
-
entries:
|
|
14756
|
+
entries: chunk54BYDWAM_cjs.EXPOSURE_SETTINGS,
|
|
14757
14757
|
limitFn: () => 1
|
|
14758
14758
|
},
|
|
14759
14759
|
"music-genre": {
|
|
@@ -14764,13 +14764,13 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14764
14764
|
fieldByKey: { genre: "genre", subgenre: "subgenre", era: "era" },
|
|
14765
14765
|
labels: { genre: "Genre", subgenre: "Subgenre", era: "Era" },
|
|
14766
14766
|
entries: [
|
|
14767
|
-
...tagDim(
|
|
14767
|
+
...tagDim(chunk54BYDWAM_cjs.MUSIC_GENRES, "genre"),
|
|
14768
14768
|
// Subgenres carry promptHint but no description — the hint doubles as
|
|
14769
14769
|
// the legend text (it describes the sound well enough for matching).
|
|
14770
|
-
...
|
|
14770
|
+
...chunk54BYDWAM_cjs.MUSIC_GENRES.flatMap(
|
|
14771
14771
|
(g) => g.subgenres.map((s) => ({ id: s.id, label: s.label, description: s.promptHint, dimension: "subgenre" }))
|
|
14772
14772
|
),
|
|
14773
|
-
...tagDim(
|
|
14773
|
+
...tagDim(chunk54BYDWAM_cjs.MUSIC_ERAS, "era")
|
|
14774
14774
|
],
|
|
14775
14775
|
limitFn: (k) => k === "genre" ? 2 : 1
|
|
14776
14776
|
},
|
|
@@ -14781,7 +14781,7 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14781
14781
|
order: ["energy", "emotion", "vibe"],
|
|
14782
14782
|
fieldByKey: { energy: "energy", emotion: "emotion", vibe: "vibe" },
|
|
14783
14783
|
labels: { energy: "Energy", emotion: "Emotion", vibe: "Vibe" },
|
|
14784
|
-
entries: [...tagDim(
|
|
14784
|
+
entries: [...tagDim(chunk54BYDWAM_cjs.MUSIC_ENERGIES, "energy"), ...tagDim(chunk54BYDWAM_cjs.MUSIC_EMOTIONS, "emotion"), ...tagDim(chunk54BYDWAM_cjs.MUSIC_VIBES, "vibe")],
|
|
14785
14785
|
limitFn: (k) => k === "energy" ? 1 : 2
|
|
14786
14786
|
},
|
|
14787
14787
|
instrumentation: {
|
|
@@ -14792,10 +14792,10 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14792
14792
|
fieldByKey: { instruments: "instruments", production: "production", vocalPresence: "vocalPresence", singingStyle: "singingStyle" },
|
|
14793
14793
|
labels: { instruments: "Instruments", production: "Production Style", vocalPresence: "Vocal Presence", singingStyle: "Singing Style" },
|
|
14794
14794
|
entries: [
|
|
14795
|
-
...tagDim(
|
|
14796
|
-
...tagDim(
|
|
14797
|
-
...tagDim(
|
|
14798
|
-
...tagDim(
|
|
14795
|
+
...tagDim(chunk54BYDWAM_cjs.INSTRUMENTS, "instruments"),
|
|
14796
|
+
...tagDim(chunk54BYDWAM_cjs.PRODUCTION_STYLES, "production"),
|
|
14797
|
+
...tagDim(chunk54BYDWAM_cjs.VOCAL_PRESENCE, "vocalPresence"),
|
|
14798
|
+
...tagDim(chunk54BYDWAM_cjs.SINGING_STYLES, "singingStyle")
|
|
14799
14799
|
],
|
|
14800
14800
|
limitFn: (k) => k === "instruments" ? 3 : k === "production" ? 1 : 2
|
|
14801
14801
|
},
|
|
@@ -14807,11 +14807,11 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14807
14807
|
fieldByKey: { age: "age", gender: "gender", language: "language", accent: "accent", timbre: "timbre" },
|
|
14808
14808
|
labels: { age: "Age", gender: "Gender", language: "Language", accent: "Accent", timbre: "Timbre" },
|
|
14809
14809
|
entries: [
|
|
14810
|
-
...tagDim(
|
|
14811
|
-
...tagDim(
|
|
14812
|
-
...tagDim(
|
|
14813
|
-
...tagDim(
|
|
14814
|
-
...tagDim(
|
|
14810
|
+
...tagDim(chunk54BYDWAM_cjs.VOICE_AGES, "age"),
|
|
14811
|
+
...tagDim(chunk54BYDWAM_cjs.VOICE_GENDERS, "gender"),
|
|
14812
|
+
...tagDim(chunk54BYDWAM_cjs.VOICE_LANGUAGES, "language"),
|
|
14813
|
+
...tagDim(chunk54BYDWAM_cjs.VOICE_ACCENTS, "accent"),
|
|
14814
|
+
...tagDim(chunk54BYDWAM_cjs.VOICE_TIMBRES, "timbre")
|
|
14815
14815
|
],
|
|
14816
14816
|
limitFn: (k) => k === "language" ? 2 : 1
|
|
14817
14817
|
},
|
|
@@ -14822,7 +14822,7 @@ var PICKER_ANALYZER_REGISTRY = {
|
|
|
14822
14822
|
order: ["pace", "emotion", "archetype"],
|
|
14823
14823
|
fieldByKey: { pace: "pace", emotion: "emotion", archetype: "archetype" },
|
|
14824
14824
|
labels: { pace: "Pace", emotion: "Emotion", archetype: "Archetype" },
|
|
14825
|
-
entries: [...tagDim(
|
|
14825
|
+
entries: [...tagDim(chunk54BYDWAM_cjs.VOICE_PACES, "pace"), ...tagDim(chunk54BYDWAM_cjs.VOICE_EMOTIONS, "emotion"), ...tagDim(chunk54BYDWAM_cjs.VOICE_ARCHETYPES, "archetype")],
|
|
14826
14826
|
limitFn: () => 1
|
|
14827
14827
|
}
|
|
14828
14828
|
};
|
|
@@ -15018,41 +15018,41 @@ function optionsByDiscriminator(arr, keyOf, fieldByKey) {
|
|
|
15018
15018
|
}
|
|
15019
15019
|
var SINGLE_PICKER_WIRING = [
|
|
15020
15020
|
// -------- "Look" family --------
|
|
15021
|
-
{ kind: "single", nodeType: "setting", label: "Setting", valueField: "setting", defaultValue: "forest", catalogId: "setting", entries: mapCat(
|
|
15022
|
-
{ kind: "single", nodeType: "atmosphere", label: "Atmosphere", valueField: "atmosphere", defaultValue: "clear", catalogId: "atmosphere", entries: mapCat(
|
|
15023
|
-
{ kind: "single", nodeType: "style", label: "Style", valueField: "style", defaultValue: "cinematic", catalogId: "style", entries: mapCat(
|
|
15024
|
-
{ kind: "single", nodeType: "color-look", label: "Color / Look", valueField: "colorLook", defaultValue: "warm", catalogId: "color-look", entries: mapCat(
|
|
15025
|
-
{ kind: "single", nodeType: "mood", label: "Mood", valueField: "mood", defaultValue: "calm", catalogId: "mood", entries: mapCat(
|
|
15026
|
-
{ kind: "single", nodeType: "photographer", label: "Photographer / Artist", valueField: "photographer", defaultValue: "tim-walker", catalogId: "photographer", entries: mapCat(
|
|
15027
|
-
{ kind: "single", nodeType: "aesthetic", label: "Aesthetic / Microtrend", valueField: "aesthetic", defaultValue: "y2k", catalogId: "aesthetic", entries: mapCat(
|
|
15028
|
-
{ kind: "single", nodeType: "era", label: "Era / Period", valueField: "era", defaultValue: "1990s-mall", catalogId: "era", entries: mapCat(
|
|
15029
|
-
{ kind: "single", nodeType: "photo-genre", label: "Photo Genre", valueField: "photoGenre", defaultValue: "fashion-editorial", catalogId: "photo-genre", entries: mapCat(
|
|
15030
|
-
{ kind: "single", nodeType: "backdrop", label: "Backdrop", valueField: "backdrop", defaultValue: "white-seamless", catalogId: "backdrop", entries: mapCat(
|
|
15031
|
-
{ kind: "single", nodeType: "render-quality", label: "Render Quality", valueField: "renderQuality", defaultValue: "raytracing", catalogId: "render-quality", entries: mapCat(
|
|
15021
|
+
{ kind: "single", nodeType: "setting", label: "Setting", valueField: "setting", defaultValue: "forest", catalogId: "setting", entries: mapCat(chunk54BYDWAM_cjs.SETTINGS, "category"), groupOrder: ["indoor", "urban", "nature", "fantastical"], groupLabels: chunk54BYDWAM_cjs.SETTING_CATEGORY_LABELS },
|
|
15022
|
+
{ kind: "single", nodeType: "atmosphere", label: "Atmosphere", valueField: "atmosphere", defaultValue: "clear", catalogId: "atmosphere", entries: mapCat(chunk54BYDWAM_cjs.ATMOSPHERES) },
|
|
15023
|
+
{ kind: "single", nodeType: "style", label: "Style", valueField: "style", defaultValue: "cinematic", catalogId: "style", entries: mapCat(chunk54BYDWAM_cjs.STYLES) },
|
|
15024
|
+
{ kind: "single", nodeType: "color-look", label: "Color / Look", valueField: "colorLook", defaultValue: "warm", catalogId: "color-look", entries: mapCat(chunk54BYDWAM_cjs.COLOR_LOOKS, "category"), groupOrder: chunk54BYDWAM_cjs.COLOR_LOOK_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.COLOR_LOOK_CATEGORY_LABELS },
|
|
15025
|
+
{ kind: "single", nodeType: "mood", label: "Mood", valueField: "mood", defaultValue: "calm", catalogId: "mood", entries: mapCat(chunk54BYDWAM_cjs.MOODS, "category"), groupOrder: chunk54BYDWAM_cjs.MOOD_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.MOOD_CATEGORY_LABELS },
|
|
15026
|
+
{ kind: "single", nodeType: "photographer", label: "Photographer / Artist", valueField: "photographer", defaultValue: "tim-walker", catalogId: "photographer", entries: mapCat(chunk54BYDWAM_cjs.PHOTOGRAPHERS, "category"), groupOrder: chunk54BYDWAM_cjs.PHOTOGRAPHER_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.PHOTOGRAPHER_CATEGORY_LABELS },
|
|
15027
|
+
{ kind: "single", nodeType: "aesthetic", label: "Aesthetic / Microtrend", valueField: "aesthetic", defaultValue: "y2k", catalogId: "aesthetic", entries: mapCat(chunk54BYDWAM_cjs.AESTHETICS, "category"), groupOrder: chunk54BYDWAM_cjs.AESTHETIC_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.AESTHETIC_CATEGORY_LABELS },
|
|
15028
|
+
{ kind: "single", nodeType: "era", label: "Era / Period", valueField: "era", defaultValue: "1990s-mall", catalogId: "era", entries: mapCat(chunk54BYDWAM_cjs.ERAS, "category"), groupOrder: chunk54BYDWAM_cjs.ERA_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.ERA_CATEGORY_LABELS },
|
|
15029
|
+
{ kind: "single", nodeType: "photo-genre", label: "Photo Genre", valueField: "photoGenre", defaultValue: "fashion-editorial", catalogId: "photo-genre", entries: mapCat(chunk54BYDWAM_cjs.PHOTO_GENRES, "category"), groupOrder: chunk54BYDWAM_cjs.PHOTO_GENRE_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.PHOTO_GENRE_CATEGORY_LABELS },
|
|
15030
|
+
{ kind: "single", nodeType: "backdrop", label: "Backdrop", valueField: "backdrop", defaultValue: "white-seamless", catalogId: "backdrop", entries: mapCat(chunk54BYDWAM_cjs.BACKDROPS, "category"), groupOrder: chunk54BYDWAM_cjs.BACKDROP_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.BACKDROP_CATEGORY_LABELS },
|
|
15031
|
+
{ kind: "single", nodeType: "render-quality", label: "Render Quality", valueField: "renderQuality", defaultValue: "raytracing", catalogId: "render-quality", entries: mapCat(chunk54BYDWAM_cjs.RENDER_QUALITIES) },
|
|
15032
15032
|
// No default effect — see the note in picker-catalogs.ts.
|
|
15033
|
-
{ kind: "single", nodeType: "composition-effects", label: "Composition Effect", valueField: "compositionEffect", defaultValue: "none", catalogId: "composition-effects", entries: mapCat(
|
|
15034
|
-
{ kind: "single", nodeType: "action-fx", label: "Action FX", valueField: "actionFx", defaultValue: "earthquake-tremor", catalogId: "action-fx", entries: mapCat(
|
|
15035
|
-
{ kind: "single", nodeType: "loop-subject", label: "Loop Subject", valueField: "loopSubject", defaultValue: "tunnel", catalogId: "loop-subject", entries: mapCat(
|
|
15036
|
-
{ kind: "single", nodeType: "post-process-effects", label: "Post-Process Effect", valueField: "postProcess", defaultValue: "vignette-soft", catalogId: "post-process-effects", entries: mapCat(
|
|
15033
|
+
{ kind: "single", nodeType: "composition-effects", label: "Composition Effect", valueField: "compositionEffect", defaultValue: "none", catalogId: "composition-effects", entries: mapCat(chunk54BYDWAM_cjs.COMPOSITION_EFFECTS) },
|
|
15034
|
+
{ kind: "single", nodeType: "action-fx", label: "Action FX", valueField: "actionFx", defaultValue: "earthquake-tremor", catalogId: "action-fx", entries: mapCat(chunk54BYDWAM_cjs.ACTION_FX, "category"), groupOrder: chunk54BYDWAM_cjs.ACTION_FX_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.ACTION_FX_CATEGORY_LABELS },
|
|
15035
|
+
{ kind: "single", nodeType: "loop-subject", label: "Loop Subject", valueField: "loopSubject", defaultValue: "tunnel", catalogId: "loop-subject", entries: mapCat(chunk54BYDWAM_cjs.LOOP_SUBJECTS, "category"), groupOrder: chunk54BYDWAM_cjs.LOOP_SUBJECT_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.LOOP_SUBJECT_CATEGORY_LABELS },
|
|
15036
|
+
{ kind: "single", nodeType: "post-process-effects", label: "Post-Process Effect", valueField: "postProcess", defaultValue: "vignette-soft", catalogId: "post-process-effects", entries: mapCat(chunk54BYDWAM_cjs.POST_PROCESS_EFFECTS) },
|
|
15037
15037
|
// -------- "Camera" family --------
|
|
15038
|
-
{ kind: "single", nodeType: "camera-motion", label: "Camera Motion", valueField: "cameraMotion", defaultValue: "static", catalogId: "camera-motions", entries: mapCat(
|
|
15039
|
-
{ kind: "single", nodeType: "lens", label: "Lens", valueField: "lens", defaultValue: "normal-50mm", catalogId: "lens", entries: mapCat(
|
|
15040
|
-
{ kind: "single", nodeType: "camera-format", label: "Camera / Film", valueField: "cameraFormat", defaultValue: "35mm-film", catalogId: "camera-format", entries: mapCat(
|
|
15041
|
-
{ kind: "single", nodeType: "transition", label: "Transition", valueField: "transition", defaultValue: "auto", catalogId: "transitions", entries: mapCat(
|
|
15042
|
-
{ kind: "single", nodeType: "character-fx", label: "Character FX", valueField: "characterFx", defaultValue: "auto", catalogId: "character-fx", entries: mapCat(
|
|
15043
|
-
{ kind: "single", nodeType: "character-motion", label: "Character Motion", valueField: "characterMotion", defaultValue: "auto", catalogId: "character-motion", entries: mapCat(
|
|
15038
|
+
{ kind: "single", nodeType: "camera-motion", label: "Camera Motion", valueField: "cameraMotion", defaultValue: "static", catalogId: "camera-motions", entries: mapCat(chunk54BYDWAM_cjs.CAMERA_MOTIONS, "category"), groupOrder: chunk54BYDWAM_cjs.CAMERA_MOTION_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.CAMERA_MOTION_CATEGORY_LABELS },
|
|
15039
|
+
{ kind: "single", nodeType: "lens", label: "Lens", valueField: "lens", defaultValue: "normal-50mm", catalogId: "lens", entries: mapCat(chunk54BYDWAM_cjs.LENSES) },
|
|
15040
|
+
{ kind: "single", nodeType: "camera-format", label: "Camera / Film", valueField: "cameraFormat", defaultValue: "35mm-film", catalogId: "camera-format", entries: mapCat(chunk54BYDWAM_cjs.CAMERA_FORMATS) },
|
|
15041
|
+
{ kind: "single", nodeType: "transition", label: "Transition", valueField: "transition", defaultValue: "auto", catalogId: "transitions", entries: mapCat(chunk54BYDWAM_cjs.TRANSITIONS, "category"), groupOrder: chunk54BYDWAM_cjs.TRANSITION_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.TRANSITION_CATEGORY_LABELS },
|
|
15042
|
+
{ kind: "single", nodeType: "character-fx", label: "Character FX", valueField: "characterFx", defaultValue: "auto", catalogId: "character-fx", entries: mapCat(chunk54BYDWAM_cjs.CHARACTER_FX, "category"), groupOrder: chunk54BYDWAM_cjs.CHARACTER_FX_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.CHARACTER_FX_CATEGORY_LABELS },
|
|
15043
|
+
{ kind: "single", nodeType: "character-motion", label: "Character Motion", valueField: "characterMotion", defaultValue: "auto", catalogId: "character-motion", entries: mapCat(chunk54BYDWAM_cjs.CHARACTER_MOTIONS, "category"), groupOrder: chunk54BYDWAM_cjs.CHARACTER_MOTION_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.CHARACTER_MOTION_CATEGORY_LABELS },
|
|
15044
15044
|
// -------- "Subject / Object" family --------
|
|
15045
|
-
{ kind: "single", nodeType: "pose", label: "Pose", valueField: "pose", defaultValue: "standing-upright", catalogId: "pose", entries: mapCat(
|
|
15046
|
-
{ kind: "single", nodeType: "material", label: "Material", valueField: "material", defaultValue: "silk", catalogId: "materials", entries: mapCat(
|
|
15045
|
+
{ kind: "single", nodeType: "pose", label: "Pose", valueField: "pose", defaultValue: "standing-upright", catalogId: "pose", entries: mapCat(chunk54BYDWAM_cjs.POSES, "category"), groupOrder: chunk54BYDWAM_cjs.POSE_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.POSE_CATEGORY_LABELS },
|
|
15046
|
+
{ kind: "single", nodeType: "material", label: "Material", valueField: "material", defaultValue: "silk", catalogId: "materials", entries: mapCat(chunk54BYDWAM_cjs.MATERIALS, "category"), groupOrder: chunk54BYDWAM_cjs.MATERIAL_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.MATERIAL_CATEGORY_LABELS },
|
|
15047
15047
|
{ kind: "single", nodeType: "animal", label: "Animal", valueField: "animal", defaultValue: "dog-golden-retriever", catalogId: "animals", entries: mapCat(catalogs.ANIMALS, "subcategory"), groupOrder: catalogs.ANIMAL_SUBCATEGORY_ORDER, groupLabels: catalogs.ANIMAL_SUBCATEGORY_LABELS },
|
|
15048
15048
|
{ kind: "single", nodeType: "vehicle", label: "Vehicle", valueField: "vehicle", defaultValue: "sedan", catalogId: "vehicles", entries: mapCat(catalogs.VEHICLES, "subcategory"), groupOrder: catalogs.VEHICLE_SUBCATEGORY_ORDER, groupLabels: catalogs.VEHICLE_SUBCATEGORY_LABELS },
|
|
15049
15049
|
{ kind: "single", nodeType: "weapon", label: "Weapon", valueField: "weapon", defaultValue: "katana", catalogId: "weapons", entries: mapCat(catalogs.WEAPONS, "subcategory"), groupOrder: catalogs.WEAPON_SUBCATEGORY_ORDER, groupLabels: catalogs.WEAPON_SUBCATEGORY_LABELS },
|
|
15050
15050
|
{ kind: "single", nodeType: "furniture", label: "Furniture", valueField: "furniture", defaultValue: "sofa", catalogId: "furniture", entries: mapCat(catalogs.FURNITURE, "subcategory"), groupOrder: catalogs.FURNITURE_SUBCATEGORY_ORDER, groupLabels: catalogs.FURNITURE_SUBCATEGORY_LABELS },
|
|
15051
|
-
{ kind: "single", nodeType: "held-prop", label: "Held Prop", valueField: "heldProp", defaultValue: "smartphone", catalogId: "held-prop", entries: mapCat(
|
|
15051
|
+
{ kind: "single", nodeType: "held-prop", label: "Held Prop", valueField: "heldProp", defaultValue: "smartphone", catalogId: "held-prop", entries: mapCat(chunk54BYDWAM_cjs.HELD_PROPS, "category"), groupOrder: chunk54BYDWAM_cjs.HELD_PROP_CATEGORY_ORDER, groupLabels: chunk54BYDWAM_cjs.HELD_PROP_CATEGORY_LABELS }
|
|
15052
15052
|
];
|
|
15053
|
-
var STYLING_FIELDS =
|
|
15053
|
+
var STYLING_FIELDS = chunk54BYDWAM_cjs.STYLING_DIMENSION_ORDER.map((d) => chunk54BYDWAM_cjs.STYLING_FIELD_BY_DIMENSION[d]);
|
|
15054
15054
|
var PERSON_FIELDS = chunkK6NT635Z_cjs.PERSON_DIMENSION_ORDER.map((d) => chunkK6NT635Z_cjs.PERSON_FIELD_BY_DIMENSION[d]);
|
|
15055
|
-
var LIGHTING_FIELDS =
|
|
15055
|
+
var LIGHTING_FIELDS = chunk54BYDWAM_cjs.LIGHTING_CATEGORY_ORDER.map((c) => chunk54BYDWAM_cjs.LIGHTING_FIELD_BY_CATEGORY[c]);
|
|
15056
15056
|
var TEMPORAL_FIELD_BY_CATEGORY = {
|
|
15057
15057
|
speed: "temporalSpeed",
|
|
15058
15058
|
freeze: "temporalFreeze",
|
|
@@ -15071,8 +15071,8 @@ var MULTI_PICKER_WIRING = [
|
|
|
15071
15071
|
label: "Framing",
|
|
15072
15072
|
fields: ["shotSize", "angle", "coverage", "composition", "vantage"],
|
|
15073
15073
|
catalogId: "framing",
|
|
15074
|
-
catalogEntries: flatCat(
|
|
15075
|
-
fieldOptions: optionsByDiscriminator(
|
|
15074
|
+
catalogEntries: flatCat(chunk54BYDWAM_cjs.FRAMINGS),
|
|
15075
|
+
fieldOptions: optionsByDiscriminator(chunk54BYDWAM_cjs.FRAMINGS, (e) => e.category, chunk54BYDWAM_cjs.FRAMING_FIELD_BY_CATEGORY)
|
|
15076
15076
|
},
|
|
15077
15077
|
{
|
|
15078
15078
|
kind: "multi",
|
|
@@ -15080,8 +15080,8 @@ var MULTI_PICKER_WIRING = [
|
|
|
15080
15080
|
label: "Lighting",
|
|
15081
15081
|
fields: LIGHTING_FIELDS,
|
|
15082
15082
|
catalogId: "lighting",
|
|
15083
|
-
catalogEntries: flatCat(
|
|
15084
|
-
fieldOptions: optionsByDiscriminator(
|
|
15083
|
+
catalogEntries: flatCat(chunk54BYDWAM_cjs.LIGHTINGS),
|
|
15084
|
+
fieldOptions: optionsByDiscriminator(chunk54BYDWAM_cjs.LIGHTINGS, (e) => e.category, chunk54BYDWAM_cjs.LIGHTING_FIELD_BY_CATEGORY)
|
|
15085
15085
|
},
|
|
15086
15086
|
{
|
|
15087
15087
|
kind: "multi",
|
|
@@ -15098,8 +15098,8 @@ var MULTI_PICKER_WIRING = [
|
|
|
15098
15098
|
label: "Styling",
|
|
15099
15099
|
fields: STYLING_FIELDS,
|
|
15100
15100
|
catalogId: "styling",
|
|
15101
|
-
catalogEntries: flatCat(
|
|
15102
|
-
fieldOptions: optionsByDiscriminator(
|
|
15101
|
+
catalogEntries: flatCat(chunk54BYDWAM_cjs.STYLINGS),
|
|
15102
|
+
fieldOptions: optionsByDiscriminator(chunk54BYDWAM_cjs.STYLINGS, (e) => e.dimension, chunk54BYDWAM_cjs.STYLING_FIELD_BY_DIMENSION)
|
|
15103
15103
|
},
|
|
15104
15104
|
{
|
|
15105
15105
|
kind: "multi",
|
|
@@ -15107,8 +15107,8 @@ var MULTI_PICKER_WIRING = [
|
|
|
15107
15107
|
label: "Temporal",
|
|
15108
15108
|
fields: ["temporalSpeed", "temporalFreeze", "temporalDirection", "temporalShutter"],
|
|
15109
15109
|
catalogId: "temporal",
|
|
15110
|
-
catalogEntries: flatCat(
|
|
15111
|
-
fieldOptions: optionsByDiscriminator(
|
|
15110
|
+
catalogEntries: flatCat(chunk54BYDWAM_cjs.TEMPORALS),
|
|
15111
|
+
fieldOptions: optionsByDiscriminator(chunk54BYDWAM_cjs.TEMPORALS, (e) => e.category, TEMPORAL_FIELD_BY_CATEGORY)
|
|
15112
15112
|
},
|
|
15113
15113
|
{
|
|
15114
15114
|
kind: "multi",
|
|
@@ -15116,8 +15116,8 @@ var MULTI_PICKER_WIRING = [
|
|
|
15116
15116
|
label: "Exposure Settings",
|
|
15117
15117
|
fields: ["aperture", "shutterSpeed", "isoValue"],
|
|
15118
15118
|
catalogId: "exposure-settings",
|
|
15119
|
-
catalogEntries: flatCat(
|
|
15120
|
-
fieldOptions: optionsByDiscriminator(
|
|
15119
|
+
catalogEntries: flatCat(chunk54BYDWAM_cjs.EXPOSURE_SETTINGS),
|
|
15120
|
+
fieldOptions: optionsByDiscriminator(chunk54BYDWAM_cjs.EXPOSURE_SETTINGS, (e) => e.category, EXPOSURE_FIELD_BY_CATEGORY)
|
|
15121
15121
|
},
|
|
15122
15122
|
// -------- "Sound" family --------
|
|
15123
15123
|
// Music Genre catalog is hierarchical: flatten genres + every subgenre +
|
|
@@ -15129,14 +15129,14 @@ var MULTI_PICKER_WIRING = [
|
|
|
15129
15129
|
fields: ["genre", "subgenre", "era"],
|
|
15130
15130
|
catalogId: "music-genre",
|
|
15131
15131
|
catalogEntries: [
|
|
15132
|
-
...flatCat(
|
|
15133
|
-
...
|
|
15134
|
-
...flatCat(
|
|
15132
|
+
...flatCat(chunk54BYDWAM_cjs.MUSIC_GENRES),
|
|
15133
|
+
...chunk54BYDWAM_cjs.MUSIC_GENRES.flatMap((g) => g.subgenres.map((s) => ({ id: s.id, label: s.label }))),
|
|
15134
|
+
...flatCat(chunk54BYDWAM_cjs.MUSIC_ERAS)
|
|
15135
15135
|
],
|
|
15136
15136
|
fieldOptions: {
|
|
15137
|
-
genre: flatCat(
|
|
15138
|
-
subgenre:
|
|
15139
|
-
era: flatCat(
|
|
15137
|
+
genre: flatCat(chunk54BYDWAM_cjs.MUSIC_GENRES),
|
|
15138
|
+
subgenre: chunk54BYDWAM_cjs.MUSIC_GENRES.flatMap((g) => g.subgenres.map((s) => ({ id: s.id, label: s.label }))),
|
|
15139
|
+
era: flatCat(chunk54BYDWAM_cjs.MUSIC_ERAS)
|
|
15140
15140
|
}
|
|
15141
15141
|
},
|
|
15142
15142
|
{
|
|
@@ -15145,11 +15145,11 @@ var MULTI_PICKER_WIRING = [
|
|
|
15145
15145
|
label: "Music Mood",
|
|
15146
15146
|
fields: ["energy", "emotion", "vibe"],
|
|
15147
15147
|
catalogId: "music-mood",
|
|
15148
|
-
catalogEntries: [...flatCat(
|
|
15148
|
+
catalogEntries: [...flatCat(chunk54BYDWAM_cjs.MUSIC_ENERGIES), ...flatCat(chunk54BYDWAM_cjs.MUSIC_EMOTIONS), ...flatCat(chunk54BYDWAM_cjs.MUSIC_VIBES)],
|
|
15149
15149
|
fieldOptions: {
|
|
15150
|
-
energy: flatCat(
|
|
15151
|
-
emotion: flatCat(
|
|
15152
|
-
vibe: flatCat(
|
|
15150
|
+
energy: flatCat(chunk54BYDWAM_cjs.MUSIC_ENERGIES),
|
|
15151
|
+
emotion: flatCat(chunk54BYDWAM_cjs.MUSIC_EMOTIONS),
|
|
15152
|
+
vibe: flatCat(chunk54BYDWAM_cjs.MUSIC_VIBES)
|
|
15153
15153
|
}
|
|
15154
15154
|
},
|
|
15155
15155
|
{
|
|
@@ -15158,12 +15158,12 @@ var MULTI_PICKER_WIRING = [
|
|
|
15158
15158
|
label: "Instrumentation",
|
|
15159
15159
|
fields: ["instruments", "production", "vocalPresence", "singingStyle"],
|
|
15160
15160
|
catalogId: "instrumentation",
|
|
15161
|
-
catalogEntries: [...flatCat(
|
|
15161
|
+
catalogEntries: [...flatCat(chunk54BYDWAM_cjs.INSTRUMENTS), ...flatCat(chunk54BYDWAM_cjs.PRODUCTION_STYLES), ...flatCat(chunk54BYDWAM_cjs.VOCAL_PRESENCE), ...flatCat(chunk54BYDWAM_cjs.SINGING_STYLES)],
|
|
15162
15162
|
fieldOptions: {
|
|
15163
|
-
instruments: flatCat(
|
|
15164
|
-
production: flatCat(
|
|
15165
|
-
vocalPresence: flatCat(
|
|
15166
|
-
singingStyle: flatCat(
|
|
15163
|
+
instruments: flatCat(chunk54BYDWAM_cjs.INSTRUMENTS),
|
|
15164
|
+
production: flatCat(chunk54BYDWAM_cjs.PRODUCTION_STYLES),
|
|
15165
|
+
vocalPresence: flatCat(chunk54BYDWAM_cjs.VOCAL_PRESENCE),
|
|
15166
|
+
singingStyle: flatCat(chunk54BYDWAM_cjs.SINGING_STYLES)
|
|
15167
15167
|
}
|
|
15168
15168
|
},
|
|
15169
15169
|
{
|
|
@@ -15172,13 +15172,13 @@ var MULTI_PICKER_WIRING = [
|
|
|
15172
15172
|
label: "Voice Character",
|
|
15173
15173
|
fields: ["age", "gender", "language", "accent", "timbre"],
|
|
15174
15174
|
catalogId: "voice-character",
|
|
15175
|
-
catalogEntries: [...flatCat(
|
|
15175
|
+
catalogEntries: [...flatCat(chunk54BYDWAM_cjs.VOICE_AGES), ...flatCat(chunk54BYDWAM_cjs.VOICE_GENDERS), ...flatCat(chunk54BYDWAM_cjs.VOICE_LANGUAGES), ...flatCat(chunk54BYDWAM_cjs.VOICE_ACCENTS), ...flatCat(chunk54BYDWAM_cjs.VOICE_TIMBRES)],
|
|
15176
15176
|
fieldOptions: {
|
|
15177
|
-
age: flatCat(
|
|
15178
|
-
gender: flatCat(
|
|
15179
|
-
language: flatCat(
|
|
15180
|
-
accent: flatCat(
|
|
15181
|
-
timbre: flatCat(
|
|
15177
|
+
age: flatCat(chunk54BYDWAM_cjs.VOICE_AGES),
|
|
15178
|
+
gender: flatCat(chunk54BYDWAM_cjs.VOICE_GENDERS),
|
|
15179
|
+
language: flatCat(chunk54BYDWAM_cjs.VOICE_LANGUAGES),
|
|
15180
|
+
accent: flatCat(chunk54BYDWAM_cjs.VOICE_ACCENTS),
|
|
15181
|
+
timbre: flatCat(chunk54BYDWAM_cjs.VOICE_TIMBRES)
|
|
15182
15182
|
}
|
|
15183
15183
|
},
|
|
15184
15184
|
{
|
|
@@ -15187,11 +15187,11 @@ var MULTI_PICKER_WIRING = [
|
|
|
15187
15187
|
label: "Voice Delivery",
|
|
15188
15188
|
fields: ["pace", "emotion", "archetype"],
|
|
15189
15189
|
catalogId: "voice-delivery",
|
|
15190
|
-
catalogEntries: [...flatCat(
|
|
15190
|
+
catalogEntries: [...flatCat(chunk54BYDWAM_cjs.VOICE_PACES), ...flatCat(chunk54BYDWAM_cjs.VOICE_EMOTIONS), ...flatCat(chunk54BYDWAM_cjs.VOICE_ARCHETYPES)],
|
|
15191
15191
|
fieldOptions: {
|
|
15192
|
-
pace: flatCat(
|
|
15193
|
-
emotion: flatCat(
|
|
15194
|
-
archetype: flatCat(
|
|
15192
|
+
pace: flatCat(chunk54BYDWAM_cjs.VOICE_PACES),
|
|
15193
|
+
emotion: flatCat(chunk54BYDWAM_cjs.VOICE_EMOTIONS),
|
|
15194
|
+
archetype: flatCat(chunk54BYDWAM_cjs.VOICE_ARCHETYPES)
|
|
15195
15195
|
}
|
|
15196
15196
|
}
|
|
15197
15197
|
];
|
|
@@ -15227,5 +15227,5 @@ exports.getPickerAnalyzer = getPickerAnalyzer;
|
|
|
15227
15227
|
exports.getPickerWiring = getPickerWiring;
|
|
15228
15228
|
exports.isAnalyzablePicker = isAnalyzablePicker;
|
|
15229
15229
|
exports.pickerFanoutTargets = pickerFanoutTargets;
|
|
15230
|
-
//# sourceMappingURL=chunk-
|
|
15231
|
-
//# sourceMappingURL=chunk-
|
|
15230
|
+
//# sourceMappingURL=chunk-XGNUOU4F.cjs.map
|
|
15231
|
+
//# sourceMappingURL=chunk-XGNUOU4F.cjs.map
|