@oxy.so/bloom 7.1.2 → 7.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/character-runtime/README.md +114 -19
- package/assets/character-runtime/authored-parts.mjs +754 -0
- package/assets/character-runtime/catalog-parts.mjs +362 -0
- package/assets/character-runtime/character-recipe.mjs +247 -0
- package/assets/character-runtime/clippo-geometry.mjs +679 -0
- package/assets/character-runtime/controller-mode.mjs +208 -0
- package/assets/character-runtime/cyclops-geometry.mjs +180 -0
- package/assets/character-runtime/legacy-engine.mjs +406 -54
- package/assets/character-runtime/legacy-geometry.mjs +242 -85
- package/assets/character-runtime/legacy-worker.mjs +82 -23
- package/assets/character-runtime/managed-avatar.mjs +12 -17
- package/assets/character-runtime/migrated-contours.mjs +2067 -0
- package/assets/character-runtime/migrated-faces.mjs +59 -0
- package/assets/character-runtime/pose-transition.mjs +523 -0
- package/assets/character-runtime/preparation-cache.mjs +60 -0
- package/assets/character-runtime/render-budget.mjs +5 -3
- package/assets/character-runtime/render-errors.mjs +180 -0
- package/assets/character-runtime/resolution.mjs +10 -0
- package/assets/character-runtime/runtime.mjs +744 -295
- package/assets/character-runtime/sha256.mjs +44 -0
- package/assets/character-runtime/shared-programs.mjs +534 -0
- package/assets/character-runtime/shared-surface.mjs +490 -0
- package/assets/character-runtime/shared-textures.mjs +420 -0
- package/assets/character-runtime/thumbnails/eyes/todd.png +0 -0
- package/docs/agent-avatar.mdx +45 -8
- package/docs/agent-creator.mdx +13 -3
- package/lib/commonjs/agent-avatar/AgentAvatar.js +1 -1
- package/lib/commonjs/agent-avatar/AgentAvatar.js.map +1 -1
- package/lib/commonjs/agent-avatar/CharacterAvatar.js +2 -1
- package/lib/commonjs/agent-avatar/CharacterAvatar.js.map +1 -1
- package/lib/commonjs/agent-avatar/character-colors.js +19 -0
- package/lib/commonjs/agent-avatar/character-colors.js.map +1 -0
- package/lib/commonjs/agent-avatar/character-shapes.js +106 -0
- package/lib/commonjs/agent-avatar/character-shapes.js.map +1 -0
- package/lib/commonjs/agent-avatar/config-character.js +4 -0
- package/lib/commonjs/agent-avatar/config-character.js.map +1 -1
- package/lib/commonjs/agent-avatar/legacy-recipe.js +19 -6
- package/lib/commonjs/agent-avatar/legacy-recipe.js.map +1 -1
- package/lib/commonjs/agent-creator/AgentCreatorBase.js +67 -107
- package/lib/commonjs/agent-creator/AgentCreatorBase.js.map +1 -1
- package/lib/commonjs/agent-creator/CharacterControls.js +23 -5
- package/lib/commonjs/agent-creator/CharacterControls.js.map +1 -1
- package/lib/commonjs/agent-creator/ClippoArtwork.js +63 -0
- package/lib/commonjs/agent-creator/ClippoArtwork.js.map +1 -0
- package/lib/commonjs/agent-creator/CyclopsArtwork.js +45 -0
- package/lib/commonjs/agent-creator/CyclopsArtwork.js.map +1 -0
- package/lib/commonjs/agent-creator/EmotionPicker.js +8 -1
- package/lib/commonjs/agent-creator/EmotionPicker.js.map +1 -1
- package/lib/commonjs/agent-creator/ShapeSilhouette.js +8 -1
- package/lib/commonjs/agent-creator/ShapeSilhouette.js.map +1 -1
- package/lib/commonjs/agent-creator/ToddArtwork.js +29 -0
- package/lib/commonjs/agent-creator/ToddArtwork.js.map +1 -0
- package/lib/commonjs/agent-creator/constants.js +16 -17
- package/lib/commonjs/agent-creator/constants.js.map +1 -1
- package/lib/commonjs/agent-creator/messages.js +1 -1
- package/lib/commonjs/agent-creator/messages.js.map +1 -1
- package/lib/commonjs/locale/translations/ar.js +1 -1
- package/lib/commonjs/locale/translations/ar.js.map +1 -1
- package/lib/commonjs/locale/translations/bn.js +1 -1
- package/lib/commonjs/locale/translations/bn.js.map +1 -1
- package/lib/commonjs/locale/translations/ca.js +1 -1
- package/lib/commonjs/locale/translations/ca.js.map +1 -1
- package/lib/commonjs/locale/translations/de.js +1 -1
- package/lib/commonjs/locale/translations/de.js.map +1 -1
- package/lib/commonjs/locale/translations/es.js +1 -1
- package/lib/commonjs/locale/translations/es.js.map +1 -1
- package/lib/commonjs/locale/translations/fr.js +1 -1
- package/lib/commonjs/locale/translations/fr.js.map +1 -1
- package/lib/commonjs/locale/translations/hi.js +1 -1
- package/lib/commonjs/locale/translations/hi.js.map +1 -1
- package/lib/commonjs/locale/translations/id.js +1 -1
- package/lib/commonjs/locale/translations/id.js.map +1 -1
- package/lib/commonjs/locale/translations/it.js +1 -1
- package/lib/commonjs/locale/translations/it.js.map +1 -1
- package/lib/commonjs/locale/translations/ja.js +1 -1
- package/lib/commonjs/locale/translations/ja.js.map +1 -1
- package/lib/commonjs/locale/translations/pt.js +1 -1
- package/lib/commonjs/locale/translations/pt.js.map +1 -1
- package/lib/commonjs/locale/translations/ru.js +1 -1
- package/lib/commonjs/locale/translations/ru.js.map +1 -1
- package/lib/commonjs/locale/translations/tr.js +1 -1
- package/lib/commonjs/locale/translations/tr.js.map +1 -1
- package/lib/commonjs/locale/translations/zh.js +1 -1
- package/lib/commonjs/locale/translations/zh.js.map +1 -1
- package/lib/module/agent-avatar/AgentAvatar.js +1 -1
- package/lib/module/agent-avatar/AgentAvatar.js.map +1 -1
- package/lib/module/agent-avatar/CharacterAvatar.js +2 -1
- package/lib/module/agent-avatar/CharacterAvatar.js.map +1 -1
- package/lib/module/agent-avatar/character-colors.js +15 -0
- package/lib/module/agent-avatar/character-colors.js.map +1 -0
- package/lib/module/agent-avatar/character-shapes.js +97 -0
- package/lib/module/agent-avatar/character-shapes.js.map +1 -0
- package/lib/module/agent-avatar/config-character.js +4 -0
- package/lib/module/agent-avatar/config-character.js.map +1 -1
- package/lib/module/agent-avatar/legacy-recipe.js +19 -6
- package/lib/module/agent-avatar/legacy-recipe.js.map +1 -1
- package/lib/module/agent-creator/AgentCreatorBase.js +69 -109
- package/lib/module/agent-creator/AgentCreatorBase.js.map +1 -1
- package/lib/module/agent-creator/CharacterControls.js +24 -6
- package/lib/module/agent-creator/CharacterControls.js.map +1 -1
- package/lib/module/agent-creator/ClippoArtwork.js +59 -0
- package/lib/module/agent-creator/ClippoArtwork.js.map +1 -0
- package/lib/module/agent-creator/CyclopsArtwork.js +41 -0
- package/lib/module/agent-creator/CyclopsArtwork.js.map +1 -0
- package/lib/module/agent-creator/EmotionPicker.js +8 -1
- package/lib/module/agent-creator/EmotionPicker.js.map +1 -1
- package/lib/module/agent-creator/ShapeSilhouette.js +8 -1
- package/lib/module/agent-creator/ShapeSilhouette.js.map +1 -1
- package/lib/module/agent-creator/ToddArtwork.js +25 -0
- package/lib/module/agent-creator/ToddArtwork.js.map +1 -0
- package/lib/module/agent-creator/constants.js +8 -16
- package/lib/module/agent-creator/constants.js.map +1 -1
- package/lib/module/agent-creator/messages.js +1 -1
- package/lib/module/agent-creator/messages.js.map +1 -1
- package/lib/module/locale/translations/ar.js +1 -1
- package/lib/module/locale/translations/ar.js.map +1 -1
- package/lib/module/locale/translations/bn.js +1 -1
- package/lib/module/locale/translations/bn.js.map +1 -1
- package/lib/module/locale/translations/ca.js +1 -1
- package/lib/module/locale/translations/ca.js.map +1 -1
- package/lib/module/locale/translations/de.js +1 -1
- package/lib/module/locale/translations/de.js.map +1 -1
- package/lib/module/locale/translations/es.js +1 -1
- package/lib/module/locale/translations/es.js.map +1 -1
- package/lib/module/locale/translations/fr.js +1 -1
- package/lib/module/locale/translations/fr.js.map +1 -1
- package/lib/module/locale/translations/hi.js +1 -1
- package/lib/module/locale/translations/hi.js.map +1 -1
- package/lib/module/locale/translations/id.js +1 -1
- package/lib/module/locale/translations/id.js.map +1 -1
- package/lib/module/locale/translations/it.js +1 -1
- package/lib/module/locale/translations/it.js.map +1 -1
- package/lib/module/locale/translations/ja.js +1 -1
- package/lib/module/locale/translations/ja.js.map +1 -1
- package/lib/module/locale/translations/pt.js +1 -1
- package/lib/module/locale/translations/pt.js.map +1 -1
- package/lib/module/locale/translations/ru.js +1 -1
- package/lib/module/locale/translations/ru.js.map +1 -1
- package/lib/module/locale/translations/tr.js +1 -1
- package/lib/module/locale/translations/tr.js.map +1 -1
- package/lib/module/locale/translations/zh.js +1 -1
- package/lib/module/locale/translations/zh.js.map +1 -1
- package/lib/typescript/commonjs/agent-avatar/CharacterAvatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-avatar/character-colors.d.ts +13 -0
- package/lib/typescript/commonjs/agent-avatar/character-colors.d.ts.map +1 -0
- package/lib/typescript/commonjs/agent-avatar/character-shapes.d.ts +19 -0
- package/lib/typescript/commonjs/agent-avatar/character-shapes.d.ts.map +1 -0
- package/lib/typescript/commonjs/agent-avatar/config-character.d.ts +4 -0
- package/lib/typescript/commonjs/agent-avatar/config-character.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-avatar/legacy-recipe.d.ts +2 -10
- package/lib/typescript/commonjs/agent-avatar/legacy-recipe.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-creator/AgentCreatorBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-creator/CharacterControls.d.ts +2 -1
- package/lib/typescript/commonjs/agent-creator/CharacterControls.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-creator/ClippoArtwork.d.ts +6 -0
- package/lib/typescript/commonjs/agent-creator/ClippoArtwork.d.ts.map +1 -0
- package/lib/typescript/commonjs/agent-creator/CyclopsArtwork.d.ts +5 -0
- package/lib/typescript/commonjs/agent-creator/CyclopsArtwork.d.ts.map +1 -0
- package/lib/typescript/commonjs/agent-creator/EmotionPicker.d.ts +1 -0
- package/lib/typescript/commonjs/agent-creator/EmotionPicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-creator/ShapeSilhouette.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-creator/ToddArtwork.d.ts +6 -0
- package/lib/typescript/commonjs/agent-creator/ToddArtwork.d.ts.map +1 -0
- package/lib/typescript/commonjs/agent-creator/constants.d.ts +7 -15
- package/lib/typescript/commonjs/agent-creator/constants.d.ts.map +1 -1
- package/lib/typescript/commonjs/agent-creator/messages.d.ts.map +1 -1
- package/lib/typescript/module/agent-avatar/CharacterAvatar.d.ts.map +1 -1
- package/lib/typescript/module/agent-avatar/character-colors.d.ts +13 -0
- package/lib/typescript/module/agent-avatar/character-colors.d.ts.map +1 -0
- package/lib/typescript/module/agent-avatar/character-shapes.d.ts +19 -0
- package/lib/typescript/module/agent-avatar/character-shapes.d.ts.map +1 -0
- package/lib/typescript/module/agent-avatar/config-character.d.ts +4 -0
- package/lib/typescript/module/agent-avatar/config-character.d.ts.map +1 -1
- package/lib/typescript/module/agent-avatar/legacy-recipe.d.ts +2 -10
- package/lib/typescript/module/agent-avatar/legacy-recipe.d.ts.map +1 -1
- package/lib/typescript/module/agent-creator/AgentCreatorBase.d.ts.map +1 -1
- package/lib/typescript/module/agent-creator/CharacterControls.d.ts +2 -1
- package/lib/typescript/module/agent-creator/CharacterControls.d.ts.map +1 -1
- package/lib/typescript/module/agent-creator/ClippoArtwork.d.ts +6 -0
- package/lib/typescript/module/agent-creator/ClippoArtwork.d.ts.map +1 -0
- package/lib/typescript/module/agent-creator/CyclopsArtwork.d.ts +5 -0
- package/lib/typescript/module/agent-creator/CyclopsArtwork.d.ts.map +1 -0
- package/lib/typescript/module/agent-creator/EmotionPicker.d.ts +1 -0
- package/lib/typescript/module/agent-creator/EmotionPicker.d.ts.map +1 -1
- package/lib/typescript/module/agent-creator/ShapeSilhouette.d.ts.map +1 -1
- package/lib/typescript/module/agent-creator/ToddArtwork.d.ts +6 -0
- package/lib/typescript/module/agent-creator/ToddArtwork.d.ts.map +1 -0
- package/lib/typescript/module/agent-creator/constants.d.ts +7 -15
- package/lib/typescript/module/agent-creator/constants.d.ts.map +1 -1
- package/lib/typescript/module/agent-creator/messages.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agent-avatar/AgentAvatar.tsx +1 -1
- package/src/agent-avatar/CharacterAvatar.tsx +4 -1
- package/src/agent-avatar/character-colors.ts +12 -0
- package/src/agent-avatar/character-shapes.ts +122 -0
- package/src/agent-avatar/config-character.ts +39 -6
- package/src/agent-avatar/legacy-recipe.ts +34 -6
- package/src/agent-creator/AgentCreatorBase.tsx +121 -152
- package/src/agent-creator/CharacterControls.tsx +39 -14
- package/src/agent-creator/ClippoArtwork.tsx +49 -0
- package/src/agent-creator/CyclopsArtwork.tsx +27 -0
- package/src/agent-creator/EmotionPicker.tsx +55 -16
- package/src/agent-creator/ShapeSilhouette.tsx +16 -1
- package/src/agent-creator/ToddArtwork.tsx +24 -0
- package/src/agent-creator/constants.ts +47 -14
- package/src/agent-creator/messages.ts +2 -1
- package/src/locale/translations/ar.ts +1 -1
- package/src/locale/translations/bn.ts +1 -1
- package/src/locale/translations/ca.ts +1 -1
- package/src/locale/translations/de.ts +1 -1
- package/src/locale/translations/es.ts +1 -1
- package/src/locale/translations/fr.ts +1 -1
- package/src/locale/translations/hi.ts +1 -1
- package/src/locale/translations/id.ts +1 -1
- package/src/locale/translations/it.ts +1 -1
- package/src/locale/translations/ja.ts +1 -1
- package/src/locale/translations/pt.ts +1 -1
- package/src/locale/translations/ru.ts +1 -1
- package/src/locale/translations/tr.ts +1 -1
- package/src/locale/translations/zh.ts +1 -1
- package/src/__tests__/support/adoption-matrix.ts +0 -683
- package/src/__tests__/support/card-surface.ts +0 -25
- package/src/__tests__/support/collision-fixture-barrel.ts +0 -20
- package/src/__tests__/support/commerce-harness.tsx +0 -97
- package/src/__tests__/support/composite.ts +0 -68
- package/src/__tests__/support/constructed-style-sheets.ts +0 -68
- package/src/__tests__/support/messages-in.ts +0 -10
- package/src/__tests__/support/press-host.ts +0 -30
- package/src/__tests__/support/rendered-style.ts +0 -99
- package/src/__tests__/support/unread-hook-fixture.ts +0 -33
- package/src/__tests__/support/worklet-capture-fixture.tsx +0 -28
- package/src/agent-avatar/__tests__/artwork-golden.json +0 -774
- package/src/agent-creator/__tests__/support/character-runtime-fixture.tsx +0 -26
- package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +0 -9346
- package/src/theme/__tests__/__fixtures__/tonal-glass-primary-failures.json +0 -69
- package/src/theme/__tests__/fixtures/color-engine-golden.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useContext","useEffect","useMemo","useRef","useState","AccessibilityInfo","AppState","Platform","useReducedMotion","useMessages","StyledView","Text","CharacterRuntimeContext","characterHtml","scriptJson","loadCharacterRuntime","characterWebView","legacyRecipe","AGENT_AVATAR_MESSAGES","jsx","_jsx","WebCharacter","runtimeUrl","value","onError","reportCapabilities","report","current","host","controller","latest","fail","element","document","stopped","started","canvas","createElement","setAttribute","Object","assign","style","width","height","display","touchAction","appendChild","start","module","instance","createAvatar","onCapabilities","info","dispose","update","observer","IntersectionObserver","entries","some","entry","isIntersecting","observe","disconnect","remove","ref","flex","NativeCharacter","WebView","initial","source","html","baseUrl","send","injectJavaScript","backgroundColor","scrollEnabled","javaScriptEnabled","originWhitelist","onMessage","event","nativeEvent","data","startsWith","JSON","parse","slice","CharacterAvatar","props","messages","locale","initialReduced","reduced","setReduced","active","setActive","currentState","failed","setFailed","config","paused","portrait","workingKey","reactionKey","entranceKey","workingCycles","interactive","size","motion","addEventListener","state","next","media","OS","window","matchMedia","undefined","change","matches","removeEventListener","character","legacy","preset","Renderer","className","accessible","accessibilityRole","accessibilityLabel","label","testID","children","numberOfLines","fontSize","unavailable"],"sourceRoot":"../../../src","sources":["agent-avatar/CharacterAvatar.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACxE,SAASC,iBAAiB,EAAEC,QAAQ,EAAEC,QAAQ,QAAmB,cAAc;AAC/E,SAASC,gBAAgB,QAAQ,yBAAyB;AAC1D,SAASC,WAAW,QAAQ,uBAAoB;AAChD,SAASC,UAAU,QAAQ,gCAA6B;AACxD,SAASC,IAAI,QAAQ,wBAAe;AACpC,SAAqCC,uBAAuB,QAAQ,cAAW;AAC/E,SAASC,aAAa,EAAEC,UAAU,QAAQ,qBAAkB;AAC5D,SAASC,oBAAoB,QAAQ,+BAA4B;AACjE,SACEC,gBAAgB,QAEX,wBAAqB;AAC5B,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,SAASC,qBAAqB,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAyBnD,SAASC,YAAYA,CAAC;EACpBC,UAAU;EACVC,KAAK;EACLC;AAKF,CAAC,EAAE;EACD,MAAM;IAAEC;EAAmB,CAAC,
|
|
1
|
+
{"version":3,"names":["useContext","useEffect","useMemo","useRef","useState","AccessibilityInfo","AppState","Platform","useReducedMotion","useMessages","StyledView","Text","CharacterRuntimeContext","characterHtml","scriptJson","loadCharacterRuntime","characterWebView","legacyRecipe","isMigratedCharacterShape","AGENT_AVATAR_MESSAGES","jsx","_jsx","WebCharacter","runtimeUrl","value","onError","reportCapabilities","report","current","host","controller","latest","fail","element","document","stopped","started","canvas","createElement","setAttribute","Object","assign","style","width","height","display","touchAction","appendChild","start","module","instance","createAvatar","onCapabilities","info","dispose","update","observer","IntersectionObserver","entries","some","entry","isIntersecting","observe","disconnect","remove","ref","flex","NativeCharacter","WebView","initial","source","html","baseUrl","send","injectJavaScript","backgroundColor","scrollEnabled","javaScriptEnabled","originWhitelist","onMessage","event","nativeEvent","data","startsWith","JSON","parse","slice","CharacterAvatar","props","messages","locale","initialReduced","reduced","setReduced","active","setActive","currentState","failed","setFailed","config","paused","portrait","workingKey","reactionKey","entranceKey","workingCycles","interactive","size","motion","addEventListener","state","next","media","OS","window","matchMedia","undefined","change","matches","removeEventListener","character","legacy","preset","selections","shape","Renderer","className","accessible","accessibilityRole","accessibilityLabel","label","testID","children","numberOfLines","fontSize","unavailable"],"sourceRoot":"../../../src","sources":["agent-avatar/CharacterAvatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** RGB swatches returned by the recovered engine's Color catalog. */
|
|
4
|
+
export const CHARACTER_COLORS = {
|
|
5
|
+
pink: '#fa70ab',
|
|
6
|
+
orchid: '#dd6adc',
|
|
7
|
+
violet: '#a25bff',
|
|
8
|
+
blue: '#4778ff',
|
|
9
|
+
cyan: '#00b1ff',
|
|
10
|
+
teal: '#04bb9f',
|
|
11
|
+
lime: '#b6d80b',
|
|
12
|
+
yellow: '#ffcc38',
|
|
13
|
+
coral: '#ff8066'
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=character-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CHARACTER_COLORS","pink","orchid","violet","blue","cyan","teal","lime","yellow","coral"],"sourceRoot":"../../../src","sources":["agent-avatar/character-colors.ts"],"mappings":";;AAAA;AACA,OAAO,MAAMA,gBAAgB,GAAG;EAC9BC,IAAI,EAAE,SAAS;EACfC,MAAM,EAAE,SAAS;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,SAAS;EACfC,MAAM,EAAE,SAAS;EACjBC,KAAK,EAAE;AACT,CAAU","ignoreList":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { avatarHex } from "./avatar-color.js";
|
|
4
|
+
export const NATIVE_CHARACTER_SHAPES = [['clippo', 'Clippo'], ['todd', 'Todd'], ['circle', 'Circle'], ['rounded_triangle', 'Rounded triangle'], ['capsule', 'Capsule'], ['rounded_head_two_ears', 'Rounded head with two ears'], ['six_lobed_flower', 'Six lobed flower'], ['heart', 'Heart'], ['four_lobed_butterfly', 'Four lobed butterfly'], ['circle_two_ears', 'Circle with two ears'], ['twelve_scalloped_rosette', 'Twelve scalloped rosette'], ['rounded_cube', 'Hexagon'], ['rounded_diamond', 'Rounded diamond']];
|
|
5
|
+
export const MIGRATED_CHARACTER_SHAPES = [['slender', 'Slender'], ['pocket', 'Pocket'], ['petal', 'Petal'], ['star', 'Star'], ['cloud', 'Cloud'], ['shield', 'Shield'], ['pebble', 'Pebble'], ['squircle', 'Squircle']];
|
|
6
|
+
export const CHARACTER_SHAPES = [...NATIVE_CHARACTER_SHAPES, ...MIGRATED_CHARACTER_SHAPES];
|
|
7
|
+
export function isMigratedCharacterShape(id) {
|
|
8
|
+
return MIGRATED_CHARACTER_SHAPES.some(([shape]) => shape === id);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** The saved paper/blob fields remain readable; canonical shape IDs own new edits. */
|
|
12
|
+
export function currentCharacterShape(config) {
|
|
13
|
+
if (config.character?.selections?.shape) return config.character.selections.shape;
|
|
14
|
+
const shape = config.family === 'fold' ? config.foldShape : config.shape;
|
|
15
|
+
const equivalent = {
|
|
16
|
+
triangle: 'rounded_triangle',
|
|
17
|
+
flower: 'six_lobed_flower',
|
|
18
|
+
diamond: 'rounded_diamond'
|
|
19
|
+
};
|
|
20
|
+
return equivalent[shape] ?? shape;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Geometry-only view of one of the eight migrated contours. */
|
|
24
|
+
export function characterShapeGeometry(config) {
|
|
25
|
+
const shape = config.character?.selections?.shape;
|
|
26
|
+
if (!isMigratedCharacterShape(shape)) return config;
|
|
27
|
+
return shape === 'pebble' || shape === 'squircle' ? {
|
|
28
|
+
...config,
|
|
29
|
+
family: 'blob',
|
|
30
|
+
shape
|
|
31
|
+
} : {
|
|
32
|
+
...config,
|
|
33
|
+
family: 'fold',
|
|
34
|
+
foldShape: shape
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Retain effective authored parts while preparing the next body. An old recipe
|
|
39
|
+
* is promoted once, with its actual paint and contour rather than Felipe defaults.
|
|
40
|
+
*/
|
|
41
|
+
export function materializeCharacter(config, selected = {}) {
|
|
42
|
+
const saved = config.character;
|
|
43
|
+
if (!saved || saved.preset === 'bloom') return {
|
|
44
|
+
...saved,
|
|
45
|
+
preset: 'legacy',
|
|
46
|
+
...(saved?.bodyColor ? {
|
|
47
|
+
bodyColor: saved.bodyColor
|
|
48
|
+
} : !saved?.selections?.color ? {
|
|
49
|
+
bodyColor: avatarHex(config)
|
|
50
|
+
} : {}),
|
|
51
|
+
selections: {
|
|
52
|
+
shape: currentCharacterShape(config),
|
|
53
|
+
eyes: 'oval',
|
|
54
|
+
eyewear: 'none',
|
|
55
|
+
accessory: 'none',
|
|
56
|
+
...saved?.selections
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const defaults = {};
|
|
60
|
+
for (const part of ['eyes', 'eyewear', 'accessory']) if (selected[part]) defaults[part] = selected[part];
|
|
61
|
+
// These virtual parts are absent from the backing native catalog.
|
|
62
|
+
if (!defaults.eyes && saved.preset === 'clippo') defaults.eyes = 'clippo';
|
|
63
|
+
if (!defaults.eyes && saved.preset === 'lime_frog') defaults.eyes = 'todd';
|
|
64
|
+
if (!defaults.accessory && saved.preset === 'blue_beret') defaults.accessory = 'felipe_beret';
|
|
65
|
+
return {
|
|
66
|
+
...saved,
|
|
67
|
+
selections: {
|
|
68
|
+
...defaults,
|
|
69
|
+
...saved.selections
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** All 21 bodies change the same character recipe. Named paint and explicit RGB
|
|
75
|
+
* keep their precedence; a body never supplies a replacement color or face.
|
|
76
|
+
*/
|
|
77
|
+
export function createConfigForShape(config, shape, selected = {}) {
|
|
78
|
+
if (!CHARACTER_SHAPES.some(([id]) => id === shape)) throw new Error('Unknown character shape.');
|
|
79
|
+
const character = materializeCharacter(config, selected);
|
|
80
|
+
if (!character.bodyColor && !character.selections?.color) {
|
|
81
|
+
if (character.preset === 'clippo') character.bodyColor = '#999b9d';else if (selected.color) character.selections = {
|
|
82
|
+
...character.selections,
|
|
83
|
+
color: selected.color
|
|
84
|
+
};else if (selected.bodyColor) character.bodyColor = selected.bodyColor;
|
|
85
|
+
}
|
|
86
|
+
return characterShapeGeometry({
|
|
87
|
+
...config,
|
|
88
|
+
character: {
|
|
89
|
+
...character,
|
|
90
|
+
selections: {
|
|
91
|
+
...character.selections,
|
|
92
|
+
shape
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=character-shapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["avatarHex","NATIVE_CHARACTER_SHAPES","MIGRATED_CHARACTER_SHAPES","CHARACTER_SHAPES","isMigratedCharacterShape","id","some","shape","currentCharacterShape","config","character","selections","family","foldShape","equivalent","triangle","flower","diamond","characterShapeGeometry","materializeCharacter","selected","saved","preset","bodyColor","color","eyes","eyewear","accessory","defaults","part","createConfigForShape","Error"],"sourceRoot":"../../../src","sources":["agent-avatar/character-shapes.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,10 @@ export function parseCharacterConfig(value) {
|
|
|
13
13
|
const result = {
|
|
14
14
|
preset: candidate.preset
|
|
15
15
|
};
|
|
16
|
+
if (candidate.eyeSpacing !== undefined) {
|
|
17
|
+
if (typeof candidate.eyeSpacing !== 'number' || !Number.isFinite(candidate.eyeSpacing) || candidate.eyeSpacing < 0.5 || candidate.eyeSpacing > 1.5) throw new Error('Invalid character eye spacing.');
|
|
18
|
+
result.eyeSpacing = candidate.eyeSpacing;
|
|
19
|
+
}
|
|
16
20
|
if (candidate.bodyColor !== undefined) {
|
|
17
21
|
if (typeof candidate.bodyColor !== 'string' || candidate.bodyColor.length !== 7 || !/^#[0-9a-f]{6}$/i.test(candidate.bodyColor)) throw new Error('Invalid character body color.');
|
|
18
22
|
result.bodyColor = candidate.bodyColor.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["categories","validId","value","length","parseCharacterConfig","Array","isArray","Error","candidate","preset","result","
|
|
1
|
+
{"version":3,"names":["categories","validId","value","length","parseCharacterConfig","Array","isArray","Error","candidate","preset","result","eyeSpacing","undefined","Number","isFinite","bodyColor","test","toLowerCase","selections","category","id","Object","entries","includes"],"sourceRoot":"../../../src","sources":["agent-avatar/config-character.ts"],"mappings":";;AAAA;;AAeA,MAAMA,UAA8C,GAAG,CACrD,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,EACT,WAAW,CACZ;AACD,MAAMC,OAAO,GAAIC,KAAc,IAC7B,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACC,MAAM,GAAG,CAAC,IAAID,KAAK,CAACC,MAAM,IAAI,EAAE;;AAErE;AACA,OAAO,SAASC,oBAAoBA,CAACF,KAAc,EAAyB;EAC1E,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAC7D,MAAM,IAAIK,KAAK,CAAC,kCAAkC,CAAC;EACrD,MAAMC,SAAS,GAAGN,KAAgC;EAClD,IAAI,CAACD,OAAO,CAACO,SAAS,CAACC,MAAM,CAAC,EAAE,MAAM,IAAIF,KAAK,CAAC,2BAA2B,CAAC;EAC5E,MAAMG,MAA6B,GAAG;IAAED,MAAM,EAAED,SAAS,CAACC;EAAO,CAAC;EAClE,IAAID,SAAS,CAACG,UAAU,KAAKC,SAAS,EAAE;IACtC,IACE,OAAOJ,SAAS,CAACG,UAAU,KAAK,QAAQ,IACxC,CAACE,MAAM,CAACC,QAAQ,CAACN,SAAS,CAACG,UAAU,CAAC,IACtCH,SAAS,CAACG,UAAU,GAAG,GAAG,IAC1BH,SAAS,CAACG,UAAU,GAAG,GAAG,EAE1B,MAAM,IAAIJ,KAAK,CAAC,gCAAgC,CAAC;IACnDG,MAAM,CAACC,UAAU,GAAGH,SAAS,CAACG,UAAU;EAC1C;EACA,IAAIH,SAAS,CAACO,SAAS,KAAKH,SAAS,EAAE;IACrC,IACE,OAAOJ,SAAS,CAACO,SAAS,KAAK,QAAQ,IACvCP,SAAS,CAACO,SAAS,CAACZ,MAAM,KAAK,CAAC,IAChC,CAAC,iBAAiB,CAACa,IAAI,CAACR,SAAS,CAACO,SAAS,CAAC,EAE5C,MAAM,IAAIR,KAAK,CAAC,+BAA+B,CAAC;IAClDG,MAAM,CAACK,SAAS,GAAGP,SAAS,CAACO,SAAS,CAACE,WAAW,CAAC,CAAC;EACtD;EACA,IAAIT,SAAS,CAACU,UAAU,KAAKN,SAAS,EAAE;IACtC,IACE,CAACJ,SAAS,CAACU,UAAU,IACrB,OAAOV,SAAS,CAACU,UAAU,KAAK,QAAQ,IACxCb,KAAK,CAACC,OAAO,CAACE,SAAS,CAACU,UAAU,CAAC,EAEnC,MAAM,IAAIX,KAAK,CAAC,+BAA+B,CAAC;IAClD,MAAMW,UAA4D,GAAG,CAAC,CAAC;IACvE,KAAK,MAAM,CAACC,QAAQ,EAAEC,EAAE,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACd,SAAS,CAACU,UAAU,CAAC,EAAE;MACjE,IACE,CAAClB,UAAU,CAACuB,QAAQ,CAACJ,QAAmC,CAAC,IACzD,CAAClB,OAAO,CAACmB,EAAE,CAAC,EAEZ,MAAM,IAAIb,KAAK,CAAC,8BAA8B,CAAC;MACjDW,UAAU,CAACC,QAAQ,CAA4B,GAAGC,EAAE;IACtD;IACAV,MAAM,CAACQ,UAAU,GAAGA,UAAU;EAChC;EACA,IAAI,OAAO,IAAIV,SAAS,EACtB,MAAM,IAAID,KAAK,CAAC,0CAA0C,CAAC;EAC7D,OAAOG,MAAM;AACf","ignoreList":[]}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { CHARACTER_COLORS } from "./character-colors.js";
|
|
4
|
+
import { characterShapeGeometry, isMigratedCharacterShape } from "./character-shapes.js";
|
|
3
5
|
import { avatarHex } from "./avatar-color.js";
|
|
4
6
|
import { legacyContours } from "./legacy-contours.js";
|
|
5
7
|
/** Saved unsupported artwork stays readable without pretending it was migrated. */
|
|
6
8
|
export function legacyRecipeUnsupported(config) {
|
|
9
|
+
if (isMigratedCharacterShape(config.character?.selections?.shape)) return false;
|
|
7
10
|
return config.family === 'alien' || config.family === 'mascot' || !config.face;
|
|
8
11
|
}
|
|
9
12
|
|
|
@@ -50,6 +53,7 @@ export function radialContour(polygons, samples = 256) {
|
|
|
50
53
|
|
|
51
54
|
/** Shared capability identity for the editor and the legacy engine adapter. */
|
|
52
55
|
export function legacyCharacterRecipe(config) {
|
|
56
|
+
if (config.character && config.character.preset !== 'bloom') return config.character;
|
|
53
57
|
const customization = config.character?.preset === 'bloom' ? config.character : undefined;
|
|
54
58
|
return {
|
|
55
59
|
preset: 'legacy',
|
|
@@ -63,7 +67,10 @@ export function legacyCharacterRecipe(config) {
|
|
|
63
67
|
accessory: customization.selections.accessory
|
|
64
68
|
} : {})
|
|
65
69
|
},
|
|
66
|
-
bodyColor: customization?.bodyColor ?? avatarHex(config)
|
|
70
|
+
bodyColor: customization?.bodyColor ?? CHARACTER_COLORS[customization?.selections?.color] ?? avatarHex(config),
|
|
71
|
+
...(customization?.eyeSpacing !== undefined ? {
|
|
72
|
+
eyeSpacing: customization.eyeSpacing
|
|
73
|
+
} : {})
|
|
67
74
|
};
|
|
68
75
|
}
|
|
69
76
|
|
|
@@ -73,19 +80,25 @@ export function legacyCharacterRecipe(config) {
|
|
|
73
80
|
*/
|
|
74
81
|
export function legacyRecipe(config, samples = 256) {
|
|
75
82
|
if (legacyRecipeUnsupported(config)) throw new Error('Unsupported legacy 3D recipe');
|
|
76
|
-
const
|
|
83
|
+
const geometry = characterShapeGeometry(config);
|
|
84
|
+
const canonical = config.character && config.character.preset !== 'bloom';
|
|
85
|
+
const selectedShape = canonical ? config.character?.selections?.shape : undefined;
|
|
86
|
+
const shape = isMigratedCharacterShape(selectedShape) ? undefined : selectedShape ?? legacyNativeShape(geometry);
|
|
77
87
|
const recipe = legacyCharacterRecipe(config);
|
|
78
88
|
const {
|
|
79
89
|
eyewear,
|
|
80
90
|
accessory
|
|
81
|
-
} = recipe.selections;
|
|
91
|
+
} = recipe.selections ?? {};
|
|
82
92
|
return {
|
|
83
93
|
...(shape ? {
|
|
84
94
|
shape
|
|
85
95
|
} : {
|
|
86
|
-
points: radialContour(legacyContours(
|
|
96
|
+
points: radialContour(legacyContours(geometry), samples)
|
|
87
97
|
}),
|
|
88
|
-
eyes: recipe.selections
|
|
98
|
+
eyes: recipe.selections?.eyes ?? 'oval',
|
|
99
|
+
...(recipe.eyeSpacing !== undefined ? {
|
|
100
|
+
eyeSpacing: recipe.eyeSpacing
|
|
101
|
+
} : {}),
|
|
89
102
|
...(eyewear || accessory ? {
|
|
90
103
|
selections: {
|
|
91
104
|
...(eyewear ? {
|
|
@@ -97,7 +110,7 @@ export function legacyRecipe(config, samples = 256) {
|
|
|
97
110
|
}
|
|
98
111
|
} : {}),
|
|
99
112
|
patch: {
|
|
100
|
-
bodyColor: recipe.bodyColor
|
|
113
|
+
bodyColor: recipe.bodyColor ?? avatarHex(config)
|
|
101
114
|
}
|
|
102
115
|
};
|
|
103
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["avatarHex","legacyContours","legacyRecipeUnsupported","config","family","face","legacyNativeShape","shared","circle","triangle","flower","diamond","heart","foldShape","
|
|
1
|
+
{"version":3,"names":["CHARACTER_COLORS","characterShapeGeometry","isMigratedCharacterShape","avatarHex","legacyContours","legacyRecipeUnsupported","config","character","selections","shape","family","face","legacyNativeShape","shared","circle","triangle","flower","diamond","heart","foldShape","undefined","radialContour","polygons","samples","Number","isInteger","Error","Array","from","length","_","i","angle","Math","PI","dx","cos","dy","sin","radius","polygon","j","ax","ay","bx","by","ex","ey","denominator","abs","distance","segment","isFinite","legacyCharacterRecipe","preset","customization","eyes","eyewear","accessory","bodyColor","color","eyeSpacing","legacyRecipe","geometry","canonical","selectedShape","recipe","points","patch"],"sourceRoot":"../../../src","sources":["agent-avatar/legacy-recipe.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useContext, useMemo, useState } from 'react';
|
|
3
|
+
import { useContext, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Platform } from 'react-native';
|
|
5
5
|
import { AgentAvatar } from "../agent-avatar/index.js";
|
|
6
|
+
import { CHARACTER_SHAPES, NATIVE_CHARACTER_SHAPES, createConfigForShape, currentCharacterShape, materializeCharacter } from "../agent-avatar/character-shapes.js";
|
|
6
7
|
import { CharacterRuntimeContext, CharacterCapabilitiesContext } from "../agent-avatar/context.js";
|
|
7
|
-
import { legacyCharacterRecipe
|
|
8
|
+
import { legacyCharacterRecipe } from "../agent-avatar/legacy-recipe.js";
|
|
8
9
|
import { Button } from '../button/Button';
|
|
9
10
|
import { CloseButton } from "../button/CloseButton.js";
|
|
10
11
|
import { useDirectionProps } from "../hooks/use-is-rtl.js";
|
|
@@ -56,38 +57,49 @@ export function AgentCreatorBase(props) {
|
|
|
56
57
|
runtimeUrl
|
|
57
58
|
} = runtime;
|
|
58
59
|
const beta = Boolean(c.character && c.character.preset !== 'bloom');
|
|
59
|
-
const nativeShape = legacyNativeShape(c);
|
|
60
60
|
const key = JSON.stringify(beta ? c.character : legacyCharacterRecipe(c));
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
const currentCapabilities = catalog.capabilitiesByKey?.get(key) ?? (catalog.capabilities?.key === key ? catalog.capabilities : undefined);
|
|
62
|
+
const retained = useRef({
|
|
63
|
+
owner: '',
|
|
64
|
+
selected: {}
|
|
65
|
+
});
|
|
66
|
+
const owner = JSON.stringify([agent.id, c.character?.preset ?? 'bloom']);
|
|
67
|
+
if (retained.current.owner !== owner) retained.current = {
|
|
68
|
+
owner,
|
|
69
|
+
selected: {}
|
|
70
|
+
};
|
|
71
|
+
if (currentCapabilities) retained.current.selected = currentCapabilities.selected;
|
|
72
|
+
const capabilities = currentCapabilities ?? {
|
|
73
|
+
selected: retained.current.selected,
|
|
74
|
+
available: {}
|
|
75
|
+
};
|
|
76
|
+
const betaColor = c.character?.selections?.color ?? capabilities?.selected.color;
|
|
77
|
+
const betaBodyColor = c.character?.bodyColor ?? (c.character?.preset === 'clippo' && !c.character.selections?.color ? '#999b9d' : undefined) ?? (!betaColor ? capabilities?.selected.bodyColor : undefined);
|
|
78
|
+
const customColorValue = beta ? betaBodyColor ?? (c.character?.selections?.color ? CHARACTER_COLORS[c.character.selections.color] : undefined) ?? capabilities?.selected.bodyColor ?? CHARACTER_COLORS[betaColor] ?? avatarHex(c) : c.character?.bodyColor ?? CHARACTER_COLORS[c.character?.selections?.color] ?? avatarHex(c);
|
|
79
|
+
const selectedEyes = c.character?.selections?.eyes ?? capabilities?.selected.eyes ?? (c.character?.preset === 'clippo' ? 'clippo' : c.character?.preset === 'lime_frog' ? 'todd' : 'oval');
|
|
80
|
+
const selectedEyewear = c.character?.selections?.eyewear ?? capabilities?.selected.eyewear;
|
|
81
|
+
const selectedAccessory = c.character?.selections?.accessory ?? capabilities?.selected.accessory;
|
|
82
|
+
const selectedParts = {
|
|
83
|
+
...(c.character?.selections?.eyes || capabilities.selected.eyes || c.character?.preset === 'clippo' || c.character?.preset === 'lime_frog' ? {
|
|
84
|
+
eyes: selectedEyes
|
|
85
|
+
} : {}),
|
|
86
|
+
...(selectedEyewear ? {
|
|
87
|
+
eyewear: selectedEyewear
|
|
88
|
+
} : {}),
|
|
89
|
+
...(selectedAccessory ? {
|
|
90
|
+
accessory: selectedAccessory
|
|
91
|
+
} : {})
|
|
92
|
+
};
|
|
65
93
|
const characterConfig = (category, id) => {
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
preset: 'bloom',
|
|
71
|
-
selections: {
|
|
72
|
-
...c.character?.selections,
|
|
73
|
-
[category]: id
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
const character = beta ? c.character : {
|
|
78
|
-
preset: 'blue_beret',
|
|
79
|
-
bodyColor: customColorValue,
|
|
80
|
-
selections: {
|
|
81
|
-
eyewear: c.character?.selections?.eyewear ?? capabilities?.selected.eyewear ?? 'none',
|
|
82
|
-
accessory: c.character?.selections?.accessory ?? capabilities?.selected.accessory ?? 'none',
|
|
83
|
-
eyes: selectedEyes
|
|
84
|
-
}
|
|
85
|
-
};
|
|
94
|
+
if (category === 'shape') return createConfigForShape(c, id, capabilities.selected);
|
|
95
|
+
const character = materializeCharacter(c, capabilities.selected);
|
|
96
|
+
// Choosing a body retains the edited face and the preset's effective parts.
|
|
97
|
+
// Presets supply defaults; their catalog restrictions do not own edits.
|
|
86
98
|
const selections = {
|
|
99
|
+
...selectedParts,
|
|
87
100
|
...character.selections,
|
|
88
101
|
[category]: id
|
|
89
102
|
};
|
|
90
|
-
if (category === 'shape') delete selections.eyes;
|
|
91
103
|
const next = {
|
|
92
104
|
...character,
|
|
93
105
|
selections
|
|
@@ -104,77 +116,26 @@ export function AgentCreatorBase(props) {
|
|
|
104
116
|
});
|
|
105
117
|
const thumbnailBase = runtimeUrl ? runtimeUrl.slice(0, runtimeUrl.lastIndexOf('/') + 1) : '';
|
|
106
118
|
const eyeBackground = customColorValue;
|
|
107
|
-
const
|
|
108
|
-
family: 'fold',
|
|
109
|
-
shape,
|
|
110
|
-
title: messages.shapes[shape]
|
|
111
|
-
})), ...[['pebble', 'Pebble'], ['squircle', 'Squircle']].map(([shape, title]) => ({
|
|
112
|
-
family: 'blob',
|
|
113
|
-
shape,
|
|
114
|
-
title: messages.characterOption('shape', shape, title)
|
|
115
|
-
}))];
|
|
116
|
-
const migratedConfig = (family, shape) => {
|
|
117
|
-
const {
|
|
118
|
-
character: _character,
|
|
119
|
-
...existing
|
|
120
|
-
} = c;
|
|
121
|
-
const color = hexAppearance(customColorValue);
|
|
122
|
-
return {
|
|
123
|
-
...existing,
|
|
124
|
-
...color,
|
|
125
|
-
lightEyes: beta ? false : c.lightEyes,
|
|
126
|
-
family,
|
|
127
|
-
...(family === 'fold' ? {
|
|
128
|
-
foldShape: shape
|
|
129
|
-
} : {
|
|
130
|
-
shape: shape
|
|
131
|
-
}),
|
|
132
|
-
...(runtimeUrl ? {
|
|
133
|
-
character: {
|
|
134
|
-
preset: 'bloom',
|
|
135
|
-
selections: {
|
|
136
|
-
eyes: selectedEyes,
|
|
137
|
-
...(capabilities?.selected.eyewear ?? c.character?.selections?.eyewear ? {
|
|
138
|
-
eyewear: capabilities?.selected.eyewear ?? c.character?.selections?.eyewear
|
|
139
|
-
} : {}),
|
|
140
|
-
...(capabilities?.selected.accessory ?? c.character?.selections?.accessory ? {
|
|
141
|
-
accessory: capabilities?.selected.accessory ?? c.character?.selections?.accessory
|
|
142
|
-
} : {})
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
} : {})
|
|
146
|
-
};
|
|
147
|
-
};
|
|
148
|
-
const shapeChoices = runtimeUrl ? [...CHARACTER_OPTIONS.shape.map(([id, title]) => ({
|
|
119
|
+
const shapeChoices = runtimeUrl ? CHARACTER_SHAPES.map(([id, title]) => ({
|
|
149
120
|
id,
|
|
150
|
-
label: messages.characterOption('shape', id, title),
|
|
151
|
-
config:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
id: `legacy:${family}:${shape}`,
|
|
159
|
-
label: title,
|
|
160
|
-
config: migratedConfig(family, shape)
|
|
161
|
-
}))] : undefined;
|
|
162
|
-
const shapeValue = beta ? capabilities?.selected.shape ?? c.character?.selections?.shape : nativeShape ?? `legacy:${c.family}:${c.family === 'fold' ? c.foldShape : c.shape}`;
|
|
163
|
-
const selectShape = id => {
|
|
164
|
-
if (id.startsWith('legacy:')) {
|
|
165
|
-
const [, family, shape] = id.split(':');
|
|
166
|
-
onChange({
|
|
167
|
-
...agent,
|
|
168
|
-
avatar: migratedConfig(family, shape)
|
|
169
|
-
});
|
|
170
|
-
} else selectCharacter('shape', id);
|
|
171
|
-
};
|
|
121
|
+
label: id in messages.shapes ? messages.shapes[id] : messages.characterOption('shape', id, title),
|
|
122
|
+
config: createConfigForShape(c, id, capabilities.selected),
|
|
123
|
+
...(NATIVE_CHARACTER_SHAPES.some(([shape]) => shape === id) && id !== 'clippo' && id !== 'todd' ? {
|
|
124
|
+
thumbnail: `${thumbnailBase}thumbnails/shapes/${id}.png`
|
|
125
|
+
} : {})
|
|
126
|
+
})) : undefined;
|
|
127
|
+
const shapeValue = c.character?.selections?.shape ?? (beta ? capabilities.selected.shape ?? (c.character?.preset === 'clippo' ? 'clippo' : undefined) : currentCharacterShape(c));
|
|
128
|
+
const selectShape = id => selectCharacter('shape', id);
|
|
172
129
|
const eyeChoices = runtimeUrl ? CHARACTER_OPTIONS.eyes.map(([id, title]) => ({
|
|
173
130
|
id,
|
|
174
131
|
label: messages.characterOption('eyes', id, title),
|
|
175
132
|
config: characterConfig('eyes', id),
|
|
176
|
-
|
|
177
|
-
|
|
133
|
+
...(id === 'clippo' || id === 'cyclops' ? {
|
|
134
|
+
artwork: id
|
|
135
|
+
} : {
|
|
136
|
+
thumbnail: `${thumbnailBase}thumbnails/eyes/${id}.png`
|
|
137
|
+
}),
|
|
138
|
+
disabled: false
|
|
178
139
|
})) : undefined;
|
|
179
140
|
const appearance = patch => {
|
|
180
141
|
const {
|
|
@@ -321,10 +282,9 @@ export function AgentCreatorBase(props) {
|
|
|
321
282
|
children: messages.working
|
|
322
283
|
})]
|
|
323
284
|
}), /*#__PURE__*/_jsx(CharacterControls, {
|
|
324
|
-
character: c.character
|
|
325
|
-
preset: 'bloom'
|
|
326
|
-
},
|
|
285
|
+
character: runtimeUrl ? beta ? c.character : materializeCharacter(c, capabilities.selected) : c.character,
|
|
327
286
|
capabilitiesKey: key,
|
|
287
|
+
selected: capabilities.selected,
|
|
328
288
|
onChange: character => {
|
|
329
289
|
if (character) onChange({
|
|
330
290
|
...agent,
|
|
@@ -345,7 +305,7 @@ export function AgentCreatorBase(props) {
|
|
|
345
305
|
borderColor: colors.border,
|
|
346
306
|
boxShadow: '0 1px 2px rgba(0,0,0,.05)'
|
|
347
307
|
},
|
|
348
|
-
children: [!
|
|
308
|
+
children: [!runtimeUrl && AVATAR_COLORS.map(([hue, saturation, name, center, edge]) => {
|
|
349
309
|
const active = c.hue === hue && c.saturation === saturation && c.lightness === undefined;
|
|
350
310
|
return /*#__PURE__*/_jsx(StyledPressable, {
|
|
351
311
|
accessibilityRole: "button",
|
|
@@ -367,10 +327,10 @@ export function AgentCreatorBase(props) {
|
|
|
367
327
|
active: active
|
|
368
328
|
})
|
|
369
329
|
}, name);
|
|
370
|
-
}),
|
|
371
|
-
const active = !
|
|
330
|
+
}), runtimeUrl && CHARACTER_OPTIONS.color.map(([id, title]) => {
|
|
331
|
+
const active = !betaBodyColor && betaColor === id;
|
|
372
332
|
const hex = CHARACTER_COLORS[id];
|
|
373
|
-
const disabled =
|
|
333
|
+
const disabled = false;
|
|
374
334
|
return /*#__PURE__*/_jsx(StyledPressable, {
|
|
375
335
|
accessibilityRole: "button",
|
|
376
336
|
accessibilityLabel: messages.avatarColorLabel(messages.characterOption('color', id, title)),
|
|
@@ -394,16 +354,16 @@ export function AgentCreatorBase(props) {
|
|
|
394
354
|
asChild: true,
|
|
395
355
|
label: messages.customColor,
|
|
396
356
|
children: /*#__PURE__*/_jsx(StyledPressable, {
|
|
397
|
-
"aria-pressed":
|
|
357
|
+
"aria-pressed": runtimeUrl ? Boolean(betaBodyColor) : undefined,
|
|
398
358
|
accessibilityState: {
|
|
399
|
-
selected:
|
|
359
|
+
selected: Boolean(runtimeUrl) && Boolean(betaBodyColor)
|
|
400
360
|
},
|
|
401
361
|
className: "relative size-[26px] shrink-0 overflow-hidden rounded-full",
|
|
402
362
|
children: /*#__PURE__*/_jsx(GlossArt, {
|
|
403
|
-
rainbow: !
|
|
404
|
-
center:
|
|
405
|
-
edge:
|
|
406
|
-
active:
|
|
363
|
+
rainbow: !runtimeUrl || !betaBodyColor,
|
|
364
|
+
center: runtimeUrl ? betaBodyColor : undefined,
|
|
365
|
+
edge: runtimeUrl ? betaBodyColor : undefined,
|
|
366
|
+
active: Boolean(runtimeUrl) && Boolean(betaBodyColor)
|
|
407
367
|
})
|
|
408
368
|
})
|
|
409
369
|
}), /*#__PURE__*/_jsx(PopoverContent, {
|
|
@@ -417,13 +377,13 @@ export function AgentCreatorBase(props) {
|
|
|
417
377
|
onChange: hex => {
|
|
418
378
|
const next = hexAppearance(hex);
|
|
419
379
|
if (!next) return;
|
|
420
|
-
if (
|
|
380
|
+
if (runtimeUrl) onChange({
|
|
421
381
|
...agent,
|
|
422
382
|
avatar: {
|
|
423
383
|
...c,
|
|
424
384
|
...next,
|
|
425
385
|
character: {
|
|
426
|
-
...c.
|
|
386
|
+
...materializeCharacter(c, capabilities.selected),
|
|
427
387
|
bodyColor: hex.toLowerCase()
|
|
428
388
|
}
|
|
429
389
|
}
|