abstract-3d 2.12.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/lib/abstract-3d.d.ts +32 -5
  2. package/lib/abstract-3d.d.ts.map +1 -1
  3. package/lib/abstract-3d.js.map +1 -1
  4. package/lib/renderers/ifc/ifc-encoding.d.ts +5 -2
  5. package/lib/renderers/ifc/ifc-encoding.d.ts.map +1 -1
  6. package/lib/renderers/ifc/ifc-encoding.js +30 -7
  7. package/lib/renderers/ifc/ifc-encoding.js.map +1 -1
  8. package/lib/renderers/ifc/ifc-geometry.d.ts +4 -0
  9. package/lib/renderers/ifc/ifc-geometry.d.ts.map +1 -1
  10. package/lib/renderers/ifc/ifc-geometry.js +8 -0
  11. package/lib/renderers/ifc/ifc-geometry.js.map +1 -1
  12. package/lib/renderers/ifc/ifc.d.ts +36 -23
  13. package/lib/renderers/ifc/ifc.d.ts.map +1 -1
  14. package/lib/renderers/ifc/ifc.js +164 -67
  15. package/lib/renderers/ifc/ifc.js.map +1 -1
  16. package/lib/renderers/react/index.d.ts +0 -1
  17. package/lib/renderers/react/index.d.ts.map +1 -1
  18. package/lib/renderers/react/index.js.map +1 -1
  19. package/lib/renderers/react/react-dimension.d.ts +2 -2
  20. package/lib/renderers/react/react-dimension.d.ts.map +1 -1
  21. package/lib/renderers/react/react-dimension.js +2 -2
  22. package/lib/renderers/react/react-dimension.js.map +1 -1
  23. package/lib/renderers/react/react-group.d.ts +3 -2
  24. package/lib/renderers/react/react-group.d.ts.map +1 -1
  25. package/lib/renderers/react/react-group.js +3 -3
  26. package/lib/renderers/react/react-group.js.map +1 -1
  27. package/lib/renderers/react/react-material.d.ts +2 -2
  28. package/lib/renderers/react/react-material.d.ts.map +1 -1
  29. package/lib/renderers/react/react-material.js +3 -3
  30. package/lib/renderers/react/react-material.js.map +1 -1
  31. package/lib/renderers/react/react-relation.d.ts +10 -0
  32. package/lib/renderers/react/react-relation.d.ts.map +1 -0
  33. package/lib/renderers/react/react-relation.js +31 -0
  34. package/lib/renderers/react/react-relation.js.map +1 -0
  35. package/lib/renderers/react/react-scene.d.ts +4 -7
  36. package/lib/renderers/react/react-scene.d.ts.map +1 -1
  37. package/lib/renderers/react/react-scene.js +4 -4
  38. package/lib/renderers/react/react-scene.js.map +1 -1
  39. package/lib/renderers/react/react.d.ts +8 -7
  40. package/lib/renderers/react/react.d.ts.map +1 -1
  41. package/lib/renderers/react/react.js +2 -2
  42. package/lib/renderers/react/react.js.map +1 -1
  43. package/package.json +2 -2
  44. package/src/abstract-3d.ts +33 -6
  45. package/src/renderers/ifc/ifc-encoding.ts +31 -7
  46. package/src/renderers/ifc/ifc-geometry.ts +12 -0
  47. package/src/renderers/ifc/ifc.test.ts +285 -101
  48. package/src/renderers/ifc/ifc.ts +313 -98
  49. package/src/renderers/react/index.ts +0 -1
  50. package/src/renderers/react/react-dimension.tsx +3 -3
  51. package/src/renderers/react/react-group.test.ts +2 -2
  52. package/src/renderers/react/react-group.tsx +5 -4
  53. package/src/renderers/react/react-material.tsx +4 -4
  54. package/src/renderers/react/react-relation.tsx +86 -0
  55. package/src/renderers/react/react-scene.tsx +9 -21
  56. package/src/renderers/react/react.tsx +11 -14
  57. package/lib/renderers/react/react-hotspot.d.ts +0 -27
  58. package/lib/renderers/react/react-hotspot.d.ts.map +0 -1
  59. package/lib/renderers/react/react-hotspot.js +0 -37
  60. package/lib/renderers/react/react-hotspot.js.map +0 -1
  61. package/src/renderers/react/react-hotspot.tsx +0 -112
@@ -1,10 +1,29 @@
1
- import type { Scene } from "../../abstract-3d.js";
2
- /** Element classes with the same attributes as IfcBuildingElementProxy (GlobalId, ..., Tag, PredefinedType) */
3
- export type IfcElementEntity = "IfcBuildingElementProxy" | "IfcUnitaryEquipment";
4
- export type IfcElementClass = {
5
- readonly entity: IfcElementEntity;
6
- /** The entity's PredefinedType, e.g. "AIRHANDLER" for IfcUnitaryEquipment, defaults to "NOTDEFINED" */
7
- readonly predefinedType?: string;
1
+ import type { Scene, Group, Relation } from "../../abstract-3d.js";
2
+ /** IFC4's PredefinedType values of the element classes, besides NOTDEFINED and USERDEFINED */
3
+ type PredefinedTypes = {
4
+ readonly IfcBuildingElementProxy: "COMPLEX" | "ELEMENT" | "PARTIAL" | "PROVISIONFORVOID" | "PROVISIONFORSPACE";
5
+ readonly IfcBuildingElementPart: "INSULATION" | "PRECASTPANEL";
6
+ readonly IfcUnitaryEquipment: "AIRHANDLER" | "AIRCONDITIONINGUNIT" | "DEHUMIDIFIER" | "SPLITSYSTEM" | "ROOFTOPUNIT";
7
+ readonly IfcFan: "CENTRIFUGALFORWARDCURVED" | "CENTRIFUGALRADIAL" | "CENTRIFUGALBACKWARDINCLINEDCURVED" | "CENTRIFUGALAIRFOIL" | "TUBEAXIAL" | "VANEAXIAL" | "PROPELLORAXIAL";
8
+ readonly IfcFilter: "AIRPARTICLEFILTER" | "COMPRESSEDAIRFILTER" | "ODORFILTER" | "OILFILTER" | "STRAINER" | "WATERFILTER";
9
+ readonly IfcCoil: "DXCOOLINGCOIL" | "ELECTRICHEATINGCOIL" | "GASHEATINGCOIL" | "HYDRONICCOIL" | "STEAMHEATINGCOIL" | "WATERCOOLINGCOIL" | "WATERHEATINGCOIL";
10
+ readonly IfcAirToAirHeatRecovery: "FIXEDPLATECOUNTERFLOWEXCHANGER" | "FIXEDPLATECROSSFLOWEXCHANGER" | "FIXEDPLATEPARALLELFLOWEXCHANGER" | "ROTARYWHEEL" | "RUNAROUNDCOILLOOP" | "HEATPIPE" | "TWINTOWERENTHALPYRECOVERYLOOPS" | "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS" | "THERMOSIPHONCOILTYPEHEATEXCHANGERS";
11
+ readonly IfcDamper: "BACKDRAFTDAMPER" | "BALANCINGDAMPER" | "BLASTDAMPER" | "CONTROLDAMPER" | "FIREDAMPER" | "FIRESMOKEDAMPER" | "FUMEHOODEXHAUST" | "GRAVITYDAMPER" | "GRAVITYRELIEFDAMPER" | "RELIEFDAMPER" | "SMOKEDAMPER";
12
+ readonly IfcDuctSilencer: "FLATOVAL" | "RECTANGULAR" | "ROUND";
13
+ readonly IfcHumidifier: "STEAMINJECTION" | "ADIABATICAIRWASHER" | "ADIABATICPAN" | "ADIABATICWETTEDELEMENT" | "ADIABATICATOMIZING" | "ADIABATICULTRASONIC" | "ADIABATICRIGIDMEDIA" | "ADIABATICCOMPRESSEDAIRNOZZLE" | "ASSISTEDELECTRIC" | "ASSISTEDNATURALGAS" | "ASSISTEDPROPANE" | "ASSISTEDBUTANE" | "ASSISTEDSTEAM";
14
+ };
15
+ /** An element class, all with the attributes GlobalId, ..., Tag, PredefinedType, and one of its PredefinedTypes, which defaults to NOTDEFINED */
16
+ export type IfcEntity = {
17
+ readonly [E in keyof PredefinedTypes]: {
18
+ readonly entity: E;
19
+ readonly predefinedType?: PredefinedTypes[E] | "NOTDEFINED";
20
+ };
21
+ }[keyof PredefinedTypes];
22
+ /** IFC4's IfcDistributionSystemEnum, the system a port belongs to, it only connects to ports of the same system */
23
+ export type IfcDistributionSystem = "AIRCONDITIONING" | "AUDIOVISUAL" | "CHEMICAL" | "CHILLEDWATER" | "COMMUNICATION" | "COMPRESSEDAIR" | "CONDENSERWATER" | "CONTROL" | "CONVEYING" | "DATA" | "DISPOSAL" | "DOMESTICCOLDWATER" | "DOMESTICHOTWATER" | "DRAINAGE" | "EARTHING" | "ELECTRICAL" | "ELECTROACOUSTIC" | "EXHAUST" | "FIREPROTECTION" | "FUEL" | "GAS" | "HAZARDOUS" | "HEATING" | "LIGHTING" | "LIGHTNINGPROTECTION" | "MUNICIPALSOLIDWASTE" | "OIL" | "OPERATIONAL" | "POWERGENERATION" | "RAINWATER" | "REFRIGERATION" | "SECURITY" | "SEWAGE" | "SIGNAL" | "STORMWATER" | "TELEPHONE" | "TV" | "VACUUM" | "VENT" | "VENTILATION" | "WASTEWATER" | "WATERSUPPLY";
24
+ export type IfcPortType = {
25
+ readonly predefinedType: "CABLE" | "CABLECARRIER" | "DUCT" | "PIPE";
26
+ readonly systemType?: IfcDistributionSystem;
8
27
  };
9
28
  export type IfcApplicationInfo = {
10
29
  readonly name: string;
@@ -21,24 +40,18 @@ export type IfcOptions = {
21
40
  readonly organization?: string;
22
41
  /** Application that produced the scene, e.g. `{ name: "airCalc ACOM", version: "10.1" }`, defaults to Abstract 3D by Divid AB */
23
42
  readonly application?: IfcApplicationInfo;
24
- /**
25
- * Wraps the whole scene in one element, e.g. `{ entity: "IfcUnitaryEquipment", predefinedType: "AIRHANDLER", name: "AHU" }`, otherwise the
26
- * top-level groups are placed directly in the storey
27
- */
28
- readonly root?: IfcElementClass & {
29
- readonly name: string;
30
- };
31
- /**
32
- * Layer of a group's shapes, from the `data` of every group from the root down to this group, this group last; groups without `data` are skipped
33
- * and the root element of `root` comes first. Undefined or "" keeps the layer of the group above
34
- */
35
- readonly layer?: (path: ReadonlyArray<Record<string, string>>) => string | undefined;
43
+ /** The class of a group that becomes an element, e.g. `{ entity: "IfcFan" }`, IfcBuildingElementProxy when undefined */
44
+ readonly entity?: (group: Group) => IfcEntity | undefined;
45
+ /** The type of a relation's ports, e.g. `{ predefinedType: "DUCT", systemType: "VENTILATION" }`, NOTDEFINED when undefined */
46
+ readonly port?: (relation: Relation) => IfcPortType | undefined;
36
47
  };
37
48
  /**
38
- * IFC4 (Reference View) with every mesh as an IfcTriangulatedFaceSet, in millimetres. Every top-level group and every group with a `data.id` or
39
- * `data.name` becomes an IfcBuildingElementProxy placed relative to its parent element and aggregated into it. Other groups are only transforms or
40
- * metadata, so their meshes are merged into the parent element. With `layer`, the face sets are assigned to an IfcPresentationLayerAssignment per
41
- * layer, the presentation layer of the Reference View
49
+ * IFC4 (Reference View) with every mesh as an IfcTriangulatedFaceSet and every line as an IfcPolyline without thickness, in millimetres. Every
50
+ * top-level group and every group with an `id` or `name` becomes an element of the class `entity` gives it, an IfcBuildingElementProxy by default,
51
+ * placed relative to its parent element and aggregated into it. Other groups are only transforms, so their meshes are merged into the parent element.
52
+ * The face sets and polylines are on an IfcPresentationLayerAssignment per `layer`. Every relation becomes an IfcDistributionPort nested in each of
53
+ * the elements of its groups, with the flow leaving `from` and entering `to`, and the two ports of a relation with both are connected
42
54
  */
43
55
  export declare function render(scene: Scene, options?: IfcOptions): string;
56
+ export {};
44
57
  //# sourceMappingURL=ifc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ifc.d.ts","sourceRoot":"","sources":["../../../src/renderers/ifc/ifc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAyB,MAAM,sBAAsB,CAAC;AAOzE,+GAA+G;AAC/G,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,qBAAqB,CAAC;AAEjF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,uGAAuG;IACvG,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,yGAAyG;IACzG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iIAAiI;IACjI,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CACtF,CAAC;AAkCF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAgDrE"}
1
+ {"version":3,"file":"ifc.d.ts","sourceRoot":"","sources":["../../../src/renderers/ifc/ifc.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import { Color, SRGBColorSpace } from "three";
2
- import { vec3Zero, vec3PosX, vec3PosY, vec3Rot, vec3TransRot, vec3RotCombine } from "../../abstract-3d.js";
2
+ import { vec3Zero, vec3PosX, vec3PosY, vec3Rot, vec3Sub, vec3TransRot, vec3RotCombine, vec3RotInverse } from "../../abstract-3d.js";
3
3
  import { add, guid, ifcFile, point, real, ref, refs, serialize, str } from "./ifc-encoding.js";
4
- import { toIfc, triangulate } from "./ifc-geometry.js";
5
- const proxyClass = { entity: "IfcBuildingElementProxy" };
4
+ import { polyline, toIfc, triangulate } from "./ifc-geometry.js";
5
+ const representationTypes = ["Tessellation", "Curve3D"];
6
6
  /**
7
- * IFC4 (Reference View) with every mesh as an IfcTriangulatedFaceSet, in millimetres. Every top-level group and every group with a `data.id` or
8
- * `data.name` becomes an IfcBuildingElementProxy placed relative to its parent element and aggregated into it. Other groups are only transforms or
9
- * metadata, so their meshes are merged into the parent element. With `layer`, the face sets are assigned to an IfcPresentationLayerAssignment per
10
- * layer, the presentation layer of the Reference View
7
+ * IFC4 (Reference View) with every mesh as an IfcTriangulatedFaceSet and every line as an IfcPolyline without thickness, in millimetres. Every
8
+ * top-level group and every group with an `id` or `name` becomes an element of the class `entity` gives it, an IfcBuildingElementProxy by default,
9
+ * placed relative to its parent element and aggregated into it. Other groups are only transforms, so their meshes are merged into the parent element.
10
+ * The face sets and polylines are on an IfcPresentationLayerAssignment per `layer`. Every relation becomes an IfcDistributionPort nested in each of
11
+ * the elements of its groups, with the flow leaving `from` and entering `to`, and the two ports of a relation with both are connected
11
12
  */
12
13
  export function render(scene, options = {}) {
13
14
  const name = options.name ?? "Abstract 3D";
@@ -20,7 +21,15 @@ export function render(scene, options = {}) {
20
21
  const world = axisPlacement(m, vec3Zero, vec3Zero);
21
22
  const context = add(m, `IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,${ref(world)},$)`);
22
23
  const body = add(m, `IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,${ref(context)},$,.MODEL_VIEW.,$)`);
23
- const c = { body, owner: (id) => `${str(guid(m, id))},${ref(ownerHistory)}`, styles: new Map(), layers: new Map() };
24
+ const c = {
25
+ body,
26
+ owner: (id) => `${str(guid(m, id))},${ref(ownerHistory)}`,
27
+ entity: options.entity,
28
+ styles: new Map(),
29
+ layers: new Map(),
30
+ elements: new Map(),
31
+ ports: new Map(),
32
+ };
24
33
  const units = [
25
34
  add(m, "IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.)"),
26
35
  add(m, "IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.)"),
@@ -39,15 +48,16 @@ export function render(scene, options = {}) {
39
48
  aggregate(m, c, building, [storey]);
40
49
  const center = scene.center_deprecated ?? vec3Zero;
41
50
  const sceneRot = scene.rotation_deprecated ?? vec3Zero;
42
- const top = { layerOf: options.layer, path: [], layer: undefined };
43
- const rootGroup = options.root && { pos: center, rot: sceneRot, groups: scene.groups, data: { name: options.root.name } };
44
- const nodes = rootGroup
45
- ? [elementNode(rootGroup, center, sceneRot, groupLayering(rootGroup, top), options.root)]
46
- : scene.groups.map((g) => elementNode(g, vec3TransRot(g.pos, center, sceneRot), vec3RotCombine(sceneRot, g.rot ?? vec3Zero), groupLayering(g, top)));
47
- const elements = nodes.flatMap((node) => node ?? []).map((node, i) => element(m, node, `${i + 1}`, storeyPlacement, c));
51
+ const elements = mergeSameId(scene.groups)
52
+ .flatMap((g) => elementNode(g, vec3TransRot(g.pos, center, sceneRot), vec3RotCombine(sceneRot, g.rot ?? vec3Zero), g.layer) ?? [])
53
+ .map((node, i) => element(m, node, `${i + 1}`, { element: storey, placement: storeyPlacement, pos: vec3Zero, rot: vec3Zero }, c));
48
54
  if (elements.length > 0) {
49
55
  add(m, `IFCRELCONTAINEDINSPATIALSTRUCTURE(${c.owner()},$,$,${refs(elements)},${ref(storey)})`);
50
56
  }
57
+ for (const relation of scene.relations ?? []) {
58
+ relationPorts(m, relation, center, sceneRot, options.port, c);
59
+ }
60
+ c.ports.forEach((ports, e) => add(m, `IFCRELNESTS(${c.owner()},$,$,${ref(e)},${refs(ports)})`));
51
61
  c.layers.forEach((items, layer) => add(m, `IFCPRESENTATIONLAYERASSIGNMENT(${str(layer)},$,${refs(items)},$)`));
52
62
  const date = now.toISOString().split(".")[0] ?? "1970-01-01T00:00:00";
53
63
  return serialize(m, { fileName: `${name}.ifc`, date, author, organization, originatingSystem: application.name });
@@ -63,85 +73,172 @@ function ownerHistoryEntity(m, author, organization, application, now) {
63
73
  const timestamp = Math.floor(now.getTime() / 1000);
64
74
  return add(m, `IFCOWNERHISTORY(${ref(user)},${ref(app)},$,.ADDED.,${timestamp},$,$,${timestamp})`);
65
75
  }
66
- /** `layering` is the group's own, see `groupLayering` */
67
- function elementNode(group, pos, rot, layering, elementClass = proxyClass) {
68
- const { meshes, children } = elementContent(group, vec3Zero, vec3Zero, layering);
69
- return meshes.length > 0 || children.length > 0 ? { group, elementClass, pos, rot, meshes, children } : undefined;
76
+ /** `layer` is the group's own or the one it inherits */
77
+ function elementNode(group, pos, rot, layer) {
78
+ const { meshes, children } = elementContent(group, vec3Zero, vec3Zero, layer);
79
+ return meshes.length > 0 || children.length > 0 ? { group, pos, rot, meshes, children } : undefined;
70
80
  }
71
81
  /**
72
- * Meshes of the group and its descendants that aren't elements, relative to the element the group is at pos/rot in, and the descendants with a
73
- * `data.id` or `data.name` as elements
82
+ * Meshes of the group and its descendants that aren't elements, relative to the element the group is at pos/rot in, and the descendants with an `id`
83
+ * or `name` as elements
74
84
  */
75
- function elementContent(group, pos, rot, layering) {
76
- const meshes = (group.meshes ?? []).flatMap((mesh) => {
77
- const triangulation = triangulate(mesh.geometry, pos, rot);
78
- return triangulation ? [{ material: mesh.material, triangulation, layer: layering.layer }] : [];
85
+ function elementContent(group, pos, rot, layer) {
86
+ const meshes = (group.meshes ?? []).flatMap(({ material, geometry }) => {
87
+ const triangulation = triangulate(geometry, pos, rot);
88
+ const line = polyline(geometry, pos, rot);
89
+ return triangulation
90
+ ? [{ type: "Tessellation", material, layer, triangulation }]
91
+ : line
92
+ ? [{ type: "Curve3D", material, layer, polyline: line }]
93
+ : [];
79
94
  });
80
- const nested = (group.groups ?? []).map((child) => {
95
+ const nested = mergeSameId(group.groups ?? []).map((child) => {
81
96
  const childPos = vec3TransRot(child.pos, pos, rot);
82
97
  const childRot = vec3RotCombine(rot, child.rot ?? vec3Zero);
83
- const childLayering = groupLayering(child, layering);
84
- return child.data?.["id"] !== undefined || child.data?.["name"] !== undefined
85
- ? { meshes: [], children: [elementNode(child, childPos, childRot, childLayering)].flatMap((node) => node ?? []) }
86
- : elementContent(child, childPos, childRot, childLayering);
98
+ const childLayer = child.layer ?? layer;
99
+ return child.id !== undefined || child.name !== undefined
100
+ ? { meshes: [], children: [elementNode(child, childPos, childRot, childLayer)].flatMap((node) => node ?? []) }
101
+ : elementContent(child, childPos, childRot, childLayer);
87
102
  });
88
- return { meshes: [...meshes, ...nested.flatMap((n) => n.meshes)], children: nested.flatMap((n) => n.children) };
103
+ return {
104
+ meshes: [...meshes, ...nested.flatMap((n) => n.meshes)],
105
+ children: nested.flatMap((n) => n.children),
106
+ };
89
107
  }
90
- /** Groups with `data` are added to the path and get the layer `layerOf` returns for it, if any, otherwise the layer of the parent */
91
- function groupLayering(group, parent) {
92
- const data = group.data;
93
- if (data === undefined || Object.keys(data).length === 0) {
94
- return parent;
95
- }
96
- const path = [...parent.path, data];
97
- const layer = parent.layerOf?.(path);
98
- return { ...parent, path, layer: layer === undefined || layer === "" ? parent.layer : layer };
108
+ /** Sibling groups with the same `id` as one group at the origin, with the first's name, description, layer and data, and the groups as its parts */
109
+ function mergeSameId(groups) {
110
+ return groups.flatMap((g, i) => {
111
+ const same = g.id === undefined ? [] : groups.filter((s) => s.id === g.id);
112
+ if (same.length < 2) {
113
+ return [g];
114
+ }
115
+ return groups.findIndex((s) => s.id === g.id) === i
116
+ ? [
117
+ {
118
+ id: g.id,
119
+ name: g.name,
120
+ description: g.description,
121
+ layer: g.layer,
122
+ data: g.data,
123
+ pos: vec3Zero,
124
+ groups: same.map((s) => ({ ...s, id: undefined, name: undefined })),
125
+ },
126
+ ]
127
+ : [];
128
+ });
99
129
  }
100
- /** `path` is the element's position in the tree (e.g. "2.1"), named after it when the group has no `data.name` or `data.id` since IFC requires a name */
101
- function element(m, node, path, parentPlacement, c) {
102
- const placement = add(m, `IFCLOCALPLACEMENT(${ref(parentPlacement)},${ref(axisPlacement(m, node.pos, node.rot))})`);
103
- const items = node.meshes.map((mesh) => faceSet(m, mesh, c));
104
- const shape = items.length > 0
105
- ? ref(add(m, `IFCPRODUCTDEFINITIONSHAPE($,$,(${ref(add(m, `IFCSHAPEREPRESENTATION(${ref(c.body)},'Body','Tessellation',${refs(items)})`))}))`))
106
- : "$";
107
- const id = node.group.data?.["id"];
108
- const name = node.group.data?.["name"] ?? id ?? `Element ${path}`;
109
- const { entity, predefinedType = "NOTDEFINED" } = node.elementClass;
110
- const ifcElement = add(m, `${entity.toUpperCase()}(${c.owner(id)},${str(name)},$,$,${ref(placement)},${shape},${str(id)},.${predefinedType}.)`);
111
- aggregate(m, c, ifcElement, node.children.map((child, i) => element(m, child, `${path}.${i + 1}`, placement, c)));
130
+ /**
131
+ * `path` is the element's position in the tree (e.g. "2.1"), named after it when the group has no `name` or `id` since IFC requires a name. `parent`
132
+ * is the element or storey the element is placed and aggregated in
133
+ */
134
+ function element(m, node, path, parent, c) {
135
+ const placement = add(m, `IFCLOCALPLACEMENT(${ref(parent.placement)},${ref(axisPlacement(m, node.pos, node.rot))})`);
136
+ const { id, name = id ?? `Element ${path}`, description } = node.group;
137
+ const { entity, predefinedType = "NOTDEFINED" } = c.entity?.(node.group) ?? { entity: "IfcBuildingElementProxy" };
138
+ const ifcElement = add(m, `${entity.toUpperCase()}(${c.owner(id)},${str(name)},${str(description)},$,${ref(placement)},${representation(m, node.meshes, c)},${str(id)},.${predefinedType}.)`);
139
+ const written = {
140
+ element: ifcElement,
141
+ placement,
142
+ pos: vec3TransRot(node.pos, parent.pos, parent.rot),
143
+ rot: vec3RotCombine(parent.rot, node.rot),
144
+ };
145
+ if (id !== undefined) {
146
+ c.elements.set(id, written);
147
+ }
148
+ aggregate(m, c, ifcElement, node.children.map((child, i) => element(m, child, `${path}.${i + 1}`, written, c)));
112
149
  return ifcElement;
113
150
  }
114
- /** One face set per mesh, so meshes on different layers are never in the same item */
115
- function faceSet(m, { material, triangulation: { points, triangles }, layer }, c) {
116
- const pointList = add(m, `IFCCARTESIANPOINTLIST3D((${points.join(",")}))`);
117
- const faces = add(m, `IFCTRIANGULATEDFACESET(${ref(pointList)},$,.F.,(${triangles.map((t) => `(${t.join(",")})`).join(",")}),$)`);
118
- add(m, `IFCSTYLEDITEM(${ref(faces)},(${ref(surfaceStyle(m, material, c))}),$)`);
119
- if (layer !== undefined) {
120
- const items = c.layers.get(layer);
151
+ /**
152
+ * A port nested in the element of each of the relation's groups that is one, placed relative to it, and the two ports connected when both are. The
153
+ * relation's groups are its shape, merged into the first port relative to its placement, groups in them with an `id` or `name` are left out
154
+ */
155
+ function relationPorts(m, relation, center, sceneRot, portType, c) {
156
+ const pos = vec3TransRot(relation.pos, center, sceneRot);
157
+ const rot = vec3RotCombine(sceneRot, relation.rot ?? vec3Zero);
158
+ const portInverse = vec3RotInverse(rot);
159
+ const { predefinedType = "NOTDEFINED", systemType } = portType?.(relation) ?? {};
160
+ const ends = [
161
+ { e: relation.from === undefined ? undefined : c.elements.get(relation.from), flow: "SOURCE" },
162
+ { e: relation.to === undefined ? undefined : c.elements.get(relation.to), flow: "SINK" },
163
+ ].flatMap(({ e, flow }) => (e ? [{ e, flow }] : []));
164
+ const ports = ends.map(({ e, flow }, i) => {
165
+ const inverse = vec3RotInverse(e.rot);
166
+ const placement = add(m, `IFCLOCALPLACEMENT(${ref(e.placement)},${ref(axisPlacement(m, vec3Rot(vec3Sub(pos, e.pos), vec3Zero, inverse), vec3RotCombine(inverse, rot)))})`);
167
+ const meshes = i === 0
168
+ ? (relation.groups ?? []).flatMap((g) => {
169
+ const groupPos = vec3Rot(vec3Sub(vec3TransRot(g.pos, center, sceneRot), pos), vec3Zero, portInverse);
170
+ const groupRot = vec3RotCombine(portInverse, vec3RotCombine(sceneRot, g.rot ?? vec3Zero));
171
+ return elementContent(g, groupPos, groupRot, g.layer).meshes;
172
+ })
173
+ : [];
174
+ // Each port's id is the relation's with its flow, so they're kept between exports
175
+ const port = add(m, `IFCDISTRIBUTIONPORT(${c.owner(`${relation.id}_${flow}`)},${str(relation.name)},$,$,${ref(placement)},${representation(m, meshes, c)},.${flow}.,.${predefinedType}.,${systemType === undefined ? "$" : `.${systemType}.`})`);
176
+ const nested = c.ports.get(e.element);
177
+ if (nested) {
178
+ nested.push(port);
179
+ }
180
+ else {
181
+ c.ports.set(e.element, [port]);
182
+ }
183
+ return port;
184
+ });
185
+ const [relating, related] = ports;
186
+ if (relating !== undefined && related !== undefined) {
187
+ add(m, `IFCRELCONNECTSPORTS(${c.owner()},$,$,${ref(relating)},${ref(related)},$)`);
188
+ }
189
+ }
190
+ /** The encoded IfcProductDefinitionShape with a shape representation per representation type, or $ without meshes */
191
+ function representation(m, meshes, c) {
192
+ const representations = representationTypes.flatMap((type) => {
193
+ const items = meshes.filter((mesh) => mesh.type === type).map((mesh) => representationItem(m, mesh, c));
194
+ return items.length > 0 ? [add(m, `IFCSHAPEREPRESENTATION(${ref(c.body)},'Body',${str(type)},${refs(items)})`)] : [];
195
+ });
196
+ return representations.length > 0 ? ref(add(m, `IFCPRODUCTDEFINITIONSHAPE($,$,${refs(representations)})`)) : "$";
197
+ }
198
+ /** One face set or polyline per mesh, so meshes on different layers are never in the same item */
199
+ function representationItem(m, mesh, c) {
200
+ const [item, style] = mesh.type === "Tessellation"
201
+ ? [faceSet(m, mesh.triangulation), surfaceStyle(m, mesh.material, c)]
202
+ : [add(m, `IFCPOLYLINE(${refs(mesh.polyline.map((p) => add(m, `IFCCARTESIANPOINT(${p})`)))})`), curveStyle(m, mesh.material, c)];
203
+ add(m, `IFCSTYLEDITEM(${ref(item)},(${ref(style)}),$)`);
204
+ if (mesh.layer !== undefined) {
205
+ const items = c.layers.get(mesh.layer);
121
206
  if (items) {
122
- items.push(faces);
207
+ items.push(item);
123
208
  }
124
209
  else {
125
- c.layers.set(layer, [faces]);
210
+ c.layers.set(mesh.layer, [item]);
126
211
  }
127
212
  }
128
- return faces;
213
+ return item;
214
+ }
215
+ function faceSet(m, { points, triangles }) {
216
+ const pointList = add(m, `IFCCARTESIANPOINTLIST3D((${points.join(",")}))`);
217
+ return add(m, `IFCTRIANGULATEDFACESET(${ref(pointList)},$,.F.,(${triangles.map((t) => `(${t.join(",")})`).join(",")}),$)`);
129
218
  }
130
219
  function surfaceStyle(m, material, c) {
131
220
  const opacity = material.opacity ?? 1;
132
- const key = `${material.normal}_${opacity}`;
221
+ return cachedStyle(c, `surface_${material.normal}_${opacity}`, () => {
222
+ // Rendering rather than its supertype shading, since many viewers only read the transparency from rendering
223
+ const rendering = add(m, `IFCSURFACESTYLERENDERING(${ref(colour(m, material))},${real(1 - opacity)},$,$,$,$,$,$,.NOTDEFINED.)`);
224
+ return add(m, `IFCSURFACESTYLE(${str(material.normal)},.BOTH.,(${ref(rendering)}))`);
225
+ });
226
+ }
227
+ /** Only the colour, IFC has no line width that viewers reliably show */
228
+ const curveStyle = (m, material, c) => cachedStyle(c, `curve_${material.normal}`, () => add(m, `IFCCURVESTYLE($,$,$,${ref(colour(m, material))},.T.)`));
229
+ function cachedStyle(c, key, create) {
133
230
  const cached = c.styles.get(key);
134
231
  if (cached !== undefined) {
135
232
  return cached;
136
233
  }
137
- const { r, g, b } = new Color(material.normal).getRGB({ r: 0, g: 0, b: 0 }, SRGBColorSpace);
138
- const colour = add(m, `IFCCOLOURRGB($,${real(r)},${real(g)},${real(b)})`);
139
- // Rendering rather than its supertype shading, since many viewers only read the transparency from rendering
140
- const rendering = add(m, `IFCSURFACESTYLERENDERING(${ref(colour)},${real(1 - opacity)},$,$,$,$,$,$,.NOTDEFINED.)`);
141
- const style = add(m, `IFCSURFACESTYLE(${str(material.normal)},.BOTH.,(${ref(rendering)}))`);
234
+ const style = create();
142
235
  c.styles.set(key, style);
143
236
  return style;
144
237
  }
238
+ function colour(m, material) {
239
+ const { r, g, b } = new Color(material.normal).getRGB({ r: 0, g: 0, b: 0 }, SRGBColorSpace);
240
+ return add(m, `IFCCOLOURRGB($,${real(r)},${real(g)},${real(b)})`);
241
+ }
145
242
  /** The group's local axes, converted to IFC's Z-up where three.js' up (Y) becomes the placement's Axis (Z) */
146
243
  function axisPlacement(m, pos, rot) {
147
244
  const location = add(m, `IFCCARTESIANPOINT(${point(toIfc(pos))})`);
@@ -1 +1 @@
1
- {"version":3,"file":"ifc.js","sourceRoot":"","sources":["../../../src/renderers/ifc/ifc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifc.js","sourceRoot":"","sources":["../../../src/renderers/ifc/ifc.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  export * from "./react.js";
2
2
  export * from "./react-types.js";
3
3
  export type { SceneMouseEvent } from "./react-scene.js";
4
- export type { HotSpotInfo } from "./react-hotspot.js";
5
4
  export type { CameraType, Camera, ControlsHelper } from "./react-camera.js";
6
5
  export type { MaterialState } from "./react-material.js";
7
6
  export { ERROR_IMG_KEY } from "./react-material.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderers/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderers/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import type { Dimensions, Vec3, Dimension, Material } from "../../abstract-3d.js";
4
4
  type DimensionCallbacks = {
5
5
  readonly selectedIds?: Record<string, boolean> | undefined;
6
- readonly hotSpotsActive?: boolean;
6
+ readonly relationsActive?: boolean;
7
7
  readonly onClickGroup?: (id: string | undefined, rootData: undefined, data: undefined, e: ThreeEvent<MouseEvent>) => void;
8
8
  readonly onHoverGroup?: (id: string | undefined, rootData: undefined, data: undefined, e: ThreeEvent<MouseEvent>) => void;
9
9
  readonly onContextMenuGroup?: (id: string, rootData: undefined, data: undefined, left: number, top: number, e: ThreeEvent<MouseEvent>) => void;
@@ -15,7 +15,7 @@ export declare const ReactDimensions: React.MemoExoticComponent<({ dimensions, s
15
15
  readonly sceneCenter: Vec3 | undefined;
16
16
  } & DimensionCallbacks) => React.JSX.Element>;
17
17
  /** A dimension with an id is clickable like a group when there is an onClickGroup, and drawn in the select color when selected or hovered. */
18
- export declare function ReactDimension({ dimension, material, visible, children, sceneRotation, selectedIds, hotSpotsActive, onClickGroup, onHoverGroup, onContextMenuGroup, }: {
18
+ export declare function ReactDimension({ dimension, material, visible, children, sceneRotation, selectedIds, relationsActive, onClickGroup, onHoverGroup, onContextMenuGroup, }: {
19
19
  readonly dimension: Dimension;
20
20
  readonly material: Material;
21
21
  readonly visible: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"react-dimension.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-dimension.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAQ,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKxF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1H,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1H,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAChJ,CAAC;AAEF,eAAO,MAAM,eAAe,uGAOvB;IACD,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;CACxC,GAAG,kBAAkB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqB3C,CAAC;AAEF,8IAA8I;AAC9I,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE;IACD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,IAAI,GAAG,SAAS,CAAC;CACzC,GAAG,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwCzC"}
1
+ {"version":3,"file":"react-dimension.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-dimension.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAQ,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKxF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1H,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1H,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAChJ,CAAC;AAEF,eAAO,MAAM,eAAe,uGAOvB;IACD,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;CACxC,GAAG,kBAAkB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqB3C,CAAC;AAEF,8IAA8I;AAC9I,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE;IACD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,IAAI,GAAG,SAAS,CAAC;CACzC,GAAG,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwCzC"}
@@ -9,9 +9,9 @@ export const ReactDimensions = React.memo(({ dimensions, showDimensions, sceneRo
9
9
  return (_jsx(_Fragment, { children: dimensions?.dimensions.map((dimension, i) => (_jsx(ReactDimension, { dimension: dimension, material: dimensions.material, visible: showDimensions, sceneRotation: sceneRotation, _sceneCenter: sceneCenter, ...callbacks, children: dimensionMaterial }, i))) }));
10
10
  });
11
11
  /** A dimension with an id is clickable like a group when there is an onClickGroup, and drawn in the select color when selected or hovered. */
12
- export function ReactDimension({ dimension, material, visible, children, sceneRotation, selectedIds, hotSpotsActive, onClickGroup, onHoverGroup, onContextMenuGroup, }) {
12
+ export function ReactDimension({ dimension, material, visible, children, sceneRotation, selectedIds, relationsActive, onClickGroup, onHoverGroup, onContextMenuGroup, }) {
13
13
  const [hovered, setHovered] = React.useState(false);
14
- const id = hotSpotsActive || !onClickGroup ? undefined : dimension.id;
14
+ const id = relationsActive || !onClickGroup ? undefined : dimension.id;
15
15
  const highlighted = !!id && (hovered || !!selectedIds?.[id]);
16
16
  const dim = dimensionConvertToTypeMesh(highlighted ? { ...dimension, material: selectMat } : dimension, sceneRotation ?? vec3Zero, material);
17
17
  return visible ? (_jsx("group", { position: [dim.pos.x, dim.pos.y, dim.pos.z], rotation: [dim.rot.x, dim.rot.y, dim.rot.z], ...(id && {
@@ -1 +1 @@
1
- {"version":3,"file":"react-dimension.js","sourceRoot":"","sources":["../../../src/renderers/react/react-dimension.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-dimension.js","sourceRoot":"","sources":["../../../src/renderers/react/react-dimension.tsx"],"names":[],"mappings":"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"}
@@ -4,14 +4,15 @@ import type { Group as Group_1 } from "../../abstract-3d.js";
4
4
  import type { MaterialState } from "./react-material.js";
5
5
  import type { ReactPopover } from "./react-types.js";
6
6
  export declare const ReactGroup: React.MemoExoticComponent<typeof ReactGroupBase>;
7
- declare function ReactGroupBase({ g, materialStateImages, hoveredIdsExternal, selectedIds, hotSpotsActive, activeComponents, useAlphaTest, id, rootData, hoveredParent, onClickGroup, onHoverGroup, onContextMenuGroup, createGroupKey, getTooltips, }: ReactGroupProps): React.JSX.Element;
7
+ declare function ReactGroupBase({ g, materialStateImages, hoveredIdsExternal, selectedIds, relationsActive, activeComponents, useAlphaTest, id, rootData, hoveredParent, onClickGroup, onHoverGroup, onContextMenuGroup, createGroupKey, getTooltips, }: ReactGroupProps): React.JSX.Element;
8
8
  export type ReactGroupProps = {
9
9
  readonly g: Group_1;
10
10
  readonly materialStateImages?: Record<string, string>;
11
11
  readonly hoveredIdsExternal: ReadonlyArray<string> | undefined;
12
12
  readonly hoveredParent?: boolean;
13
13
  readonly selectedIds: Record<string, boolean> | undefined;
14
- readonly hotSpotsActive: boolean;
14
+ /** Relations are active, e.g. to pick one to insert a component on, so only the groups whose material state is Accept can be clicked */
15
+ readonly relationsActive: boolean;
15
16
  readonly useAlphaTest?: boolean;
16
17
  readonly activeComponents: Record<string, MaterialState> | undefined;
17
18
  readonly id: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"react-group.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-group.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-group.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-group.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { ImageMaterial } from "./react-image-material.js";
6
6
  import { ReactMaterial } from "./react-material.js";
7
7
  import { ReactMesh } from "./react-mesh.js";
8
8
  export const ReactGroup = React.memo(ReactGroupBase, groupPropsEqual);
9
- function ReactGroupBase({ g, materialStateImages, hoveredIdsExternal, selectedIds, hotSpotsActive, activeComponents, useAlphaTest, id, rootData, hoveredParent, onClickGroup, onHoverGroup, onContextMenuGroup, createGroupKey, getTooltips, }) {
9
+ function ReactGroupBase({ g, materialStateImages, hoveredIdsExternal, selectedIds, relationsActive, activeComponents, useAlphaTest, id, rootData, hoveredParent, onClickGroup, onHoverGroup, onContextMenuGroup, createGroupKey, getTooltips, }) {
10
10
  const ref = React.useRef(undefined);
11
11
  useFrame(({ invalidate }, delta) => {
12
12
  if (g.animation) {
@@ -34,7 +34,7 @@ function ReactGroupBase({ g, materialStateImages, hoveredIdsExternal, selectedId
34
34
  const hoveredFinal = hovered || (id && hoveredIdsExternal?.includes(id)) || !!hoveredParent;
35
35
  const selected = selectedIds?.[id ?? ""];
36
36
  const materialState = activeComponents?.[id ?? ""];
37
- const disabled = hotSpotsActive && materialState !== "Accept";
37
+ const disabled = relationsActive && materialState !== "Accept";
38
38
  return (_jsxs("group", { rotation: [g.rot?.x ?? 0, g.rot?.y ?? 0, g.rot?.z ?? 0], position: [g.pos.x, g.pos.y, g.pos.z], ref: ref, ...(id &&
39
39
  !disabled && {
40
40
  onClick: (e) => {
@@ -64,7 +64,7 @@ function ReactGroupBase({ g, materialStateImages, hoveredIdsExternal, selectedId
64
64
  onContextMenuGroup(id, rootData, g.data, e.nativeEvent.x, e.nativeEvent.y, e);
65
65
  }
66
66
  },
67
- }), children: [g.groups?.map((g, i) => (_jsx(ReactGroup, { g: g, selectedIds: selectedIds, hotSpotsActive: hotSpotsActive, activeComponents: activeComponents, materialStateImages: materialStateImages, hoveredIdsExternal: hoveredIdsExternal, hoveredParent: hoveredFinal, onClickGroup: onClickGroup, onHoverGroup: onChildHoverGroup, onContextMenuGroup: onContextMenuGroup, getTooltips: getTooltips, id: id, rootData: rootData, createGroupKey: createGroupKey, useAlphaTest: useAlphaTest }, createGroupKey ? createGroupKey(g, i, rootData, id ?? "") : i))), g.meshes?.map((m, i) => (_jsx(ReactMesh, { mesh: m, children: m.geometry.type === "Image" ? (_jsx(ImageMaterial, { image: m.geometry.image, materialStateImages: materialStateImages, material: m.material, useAlphaTest: useAlphaTest, hovered: hoveredFinal, materialState: materialState, selected: selected })) : (_jsx(ReactMaterial, { material: m.material, selected: selected, isText: m.geometry.type === "Text", hovered: hoveredFinal, disabled: disabled, materialState: materialState })) }, i))), hovered &&
67
+ }), children: [g.groups?.map((g, i) => (_jsx(ReactGroup, { g: g, selectedIds: selectedIds, relationsActive: relationsActive, activeComponents: activeComponents, materialStateImages: materialStateImages, hoveredIdsExternal: hoveredIdsExternal, hoveredParent: hoveredFinal, onClickGroup: onClickGroup, onHoverGroup: onChildHoverGroup, onContextMenuGroup: onContextMenuGroup, getTooltips: getTooltips, id: id, rootData: rootData, createGroupKey: createGroupKey, useAlphaTest: useAlphaTest }, createGroupKey ? createGroupKey(g, i, rootData, id ?? "") : i))), g.meshes?.map((m, i) => (_jsx(ReactMesh, { mesh: m, children: m.geometry.type === "Image" ? (_jsx(ImageMaterial, { image: m.geometry.image, materialStateImages: materialStateImages, material: m.material, useAlphaTest: useAlphaTest, hovered: hoveredFinal, materialState: materialState, selected: selected })) : (_jsx(ReactMaterial, { material: m.material, selected: selected, isText: m.geometry.type === "Text", hovered: hoveredFinal, disabled: disabled, materialState: materialState })) }, i))), hovered &&
68
68
  id &&
69
69
  getTooltips &&
70
70
  getTooltips(id).map((p) => (_jsx(Html, { position: [p.pos.x, p.pos.y, p.pos.z], center: true, pointerEvents: "none", style: { pointerEvents: "none" }, children: p.content }, p.id)))] }));