@ifc-lite/sdk 9.0.0 → 9.3.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/README.md +60 -0
- package/dist/cost-store-backend.d.ts +2 -0
- package/dist/cost-store-backend.d.ts.map +1 -1
- package/dist/cost-store-backend.js.map +1 -1
- package/dist/group-store-backend.d.ts +5 -0
- package/dist/group-store-backend.d.ts.map +1 -0
- package/dist/group-store-backend.js +43 -0
- package/dist/group-store-backend.js.map +1 -0
- package/dist/headless-mutate.d.ts +0 -10
- package/dist/headless-mutate.d.ts.map +1 -1
- package/dist/headless-mutate.js +8 -2
- package/dist/headless-mutate.js.map +1 -1
- package/dist/host.d.ts +2 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +34 -11
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +6 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/namespaces/ids-authoring.d.ts +74 -0
- package/dist/namespaces/ids-authoring.d.ts.map +1 -0
- package/dist/namespaces/ids-authoring.js +99 -0
- package/dist/namespaces/ids-authoring.js.map +1 -0
- package/dist/namespaces/ids.d.ts +4 -0
- package/dist/namespaces/ids.d.ts.map +1 -1
- package/dist/namespaces/ids.js +11 -0
- package/dist/namespaces/ids.js.map +1 -1
- package/dist/namespaces/mutate.d.ts +3 -3
- package/dist/namespaces/mutate.d.ts.map +1 -1
- package/dist/namespaces/mutate.js +7 -3
- package/dist/namespaces/mutate.js.map +1 -1
- package/dist/namespaces/store-group.d.ts +9 -0
- package/dist/namespaces/store-group.d.ts.map +1 -0
- package/dist/namespaces/store-group.js +31 -0
- package/dist/namespaces/store-group.js.map +1 -0
- package/dist/namespaces/store-modelling.d.ts +42 -1
- package/dist/namespaces/store-modelling.d.ts.map +1 -1
- package/dist/namespaces/store-modelling.js +119 -0
- package/dist/namespaces/store-modelling.js.map +1 -1
- package/dist/namespaces/store.d.ts +14 -13
- package/dist/namespaces/store.d.ts.map +1 -1
- package/dist/namespaces/store.js +10 -9
- package/dist/namespaces/store.js.map +1 -1
- package/dist/review/bcf.d.ts +10 -0
- package/dist/review/bcf.d.ts.map +1 -0
- package/dist/review/bcf.js +33 -0
- package/dist/review/bcf.js.map +1 -0
- package/dist/review/capture-budget.d.ts +6 -0
- package/dist/review/capture-budget.d.ts.map +1 -0
- package/dist/review/capture-budget.js +47 -0
- package/dist/review/capture-budget.js.map +1 -0
- package/dist/review/capture-retention.d.ts +47 -0
- package/dist/review/capture-retention.d.ts.map +1 -0
- package/dist/review/capture-retention.js +141 -0
- package/dist/review/capture-retention.js.map +1 -0
- package/dist/review/capture-types.d.ts +57 -0
- package/dist/review/capture-types.d.ts.map +1 -0
- package/dist/review/capture-types.js +5 -0
- package/dist/review/capture-types.js.map +1 -0
- package/dist/review/cards.d.ts +60 -0
- package/dist/review/cards.d.ts.map +1 -0
- package/dist/review/cards.js +90 -0
- package/dist/review/cards.js.map +1 -0
- package/dist/review/disciplines.d.ts +3 -0
- package/dist/review/disciplines.d.ts.map +1 -0
- package/dist/review/disciplines.js +10 -0
- package/dist/review/disciplines.js.map +1 -0
- package/dist/review/identity.d.ts +27 -0
- package/dist/review/identity.d.ts.map +1 -0
- package/dist/review/identity.js +42 -0
- package/dist/review/identity.js.map +1 -0
- package/dist/review/native-captures.d.ts +21 -0
- package/dist/review/native-captures.d.ts.map +1 -0
- package/dist/review/native-captures.js +325 -0
- package/dist/review/native-captures.js.map +1 -0
- package/dist/review/native-snapshot.d.ts +47 -0
- package/dist/review/native-snapshot.d.ts.map +1 -0
- package/dist/review/native-snapshot.js +98 -0
- package/dist/review/native-snapshot.js.map +1 -0
- package/dist/review/portable-analysis-binding.d.ts +29 -0
- package/dist/review/portable-analysis-binding.d.ts.map +1 -0
- package/dist/review/portable-analysis-binding.js +60 -0
- package/dist/review/portable-analysis-binding.js.map +1 -0
- package/dist/review/portable-analysis.d.ts +103 -0
- package/dist/review/portable-analysis.d.ts.map +1 -0
- package/dist/review/portable-analysis.js +119 -0
- package/dist/review/portable-analysis.js.map +1 -0
- package/dist/review/portable-automation-provenance.d.ts +32 -0
- package/dist/review/portable-automation-provenance.d.ts.map +1 -0
- package/dist/review/portable-automation-provenance.js +68 -0
- package/dist/review/portable-automation-provenance.js.map +1 -0
- package/dist/review/portable-ids-report.d.ts +125 -0
- package/dist/review/portable-ids-report.d.ts.map +1 -0
- package/dist/review/portable-ids-report.js +124 -0
- package/dist/review/portable-ids-report.js.map +1 -0
- package/dist/review/portable-manual-report.d.ts +66 -0
- package/dist/review/portable-manual-report.d.ts.map +1 -0
- package/dist/review/portable-manual-report.js +121 -0
- package/dist/review/portable-manual-report.js.map +1 -0
- package/dist/review/portable-report-metadata.d.ts +42 -0
- package/dist/review/portable-report-metadata.d.ts.map +1 -0
- package/dist/review/portable-report-metadata.js +41 -0
- package/dist/review/portable-report-metadata.js.map +1 -0
- package/dist/review/portable-saved-validation.d.ts +12 -0
- package/dist/review/portable-saved-validation.d.ts.map +1 -0
- package/dist/review/portable-saved-validation.js +32 -0
- package/dist/review/portable-saved-validation.js.map +1 -0
- package/dist/review/portable-validation-evidence.d.ts +53 -0
- package/dist/review/portable-validation-evidence.d.ts.map +1 -0
- package/dist/review/portable-validation-evidence.js +52 -0
- package/dist/review/portable-validation-evidence.js.map +1 -0
- package/dist/review/snapshot.d.ts +15 -0
- package/dist/review/snapshot.d.ts.map +1 -0
- package/dist/review/snapshot.js +25 -0
- package/dist/review/snapshot.js.map +1 -0
- package/dist/review/types.d.ts +167 -0
- package/dist/review/types.d.ts.map +1 -0
- package/dist/review/types.js +11 -0
- package/dist/review/types.js.map +1 -0
- package/dist/review/validation.d.ts +14 -0
- package/dist/review/validation.d.ts.map +1 -0
- package/dist/review/validation.js +57 -0
- package/dist/review/validation.js.map +1 -0
- package/dist/review.d.ts +27 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +23 -0
- package/dist/review.js.map +1 -0
- package/dist/schedule-types.d.ts +4 -0
- package/dist/schedule-types.d.ts.map +1 -1
- package/dist/store-align-command.d.ts +13 -0
- package/dist/store-align-command.d.ts.map +1 -0
- package/dist/store-align-command.js +31 -0
- package/dist/store-align-command.js.map +1 -0
- package/dist/store-authoring-exports.d.ts +10 -0
- package/dist/store-authoring-exports.d.ts.map +1 -0
- package/dist/store-authoring-exports.js +9 -0
- package/dist/store-authoring-exports.js.map +1 -0
- package/dist/store-authoring-types.d.ts +8 -0
- package/dist/store-authoring-types.d.ts.map +1 -0
- package/dist/store-authoring-types.js +2 -0
- package/dist/store-authoring-types.js.map +1 -0
- package/dist/store-group-types.d.ts +20 -0
- package/dist/store-group-types.d.ts.map +1 -0
- package/dist/store-group-types.js +2 -0
- package/dist/store-group-types.js.map +1 -0
- package/dist/store-modelling-backend.d.ts.map +1 -1
- package/dist/store-modelling-backend.js +61 -1
- package/dist/store-modelling-backend.js.map +1 -1
- package/dist/store-modelling-types.d.ts +31 -2
- package/dist/store-modelling-types.d.ts.map +1 -1
- package/dist/store-ordinary-backend.d.ts +10 -0
- package/dist/store-ordinary-backend.d.ts.map +1 -0
- package/dist/store-ordinary-backend.js +27 -0
- package/dist/store-ordinary-backend.js.map +1 -0
- package/dist/store-physical-backend.d.ts +5 -0
- package/dist/store-physical-backend.d.ts.map +1 -0
- package/dist/store-physical-backend.js +51 -0
- package/dist/store-physical-backend.js.map +1 -0
- package/dist/store-physical-types.d.ts +33 -0
- package/dist/store-physical-types.d.ts.map +1 -0
- package/dist/store-physical-types.js +5 -0
- package/dist/store-physical-types.js.map +1 -0
- package/dist/store-room-auto-all.d.ts +5 -0
- package/dist/store-room-auto-all.d.ts.map +1 -0
- package/dist/store-room-auto-all.js +94 -0
- package/dist/store-room-auto-all.js.map +1 -0
- package/dist/store-room-command.d.ts +91 -0
- package/dist/store-room-command.d.ts.map +1 -0
- package/dist/store-room-command.js +197 -0
- package/dist/store-room-command.js.map +1 -0
- package/dist/types.d.ts +12 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +21 -14
|
@@ -0,0 +1,31 @@
|
|
|
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 { alignElementsInStore, alignmentStoreyInStore } from '@ifc-lite/create';
|
|
5
|
+
/** Native preparation completes before the one synchronous atomic history record. */
|
|
6
|
+
export function createAlignCommandBackend(resolve, provide, host) {
|
|
7
|
+
const preparing = new Set();
|
|
8
|
+
const journal = (model) => model.mutationView.getMutations().map(m => m.id).join('|');
|
|
9
|
+
return {
|
|
10
|
+
async alignElements(modelId, reference, targets, mode) {
|
|
11
|
+
if (preparing.has(modelId))
|
|
12
|
+
throw new Error('Another Align command is preparing this model');
|
|
13
|
+
preparing.add(modelId);
|
|
14
|
+
try {
|
|
15
|
+
const model = resolve(modelId), head = host.historyHead(modelId), changes = journal(model);
|
|
16
|
+
const params = { reference, targets: [...targets], mode };
|
|
17
|
+
const storey = alignmentStoreyInStore({ dataStore: model.store, view: model.mutationView }, params);
|
|
18
|
+
const boxes = await provide(model, storey, [reference, ...params.targets]);
|
|
19
|
+
const current = resolve(modelId);
|
|
20
|
+
if (current.store !== model.store || current.mutationView !== model.mutationView || head !== host.historyHead(modelId) || changes !== journal(current))
|
|
21
|
+
throw new Error('The model changed while native Align geometry was preparing; retry the command');
|
|
22
|
+
const result = host.record(modelId, draft => draft.editor.runAtomic(editor => alignElementsInStore({ dataStore: draft.store, view: editor.getMutationView(), editor }, params, boxes)));
|
|
23
|
+
return result.remesh.map(expressId => ({ modelId, expressId }));
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
preparing.delete(modelId);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=store-align-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-align-command.js","sourceRoot":"","sources":["../src/store-align-command.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAgC,MAAM,kBAAkB,CAAC;AAU9G,qFAAqF;AACrF,MAAM,UAAU,yBAAyB,CAAC,OAAsD,EAAE,OAA8B,EAAE,IAAsB;IACtJ,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,KAA+B,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChH,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,SAAiB,EAAE,OAA0B,EAAE,IAAe;YACjG,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC7F,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3F,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;gBACpG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;gBAC1P,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxL,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;oBAAS,CAAC;gBAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { createCostStoreBackend, type CostStoreModelResolution, type CostStoreModelResolver } from './cost-store-backend.js';
|
|
2
|
+
export { createStructuralStoreBackend, type StructuralStoreModelResolver } from './store-structural-backend.js';
|
|
3
|
+
export { createModellingStoreBackend, type ModellingStoreModelResolver } from './store-modelling-backend.js';
|
|
4
|
+
export { createOrdinaryStoreBackend, type OrdinaryStoreBackendMethods } from './store-ordinary-backend.js';
|
|
5
|
+
export { createGroupStoreBackend } from './group-store-backend.js';
|
|
6
|
+
export type { CostStoreBackendMethods } from './store-cost-types.js';
|
|
7
|
+
export type { StructuralStoreBackendMethods } from './store-structural-types.js';
|
|
8
|
+
export type { ModellingStoreBackendMethods } from './store-modelling-types.js';
|
|
9
|
+
export type { GroupStoreBackendMethods, GroupStoreIdentity, GroupStoreSnapshot, GroupStoreCreateParams, GroupStorePatch } from './store-group-types.js';
|
|
10
|
+
//# sourceMappingURL=store-authoring-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-authoring-exports.d.ts","sourceRoot":"","sources":["../src/store-authoring-exports.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,KAAK,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7H,OAAO,EAAE,4BAA4B,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAE,KAAK,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,0BAA0B,EAAE,KAAK,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,YAAY,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
export { createCostStoreBackend } from './cost-store-backend.js';
|
|
5
|
+
export { createStructuralStoreBackend } from './store-structural-backend.js';
|
|
6
|
+
export { createModellingStoreBackend } from './store-modelling-backend.js';
|
|
7
|
+
export { createOrdinaryStoreBackend } from './store-ordinary-backend.js';
|
|
8
|
+
export { createGroupStoreBackend } from './group-store-backend.js';
|
|
9
|
+
//# sourceMappingURL=store-authoring-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-authoring-exports.js","sourceRoot":"","sources":["../src/store-authoring-exports.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAC/D,OAAO,EAAE,sBAAsB,EAA8D,MAAM,yBAAyB,CAAC;AAC7H,OAAO,EAAE,4BAA4B,EAAqC,MAAM,+BAA+B,CAAC;AAChH,OAAO,EAAE,2BAA2B,EAAoC,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,0BAA0B,EAAoC,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CostStoreBackendMethods } from './store-cost-types.js';
|
|
2
|
+
import type { StructuralStoreBackendMethods } from './store-structural-types.js';
|
|
3
|
+
import type { ModellingStoreBackendMethods } from './store-modelling-types.js';
|
|
4
|
+
import type { GroupStoreBackendMethods } from './store-group-types.js';
|
|
5
|
+
/** Shared authoring capabilities keep the main backend declaration inside its size budget. */
|
|
6
|
+
export interface StoreAuthoringBackendMethods extends CostStoreBackendMethods, StructuralStoreBackendMethods, ModellingStoreBackendMethods, GroupStoreBackendMethods {
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=store-authoring-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-authoring-types.d.ts","sourceRoot":"","sources":["../src/store-authoring-types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,8FAA8F;AAC9F,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,wBAAwB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-authoring-types.js","sourceRoot":"","sources":["../src/store-authoring-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GroupInStoreParams, GroupInStorePatch, GroupRootIdentity, GroupSnapshot } from '@ifc-lite/create';
|
|
2
|
+
import type { EntityRef } from './types.js';
|
|
3
|
+
/** A current Root identity belonging to one explicit loaded source. */
|
|
4
|
+
export type GroupStoreIdentity = EntityRef & GroupRootIdentity;
|
|
5
|
+
export type GroupStoreSnapshot = GroupSnapshot & {
|
|
6
|
+
modelId: string;
|
|
7
|
+
};
|
|
8
|
+
export type GroupStoreCreateParams = Omit<GroupInStoreParams, 'RelatedObjects'> & {
|
|
9
|
+
RelatedObjects: readonly GroupStoreIdentity[];
|
|
10
|
+
};
|
|
11
|
+
export type GroupStorePatch = Omit<GroupInStorePatch, 'RelatedObjects'> & {
|
|
12
|
+
RelatedObjects: readonly GroupStoreIdentity[];
|
|
13
|
+
};
|
|
14
|
+
export interface GroupStoreBackendMethods {
|
|
15
|
+
readGroup?(target: GroupStoreIdentity): GroupStoreSnapshot;
|
|
16
|
+
addGroup?(modelId: string, params: GroupStoreCreateParams): GroupStoreIdentity;
|
|
17
|
+
updateGroup?(expected: GroupStoreSnapshot, patch: GroupStorePatch): GroupStoreIdentity;
|
|
18
|
+
removeGroup?(expected: GroupStoreSnapshot): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=store-group-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-group-types.d.ts","sourceRoot":"","sources":["../src/store-group-types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG;IAAE,cAAc,EAAE,SAAS,kBAAkB,EAAE,CAAA;CAAE,CAAC;AACpI,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG;IAAE,cAAc,EAAE,SAAS,kBAAkB,EAAE,CAAA;CAAE,CAAC;AAE5H,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;IAC3D,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,kBAAkB,CAAC;IAC/E,WAAW,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,GAAG,kBAAkB,CAAC;IACvF,WAAW,CAAC,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-group-types.js","sourceRoot":"","sources":["../src/store-group-types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-modelling-backend.d.ts","sourceRoot":"","sources":["../src/store-modelling-backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store-modelling-backend.d.ts","sourceRoot":"","sources":["../src/store-modelling-backend.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAI/E,uEAAuE;AACvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,wBAAwB,CAAC;AAEzF,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,2BAA2B,GAAG,4BAA4B,CA6I9G"}
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* live mutation view, so a wall authored earlier in the same session can take
|
|
13
13
|
* an opening exactly like one read from the file.
|
|
14
14
|
*/
|
|
15
|
-
import { addElementTypeToStore, addMaterialLayerSetToStore, addMaterialLayerSetUsageToStore, addMaterialToStore, assignMaterialInStore, assignTypeInStore, joinWallsInStore, resolveWallJoinAnchor, liveEntityConforms, liveEntityType, readRelatedLists, resolveAuthoringAnchor, addHostedElementInStore, } from '@ifc-lite/create';
|
|
15
|
+
import { copyBatchInStore, arrayCopyTransforms, editHostedElementInStore, addCurtainWallToStore, addGridToStore, addColumnOnGridToStore, addElementTypeToStore, addMaterialLayerSetToStore, addMaterialLayerSetUsageToStore, addMaterialToStore, assignMaterialInStore, assignTypeInStore, joinWallsInStore, resolveWallJoinAnchor, liveEntityConforms, liveEntityType, readRelatedLists, resolveAuthoringAnchor, addHostedElementInStore, addStairToStore, addRailingToStore, resolveSpatialAnchor, removeStairInStore, replaceElementInStore, } from '@ifc-lite/create';
|
|
16
|
+
import { createPhysicalStoreBackend } from './store-physical-backend.js';
|
|
16
17
|
export function createModellingStoreBackend(resolve) {
|
|
17
18
|
const ref = (modelId, expressId) => ({ modelId, expressId });
|
|
18
19
|
const authoring = (modelId) => {
|
|
@@ -35,6 +36,65 @@ export function createModellingStoreBackend(resolve) {
|
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
38
|
return {
|
|
39
|
+
...createPhysicalStoreBackend(resolve),
|
|
40
|
+
copyElements(modelId, expressIds, transforms) {
|
|
41
|
+
const model = resolve(modelId);
|
|
42
|
+
return copyBatchInStore(model.store, model.editor, expressIds, transforms)
|
|
43
|
+
.map(result => ref(model.modelId, result.copyId));
|
|
44
|
+
},
|
|
45
|
+
duplicateElement(entity, options) {
|
|
46
|
+
const model = resolve(entity.modelId);
|
|
47
|
+
const [result] = copyBatchInStore(model.store, model.editor, [entity.expressId], [{ offset: options.offset }], { duplicate: { name: options.Name } });
|
|
48
|
+
return ref(model.modelId, result.copyId);
|
|
49
|
+
},
|
|
50
|
+
arrayElements(modelId, expressIds, params) {
|
|
51
|
+
const transforms = arrayCopyTransforms(params);
|
|
52
|
+
if (!transforms)
|
|
53
|
+
throw new Error('Array requires an anchor and a nonzero linear direction');
|
|
54
|
+
const model = resolve(modelId);
|
|
55
|
+
return copyBatchInStore(model.store, model.editor, expressIds, transforms)
|
|
56
|
+
.map(result => ref(model.modelId, result.copyId));
|
|
57
|
+
},
|
|
58
|
+
editHostedElement(entity, patch) {
|
|
59
|
+
const model = resolve(entity.modelId);
|
|
60
|
+
editHostedElementInStore(model.store, model.editor, entity.expressId, patch);
|
|
61
|
+
return ref(model.modelId, entity.expressId);
|
|
62
|
+
},
|
|
63
|
+
addCurtainWall(modelId, storeyExpressId, params) {
|
|
64
|
+
const model = resolve(modelId);
|
|
65
|
+
const built = model.editor.runAtomic(draft => addCurtainWallToStore(draft, resolveSpatialAnchor(model.store, storeyExpressId, draft.getMutationView()), params));
|
|
66
|
+
return ref(model.modelId, built.curtainWallId);
|
|
67
|
+
},
|
|
68
|
+
addGrid(modelId, storeyExpressId, params) {
|
|
69
|
+
const model = resolve(modelId);
|
|
70
|
+
const built = model.editor.runAtomic(draft => addGridToStore(draft, resolveSpatialAnchor(model.store, storeyExpressId, draft.getMutationView()), params));
|
|
71
|
+
return ref(model.modelId, built.gridId);
|
|
72
|
+
},
|
|
73
|
+
addColumnOnGrid(modelId, storeyExpressId, params, binding) {
|
|
74
|
+
const model = resolve(modelId);
|
|
75
|
+
const built = model.editor.runAtomic(draft => addColumnOnGridToStore(draft, model.store, resolveSpatialAnchor(model.store, storeyExpressId, draft.getMutationView()), params, binding));
|
|
76
|
+
return ref(model.modelId, built.columnId);
|
|
77
|
+
},
|
|
78
|
+
replaceElement(entity, storeyExpressId, element) {
|
|
79
|
+
const model = resolve(entity.modelId);
|
|
80
|
+
const built = replaceElementInStore(model.store, model.editor, entity.expressId, draft => resolveSpatialAnchor(model.store, storeyExpressId, draft.getMutationView()), element);
|
|
81
|
+
return ref(model.modelId, built.expressId);
|
|
82
|
+
},
|
|
83
|
+
removeStair(entity) {
|
|
84
|
+
const model = resolve(entity.modelId);
|
|
85
|
+
removeStairInStore(model.store, model.editor, entity.expressId);
|
|
86
|
+
return true;
|
|
87
|
+
},
|
|
88
|
+
addStair(modelId, storeyExpressId, params) {
|
|
89
|
+
const model = resolve(modelId);
|
|
90
|
+
const built = model.editor.runAtomic(draft => addStairToStore(draft, resolveSpatialAnchor(model.store, storeyExpressId, draft.getMutationView()), params));
|
|
91
|
+
return ref(model.modelId, built.stairId);
|
|
92
|
+
},
|
|
93
|
+
addRailing(modelId, storeyExpressId, params) {
|
|
94
|
+
const model = resolve(modelId);
|
|
95
|
+
const built = model.editor.runAtomic(draft => addRailingToStore(draft, resolveSpatialAnchor(model.store, storeyExpressId, draft.getMutationView()), params));
|
|
96
|
+
return ref(model.modelId, built.railingId);
|
|
97
|
+
},
|
|
38
98
|
joinWalls(modelId, aExpressId, bExpressId, options = {}) {
|
|
39
99
|
const model = resolve(modelId);
|
|
40
100
|
const joined = model.editor.runAtomic(draft => joinWallsInStore(draft, model.store, resolveWallJoinAnchor(model.store, draft.getMutationView()), aExpressId, bExpressId, options));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-modelling-backend.js","sourceRoot":"","sources":["../src/store-modelling-backend.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,+BAA+B,EAC/B,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EAKtB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"store-modelling-backend.js","sourceRoot":"","sources":["../src/store-modelling-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,38 @@
|
|
|
4
4
|
* of `types.ts` (allowlisted, at budget) like `store-structural-types.ts`, and
|
|
5
5
|
* like it the param shapes come straight from `@ifc-lite/create`.
|
|
6
6
|
*/
|
|
7
|
-
import type { ElementTypeInStoreParams, MaterialInStoreParams, MaterialLayerSetInStoreParams, MaterialLayerSetUsageInStoreParams, HostedDoorInStoreParams, HostedWindowInStoreParams, OpeningInStoreParams, WallJoinApplyOptions } from '@ifc-lite/create';
|
|
7
|
+
import type { CopyTransform, CopyArrayParams, HostedElementEdit, CurtainWallInStoreParams, GridInStoreParams, GridColumnBinding, ColumnInStoreParams, ProfiledColumnInStoreParams, ElementTypeInStoreParams, MaterialInStoreParams, MaterialLayerSetInStoreParams, MaterialLayerSetUsageInStoreParams, HostedDoorInStoreParams, HostedWindowInStoreParams, OpeningInStoreParams, WallJoinApplyOptions, InStoreReplacementElement, StairInStoreParams, RailingInStoreParams } from '@ifc-lite/create';
|
|
8
|
+
import type { RoomCommand, RoomCommandResult } from './store-room-command.js';
|
|
8
9
|
import type { EntityRef } from './types.js';
|
|
9
|
-
|
|
10
|
+
import type { PhysicalStoreBackendMethods } from './store-physical-types.js';
|
|
11
|
+
export interface ModellingStoreBackendMethods extends PhysicalStoreBackendMethods {
|
|
12
|
+
/** Native mesh/DCEL Room operations with atomic history-aware layout edits. */
|
|
13
|
+
roomCommand?(modelId: string, storeyId: number, command: RoomCommand): Promise<RoomCommandResult>;
|
|
14
|
+
/** Copy a dependency-pruned selection once per storey-local transform, atomically. */
|
|
15
|
+
copyElements?(modelId: string, expressIds: readonly number[], transforms: readonly CopyTransform[]): EntityRef[];
|
|
16
|
+
/** Duplicate with the viewer naming policy; explicit storey-local IFC XYZ displacement. */
|
|
17
|
+
duplicateElement?(ref: EntityRef, options: {
|
|
18
|
+
offset: [number, number, number];
|
|
19
|
+
Name?: string;
|
|
20
|
+
}): EntityRef;
|
|
21
|
+
/** Array count includes the original; full circles exclude a coincident final copy. */
|
|
22
|
+
arrayElements?(modelId: string, expressIds: readonly number[], params: CopyArrayParams): EntityRef[];
|
|
23
|
+
/** Edit the physical hosted cut/filling together, preserving identity and relationships. Metres, host-local. */
|
|
24
|
+
editHostedElement?(ref: EntityRef, patch: HostedElementEdit): EntityRef;
|
|
25
|
+
/** Complete IfcCurtainWall aggregate, including its member and panel bodies. */
|
|
26
|
+
addCurtainWall?(modelId: string, storeyExpressId: number, params: CurtainWallInStoreParams): EntityRef;
|
|
27
|
+
/** IfcGrid with straight, tagged axes and its FootPrint representation. */
|
|
28
|
+
addGrid?(modelId: string, storeyExpressId: number, params: GridInStoreParams): EntityRef;
|
|
29
|
+
/** Persist a column on a live grid crossing; stale or foreign bindings are refused. */
|
|
30
|
+
addColumnOnGrid?(modelId: string, storeyExpressId: number, params: ColumnInStoreParams | ProfiledColumnInStoreParams, binding: GridColumnBinding): EntityRef;
|
|
31
|
+
/** Optional capability: replace a live product and its uniquely owned stair flight atomically. */
|
|
32
|
+
replaceElement?(ref: EntityRef, storeyExpressId: number, element: InStoreReplacementElement): EntityRef;
|
|
33
|
+
/** Optional host capability: a storey-local IfcStair aggregating one IfcStairFlight. Returns the stair. */
|
|
34
|
+
addStair?(modelId: string, storeyExpressId: number, params: StairInStoreParams): EntityRef;
|
|
35
|
+
/** Optional host capability: an IfcRailing along a storey-local polyline. Returns the railing. */
|
|
36
|
+
addRailing?(modelId: string, storeyExpressId: number, params: RailingInStoreParams): EntityRef;
|
|
37
|
+
/** Optional host capability: atomically remove a uniquely owned single-flight stair assembly. */
|
|
38
|
+
removeStair?(ref: EntityRef): boolean;
|
|
10
39
|
/** Join two straight walls through IfcRelConnectsPathElements, rewriting their bodies/axes atomically. Returns the relationship. */
|
|
11
40
|
joinWalls(modelId: string, aExpressId: number, bExpressId: number, options?: WallJoinApplyOptions): EntityRef;
|
|
12
41
|
/** `IfcOpeningElement` + `IfcRelVoidsElement` cut into an existing IfcWall or IfcSlab. Returns the opening. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-modelling-types.d.ts","sourceRoot":"","sources":["../src/store-modelling-types.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,6BAA6B,EAC7B,kCAAkC,EAClC,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"store-modelling-types.d.ts","sourceRoot":"","sources":["../src/store-modelling-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CostStoreModelResolution } from './cost-store-backend.js';
|
|
2
|
+
import type { StoreBackendMethods } from './types.js';
|
|
3
|
+
/** Existing ordinary creation methods, without adding required backend members. */
|
|
4
|
+
export type OrdinaryStoreBackendMethods = Pick<StoreBackendMethods, 'addWall' | 'addColumn' | 'addSlab' | 'addBeam' | 'addSpace' | 'addRoof' | 'addPlate' | 'addMember'>;
|
|
5
|
+
/** Resolve each call against its live model and delegate the IFC commit to
|
|
6
|
+
* create's atomic dispatcher (#6232 D5). Anchor resolution retains its strict
|
|
7
|
+
* existing-placement policy. Hosts add permission, publication and history
|
|
8
|
+
* behavior outside this factory; MCP supplies its compound-recording draft. */
|
|
9
|
+
export declare function createOrdinaryStoreBackend(resolve: (modelId: string) => Pick<CostStoreModelResolution, 'modelId' | 'store' | 'editor' | 'mutationView'>): OrdinaryStoreBackendMethods;
|
|
10
|
+
//# sourceMappingURL=store-ordinary-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-ordinary-backend.d.ts","sourceRoot":"","sources":["../src/store-ordinary-backend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjE,mFAAmF;AACnF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,mBAAmB,EAChE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAEvG;;;+EAG+E;AAC/E,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC,GAC5G,2BAA2B,CAiB7B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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 { addOrdinaryElementInStore, resolveSpatialAnchor } from '@ifc-lite/create';
|
|
5
|
+
/** Resolve each call against its live model and delegate the IFC commit to
|
|
6
|
+
* create's atomic dispatcher (#6232 D5). Anchor resolution retains its strict
|
|
7
|
+
* existing-placement policy. Hosts add permission, publication and history
|
|
8
|
+
* behavior outside this factory; MCP supplies its compound-recording draft. */
|
|
9
|
+
export function createOrdinaryStoreBackend(resolve) {
|
|
10
|
+
const add = (modelId, storeyId, element) => {
|
|
11
|
+
const model = resolve(modelId);
|
|
12
|
+
const anchor = resolveSpatialAnchor(model.store, storeyId, model.mutationView);
|
|
13
|
+
const expressId = addOrdinaryElementInStore(model.editor, anchor, element);
|
|
14
|
+
return { modelId: model.modelId, expressId };
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
addWall: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'wall', params }),
|
|
18
|
+
addColumn: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'column', params }),
|
|
19
|
+
addSlab: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'slab', params }),
|
|
20
|
+
addBeam: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'beam', params }),
|
|
21
|
+
addSpace: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'space', params }),
|
|
22
|
+
addRoof: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'roof', params }),
|
|
23
|
+
addPlate: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'plate', params }),
|
|
24
|
+
addMember: (modelId, storeyId, params) => add(modelId, storeyId, { kind: 'member', params }),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=store-ordinary-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-ordinary-backend.js","sourceRoot":"","sources":["../src/store-ordinary-backend.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAA+B,MAAM,kBAAkB,CAAC;AAQhH;;;+EAG+E;AAC/E,MAAM,UAAU,0BAA0B,CACxC,OAA6G;IAE7G,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,QAAgB,EAAE,OAA+B,EAAa,EAAE;QAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxF,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5F,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxF,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxF,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1F,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxF,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1F,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;KAC7F,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ModellingStoreModelResolver } from './store-modelling-backend.js';
|
|
2
|
+
import type { PhysicalStoreBackendMethods } from './store-physical-types.js';
|
|
3
|
+
/** Host bookkeeping stays at the edge; all planning and graph writes are shared with the viewer. */
|
|
4
|
+
export declare function createPhysicalStoreBackend(resolve: ModellingStoreModelResolver): PhysicalStoreBackendMethods;
|
|
5
|
+
//# sourceMappingURL=store-physical-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-physical-backend.d.ts","sourceRoot":"","sources":["../src/store-physical-backend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAG7E,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,2BAA2B,CA0C5G"}
|
|
@@ -0,0 +1,51 @@
|
|
|
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 { transformElementsInStore, setElementSizeInStore, resizeWallInStore, splitElementsInStore, trimExtendElementInStore } from '@ifc-lite/create';
|
|
5
|
+
/** Host bookkeeping stays at the edge; all planning and graph writes are shared with the viewer. */
|
|
6
|
+
export function createPhysicalStoreBackend(resolve) {
|
|
7
|
+
const refs = (modelId, ids) => [...new Set(ids)].map(expressId => ({ modelId, expressId }));
|
|
8
|
+
return {
|
|
9
|
+
transformElements(modelId, selected, op) {
|
|
10
|
+
const model = resolve(modelId);
|
|
11
|
+
const result = model.editor.runAtomic(editor => transformElementsInStore({ dataStore: model.store, view: editor.getMutationView(), editor, selected, op }));
|
|
12
|
+
return refs(model.modelId, result.remesh);
|
|
13
|
+
},
|
|
14
|
+
setElementSize(ref, patch) {
|
|
15
|
+
const model = resolve(ref.modelId);
|
|
16
|
+
const result = model.editor.runAtomic(editor => {
|
|
17
|
+
const corePatch = patch.kind === 'wall' ? { kind: 'wall', thickness: patch.Thickness, height: patch.Height }
|
|
18
|
+
: patch.kind === 'slab' ? { kind: 'slab', thickness: patch.Thickness }
|
|
19
|
+
: { kind: 'linear', length: patch.Depth, width: patch.XDim, cross: patch.YDim, fixed: patch.fixed };
|
|
20
|
+
const changed = setElementSizeInStore({ dataStore: model.store, view: editor.getMutationView(), editor }, ref.expressId, corePatch);
|
|
21
|
+
if (!changed.ok)
|
|
22
|
+
throw new Error(changed.reason);
|
|
23
|
+
return changed;
|
|
24
|
+
});
|
|
25
|
+
return refs(model.modelId, result.remesh);
|
|
26
|
+
},
|
|
27
|
+
resizeWall(ref, start, end, options = {}) {
|
|
28
|
+
const model = resolve(ref.modelId);
|
|
29
|
+
const result = model.editor.runAtomic(editor => {
|
|
30
|
+
const changed = resizeWallInStore({ dataStore: model.store, view: editor.getMutationView(), editor }, ref.expressId, start, end, { moveJoinedEnds: options.moveJoinedEnds ?? true });
|
|
31
|
+
if (!changed.ok)
|
|
32
|
+
throw new Error(changed.reason);
|
|
33
|
+
return changed;
|
|
34
|
+
});
|
|
35
|
+
return refs(model.modelId, result.walls);
|
|
36
|
+
},
|
|
37
|
+
splitElements(modelId, requests) {
|
|
38
|
+
const model = resolve(modelId);
|
|
39
|
+
return splitElementsInStore(model.store, model.editor, requests, { globalIdScopes: model.globalIdScopes }).map(result => {
|
|
40
|
+
const ref = (expressId) => ({ modelId: model.modelId, expressId });
|
|
41
|
+
return { source: ref(result.sourceId), added: ref(result.addedId), left: ref(result.leftId), right: ref(result.rightId) };
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
trimExtendElement(ref, params) {
|
|
45
|
+
const model = resolve(ref.modelId);
|
|
46
|
+
const result = trimExtendElementInStore(model.store, model.editor, ref.expressId, params);
|
|
47
|
+
return refs(model.modelId, [result.expressId, ...result.walls]);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=store-physical-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-physical-backend.js","sourceRoot":"","sources":["../src/store-physical-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AlignMode, ElementTransformInput, ElementSplitRequest, ElementTrimExtendParams } from '@ifc-lite/create';
|
|
2
|
+
import type { EntityRef } from './types.js';
|
|
3
|
+
/** Physical geometry dimensions in metres, retaining EXPRESS solid/profile names. */
|
|
4
|
+
export type PhysicalSizePatch = {
|
|
5
|
+
kind: 'wall';
|
|
6
|
+
Height?: number;
|
|
7
|
+
Thickness?: number;
|
|
8
|
+
} | {
|
|
9
|
+
kind: 'slab';
|
|
10
|
+
Thickness: number;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'linear';
|
|
13
|
+
Depth?: number;
|
|
14
|
+
XDim?: number;
|
|
15
|
+
YDim?: number;
|
|
16
|
+
fixed?: 'start' | 'end';
|
|
17
|
+
};
|
|
18
|
+
export interface PhysicalStoreBackendMethods {
|
|
19
|
+
alignElements?(modelId: string, reference: number, targets: readonly number[], mode: AlignMode): Promise<EntityRef[]>;
|
|
20
|
+
transformElements?(modelId: string, expressIds: readonly number[], operation: ElementTransformInput['op']): EntityRef[];
|
|
21
|
+
setElementSize?(ref: EntityRef, patch: PhysicalSizePatch): EntityRef[];
|
|
22
|
+
resizeWall?(ref: EntityRef, start: [number, number, number], end: [number, number, number], options?: {
|
|
23
|
+
moveJoinedEnds?: boolean;
|
|
24
|
+
}): EntityRef[];
|
|
25
|
+
splitElements?(modelId: string, requests: readonly ElementSplitRequest[]): {
|
|
26
|
+
source: EntityRef;
|
|
27
|
+
added: EntityRef;
|
|
28
|
+
left: EntityRef;
|
|
29
|
+
right: EntityRef;
|
|
30
|
+
}[];
|
|
31
|
+
trimExtendElement?(ref: EntityRef, params: ElementTrimExtendParams): EntityRef[];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=store-physical-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-physical-types.d.ts","sourceRoot":"","sources":["../src/store-physical-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,CAAC;AAC9F,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACtH,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;IACxH,cAAc,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,EAAE,CAAC;IACvE,UAAU,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,EAAE,CAAC;IACjJ,aAAa,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GAAG;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;IACxJ,iBAAiB,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,GAAG,SAAS,EAAE,CAAC;CAClF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-physical-types.js","sourceRoot":"","sources":["../src/store-physical-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CostStoreModelResolution } from './cost-store-backend.js';
|
|
2
|
+
import type { RoomCommand, RoomCommandHost, RoomGeometryProvider, PreparedRoomCommand } from './store-room-command.js';
|
|
3
|
+
/** Same native planner and writer, one detached graph and one recorded approval (#7324). */
|
|
4
|
+
export declare function prepareAllStoreyRooms(model: CostStoreModelResolution, anchorStoreyId: number, command: RoomCommand, provide: RoomGeometryProvider, host: RoomCommandHost, currentModel: () => CostStoreModelResolution): Promise<PreparedRoomCommand>;
|
|
5
|
+
//# sourceMappingURL=store-room-auto-all.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-room-auto-all.d.ts","sourceRoot":"","sources":["../src/store-room-auto-all.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAqB,oBAAoB,EAAsB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9J,4FAA4F;AAC5F,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAC5G,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,GAClE,OAAO,CAAC,mBAAmB,CAAC,CAwE9B"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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 { effectiveRoomIdsByStorey, effectiveStoreyIds, filterRoomFaces, roomCandidatesFromFaces, planRoomCreation, createRoomsInStore, occupancyTest, existingSpaceFootprintEntriesByStorey } from '@ifc-lite/create';
|
|
5
|
+
import { StoreEditor } from '@ifc-lite/mutations';
|
|
6
|
+
import { RoomCommandConflictError } from './store-room-command.js';
|
|
7
|
+
/** Same native planner and writer, one detached graph and one recorded approval (#7324). */
|
|
8
|
+
export async function prepareAllStoreyRooms(model, anchorStoreyId, command, provide, host, currentModel) {
|
|
9
|
+
if (!model.store.schemaVersion || !['IFC2X3', 'IFC4', 'IFC4X3'].includes(model.store.schemaVersion))
|
|
10
|
+
throw new Error('Complete AutoAll requires a supported known IFC schema');
|
|
11
|
+
const ids = effectiveStoreyIds(model.store, model.mutationView).sort((a, b) => a - b);
|
|
12
|
+
if (!ids.includes(anchorStoreyId))
|
|
13
|
+
throw new Error('AutoAll anchor must identify a live native IfcBuildingStorey');
|
|
14
|
+
if (ids.length > 128)
|
|
15
|
+
throw new Error('More than 128 storeys: complete AutoAll preparation is unavailable');
|
|
16
|
+
const weld = command.weld ?? .05, minArea = command.minArea ?? .3;
|
|
17
|
+
const existing = existingSpaceFootprintEntriesByStorey(model.store, model.mutationView);
|
|
18
|
+
const populations = effectiveRoomIdsByStorey(model.store, model.mutationView, ids);
|
|
19
|
+
const rows = [];
|
|
20
|
+
const plans = new Map();
|
|
21
|
+
const geometries = [];
|
|
22
|
+
for (const storeyId of ids) {
|
|
23
|
+
const roomCount = populations.get(storeyId)?.length ?? 0;
|
|
24
|
+
command.signal?.throwIfAborted();
|
|
25
|
+
const geometry = await provide(model, storeyId);
|
|
26
|
+
currentModel();
|
|
27
|
+
geometries.push(geometry);
|
|
28
|
+
if (geometry.unavailable !== undefined) {
|
|
29
|
+
rows.push({ storeyId, status: 'unavailable', reason: geometry.unavailable, roomCount, candidates: [], created: [] });
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
geometry.validate?.();
|
|
33
|
+
const spaces = geometry.spaces ?? existing.get(storeyId) ?? [];
|
|
34
|
+
if (geometry.walls.length === 0) {
|
|
35
|
+
rows.push({ storeyId, status: 'noWalls', roomCount, candidates: [], created: [] });
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const occupied = geometry.occupied ?? occupancyTest(spaces.map(space => space.footprint), []);
|
|
39
|
+
const entry = host.layouts.read(model.modelId, storeyId, weld, host.historyHead(model.modelId), geometry.walls.map(w => w.corners), geometry.factory);
|
|
40
|
+
const candidates = roomCandidatesFromFaces(filterRoomFaces(entry.faces, minArea), occupied, spaces);
|
|
41
|
+
const previous = rows.flatMap(row => row.candidates);
|
|
42
|
+
const population = [...previous, ...candidates];
|
|
43
|
+
if (population.length > 128 || population.reduce((n, face) => n + face.centre.length + face.inner.length + face.outer.length, 0) > 4096)
|
|
44
|
+
throw new Error('Complete AutoAll native candidates exceed the review population limit');
|
|
45
|
+
if (population.some(face => !Number.isFinite(face.grossArea) || !Number.isFinite(face.netArea) || [...face.centre, ...face.inner, ...face.outer].some(point => point.some(value => !Number.isFinite(value)))))
|
|
46
|
+
throw new Error('Native AutoAll contours/areas are unavailable');
|
|
47
|
+
const prepared = planRoomCreation(candidates, { action: 'auto', boundary: command.boundary ?? 'inner', height: command.height ?? 3, z: command.z ?? 0,
|
|
48
|
+
existingCount: roomCount, namePattern: command.namePattern ?? 'Room {n}',
|
|
49
|
+
...(command.PredefinedType !== undefined ? { PredefinedType: command.PredefinedType } : {}), ...(command.ObjectType !== undefined ? { ObjectType: command.ObjectType } : {}) });
|
|
50
|
+
plans.set(storeyId, prepared);
|
|
51
|
+
rows.push({ storeyId, status: prepared.length ? 'ready' : candidates.length ? 'occupied' : 'noFaces', roomCount, candidates: structuredClone(candidates), created: [] });
|
|
52
|
+
}
|
|
53
|
+
const layout = host.layouts.version();
|
|
54
|
+
let disposed = false, committed = false;
|
|
55
|
+
const validate = () => {
|
|
56
|
+
if (disposed || committed)
|
|
57
|
+
throw new RoomCommandConflictError('This AutoAll preparation is no longer available');
|
|
58
|
+
currentModel();
|
|
59
|
+
if (JSON.stringify(effectiveStoreyIds(model.store, model.mutationView).sort((a, b) => a - b)) !== JSON.stringify(ids))
|
|
60
|
+
throw new RoomCommandConflictError('The complete storey population changed');
|
|
61
|
+
if (JSON.stringify([...effectiveRoomIdsByStorey(model.store, model.mutationView, ids)]) !== JSON.stringify([...populations]))
|
|
62
|
+
throw new RoomCommandConflictError('The complete native room population changed');
|
|
63
|
+
if (host.layouts.version() !== layout)
|
|
64
|
+
throw new RoomCommandConflictError('The native Room layout changed');
|
|
65
|
+
for (const geometry of geometries)
|
|
66
|
+
geometry.validate?.();
|
|
67
|
+
};
|
|
68
|
+
validate();
|
|
69
|
+
const write = (draft) => {
|
|
70
|
+
const coverage = rows.map(row => ({ ...row, created: (plans.get(row.storeyId)?.length ? createRoomsInStore(draft.store, draft.editor, row.storeyId, plans.get(row.storeyId)) : []).map(expressId => ({ modelId: model.modelId, expressId })) }));
|
|
71
|
+
return { created: coverage.flatMap(row => row.created), updated: [], deleted: [], skipped: [], candidates: coverage.flatMap(row => row.candidates), storeys: coverage };
|
|
72
|
+
};
|
|
73
|
+
// Unknown storeys must not authorize even the otherwise-known plans.
|
|
74
|
+
const unavailable = rows.some(row => row.status === 'unavailable');
|
|
75
|
+
const draft = model.mutationView.prepareAtomic(view => {
|
|
76
|
+
const preview = { ...model, mutationView: view, editor: new StoreEditor(model.store, view) };
|
|
77
|
+
const result = unavailable ? { created: [], updated: [], deleted: [], skipped: [], candidates: rows.flatMap(row => row.candidates), storeys: rows } : write(preview);
|
|
78
|
+
return { preview, result };
|
|
79
|
+
});
|
|
80
|
+
return { result: structuredClone(draft.result.result), preview: draft.result.preview,
|
|
81
|
+
validate: () => { validate(); draft.validate(); },
|
|
82
|
+
commit: () => {
|
|
83
|
+
validate();
|
|
84
|
+
draft.validate();
|
|
85
|
+
if (unavailable)
|
|
86
|
+
throw new Error('Some storeys are unavailable: complete AutoAll approval is refused');
|
|
87
|
+
const result = draft.result.result.created.length ? host.record(model.modelId, write) : draft.result.result;
|
|
88
|
+
committed = true;
|
|
89
|
+
return structuredClone(result);
|
|
90
|
+
},
|
|
91
|
+
dispose: () => { disposed = true; },
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=store-room-auto-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-room-auto-all.js","sourceRoot":"","sources":["../src/store-room-auto-all.ts"],"names":[],"mappings":"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"}
|