@3driseai/3drise-core 1.0.28 → 1.0.30

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 (63) hide show
  1. package/dist/autoAnimate/describeScene.js +1 -1
  2. package/dist/catalog/catalogInfo.d.ts.map +1 -1
  3. package/dist/catalog/catalogInfo.js +38 -19
  4. package/dist/catalog/objectCatalog.d.ts.map +1 -1
  5. package/dist/catalog/objectCatalog.js +6 -2
  6. package/dist/data/galleryDefaults.d.ts +14 -0
  7. package/dist/data/galleryDefaults.d.ts.map +1 -0
  8. package/dist/data/galleryDefaults.js +500 -0
  9. package/dist/data/imageDefaults.d.ts +10 -0
  10. package/dist/data/imageDefaults.d.ts.map +1 -0
  11. package/dist/data/imageDefaults.js +212 -0
  12. package/dist/data/index.d.ts +2 -0
  13. package/dist/data/index.d.ts.map +1 -1
  14. package/dist/data/index.js +2 -0
  15. package/dist/properties/registry.d.ts +6 -2
  16. package/dist/properties/registry.d.ts.map +1 -1
  17. package/dist/properties/registry.js +20 -5
  18. package/dist/properties/tables/galleryProperties.d.ts +5 -0
  19. package/dist/properties/tables/galleryProperties.d.ts.map +1 -0
  20. package/dist/properties/tables/galleryProperties.js +659 -0
  21. package/dist/properties/tables/imageProperties.d.ts +4 -0
  22. package/dist/properties/tables/imageProperties.d.ts.map +1 -0
  23. package/dist/properties/tables/imageProperties.js +231 -0
  24. package/dist/properties/tables/index.d.ts +2 -0
  25. package/dist/properties/tables/index.d.ts.map +1 -1
  26. package/dist/properties/tables/index.js +2 -0
  27. package/dist/properties/tables/optionalProperties.d.ts +1 -0
  28. package/dist/properties/tables/optionalProperties.d.ts.map +1 -1
  29. package/dist/properties/tables/optionalProperties.js +1 -1
  30. package/dist/properties/types.d.ts +1 -1
  31. package/dist/properties/types.d.ts.map +1 -1
  32. package/dist/types/commands.d.ts +10 -1
  33. package/dist/types/commands.d.ts.map +1 -1
  34. package/dist/types/galleryObjects.d.ts +1317 -0
  35. package/dist/types/galleryObjects.d.ts.map +1 -0
  36. package/dist/types/galleryObjects.js +15 -0
  37. package/dist/types/imageObjects.d.ts +361 -0
  38. package/dist/types/imageObjects.d.ts.map +1 -0
  39. package/dist/types/imageObjects.js +17 -0
  40. package/dist/types/index.d.ts +2 -0
  41. package/dist/types/index.d.ts.map +1 -1
  42. package/dist/types/objectSettings.d.ts +16 -0
  43. package/dist/types/objectSettings.d.ts.map +1 -1
  44. package/dist/types/scene3d.d.ts +1 -1
  45. package/dist/types/scene3d.d.ts.map +1 -1
  46. package/dist/utils/galleryMigration.d.ts +3 -0
  47. package/dist/utils/galleryMigration.d.ts.map +1 -0
  48. package/dist/utils/galleryMigration.js +17 -0
  49. package/dist/utils/generativeAnimatable.d.ts +1 -1
  50. package/dist/utils/generativeAnimatable.d.ts.map +1 -1
  51. package/dist/utils/generativeAnimatable.js +6 -0
  52. package/dist/utils/getAnimatableProperties.d.ts +1 -1
  53. package/dist/utils/getAnimatableProperties.d.ts.map +1 -1
  54. package/dist/utils/getAnimatableProperties.js +1 -1
  55. package/dist/utils/imageMigration.d.ts +3 -0
  56. package/dist/utils/imageMigration.d.ts.map +1 -0
  57. package/dist/utils/imageMigration.js +18 -0
  58. package/dist/utils/index.d.ts +2 -0
  59. package/dist/utils/index.d.ts.map +1 -1
  60. package/dist/utils/index.js +2 -0
  61. package/dist/utils/objectMigration.d.ts.map +1 -1
  62. package/dist/utils/objectMigration.js +3 -1
  63. package/package.json +1 -1
@@ -34,7 +34,7 @@ const roundValue = (v) => (Array.isArray(v) ? v.map(r) : typeof v === 'number' ?
34
34
  /** Registry kinds the AI can write; strings, vec2 and textures are not offered. */
35
35
  const PROP_KINDS = new Set(['vec3', 'number', 'color', 'boolean', 'select']);
36
36
  /** Families whose set-only properties go out as patch (transform / material / edges / shadow are not offered). */
37
- const PATCH_DOMAINS = new Set(['light', 'particles', 'effect', 'grid', 'environment', 'space', 'land', 'text', 'rain', 'clouds', 'config', 'sky', 'cirrus', 'ocean', 'terrain']);
37
+ const PATCH_DOMAINS = new Set(['light', 'particles', 'effect', 'grid', 'environment', 'space', 'land', 'text', 'image', 'gallery', 'rain', 'clouds', 'config', 'sky', 'cirrus', 'ocean', 'terrain']);
38
38
  const toProp = (p) => {
39
39
  if (!PROP_KINDS.has(p.kind))
40
40
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"catalogInfo.d.ts","sourceRoot":"","sources":["../../src/catalog/catalogInfo.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAC/H;AACD,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7G;AAED,eAAO,MAAM,aAAa,EAAE,eAAe,EAc1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CA8KjE,CAAC"}
1
+ {"version":3,"file":"catalogInfo.d.ts","sourceRoot":"","sources":["../../src/catalog/catalogInfo.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAC/H;AACD,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7G;AAED,eAAO,MAAM,aAAa,EAAE,eAAe,EAe1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAiMjE,CAAC"}
@@ -5,7 +5,7 @@
5
5
  // Per type and per variant: the words the Add menu and the AI choose by (description,
6
6
  // tags), the display name, and the transform / material a variant starts with.
7
7
  // Configs live in the registry's DEFAULT_* tables (effects, particles, grids, lights,
8
- // environment, space); only mesh and gallery variants carry their config here,
8
+ // environment, space, gallery); only mesh variants carry their config here,
9
9
  // because those families have no defaults table.
10
10
  //
11
11
  // `key` is permanent (it is what scenes store in config.type / shapeType / layout).
@@ -20,13 +20,14 @@ export const CATALOG_TYPES = [
20
20
  { key: "grid", legacyId: "f732d206-6a68-11f1-8573-00163e32d101", description: "A grid overlay (cells and sections), typically on the ground plane.", icon: "calculator", order: 3, enabled: true },
21
21
  { key: "light", legacyId: "f7745031-6a68-11f1-8573-00163e32d101", description: "A light source illuminating the scene. Choose the kind based on directionality and falloff.", icon: "lightbulb", order: 4, enabled: true },
22
22
  { key: "environment", legacyId: "f6f1a6a4-6a68-11f1-8573-00163e32d101", description: "Environmental elements from the world", icon: "globe", order: 5, enabled: true },
23
- { key: "gallery", legacyId: "f71242f6-6a68-11f1-8573-00163e32d101", description: "A layout that arranges multiple image frames in 3D space.", icon: "images", order: 6, enabled: true, defaultVariant: "tiles" },
23
+ { key: "gallery", legacyId: "f71242f6-6a68-11f1-8573-00163e32d101", description: "A set of pictures: frames arranged on a layout (tiles, circular, spiral, tunnel…), or a variant with its own motion and navigation.", icon: "images", order: 6, enabled: true, defaultVariant: "layout" },
24
24
  { key: "effect", legacyId: "f6d118fe-6a68-11f1-8573-00163e32d101", description: "Generative visual effects that add geometry or particles around a focal point.", icon: "palette", order: 7, enabled: true, defaultVariant: "aura" },
25
25
  { key: "particles", legacyId: "f7b5bfba-6a68-11f1-8573-00163e32d101", description: "A particle system arranged in a configurable shape. Use for swarms, sparks, dust, dotted shapes.", icon: "sparkles", order: 8, enabled: true },
26
26
  { key: "path", legacyId: "f7d663ca-6a68-11f1-8573-00163e32d101", description: "A 3D spline or path that other objects can follow.", icon: "draw-polygon", order: 9, enabled: false },
27
27
  { key: "space", legacyId: "f7f6f91b-6a68-11f1-8573-00163e32d101", description: "Elements from space", icon: "planet-ringed", order: 10, enabled: true },
28
28
  { key: "text", legacyId: "e841a567-7fb1-49ac-9d90-eb26a414b07f", description: "Flat text: plain labels and animated looks (handwriting, neon, ink, metal…)", icon: "font", order: 11, enabled: true },
29
29
  { key: "land", description: "Placeable patches of terrain - mountains, hills, dunes, canyon - sized and moved like any object, as many as you like. For the scene's one endless ground use the environment terrain.", icon: "mountain", order: 12, enabled: true, defaultVariant: "hills" },
30
+ { key: "image", description: "One picture at a time shown through a construction that animates every change of the picture (shards, …). config.imageUrls are its pictures (one stays; several change every config.interval seconds); a gallery is a set of pictures you browse.", icon: "image", order: 13, enabled: true },
30
31
  ];
31
32
  export const CATALOG_VARIANTS = {
32
33
  mesh: [
@@ -105,23 +106,29 @@ export const CATALOG_VARIANTS = {
105
106
  { key: "thunderstorm", name: "Thunderstorm", description: "A thunderstorm without the rain (rain is its own object): dark storm curtains drifting on the wind, and lightning arriving as a Poisson process of multi-stroke flashes that light the curtains and the whole scene. The cursor calls a strike or clears the murk. Use for storm, noir and dramatic scenes.", tags: ["thunderstorm", "lightning", "storm", "weather", "dramatic"], transform: { scale: [140, 60, 140] } },
106
107
  ],
107
108
  gallery: [
108
- { key: "arc", legacyId: "68da2961-6a6f-11f1-8573-00163e32d101", name: "arc", description: "Frames along an arc segment. Use for partial-curve panoramas, theater-row layouts.", tags: ["arc", "curve", "partial-circle", "panorama", "theater"], config: { layout: "arc", radius: 3, arcAngle: 180, numImages: 8, geometryType: "none" } },
109
- { key: "box", legacyId: "68992683-6a6f-11f1-8573-00163e32d101", name: "box", description: "Frames mounted on the inside or outside faces of a cube. Use for room-like installations.", tags: ["box", "cube", "cubic", "room", "six-sided"], config: { size: 4, layout: "box", geometryType: "none" } },
110
- { key: "circular", legacyId: "67b5fc4d-6a6f-11f1-8573-00163e32d101", name: "circular", description: "Frames arranged on a flat circle facing inward. Use for carousels, ceremonial arrangements.", tags: ["circular", "circle", "carousel", "ring-of-frames", "round"], config: { layout: "circular", radius: 3, numImages: 8, geometryType: "none" } },
111
- { key: "fan", legacyId: "6878e8dd-6a6f-11f1-8573-00163e32d101", name: "fan", description: "Frames fanned out from a common origin. Use for splayed-card layouts, paper-fan visuals.", tags: ["fan", "splay", "spread", "paper-fan"], config: { layout: "fan", radius: 3, arcAngle: 60, numImages: 5, geometryType: "none" } },
112
- { key: "helix", legacyId: "6837b8c7-6a6f-11f1-8573-00163e32d101", name: "helix", description: "Frames spiraling vertically like a DNA strand. Use for tall, twisting columns of images.", tags: ["helix", "twist", "spiral-column", "tall-spiral"], config: { layout: "helix", radius: 2, numImages: 16, rotations: 3, geometryType: "none", heightIncrement: 0.5 } },
113
- { key: "horizontal", legacyId: "67755522-6a6f-11f1-8573-00163e32d101", name: "horizontal", description: "Single horizontal line of frames. Use for film strips, timelines, horizontal showcases.", tags: ["horizontal", "row", "strip", "line", "timeline"], config: { layout: "horizontal", spacing: 1.5, numImages: 8, geometryType: "none" } },
114
- { key: "pyramid", legacyId: "685868c7-6a6f-11f1-8573-00163e32d101", name: "pyramid", description: "Layered tapering layout, wide at the base. Use for hierarchies, leaderboards, monuments.", tags: ["pyramid", "tiered", "hierarchy", "monument", "tapered"], config: { layers: 4, layout: "pyramid", spacing: 1.2, geometryType: "none" } },
115
- { key: "random", legacyId: "693be3c0-6a6f-11f1-8573-00163e32d101", name: "random", description: "Fully random positions and rotations. Use for fully unpredictable arrangements.", tags: ["random", "unpredictable", "chaos"], config: { bounds: 5, layout: "random", numImages: 12, geometryType: "none" } },
116
- { key: "scattered", legacyId: "673449be-6a6f-11f1-8573-00163e32d101", name: "scattered", description: "Randomly positioned frames within a bounded volume. Use for organic or chaotic arrangements.", tags: ["scattered", "random", "chaotic", "organic"], config: { bounds: 5, layout: "scattered", numImages: 12, geometryType: "none" } },
117
- { key: "sphere", legacyId: "68b9a578-6a6f-11f1-8573-00163e32d101", name: "sphere", description: "Frames distributed on a sphere's surface. Use for planetarium-like or 360 layouts.", tags: ["sphere", "planetarium", "360", "spherical-shell"], config: { layout: "sphere", radius: 3, numImages: 12, geometryType: "none" } },
118
- { key: "spiral", legacyId: "67d66db1-6a6f-11f1-8573-00163e32d101", name: "spiral", description: "Frames following a flat or 3D spiral. Use for dramatic, hypnotic, fibonacci-like layouts.", tags: ["spiral", "fibonacci", "swirl", "hypnotic"], config: { layout: "spiral", radius: 3, numImages: 16, rotations: 2, geometryType: "none", heightIncrement: 0.3 } },
119
- { key: "tiles", legacyId: "6754c10f-6a6f-11f1-8573-00163e32d101", name: "tiles", description: "Grid of evenly-spaced rows and columns. Default arrangement - neat and predictable.", tags: ["tiles", "grid", "rows", "columns", "matrix", "wall"], config: { layout: "tiles", columns: 4, spacing: 1.2, geometryType: "none" } },
120
- { key: "tunnel", legacyId: "68172ccd-6a6f-11f1-8573-00163e32d101", name: "tunnel", description: "Frames forming a cylindrical tunnel the camera can fly through. Use for immersive walk-throughs.", tags: ["tunnel", "cylinder-of-frames", "fly-through", "immersive"], config: { depth: 8, layout: "tunnel", radius: 3, numImages: 12, geometryType: "none" } },
121
- { key: "tunnelPyramid", legacyId: "68fadd52-6a6f-11f1-8573-00163e32d101", name: "tunnelPyramid", description: "A tunnel layout where each ring tapers - pyramid-shaped tunnel.", tags: ["tunnel-pyramid", "tapered-tunnel", "cone-tunnel"], config: { depth: 8, layout: "tunnelPyramid", radius: 3, numImages: 12, scaleFactor: 0.7, geometryType: "none" } },
122
- { key: "tunnelWave", legacyId: "691b51a2-6a6f-11f1-8573-00163e32d101", name: "tunnelWave", description: "A tunnel layout where the rings undulate - wavy tunnel.", tags: ["tunnel-wave", "wavy-tunnel", "rippling-tunnel"], config: { depth: 8, layout: "tunnelWave", radius: 3, amplitude: 0.5, frequency: 1, numImages: 12, geometryType: "none" } },
123
- { key: "vertical", legacyId: "6795bf88-6a6f-11f1-8573-00163e32d101", name: "vertical", description: "Single vertical line of frames. Use for stacked feeds, scrolling columns, totem layouts.", tags: ["vertical", "column", "stack", "totem", "feed"], config: { layout: "vertical", spacing: 1.5, numImages: 8, geometryType: "none" } },
124
- { key: "wave", legacyId: "67f698ab-6a6f-11f1-8573-00163e32d101", name: "wave", description: "Frames following a sinusoidal undulating surface. Use for flowing, ocean-like layouts.", tags: ["wave", "undulating", "sinusoidal", "flowing", "ocean"], config: { layout: "wave", spacing: 1.5, amplitude: 1, frequency: 1, numImages: 10, geometryType: "none" } },
109
+ { key: "layout", legacyId: "6754c10f-6a6f-11f1-8573-00163e32d101", name: "Layout", description: "Frames of one shape arranged on a layout — tiles, circular, spiral, arc, helix, sphere, tunnel and more (config.layout) — with the pictures in config.imageUrls; the frames take the material and the transform effects. Use for photo walls, carousels of frames, portfolios and rooms of pictures.", tags: ["gallery", "layout", "frames", "pictures", "tiles", "circular", "spiral", "tunnel"] },
110
+ { key: "lightThreads", name: "Light Threads", description: "Pictures as curtains of fine vertical threads of light, one column of the image each; inactive curtains hang grey and faint, the arriving one fills with colour as light runs down its threads; the cursor brings colour back. Use for installations, dark lobbies, music and tech showcases.", tags: ["gallery", "threads", "light", "curtain", "installation", "interactive"] },
111
+ { key: "silk", name: "Silk", description: "Pictures printed on sheets of silk, each a cloth simulation hanging in a light breeze and lit by the scene with a soft sheen; the cursor is a breath of air on the cloth. Use for fashion, textiles and soft, calm showcases.", tags: ["gallery", "silk", "cloth", "fabric", "simulation", "interactive"] },
112
+ { key: "particleShift", name: "Particle Shift", description: "Pictures made of particles: inactive ones are a faint grey stipple, the active one fuses into the solid picture in full colour as a small soft wave crosses it; the cursor turns the area it passes back into particles. Use for art, tech and dreamy showcases.", tags: ["gallery", "particles", "stipple", "wave", "transform", "interactive"] },
113
+ { key: "glassPanes", name: "Glass Panes", description: "Pictures sealed behind thick panes of physical glass that refract the room and are lit by the scene; the front pane steps forward, the others stand back dimmer. Use for architecture, luxury, product and corporate showcases.", tags: ["gallery", "glass", "refraction", "physical", "luxury", "navigation"] },
114
+ { key: "halo", name: "Halo", description: "Scene-lit prints on a tilted ring; the picture that comes round to the front steps out toward the viewer, grows and comes to full colour while the others ride the ring faded and grey. Use for brand rings, collections and hero rotations.", tags: ["gallery", "ring", "orbit", "step-out", "collection", "navigation"] },
115
+ { key: "loom", name: "Loom", description: "Pictures woven on a loom: inactive ones are a sparse grey weave of thin threads over a fine warp, the active one is woven closed in full colour by a soft diagonal wave; the cursor reveals colour on the weave. Use for craft, textiles and slow graphic reveals.", tags: ["gallery", "loom", "weave", "threads", "textile", "interactive"] },
116
+ { key: "basicCarousel", name: "Basic Carousel", description: "A coverflow carousel of framed pictures on a damped scroll with drag, throw and snap, a lifted centre frame and a soft floor reflection; the cursor tilts or lifts the frames. Use for portfolios, product lines and photo sets.", tags: ["gallery", "carousel", "coverflow", "reflection", "navigation", "interactive"] },
117
+ { key: "paperLanterns", name: "Paper Lanterns", description: "Paper lanterns hanging from a sagging rope, one picture printed around each, swinging as real pendulums in a breeze; the front lantern hangs lower and glows from inside. Use for festive, warm and playful showcases.", tags: ["gallery", "lanterns", "pendulum", "glow", "festive", "interactive"] },
118
+ { key: "pinscreen", name: "Pinscreen", description: "Pictures as beds of fine pins lit by the scene: inactive ones are a flat grey bed, the active one is pushed out by a soft wave into a relief in full colour; the cursor presses the pins in. Use for product, tech and tactile showcases.", tags: ["gallery", "pins", "relief", "tactile", "scene-lit", "interactive"] },
119
+ { key: "depthLayers", name: "Depth Layers", description: "Pictures split by brightness into thin sheets floating in depth: inactive ones are collapsed into one faint grey sheet, the active one opens into depth in full colour and its sheets slide past each other with real parallax. Use for editorial, music and dreamy showcases.", tags: ["gallery", "layers", "depth", "parallax", "editorial", "interactive"] },
120
+ { key: "contourLines", name: "Contour Lines", description: "Pictures drawn as the contour lines of their own brightness, like a topographic map: inactive ones are a few thin grey lines, the active one fills in as a soft wave thickens the lines into the solid picture; the cursor lifts the contours into relief. Use for architecture, data and graphic showcases.", tags: ["gallery", "contours", "lines", "topographic", "graphic", "interactive"] },
121
+ { key: "prismSplit", name: "Prism Split", description: "Pictures as their red, green and blue channels on three planes of light: inactive ones stand apart in depth, dim with soft colour fringes, the active one slides together into the true picture behind a soft wave; the cursor splits it again. Use for tech, music and optics-inspired showcases.", tags: ["gallery", "prism", "rgb", "chromatic", "light", "interactive"] },
122
+ { key: "engraving", name: "Engraving", description: "Pictures drawn as banknote engraving, fine parallel lines bent and widened by the picture’s tone: inactive ones are a faint grey hatch, the active one thickens into full colour behind a soft wave; the cursor turns the hatching under it. Use for luxury, finance, heritage and editorial showcases.", tags: ["gallery", "engraving", "hatching", "lines", "luxury", "interactive"] },
123
+ { key: "slats", name: "Slats", description: "Pictures cut into thin vertical slats lit by the scene: inactive ones stand nearly edge-on as fine grey lines, the active one turns its slats to face you in a soft wave, closing into the picture; the cursor turns the slats near it. Use for architecture, interiors and product showcases.", tags: ["gallery", "slats", "louvres", "turning", "scene-lit", "interactive"] },
124
+ { key: "fold", name: "Fold", description: "Pictures printed on paper folded in one of six ways (accordion, herringbone, fan, scroll, page curl, crumple) and lit by the scene: inactive ones are folded tight and grey, the active one unfolds flat into full colour; the cursor presses a dent into it. Use for print, editorial, fashion and craft showcases.", tags: ["gallery", "paper", "fold", "origami", "scene-lit", "interactive"] },
125
+ { key: "wireRelief", name: "Wire Relief", description: "Pictures as a fine wire mesh lifted by their own brightness: inactive ones are a flat grey wire grid, the active one rises into relief and fills with colour panels behind a soft wave; near the cursor the panels lift away to the wire. Use for tech, data, architecture and engineering showcases.", tags: ["gallery", "wireframe", "relief", "mesh", "tech", "interactive"] },
126
+ { key: "terraces", name: "Terraces", description: "Pictures as topographic models of stacked card lit by the scene: inactive ones are a flat grey contour map, the active one rises into terraces of its own brightness in full colour behind a soft wave; the cursor lifts the terraces higher. Use for architecture, maps, data and craft showcases.", tags: ["gallery", "terraces", "topographic", "card", "scene-lit", "interactive"] },
127
+ { key: "shadowBox", name: "Shadow Box", description: "Pictures as cut-paper layers in a shadow box, lit by the scene so each sheet casts a real soft shadow on the one behind: inactive ones are pressed flat and grey, the active one opens into depth in full colour. Use for editorial, craft, kids and storytelling showcases.", tags: ["gallery", "paper", "layers", "shadows", "scene-lit", "interactive"] },
128
+ { key: "popUp", name: "Pop-up", description: "Pictures as pop-up book spreads lit by the scene: cut-paper sheets hinged to a page lie folded down and grey when inactive, and stand up one after another into the picture in full colour when it becomes active. Use for storytelling, kids, editorial and craft showcases.", tags: ["gallery", "pop-up", "paper", "book", "scene-lit", "interactive"] },
129
+ { key: "ridgelines", name: "Ridgelines", description: "Pictures as stacked horizontal hairlines lifted by their brightness, each ridge hiding the lines behind it: inactive ones are flat grey lines, the active one rises into ridges and fills with the picture’s colour behind a soft wave; the cursor raises the ridges. Use for music, data, tech and editorial showcases.", tags: ["gallery", "ridgelines", "lines", "relief", "joy-plot", "interactive"] },
130
+ { key: "flowLines", name: "Flow Lines", description: "Pictures as fine lines flowing like water around their own forms: inactive ones are thin grey dashed lines drifting, the active one closes the dashes and thickens the lines into the picture in full colour behind a soft wave; the cursor parts the lines. Use for wellness, nature, music and calm showcases.", tags: ["gallery", "flow", "lines", "streamlines", "calm", "interactive"] },
131
+ { key: "strata", name: "Strata", description: "Pictures as stacks of thin horizontal plates lit by the scene, each plate’s front following the picture’s brightness like a laser-cut relief: inactive ones are a flat grey stack, the active one slides forward into relief in full colour; the cursor pushes plates back. Use for architecture, product, interiors and craft showcases.", tags: ["gallery", "strata", "plates", "relief", "scene-lit", "interactive"] },
125
132
  ],
126
133
  effect: [
127
134
  { key: "aura", legacyId: "64899c43-6a6f-11f1-8573-00163e32d101", name: "aura", description: "Soft pulsing glow shell around the object. Use for magical, mystical, holy effects.", tags: ["aura", "glow", "halo", "magical", "mystical", "holy", "energy-field"] },
@@ -175,6 +182,18 @@ export const CATALOG_VARIANTS = {
175
182
  { key: "tidalStream", legacyId: "2ecba95c-bb82-42cf-9400-94f53cc579fa", name: "tidalStream", description: "A spiral galaxy shredding dwarf satellites into tidal streams: symplectic orbits, density-wave arms, Doppler-shifted blackbody stars; the cursor is a subhalo, black hole or spectroscope. Use for space scenes.", tags: ["galaxy", "tidal-stream", "n-body", "gravitational-lensing", "black-hole", "doppler", "space", "interactive"] },
176
183
  { key: "fireworks", name: "Fireworks", description: "An aerial fireworks show: 20 real shell types, shaped shells, formations and text written in the sky, with drag-limited stars, cooling sparks and lit smoke; fires on its own or where you click. Use for celebrations, New Year and night-sky scenes.", tags: ["fireworks", "celebration", "new-year", "night-sky", "pyrotechnics", "sparks", "interactive"] },
177
184
  ],
185
+ image: [
186
+ { key: "shards", name: "Shards", description: "A picture tessellated into shards that lift, flip edge-on and land as the next picture in a travelling wave whenever the image changes; the cursor tilts, lifts or ripples the shards. Use for hero images, portfolios and product reveals.", tags: ["image", "shards", "flip", "transition", "hero", "showcase", "interactive"] },
187
+ { key: "projector", name: "Projector", description: "The picture as projected light on a matte screen, thrown from a lens above, with a visible haze beam and dust lit by the image; a change racks focus and slides the next slide through the gate. Use for cinema, exhibitions, moody and nostalgic scenes.", tags: ["image", "projector", "beam", "haze", "dust", "cinema", "self-lit", "interactive"] },
188
+ { key: "relief", name: "Relief", description: "The picture embossed into paper by its own local contrast and lit by the scene; a change is a soft press travelling across the sheet, flattening the old impression and raising the new one as its ink lays down. Use for editorial, print, craft and product heroes.", tags: ["image", "relief", "emboss", "paper", "print", "lit", "interactive"] },
189
+ { key: "pinscreen", name: "Pinscreen", description: "The picture as a pinscreen of fine metal pins, each standing out by the brightness under it with a domed head in the picture's colour; a change is a pressure wave that sinks the pins and raises the new relief. Use for tech, product and sculptural heroes.", tags: ["image", "pinscreen", "pins", "relief", "metal", "lit", "interactive"] },
190
+ { key: "prism", name: "Prism", description: "The picture printed across a row of slim triangular prisms; a change turns each prism a third of a turn in a travelling wave, its faces passing through the scene light, to show the next picture. Use for signage, retail, product and campaign heroes.", tags: ["image", "prism", "trivision", "slats", "facets", "lit", "interactive"] },
191
+ { key: "lenticular", name: "Lenticular", description: "A lenticular print: fine lenses over interleaved strips of the old and new picture; a change sweeps the flip across the sheet and depends on the viewing angle, with ribbed clearcoat highlights from the scene light. Use for collectibles, posters, fashion and retail.", tags: ["image", "lenticular", "lens", "print", "holographic", "lit", "interactive"] },
192
+ { key: "frost", name: "Frost", description: "A print behind a pane of real glass; a change is a breath of frost that feathers in from the edges, blurs the print through the glass, and clears from the centre to reveal the new picture; the cursor wipes the glass. Use for winter, luxury, beauty and calm editorial.", tags: ["image", "frost", "glass", "condensation", "blur", "lit", "interactive"] },
193
+ { key: "roll", name: "Roll", description: "A print on paper; a change is a slim paper roll travelling across it, winding up the old print and laying down the new one, lit and shadowed by the scene. Use for editorial, stationery, packaging and calm product heroes.", tags: ["image", "paper", "roll", "curl", "print", "lit", "interactive"] },
194
+ { key: "contour", name: "Contour", description: "The picture as a topographic map of itself: a change opens it into hairline contour lines that lift into a floating stack in depth and flow continuously into the new picture's contours before it fills back in. Use for tech, data, science and architecture.", tags: ["image", "contour", "topographic", "lines", "depth", "self-lit", "interactive"] },
195
+ { key: "engraving", name: "Engraving", description: "The picture as an ink engraving on paper, fine strokes laid along its own isophotes, dense where it is dark, at a depth set by brightness; a change lifts and turns every stroke to the new picture's flow like filings in a field. Use for luxury, editorial, banknote and art direction.", tags: ["image", "engraving", "hatching", "strokes", "lines", "self-lit", "interactive"] },
196
+ ],
178
197
  land: [
179
198
  { key: "mountains", name: "Mountains", description: "A placeable patch of mountain land: ridged, eroded peaks with slope rock and a snow line, easing down to its base at the edge. Footprint is the object's scale. Use for alpine backdrops, islands of peaks and dioramas.", tags: ["land", "terrain", "mountains", "peaks", "alpine", "landscape"], transform: { scale: [5, 1, 5] } },
180
199
  { key: "hills", name: "Hills", description: "A placeable patch of rolling hills: soft, domain-warped downland under grass and meadow, easing down to its base at the edge. Footprint is the object's scale. Use for countryside, parks and gentle dioramas.", tags: ["land", "terrain", "hills", "meadow", "countryside", "landscape"], transform: { scale: [5, 1, 5] } },
@@ -1 +1 @@
1
- {"version":3,"file":"objectCatalog.d.ts","sourceRoot":"","sources":["../../src/catalog/objectCatalog.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACjI;AAsBD,yEAAyE;AACzE,wBAAgB,aAAa,IAAI;IAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAsDhG"}
1
+ {"version":3,"file":"objectCatalog.d.ts","sourceRoot":"","sources":["../../src/catalog/objectCatalog.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACjI;AAwBD,yEAAyE;AACzE,wBAAgB,aAAa,IAAI;IAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAsDhG"}
@@ -6,9 +6,9 @@
6
6
  // own: variants come from the registry's defaults tables (a key added there shows
7
7
  // up here), words and starting transform / material from ./catalogInfo.
8
8
  //
9
- // registry families effect, particles, grid, light, environment, space, text
9
+ // registry families effect, particles, grid, light, environment, space, text, image, gallery
10
10
  // → one variant per key of the defaults table (config = that default)
11
- // curated families mesh, gallery → the entries in catalogInfo (configs there)
11
+ // curated families mesh → the entries in catalogInfo (configs there)
12
12
  // no variants group, model, path
13
13
  //
14
14
  // Output keeps the shapes the client already uses (ObjectTypeItem /
@@ -21,6 +21,8 @@ import { DEFAULT_SPACE_OBJECTS, SPACE_OBJECT_LABELS } from '../data/spaceDefault
21
21
  import { DEFAULT_ENVIRONMENT_OBJECTS, ENVIRONMENT_OBJECT_LABELS } from '../data/environmentDefaults.js';
22
22
  import { DEFAULT_LAND_OBJECTS, LAND_OBJECT_LABELS } from '../data/landDefaults.js';
23
23
  import { DEFAULT_TEXT_OBJECTS, TEXT_OBJECT_LABELS } from '../data/textDefaults.js';
24
+ import { DEFAULT_IMAGE_OBJECTS, IMAGE_OBJECT_LABELS } from '../data/imageDefaults.js';
25
+ import { DEFAULT_GALLERY_OBJECTS, GALLERY_OBJECT_LABELS } from '../data/galleryDefaults.js';
24
26
  import { CATALOG_TYPES, CATALOG_VARIANTS } from './catalogInfo.js';
25
27
  /** Families whose variants ARE the keys of a registry defaults table. */
26
28
  const REGISTRY_FAMILIES = {
@@ -32,6 +34,8 @@ const REGISTRY_FAMILIES = {
32
34
  environment: { defaults: DEFAULT_ENVIRONMENT_OBJECTS, labels: ENVIRONMENT_OBJECT_LABELS },
33
35
  land: { defaults: DEFAULT_LAND_OBJECTS, labels: LAND_OBJECT_LABELS },
34
36
  text: { defaults: DEFAULT_TEXT_OBJECTS, labels: TEXT_OBJECT_LABELS },
37
+ image: { defaults: DEFAULT_IMAGE_OBJECTS, labels: IMAGE_OBJECT_LABELS },
38
+ gallery: { defaults: DEFAULT_GALLERY_OBJECTS, labels: GALLERY_OBJECT_LABELS },
35
39
  };
36
40
  /** 'paw print' → 'Paw Print', 'tunnelPyramid' → 'Tunnel Pyramid'. */
37
41
  const titleCase = (s) => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/(^|\s)\S/g, c => c.toUpperCase());
@@ -0,0 +1,14 @@
1
+ import type { GalleryObjectConfig, GalleryObjectType } from "../types";
2
+ export declare const DEFAULT_GALLERY_OBJECTS: Record<GalleryObjectType, GalleryObjectConfig>;
3
+ export declare const GALLERY_OBJECT_LABELS: Record<GalleryObjectType, string>;
4
+ export declare const GALLERY_OBJECTS_ANIMATABLE: Record<GalleryObjectType, {
5
+ value: string;
6
+ label: string;
7
+ }[]>;
8
+ /** Variants whose frames take the object's material (the rest draw with their own shaders). */
9
+ export declare const GALLERY_MATERIAL_VARIANTS: ReadonlySet<string>;
10
+ /** True when the config is one of the gallery variants (type 'gallery', config.type set). */
11
+ export declare function isGalleryObjectConfig(config: unknown): config is GalleryObjectConfig;
12
+ /** True when this gallery's frames take a material (the layout gallery); false for variants with their own shaders. */
13
+ export declare function galleryTakesMaterial(config: unknown): boolean;
14
+ //# sourceMappingURL=galleryDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"galleryDefaults.d.ts","sourceRoot":"","sources":["../../src/data/galleryDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAWvE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CA4BlF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAwBnE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,iBAAiB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAyapG,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAuB,CAAC;AAElF,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,mBAAmB,CAGpF;AAED,uHAAuH;AACvH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG7D"}