abstract-3d 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,6 +26,11 @@ type ReactProps = {
26
26
  readonly orbitContolsProps?: OrbitControlsProps & React.RefAttributes<unknown>;
27
27
  readonly materialStateImages?: Record<string, string>;
28
28
  readonly sceneFallback?: React.JSX.Element;
29
+ /**
30
+ * The scene's lights, rendered in the canvas instead of the default ambient and directional lights, e.g. an environment map for reflections and a
31
+ * key light. A constant element, as a new one each render re-renders the whole scene
32
+ */
33
+ readonly lights?: React.JSX.Element;
29
34
  readonly useOldMode?: boolean;
30
35
  readonly bufferZones?: BufferZones;
31
36
  readonly fitPadding?: number;
@@ -37,6 +42,6 @@ type ReactProps = {
37
42
  readonly createGroupKey?: (g: Group, idx: number, rootData: Record<string, string> | undefined, id: string) => string;
38
43
  readonly createGroupId?: (g: Group) => string;
39
44
  };
40
- export declare const render: React.MemoExoticComponent<({ scene, selectedIds, useOldMode, activeRelations, activeComponents, hoveredIdsExternal, popovers: reactPopovers, showDimensions, useAnimations, camera, view, controlsHelper, canvasProps, orbitContolsProps, materialStateImages, sceneFallback, useAlphaTest, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, bufferZones, fitPadding, }: ReactProps) => React.JSX.Element>;
45
+ export declare const render: React.MemoExoticComponent<({ scene, selectedIds, useOldMode, activeRelations, activeComponents, hoveredIdsExternal, popovers: reactPopovers, showDimensions, useAnimations, camera, view, controlsHelper, canvasProps, orbitContolsProps, materialStateImages, sceneFallback, lights, useAlphaTest, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, bufferZones, fitPadding, }: ReactProps) => React.JSX.Element>;
41
46
  export {};
42
47
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAU,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,YAAY,CAAC,CAAC;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACtH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,MAAM,uaA4Bd,UAAU,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuFlC,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"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"}
@@ -5,29 +5,29 @@ import { EffectComposer, N8AO } from "@react-three/postprocessing";
5
5
  import React, { memo, useMemo } from "react";
6
6
  import { ReactCamera } from "./react-camera.js";
7
7
  import { ReactScene } from "./react-scene.js";
8
- export const render = memo(({ scene, selectedIds, useOldMode, activeRelations, activeComponents, hoveredIdsExternal, popovers: reactPopovers, showDimensions = true, useAnimations = false, camera = { type: "Perspective" }, view = "front", controlsHelper, canvasProps, orbitContolsProps, materialStateImages, sceneFallback, useAlphaTest = true, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, bufferZones, fitPadding, }) => {
8
+ export const render = memo(({ scene, selectedIds, useOldMode, activeRelations, activeComponents, hoveredIdsExternal, popovers: reactPopovers, showDimensions = true, useAnimations = false, camera = { type: "Perspective" }, view = "front", controlsHelper, canvasProps, orbitContolsProps, materialStateImages, sceneFallback, lights, useAlphaTest = true, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, bufferZones, fitPadding, }) => {
9
9
  const intensity = useOldMode ? 2 : 0.4;
10
10
  const suspenseFallback = useMemo(() => _jsx(Html, { center: true, children: sceneFallback ?? _jsx(_Fragment, {}) }), [sceneFallback]);
11
- return scene ? (_jsx(Canvas, { dpr: [1, window.devicePixelRatio], frameloop: "demand", ...canvasProps, children: _jsxs(React.Suspense, { fallback: suspenseFallback, children: [_jsx(ReactCamera, { bufferZones: bufferZones, fitPadding: fitPadding, scene: scene, useAnimations: useAnimations, camera: camera, view: view, controlsHelper: controlsHelper, orbitContolsProps: orbitContolsProps }), _jsx("ambientLight", { intensity: 3.5 }), _jsx("directionalLight", { position: [
12
- -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
13
- -(scene.center_deprecated?.y ?? 0) + 1.5 * scene.size_deprecated.y,
14
- -(scene.center_deprecated?.z ?? 0),
15
- ], intensity: intensity }), _jsx("directionalLight", { position: [
16
- -(scene.center_deprecated?.x ?? 0),
17
- -(scene.center_deprecated?.y ?? 0) + 1 * scene.size_deprecated.y,
18
- -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
19
- ], intensity: intensity }), _jsx("directionalLight", { position: [
20
- -(scene.center_deprecated?.x ?? 0) + 2 * scene.size_deprecated.x,
21
- -(scene.center_deprecated?.y ?? 0),
22
- -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
23
- ], intensity: intensity }), _jsx("directionalLight", { position: [
24
- -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
25
- -(scene.center_deprecated?.y ?? 0),
26
- -(scene.center_deprecated?.z ?? 0),
27
- ], intensity: 0.4 }), _jsx("directionalLight", { position: [
28
- -(scene.center_deprecated?.x ?? 0) + 1.5 * scene.size_deprecated.x,
29
- -(scene.center_deprecated?.y ?? 0),
30
- -(scene.center_deprecated?.z ?? 0),
31
- ], intensity: 0.4 }), _jsx(ReactScene, { scene: scene, selectedIds: selectedIds, activeRelations: activeRelations, activeComponents: activeComponents, showDimensions: showDimensions, hoveredIdsExternal: hoveredIdsExternal, reactPopovers: reactPopovers, materialStateImages: materialStateImages, onClickGroup: onClickGroup, onHoverGroup: onHoverGroup, onContextMenuGroup: onContextMenuGroup, getTooltips: getTooltips, onClickRelation: onClickRelation, createGroupKey: createGroupKey, createGroupId: createGroupId, useAlphaTest: useAlphaTest }), !useOldMode && (_jsx(EffectComposer, { multisampling: 8, children: _jsx(N8AO, { aoRadius: 40, denoiseSamples: 4, distanceFalloff: 0.2, intensity: 2, screenSpaceRadius: true, halfRes: true }) }))] }) })) : ((sceneFallback ?? _jsx(_Fragment, {})));
11
+ return scene ? (_jsx(Canvas, { dpr: [1, window.devicePixelRatio], frameloop: "demand", ...canvasProps, children: _jsxs(React.Suspense, { fallback: suspenseFallback, children: [_jsx(ReactCamera, { bufferZones: bufferZones, fitPadding: fitPadding, scene: scene, useAnimations: useAnimations, camera: camera, view: view, controlsHelper: controlsHelper, orbitContolsProps: orbitContolsProps }), lights ?? (_jsxs(_Fragment, { children: [_jsx("ambientLight", { intensity: 3.5 }), _jsx("directionalLight", { position: [
12
+ -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
13
+ -(scene.center_deprecated?.y ?? 0) + 1.5 * scene.size_deprecated.y,
14
+ -(scene.center_deprecated?.z ?? 0),
15
+ ], intensity: intensity }), _jsx("directionalLight", { position: [
16
+ -(scene.center_deprecated?.x ?? 0),
17
+ -(scene.center_deprecated?.y ?? 0) + 1 * scene.size_deprecated.y,
18
+ -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
19
+ ], intensity: intensity }), _jsx("directionalLight", { position: [
20
+ -(scene.center_deprecated?.x ?? 0) + 2 * scene.size_deprecated.x,
21
+ -(scene.center_deprecated?.y ?? 0),
22
+ -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
23
+ ], intensity: intensity }), _jsx("directionalLight", { position: [
24
+ -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
25
+ -(scene.center_deprecated?.y ?? 0),
26
+ -(scene.center_deprecated?.z ?? 0),
27
+ ], intensity: 0.4 }), _jsx("directionalLight", { position: [
28
+ -(scene.center_deprecated?.x ?? 0) + 1.5 * scene.size_deprecated.x,
29
+ -(scene.center_deprecated?.y ?? 0),
30
+ -(scene.center_deprecated?.z ?? 0),
31
+ ], intensity: 0.4 })] })), _jsx(ReactScene, { scene: scene, selectedIds: selectedIds, activeRelations: activeRelations, activeComponents: activeComponents, showDimensions: showDimensions, hoveredIdsExternal: hoveredIdsExternal, reactPopovers: reactPopovers, materialStateImages: materialStateImages, onClickGroup: onClickGroup, onHoverGroup: onHoverGroup, onContextMenuGroup: onContextMenuGroup, getTooltips: getTooltips, onClickRelation: onClickRelation, createGroupKey: createGroupKey, createGroupId: createGroupId, useAlphaTest: useAlphaTest }), !useOldMode && (_jsx(EffectComposer, { multisampling: 8, children: _jsx(N8AO, { aoRadius: 40, denoiseSamples: 4, distanceFalloff: 0.2, intensity: 2, screenSpaceRadius: true, halfRes: true }) }))] }) })) : ((sceneFallback ?? _jsx(_Fragment, {})));
32
32
  });
33
33
  //# sourceMappingURL=react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "abstract-3d",
3
- "version": "3.0.2",
4
- "gitHead": "90c896386ce95ad55df86a57c654feb0400bbc47",
3
+ "version": "3.1.0",
4
+ "gitHead": "f0bb8b03c033657280781c47e36fe716c18706d9",
5
5
  "description": "Abstract 3D",
6
6
  "license": "MIT",
7
7
  "author": "Divid AB <info@divid.se>",
@@ -30,6 +30,11 @@ type ReactProps = {
30
30
  readonly orbitContolsProps?: OrbitControlsProps & React.RefAttributes<unknown>;
31
31
  readonly materialStateImages?: Record<string, string>;
32
32
  readonly sceneFallback?: React.JSX.Element;
33
+ /**
34
+ * The scene's lights, rendered in the canvas instead of the default ambient and directional lights, e.g. an environment map for reflections and a
35
+ * key light. A constant element, as a new one each render re-renders the whole scene
36
+ */
37
+ readonly lights?: React.JSX.Element;
33
38
  readonly useOldMode?: boolean;
34
39
  readonly bufferZones?: BufferZones;
35
40
  readonly fitPadding?: number;
@@ -77,6 +82,7 @@ export const render = memo(
77
82
  orbitContolsProps,
78
83
  materialStateImages,
79
84
  sceneFallback,
85
+ lights,
80
86
  useAlphaTest = true,
81
87
  onClickGroup,
82
88
  onHoverGroup,
@@ -103,47 +109,51 @@ export const render = memo(
103
109
  controlsHelper={controlsHelper}
104
110
  orbitContolsProps={orbitContolsProps}
105
111
  />
106
- <ambientLight intensity={3.5} />
107
- <directionalLight
108
- position={[
109
- -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
110
- -(scene.center_deprecated?.y ?? 0) + 1.5 * scene.size_deprecated.y,
111
- -(scene.center_deprecated?.z ?? 0),
112
- ]}
113
- intensity={intensity}
114
- />
115
- <directionalLight
116
- position={[
117
- -(scene.center_deprecated?.x ?? 0),
118
- -(scene.center_deprecated?.y ?? 0) + 1 * scene.size_deprecated.y,
119
- -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
120
- ]}
121
- intensity={intensity}
122
- />
123
- <directionalLight
124
- position={[
125
- -(scene.center_deprecated?.x ?? 0) + 2 * scene.size_deprecated.x,
126
- -(scene.center_deprecated?.y ?? 0),
127
- -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
128
- ]}
129
- intensity={intensity}
130
- />
131
- <directionalLight
132
- position={[
133
- -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
134
- -(scene.center_deprecated?.y ?? 0),
135
- -(scene.center_deprecated?.z ?? 0),
136
- ]}
137
- intensity={0.4}
138
- />
139
- <directionalLight
140
- position={[
141
- -(scene.center_deprecated?.x ?? 0) + 1.5 * scene.size_deprecated.x,
142
- -(scene.center_deprecated?.y ?? 0),
143
- -(scene.center_deprecated?.z ?? 0),
144
- ]}
145
- intensity={0.4}
146
- />
112
+ {lights ?? (
113
+ <>
114
+ <ambientLight intensity={3.5} />
115
+ <directionalLight
116
+ position={[
117
+ -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
118
+ -(scene.center_deprecated?.y ?? 0) + 1.5 * scene.size_deprecated.y,
119
+ -(scene.center_deprecated?.z ?? 0),
120
+ ]}
121
+ intensity={intensity}
122
+ />
123
+ <directionalLight
124
+ position={[
125
+ -(scene.center_deprecated?.x ?? 0),
126
+ -(scene.center_deprecated?.y ?? 0) + 1 * scene.size_deprecated.y,
127
+ -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
128
+ ]}
129
+ intensity={intensity}
130
+ />
131
+ <directionalLight
132
+ position={[
133
+ -(scene.center_deprecated?.x ?? 0) + 2 * scene.size_deprecated.x,
134
+ -(scene.center_deprecated?.y ?? 0),
135
+ -(scene.center_deprecated?.z ?? 0) + 1.5 * scene.size_deprecated.z,
136
+ ]}
137
+ intensity={intensity}
138
+ />
139
+ <directionalLight
140
+ position={[
141
+ -(scene.center_deprecated?.x ?? 0) - 1.5 * scene.size_deprecated.x,
142
+ -(scene.center_deprecated?.y ?? 0),
143
+ -(scene.center_deprecated?.z ?? 0),
144
+ ]}
145
+ intensity={0.4}
146
+ />
147
+ <directionalLight
148
+ position={[
149
+ -(scene.center_deprecated?.x ?? 0) + 1.5 * scene.size_deprecated.x,
150
+ -(scene.center_deprecated?.y ?? 0),
151
+ -(scene.center_deprecated?.z ?? 0),
152
+ ]}
153
+ intensity={0.4}
154
+ />
155
+ </>
156
+ )}
147
157
 
148
158
  <ReactScene
149
159
  scene={scene}