@ifc-lite/sdk 1.7.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.
- package/LICENSE +373 -0
- package/dist/context.d.ts +76 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +106 -0
- package/dist/context.js.map +1 -0
- package/dist/host.d.ts +29 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +91 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/namespaces/bcf.d.ts +36 -0
- package/dist/namespaces/bcf.d.ts.map +1 -0
- package/dist/namespaces/bcf.js +42 -0
- package/dist/namespaces/bcf.js.map +1 -0
- package/dist/namespaces/drawing.d.ts +30 -0
- package/dist/namespaces/drawing.d.ts.map +1 -0
- package/dist/namespaces/drawing.js +33 -0
- package/dist/namespaces/drawing.js.map +1 -0
- package/dist/namespaces/events.d.ts +14 -0
- package/dist/namespaces/events.d.ts.map +1 -0
- package/dist/namespaces/events.js +30 -0
- package/dist/namespaces/events.js.map +1 -0
- package/dist/namespaces/export.d.ts +38 -0
- package/dist/namespaces/export.d.ts.map +1 -0
- package/dist/namespaces/export.js +136 -0
- package/dist/namespaces/export.js.map +1 -0
- package/dist/namespaces/ids.d.ts +28 -0
- package/dist/namespaces/ids.d.ts.map +1 -0
- package/dist/namespaces/ids.js +40 -0
- package/dist/namespaces/ids.js.map +1 -0
- package/dist/namespaces/lens.d.ts +15 -0
- package/dist/namespaces/lens.d.ts.map +1 -0
- package/dist/namespaces/lens.js +25 -0
- package/dist/namespaces/lens.js.map +1 -0
- package/dist/namespaces/list.d.ts +19 -0
- package/dist/namespaces/list.d.ts.map +1 -0
- package/dist/namespaces/list.js +19 -0
- package/dist/namespaces/list.js.map +1 -0
- package/dist/namespaces/model.d.ts +15 -0
- package/dist/namespaces/model.d.ts.map +1 -0
- package/dist/namespaces/model.js +30 -0
- package/dist/namespaces/model.js.map +1 -0
- package/dist/namespaces/mutate.d.ts +21 -0
- package/dist/namespaces/mutate.d.ts.map +1 -0
- package/dist/namespaces/mutate.js +41 -0
- package/dist/namespaces/mutate.js.map +1 -0
- package/dist/namespaces/query.d.ts +60 -0
- package/dist/namespaces/query.d.ts.map +1 -0
- package/dist/namespaces/query.js +158 -0
- package/dist/namespaces/query.js.map +1 -0
- package/dist/namespaces/spatial.d.ts +20 -0
- package/dist/namespaces/spatial.d.ts.map +1 -0
- package/dist/namespaces/spatial.js +28 -0
- package/dist/namespaces/spatial.js.map +1 -0
- package/dist/namespaces/viewer.d.ts +46 -0
- package/dist/namespaces/viewer.d.ts.map +1 -0
- package/dist/namespaces/viewer.js +91 -0
- package/dist/namespaces/viewer.js.map +1 -0
- package/dist/transport/broadcast.d.ts +23 -0
- package/dist/transport/broadcast.d.ts.map +1 -0
- package/dist/transport/broadcast.js +59 -0
- package/dist/transport/broadcast.js.map +1 -0
- package/dist/transport/message-port.d.ts +20 -0
- package/dist/transport/message-port.d.ts.map +1 -0
- package/dist/transport/message-port.js +57 -0
- package/dist/transport/message-port.js.map +1 -0
- package/dist/transport/remote-backend.d.ts +23 -0
- package/dist/transport/remote-backend.d.ts.map +1 -0
- package/dist/transport/remote-backend.js +36 -0
- package/dist/transport/remote-backend.js.map +1 -0
- package/dist/transport/types.d.ts +10 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +5 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/types.d.ts +236 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
package/dist/host.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { dispatchToBackend } from './types.js';
|
|
5
|
+
export class BimHost {
|
|
6
|
+
backend;
|
|
7
|
+
channels = [];
|
|
8
|
+
ports = [];
|
|
9
|
+
eventSubscriptions = [];
|
|
10
|
+
constructor(backend) {
|
|
11
|
+
this.backend = backend;
|
|
12
|
+
}
|
|
13
|
+
/** Listen for connections on a BroadcastChannel */
|
|
14
|
+
listenBroadcast(channelName) {
|
|
15
|
+
const channel = new BroadcastChannel(channelName);
|
|
16
|
+
this.channels.push(channel);
|
|
17
|
+
channel.onmessage = (event) => {
|
|
18
|
+
const request = event.data;
|
|
19
|
+
if (!request || typeof request !== 'object' || !('id' in request) || !('namespace' in request)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const response = this.dispatch(request);
|
|
23
|
+
channel.postMessage(response);
|
|
24
|
+
};
|
|
25
|
+
this.forwardEvents((sdkEvent) => {
|
|
26
|
+
channel.postMessage(sdkEvent);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** Accept a MessagePort connection (for iframe / worker) */
|
|
30
|
+
acceptPort(port) {
|
|
31
|
+
this.ports.push(port);
|
|
32
|
+
port.onmessage = (event) => {
|
|
33
|
+
const request = event.data;
|
|
34
|
+
if (!request || typeof request !== 'object' || !('id' in request) || !('namespace' in request)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const response = this.dispatch(request);
|
|
38
|
+
port.postMessage(response);
|
|
39
|
+
};
|
|
40
|
+
this.forwardEvents((sdkEvent) => {
|
|
41
|
+
port.postMessage(sdkEvent);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** Dispatch an SdkRequest to the backend and return the response */
|
|
45
|
+
dispatch(request) {
|
|
46
|
+
try {
|
|
47
|
+
const result = dispatchToBackend(this.backend, request.namespace, request.method, request.args);
|
|
48
|
+
return { id: request.id, result };
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
52
|
+
return {
|
|
53
|
+
id: request.id,
|
|
54
|
+
error: { message: error.message, stack: error.stack },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Subscribe to backend events and forward them */
|
|
59
|
+
forwardEvents(emit) {
|
|
60
|
+
const events = [
|
|
61
|
+
'selection:changed',
|
|
62
|
+
'visibility:changed',
|
|
63
|
+
'model:loaded',
|
|
64
|
+
'model:removed',
|
|
65
|
+
'mutation:changed',
|
|
66
|
+
'lens:changed',
|
|
67
|
+
];
|
|
68
|
+
for (const eventType of events) {
|
|
69
|
+
const unsub = this.backend.subscribe(eventType, (data) => {
|
|
70
|
+
emit({ type: eventType, data });
|
|
71
|
+
});
|
|
72
|
+
this.eventSubscriptions.push(unsub);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Shut down all connections */
|
|
76
|
+
close() {
|
|
77
|
+
for (const channel of this.channels) {
|
|
78
|
+
channel.close();
|
|
79
|
+
}
|
|
80
|
+
for (const port of this.ports) {
|
|
81
|
+
port.close();
|
|
82
|
+
}
|
|
83
|
+
for (const unsub of this.eventSubscriptions) {
|
|
84
|
+
unsub();
|
|
85
|
+
}
|
|
86
|
+
this.channels = [];
|
|
87
|
+
this.ports = [];
|
|
88
|
+
this.eventSubscriptions = [];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=host.js.map
|
package/dist/host.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoB/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,OAAO,OAAO;IACV,OAAO,CAAa;IACpB,QAAQ,GAAuB,EAAE,CAAC;IAClC,KAAK,GAAkB,EAAE,CAAC;IAC1B,kBAAkB,GAAsB,EAAE,CAAC;IAEnD,YAAY,OAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,mDAAmD;IACnD,eAAe,CAAC,WAAmB;QACjC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,OAAO,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAkB,CAAC;YACzC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC/F,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9B,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,UAAU,CAAC,IAAiB;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAkB,CAAC;YACzC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAC/F,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,QAAQ,CAAC,OAAmB;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAChG,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;aACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mDAAmD;IAC3C,aAAa,CAAC,IAA+B;QACnD,MAAM,MAAM,GAAmB;YAC7B,mBAAmB;YACnB,oBAAoB;YACpB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,cAAc;SACf,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvD,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,KAAK;QACH,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5C,KAAK,EAAE,CAAC;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC/B,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ifc-lite/sdk — The scripting SDK for ifc-lite
|
|
3
|
+
*
|
|
4
|
+
* Single entry point for all BIM automation:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { createBimContext } from '@ifc-lite/sdk';
|
|
8
|
+
*
|
|
9
|
+
* // Embedded mode (viewer internal)
|
|
10
|
+
* const bim = createBimContext({ backend: myLocalBackend });
|
|
11
|
+
*
|
|
12
|
+
* // Connected mode (cross-tab)
|
|
13
|
+
* import { BroadcastTransport } from '@ifc-lite/sdk';
|
|
14
|
+
* const transport = new BroadcastTransport('ifc-lite');
|
|
15
|
+
* const bim = createBimContext({ transport });
|
|
16
|
+
*
|
|
17
|
+
* // Use the API
|
|
18
|
+
* const walls = bim.query().byType('IfcWall').toArray();
|
|
19
|
+
* bim.viewer.colorize(walls.map(w => w.ref), '#ff0000');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export { BimContext, createBimContext } from './context.js';
|
|
23
|
+
export type { EntityRef, EntityRefString, EntityData, PropertySetData, PropertyData, QuantitySetData, QuantityData, ModelInfo, SchemaVersion, QueryDescriptor, QueryFilter, ComparisonOp, CameraState, ProjectionMode, SectionPlane, AABB, SpatialPlane, SpatialFrustum, MutationRecord, BimEventType, BimEventData, BimEventHandler, SdkRequest, SdkResponse, SdkEvent, Transport, BimBackend, BimContextOptions, ModelBackendMethods, QueryBackendMethods, SelectionBackendMethods, VisibilityBackendMethods, ViewerBackendMethods, MutateBackendMethods, SpatialBackendMethods, ExportBackendMethods, LensBackendMethods, } from './types.js';
|
|
24
|
+
export { entityRefToString, stringToEntityRef, dispatchToBackend } from './types.js';
|
|
25
|
+
export { QueryBuilder, QueryNamespace } from './namespaces/query.js';
|
|
26
|
+
export { ModelNamespace } from './namespaces/model.js';
|
|
27
|
+
export { ViewerNamespace } from './namespaces/viewer.js';
|
|
28
|
+
export { MutateNamespace } from './namespaces/mutate.js';
|
|
29
|
+
export { LensNamespace } from './namespaces/lens.js';
|
|
30
|
+
export { ExportNamespace } from './namespaces/export.js';
|
|
31
|
+
export type { ExportCsvOptions, ExportGltfOptions, ExportStepOptions } from './namespaces/export.js';
|
|
32
|
+
export { IDSNamespace } from './namespaces/ids.js';
|
|
33
|
+
export type { IDSValidationSummary } from './namespaces/ids.js';
|
|
34
|
+
export { BCFNamespace } from './namespaces/bcf.js';
|
|
35
|
+
export type { TopicOptions, CommentOptions } from './namespaces/bcf.js';
|
|
36
|
+
export { DrawingNamespace } from './namespaces/drawing.js';
|
|
37
|
+
export type { SectionCutOptions, FloorPlanOptions } from './namespaces/drawing.js';
|
|
38
|
+
export { ListNamespace } from './namespaces/list.js';
|
|
39
|
+
export { SpatialNamespace } from './namespaces/spatial.js';
|
|
40
|
+
export { EventsNamespace } from './namespaces/events.js';
|
|
41
|
+
export { BroadcastTransport } from './transport/broadcast.js';
|
|
42
|
+
export { MessagePortTransport } from './transport/message-port.js';
|
|
43
|
+
export { RemoteBackend } from './transport/remote-backend.js';
|
|
44
|
+
export { BimHost } from './host.js';
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAM5D,YAAY,EAEV,SAAS,EACT,eAAe,EACf,UAAU,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,YAAY,EAGZ,SAAS,EACT,aAAa,EAGb,eAAe,EACf,WAAW,EACX,YAAY,EAGZ,WAAW,EACX,cAAc,EACd,YAAY,EAGZ,IAAI,EACJ,YAAY,EACZ,cAAc,EAGd,cAAc,EAGd,YAAY,EACZ,YAAY,EACZ,eAAe,EAGf,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EAGT,UAAU,EACV,iBAAiB,EAGjB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMrF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAM9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* @ifc-lite/sdk — The scripting SDK for ifc-lite
|
|
6
|
+
*
|
|
7
|
+
* Single entry point for all BIM automation:
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createBimContext } from '@ifc-lite/sdk';
|
|
11
|
+
*
|
|
12
|
+
* // Embedded mode (viewer internal)
|
|
13
|
+
* const bim = createBimContext({ backend: myLocalBackend });
|
|
14
|
+
*
|
|
15
|
+
* // Connected mode (cross-tab)
|
|
16
|
+
* import { BroadcastTransport } from '@ifc-lite/sdk';
|
|
17
|
+
* const transport = new BroadcastTransport('ifc-lite');
|
|
18
|
+
* const bim = createBimContext({ transport });
|
|
19
|
+
*
|
|
20
|
+
* // Use the API
|
|
21
|
+
* const walls = bim.query().byType('IfcWall').toArray();
|
|
22
|
+
* bim.viewer.colorize(walls.map(w => w.ref), '#ff0000');
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Core
|
|
27
|
+
// ============================================================================
|
|
28
|
+
export { BimContext, createBimContext } from './context.js';
|
|
29
|
+
export { entityRefToString, stringToEntityRef, dispatchToBackend } from './types.js';
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Namespaces (for type access)
|
|
32
|
+
// ============================================================================
|
|
33
|
+
export { QueryBuilder, QueryNamespace } from './namespaces/query.js';
|
|
34
|
+
export { ModelNamespace } from './namespaces/model.js';
|
|
35
|
+
export { ViewerNamespace } from './namespaces/viewer.js';
|
|
36
|
+
export { MutateNamespace } from './namespaces/mutate.js';
|
|
37
|
+
export { LensNamespace } from './namespaces/lens.js';
|
|
38
|
+
export { ExportNamespace } from './namespaces/export.js';
|
|
39
|
+
export { IDSNamespace } from './namespaces/ids.js';
|
|
40
|
+
export { BCFNamespace } from './namespaces/bcf.js';
|
|
41
|
+
export { DrawingNamespace } from './namespaces/drawing.js';
|
|
42
|
+
export { ListNamespace } from './namespaces/list.js';
|
|
43
|
+
export { SpatialNamespace } from './namespaces/spatial.js';
|
|
44
|
+
export { EventsNamespace } from './namespaces/events.js';
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Transport
|
|
47
|
+
// ============================================================================
|
|
48
|
+
export { BroadcastTransport } from './transport/broadcast.js';
|
|
49
|
+
export { MessagePortTransport } from './transport/message-port.js';
|
|
50
|
+
export { RemoteBackend } from './transport/remote-backend.js';
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// Host (viewer side)
|
|
53
|
+
// ============================================================================
|
|
54
|
+
export { BimHost } from './host.js';
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiE5D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErF,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bim.bcf — BCF collaboration (topics, viewpoints, comments)
|
|
3
|
+
*
|
|
4
|
+
* Wraps @ifc-lite/bcf for reading/writing BCF files and creating
|
|
5
|
+
* collaboration data structures. Uses dynamic imports.
|
|
6
|
+
*/
|
|
7
|
+
export interface TopicOptions {
|
|
8
|
+
title: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
author: string;
|
|
11
|
+
topicType?: string;
|
|
12
|
+
status?: string;
|
|
13
|
+
priority?: string;
|
|
14
|
+
assignedTo?: string;
|
|
15
|
+
labels?: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface CommentOptions {
|
|
18
|
+
author: string;
|
|
19
|
+
comment: string;
|
|
20
|
+
}
|
|
21
|
+
/** bim.bcf — BCF (BIM Collaboration Format) */
|
|
22
|
+
export declare class BCFNamespace {
|
|
23
|
+
/** Create a new BCF project. */
|
|
24
|
+
createProject(name?: string): Promise<unknown>;
|
|
25
|
+
/** Create a topic. */
|
|
26
|
+
createTopic(options: TopicOptions): Promise<unknown>;
|
|
27
|
+
/** Create a comment. */
|
|
28
|
+
createComment(options: CommentOptions): Promise<unknown>;
|
|
29
|
+
/** Read a BCF file. */
|
|
30
|
+
read(data: Blob | ArrayBuffer): Promise<unknown>;
|
|
31
|
+
/** Write a BCF project to a downloadable Blob. */
|
|
32
|
+
write(project: unknown): Promise<Blob>;
|
|
33
|
+
/** Generate a new IFC GUID. */
|
|
34
|
+
generateGuid(): Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=bcf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bcf.d.ts","sourceRoot":"","sources":["../../src/namespaces/bcf.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,+CAA+C;AAC/C,qBAAa,YAAY;IACvB,gCAAgC;IAC1B,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,sBAAsB;IAChB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D,wBAAwB;IAClB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9D,uBAAuB;IACjB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD,kDAAkD;IAC5C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,+BAA+B;IACzB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAItC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
// Dynamic import helper
|
|
5
|
+
async function loadBCF() {
|
|
6
|
+
const name = '@ifc-lite/bcf';
|
|
7
|
+
return import(/* webpackIgnore: true */ name);
|
|
8
|
+
}
|
|
9
|
+
/** bim.bcf — BCF (BIM Collaboration Format) */
|
|
10
|
+
export class BCFNamespace {
|
|
11
|
+
/** Create a new BCF project. */
|
|
12
|
+
async createProject(name) {
|
|
13
|
+
const mod = await loadBCF();
|
|
14
|
+
return mod.createBCFProject({ name });
|
|
15
|
+
}
|
|
16
|
+
/** Create a topic. */
|
|
17
|
+
async createTopic(options) {
|
|
18
|
+
const mod = await loadBCF();
|
|
19
|
+
return mod.createBCFTopic(options);
|
|
20
|
+
}
|
|
21
|
+
/** Create a comment. */
|
|
22
|
+
async createComment(options) {
|
|
23
|
+
const mod = await loadBCF();
|
|
24
|
+
return mod.createBCFComment(options);
|
|
25
|
+
}
|
|
26
|
+
/** Read a BCF file. */
|
|
27
|
+
async read(data) {
|
|
28
|
+
const mod = await loadBCF();
|
|
29
|
+
return mod.readBCF(data);
|
|
30
|
+
}
|
|
31
|
+
/** Write a BCF project to a downloadable Blob. */
|
|
32
|
+
async write(project) {
|
|
33
|
+
const mod = await loadBCF();
|
|
34
|
+
return mod.writeBCF(project);
|
|
35
|
+
}
|
|
36
|
+
/** Generate a new IFC GUID. */
|
|
37
|
+
async generateGuid() {
|
|
38
|
+
const mod = await loadBCF();
|
|
39
|
+
return mod.generateIfcGuid();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=bcf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bcf.js","sourceRoot":"","sources":["../../src/namespaces/bcf.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyB/D,wBAAwB;AACxB,KAAK,UAAU,OAAO;IACpB,MAAM,IAAI,GAAG,eAAe,CAAC;IAC7B,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAqC,CAAC;AACpF,CAAC;AAID,+CAA+C;AAC/C,MAAM,OAAO,YAAY;IACvB,gCAAgC;IAChC,KAAK,CAAC,aAAa,CAAC,IAAa;QAC/B,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,gBAA0B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,WAAW,CAAC,OAAqB;QACrC,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,cAAwB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,gBAA0B,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,IAAI,CAAC,IAAwB;QACjC,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,OAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,KAAK,CAAC,OAAgB;QAC1B,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,QAAkB,CAAC,OAAO,CAAkB,CAAC;IAC3D,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,OAAQ,GAAG,CAAC,eAAgC,EAAE,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bim.drawing — 2D architectural drawings
|
|
3
|
+
*
|
|
4
|
+
* Wraps @ifc-lite/drawing-2d for section cuts, floor plans, elevations,
|
|
5
|
+
* and SVG export. Uses dynamic imports to avoid compile-time dependency
|
|
6
|
+
* on @ifc-lite/drawing-2d (which has a deep dep chain through geometry).
|
|
7
|
+
*/
|
|
8
|
+
export interface SectionCutOptions {
|
|
9
|
+
axis: 'x' | 'y' | 'z';
|
|
10
|
+
position: number;
|
|
11
|
+
depth?: number;
|
|
12
|
+
showHiddenLines?: boolean;
|
|
13
|
+
showHatching?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface FloorPlanOptions {
|
|
16
|
+
elevation: number;
|
|
17
|
+
depth?: number;
|
|
18
|
+
showHiddenLines?: boolean;
|
|
19
|
+
showHatching?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** bim.drawing — 2D architectural drawing generation */
|
|
22
|
+
export declare class DrawingNamespace {
|
|
23
|
+
/** Get available graphic override presets. */
|
|
24
|
+
getPresets(): Promise<unknown[]>;
|
|
25
|
+
/** Get recommended scale for a drawing size. */
|
|
26
|
+
getRecommendedScale(drawingSize: number): Promise<unknown>;
|
|
27
|
+
/** Get available paper sizes. */
|
|
28
|
+
getPaperSizes(): Promise<unknown[]>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=drawing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawing.d.ts","sourceRoot":"","sources":["../../src/namespaces/drawing.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAQD,wDAAwD;AACxD,qBAAa,gBAAgB;IAQ3B,8CAA8C;IACxC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKtC,gDAAgD;IAC1C,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKhE,iCAAiC;IAC3B,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAI1C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
// Dynamic import helper to avoid compile-time module resolution
|
|
5
|
+
async function loadDrawing2D() {
|
|
6
|
+
const name = '@ifc-lite/drawing-2d';
|
|
7
|
+
return import(/* webpackIgnore: true */ name);
|
|
8
|
+
}
|
|
9
|
+
/** bim.drawing — 2D architectural drawing generation */
|
|
10
|
+
export class DrawingNamespace {
|
|
11
|
+
// Drawing generation requires geometry data (MeshData[]) which is internal
|
|
12
|
+
// to the viewer's store. The SDK exposes a high-level API that the viewer's
|
|
13
|
+
// LocalBackend connects to the real geometry.
|
|
14
|
+
//
|
|
15
|
+
// For now, this namespace provides utility functions.
|
|
16
|
+
// Full drawing generation will be wired when the viewer refactors to SDK.
|
|
17
|
+
/** Get available graphic override presets. */
|
|
18
|
+
async getPresets() {
|
|
19
|
+
const mod = await loadDrawing2D();
|
|
20
|
+
return mod.BUILT_IN_PRESETS;
|
|
21
|
+
}
|
|
22
|
+
/** Get recommended scale for a drawing size. */
|
|
23
|
+
async getRecommendedScale(drawingSize) {
|
|
24
|
+
const mod = await loadDrawing2D();
|
|
25
|
+
return mod.getRecommendedScale(drawingSize);
|
|
26
|
+
}
|
|
27
|
+
/** Get available paper sizes. */
|
|
28
|
+
async getPaperSizes() {
|
|
29
|
+
const mod = await loadDrawing2D();
|
|
30
|
+
return mod.PAPER_SIZES;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=drawing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawing.js","sourceRoot":"","sources":["../../src/namespaces/drawing.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyB/D,gEAAgE;AAChE,KAAK,UAAU,aAAa;IAC1B,MAAM,IAAI,GAAG,sBAAsB,CAAC;IACpC,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAqC,CAAC;AACpF,CAAC;AAED,wDAAwD;AACxD,MAAM,OAAO,gBAAgB;IAC3B,2EAA2E;IAC3E,4EAA4E;IAC5E,8CAA8C;IAC9C,EAAE;IACF,sDAAsD;IACtD,0EAA0E;IAE1E,8CAA8C;IAC9C,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,gBAA6B,CAAC;IAC3C,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC3C,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAQ,GAAG,CAAC,mBAA8C,CAAC,WAAW,CAAC,CAAC;IAC1E,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,WAAwB,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BimBackend, BimEventType, BimEventHandler, BimEventData } from '../types.js';
|
|
2
|
+
/** bim.events — Subscribe to viewer state changes */
|
|
3
|
+
export declare class EventsNamespace {
|
|
4
|
+
private backend;
|
|
5
|
+
private unsubscribers;
|
|
6
|
+
private nextId;
|
|
7
|
+
constructor(backend: BimBackend);
|
|
8
|
+
/** Subscribe to an event. Returns unsubscribe function. */
|
|
9
|
+
on<T extends BimEventType>(event: T, handler: BimEventHandler<T>): () => void;
|
|
10
|
+
/** Unsubscribe all listeners */
|
|
11
|
+
removeAll(): void;
|
|
12
|
+
}
|
|
13
|
+
export type { BimEventType, BimEventHandler, BimEventData };
|
|
14
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/namespaces/events.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3F,qDAAqD;AACrD,qBAAa,eAAe;IAId,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAK;gBAEC,OAAO,EAAE,UAAU;IAEvC,2DAA2D;IAC3D,EAAE,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAU7E,gCAAgC;IAChC,SAAS,IAAI,IAAI;CAMlB;AAGD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** bim.events — Subscribe to viewer state changes */
|
|
5
|
+
export class EventsNamespace {
|
|
6
|
+
backend;
|
|
7
|
+
unsubscribers = new Map();
|
|
8
|
+
nextId = 0;
|
|
9
|
+
constructor(backend) {
|
|
10
|
+
this.backend = backend;
|
|
11
|
+
}
|
|
12
|
+
/** Subscribe to an event. Returns unsubscribe function. */
|
|
13
|
+
on(event, handler) {
|
|
14
|
+
const id = `${event}-${this.nextId++}`;
|
|
15
|
+
const unsub = this.backend.subscribe(event, handler);
|
|
16
|
+
this.unsubscribers.set(id, unsub);
|
|
17
|
+
return () => {
|
|
18
|
+
unsub();
|
|
19
|
+
this.unsubscribers.delete(id);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Unsubscribe all listeners */
|
|
23
|
+
removeAll() {
|
|
24
|
+
for (const unsub of this.unsubscribers.values()) {
|
|
25
|
+
unsub();
|
|
26
|
+
}
|
|
27
|
+
this.unsubscribers.clear();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/namespaces/events.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,qDAAqD;AACrD,MAAM,OAAO,eAAe;IAIN;IAHZ,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,MAAM,GAAG,CAAC,CAAC;IAEnB,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE3C,2DAA2D;IAC3D,EAAE,CAAyB,KAAQ,EAAE,OAA2B;QAC9D,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAkC,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,SAAS;QACP,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,KAAK,EAAE,CAAC;QACV,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bim.export — Multi-format data export
|
|
3
|
+
*
|
|
4
|
+
* Wraps @ifc-lite/export for GLTF, CSV, STEP, and Parquet export.
|
|
5
|
+
* The export namespace works with EntityRef to determine which
|
|
6
|
+
* entities to include, and delegates to the appropriate exporter.
|
|
7
|
+
*/
|
|
8
|
+
import type { BimBackend, EntityRef } from '../types.js';
|
|
9
|
+
export interface ExportCsvOptions {
|
|
10
|
+
columns: string[];
|
|
11
|
+
filename?: string;
|
|
12
|
+
separator?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ExportGltfOptions {
|
|
15
|
+
filename?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ExportStepOptions {
|
|
18
|
+
filename?: string;
|
|
19
|
+
includeMutations?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** bim.export — Data export in multiple formats */
|
|
22
|
+
export declare class ExportNamespace {
|
|
23
|
+
private backend;
|
|
24
|
+
constructor(backend: BimBackend);
|
|
25
|
+
/**
|
|
26
|
+
* Export entities to CSV format.
|
|
27
|
+
* Columns can be entity attributes (name, type, globalId) or
|
|
28
|
+
* property paths (Pset_WallCommon.FireRating).
|
|
29
|
+
*/
|
|
30
|
+
csv(refs: EntityRef[], options: ExportCsvOptions): string;
|
|
31
|
+
/**
|
|
32
|
+
* Export entities as a JSON array of objects.
|
|
33
|
+
* Each object has the specified columns as keys.
|
|
34
|
+
*/
|
|
35
|
+
json(refs: EntityRef[], columns: string[]): Record<string, unknown>[];
|
|
36
|
+
private escapeCsv;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/namespaces/export.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAA+B,MAAM,aAAa,CAAC;AAEtF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,mDAAmD;AACnD,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU;IAEvC;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAuDzD;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAsCrE,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** bim.export — Data export in multiple formats */
|
|
5
|
+
export class ExportNamespace {
|
|
6
|
+
backend;
|
|
7
|
+
constructor(backend) {
|
|
8
|
+
this.backend = backend;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Export entities to CSV format.
|
|
12
|
+
* Columns can be entity attributes (name, type, globalId) or
|
|
13
|
+
* property paths (Pset_WallCommon.FireRating).
|
|
14
|
+
*/
|
|
15
|
+
csv(refs, options) {
|
|
16
|
+
const rows = [];
|
|
17
|
+
// Check if any columns need property lookups (Pset.Property paths)
|
|
18
|
+
const hasPropertyColumns = options.columns.some(c => c.indexOf('.') > 0);
|
|
19
|
+
// Header row
|
|
20
|
+
rows.push(options.columns);
|
|
21
|
+
// Data rows
|
|
22
|
+
for (const ref of refs) {
|
|
23
|
+
const data = this.backend.query.entityData(ref);
|
|
24
|
+
if (!data)
|
|
25
|
+
continue;
|
|
26
|
+
// Fetch properties once per entity (not per column)
|
|
27
|
+
let psets = null;
|
|
28
|
+
if (hasPropertyColumns) {
|
|
29
|
+
psets = this.backend.query.properties(ref);
|
|
30
|
+
}
|
|
31
|
+
const row = [];
|
|
32
|
+
for (const col of options.columns) {
|
|
33
|
+
// IFC PascalCase attribute names (per IFC EXPRESS schema) — also accept legacy camelCase
|
|
34
|
+
if (col === 'Name' || col === 'name') {
|
|
35
|
+
row.push(data.name);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (col === 'Type' || col === 'type') {
|
|
39
|
+
row.push(data.type);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (col === 'GlobalId' || col === 'globalId') {
|
|
43
|
+
row.push(data.globalId);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (col === 'Description' || col === 'description') {
|
|
47
|
+
row.push(data.description);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (col === 'ObjectType' || col === 'objectType') {
|
|
51
|
+
row.push(data.objectType);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// Property path: "PsetName.PropertyName"
|
|
55
|
+
const dotIdx = col.indexOf('.');
|
|
56
|
+
if (dotIdx > 0 && psets) {
|
|
57
|
+
const psetName = col.slice(0, dotIdx);
|
|
58
|
+
const propName = col.slice(dotIdx + 1);
|
|
59
|
+
const pset = psets.find(p => p.name === psetName);
|
|
60
|
+
const prop = pset?.properties.find(p => p.name === propName);
|
|
61
|
+
row.push(prop?.value != null ? String(prop.value) : '');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
row.push('');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
rows.push(row);
|
|
68
|
+
}
|
|
69
|
+
const sep = options.separator ?? ',';
|
|
70
|
+
const csvString = rows.map(r => r.map(cell => this.escapeCsv(cell, sep)).join(sep)).join('\n');
|
|
71
|
+
// Trigger browser download if filename specified
|
|
72
|
+
if (options.filename) {
|
|
73
|
+
this.backend.export.download(csvString, options.filename, 'text/csv;charset=utf-8;');
|
|
74
|
+
}
|
|
75
|
+
return csvString;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Export entities as a JSON array of objects.
|
|
79
|
+
* Each object has the specified columns as keys.
|
|
80
|
+
*/
|
|
81
|
+
json(refs, columns) {
|
|
82
|
+
const result = [];
|
|
83
|
+
const hasPropertyColumns = columns.some(c => c.indexOf('.') > 0);
|
|
84
|
+
for (const ref of refs) {
|
|
85
|
+
const data = this.backend.query.entityData(ref);
|
|
86
|
+
if (!data)
|
|
87
|
+
continue;
|
|
88
|
+
// Fetch properties once per entity (not per column)
|
|
89
|
+
let psets = null;
|
|
90
|
+
if (hasPropertyColumns) {
|
|
91
|
+
psets = this.backend.query.properties(ref);
|
|
92
|
+
}
|
|
93
|
+
const row = {};
|
|
94
|
+
for (const col of columns) {
|
|
95
|
+
// IFC PascalCase attribute names (per IFC EXPRESS schema) — also accept legacy camelCase
|
|
96
|
+
if (col === 'Name' || col === 'name') {
|
|
97
|
+
row[col] = data.name;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (col === 'Type' || col === 'type') {
|
|
101
|
+
row[col] = data.type;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (col === 'GlobalId' || col === 'globalId') {
|
|
105
|
+
row[col] = data.globalId;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (col === 'Description' || col === 'description') {
|
|
109
|
+
row[col] = data.description;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (col === 'ObjectType' || col === 'objectType') {
|
|
113
|
+
row[col] = data.objectType;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const dotIdx = col.indexOf('.');
|
|
117
|
+
if (dotIdx > 0 && psets) {
|
|
118
|
+
const psetName = col.slice(0, dotIdx);
|
|
119
|
+
const propName = col.slice(dotIdx + 1);
|
|
120
|
+
const pset = psets.find(p => p.name === psetName);
|
|
121
|
+
const prop = pset?.properties.find(p => p.name === propName);
|
|
122
|
+
row[col] = prop?.value ?? null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
result.push(row);
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
escapeCsv(value, sep) {
|
|
130
|
+
if (value.includes(sep) || value.includes('"') || value.includes('\n')) {
|
|
131
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/namespaces/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bim.ids — IDS validation
|
|
3
|
+
*
|
|
4
|
+
* Exposes parsing, validation, and reporting for IDS (Information Delivery Specification).
|
|
5
|
+
* Uses dynamic imports to @ifc-lite/ids.
|
|
6
|
+
*/
|
|
7
|
+
export interface IDSValidationSummary {
|
|
8
|
+
totalSpecifications: number;
|
|
9
|
+
passedSpecifications: number;
|
|
10
|
+
failedSpecifications: number;
|
|
11
|
+
totalEntities: number;
|
|
12
|
+
passedEntities: number;
|
|
13
|
+
failedEntities: number;
|
|
14
|
+
}
|
|
15
|
+
/** bim.ids — IDS (Information Delivery Specification) validation */
|
|
16
|
+
export declare class IDSNamespace {
|
|
17
|
+
/** Parse an IDS XML document. */
|
|
18
|
+
parse(xmlContent: string): Promise<unknown>;
|
|
19
|
+
/** Summarize a validation report. */
|
|
20
|
+
summarize(report: {
|
|
21
|
+
specificationResults: Array<{
|
|
22
|
+
entityResults: Array<{
|
|
23
|
+
passed: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
}>;
|
|
26
|
+
}): IDSValidationSummary;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ids.d.ts.map
|