@3driseai/3drise-viewer 0.1.27 → 0.1.28

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 (35) hide show
  1. package/dist/components/ApollonianGrid.d.ts +25 -0
  2. package/dist/components/ApollonianGrid.d.ts.map +1 -0
  3. package/dist/components/ApollonianGrid.js +80 -0
  4. package/dist/components/ConformalGrid.d.ts +25 -0
  5. package/dist/components/ConformalGrid.d.ts.map +1 -0
  6. package/dist/components/ConformalGrid.js +97 -0
  7. package/dist/components/GridsGenerator.d.ts +2 -2
  8. package/dist/components/GridsGenerator.d.ts.map +1 -1
  9. package/dist/components/GridsGenerator.js +21 -0
  10. package/dist/components/HilbertGrid.d.ts +25 -0
  11. package/dist/components/HilbertGrid.d.ts.map +1 -0
  12. package/dist/components/HilbertGrid.js +93 -0
  13. package/dist/components/LensingGrid.d.ts +25 -0
  14. package/dist/components/LensingGrid.d.ts.map +1 -0
  15. package/dist/components/LensingGrid.js +81 -0
  16. package/dist/components/ParastichyGrid.d.ts +25 -0
  17. package/dist/components/ParastichyGrid.d.ts.map +1 -0
  18. package/dist/components/ParastichyGrid.js +82 -0
  19. package/dist/components/PhyllotaxisGrid.d.ts +25 -0
  20. package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
  21. package/dist/components/PhyllotaxisGrid.js +95 -0
  22. package/dist/components/TruchetGrid.d.ts +25 -0
  23. package/dist/components/TruchetGrid.d.ts.map +1 -0
  24. package/dist/components/TruchetGrid.js +82 -0
  25. package/dist/components/index.d.ts +14 -0
  26. package/dist/components/index.d.ts.map +1 -1
  27. package/dist/components/index.js +7 -0
  28. package/dist/constants.d.ts +1 -1
  29. package/dist/constants.d.ts.map +1 -1
  30. package/dist/constants.js +1 -1
  31. package/dist/types/gridConfigs.d.ts +103 -0
  32. package/dist/types/gridConfigs.d.ts.map +1 -1
  33. package/dist/types/index.d.ts +1 -1
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/package.json +2 -2
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { ApollonianGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface ApollonianGridProps extends ObjectReadyProps {
6
+ config?: ApollonianGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** ApollonianGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultApollonianGridConfig: ApollonianGridConfig;
17
+ /**
18
+ * An Apollonian gasket by circle inversion: a point is walked out of nested gaps through the four dual circles, so every tangent circle gets a pixel-true rim. A slow Möbius disk flow re-balances the packing while every tangency holds.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function ApollonianGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: ApollonianGridProps): import("react").JSX.Element;
24
+ export default ApollonianGrid;
25
+ //# sourceMappingURL=ApollonianGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApollonianGrid.d.ts","sourceRoot":"","sources":["../../src/components/ApollonianGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,EAAE,oBAyBzC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAoC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,mBAAmB,+BA4CjK;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useObjectReady } from '../hooks/useObjectReady.js';
5
+ import { useGridSurface } from '../hooks/useGridSurface.js';
6
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
7
+ import { withConfigDefaults } from '../utils/configAnimations.js';
8
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
9
+ import { ApollonianGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
10
+ // Side-effect import registers <apollonianGridMaterial> via extend().
11
+ void ApollonianGridMaterial;
12
+ /** ApollonianGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
13
+ export const defaultApollonianGridConfig = {
14
+ cellSize: 2,
15
+ size: 50,
16
+ segments: undefined,
17
+ lineMode: 0,
18
+ cellMode: 1,
19
+ lineWidth: 1.1,
20
+ sectionSize: 2,
21
+ sectionWidth: 2,
22
+ animSpeed: 1,
23
+ animScale: 0.5,
24
+ animIntensity: 0.6,
25
+ fadeDistance: undefined,
26
+ fadeStrength: 0.15,
27
+ displace: 0,
28
+ depth: 12,
29
+ morph: 0.25,
30
+ lineColor: '#6a90c8',
31
+ sectionColor: '#c9e4ff',
32
+ cellColor: '#1a2f5c',
33
+ glowColor: '#8fb8ff',
34
+ bgColor: '#03050c',
35
+ bgOpacity: 0,
36
+ reveal: 1,
37
+ revealDuration: 0,
38
+ };
39
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
40
+ const VARIANT = ['depth', 'morph'];
41
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
42
+ const DERIVE = {};
43
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
44
+ const STRUCTURAL = [...GRID_STRUCTURAL, 'depth'];
45
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
46
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.apollonianGrid ?? []).map((p) => p.value));
47
+ /**
48
+ * An Apollonian gasket by circle inversion: a point is walked out of nested gaps through the four dual circles, so every tangent circle gets a pixel-true rim. A slow Möbius disk flow re-balances the packing while every tangency holds.
49
+ *
50
+ * The grid always lies flat: any other orientation, and any movement of the
51
+ * whole, is the parent object's transform. Only what happens inside it animates.
52
+ */
53
+ export function ApollonianGrid({ config = defaultApollonianGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
54
+ const matRef = useRef(null);
55
+ const rootRef = useRef(null);
56
+ const meshRef = useRef(null);
57
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
58
+ // The committed config over this grid's defaults: every knob has a value to render
59
+ // and for a keyframe or pointer binding to start from.
60
+ const base = useMemo(() => withConfigDefaults(defaultApollonianGridConfig, config), [config]);
61
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
62
+ const segs = segments ?? (displace > 0
63
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
64
+ : 1);
65
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
66
+ // One push point for every uniform the config owns: the committed config when the
67
+ // material mounts or the config commits, the merged one while anything overrides it.
68
+ const baseRef = useRef(base);
69
+ baseRef.current = base;
70
+ const setMaterial = useCallback((m) => {
71
+ matRef.current = m;
72
+ if (m)
73
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
74
+ }, []);
75
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
76
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
77
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
78
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("apollonianGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, ApollonianGridMaterial.key)] }) }));
79
+ }
80
+ export default ApollonianGrid;
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { ConformalGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface ConformalGridProps extends ObjectReadyProps {
6
+ config?: ConformalGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** ConformalGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultConformalGridConfig: ConformalGridConfig;
17
+ /**
18
+ * A square lattice pulled back through an ideal-flow complex potential. Cauchy–Riemann keeps every cell square; colour is the flow speed, alternate stream tubes carry dye and hydrogen-bubble dashes ride the flow.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function ConformalGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: ConformalGridProps): import("react").JSX.Element;
24
+ export default ConformalGrid;
25
+ //# sourceMappingURL=ConformalGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConformalGrid.d.ts","sourceRoot":"","sources":["../../src/components/ConformalGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,gGAAgG;AAChG,eAAO,MAAM,0BAA0B,EAAE,mBA+BxC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAmC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,kBAAkB,+BAsD9J;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useFrame } from '@react-three/fiber';
5
+ import { useObjectReady } from '../hooks/useObjectReady.js';
6
+ import { useGridSurface } from '../hooks/useGridSurface.js';
7
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
8
+ import { withConfigDefaults } from '../utils/configAnimations.js';
9
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
10
+ import { ConformalGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
11
+ // Side-effect import registers <conformalGridMaterial> via extend().
12
+ void ConformalGridMaterial;
13
+ /** ConformalGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
14
+ export const defaultConformalGridConfig = {
15
+ cellSize: 2,
16
+ size: 50,
17
+ segments: undefined,
18
+ lineMode: 0,
19
+ cellMode: 0,
20
+ lineWidth: 1,
21
+ sectionSize: 4,
22
+ sectionWidth: 1.4,
23
+ animSpeed: 1,
24
+ animScale: 0.5,
25
+ animIntensity: 0.8,
26
+ fadeDistance: undefined,
27
+ fadeStrength: 0.7,
28
+ displace: 0,
29
+ flowMap: 2,
30
+ poleSpread: 6,
31
+ spokes: 24,
32
+ arms: 3,
33
+ circulation: 1.2,
34
+ drift: 0.35,
35
+ fill: 0.5,
36
+ dye: 0.8,
37
+ lineColor: '#2fb6c9',
38
+ sectionColor: '#c8fff4',
39
+ cellColor: '#1a2a78',
40
+ glowColor: '#9ff0ff',
41
+ bgColor: '#020a0f',
42
+ bgOpacity: 0,
43
+ reveal: 1,
44
+ revealDuration: 0,
45
+ };
46
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
47
+ const VARIANT = ['flowMap', 'poleSpread', 'spokes', 'arms', 'circulation', 'drift', 'fill', 'dye'];
48
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
49
+ const DERIVE = {};
50
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
51
+ const STRUCTURAL = [...GRID_STRUCTURAL, 'flowMap', 'spokes', 'arms'];
52
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
53
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.conformalGrid ?? []).map((p) => p.value));
54
+ /**
55
+ * A square lattice pulled back through an ideal-flow complex potential. Cauchy–Riemann keeps every cell square; colour is the flow speed, alternate stream tubes carry dye and hydrogen-bubble dashes ride the flow.
56
+ *
57
+ * The grid always lies flat: any other orientation, and any movement of the
58
+ * whole, is the parent object's transform. Only what happens inside it animates.
59
+ */
60
+ export function ConformalGrid({ config = defaultConformalGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
61
+ const matRef = useRef(null);
62
+ const rootRef = useRef(null);
63
+ const meshRef = useRef(null);
64
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
65
+ // The committed config over this grid's defaults: every knob has a value to render
66
+ // and for a keyframe or pointer binding to start from.
67
+ const base = useMemo(() => withConfigDefaults(defaultConformalGridConfig, config), [config]);
68
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
69
+ const segs = segments ?? (displace > 0
70
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
71
+ : 1);
72
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
73
+ // One push point for every uniform the config owns: the committed config when the
74
+ // material mounts or the config commits, the merged one while anything overrides it.
75
+ const baseRef = useRef(base);
76
+ baseRef.current = base;
77
+ const setMaterial = useCallback((m) => {
78
+ matRef.current = m;
79
+ if (m)
80
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
81
+ }, []);
82
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
83
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
84
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
85
+ // Rate knobs are integrated here, never multiplied by time in the shader, so a
86
+ // keyframed or pointer-driven rate changes the speed without making the pattern
87
+ // jump. The knob is read from the material, i.e. the merged (driven) value.
88
+ useFrame((_, delta) => {
89
+ const u = matRef.current?.uniforms;
90
+ if (!u)
91
+ return;
92
+ const dt = Math.min(delta, 0.1) * u.u_animSpeed.value;
93
+ u.u_flowPhase.value += dt * u.u_drift.value;
94
+ });
95
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("conformalGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, ConformalGridMaterial.key)] }) }));
96
+ }
97
+ export default ConformalGrid;
@@ -1,9 +1,9 @@
1
1
  import type { ObjectReadyProps } from '../types/objectReady';
2
- import type { ChladniGridConfig, CircuitGridConfig, ContourGridConfig, FlowNetGridConfig, FractalGridConfig, HexGridConfig, HyperbolicGridConfig, MoireGridConfig, QuasiGridConfig, RadarGridConfig, VoronoiGridConfig, GravWaveGridConfig, GirihGridConfig, WallpaperGridConfig, ReactionDiffusionGridConfig } from '../types/gridConfigs';
2
+ import type { ChladniGridConfig, CircuitGridConfig, ContourGridConfig, FlowNetGridConfig, FractalGridConfig, HexGridConfig, HyperbolicGridConfig, MoireGridConfig, QuasiGridConfig, RadarGridConfig, VoronoiGridConfig, GravWaveGridConfig, GirihGridConfig, WallpaperGridConfig, ReactionDiffusionGridConfig, LensingGridConfig, ConformalGridConfig, TruchetGridConfig, PhyllotaxisGridConfig, ParastichyGridConfig, ApollonianGridConfig, HilbertGridConfig } from '../types/gridConfigs';
3
3
  import React from "react";
4
4
  import type { AnimationOptions, GridConfig, MouseMoveDomain, MyGridConfig } from "@3driseai/3drise-core";
5
5
  /** Every grid config this generator knows how to render. */
6
- export type GridGeneratorConfig = GridConfig | MyGridConfig | HexGridConfig | CircuitGridConfig | VoronoiGridConfig | RadarGridConfig | MoireGridConfig | FractalGridConfig | ContourGridConfig | QuasiGridConfig | FlowNetGridConfig | ChladniGridConfig | HyperbolicGridConfig | GravWaveGridConfig | GirihGridConfig | WallpaperGridConfig | ReactionDiffusionGridConfig;
6
+ export type GridGeneratorConfig = GridConfig | MyGridConfig | HexGridConfig | CircuitGridConfig | VoronoiGridConfig | RadarGridConfig | MoireGridConfig | FractalGridConfig | ContourGridConfig | QuasiGridConfig | FlowNetGridConfig | ChladniGridConfig | HyperbolicGridConfig | GravWaveGridConfig | GirihGridConfig | WallpaperGridConfig | ReactionDiffusionGridConfig | LensingGridConfig | ConformalGridConfig | TruchetGridConfig | PhyllotaxisGridConfig | ParastichyGridConfig | ApollonianGridConfig | HilbertGridConfig;
7
7
  type GridGeneratorProps = ObjectReadyProps & {
8
8
  config: GridGeneratorConfig & {
9
9
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GridsGenerator.d.ts","sourceRoot":"","sources":["../../src/components/GridsGenerator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAkB9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzG,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GACzB,UAAU,GACV,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,2BAA2B,CAAC;AAElC,KAAK,kBAAkB,GAAG,gBAAgB,GAAG;IACzC,MAAM,EAAE,mBAAmB,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B,CAAC;AAGF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+C/C,CAAC;AACF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"GridsGenerator.d.ts","sourceRoot":"","sources":["../../src/components/GridsGenerator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACpB,MAAM,sBAAsB,CAAC;AAyB9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzG,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GACzB,UAAU,GACV,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,2BAA2B,GAC3B,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,CAAC;AAExB,KAAK,kBAAkB,GAAG,gBAAgB,GAAG;IACzC,MAAM,EAAE,mBAAmB,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B,CAAC;AAGF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6D/C,CAAC;AACF,eAAe,aAAa,CAAC"}
@@ -18,6 +18,13 @@ import GravWaveGrid from "./GravWaveGrid.js";
18
18
  import GirihGrid from "./GirihGrid.js";
19
19
  import WallpaperGrid from "./WallpaperGrid.js";
20
20
  import ReactionDiffusionGrid from "./ReactionDiffusionGrid.js";
21
+ import LensingGrid from "./LensingGrid.js";
22
+ import ConformalGrid from "./ConformalGrid.js";
23
+ import TruchetGrid from "./TruchetGrid.js";
24
+ import PhyllotaxisGrid from "./PhyllotaxisGrid.js";
25
+ import ParastichyGrid from "./ParastichyGrid.js";
26
+ import ApollonianGrid from "./ApollonianGrid.js";
27
+ import HilbertGrid from "./HilbertGrid.js";
21
28
  const GridGenerator = ({ config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
22
29
  // The other branches render components that report themselves; the
23
30
  // native <gridHelper> is a plain three object, so this component holds its
@@ -62,6 +69,20 @@ const GridGenerator = ({ config, id, keyframes, mouseMove, onObjectReady, onObje
62
69
  return _jsx(WallpaperGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
63
70
  case "reactionDiffusionGrid":
64
71
  return _jsx(ReactionDiffusionGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
72
+ case "lensingGrid":
73
+ return _jsx(LensingGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
74
+ case "conformalGrid":
75
+ return _jsx(ConformalGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
76
+ case "truchetGrid":
77
+ return _jsx(TruchetGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
78
+ case "phyllotaxisGrid":
79
+ return _jsx(PhyllotaxisGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
80
+ case "parastichyGrid":
81
+ return _jsx(ParastichyGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
82
+ case "apollonianGrid":
83
+ return _jsx(ApollonianGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
84
+ case "hilbertGrid":
85
+ return _jsx(HilbertGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
65
86
  default:
66
87
  return _jsx("gridHelper", { ...config, ref: nativeGridRef });
67
88
  }
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { HilbertGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface HilbertGridProps extends ObjectReadyProps {
6
+ config?: HilbertGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** HilbertGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultHilbertGridConfig: HilbertGridConfig;
17
+ /**
18
+ * A closed Moore curve — four Hilbert curves joined into one loop — threads every cell once while keeping neighbours on the line neighbours on the plane. Signals with exponential trails circulate along it; the accent is the same curve one level coarser.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function HilbertGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: HilbertGridProps): import("react").JSX.Element;
24
+ export default HilbertGrid;
25
+ //# sourceMappingURL=HilbertGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HilbertGrid.d.ts","sourceRoot":"","sources":["../../src/components/HilbertGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,EAAE,iBA2BtC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BAsDxJ;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useFrame } from '@react-three/fiber';
5
+ import { useObjectReady } from '../hooks/useObjectReady.js';
6
+ import { useGridSurface } from '../hooks/useGridSurface.js';
7
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
8
+ import { withConfigDefaults } from '../utils/configAnimations.js';
9
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
10
+ import { HilbertGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
11
+ // Side-effect import registers <hilbertGridMaterial> via extend().
12
+ void HilbertGridMaterial;
13
+ /** HilbertGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
14
+ export const defaultHilbertGridConfig = {
15
+ cellSize: 0.8,
16
+ size: 50,
17
+ segments: undefined,
18
+ lineMode: 0,
19
+ cellMode: 0,
20
+ lineWidth: 1.2,
21
+ sectionSize: 8,
22
+ sectionWidth: 3,
23
+ animSpeed: 1,
24
+ animScale: 0.5,
25
+ animIntensity: 0.6,
26
+ fadeDistance: undefined,
27
+ fadeStrength: 0.7,
28
+ displace: 0,
29
+ order: 6,
30
+ signals: 12,
31
+ trail: 40,
32
+ signalSpeed: 10,
33
+ lineColor: '#2a8a5c',
34
+ sectionColor: '#1d4d37',
35
+ cellColor: '#082016',
36
+ glowColor: '#5dffb0',
37
+ bgColor: '#020805',
38
+ bgOpacity: 0,
39
+ reveal: 1,
40
+ revealDuration: 0,
41
+ };
42
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
43
+ const VARIANT = ['order', 'signals', 'trail', 'signalSpeed'];
44
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
45
+ const DERIVE = {};
46
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
47
+ const STRUCTURAL = [...GRID_STRUCTURAL, 'order', 'signals'];
48
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
49
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.hilbertGrid ?? []).map((p) => p.value));
50
+ /**
51
+ * A closed Moore curve — four Hilbert curves joined into one loop — threads every cell once while keeping neighbours on the line neighbours on the plane. Signals with exponential trails circulate along it; the accent is the same curve one level coarser.
52
+ *
53
+ * The grid always lies flat: any other orientation, and any movement of the
54
+ * whole, is the parent object's transform. Only what happens inside it animates.
55
+ */
56
+ export function HilbertGrid({ config = defaultHilbertGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
57
+ const matRef = useRef(null);
58
+ const rootRef = useRef(null);
59
+ const meshRef = useRef(null);
60
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
61
+ // The committed config over this grid's defaults: every knob has a value to render
62
+ // and for a keyframe or pointer binding to start from.
63
+ const base = useMemo(() => withConfigDefaults(defaultHilbertGridConfig, config), [config]);
64
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
65
+ const segs = segments ?? (displace > 0
66
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
67
+ : 1);
68
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
69
+ // One push point for every uniform the config owns: the committed config when the
70
+ // material mounts or the config commits, the merged one while anything overrides it.
71
+ const baseRef = useRef(base);
72
+ baseRef.current = base;
73
+ const setMaterial = useCallback((m) => {
74
+ matRef.current = m;
75
+ if (m)
76
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
77
+ }, []);
78
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
79
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
80
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
81
+ // Rate knobs are integrated here, never multiplied by time in the shader, so a
82
+ // keyframed or pointer-driven rate changes the speed without making the pattern
83
+ // jump. The knob is read from the material, i.e. the merged (driven) value.
84
+ useFrame((_, delta) => {
85
+ const u = matRef.current?.uniforms;
86
+ if (!u)
87
+ return;
88
+ const dt = Math.min(delta, 0.1) * u.u_animSpeed.value;
89
+ u.u_signalPhase.value += dt * u.u_signalSpeed.value;
90
+ });
91
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("hilbertGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, HilbertGridMaterial.key)] }) }));
92
+ }
93
+ export default HilbertGrid;
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { LensingGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface LensingGridProps extends ObjectReadyProps {
6
+ config?: LensingGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** LensingGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultLensingGridConfig: LensingGridConfig;
17
+ /**
18
+ * A square lattice seen through a point-mass gravitational lens: the thin-lens equation bends it into an Einstein ring, an inverted inner image and a dark shadow at the core.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function LensingGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: LensingGridProps): import("react").JSX.Element;
24
+ export default LensingGrid;
25
+ //# sourceMappingURL=LensingGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LensingGrid.d.ts","sourceRoot":"","sources":["../../src/components/LensingGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,EAAE,iBA0BtC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BA4CxJ;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useObjectReady } from '../hooks/useObjectReady.js';
5
+ import { useGridSurface } from '../hooks/useGridSurface.js';
6
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
7
+ import { withConfigDefaults } from '../utils/configAnimations.js';
8
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
9
+ import { LensingGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
10
+ // Side-effect import registers <lensingGridMaterial> via extend().
11
+ void LensingGridMaterial;
12
+ /** LensingGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
13
+ export const defaultLensingGridConfig = {
14
+ cellSize: 2,
15
+ size: 50,
16
+ segments: undefined,
17
+ lineMode: 1,
18
+ cellMode: 2,
19
+ lineWidth: 1.1,
20
+ sectionSize: 5,
21
+ sectionWidth: 1.8,
22
+ animSpeed: 1,
23
+ animScale: 0.6,
24
+ animIntensity: 0.6,
25
+ fadeDistance: undefined,
26
+ fadeStrength: 0.7,
27
+ displace: 0,
28
+ mass: 4,
29
+ orbit: 0,
30
+ ringGlow: 0.8,
31
+ lineColor: '#2b4f80',
32
+ sectionColor: '#9fd0ff',
33
+ cellColor: '#0b1a33',
34
+ glowColor: '#ffcf8a',
35
+ bgColor: '#02040a',
36
+ bgOpacity: 0,
37
+ reveal: 1,
38
+ revealDuration: 0,
39
+ };
40
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
41
+ const VARIANT = ['mass', 'orbit', 'ringGlow'];
42
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
43
+ const DERIVE = {};
44
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
45
+ const STRUCTURAL = [...GRID_STRUCTURAL];
46
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
47
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.lensingGrid ?? []).map((p) => p.value));
48
+ /**
49
+ * A square lattice seen through a point-mass gravitational lens: the thin-lens equation bends it into an Einstein ring, an inverted inner image and a dark shadow at the core.
50
+ *
51
+ * The grid always lies flat: any other orientation, and any movement of the
52
+ * whole, is the parent object's transform. Only what happens inside it animates.
53
+ */
54
+ export function LensingGrid({ config = defaultLensingGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
55
+ const matRef = useRef(null);
56
+ const rootRef = useRef(null);
57
+ const meshRef = useRef(null);
58
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
59
+ // The committed config over this grid's defaults: every knob has a value to render
60
+ // and for a keyframe or pointer binding to start from.
61
+ const base = useMemo(() => withConfigDefaults(defaultLensingGridConfig, config), [config]);
62
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
63
+ const segs = segments ?? (displace > 0
64
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
65
+ : 1);
66
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
67
+ // One push point for every uniform the config owns: the committed config when the
68
+ // material mounts or the config commits, the merged one while anything overrides it.
69
+ const baseRef = useRef(base);
70
+ baseRef.current = base;
71
+ const setMaterial = useCallback((m) => {
72
+ matRef.current = m;
73
+ if (m)
74
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
75
+ }, []);
76
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
77
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
78
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
79
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("lensingGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, LensingGridMaterial.key)] }) }));
80
+ }
81
+ export default LensingGrid;
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { ParastichyGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface ParastichyGridProps extends ObjectReadyProps {
6
+ config?: ParastichyGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** ParastichyGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultParastichyGridConfig: ParastichyGridConfig;
17
+ /**
18
+ * The sunflower's crossed Fibonacci spiral families as a grid of their own: sectionSize spirals one way, sectionSize/φ the other, every crossing a seed, and the difference family cutting each cell into triangles. Light runs inward along the spirals.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function ParastichyGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: ParastichyGridProps): import("react").JSX.Element;
24
+ export default ParastichyGrid;
25
+ //# sourceMappingURL=ParastichyGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParastichyGrid.d.ts","sourceRoot":"","sources":["../../src/components/ParastichyGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,EAAE,oBA2BzC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAoC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,mBAAmB,+BA4CjK;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useObjectReady } from '../hooks/useObjectReady.js';
5
+ import { useGridSurface } from '../hooks/useGridSurface.js';
6
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
7
+ import { withConfigDefaults } from '../utils/configAnimations.js';
8
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
9
+ import { ParastichyGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
10
+ // Side-effect import registers <parastichyGridMaterial> via extend().
11
+ void ParastichyGridMaterial;
12
+ /** ParastichyGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
13
+ export const defaultParastichyGridConfig = {
14
+ cellSize: 1.2,
15
+ size: 50,
16
+ segments: undefined,
17
+ lineMode: 0,
18
+ cellMode: 0,
19
+ lineWidth: 1.1,
20
+ sectionSize: 21,
21
+ sectionWidth: 0.9,
22
+ animSpeed: 1,
23
+ animScale: 0.5,
24
+ animIntensity: 0.6,
25
+ fadeDistance: undefined,
26
+ fadeStrength: 0.5,
27
+ displace: 0,
28
+ divergence: 137.508,
29
+ third: 0.45,
30
+ sap: 0.9,
31
+ fill: 0.35,
32
+ lineColor: '#d4ac4e',
33
+ sectionColor: '#7fb8a8',
34
+ cellColor: '#0f3a33',
35
+ glowColor: '#fff0b8',
36
+ bgColor: '#03080a',
37
+ bgOpacity: 0,
38
+ reveal: 1,
39
+ revealDuration: 0,
40
+ };
41
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
42
+ const VARIANT = ['divergence', 'third', 'sap', 'fill'];
43
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
44
+ const DERIVE = {};
45
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
46
+ const STRUCTURAL = [...GRID_STRUCTURAL];
47
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
48
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.parastichyGrid ?? []).map((p) => p.value));
49
+ /**
50
+ * The sunflower's crossed Fibonacci spiral families as a grid of their own: sectionSize spirals one way, sectionSize/φ the other, every crossing a seed, and the difference family cutting each cell into triangles. Light runs inward along the spirals.
51
+ *
52
+ * The grid always lies flat: any other orientation, and any movement of the
53
+ * whole, is the parent object's transform. Only what happens inside it animates.
54
+ */
55
+ export function ParastichyGrid({ config = defaultParastichyGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
56
+ const matRef = useRef(null);
57
+ const rootRef = useRef(null);
58
+ const meshRef = useRef(null);
59
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
60
+ // The committed config over this grid's defaults: every knob has a value to render
61
+ // and for a keyframe or pointer binding to start from.
62
+ const base = useMemo(() => withConfigDefaults(defaultParastichyGridConfig, config), [config]);
63
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
64
+ const segs = segments ?? (displace > 0
65
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
66
+ : 1);
67
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
68
+ // One push point for every uniform the config owns: the committed config when the
69
+ // material mounts or the config commits, the merged one while anything overrides it.
70
+ const baseRef = useRef(base);
71
+ baseRef.current = base;
72
+ const setMaterial = useCallback((m) => {
73
+ matRef.current = m;
74
+ if (m)
75
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
76
+ }, []);
77
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
78
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
79
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
80
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("parastichyGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, ParastichyGridMaterial.key)] }) }));
81
+ }
82
+ export default ParastichyGrid;
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { PhyllotaxisGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface PhyllotaxisGridProps extends ObjectReadyProps {
6
+ config?: PhyllotaxisGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** PhyllotaxisGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultPhyllotaxisGridConfig: PhyllotaxisGridConfig;
17
+ /**
18
+ * Vogel's sunflower: florets at the golden angle, each a lit dome coloured by age and carrying a mark aligned to the head's radius. Bloom rings travel from the rim to the centre and open the marks; the head itself never turns.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function PhyllotaxisGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: PhyllotaxisGridProps): import("react").JSX.Element;
24
+ export default PhyllotaxisGrid;
25
+ //# sourceMappingURL=PhyllotaxisGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhyllotaxisGrid.d.ts","sourceRoot":"","sources":["../../src/components/PhyllotaxisGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,EAAE,qBA6B1C,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAqC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,oBAAoB,+BAsDpK;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useFrame } from '@react-three/fiber';
5
+ import { useObjectReady } from '../hooks/useObjectReady.js';
6
+ import { useGridSurface } from '../hooks/useGridSurface.js';
7
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
8
+ import { withConfigDefaults } from '../utils/configAnimations.js';
9
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
10
+ import { PhyllotaxisGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
11
+ // Side-effect import registers <phyllotaxisGridMaterial> via extend().
12
+ void PhyllotaxisGridMaterial;
13
+ /** PhyllotaxisGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
14
+ export const defaultPhyllotaxisGridConfig = {
15
+ cellSize: 1.6,
16
+ size: 50,
17
+ segments: undefined,
18
+ lineMode: 0,
19
+ cellMode: 0,
20
+ lineWidth: 0.6,
21
+ sectionSize: 2,
22
+ sectionWidth: 1.4,
23
+ animSpeed: 1,
24
+ animScale: 0.5,
25
+ animIntensity: 0.6,
26
+ fadeDistance: undefined,
27
+ fadeStrength: 0.6,
28
+ displace: 0,
29
+ divergence: 137.508,
30
+ bloomRate: 0.04,
31
+ relief: 0.8,
32
+ shape: 1,
33
+ shapeSize: 0.85,
34
+ shapeGlow: 0.9,
35
+ lineColor: '#a8661c',
36
+ sectionColor: '#ffcf70',
37
+ cellColor: '#3a1a08',
38
+ glowColor: '#e4ee8a',
39
+ bgColor: '#070402',
40
+ bgOpacity: 0,
41
+ reveal: 1,
42
+ revealDuration: 0,
43
+ };
44
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
45
+ const VARIANT = ['divergence', 'bloomRate', 'relief', 'shape', 'shapeSize', 'shapeGlow'];
46
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
47
+ const DERIVE = {};
48
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
49
+ const STRUCTURAL = [...GRID_STRUCTURAL, 'shape'];
50
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
51
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.phyllotaxisGrid ?? []).map((p) => p.value));
52
+ /**
53
+ * Vogel's sunflower: florets at the golden angle, each a lit dome coloured by age and carrying a mark aligned to the head's radius. Bloom rings travel from the rim to the centre and open the marks; the head itself never turns.
54
+ *
55
+ * The grid always lies flat: any other orientation, and any movement of the
56
+ * whole, is the parent object's transform. Only what happens inside it animates.
57
+ */
58
+ export function PhyllotaxisGrid({ config = defaultPhyllotaxisGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
59
+ const matRef = useRef(null);
60
+ const rootRef = useRef(null);
61
+ const meshRef = useRef(null);
62
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
63
+ // The committed config over this grid's defaults: every knob has a value to render
64
+ // and for a keyframe or pointer binding to start from.
65
+ const base = useMemo(() => withConfigDefaults(defaultPhyllotaxisGridConfig, config), [config]);
66
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
67
+ const segs = segments ?? (displace > 0
68
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
69
+ : 1);
70
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
71
+ // One push point for every uniform the config owns: the committed config when the
72
+ // material mounts or the config commits, the merged one while anything overrides it.
73
+ const baseRef = useRef(base);
74
+ baseRef.current = base;
75
+ const setMaterial = useCallback((m) => {
76
+ matRef.current = m;
77
+ if (m)
78
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
79
+ }, []);
80
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
81
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
82
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
83
+ // Rate knobs are integrated here, never multiplied by time in the shader, so a
84
+ // keyframed or pointer-driven rate changes the speed without making the pattern
85
+ // jump. The knob is read from the material, i.e. the merged (driven) value.
86
+ useFrame((_, delta) => {
87
+ const u = matRef.current?.uniforms;
88
+ if (!u)
89
+ return;
90
+ const dt = Math.min(delta, 0.1) * u.u_animSpeed.value;
91
+ u.u_bloomPhase.value += dt * u.u_bloomRate.value;
92
+ });
93
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("phyllotaxisGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, PhyllotaxisGridMaterial.key)] }) }));
94
+ }
95
+ export default PhyllotaxisGrid;
@@ -0,0 +1,25 @@
1
+ import type { ThreeElements } from '@react-three/fiber';
2
+ import type { ObjectReadyProps } from '../types/objectReady';
3
+ import type { TruchetGridConfig } from '../types/gridConfigs';
4
+ import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
5
+ export interface TruchetGridProps extends ObjectReadyProps {
6
+ config?: TruchetGridConfig;
7
+ groupProps?: ThreeElements['group'];
8
+ /** Scene object id: the live-edit handle is found by it. */
9
+ id?: string;
10
+ /** Keyframes on this grid's config knobs (animations.grid.animations). */
11
+ keyframes?: AnimationOptions[];
12
+ /** Pointer bindings on this grid's config knobs (mouseMove.grid). */
13
+ mouseMove?: MouseMoveDomain;
14
+ }
15
+ /** TruchetGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
16
+ export declare const defaultTruchetGridConfig: TruchetGridConfig;
17
+ /**
18
+ * Smith quarter-circle Truchet tiles: arcs always meet arcs, so the plane fills with endless two-coloured loops. Tiles re-deal by turning a quarter turn, and comets travel the loops in one direction.
19
+ *
20
+ * The grid always lies flat: any other orientation, and any movement of the
21
+ * whole, is the parent object's transform. Only what happens inside it animates.
22
+ */
23
+ export declare function TruchetGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: TruchetGridProps): import("react").JSX.Element;
24
+ export default TruchetGrid;
25
+ //# sourceMappingURL=TruchetGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TruchetGrid.d.ts","sourceRoot":"","sources":["../../src/components/TruchetGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,EAAE,iBA2BtC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BA4CxJ;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useObjectReady } from '../hooks/useObjectReady.js';
5
+ import { useGridSurface } from '../hooks/useGridSurface.js';
6
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
7
+ import { withConfigDefaults } from '../utils/configAnimations.js';
8
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
9
+ import { TruchetGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
10
+ // Side-effect import registers <truchetGridMaterial> via extend().
11
+ void TruchetGridMaterial;
12
+ /** TruchetGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
13
+ export const defaultTruchetGridConfig = {
14
+ cellSize: 3,
15
+ size: 50,
16
+ segments: undefined,
17
+ lineMode: 0,
18
+ cellMode: 0,
19
+ lineWidth: 1.3,
20
+ sectionSize: 4,
21
+ sectionWidth: 1.2,
22
+ animSpeed: 1,
23
+ animScale: 0.5,
24
+ animIntensity: 0.6,
25
+ fadeDistance: undefined,
26
+ fadeStrength: 0.7,
27
+ displace: 0,
28
+ flip: 0.25,
29
+ bias: 0.5,
30
+ pulse: 0.8,
31
+ regionFill: 0.8,
32
+ lineColor: '#a052e0',
33
+ sectionColor: '#4a2a66',
34
+ cellColor: '#2a0f45',
35
+ glowColor: '#ff7ad9',
36
+ bgColor: '#07030d',
37
+ bgOpacity: 0,
38
+ reveal: 1,
39
+ revealDuration: 0,
40
+ };
41
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
42
+ const VARIANT = ['flip', 'bias', 'pulse', 'regionFill'];
43
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
44
+ const DERIVE = {};
45
+ /** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
46
+ const STRUCTURAL = [...GRID_STRUCTURAL];
47
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
48
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.truchetGrid ?? []).map((p) => p.value));
49
+ /**
50
+ * Smith quarter-circle Truchet tiles: arcs always meet arcs, so the plane fills with endless two-coloured loops. Tiles re-deal by turning a quarter turn, and comets travel the loops in one direction.
51
+ *
52
+ * The grid always lies flat: any other orientation, and any movement of the
53
+ * whole, is the parent object's transform. Only what happens inside it animates.
54
+ */
55
+ export function TruchetGrid({ config = defaultTruchetGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
56
+ const matRef = useRef(null);
57
+ const rootRef = useRef(null);
58
+ const meshRef = useRef(null);
59
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
60
+ // The committed config over this grid's defaults: every knob has a value to render
61
+ // and for a keyframe or pointer binding to start from.
62
+ const base = useMemo(() => withConfigDefaults(defaultTruchetGridConfig, config), [config]);
63
+ const { cellSize, size, segments, displace, reveal, revealDuration } = base;
64
+ const segs = segments ?? (displace > 0
65
+ ? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
66
+ : 1);
67
+ useGridSurface(matRef, meshRef, { reveal, revealDuration });
68
+ // One push point for every uniform the config owns: the committed config when the
69
+ // material mounts or the config commits, the merged one while anything overrides it.
70
+ const baseRef = useRef(base);
71
+ baseRef.current = base;
72
+ const setMaterial = useCallback((m) => {
73
+ matRef.current = m;
74
+ if (m)
75
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
76
+ }, []);
77
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
78
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
79
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
80
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("truchetGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, TruchetGridMaterial.key)] }) }));
81
+ }
82
+ export default TruchetGrid;
@@ -24,6 +24,13 @@ export type { GravWaveGridProps } from './GravWaveGrid';
24
24
  export type { GirihGridProps } from './GirihGrid';
25
25
  export type { WallpaperGridProps } from './WallpaperGrid';
26
26
  export type { ReactionDiffusionGridProps } from './ReactionDiffusionGrid';
27
+ export type { LensingGridProps } from './LensingGrid';
28
+ export type { ConformalGridProps } from './ConformalGrid';
29
+ export type { TruchetGridProps } from './TruchetGrid';
30
+ export type { PhyllotaxisGridProps } from './PhyllotaxisGrid';
31
+ export type { ParastichyGridProps } from './ParastichyGrid';
32
+ export type { ApollonianGridProps } from './ApollonianGrid';
33
+ export type { HilbertGridProps } from './HilbertGrid';
27
34
  export type { FlowNetGridProps } from './FlowNetGrid';
28
35
  export type { ChladniGridProps } from './ChladniGrid';
29
36
  export type { HyperbolicGridProps } from './HyperbolicGrid';
@@ -112,6 +119,13 @@ export { GravWaveGrid, defaultGravWaveGridConfig } from './GravWaveGrid';
112
119
  export { GirihGrid, defaultGirihGridConfig } from './GirihGrid';
113
120
  export { WallpaperGrid, defaultWallpaperGridConfig } from './WallpaperGrid';
114
121
  export { ReactionDiffusionGrid, defaultReactionDiffusionGridConfig } from './ReactionDiffusionGrid';
122
+ export { LensingGrid, defaultLensingGridConfig } from './LensingGrid';
123
+ export { ConformalGrid, defaultConformalGridConfig } from './ConformalGrid';
124
+ export { TruchetGrid, defaultTruchetGridConfig } from './TruchetGrid';
125
+ export { PhyllotaxisGrid, defaultPhyllotaxisGridConfig } from './PhyllotaxisGrid';
126
+ export { ParastichyGrid, defaultParastichyGridConfig } from './ParastichyGrid';
127
+ export { ApollonianGrid, defaultApollonianGridConfig } from './ApollonianGrid';
128
+ export { HilbertGrid, defaultHilbertGridConfig } from './HilbertGrid';
115
129
  export { default as ModelBoundary } from './ModelBoundary';
116
130
  export { default as ModelPrimitive } from './ModelPrimitive';
117
131
  export { default as ObjectNode } from './ObjectNode';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,gBAAgB,IAAI,gBAAgB,EACpC,UAAU,EACV,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtD,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AAIzB,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC"}
@@ -50,6 +50,13 @@ export { GravWaveGrid, defaultGravWaveGridConfig } from './GravWaveGrid.js';
50
50
  export { GirihGrid, defaultGirihGridConfig } from './GirihGrid.js';
51
51
  export { WallpaperGrid, defaultWallpaperGridConfig } from './WallpaperGrid.js';
52
52
  export { ReactionDiffusionGrid, defaultReactionDiffusionGridConfig } from './ReactionDiffusionGrid.js';
53
+ export { LensingGrid, defaultLensingGridConfig } from './LensingGrid.js';
54
+ export { ConformalGrid, defaultConformalGridConfig } from './ConformalGrid.js';
55
+ export { TruchetGrid, defaultTruchetGridConfig } from './TruchetGrid.js';
56
+ export { PhyllotaxisGrid, defaultPhyllotaxisGridConfig } from './PhyllotaxisGrid.js';
57
+ export { ParastichyGrid, defaultParastichyGridConfig } from './ParastichyGrid.js';
58
+ export { ApollonianGrid, defaultApollonianGridConfig } from './ApollonianGrid.js';
59
+ export { HilbertGrid, defaultHilbertGridConfig } from './HilbertGrid.js';
53
60
  export { default as ModelBoundary } from './ModelBoundary.js';
54
61
  export { default as ModelPrimitive } from './ModelPrimitive.js';
55
62
  export { default as ObjectNode } from './ObjectNode.js';
@@ -1,3 +1,3 @@
1
- export declare const dataCenterServer = "http://localhost:3001/api/data/";
1
+ export declare const dataCenterServer = "https://3drise.ai/api/data/";
2
2
  export declare const SELF_MANAGED_MATERIAL: Set<string>;
3
3
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,oCAA2B,CAAC;AACzD,eAAO,MAAM,qBAAqB,aAehC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAC9D,eAAO,MAAM,qBAAqB,aAehC,CAAC"}
package/dist/constants.js CHANGED
@@ -3,7 +3,7 @@ const PRODUCTION_DATA_CENTER_SERVER = 'https://3drise.ai/api/data/';
3
3
  const isLocalHostRuntime = typeof window !== 'undefined' &&
4
4
  (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1');
5
5
  // export const dataCenterServer = isLocalHostRuntime ? LOCAL_DATA_CENTER_SERVER : PRODUCTION_DATA_CENTER_SERVER;
6
- export const dataCenterServer = LOCAL_DATA_CENTER_SERVER;
6
+ export const dataCenterServer = PRODUCTION_DATA_CENTER_SERVER;
7
7
  export const SELF_MANAGED_MATERIAL = new Set([
8
8
  // The landscape owns its shader: splat arrays, height blending and the
9
9
  // heightmap displacement are the material. useMaterialApplication would
@@ -266,6 +266,95 @@ export interface ReactionDiffusionGridConfig extends GridSurfaceConfig {
266
266
  /** Cells covered by one simulation tile before it repeats. */
267
267
  tileCells: number;
268
268
  }
269
+ /**
270
+ * The shared surface for grids that always lie flat and leave pointer behaviour
271
+ * to the Pointer tab: orientation is the parent object's transform, so there is
272
+ * no `flat`, and there is no `followMouse` (u_focus stays at the origin).
273
+ */
274
+ export type GridSurfaceBaseConfig = Omit<GridSurfaceConfig, 'flat' | 'followMouse'>;
275
+ /** A square lattice seen through a point-mass gravitational lens: the thin-lens equation bends it into an Einstein ring, an inverted inner image and a dark shadow at the core. */
276
+ export interface LensingGridConfig extends GridSurfaceBaseConfig {
277
+ /** Einstein radius of the lens, in cells; 0 leaves the lattice undistorted */
278
+ mass: number;
279
+ /** Radius the lens circles the centre on, in cells; 0 holds it at the centre */
280
+ orbit: number;
281
+ /** Brightness of the Einstein ring and its halo */
282
+ ringGlow: number;
283
+ }
284
+ /** A square lattice pulled back through an ideal-flow complex potential. Cauchy–Riemann keeps every cell square; colour is the flow speed, alternate stream tubes carry dye and hydrogen-bubble dashes ride the flow. */
285
+ export interface ConformalGridConfig extends GridSurfaceBaseConfig {
286
+ /** The flow: 0 source + sink, 1 spiral vortex, 2 spinning cylinder, 3 corner */
287
+ flowMap: number;
288
+ /** Distance from the centre to the poles, or the cylinder radius, in world units */
289
+ poleSpread: number;
290
+ /** Lattice lines per turn round a pole (whole number, so the log seam closes) */
291
+ spokes: number;
292
+ /** Spiral arms of the vortex flow; 0 gives a plain polar web */
293
+ arms: number;
294
+ /** Circulation round the cylinder (lift); at ±2 both stagnation points meet */
295
+ circulation: number;
296
+ /** How fast the lattice streams along the flow; negative reverses it */
297
+ drift: number;
298
+ /** Strength of the speed-coloured stream-tube fill */
299
+ fill: number;
300
+ /** Brightness of the dashes carried along the streamlines */
301
+ dye: number;
302
+ }
303
+ /** Smith quarter-circle Truchet tiles: arcs always meet arcs, so the plane fills with endless two-coloured loops. Tiles re-deal by turning a quarter turn, and comets travel the loops in one direction. */
304
+ export interface TruchetGridConfig extends GridSurfaceBaseConfig {
305
+ /** Chance a tile re-deals its orientation each epoch; 0 freezes the paths */
306
+ flip: number;
307
+ /** Balance of the two tile orientations: 0.5 is a maze, the ends are stripes */
308
+ bias: number;
309
+ /** Brightness of the comets travelling the loops */
310
+ pulse: number;
311
+ /** Fill of one colour of the two-colouring */
312
+ regionFill: number;
313
+ }
314
+ /** Vogel's sunflower: florets at the golden angle, each a lit dome coloured by age and carrying a mark aligned to the head's radius. Bloom rings travel from the rim to the centre and open the marks; the head itself never turns. */
315
+ export interface PhyllotaxisGridConfig extends GridSurfaceBaseConfig {
316
+ /** Angle between successive seeds, degrees; 137.508 is the golden angle */
317
+ divergence: number;
318
+ /** Speed of the bloom rings travelling rim to centre; negative reverses them */
319
+ bloomRate: number;
320
+ /** Depth of the lit dome on each floret */
321
+ relief: number;
322
+ /** The mark each floret carries (0 draws only the domes) */
323
+ shape: number;
324
+ /** Size of the mark relative to its floret */
325
+ shapeSize: number;
326
+ /** Brightness of the marks */
327
+ shapeGlow: number;
328
+ }
329
+ /** The sunflower's crossed Fibonacci spiral families as a grid of their own: sectionSize spirals one way, sectionSize/φ the other, every crossing a seed, and the difference family cutting each cell into triangles. Light runs inward along the spirals. */
330
+ export interface ParastichyGridConfig extends GridSurfaceBaseConfig {
331
+ /** Angle between successive seeds, degrees; 137.508 is the golden angle */
332
+ divergence: number;
333
+ /** Weight of the third spiral family that splits cells into triangles */
334
+ third: number;
335
+ /** Brightness of the light running inward along the spirals */
336
+ sap: number;
337
+ /** Strength of the faceted cell fill */
338
+ fill: number;
339
+ }
340
+ /** An Apollonian gasket by circle inversion: a point is walked out of nested gaps through the four dual circles, so every tangent circle gets a pixel-true rim. A slow Möbius disk flow re-balances the packing while every tangency holds. */
341
+ export interface ApollonianGridConfig extends GridSurfaceBaseConfig {
342
+ /** Inversion levels: how deep the packing nests */
343
+ depth: number;
344
+ /** Strength of the Möbius flow that re-balances the packing; 0 holds it symmetric */
345
+ morph: number;
346
+ }
347
+ /** A closed Moore curve — four Hilbert curves joined into one loop — threads every cell once while keeping neighbours on the line neighbours on the plane. Signals with exponential trails circulate along it; the accent is the same curve one level coarser. */
348
+ export interface HilbertGridConfig extends GridSurfaceBaseConfig {
349
+ /** Curve order: the loop covers 2^order cells per side */
350
+ order: number;
351
+ /** Signals circulating round the loop */
352
+ signals: number;
353
+ /** Length of each signal trail, in cells */
354
+ trail: number;
355
+ /** Signal speed, in cells per second */
356
+ signalSpeed: number;
357
+ }
269
358
  export type AnyGridConfig = (HexGridConfig & {
270
359
  type: 'hexGrid';
271
360
  }) | (CircuitGridConfig & {
@@ -296,5 +385,19 @@ export type AnyGridConfig = (HexGridConfig & {
296
385
  type: 'wallpaperGrid';
297
386
  }) | (ReactionDiffusionGridConfig & {
298
387
  type: 'reactionDiffusionGrid';
388
+ }) | (LensingGridConfig & {
389
+ type: 'lensingGrid';
390
+ }) | (ConformalGridConfig & {
391
+ type: 'conformalGrid';
392
+ }) | (TruchetGridConfig & {
393
+ type: 'truchetGrid';
394
+ }) | (PhyllotaxisGridConfig & {
395
+ type: 'phyllotaxisGrid';
396
+ }) | (ParastichyGridConfig & {
397
+ type: 'parastichyGrid';
398
+ }) | (ApollonianGridConfig & {
399
+ type: 'apollonianGrid';
400
+ }) | (HilbertGridConfig & {
401
+ type: 'hilbertGrid';
299
402
  });
300
403
  //# sourceMappingURL=gridConfigs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gridConfigs.d.ts","sourceRoot":"","sources":["../../src/types/gridConfigs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridConfigs.d.ts","sourceRoot":"","sources":["../../src/types/gridConfigs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export type { ObjectReadyProps, ObjectReadySource, OnObjectDispose, OnObjectReady, } from './objectReady';
2
- export type { AnyGridConfig, ChladniGridConfig, CircuitGridConfig, ContourGridConfig, FlowNetGridConfig, FractalGridConfig, GridCellMode, GridLineMode, GridSurfaceConfig, HexGridConfig, HyperbolicGridConfig, MoireGridConfig, QuasiGridConfig, RadarGridConfig, VoronoiGridConfig, GravWaveGridConfig, GirihGridConfig, WallpaperGridConfig, ReactionDiffusionGridConfig, } from './gridConfigs';
2
+ export type { AnyGridConfig, ChladniGridConfig, CircuitGridConfig, ContourGridConfig, FlowNetGridConfig, FractalGridConfig, GridCellMode, GridLineMode, GridSurfaceConfig, HexGridConfig, HyperbolicGridConfig, MoireGridConfig, QuasiGridConfig, RadarGridConfig, VoronoiGridConfig, GravWaveGridConfig, GirihGridConfig, WallpaperGridConfig, ReactionDiffusionGridConfig, GridSurfaceBaseConfig, LensingGridConfig, ConformalGridConfig, TruchetGridConfig, PhyllotaxisGridConfig, ParastichyGridConfig, ApollonianGridConfig, HilbertGridConfig, } from './gridConfigs';
3
3
  export type { CirrusLayerConfig, CloudAnimatableProperty, CloudDeckConfig, CloudDeckSurfaceConfig, CloudDeckType, CloudPropertyGroup, CloudPropertySchema, CloudsQualityConfig, ThunderConfig, VolumetricCloudsSettings, } from '@3driseai/3drise-core';
4
4
  export type { ProceduralTerrainSettings, TerrainConfig, TerrainPropertyGroup, TerrainPropertySchema, TerrainQualityConfig, TerrainSurfaceConfig, TerrainType, } from '@3driseai/3drise-core';
5
5
  export { TERRAIN_DEFAULTS, TERRAIN_QUALITY_SCHEMA, TERRAIN_SCHEMA, defaultCanyonConfig, defaultDunesConfig, defaultHillsConfig, defaultMountainsConfig, defaultProceduralTerrainSettings, defaultTerrainQuality, normalizeTerrain, normalizeTerrainQuality, normalizeTerrainSettings, } from '@3driseai/3drise-core';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3driseai/3drise-viewer",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -39,6 +39,6 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@3driseai/3drise-common": "^1.0.1",
42
- "@3driseai/3drise-core": "^1.0.20"
42
+ "@3driseai/3drise-core": "^1.0.21"
43
43
  }
44
44
  }