@nodaro/prompts 1.50.1 → 1.52.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.
Files changed (74) hide show
  1. package/dist/{chunk-MJIKM4YZ.cjs → chunk-7BWDATUZ.cjs} +125 -125
  2. package/dist/{chunk-MJIKM4YZ.cjs.map → chunk-7BWDATUZ.cjs.map} +1 -1
  3. package/dist/{chunk-MUTUHJIV.js → chunk-CDTEETF3.js} +5 -2
  4. package/dist/chunk-CDTEETF3.js.map +1 -0
  5. package/dist/{chunk-WLN2MJ7F.cjs → chunk-E5EKWWOO.cjs} +3 -3
  6. package/dist/{chunk-3XSB5YDY.js.map → chunk-E5EKWWOO.cjs.map} +1 -1
  7. package/dist/{chunk-DB6A5I6V.js → chunk-ED47NNIN.js} +3 -3
  8. package/dist/{chunk-DB6A5I6V.js.map → chunk-ED47NNIN.js.map} +1 -1
  9. package/dist/{chunk-IXBTD2LW.js → chunk-EUU5W7XR.js} +4 -4
  10. package/dist/{chunk-IXBTD2LW.js.map → chunk-EUU5W7XR.js.map} +1 -1
  11. package/dist/{chunk-JGEBO6L6.cjs → chunk-F22GZF7T.cjs} +8 -8
  12. package/dist/{chunk-JGEBO6L6.cjs.map → chunk-F22GZF7T.cjs.map} +1 -1
  13. package/dist/{chunk-PLQFXCBU.cjs → chunk-GJV7KTDX.cjs} +5 -2
  14. package/dist/chunk-GJV7KTDX.cjs.map +1 -0
  15. package/dist/{chunk-RVBO63D5.cjs → chunk-GRSKB3P7.cjs} +2 -2
  16. package/dist/chunk-GRSKB3P7.cjs.map +1 -0
  17. package/dist/{chunk-3XSB5YDY.js → chunk-H322GC7M.js} +3 -3
  18. package/dist/chunk-H322GC7M.js.map +1 -0
  19. package/dist/{chunk-C5LP7DAQ.js → chunk-HETYHGGW.js} +6 -6
  20. package/dist/{chunk-C5LP7DAQ.js.map → chunk-HETYHGGW.js.map} +1 -1
  21. package/dist/{chunk-FEOVUTFC.js → chunk-HOZPYHRA.js} +5 -5
  22. package/dist/{chunk-FEOVUTFC.js.map → chunk-HOZPYHRA.js.map} +1 -1
  23. package/dist/{chunk-HR4TFBU2.cjs → chunk-KTNCB2IE.cjs} +35 -35
  24. package/dist/{chunk-HR4TFBU2.cjs.map → chunk-KTNCB2IE.cjs.map} +1 -1
  25. package/dist/{chunk-VYCTRGJ7.cjs → chunk-M6EXNY42.cjs} +39 -39
  26. package/dist/{chunk-VYCTRGJ7.cjs.map → chunk-M6EXNY42.cjs.map} +1 -1
  27. package/dist/{chunk-IADAATZK.cjs → chunk-OQ3J7OGR.cjs} +49 -49
  28. package/dist/{chunk-IADAATZK.cjs.map → chunk-OQ3J7OGR.cjs.map} +1 -1
  29. package/dist/{chunk-KYKCHOOS.cjs → chunk-P4BXE4OA.cjs} +13 -13
  30. package/dist/{chunk-KYKCHOOS.cjs.map → chunk-P4BXE4OA.cjs.map} +1 -1
  31. package/dist/{chunk-LJ5WW6KK.js → chunk-PHCYQWJP.js} +50 -11
  32. package/dist/chunk-PHCYQWJP.js.map +1 -0
  33. package/dist/{chunk-TYJCCODP.cjs → chunk-PWYASBX2.cjs} +18 -18
  34. package/dist/{chunk-TYJCCODP.cjs.map → chunk-PWYASBX2.cjs.map} +1 -1
  35. package/dist/{chunk-VJYKE6AY.js → chunk-VBCVQPQ4.js} +3 -3
  36. package/dist/{chunk-VJYKE6AY.js.map → chunk-VBCVQPQ4.js.map} +1 -1
  37. package/dist/{chunk-34JK2G34.js → chunk-WQ7FWGZ2.js} +2 -2
  38. package/dist/chunk-WQ7FWGZ2.js.map +1 -0
  39. package/dist/{chunk-IWX3Q7NH.cjs → chunk-XRCK3BCF.cjs} +50 -11
  40. package/dist/chunk-XRCK3BCF.cjs.map +1 -0
  41. package/dist/{chunk-ZZ6UOK2P.js → chunk-YAIPYPMM.js} +4 -4
  42. package/dist/{chunk-ZZ6UOK2P.js.map → chunk-YAIPYPMM.js.map} +1 -1
  43. package/dist/{chunk-BWDQEAX2.js → chunk-ZRORO6OM.js} +4 -4
  44. package/dist/{chunk-BWDQEAX2.js.map → chunk-ZRORO6OM.js.map} +1 -1
  45. package/dist/entries/assembly.cjs +28 -28
  46. package/dist/entries/assembly.js +5 -5
  47. package/dist/entries/doctrine.cjs +46 -46
  48. package/dist/entries/doctrine.js +1 -1
  49. package/dist/entries/picker-art.cjs +3 -3
  50. package/dist/entries/picker-art.js +1 -1
  51. package/dist/entries/picker-catalogs.cjs +56 -56
  52. package/dist/entries/picker-catalogs.js +4 -4
  53. package/dist/entries/pickers.cjs +382 -382
  54. package/dist/entries/pickers.js +2 -2
  55. package/dist/entries/presets.cjs +35 -35
  56. package/dist/entries/presets.js +1 -1
  57. package/dist/entries/prompt-builder.cjs +75 -75
  58. package/dist/entries/prompt-builder.js +4 -4
  59. package/dist/index.cjs +618 -618
  60. package/dist/index.js +11 -11
  61. package/package.json +2 -2
  62. package/src/__tests__/style-video-wording.test.ts +1 -1
  63. package/src/factory-presets/shared-image.ts +2 -2
  64. package/src/picker-art/restyle-previews.ts +3 -0
  65. package/src/prompt-wizard-categories.ts +20 -9
  66. package/src/provider-prompt-doctrine.ts +29 -0
  67. package/src/style.ts +1 -1
  68. package/dist/chunk-34JK2G34.js.map +0 -1
  69. package/dist/chunk-IWX3Q7NH.cjs.map +0 -1
  70. package/dist/chunk-LJ5WW6KK.js.map +0 -1
  71. package/dist/chunk-MUTUHJIV.js.map +0 -1
  72. package/dist/chunk-PLQFXCBU.cjs.map +0 -1
  73. package/dist/chunk-RVBO63D5.cjs.map +0 -1
  74. package/dist/chunk-WLN2MJ7F.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/wardrobe.ts","../src/character-motion-diagnostics.ts"],"names":["id","pickIds","h","CHARACTER_MOTION_MAX_PICKS","getCharacterMotion"],"mappings":"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","file":"chunk-JGEBO6L6.cjs","sourcesContent":["import { pickIds } from \"@nodaro/shared/catalogs\"\n\nexport type WardrobeDimension =\n | \"archetype\" | \"top\" | \"bottom\" | \"outerwear\" | \"footwear\"\n | \"headwear\" | \"accessories\" | \"color-palette\" | \"material\" | \"era\"\n\nexport interface WardrobeEntry {\n readonly id: string\n readonly label: string\n readonly dimension: WardrobeDimension\n readonly promptHint: string\n}\n\nexport interface WardrobeValue {\n archetype?: string\n top?: string\n bottom?: string\n outerwear?: string\n footwear?: string\n headwear?: string | ReadonlyArray<string>\n accessories?: string | ReadonlyArray<string>\n colorPalette?: string\n material?: string\n era?: string\n}\n\nexport const WARDROBE_DIMENSION_ORDER: ReadonlyArray<WardrobeDimension> = [\n \"archetype\", \"top\", \"bottom\", \"outerwear\", \"footwear\",\n \"headwear\", \"accessories\", \"color-palette\", \"material\", \"era\",\n]\n\nexport const WARDROBE_CATEGORY_LABELS: Readonly<Record<WardrobeDimension, string>> = {\n archetype: \"Archetype\", top: \"Top\", bottom: \"Bottom\", outerwear: \"Outerwear\",\n footwear: \"Footwear\", headwear: \"Headwear\", accessories: \"Accessories\",\n \"color-palette\": \"Color Palette\", material: \"Material\", era: \"Era\",\n}\n\nexport const WARDROBE_FIELD_BY_DIMENSION: Record<WardrobeDimension, keyof WardrobeValue> = {\n archetype: \"archetype\", top: \"top\", bottom: \"bottom\", outerwear: \"outerwear\",\n footwear: \"footwear\", headwear: \"headwear\", accessories: \"accessories\",\n \"color-palette\": \"colorPalette\", material: \"material\", era: \"era\",\n}\n\n/** Multi-pick dims emit each picked entry independently. */\nconst MULTI_PICK: ReadonlySet<WardrobeDimension> = new Set([\"headwear\", \"accessories\"])\n/** Sentinel ids that mean \"nothing here\" and emit no hint. */\nconst NONE_IDS: ReadonlySet<string> = new Set([\"wd-outer-none\"])\n\nexport const WARDROBE: ReadonlyArray<WardrobeEntry> = [\n // archetype\n { id: \"wd-casual\", label: \"Casual\", dimension: \"archetype\", promptHint: \"in casual everyday clothing\" },\n { id: \"wd-business\", label: \"Business\", dimension: \"archetype\", promptHint: \"in smart business attire\" },\n { id: \"wd-formal\", label: \"Formal\", dimension: \"archetype\", promptHint: \"in elegant formal wear\" },\n { id: \"wd-streetwear\", label: \"Streetwear\", dimension: \"archetype\", promptHint: \"in contemporary streetwear\" },\n { id: \"wd-athletic\", label: \"Athletic\", dimension: \"archetype\", promptHint: \"in athletic sportswear\" },\n { id: \"wd-fantasy\", label: \"Fantasy\", dimension: \"archetype\", promptHint: \"in fantasy costume\" },\n { id: \"wd-scifi\", label: \"Sci-Fi\", dimension: \"archetype\", promptHint: \"in futuristic sci-fi attire\" },\n { id: \"wd-historical\", label: \"Historical\", dimension: \"archetype\", promptHint: \"in period historical dress\" },\n { id: \"wd-uniform\", label: \"Uniform\", dimension: \"archetype\", promptHint: \"in a uniform\" },\n { id: \"wd-loungewear\", label: \"Loungewear\", dimension: \"archetype\", promptHint: \"in relaxed loungewear\" },\n // top\n { id: \"wd-tshirt\", label: \"T-Shirt\", dimension: \"top\", promptHint: \"wearing a t-shirt\" },\n { id: \"wd-blouse\", label: \"Blouse\", dimension: \"top\", promptHint: \"wearing a blouse\" },\n { id: \"wd-hoodie\", label: \"Hoodie\", dimension: \"top\", promptHint: \"wearing a hoodie\" },\n { id: \"wd-buttondown\", label: \"Button-down\", dimension: \"top\", promptHint: \"wearing a button-down shirt\" },\n { id: \"wd-tank\", label: \"Tank\", dimension: \"top\", promptHint: \"wearing a tank top\" },\n { id: \"wd-sweater\", label: \"Sweater\", dimension: \"top\", promptHint: \"wearing a sweater\" },\n { id: \"wd-turtleneck\", label: \"Turtleneck\", dimension: \"top\", promptHint: \"wearing a turtleneck\" },\n // bottom\n { id: \"wd-jeans\", label: \"Jeans\", dimension: \"bottom\", promptHint: \"wearing jeans\" },\n { id: \"wd-trousers\", label: \"Trousers\", dimension: \"bottom\", promptHint: \"wearing tailored trousers\" },\n { id: \"wd-skirt\", label: \"Skirt\", dimension: \"bottom\", promptHint: \"wearing a skirt\" },\n { id: \"wd-shorts\", label: \"Shorts\", dimension: \"bottom\", promptHint: \"wearing shorts\" },\n { id: \"wd-leggings\", label: \"Leggings\", dimension: \"bottom\", promptHint: \"wearing leggings\" },\n { id: \"wd-cargo\", label: \"Cargo\", dimension: \"bottom\", promptHint: \"wearing cargo pants\" },\n // outerwear\n { id: \"wd-outer-none\", label: \"None\", dimension: \"outerwear\", promptHint: \"\" },\n { id: \"wd-leatherjkt\", label: \"Leather Jacket\", dimension: \"outerwear\", promptHint: \"in a leather jacket\" },\n { id: \"wd-blazer\", label: \"Blazer\", dimension: \"outerwear\", promptHint: \"in a blazer\" },\n { id: \"wd-trench\", label: \"Trench Coat\", dimension: \"outerwear\", promptHint: \"in a trench coat\" },\n { id: \"wd-parka\", label: \"Parka\", dimension: \"outerwear\", promptHint: \"in a parka\" },\n { id: \"wd-cloak\", label: \"Cloak\", dimension: \"outerwear\", promptHint: \"in a flowing cloak\" },\n { id: \"wd-denimjkt\", label: \"Denim Jacket\", dimension: \"outerwear\", promptHint: \"in a denim jacket\" },\n { id: \"wd-cardigan\", label: \"Cardigan\", dimension: \"outerwear\", promptHint: \"in a cardigan\" },\n // footwear\n { id: \"wd-sneakers\", label: \"Sneakers\", dimension: \"footwear\", promptHint: \"wearing sneakers\" },\n { id: \"wd-boots\", label: \"Boots\", dimension: \"footwear\", promptHint: \"wearing boots\" },\n { id: \"wd-heels\", label: \"Heels\", dimension: \"footwear\", promptHint: \"wearing heels\" },\n { id: \"wd-sandals\", label: \"Sandals\", dimension: \"footwear\", promptHint: \"wearing sandals\" },\n { id: \"wd-dressshoe\", label: \"Dress Shoes\", dimension: \"footwear\", promptHint: \"wearing dress shoes\" },\n { id: \"wd-barefoot\", label: \"Barefoot\", dimension: \"footwear\", promptHint: \"barefoot\" },\n // headwear (multi)\n { id: \"wd-cap\", label: \"Cap\", dimension: \"headwear\", promptHint: \"wearing a cap\" },\n { id: \"wd-beanie\", label: \"Beanie\", dimension: \"headwear\", promptHint: \"wearing a beanie\" },\n { id: \"wd-widehat\", label: \"Wide-brim Hat\", dimension: \"headwear\", promptHint: \"wearing a wide-brim hat\" },\n { id: \"wd-hood\", label: \"Hood\", dimension: \"headwear\", promptHint: \"with the hood up\" },\n { id: \"wd-crown\", label: \"Crown\", dimension: \"headwear\", promptHint: \"wearing a crown\" },\n { id: \"wd-helmet\", label: \"Helmet\", dimension: \"headwear\", promptHint: \"wearing a helmet\" },\n // accessories (multi)\n { id: \"wd-glasses\", label: \"Glasses\", dimension: \"accessories\", promptHint: \"wearing glasses\" },\n { id: \"wd-sunglasses\", label: \"Sunglasses\", dimension: \"accessories\", promptHint: \"wearing sunglasses\" },\n { id: \"wd-scarf\", label: \"Scarf\", dimension: \"accessories\", promptHint: \"wearing a scarf\" },\n { id: \"wd-gloves\", label: \"Gloves\", dimension: \"accessories\", promptHint: \"wearing gloves\" },\n { id: \"wd-jewelry\", label: \"Jewelry\", dimension: \"accessories\", promptHint: \"wearing statement jewelry\" },\n { id: \"wd-belt\", label: \"Belt\", dimension: \"accessories\", promptHint: \"with a belt\" },\n { id: \"wd-watch\", label: \"Watch\", dimension: \"accessories\", promptHint: \"wearing a watch\" },\n // color-palette\n { id: \"wd-neutral\", label: \"Neutral\", dimension: \"color-palette\", promptHint: \"in a neutral color palette\" },\n { id: \"wd-all-black\", label: \"All Black\", dimension: \"color-palette\", promptHint: \"in an all-black palette\" },\n { id: \"wd-earth\", label: \"Earth Tones\", dimension: \"color-palette\", promptHint: \"in earth-tone colors\" },\n { id: \"wd-pastel\", label: \"Pastel\", dimension: \"color-palette\", promptHint: \"in pastel colors\" },\n { id: \"wd-jewel\", label: \"Jewel Tones\", dimension: \"color-palette\", promptHint: \"in rich jewel-tone colors\" },\n { id: \"wd-neon\", label: \"Neon\", dimension: \"color-palette\", promptHint: \"in vivid neon colors\" },\n { id: \"wd-all-white\", label: \"All White\", dimension: \"color-palette\", promptHint: \"in an all-white palette\" },\n // material\n { id: \"wd-cotton\", label: \"Cotton\", dimension: \"material\", promptHint: \"in cotton fabric\" },\n { id: \"wd-denim\", label: \"Denim\", dimension: \"material\", promptHint: \"in denim\" },\n { id: \"wd-leather\", label: \"Leather\", dimension: \"material\", promptHint: \"in leather\" },\n { id: \"wd-silk\", label: \"Silk\", dimension: \"material\", promptHint: \"in silk\" },\n { id: \"wd-wool\", label: \"Wool\", dimension: \"material\", promptHint: \"in wool\" },\n { id: \"wd-latex\", label: \"Latex\", dimension: \"material\", promptHint: \"in latex\" },\n { id: \"wd-linen\", label: \"Linen\", dimension: \"material\", promptHint: \"in linen\" },\n // era\n { id: \"wd-contemporary\", label: \"Contemporary\", dimension: \"era\", promptHint: \"in contemporary fashion\" },\n { id: \"wd-1920s\", label: \"1920s\", dimension: \"era\", promptHint: \"in 1920s fashion\" },\n { id: \"wd-1950s\", label: \"1950s\", dimension: \"era\", promptHint: \"in 1950s fashion\" },\n { id: \"wd-1980s\", label: \"1980s\", dimension: \"era\", promptHint: \"in 1980s fashion\" },\n { id: \"wd-victorian\", label: \"Victorian\", dimension: \"era\", promptHint: \"in Victorian-era dress\" },\n { id: \"wd-medieval\", label: \"Medieval\", dimension: \"era\", promptHint: \"in medieval dress\" },\n { id: \"wd-futuristic\", label: \"Futuristic\", dimension: \"era\", promptHint: \"in futuristic clothing\" },\n] as const\n\nconst BY_ID: Map<string, WardrobeEntry> = new Map(WARDROBE.map((e) => [e.id, e]))\n\n/** Entries grouped by dimension — precomputed once so per-dimension lookups\n * (the picker calls one per dimension per render) are O(1) with stable array\n * refs, instead of a full WARDROBE scan each call. */\nconst BY_DIMENSION: Map<WardrobeDimension, WardrobeEntry[]> = (() => {\n const map = new Map<WardrobeDimension, WardrobeEntry[]>()\n for (const e of WARDROBE) {\n const list = map.get(e.dimension)\n if (list) list.push(e)\n else map.set(e.dimension, [e])\n }\n return map\n})()\n\nexport function getWardrobeEntry(id: string | undefined | null): WardrobeEntry | undefined {\n return id ? BY_ID.get(id) : undefined\n}\n\nexport function getWardrobePromptHint(id: string | undefined | null): string {\n return getWardrobeEntry(id)?.promptHint ?? \"\"\n}\n\nexport function getWardrobeEntriesByDimension(dim: WardrobeDimension): WardrobeEntry[] {\n return BY_DIMENSION.get(dim) ?? []\n}\n\nexport function buildWardrobeHints(value: Record<string, unknown> & WardrobeValue): string[] {\n const hints: string[] = []\n for (const dimension of WARDROBE_DIMENSION_ORDER) {\n const field = WARDROBE_FIELD_BY_DIMENSION[dimension]\n const raw = value[field]\n if (MULTI_PICK.has(dimension)) {\n for (const id of pickIds(raw)) {\n if (NONE_IDS.has(id)) continue\n const h = getWardrobePromptHint(id)\n if (h) hints.push(h)\n }\n continue\n }\n const id = typeof raw === \"string\" ? raw : undefined\n if (!id || NONE_IDS.has(id)) continue\n const h = getWardrobePromptHint(id)\n if (h) hints.push(h)\n }\n return hints\n}\n","import { getCharacterMotion, CHARACTER_MOTION_MAX_PICKS, type CharacterMotionTiming } from \"./character-motion.js\"\n\nexport interface CharacterMotionDiagnostic {\n readonly code: \"unknown\" | \"omitted\" | \"retired\" | \"pose\" | \"visibility\" | \"hands\" | \"pace\" | \"requirements\" | \"compound\" | \"capacity\" | \"multiple-targets\" | \"roles\"\n readonly severity: \"error\" | \"warning\" | \"info\"\n readonly ids: readonly string[]\n readonly message: string\n}\nexport interface CharacterMotionBindings {\n readonly selfPairing?: boolean\n readonly subjectMinor?: boolean\n readonly partnerNames?: readonly string[]\n readonly targetNames?: readonly string[]\n}\n\n/** Shared by editor, API clients and local review. Missing metadata means\n * unknown; this never certifies a sequence or predicts clip duration. */\nexport function getCharacterMotionDiagnostics(\n value: string | readonly string[] | null | undefined,\n timing?: CharacterMotionTiming,\n bindings: CharacterMotionBindings = {},\n): readonly CharacterMotionDiagnostic[] {\n const requested = typeof value === \"string\" ? [value] : Array.isArray(value) ? [...new Set(value)] : []\n const result: CharacterMotionDiagnostic[] = []\n const add = (code: CharacterMotionDiagnostic[\"code\"], severity: CharacterMotionDiagnostic[\"severity\"], ids: readonly string[], message: string) => result.push({ code, severity, ids, message })\n if (requested.length > CHARACTER_MOTION_MAX_PICKS) add(\"capacity\", \"warning\", requested, \"Only the first three selections contribute. Remove extra selections.\")\n const picks = requested.slice(0, CHARACTER_MOTION_MAX_PICKS)\n for (const id of picks) if (!getCharacterMotion(id)) add(\"unknown\", \"error\", [id], `Motion “${id}” is unavailable and contributes no fragment. Remove or replace it.`)\n const entries = picks.flatMap(id => { const entry = getCharacterMotion(id); return entry?.promptHint ? [entry] : [] })\n const active = entries.filter(e => !bindings.subjectMinor || !e.adultOnly)\n if (bindings.selfPairing && active.some(e => e.twoPerson || e.counterpart)) add(\"roles\", \"error\", active.filter(e => e.twoPerson || e.counterpart).map(e => e.id), \"The same reference is connected as Target and Partner. Connect distinct participants before running this interaction.\")\n const omitted = entries.filter(e => bindings.subjectMinor && e.adultOnly)\n if (omitted.length) add(\"omitted\", active.length ? \"warning\" : \"error\", omitted.map(e => e.id), `${omitted.map(e => e.label).join(\", \")} omitted for a connected minor. ${active.length ? \"Replace these selections.\" : \"No selected motion contributes a fragment.\"}`)\n if ((bindings.targetNames?.length ?? 0) > 1) add(\"multiple-targets\", \"warning\", picks, \"Each target performs a separate copy of the sequence. Use separate motion nodes for coordinated choreography.\")\n for (const entry of active) {\n if (entry.deprecated) add(\"retired\", \"warning\", [entry.id], `${entry.label} is retired from new choices but still resolves in saved workflows.${entry.replacementId ? ` Use ${getCharacterMotion(entry.replacementId)?.label ?? entry.replacementId}.` : \"\"}`)\n if (entry.fixedPace && timing?.pace && timing.pace !== \"auto\") add(\"pace\", \"warning\", [entry.id], `${entry.label} sets its own timing. Set Pace to Auto or replace the motion.`)\n if (entry.requires?.length) add(\"requirements\", \"info\", [entry.id], `${entry.label} requires: ${entry.requires.join(\", \")}.${entry.twoPerson || entry.counterpart ? bindings.partnerNames?.length ? ` Partner reference: ${bindings.partnerNames.join(\", \")}; confirm it matches the required recipient.` : \" Connect a Partner reference to identify the recipient; otherwise the model chooses it.\" : \" Establish these in the scene or prompt; the fragment does not supply reference media.\"}`)\n }\n for (let i = 1; i < active.length; i++) {\n const before = active[i - 1]!, after = active[i]!, ids = [before.id, after.id]\n if (before.endVisibility === \"out-of-frame\") add(\"visibility\", \"warning\", ids, `${before.label} ends out of view before ${after.label}. Reorder or add an entrance.`)\n if (before.endPose && after.startPose && before.endPose !== \"any\" && after.startPose !== \"any\" && before.endPose !== after.startPose) add(\"pose\", \"warning\", ids, `${before.label} ends ${before.endPose}; ${after.label} starts ${after.startPose}. Add a transition or replace a motion.`)\n if (before.handsAfter && before.handsAfter !== \"free\" && after.needsFreeHands) add(\"hands\", \"warning\", ids, `${before.label} leaves hands occupied; ${after.label} needs free hands. Add a release first.`)\n }\n const compound = active.filter(e => e.kind === \"compound\")\n if (compound.length) add(\"compound\", \"warning\", compound.map(e => e.id), `${compound.length} selection${compound.length === 1 ? \" is\" : \"s are\"} compound choreography. Short clips may not fit every phase; test the sequence before adding more actions.`)\n return result\n}\n"]}
1
+ {"version":3,"sources":["../src/wardrobe.ts","../src/character-motion-diagnostics.ts"],"names":["id","pickIds","h","CHARACTER_MOTION_MAX_PICKS","getCharacterMotion"],"mappings":";;;;;AA0BO,IAAM,wBAAA,GAA6D;AAAA,EACxE,WAAA;AAAA,EAAa,KAAA;AAAA,EAAO,QAAA;AAAA,EAAU,WAAA;AAAA,EAAa,UAAA;AAAA,EAC3C,UAAA;AAAA,EAAY,aAAA;AAAA,EAAe,eAAA;AAAA,EAAiB,UAAA;AAAA,EAAY;AAC1D;AAEO,IAAM,wBAAA,GAAwE;AAAA,EACnF,SAAA,EAAW,WAAA;AAAA,EAAa,GAAA,EAAK,KAAA;AAAA,EAAO,MAAA,EAAQ,QAAA;AAAA,EAAU,SAAA,EAAW,WAAA;AAAA,EACjE,QAAA,EAAU,UAAA;AAAA,EAAY,QAAA,EAAU,UAAA;AAAA,EAAY,WAAA,EAAa,aAAA;AAAA,EACzD,eAAA,EAAiB,eAAA;AAAA,EAAiB,QAAA,EAAU,UAAA;AAAA,EAAY,GAAA,EAAK;AAC/D;AAEO,IAAM,2BAAA,GAA8E;AAAA,EACzF,SAAA,EAAW,WAAA;AAAA,EAAa,GAAA,EAAK,KAAA;AAAA,EAAO,MAAA,EAAQ,QAAA;AAAA,EAAU,SAAA,EAAW,WAAA;AAAA,EACjE,QAAA,EAAU,UAAA;AAAA,EAAY,QAAA,EAAU,UAAA;AAAA,EAAY,WAAA,EAAa,aAAA;AAAA,EACzD,eAAA,EAAiB,cAAA;AAAA,EAAgB,QAAA,EAAU,UAAA;AAAA,EAAY,GAAA,EAAK;AAC9D;AAGA,IAAM,6BAA6C,IAAI,GAAA,CAAI,CAAC,UAAA,EAAY,aAAa,CAAC,CAAA;AAEtF,IAAM,QAAA,mBAAgC,IAAI,GAAA,CAAI,CAAC,eAAe,CAAC,CAAA;AAExD,IAAM,QAAA,GAAyC;AAAA;AAAA,EAEpD,EAAE,IAAI,WAAA,EAAiB,KAAA,EAAO,UAAc,SAAA,EAAW,WAAA,EAAa,YAAY,6BAAA,EAA8B;AAAA,EAC9G,EAAE,IAAI,aAAA,EAAiB,KAAA,EAAO,YAAc,SAAA,EAAW,WAAA,EAAa,YAAY,0BAAA,EAA2B;AAAA,EAC3G,EAAE,IAAI,WAAA,EAAiB,KAAA,EAAO,UAAc,SAAA,EAAW,WAAA,EAAa,YAAY,wBAAA,EAAyB;AAAA,EACzG,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,cAAc,SAAA,EAAW,WAAA,EAAa,YAAY,4BAAA,EAA6B;AAAA,EAC7G,EAAE,IAAI,aAAA,EAAiB,KAAA,EAAO,YAAc,SAAA,EAAW,WAAA,EAAa,YAAY,wBAAA,EAAyB;AAAA,EACzG,EAAE,IAAI,YAAA,EAAiB,KAAA,EAAO,WAAc,SAAA,EAAW,WAAA,EAAa,YAAY,oBAAA,EAAqB;AAAA,EACrG,EAAE,IAAI,UAAA,EAAiB,KAAA,EAAO,UAAc,SAAA,EAAW,WAAA,EAAa,YAAY,6BAAA,EAA8B;AAAA,EAC9G,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,cAAc,SAAA,EAAW,WAAA,EAAa,YAAY,4BAAA,EAA6B;AAAA,EAC7G,EAAE,IAAI,YAAA,EAAiB,KAAA,EAAO,WAAc,SAAA,EAAW,WAAA,EAAa,YAAY,cAAA,EAAe;AAAA,EAC/F,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,cAAc,SAAA,EAAW,WAAA,EAAa,YAAY,uBAAA,EAAwB;AAAA;AAAA,EAExG,EAAE,IAAI,WAAA,EAAiB,KAAA,EAAO,WAAe,SAAA,EAAW,KAAA,EAAO,YAAY,mBAAA,EAAoB;AAAA,EAC/F,EAAE,IAAI,WAAA,EAAiB,KAAA,EAAO,UAAe,SAAA,EAAW,KAAA,EAAO,YAAY,kBAAA,EAAmB;AAAA,EAC9F,EAAE,IAAI,WAAA,EAAiB,KAAA,EAAO,UAAe,SAAA,EAAW,KAAA,EAAO,YAAY,kBAAA,EAAmB;AAAA,EAC9F,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,eAAe,SAAA,EAAW,KAAA,EAAO,YAAY,6BAAA,EAA8B;AAAA,EACzG,EAAE,IAAI,SAAA,EAAiB,KAAA,EAAO,QAAe,SAAA,EAAW,KAAA,EAAO,YAAY,oBAAA,EAAqB;AAAA,EAChG,EAAE,IAAI,YAAA,EAAiB,KAAA,EAAO,WAAe,SAAA,EAAW,KAAA,EAAO,YAAY,mBAAA,EAAoB;AAAA,EAC/F,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,cAAe,SAAA,EAAW,KAAA,EAAO,YAAY,sBAAA,EAAuB;AAAA;AAAA,EAElG,EAAE,IAAI,UAAA,EAAe,KAAA,EAAO,SAAY,SAAA,EAAW,QAAA,EAAU,YAAY,eAAA,EAAgB;AAAA,EACzF,EAAE,IAAI,aAAA,EAAe,KAAA,EAAO,YAAY,SAAA,EAAW,QAAA,EAAU,YAAY,2BAAA,EAA4B;AAAA,EACrG,EAAE,IAAI,UAAA,EAAe,KAAA,EAAO,SAAY,SAAA,EAAW,QAAA,EAAU,YAAY,iBAAA,EAAkB;AAAA,EAC3F,EAAE,IAAI,WAAA,EAAe,KAAA,EAAO,UAAY,SAAA,EAAW,QAAA,EAAU,YAAY,gBAAA,EAAiB;AAAA,EAC1F,EAAE,IAAI,aAAA,EAAe,KAAA,EAAO,YAAY,SAAA,EAAW,QAAA,EAAU,YAAY,kBAAA,EAAmB;AAAA,EAC5F,EAAE,IAAI,UAAA,EAAe,KAAA,EAAO,SAAY,SAAA,EAAW,QAAA,EAAU,YAAY,qBAAA,EAAsB;AAAA;AAAA,EAE/F,EAAE,IAAI,eAAA,EAAkB,KAAA,EAAO,QAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,EAAA,EAAG;AAAA,EACtF,EAAE,IAAI,eAAA,EAAkB,KAAA,EAAO,kBAAkB,SAAA,EAAW,WAAA,EAAa,YAAY,qBAAA,EAAsB;AAAA,EAC3G,EAAE,IAAI,WAAA,EAAkB,KAAA,EAAO,UAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,aAAA,EAAc;AAAA,EACjG,EAAE,IAAI,WAAA,EAAkB,KAAA,EAAO,eAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,kBAAA,EAAmB;AAAA,EACtG,EAAE,IAAI,UAAA,EAAkB,KAAA,EAAO,SAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,YAAA,EAAa;AAAA,EAChG,EAAE,IAAI,UAAA,EAAkB,KAAA,EAAO,SAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,oBAAA,EAAqB;AAAA,EACxG,EAAE,IAAI,aAAA,EAAkB,KAAA,EAAO,gBAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,mBAAA,EAAoB;AAAA,EACvG,EAAE,IAAI,aAAA,EAAkB,KAAA,EAAO,YAAgB,SAAA,EAAW,WAAA,EAAa,YAAY,eAAA,EAAgB;AAAA;AAAA,EAEnG,EAAE,IAAI,aAAA,EAAgB,KAAA,EAAO,YAAc,SAAA,EAAW,UAAA,EAAY,YAAY,kBAAA,EAAmB;AAAA,EACjG,EAAE,IAAI,UAAA,EAAgB,KAAA,EAAO,SAAc,SAAA,EAAW,UAAA,EAAY,YAAY,eAAA,EAAgB;AAAA,EAC9F,EAAE,IAAI,UAAA,EAAgB,KAAA,EAAO,SAAc,SAAA,EAAW,UAAA,EAAY,YAAY,eAAA,EAAgB;AAAA,EAC9F,EAAE,IAAI,YAAA,EAAgB,KAAA,EAAO,WAAc,SAAA,EAAW,UAAA,EAAY,YAAY,iBAAA,EAAkB;AAAA,EAChG,EAAE,IAAI,cAAA,EAAgB,KAAA,EAAO,eAAe,SAAA,EAAW,UAAA,EAAY,YAAY,qBAAA,EAAsB;AAAA,EACrG,EAAE,IAAI,aAAA,EAAgB,KAAA,EAAO,YAAc,SAAA,EAAW,UAAA,EAAY,YAAY,UAAA,EAAW;AAAA;AAAA,EAEzF,EAAE,IAAI,QAAA,EAAe,KAAA,EAAO,OAAY,SAAA,EAAW,UAAA,EAAY,YAAY,eAAA,EAAgB;AAAA,EAC3F,EAAE,IAAI,WAAA,EAAe,KAAA,EAAO,UAAY,SAAA,EAAW,UAAA,EAAY,YAAY,kBAAA,EAAmB;AAAA,EAC9F,EAAE,IAAI,YAAA,EAAe,KAAA,EAAO,iBAAiB,SAAA,EAAW,UAAA,EAAY,YAAY,yBAAA,EAA0B;AAAA,EAC1G,EAAE,IAAI,SAAA,EAAe,KAAA,EAAO,QAAY,SAAA,EAAW,UAAA,EAAY,YAAY,kBAAA,EAAmB;AAAA,EAC9F,EAAE,IAAI,UAAA,EAAe,KAAA,EAAO,SAAY,SAAA,EAAW,UAAA,EAAY,YAAY,iBAAA,EAAkB;AAAA,EAC7F,EAAE,IAAI,WAAA,EAAe,KAAA,EAAO,UAAY,SAAA,EAAW,UAAA,EAAY,YAAY,kBAAA,EAAmB;AAAA;AAAA,EAE9F,EAAE,IAAI,YAAA,EAAgB,KAAA,EAAO,WAAa,SAAA,EAAW,aAAA,EAAe,YAAY,iBAAA,EAAkB;AAAA,EAClG,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,cAAc,SAAA,EAAW,aAAA,EAAe,YAAY,oBAAA,EAAqB;AAAA,EACvG,EAAE,IAAI,UAAA,EAAgB,KAAA,EAAO,SAAa,SAAA,EAAW,aAAA,EAAe,YAAY,iBAAA,EAAkB;AAAA,EAClG,EAAE,IAAI,WAAA,EAAgB,KAAA,EAAO,UAAa,SAAA,EAAW,aAAA,EAAe,YAAY,gBAAA,EAAiB;AAAA,EACjG,EAAE,IAAI,YAAA,EAAgB,KAAA,EAAO,WAAa,SAAA,EAAW,aAAA,EAAe,YAAY,2BAAA,EAA4B;AAAA,EAC5G,EAAE,IAAI,SAAA,EAAgB,KAAA,EAAO,QAAa,SAAA,EAAW,aAAA,EAAe,YAAY,aAAA,EAAc;AAAA,EAC9F,EAAE,IAAI,UAAA,EAAgB,KAAA,EAAO,SAAa,SAAA,EAAW,aAAA,EAAe,YAAY,iBAAA,EAAkB;AAAA;AAAA,EAElG,EAAE,IAAI,YAAA,EAAgB,KAAA,EAAO,WAAa,SAAA,EAAW,eAAA,EAAiB,YAAY,4BAAA,EAA6B;AAAA,EAC/G,EAAE,IAAI,cAAA,EAAgB,KAAA,EAAO,aAAa,SAAA,EAAW,eAAA,EAAiB,YAAY,yBAAA,EAA0B;AAAA,EAC5G,EAAE,IAAI,UAAA,EAAgB,KAAA,EAAO,eAAe,SAAA,EAAW,eAAA,EAAiB,YAAY,sBAAA,EAAuB;AAAA,EAC3G,EAAE,IAAI,WAAA,EAAgB,KAAA,EAAO,UAAa,SAAA,EAAW,eAAA,EAAiB,YAAY,kBAAA,EAAmB;AAAA,EACrG,EAAE,IAAI,UAAA,EAAgB,KAAA,EAAO,eAAe,SAAA,EAAW,eAAA,EAAiB,YAAY,2BAAA,EAA4B;AAAA,EAChH,EAAE,IAAI,SAAA,EAAgB,KAAA,EAAO,QAAa,SAAA,EAAW,eAAA,EAAiB,YAAY,sBAAA,EAAuB;AAAA,EACzG,EAAE,IAAI,cAAA,EAAgB,KAAA,EAAO,aAAa,SAAA,EAAW,eAAA,EAAiB,YAAY,yBAAA,EAA0B;AAAA;AAAA,EAE5G,EAAE,IAAI,WAAA,EAAc,KAAA,EAAO,UAAW,SAAA,EAAW,UAAA,EAAY,YAAY,kBAAA,EAAmB;AAAA,EAC5F,EAAE,IAAI,UAAA,EAAc,KAAA,EAAO,SAAW,SAAA,EAAW,UAAA,EAAY,YAAY,UAAA,EAAW;AAAA,EACpF,EAAE,IAAI,YAAA,EAAc,KAAA,EAAO,WAAW,SAAA,EAAW,UAAA,EAAY,YAAY,YAAA,EAAa;AAAA,EACtF,EAAE,IAAI,SAAA,EAAc,KAAA,EAAO,QAAW,SAAA,EAAW,UAAA,EAAY,YAAY,SAAA,EAAU;AAAA,EACnF,EAAE,IAAI,SAAA,EAAc,KAAA,EAAO,QAAW,SAAA,EAAW,UAAA,EAAY,YAAY,SAAA,EAAU;AAAA,EACnF,EAAE,IAAI,UAAA,EAAc,KAAA,EAAO,SAAW,SAAA,EAAW,UAAA,EAAY,YAAY,UAAA,EAAW;AAAA,EACpF,EAAE,IAAI,UAAA,EAAc,KAAA,EAAO,SAAW,SAAA,EAAW,UAAA,EAAY,YAAY,UAAA,EAAW;AAAA;AAAA,EAEpF,EAAE,IAAI,iBAAA,EAAmB,KAAA,EAAO,gBAAgB,SAAA,EAAW,KAAA,EAAO,YAAY,yBAAA,EAA0B;AAAA,EACxG,EAAE,IAAI,UAAA,EAAY,KAAA,EAAO,SAAa,SAAA,EAAW,KAAA,EAAO,YAAY,kBAAA,EAAmB;AAAA,EACvF,EAAE,IAAI,UAAA,EAAY,KAAA,EAAO,SAAa,SAAA,EAAW,KAAA,EAAO,YAAY,kBAAA,EAAmB;AAAA,EACvF,EAAE,IAAI,UAAA,EAAY,KAAA,EAAO,SAAa,SAAA,EAAW,KAAA,EAAO,YAAY,kBAAA,EAAmB;AAAA,EACvF,EAAE,IAAI,cAAA,EAAgB,KAAA,EAAO,aAAa,SAAA,EAAW,KAAA,EAAO,YAAY,wBAAA,EAAyB;AAAA,EACjG,EAAE,IAAI,aAAA,EAAe,KAAA,EAAO,YAAY,SAAA,EAAW,KAAA,EAAO,YAAY,mBAAA,EAAoB;AAAA,EAC1F,EAAE,IAAI,eAAA,EAAiB,KAAA,EAAO,cAAc,SAAA,EAAW,KAAA,EAAO,YAAY,wBAAA;AAC5E;AAEA,IAAM,KAAA,GAAoC,IAAI,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,EAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AAKhF,IAAM,gBAAyD,MAAM;AACnE,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAwC;AACxD,EAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,SAAS,CAAA;AAChC,IAAA,IAAI,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA;AAAA,aACZ,GAAA,CAAI,CAAA,CAAE,SAAA,EAAW,CAAC,CAAC,CAAC,CAAA;AAAA,EAC/B;AACA,EAAA,OAAO,GAAA;AACT,CAAA,GAAG;AAEI,SAAS,iBAAiB,EAAA,EAA0D;AACzF,EAAA,OAAO,EAAA,GAAK,KAAA,CAAM,GAAA,CAAI,EAAE,CAAA,GAAI,MAAA;AAC9B;AAEO,SAAS,sBAAsB,EAAA,EAAuC;AAC3E,EAAA,OAAO,gBAAA,CAAiB,EAAE,CAAA,EAAG,UAAA,IAAc,EAAA;AAC7C;AAEO,SAAS,8BAA8B,GAAA,EAAyC;AACrF,EAAA,OAAO,YAAA,CAAa,GAAA,CAAI,GAAG,CAAA,IAAK,EAAC;AACnC;AAEO,SAAS,mBAAmB,KAAA,EAA0D;AAC3F,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,aAAa,wBAAA,EAA0B;AAChD,IAAA,MAAM,KAAA,GAAQ,4BAA4B,SAAS,CAAA;AACnD,IAAA,MAAM,GAAA,GAAM,MAAM,KAAK,CAAA;AACvB,IAAA,IAAI,UAAA,CAAW,GAAA,CAAI,SAAS,CAAA,EAAG;AAC7B,MAAA,KAAA,MAAWA,GAAAA,IAAMC,gBAAA,CAAQ,GAAG,CAAA,EAAG;AAC7B,QAAA,IAAI,QAAA,CAAS,GAAA,CAAID,GAAE,CAAA,EAAG;AACtB,QAAA,MAAME,EAAAA,GAAI,sBAAsBF,GAAE,CAAA;AAClC,QAAA,IAAIE,EAAAA,EAAG,KAAA,CAAM,IAAA,CAAKA,EAAC,CAAA;AAAA,MACrB;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAAM,MAAA;AAC3C,IAAA,IAAI,CAAC,EAAA,IAAM,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,EAAG;AAC7B,IAAA,MAAM,CAAA,GAAI,sBAAsB,EAAE,CAAA;AAClC,IAAA,IAAI,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,EACrB;AACA,EAAA,OAAO,KAAA;AACT;;;ACjKO,SAAS,6BAAA,CACd,KAAA,EACA,MAAA,EACA,QAAA,GAAoC,EAAC,EACC;AACtC,EAAA,MAAM,YAAY,OAAO,KAAA,KAAU,WAAW,CAAC,KAAK,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAC;AACtG,EAAA,MAAM,SAAsC,EAAC;AAC7C,EAAA,MAAM,GAAA,GAAM,CAAC,IAAA,EAAyC,QAAA,EAAiD,GAAA,EAAwB,OAAA,KAAoB,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,GAAA,EAAK,SAAS,CAAA;AAC/L,EAAA,IAAI,UAAU,MAAA,GAASC,4CAAA,MAAgC,UAAA,EAAY,SAAA,EAAW,WAAW,sEAAsE,CAAA;AAC/J,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,KAAA,CAAM,CAAA,EAAGA,4CAA0B,CAAA;AAC3D,EAAA,KAAA,MAAW,EAAA,IAAM,KAAA,EAAO,IAAI,CAACC,qCAAmB,EAAE,CAAA,EAAG,GAAA,CAAI,SAAA,EAAW,SAAS,CAAC,EAAE,CAAA,EAAG,CAAA,aAAA,EAAW,EAAE,CAAA,wEAAA,CAAqE,CAAA;AACrK,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAA,KAAM;AAAE,IAAA,MAAM,KAAA,GAAQA,qCAAmB,EAAE,CAAA;AAAG,IAAA,OAAO,KAAA,EAAO,UAAA,GAAa,CAAC,KAAK,IAAI,EAAC;AAAA,EAAE,CAAC,CAAA;AACrH,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,QAAA,CAAS,YAAA,IAAgB,CAAC,CAAA,CAAE,SAAS,CAAA;AACzE,EAAA,IAAI,QAAA,CAAS,WAAA,IAAe,MAAA,CAAO,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,WAAW,CAAA,EAAG,GAAA,CAAI,OAAA,EAAS,OAAA,EAAS,OAAO,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,WAAW,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,EAAE,CAAA,EAAG,uHAAuH,CAAA;AAC1R,EAAA,MAAM,UAAU,OAAA,CAAQ,MAAA,CAAO,OAAK,QAAA,CAAS,YAAA,IAAgB,EAAE,SAAS,CAAA;AACxE,EAAA,IAAI,OAAA,CAAQ,MAAA,EAAQ,GAAA,CAAI,SAAA,EAAW,MAAA,CAAO,MAAA,GAAS,SAAA,GAAY,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,EAAE,CAAA,EAAG,CAAA,EAAG,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,gCAAA,EAAmC,MAAA,CAAO,MAAA,GAAS,2BAAA,GAA8B,4CAA4C,CAAA,CAAE,CAAA;AACtQ,EAAA,IAAA,CAAK,QAAA,CAAS,aAAa,MAAA,IAAU,CAAA,IAAK,GAAG,GAAA,CAAI,kBAAA,EAAoB,SAAA,EAAW,KAAA,EAAO,+GAA+G,CAAA;AACtM,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,UAAA,EAAY,GAAA,CAAI,SAAA,EAAW,SAAA,EAAW,CAAC,KAAA,CAAM,EAAE,CAAA,EAAG,CAAA,EAAG,KAAA,CAAM,KAAK,sEAAsE,KAAA,CAAM,aAAA,GAAgB,CAAA,KAAA,EAAQA,oCAAA,CAAmB,KAAA,CAAM,aAAa,CAAA,EAAG,KAAA,IAAS,KAAA,CAAM,aAAa,CAAA,CAAA,CAAA,GAAM,EAAE,CAAA,CAAE,CAAA;AAC7P,IAAA,IAAI,MAAM,SAAA,IAAa,MAAA,EAAQ,IAAA,IAAQ,MAAA,CAAO,SAAS,MAAA,EAAQ,GAAA,CAAI,MAAA,EAAQ,SAAA,EAAW,CAAC,KAAA,CAAM,EAAE,GAAG,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,6DAAA,CAA+D,CAAA;AAC/K,IAAA,IAAI,MAAM,QAAA,EAAU,MAAA,EAAQ,GAAA,CAAI,cAAA,EAAgB,QAAQ,CAAC,KAAA,CAAM,EAAE,CAAA,EAAG,GAAG,KAAA,CAAM,KAAK,CAAA,WAAA,EAAc,KAAA,CAAM,SAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,SAAA,IAAa,KAAA,CAAM,WAAA,GAAc,QAAA,CAAS,cAAc,MAAA,GAAS,CAAA,oBAAA,EAAuB,QAAA,CAAS,YAAA,CAAa,KAAK,IAAI,CAAC,CAAA,4CAAA,CAAA,GAAiD,yFAAA,GAA4F,wFAAwF,CAAA,CAAE,CAAA;AAAA,EACpe;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,CAAA,GAAI,CAAC,GAAI,KAAA,GAAQ,MAAA,CAAO,CAAC,CAAA,EAAI,GAAA,GAAM,CAAC,MAAA,CAAO,EAAA,EAAI,MAAM,EAAE,CAAA;AAC7E,IAAA,IAAI,MAAA,CAAO,aAAA,KAAkB,cAAA,EAAgB,GAAA,CAAI,YAAA,EAAc,SAAA,EAAW,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,yBAAA,EAA4B,KAAA,CAAM,KAAK,CAAA,6BAAA,CAA+B,CAAA;AACpK,IAAA,IAAI,MAAA,CAAO,OAAA,IAAW,KAAA,CAAM,SAAA,IAAa,MAAA,CAAO,OAAA,KAAY,KAAA,IAAS,KAAA,CAAM,SAAA,KAAc,KAAA,IAAS,MAAA,CAAO,OAAA,KAAY,MAAM,SAAA,EAAW,GAAA,CAAI,MAAA,EAAQ,SAAA,EAAW,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,MAAA,EAAS,MAAA,CAAO,OAAO,CAAA,EAAA,EAAK,KAAA,CAAM,KAAK,CAAA,QAAA,EAAW,KAAA,CAAM,SAAS,CAAA,uCAAA,CAAyC,CAAA;AAC3R,IAAA,IAAI,OAAO,UAAA,IAAc,MAAA,CAAO,UAAA,KAAe,MAAA,IAAU,MAAM,cAAA,EAAgB,GAAA,CAAI,OAAA,EAAS,SAAA,EAAW,KAAK,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,wBAAA,EAA2B,KAAA,CAAM,KAAK,CAAA,uCAAA,CAAyC,CAAA;AAAA,EAC5M;AACA,EAAA,MAAM,WAAW,MAAA,CAAO,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,UAAU,CAAA;AACzD,EAAA,IAAI,QAAA,CAAS,QAAQ,GAAA,CAAI,UAAA,EAAY,WAAW,QAAA,CAAS,GAAA,CAAI,OAAK,CAAA,CAAE,EAAE,GAAG,CAAA,EAAG,QAAA,CAAS,MAAM,CAAA,UAAA,EAAa,QAAA,CAAS,WAAW,CAAA,GAAI,KAAA,GAAQ,OAAO,CAAA,0GAAA,CAA4G,CAAA;AAC3P,EAAA,OAAO,MAAA;AACT","file":"chunk-F22GZF7T.cjs","sourcesContent":["import { pickIds } from \"@nodaro/shared/catalogs\"\n\nexport type WardrobeDimension =\n | \"archetype\" | \"top\" | \"bottom\" | \"outerwear\" | \"footwear\"\n | \"headwear\" | \"accessories\" | \"color-palette\" | \"material\" | \"era\"\n\nexport interface WardrobeEntry {\n readonly id: string\n readonly label: string\n readonly dimension: WardrobeDimension\n readonly promptHint: string\n}\n\nexport interface WardrobeValue {\n archetype?: string\n top?: string\n bottom?: string\n outerwear?: string\n footwear?: string\n headwear?: string | ReadonlyArray<string>\n accessories?: string | ReadonlyArray<string>\n colorPalette?: string\n material?: string\n era?: string\n}\n\nexport const WARDROBE_DIMENSION_ORDER: ReadonlyArray<WardrobeDimension> = [\n \"archetype\", \"top\", \"bottom\", \"outerwear\", \"footwear\",\n \"headwear\", \"accessories\", \"color-palette\", \"material\", \"era\",\n]\n\nexport const WARDROBE_CATEGORY_LABELS: Readonly<Record<WardrobeDimension, string>> = {\n archetype: \"Archetype\", top: \"Top\", bottom: \"Bottom\", outerwear: \"Outerwear\",\n footwear: \"Footwear\", headwear: \"Headwear\", accessories: \"Accessories\",\n \"color-palette\": \"Color Palette\", material: \"Material\", era: \"Era\",\n}\n\nexport const WARDROBE_FIELD_BY_DIMENSION: Record<WardrobeDimension, keyof WardrobeValue> = {\n archetype: \"archetype\", top: \"top\", bottom: \"bottom\", outerwear: \"outerwear\",\n footwear: \"footwear\", headwear: \"headwear\", accessories: \"accessories\",\n \"color-palette\": \"colorPalette\", material: \"material\", era: \"era\",\n}\n\n/** Multi-pick dims emit each picked entry independently. */\nconst MULTI_PICK: ReadonlySet<WardrobeDimension> = new Set([\"headwear\", \"accessories\"])\n/** Sentinel ids that mean \"nothing here\" and emit no hint. */\nconst NONE_IDS: ReadonlySet<string> = new Set([\"wd-outer-none\"])\n\nexport const WARDROBE: ReadonlyArray<WardrobeEntry> = [\n // archetype\n { id: \"wd-casual\", label: \"Casual\", dimension: \"archetype\", promptHint: \"in casual everyday clothing\" },\n { id: \"wd-business\", label: \"Business\", dimension: \"archetype\", promptHint: \"in smart business attire\" },\n { id: \"wd-formal\", label: \"Formal\", dimension: \"archetype\", promptHint: \"in elegant formal wear\" },\n { id: \"wd-streetwear\", label: \"Streetwear\", dimension: \"archetype\", promptHint: \"in contemporary streetwear\" },\n { id: \"wd-athletic\", label: \"Athletic\", dimension: \"archetype\", promptHint: \"in athletic sportswear\" },\n { id: \"wd-fantasy\", label: \"Fantasy\", dimension: \"archetype\", promptHint: \"in fantasy costume\" },\n { id: \"wd-scifi\", label: \"Sci-Fi\", dimension: \"archetype\", promptHint: \"in futuristic sci-fi attire\" },\n { id: \"wd-historical\", label: \"Historical\", dimension: \"archetype\", promptHint: \"in period historical dress\" },\n { id: \"wd-uniform\", label: \"Uniform\", dimension: \"archetype\", promptHint: \"in a uniform\" },\n { id: \"wd-loungewear\", label: \"Loungewear\", dimension: \"archetype\", promptHint: \"in relaxed loungewear\" },\n // top\n { id: \"wd-tshirt\", label: \"T-Shirt\", dimension: \"top\", promptHint: \"wearing a t-shirt\" },\n { id: \"wd-blouse\", label: \"Blouse\", dimension: \"top\", promptHint: \"wearing a blouse\" },\n { id: \"wd-hoodie\", label: \"Hoodie\", dimension: \"top\", promptHint: \"wearing a hoodie\" },\n { id: \"wd-buttondown\", label: \"Button-down\", dimension: \"top\", promptHint: \"wearing a button-down shirt\" },\n { id: \"wd-tank\", label: \"Tank\", dimension: \"top\", promptHint: \"wearing a tank top\" },\n { id: \"wd-sweater\", label: \"Sweater\", dimension: \"top\", promptHint: \"wearing a sweater\" },\n { id: \"wd-turtleneck\", label: \"Turtleneck\", dimension: \"top\", promptHint: \"wearing a turtleneck\" },\n // bottom\n { id: \"wd-jeans\", label: \"Jeans\", dimension: \"bottom\", promptHint: \"wearing jeans\" },\n { id: \"wd-trousers\", label: \"Trousers\", dimension: \"bottom\", promptHint: \"wearing tailored trousers\" },\n { id: \"wd-skirt\", label: \"Skirt\", dimension: \"bottom\", promptHint: \"wearing a skirt\" },\n { id: \"wd-shorts\", label: \"Shorts\", dimension: \"bottom\", promptHint: \"wearing shorts\" },\n { id: \"wd-leggings\", label: \"Leggings\", dimension: \"bottom\", promptHint: \"wearing leggings\" },\n { id: \"wd-cargo\", label: \"Cargo\", dimension: \"bottom\", promptHint: \"wearing cargo pants\" },\n // outerwear\n { id: \"wd-outer-none\", label: \"None\", dimension: \"outerwear\", promptHint: \"\" },\n { id: \"wd-leatherjkt\", label: \"Leather Jacket\", dimension: \"outerwear\", promptHint: \"in a leather jacket\" },\n { id: \"wd-blazer\", label: \"Blazer\", dimension: \"outerwear\", promptHint: \"in a blazer\" },\n { id: \"wd-trench\", label: \"Trench Coat\", dimension: \"outerwear\", promptHint: \"in a trench coat\" },\n { id: \"wd-parka\", label: \"Parka\", dimension: \"outerwear\", promptHint: \"in a parka\" },\n { id: \"wd-cloak\", label: \"Cloak\", dimension: \"outerwear\", promptHint: \"in a flowing cloak\" },\n { id: \"wd-denimjkt\", label: \"Denim Jacket\", dimension: \"outerwear\", promptHint: \"in a denim jacket\" },\n { id: \"wd-cardigan\", label: \"Cardigan\", dimension: \"outerwear\", promptHint: \"in a cardigan\" },\n // footwear\n { id: \"wd-sneakers\", label: \"Sneakers\", dimension: \"footwear\", promptHint: \"wearing sneakers\" },\n { id: \"wd-boots\", label: \"Boots\", dimension: \"footwear\", promptHint: \"wearing boots\" },\n { id: \"wd-heels\", label: \"Heels\", dimension: \"footwear\", promptHint: \"wearing heels\" },\n { id: \"wd-sandals\", label: \"Sandals\", dimension: \"footwear\", promptHint: \"wearing sandals\" },\n { id: \"wd-dressshoe\", label: \"Dress Shoes\", dimension: \"footwear\", promptHint: \"wearing dress shoes\" },\n { id: \"wd-barefoot\", label: \"Barefoot\", dimension: \"footwear\", promptHint: \"barefoot\" },\n // headwear (multi)\n { id: \"wd-cap\", label: \"Cap\", dimension: \"headwear\", promptHint: \"wearing a cap\" },\n { id: \"wd-beanie\", label: \"Beanie\", dimension: \"headwear\", promptHint: \"wearing a beanie\" },\n { id: \"wd-widehat\", label: \"Wide-brim Hat\", dimension: \"headwear\", promptHint: \"wearing a wide-brim hat\" },\n { id: \"wd-hood\", label: \"Hood\", dimension: \"headwear\", promptHint: \"with the hood up\" },\n { id: \"wd-crown\", label: \"Crown\", dimension: \"headwear\", promptHint: \"wearing a crown\" },\n { id: \"wd-helmet\", label: \"Helmet\", dimension: \"headwear\", promptHint: \"wearing a helmet\" },\n // accessories (multi)\n { id: \"wd-glasses\", label: \"Glasses\", dimension: \"accessories\", promptHint: \"wearing glasses\" },\n { id: \"wd-sunglasses\", label: \"Sunglasses\", dimension: \"accessories\", promptHint: \"wearing sunglasses\" },\n { id: \"wd-scarf\", label: \"Scarf\", dimension: \"accessories\", promptHint: \"wearing a scarf\" },\n { id: \"wd-gloves\", label: \"Gloves\", dimension: \"accessories\", promptHint: \"wearing gloves\" },\n { id: \"wd-jewelry\", label: \"Jewelry\", dimension: \"accessories\", promptHint: \"wearing statement jewelry\" },\n { id: \"wd-belt\", label: \"Belt\", dimension: \"accessories\", promptHint: \"with a belt\" },\n { id: \"wd-watch\", label: \"Watch\", dimension: \"accessories\", promptHint: \"wearing a watch\" },\n // color-palette\n { id: \"wd-neutral\", label: \"Neutral\", dimension: \"color-palette\", promptHint: \"in a neutral color palette\" },\n { id: \"wd-all-black\", label: \"All Black\", dimension: \"color-palette\", promptHint: \"in an all-black palette\" },\n { id: \"wd-earth\", label: \"Earth Tones\", dimension: \"color-palette\", promptHint: \"in earth-tone colors\" },\n { id: \"wd-pastel\", label: \"Pastel\", dimension: \"color-palette\", promptHint: \"in pastel colors\" },\n { id: \"wd-jewel\", label: \"Jewel Tones\", dimension: \"color-palette\", promptHint: \"in rich jewel-tone colors\" },\n { id: \"wd-neon\", label: \"Neon\", dimension: \"color-palette\", promptHint: \"in vivid neon colors\" },\n { id: \"wd-all-white\", label: \"All White\", dimension: \"color-palette\", promptHint: \"in an all-white palette\" },\n // material\n { id: \"wd-cotton\", label: \"Cotton\", dimension: \"material\", promptHint: \"in cotton fabric\" },\n { id: \"wd-denim\", label: \"Denim\", dimension: \"material\", promptHint: \"in denim\" },\n { id: \"wd-leather\", label: \"Leather\", dimension: \"material\", promptHint: \"in leather\" },\n { id: \"wd-silk\", label: \"Silk\", dimension: \"material\", promptHint: \"in silk\" },\n { id: \"wd-wool\", label: \"Wool\", dimension: \"material\", promptHint: \"in wool\" },\n { id: \"wd-latex\", label: \"Latex\", dimension: \"material\", promptHint: \"in latex\" },\n { id: \"wd-linen\", label: \"Linen\", dimension: \"material\", promptHint: \"in linen\" },\n // era\n { id: \"wd-contemporary\", label: \"Contemporary\", dimension: \"era\", promptHint: \"in contemporary fashion\" },\n { id: \"wd-1920s\", label: \"1920s\", dimension: \"era\", promptHint: \"in 1920s fashion\" },\n { id: \"wd-1950s\", label: \"1950s\", dimension: \"era\", promptHint: \"in 1950s fashion\" },\n { id: \"wd-1980s\", label: \"1980s\", dimension: \"era\", promptHint: \"in 1980s fashion\" },\n { id: \"wd-victorian\", label: \"Victorian\", dimension: \"era\", promptHint: \"in Victorian-era dress\" },\n { id: \"wd-medieval\", label: \"Medieval\", dimension: \"era\", promptHint: \"in medieval dress\" },\n { id: \"wd-futuristic\", label: \"Futuristic\", dimension: \"era\", promptHint: \"in futuristic clothing\" },\n] as const\n\nconst BY_ID: Map<string, WardrobeEntry> = new Map(WARDROBE.map((e) => [e.id, e]))\n\n/** Entries grouped by dimension — precomputed once so per-dimension lookups\n * (the picker calls one per dimension per render) are O(1) with stable array\n * refs, instead of a full WARDROBE scan each call. */\nconst BY_DIMENSION: Map<WardrobeDimension, WardrobeEntry[]> = (() => {\n const map = new Map<WardrobeDimension, WardrobeEntry[]>()\n for (const e of WARDROBE) {\n const list = map.get(e.dimension)\n if (list) list.push(e)\n else map.set(e.dimension, [e])\n }\n return map\n})()\n\nexport function getWardrobeEntry(id: string | undefined | null): WardrobeEntry | undefined {\n return id ? BY_ID.get(id) : undefined\n}\n\nexport function getWardrobePromptHint(id: string | undefined | null): string {\n return getWardrobeEntry(id)?.promptHint ?? \"\"\n}\n\nexport function getWardrobeEntriesByDimension(dim: WardrobeDimension): WardrobeEntry[] {\n return BY_DIMENSION.get(dim) ?? []\n}\n\nexport function buildWardrobeHints(value: Record<string, unknown> & WardrobeValue): string[] {\n const hints: string[] = []\n for (const dimension of WARDROBE_DIMENSION_ORDER) {\n const field = WARDROBE_FIELD_BY_DIMENSION[dimension]\n const raw = value[field]\n if (MULTI_PICK.has(dimension)) {\n for (const id of pickIds(raw)) {\n if (NONE_IDS.has(id)) continue\n const h = getWardrobePromptHint(id)\n if (h) hints.push(h)\n }\n continue\n }\n const id = typeof raw === \"string\" ? raw : undefined\n if (!id || NONE_IDS.has(id)) continue\n const h = getWardrobePromptHint(id)\n if (h) hints.push(h)\n }\n return hints\n}\n","import { getCharacterMotion, CHARACTER_MOTION_MAX_PICKS, type CharacterMotionTiming } from \"./character-motion.js\"\n\nexport interface CharacterMotionDiagnostic {\n readonly code: \"unknown\" | \"omitted\" | \"retired\" | \"pose\" | \"visibility\" | \"hands\" | \"pace\" | \"requirements\" | \"compound\" | \"capacity\" | \"multiple-targets\" | \"roles\"\n readonly severity: \"error\" | \"warning\" | \"info\"\n readonly ids: readonly string[]\n readonly message: string\n}\nexport interface CharacterMotionBindings {\n readonly selfPairing?: boolean\n readonly subjectMinor?: boolean\n readonly partnerNames?: readonly string[]\n readonly targetNames?: readonly string[]\n}\n\n/** Shared by editor, API clients and local review. Missing metadata means\n * unknown; this never certifies a sequence or predicts clip duration. */\nexport function getCharacterMotionDiagnostics(\n value: string | readonly string[] | null | undefined,\n timing?: CharacterMotionTiming,\n bindings: CharacterMotionBindings = {},\n): readonly CharacterMotionDiagnostic[] {\n const requested = typeof value === \"string\" ? [value] : Array.isArray(value) ? [...new Set(value)] : []\n const result: CharacterMotionDiagnostic[] = []\n const add = (code: CharacterMotionDiagnostic[\"code\"], severity: CharacterMotionDiagnostic[\"severity\"], ids: readonly string[], message: string) => result.push({ code, severity, ids, message })\n if (requested.length > CHARACTER_MOTION_MAX_PICKS) add(\"capacity\", \"warning\", requested, \"Only the first three selections contribute. Remove extra selections.\")\n const picks = requested.slice(0, CHARACTER_MOTION_MAX_PICKS)\n for (const id of picks) if (!getCharacterMotion(id)) add(\"unknown\", \"error\", [id], `Motion “${id}” is unavailable and contributes no fragment. Remove or replace it.`)\n const entries = picks.flatMap(id => { const entry = getCharacterMotion(id); return entry?.promptHint ? [entry] : [] })\n const active = entries.filter(e => !bindings.subjectMinor || !e.adultOnly)\n if (bindings.selfPairing && active.some(e => e.twoPerson || e.counterpart)) add(\"roles\", \"error\", active.filter(e => e.twoPerson || e.counterpart).map(e => e.id), \"The same reference is connected as Target and Partner. Connect distinct participants before running this interaction.\")\n const omitted = entries.filter(e => bindings.subjectMinor && e.adultOnly)\n if (omitted.length) add(\"omitted\", active.length ? \"warning\" : \"error\", omitted.map(e => e.id), `${omitted.map(e => e.label).join(\", \")} omitted for a connected minor. ${active.length ? \"Replace these selections.\" : \"No selected motion contributes a fragment.\"}`)\n if ((bindings.targetNames?.length ?? 0) > 1) add(\"multiple-targets\", \"warning\", picks, \"Each target performs a separate copy of the sequence. Use separate motion nodes for coordinated choreography.\")\n for (const entry of active) {\n if (entry.deprecated) add(\"retired\", \"warning\", [entry.id], `${entry.label} is retired from new choices but still resolves in saved workflows.${entry.replacementId ? ` Use ${getCharacterMotion(entry.replacementId)?.label ?? entry.replacementId}.` : \"\"}`)\n if (entry.fixedPace && timing?.pace && timing.pace !== \"auto\") add(\"pace\", \"warning\", [entry.id], `${entry.label} sets its own timing. Set Pace to Auto or replace the motion.`)\n if (entry.requires?.length) add(\"requirements\", \"info\", [entry.id], `${entry.label} requires: ${entry.requires.join(\", \")}.${entry.twoPerson || entry.counterpart ? bindings.partnerNames?.length ? ` Partner reference: ${bindings.partnerNames.join(\", \")}; confirm it matches the required recipient.` : \" Connect a Partner reference to identify the recipient; otherwise the model chooses it.\" : \" Establish these in the scene or prompt; the fragment does not supply reference media.\"}`)\n }\n for (let i = 1; i < active.length; i++) {\n const before = active[i - 1]!, after = active[i]!, ids = [before.id, after.id]\n if (before.endVisibility === \"out-of-frame\") add(\"visibility\", \"warning\", ids, `${before.label} ends out of view before ${after.label}. Reorder or add an entrance.`)\n if (before.endPose && after.startPose && before.endPose !== \"any\" && after.startPose !== \"any\" && before.endPose !== after.startPose) add(\"pose\", \"warning\", ids, `${before.label} ends ${before.endPose}; ${after.label} starts ${after.startPose}. Add a transition or replace a motion.`)\n if (before.handsAfter && before.handsAfter !== \"free\" && after.needsFreeHands) add(\"hands\", \"warning\", ids, `${before.label} leaves hands occupied; ${after.label} needs free hands. Add a release first.`)\n }\n const compound = active.filter(e => e.kind === \"compound\")\n if (compound.length) add(\"compound\", \"warning\", compound.map(e => e.id), `${compound.length} selection${compound.length === 1 ? \" is\" : \"s are\"} compound choreography. Short clips may not fit every phase; test the sequence before adding more actions.`)\n return result\n}\n"]}
@@ -25,6 +25,9 @@ var RESTYLE_PREVIEWS = {
25
25
  // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4
26
26
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4
27
27
  "pixar-3d": { url: "https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4" },
28
+ // Source shot: https://cdn.nodaro.ai/picker-renders/71d9ab7a-7396-48ff-8bc3-80454b0edd07.mp4
29
+ // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/b11ab600-ec62-4cb6-82b4-b0006374164b.mp4
30
+ "pop-art": { url: "https://cdn.nodaro.ai/picker-renders/0659dbe5-9dfe-45d8-9abd-6ccf88481dd8.mp4", stillAtSeconds: 7 },
28
31
  // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4
29
32
  // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4
30
33
  watercolor: { url: "https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4" }
@@ -35,5 +38,5 @@ function restylePreviewStillUrl(preview, width) {
35
38
 
36
39
  exports.RESTYLE_PREVIEWS = RESTYLE_PREVIEWS;
37
40
  exports.restylePreviewStillUrl = restylePreviewStillUrl;
38
- //# sourceMappingURL=chunk-PLQFXCBU.cjs.map
39
- //# sourceMappingURL=chunk-PLQFXCBU.cjs.map
41
+ //# sourceMappingURL=chunk-GJV7KTDX.cjs.map
42
+ //# sourceMappingURL=chunk-GJV7KTDX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/picker-art/restyle-previews.ts"],"names":["lookPreviewStillUrl"],"mappings":";;;;;AAsBO,IAAM,gBAAA,GAA6D;AAAA;AAAA;AAAA,EAGxE,KAAA,EAAO,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGjH,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,YAAA,EAAc,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGrG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,aAAA,EAAe,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGtG,cAAA,EAAgB,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGvG,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA,EAAgF;AAAA;AAAA;AAAA,EAGnG,SAAA,EAAW,EAAE,GAAA,EAAK,+EAAA,EAAiF,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,EAGrH,UAAA,EAAY,EAAE,GAAA,EAAK,+EAAA;AACrB;AAGO,SAAS,sBAAA,CAAuB,SAAyB,KAAA,EAAoC;AAClG,EAAA,OAAOA,qCAAA,CAAoB,OAAA,CAAQ,GAAA,EAAK,KAAA,EAAO,QAAQ,cAAc,CAAA;AACvE","file":"chunk-GJV7KTDX.cjs","sourcesContent":["// Restyle previews: for each art style, a short clip of real footage wiping\n// into that style, for a picker that restyles a video. Keyed by the `style`\n// catalog's option id. An entry exists only for an approved clip: a style\n// without one has no preview here.\n//\n// Each approved style keeps the URLs of its source shot and its generated clip\n// (no wipe) in a comment beside its entry, so the clip can be composed again if\n// the switch animation changes.\n//\n// Separate from LOOK_PREVIEW_SETS.style, whose stills every other art style\n// picker keeps showing. Like every render, a clip lives under picker-renders/\n// on the CDN, a key no user owns; a test holds this.\nimport { lookPreviewStillUrl } from \"./images.js\"\n\n/** One style's preview clip. */\nexport interface RestylePreview {\n readonly url: string\n /** The moment of the clip its still is cut from, for a clip whose usual moment frames it badly. Absent: the usual moment (`lookPreviewStillUrl`). */\n readonly stillAtSeconds?: number\n}\n\n/** Art style id → its restyle preview clip. */\nexport const RESTYLE_PREVIEWS: Readonly<Record<string, RestylePreview>> = {\n // Source shot: https://cdn.nodaro.ai/picker-renders/4054a0e1-af60-47f9-86bd-a78ab93f3800.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/9dc6b337-58b4-4a63-889f-70561a8f1f00.mp4\n anime: { url: \"https://cdn.nodaro.ai/picker-renders/7fbad6e4-023f-4282-ac3d-d186f2cbb37b.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4ffff922-e807-42cc-a2a0-c66c3a8d492c.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/fca5d96d-ee9c-430e-ba82-2795c0adb8d6.mp4\n claymation: { url: \"https://cdn.nodaro.ai/picker-renders/2916a2f7-114c-4c7e-9be0-5bf229d76133.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/41faaa51-5e77-4097-aa9b-bef6738328b7.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5a28da72-f3ee-49a8-b732-f73e79741b62.mp4\n \"comic-book\": { url: \"https://cdn.nodaro.ai/picker-renders/7a2cd17c-b02f-4ae4-9723-ef48d0eda52a.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/a0ca72d5-1d4e-4f57-be74-ba3ac46dd9bd.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/cf977f6c-e755-4b72-b959-e6b954d631c3.mp4\n cyberpunk: { url: \"https://cdn.nodaro.ai/picker-renders/4868595c-cc88-4f82-b2a4-f33bfafe8198.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/4a70c22d-04f0-4b5a-90d4-e9dd7ddb01c4.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/5ab33529-ef2a-42bc-a625-d6b1abfeef1c.mp4\n \"felt-puppet\": { url: \"https://cdn.nodaro.ai/picker-renders/3aa3c81b-ba19-4776-becc-e0c47c700699.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/b1e77bdc-7c58-4cd8-a2d6-fd49379fee9e.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/a9aeca2d-bcd6-477b-80d7-5e6454ee2c25.mp4\n \"oil-painting\": { url: \"https://cdn.nodaro.ai/picker-renders/73c98260-9444-45e7-bccb-040b5d33fb53.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/d9e12a4a-677e-4e36-8f44-8503f14dd6b8.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/d4dad451-802a-4795-9cc3-71ff3ed70c69.mp4\n \"pixar-3d\": { url: \"https://cdn.nodaro.ai/picker-renders/c5ea2111-3283-4f80-ab05-8ab4450946ce.mp4\" },\n // Source shot: https://cdn.nodaro.ai/picker-renders/71d9ab7a-7396-48ff-8bc3-80454b0edd07.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/b11ab600-ec62-4cb6-82b4-b0006374164b.mp4\n \"pop-art\": { url: \"https://cdn.nodaro.ai/picker-renders/0659dbe5-9dfe-45d8-9abd-6ccf88481dd8.mp4\", stillAtSeconds: 7 },\n // Source shot: https://cdn.nodaro.ai/picker-renders/789f4330-660b-42bd-8d11-6e638e8c7c88.mp4\n // Generated, no wipe: https://cdn.nodaro.ai/picker-renders/10471107-b26a-42e9-a3a5-068a42436d3c.mp4\n watercolor: { url: \"https://cdn.nodaro.ai/picker-renders/61a26588-d09a-4959-b677-ee8b32e3281a.mp4\" },\n}\n\n/** A preview clip's still, a frame the CDN cuts from it at the clip's own moment. */\nexport function restylePreviewStillUrl(preview: RestylePreview, width?: number): string | undefined {\n return lookPreviewStillUrl(preview.url, width, preview.stillAtSeconds)\n}\n"]}
@@ -11262,5 +11262,5 @@ exports.groupFactoryPresets = groupFactoryPresets;
11262
11262
  exports.hookPlateCaptionSegments = hookPlateCaptionSegments;
11263
11263
  exports.presetMinReferences = presetMinReferences;
11264
11264
  exports.resolveBrandInput = resolveBrandInput;
11265
- //# sourceMappingURL=chunk-RVBO63D5.cjs.map
11266
- //# sourceMappingURL=chunk-RVBO63D5.cjs.map
11265
+ //# sourceMappingURL=chunk-GRSKB3P7.cjs.map
11266
+ //# sourceMappingURL=chunk-GRSKB3P7.cjs.map