@nodaro/prompts 1.48.0 → 1.50.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 (100) hide show
  1. package/dist/{catalog-packs-BDsrv8St.d.cts → catalog-packs-DeMcSVCR.d.cts} +1 -1
  2. package/dist/{catalog-packs-CAK42voB.d.ts → catalog-packs-DjqvicAR.d.ts} +1 -1
  3. package/dist/{chunk-RRHU6MD5.js → chunk-34JK2G34.js} +4 -4
  4. package/dist/{chunk-RRHU6MD5.js.map → chunk-34JK2G34.js.map} +1 -1
  5. package/dist/{chunk-LD47QOKS.js → chunk-3XSB5YDY.js} +92 -53
  6. package/dist/chunk-3XSB5YDY.js.map +1 -0
  7. package/dist/{chunk-XZXUU3YH.js → chunk-5XPELUES.js} +10 -5
  8. package/dist/chunk-5XPELUES.js.map +1 -0
  9. package/dist/{chunk-XBRW75LM.js → chunk-BWDQEAX2.js} +4 -4
  10. package/dist/{chunk-XBRW75LM.js.map → chunk-BWDQEAX2.js.map} +1 -1
  11. package/dist/{chunk-JHRVNWBS.js → chunk-C5LP7DAQ.js} +6 -6
  12. package/dist/{chunk-JHRVNWBS.js.map → chunk-C5LP7DAQ.js.map} +1 -1
  13. package/dist/{chunk-BTV2I7EN.js → chunk-DB6A5I6V.js} +3 -3
  14. package/dist/{chunk-BTV2I7EN.js.map → chunk-DB6A5I6V.js.map} +1 -1
  15. package/dist/{chunk-GZVCBSFG.js → chunk-FEOVUTFC.js} +10 -7
  16. package/dist/{chunk-GZVCBSFG.js.map → chunk-FEOVUTFC.js.map} +1 -1
  17. package/dist/{chunk-UNR34GYU.cjs → chunk-FFPFBNXH.cjs} +10 -5
  18. package/dist/chunk-FFPFBNXH.cjs.map +1 -0
  19. package/dist/chunk-GZ5SL2BI.js +30 -0
  20. package/dist/chunk-GZ5SL2BI.js.map +1 -0
  21. package/dist/{chunk-IMQB7GIK.cjs → chunk-HR4TFBU2.cjs} +35 -35
  22. package/dist/{chunk-IMQB7GIK.cjs.map → chunk-HR4TFBU2.cjs.map} +1 -1
  23. package/dist/{chunk-Z755PH3K.cjs → chunk-IADAATZK.cjs} +49 -49
  24. package/dist/{chunk-Z755PH3K.cjs.map → chunk-IADAATZK.cjs.map} +1 -1
  25. package/dist/{chunk-CMEUYFBZ.js → chunk-IXBTD2LW.js} +4 -4
  26. package/dist/{chunk-CMEUYFBZ.js.map → chunk-IXBTD2LW.js.map} +1 -1
  27. package/dist/{chunk-JV2WSMAA.cjs → chunk-JGEBO6L6.cjs} +8 -8
  28. package/dist/{chunk-JV2WSMAA.cjs.map → chunk-JGEBO6L6.cjs.map} +1 -1
  29. package/dist/{chunk-KNAKOSKV.cjs → chunk-KYKCHOOS.cjs} +13 -13
  30. package/dist/{chunk-KNAKOSKV.cjs.map → chunk-KYKCHOOS.cjs.map} +1 -1
  31. package/dist/{chunk-XGNUOU4F.cjs → chunk-MJIKM4YZ.cjs} +130 -127
  32. package/dist/{chunk-XGNUOU4F.cjs.map → chunk-MJIKM4YZ.cjs.map} +1 -1
  33. package/dist/{chunk-MGK6SFTV.cjs → chunk-RVBO63D5.cjs} +4 -4
  34. package/dist/{chunk-MGK6SFTV.cjs.map → chunk-RVBO63D5.cjs.map} +1 -1
  35. package/dist/{chunk-PJFX3MFI.cjs → chunk-TYJCCODP.cjs} +18 -18
  36. package/dist/{chunk-PJFX3MFI.cjs.map → chunk-TYJCCODP.cjs.map} +1 -1
  37. package/dist/{chunk-YXJSPQC6.js → chunk-VJYKE6AY.js} +3 -3
  38. package/dist/{chunk-YXJSPQC6.js.map → chunk-VJYKE6AY.js.map} +1 -1
  39. package/dist/{chunk-MYVJVOPB.cjs → chunk-VYCTRGJ7.cjs} +39 -39
  40. package/dist/{chunk-MYVJVOPB.cjs.map → chunk-VYCTRGJ7.cjs.map} +1 -1
  41. package/dist/{chunk-54BYDWAM.cjs → chunk-WLN2MJ7F.cjs} +102 -55
  42. package/dist/chunk-WLN2MJ7F.cjs.map +1 -0
  43. package/dist/chunk-XBY53RF5.cjs +33 -0
  44. package/dist/chunk-XBY53RF5.cjs.map +1 -0
  45. package/dist/{chunk-36XMRVY4.js → chunk-ZZ6UOK2P.js} +4 -4
  46. package/dist/{chunk-36XMRVY4.js.map → chunk-ZZ6UOK2P.js.map} +1 -1
  47. package/dist/entries/assembly.cjs +29 -29
  48. package/dist/entries/assembly.js +6 -6
  49. package/dist/entries/catalog-packs.d.cts +4 -4
  50. package/dist/entries/catalog-packs.d.ts +4 -4
  51. package/dist/entries/person.d.cts +3 -3
  52. package/dist/entries/person.d.ts +3 -3
  53. package/dist/entries/picker-art.cjs +28 -20
  54. package/dist/entries/picker-art.d.cts +18 -2
  55. package/dist/entries/picker-art.d.ts +18 -2
  56. package/dist/entries/picker-art.js +2 -2
  57. package/dist/entries/picker-catalogs.cjs +57 -57
  58. package/dist/entries/picker-catalogs.d.cts +5 -3
  59. package/dist/entries/picker-catalogs.d.ts +5 -3
  60. package/dist/entries/picker-catalogs.js +5 -5
  61. package/dist/entries/pickers.cjs +407 -375
  62. package/dist/entries/pickers.d.cts +59 -3
  63. package/dist/entries/pickers.d.ts +59 -3
  64. package/dist/entries/pickers.js +3 -3
  65. package/dist/entries/presets.cjs +35 -35
  66. package/dist/entries/presets.js +1 -1
  67. package/dist/entries/prompt-builder.cjs +76 -76
  68. package/dist/entries/prompt-builder.js +5 -5
  69. package/dist/{images-DrbQB9Yh.d.cts → images-ChAOLY5V.d.cts} +5 -4
  70. package/dist/{images-DrbQB9Yh.d.ts → images-ChAOLY5V.d.ts} +5 -4
  71. package/dist/index.cjs +621 -581
  72. package/dist/index.d.cts +5 -5
  73. package/dist/index.d.ts +5 -5
  74. package/dist/index.js +11 -11
  75. package/dist/{picker-catalogs-BiRCs_5G.d.cts → picker-catalogs-DzLCu6qQ.d.cts} +10 -1
  76. package/dist/{picker-catalogs-CX8pHi8q.d.ts → picker-catalogs-SDSWrufc.d.ts} +10 -1
  77. package/package.json +2 -2
  78. package/src/__tests__/fixtures/root-exports.baseline.json +5 -0
  79. package/src/__tests__/picker-art-images.test.ts +39 -0
  80. package/src/__tests__/style-display-name.test.ts +153 -0
  81. package/src/__tests__/style-media.test.ts +141 -0
  82. package/src/__tests__/style-video-wording.test.ts +22 -7
  83. package/src/factory-presets/generate-image.ts +1 -1
  84. package/src/factory-presets/generate-video.ts +1 -1
  85. package/src/picker-analyzer-registry.ts +9 -2
  86. package/src/picker-art/images.ts +6 -5
  87. package/src/picker-art/index.ts +1 -0
  88. package/src/picker-art/look-preview-sets.ts +5 -0
  89. package/src/picker-art/restyle-previews.ts +47 -0
  90. package/src/picker-catalogs.ts +19 -0
  91. package/src/setting.ts +1 -1
  92. package/src/style.ts +140 -50
  93. package/dist/chunk-54BYDWAM.cjs.map +0 -1
  94. package/dist/chunk-HOMR5XFP.js +0 -3
  95. package/dist/chunk-HOMR5XFP.js.map +0 -1
  96. package/dist/chunk-LD47QOKS.js.map +0 -1
  97. package/dist/chunk-T4OJFIJK.cjs +0 -4
  98. package/dist/chunk-T4OJFIJK.cjs.map +0 -1
  99. package/dist/chunk-UNR34GYU.cjs.map +0 -1
  100. package/dist/chunk-XZXUU3YH.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { CHARACTER_MOTION_MAX_PICKS, getCharacterMotion } from './chunk-LD47QOKS.js';
1
+ import { CHARACTER_MOTION_MAX_PICKS, getCharacterMotion } from './chunk-3XSB5YDY.js';
2
2
  import { pickIds } from '@nodaro/shared/catalogs';
3
3
 
4
4
  var WARDROBE_DIMENSION_ORDER = [
@@ -196,5 +196,5 @@ function getCharacterMotionDiagnostics(value, timing, bindings = {}) {
196
196
  }
197
197
 
198
198
  export { WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, buildWardrobeHints, getCharacterMotionDiagnostics, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint };
199
- //# sourceMappingURL=chunk-BTV2I7EN.js.map
200
- //# sourceMappingURL=chunk-BTV2I7EN.js.map
199
+ //# sourceMappingURL=chunk-DB6A5I6V.js.map
200
+ //# sourceMappingURL=chunk-DB6A5I6V.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/wardrobe.ts","../src/character-motion-diagnostics.ts"],"names":["id","h"],"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,IAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC7B,QAAA,IAAI,QAAA,CAAS,GAAA,CAAIA,GAAE,CAAA,EAAG;AACtB,QAAA,MAAMC,EAAAA,GAAI,sBAAsBD,GAAE,CAAA;AAClC,QAAA,IAAIC,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,GAAS,0BAAA,MAAgC,UAAA,EAAY,SAAA,EAAW,WAAW,sEAAsE,CAAA;AAC/J,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,0BAA0B,CAAA;AAC3D,EAAA,KAAA,MAAW,EAAA,IAAM,KAAA,EAAO,IAAI,CAAC,mBAAmB,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,GAAQ,mBAAmB,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,EAAQ,kBAAA,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-BTV2I7EN.js","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","h"],"mappings":"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","file":"chunk-DB6A5I6V.js","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,6 +1,6 @@
1
- import { getAdultOnlyIds } from './chunk-CMEUYFBZ.js';
2
- import { parseUserDirectionRef, userRefKindOfDirectionKey } from './chunk-YXJSPQC6.js';
3
- import { MUSIC_GENRES, SETTING_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, EXPOSURE_SETTINGS, TEMPORALS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, CAMERA_MOTIONS, HELD_PROPS, MATERIALS, POSES, CHARACTER_MOTIONS, CHARACTER_FX, TRANSITIONS, LOOP_SUBJECTS, ACTION_FX, POST_PROCESS_EFFECTS, COMPOSITION_EFFECTS, RENDER_QUALITIES, BACKDROPS, PHOTO_GENRES, ERAS, AESTHETICS, PHOTOGRAPHERS, COLOR_LOOKS, MOODS, STYLES, ATMOSPHERES, SETTINGS, CAMERA_FORMATS, LENSES, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_FIELD_BY_CATEGORY, FRAMING_CATEGORY_ORDER, STYLINGS, STYLING_DIMENSION_LABELS, MUSIC_ERAS, MUSIC_VIBES, MUSIC_EMOTIONS, MUSIC_ENERGIES, SINGING_STYLES, VOCAL_PRESENCE, PRODUCTION_STYLES, INSTRUMENTS, VOICE_TIMBRES, VOICE_ACCENTS, VOICE_LANGUAGES, VOICE_GENDERS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_EMOTIONS, VOICE_PACES, getFramingCategoryLimit, getStylingDimensionLimit, PICKER_CATALOGS, getPickerCatalog } from './chunk-LD47QOKS.js';
1
+ import { getAdultOnlyIds } from './chunk-IXBTD2LW.js';
2
+ import { parseUserDirectionRef, userRefKindOfDirectionKey } from './chunk-VJYKE6AY.js';
3
+ import { MUSIC_GENRES, SETTING_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, EXPOSURE_SETTINGS, TEMPORALS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, CAMERA_MOTIONS, HELD_PROPS, MATERIALS, POSES, CHARACTER_MOTIONS, CHARACTER_FX, TRANSITIONS, LOOP_SUBJECTS, ACTION_FX, POST_PROCESS_EFFECTS, COMPOSITION_EFFECTS, RENDER_QUALITIES, BACKDROPS, PHOTO_GENRES, ERAS, AESTHETICS, PHOTOGRAPHERS, COLOR_LOOKS, MOODS, STYLES, ATMOSPHERES, SETTINGS, CAMERA_FORMATS, LENSES, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_FIELD_BY_CATEGORY, FRAMING_CATEGORY_ORDER, STYLINGS, STYLING_DIMENSION_LABELS, MUSIC_ERAS, MUSIC_VIBES, MUSIC_EMOTIONS, MUSIC_ENERGIES, SINGING_STYLES, VOCAL_PRESENCE, PRODUCTION_STYLES, INSTRUMENTS, VOICE_TIMBRES, VOICE_ACCENTS, VOICE_LANGUAGES, VOICE_GENDERS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_EMOTIONS, VOICE_PACES, getFramingCategoryLimit, getStylingDimensionLimit, PICKER_CATALOGS, getPickerCatalog } from './chunk-3XSB5YDY.js';
4
4
  import { PERSON_DIMENSION_ORDER, PERSON_FIELD_BY_DIMENSION, PEOPLE, PERSON_DIMENSION_LABELS, getPersonDimensionLimit, isMinorAge } from './chunk-TDZFXOTE.js';
5
5
  import { getRegisteredCatalogPacks, catalogPacksVersion } from './chunk-XAMHEW76.js';
6
6
  import { __export } from './chunk-PZ5AY32C.js';
@@ -14625,6 +14625,9 @@ function date4(params) {
14625
14625
 
14626
14626
  // ../../node_modules/zod/v4/classic/external.js
14627
14627
  config(en_default());
14628
+ function legendRow(e) {
14629
+ return { id: e.id, label: e.promptLabel ?? e.label, description: e.description };
14630
+ }
14628
14631
  var PERSON_EXCLUDED = /* @__PURE__ */ new Set(["age-custom"]);
14629
14632
  function tagDim(arr, dimension) {
14630
14633
  return arr.map((e) => ({ id: e.id, label: e.label, description: e.description, dimension }));
@@ -14850,7 +14853,7 @@ function buildPickerAnalyzerSpec(pickerType) {
14850
14853
  label: d.label,
14851
14854
  limit: 1,
14852
14855
  entryIds: d.entries.map((e) => e.id),
14853
- legend: d.entries.map((e) => ({ id: e.id, label: e.label, description: e.description }))
14856
+ legend: d.entries.map(legendRow)
14854
14857
  }
14855
14858
  ]
14856
14859
  };
@@ -14865,7 +14868,7 @@ function buildPickerAnalyzerSpec(pickerType) {
14865
14868
  label: d.labels[key] ?? key,
14866
14869
  limit: d.limitFn(key),
14867
14870
  entryIds: entries.map((e) => e.id),
14868
- legend: entries.map((e) => ({ id: e.id, label: e.label, description: e.description }))
14871
+ legend: entries.map(legendRow)
14869
14872
  };
14870
14873
  });
14871
14874
  return { pickerType, toolName: d.toolName, dimensions, cleanup: d.cleanup };
@@ -15204,5 +15207,5 @@ function getPickerWiring(nodeType) {
15204
15207
  }
15205
15208
 
15206
15209
  export { ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, GAPS_SCHEMA, MULTI_PICKER_WIRING, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_TYPES, SINGLE_PICKER_WIRING, __resetCatalogIdGuardForTests, applyPickerJson, buildMultiPickerAnalyzerSpec, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, catalogGuardActive, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getPickerAnalyzer, getPickerWiring, isAnalyzablePicker, pickerFanoutTargets };
15207
- //# sourceMappingURL=chunk-GZVCBSFG.js.map
15208
- //# sourceMappingURL=chunk-GZVCBSFG.js.map
15210
+ //# sourceMappingURL=chunk-FEOVUTFC.js.map
15211
+ //# sourceMappingURL=chunk-FEOVUTFC.js.map