@ifc-lite/lens 1.7.0 → 1.9.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/dist/colors.d.ts +12 -0
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +63 -0
- package/dist/colors.js.map +1 -1
- package/dist/discovery.d.ts +44 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +124 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine.d.ts +20 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +111 -1
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/matching.d.ts +1 -1
- package/dist/matching.d.ts.map +1 -1
- package/dist/matching.js +77 -3
- package/dist/matching.js.map +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +12 -11
- package/dist/presets.js.map +1 -1
- package/dist/types.d.ts +87 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -3
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/colors.d.ts
CHANGED
|
@@ -20,4 +20,16 @@ export declare function rgbaToHex(rgba: RGBAColor): string;
|
|
|
20
20
|
* Used to exclude ghost entries from UI legends.
|
|
21
21
|
*/
|
|
22
22
|
export declare function isGhostColor(rgba: RGBAColor): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Generate a unique color for index `i` using golden-angle hue distribution.
|
|
25
|
+
*
|
|
26
|
+
* Produces unlimited perceptually distinct colors:
|
|
27
|
+
* - Hue: golden angle spacing (maximally distributed for any N)
|
|
28
|
+
* - Saturation: alternates between 65% and 80% to add variety
|
|
29
|
+
* - Lightness: cycles through 3 levels (45%, 55%, 35%) for depth
|
|
30
|
+
*
|
|
31
|
+
* No two indices produce the same color (hue wraps but never repeats
|
|
32
|
+
* due to irrational golden angle).
|
|
33
|
+
*/
|
|
34
|
+
export declare function uniqueColor(i: number): string;
|
|
23
35
|
//# sourceMappingURL=colors.d.ts.map
|
package/dist/colors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,oEAAoE;AACpE,eAAO,MAAM,WAAW,EAAE,SAAiC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAKjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAErD"}
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,oEAAoE;AACpE,eAAO,MAAM,WAAW,EAAE,SAAiC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAKjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAErD;AAiCD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7C"}
|
package/dist/colors.js
CHANGED
|
@@ -35,4 +35,67 @@ export function rgbaToHex(rgba) {
|
|
|
35
35
|
export function isGhostColor(rgba) {
|
|
36
36
|
return rgba[3] < 0.2;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Golden angle in degrees (~137.508°).
|
|
40
|
+
* Successive multiples of this produce maximally distributed hues
|
|
41
|
+
* on the color wheel — guarantees every new color is as far as
|
|
42
|
+
* possible from all previously generated colors, for any N.
|
|
43
|
+
*/
|
|
44
|
+
const GOLDEN_ANGLE = 137.508;
|
|
45
|
+
/**
|
|
46
|
+
* Convert HSL to hex string.
|
|
47
|
+
* h in [0, 360), s and l in [0, 1].
|
|
48
|
+
*/
|
|
49
|
+
function hslToHex(h, s, l) {
|
|
50
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
51
|
+
const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
|
|
52
|
+
const m = l - c / 2;
|
|
53
|
+
let r = 0, g = 0, b = 0;
|
|
54
|
+
if (h < 60) {
|
|
55
|
+
r = c;
|
|
56
|
+
g = x;
|
|
57
|
+
}
|
|
58
|
+
else if (h < 120) {
|
|
59
|
+
r = x;
|
|
60
|
+
g = c;
|
|
61
|
+
}
|
|
62
|
+
else if (h < 180) {
|
|
63
|
+
g = c;
|
|
64
|
+
b = x;
|
|
65
|
+
}
|
|
66
|
+
else if (h < 240) {
|
|
67
|
+
g = x;
|
|
68
|
+
b = c;
|
|
69
|
+
}
|
|
70
|
+
else if (h < 300) {
|
|
71
|
+
r = x;
|
|
72
|
+
b = c;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
r = c;
|
|
76
|
+
b = x;
|
|
77
|
+
}
|
|
78
|
+
const ri = Math.round((r + m) * 255);
|
|
79
|
+
const gi = Math.round((g + m) * 255);
|
|
80
|
+
const bi = Math.round((b + m) * 255);
|
|
81
|
+
return `#${ri.toString(16).padStart(2, '0')}${gi.toString(16).padStart(2, '0')}${bi.toString(16).padStart(2, '0')}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Generate a unique color for index `i` using golden-angle hue distribution.
|
|
85
|
+
*
|
|
86
|
+
* Produces unlimited perceptually distinct colors:
|
|
87
|
+
* - Hue: golden angle spacing (maximally distributed for any N)
|
|
88
|
+
* - Saturation: alternates between 65% and 80% to add variety
|
|
89
|
+
* - Lightness: cycles through 3 levels (45%, 55%, 35%) for depth
|
|
90
|
+
*
|
|
91
|
+
* No two indices produce the same color (hue wraps but never repeats
|
|
92
|
+
* due to irrational golden angle).
|
|
93
|
+
*/
|
|
94
|
+
export function uniqueColor(i) {
|
|
95
|
+
const hue = (i * GOLDEN_ANGLE) % 360;
|
|
96
|
+
const saturation = i % 2 === 0 ? 0.65 : 0.80;
|
|
97
|
+
const lightnessLevels = [0.45, 0.55, 0.35];
|
|
98
|
+
const lightness = lightnessLevels[i % 3];
|
|
99
|
+
return hslToHex(hue, saturation, lightness);
|
|
100
|
+
}
|
|
38
101
|
//# sourceMappingURL=colors.js.map
|
package/dist/colors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa;IAClD,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data discovery for the lens system.
|
|
3
|
+
*
|
|
4
|
+
* Two-phase approach for zero loading impact:
|
|
5
|
+
* 1. `discoverClasses()` — instant, reads unique type names from entity table
|
|
6
|
+
* (O(n) array scan, zero STEP parsing). Called when models load.
|
|
7
|
+
* 2. `discoverDataSources()` — expensive, samples entities for psets/quantities/
|
|
8
|
+
* materials/classifications. Called lazily when user opens a dropdown.
|
|
9
|
+
*/
|
|
10
|
+
import type { LensDataProvider } from './types.js';
|
|
11
|
+
/** Result of lens data discovery */
|
|
12
|
+
export interface DiscoveredLensData {
|
|
13
|
+
/** All IFC class names found in loaded models, sorted alphabetically */
|
|
14
|
+
classes: string[];
|
|
15
|
+
/** Property set names → property names (sorted). Null = not yet discovered. */
|
|
16
|
+
propertySets: Map<string, string[]> | null;
|
|
17
|
+
/** Quantity set names → quantity names (sorted). Null = not yet discovered. */
|
|
18
|
+
quantitySets: Map<string, string[]> | null;
|
|
19
|
+
/** Classification system names found. Null = not yet discovered. */
|
|
20
|
+
classificationSystems: string[] | null;
|
|
21
|
+
/** Material names found. Null = not yet discovered. */
|
|
22
|
+
materials: string[] | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Discover IFC classes from loaded models — INSTANT.
|
|
26
|
+
*
|
|
27
|
+
* O(n) scan of entity type names only. No STEP buffer parsing.
|
|
28
|
+
* Typically <5ms for 100k entities.
|
|
29
|
+
*/
|
|
30
|
+
export declare function discoverClasses(provider: LensDataProvider): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Discover data sources by sampling entities — EXPENSIVE.
|
|
33
|
+
*
|
|
34
|
+
* Samples up to SAMPLE_SIZE entities per type to collect property sets,
|
|
35
|
+
* quantity sets, classification systems, and material names.
|
|
36
|
+
* Only call when the user actively needs this data (e.g., opens a dropdown).
|
|
37
|
+
*/
|
|
38
|
+
export declare function discoverDataSources(provider: LensDataProvider, categories: {
|
|
39
|
+
properties?: boolean;
|
|
40
|
+
quantities?: boolean;
|
|
41
|
+
classifications?: boolean;
|
|
42
|
+
materials?: boolean;
|
|
43
|
+
}): Partial<Pick<DiscoveredLensData, 'propertySets' | 'quantitySets' | 'classificationSystems' | 'materials'>>;
|
|
44
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnD,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+EAA+E;IAC/E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3C,+EAA+E;IAC/E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3C,oEAAoE;IACpE,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvC,uDAAuD;IACvD,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAOpE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE;IACV,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,cAAc,GAAG,uBAAuB,GAAG,WAAW,CAAC,CAAC,CAsG5G"}
|
|
@@ -0,0 +1,124 @@
|
|
|
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
|
+
/** Max entities to sample per type for property/quantity discovery */
|
|
5
|
+
const SAMPLE_SIZE = 30;
|
|
6
|
+
/**
|
|
7
|
+
* Discover IFC classes from loaded models — INSTANT.
|
|
8
|
+
*
|
|
9
|
+
* O(n) scan of entity type names only. No STEP buffer parsing.
|
|
10
|
+
* Typically <5ms for 100k entities.
|
|
11
|
+
*/
|
|
12
|
+
export function discoverClasses(provider) {
|
|
13
|
+
const classSet = new Set();
|
|
14
|
+
provider.forEachEntity((globalId) => {
|
|
15
|
+
const typeName = provider.getEntityType(globalId);
|
|
16
|
+
if (typeName)
|
|
17
|
+
classSet.add(typeName);
|
|
18
|
+
});
|
|
19
|
+
return Array.from(classSet).sort();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Discover data sources by sampling entities — EXPENSIVE.
|
|
23
|
+
*
|
|
24
|
+
* Samples up to SAMPLE_SIZE entities per type to collect property sets,
|
|
25
|
+
* quantity sets, classification systems, and material names.
|
|
26
|
+
* Only call when the user actively needs this data (e.g., opens a dropdown).
|
|
27
|
+
*/
|
|
28
|
+
export function discoverDataSources(provider, categories) {
|
|
29
|
+
const result = {};
|
|
30
|
+
const needsProperties = categories.properties === true;
|
|
31
|
+
const needsQuantities = categories.quantities === true;
|
|
32
|
+
const needsClassifications = categories.classifications === true;
|
|
33
|
+
const needsMaterials = categories.materials === true;
|
|
34
|
+
if (!needsProperties && !needsQuantities && !needsClassifications && !needsMaterials) {
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
const propertySets = needsProperties ? new Map() : null;
|
|
38
|
+
const quantitySets = needsQuantities ? new Map() : null;
|
|
39
|
+
const classificationSystems = needsClassifications ? new Set() : null;
|
|
40
|
+
const materials = needsMaterials ? new Set() : null;
|
|
41
|
+
// Collect sample IDs grouped by type
|
|
42
|
+
const sampleIds = [];
|
|
43
|
+
const seenPerType = new Map();
|
|
44
|
+
provider.forEachEntity((globalId) => {
|
|
45
|
+
const typeName = provider.getEntityType(globalId);
|
|
46
|
+
if (!typeName)
|
|
47
|
+
return;
|
|
48
|
+
const count = seenPerType.get(typeName) ?? 0;
|
|
49
|
+
if (count < SAMPLE_SIZE) {
|
|
50
|
+
sampleIds.push(globalId);
|
|
51
|
+
seenPerType.set(typeName, count + 1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Sample entities
|
|
55
|
+
for (const globalId of sampleIds) {
|
|
56
|
+
if (propertySets) {
|
|
57
|
+
const psets = provider.getPropertySets(globalId);
|
|
58
|
+
for (const pset of psets) {
|
|
59
|
+
if (!pset.name)
|
|
60
|
+
continue;
|
|
61
|
+
let propNames = propertySets.get(pset.name);
|
|
62
|
+
if (!propNames) {
|
|
63
|
+
propNames = new Set();
|
|
64
|
+
propertySets.set(pset.name, propNames);
|
|
65
|
+
}
|
|
66
|
+
for (const prop of pset.properties) {
|
|
67
|
+
if (prop.name)
|
|
68
|
+
propNames.add(prop.name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (quantitySets && provider.getQuantitySets) {
|
|
73
|
+
const qsets = provider.getQuantitySets(globalId);
|
|
74
|
+
for (const qset of qsets) {
|
|
75
|
+
if (!qset.name)
|
|
76
|
+
continue;
|
|
77
|
+
let quantNames = quantitySets.get(qset.name);
|
|
78
|
+
if (!quantNames) {
|
|
79
|
+
quantNames = new Set();
|
|
80
|
+
quantitySets.set(qset.name, quantNames);
|
|
81
|
+
}
|
|
82
|
+
for (const q of qset.quantities) {
|
|
83
|
+
if (q.name)
|
|
84
|
+
quantNames.add(q.name);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (classificationSystems && provider.getClassifications) {
|
|
89
|
+
const cls = provider.getClassifications(globalId);
|
|
90
|
+
for (const c of cls) {
|
|
91
|
+
if (c.system)
|
|
92
|
+
classificationSystems.add(c.system);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (materials && provider.getMaterialName) {
|
|
96
|
+
const mat = provider.getMaterialName(globalId);
|
|
97
|
+
if (mat)
|
|
98
|
+
materials.add(mat);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Convert sets to sorted arrays
|
|
102
|
+
if (propertySets) {
|
|
103
|
+
const psResult = new Map();
|
|
104
|
+
for (const [name, propSet] of propertySets) {
|
|
105
|
+
psResult.set(name, Array.from(propSet).sort());
|
|
106
|
+
}
|
|
107
|
+
result.propertySets = psResult;
|
|
108
|
+
}
|
|
109
|
+
if (quantitySets) {
|
|
110
|
+
const qsResult = new Map();
|
|
111
|
+
for (const [name, quantSet] of quantitySets) {
|
|
112
|
+
qsResult.set(name, Array.from(quantSet).sort());
|
|
113
|
+
}
|
|
114
|
+
result.quantitySets = qsResult;
|
|
115
|
+
}
|
|
116
|
+
if (classificationSystems) {
|
|
117
|
+
result.classificationSystems = Array.from(classificationSystems).sort();
|
|
118
|
+
}
|
|
119
|
+
if (materials) {
|
|
120
|
+
result.materials = Array.from(materials).sort();
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Lens, LensEvaluationResult, LensDataProvider } from './types.js';
|
|
1
|
+
import type { Lens, LensEvaluationResult, LensDataProvider, AutoColorSpec, AutoColorLegendEntry } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Evaluate a lens against all entities in the data provider.
|
|
4
4
|
*
|
|
@@ -11,4 +11,23 @@ import type { Lens, LensEvaluationResult, LensDataProvider } from './types.js';
|
|
|
11
11
|
* @returns Color map, hidden IDs, per-rule counts, and execution time
|
|
12
12
|
*/
|
|
13
13
|
export declare function evaluateLens(lens: Lens, provider: LensDataProvider): LensEvaluationResult;
|
|
14
|
+
/**
|
|
15
|
+
* Result of auto-color lens evaluation, extends standard result
|
|
16
|
+
* with legend entries for UI display.
|
|
17
|
+
*/
|
|
18
|
+
export interface AutoColorEvaluationResult extends LensEvaluationResult {
|
|
19
|
+
/** Legend entries for UI — one per distinct value, sorted by count desc */
|
|
20
|
+
legend: AutoColorLegendEntry[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Evaluate an auto-color lens against all entities.
|
|
24
|
+
*
|
|
25
|
+
* Single O(n) pass: extracts the target value for each entity, groups by
|
|
26
|
+
* distinct values, and assigns colors from the palette.
|
|
27
|
+
*
|
|
28
|
+
* @param autoColor - Data source specification
|
|
29
|
+
* @param provider - Data provider for entity access
|
|
30
|
+
* @returns Color map, legend, and per-value entity IDs
|
|
31
|
+
*/
|
|
32
|
+
export declare function evaluateAutoColorLens(autoColor: AutoColorSpec, provider: LensDataProvider): AutoColorEvaluationResult;
|
|
14
33
|
//# sourceMappingURL=engine.d.ts.map
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,IAAI,EACJ,oBAAoB,EACpB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,IAAI,EACJ,oBAAoB,EACpB,gBAAgB,EAGhB,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,gBAAgB,GACzB,oBAAoB,CAuDtB;AA0BD;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,2EAA2E;IAC3E,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,gBAAgB,GACzB,yBAAyB,CA+D3B"}
|
package/dist/engine.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { matchesCriteria } from './matching.js';
|
|
5
|
-
import { hexToRgba, GHOST_COLOR } from './colors.js';
|
|
5
|
+
import { hexToRgba, GHOST_COLOR, uniqueColor } from './colors.js';
|
|
6
6
|
/**
|
|
7
7
|
* Evaluate a lens against all entities in the data provider.
|
|
8
8
|
*
|
|
@@ -76,4 +76,114 @@ function applyRuleAction(rule, globalId, colorMap, hiddenIds) {
|
|
|
76
76
|
break;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Evaluate an auto-color lens against all entities.
|
|
81
|
+
*
|
|
82
|
+
* Single O(n) pass: extracts the target value for each entity, groups by
|
|
83
|
+
* distinct values, and assigns colors from the palette.
|
|
84
|
+
*
|
|
85
|
+
* @param autoColor - Data source specification
|
|
86
|
+
* @param provider - Data provider for entity access
|
|
87
|
+
* @returns Color map, legend, and per-value entity IDs
|
|
88
|
+
*/
|
|
89
|
+
export function evaluateAutoColorLens(autoColor, provider) {
|
|
90
|
+
const startTime = performance.now();
|
|
91
|
+
// Phase 1: Extract values and group entities by distinct value
|
|
92
|
+
const valueGroups = new Map();
|
|
93
|
+
const ghostIds = [];
|
|
94
|
+
provider.forEachEntity((globalId) => {
|
|
95
|
+
const raw = extractAutoColorValue(autoColor, globalId, provider);
|
|
96
|
+
const value = raw != null ? String(raw).trim() : '';
|
|
97
|
+
if (value === '') {
|
|
98
|
+
ghostIds.push(globalId);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
let group = valueGroups.get(value);
|
|
102
|
+
if (!group) {
|
|
103
|
+
group = [];
|
|
104
|
+
valueGroups.set(value, group);
|
|
105
|
+
}
|
|
106
|
+
group.push(globalId);
|
|
107
|
+
});
|
|
108
|
+
// Phase 2: Sort distinct values by entity count (descending) for best color allocation
|
|
109
|
+
const sortedEntries = Array.from(valueGroups.entries())
|
|
110
|
+
.sort((a, b) => b[1].length - a[1].length);
|
|
111
|
+
// Phase 3: Assign colors and build result
|
|
112
|
+
const colorMap = new Map();
|
|
113
|
+
const hiddenIds = new Set();
|
|
114
|
+
const ruleCounts = new Map();
|
|
115
|
+
const ruleEntityIds = new Map();
|
|
116
|
+
const legend = [];
|
|
117
|
+
for (let i = 0; i < sortedEntries.length; i++) {
|
|
118
|
+
const [value, entityIds] = sortedEntries[i];
|
|
119
|
+
const color = uniqueColor(i);
|
|
120
|
+
const ruleId = `auto-${i}`;
|
|
121
|
+
const rgba = hexToRgba(color, 1);
|
|
122
|
+
for (const id of entityIds) {
|
|
123
|
+
colorMap.set(id, rgba);
|
|
124
|
+
}
|
|
125
|
+
ruleCounts.set(ruleId, entityIds.length);
|
|
126
|
+
ruleEntityIds.set(ruleId, entityIds);
|
|
127
|
+
legend.push({ id: ruleId, name: value, color, count: entityIds.length });
|
|
128
|
+
}
|
|
129
|
+
// Ghost unmatched (null/empty value) entities
|
|
130
|
+
for (const id of ghostIds) {
|
|
131
|
+
colorMap.set(id, GHOST_COLOR);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
colorMap,
|
|
135
|
+
hiddenIds,
|
|
136
|
+
ruleCounts,
|
|
137
|
+
ruleEntityIds,
|
|
138
|
+
legend,
|
|
139
|
+
executionTime: performance.now() - startTime,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Extract the target value for a single entity based on the auto-color spec.
|
|
144
|
+
* Returns the raw value (string, number, etc.) or undefined if not available.
|
|
145
|
+
*/
|
|
146
|
+
function extractAutoColorValue(spec, globalId, provider) {
|
|
147
|
+
switch (spec.source) {
|
|
148
|
+
case 'ifcType':
|
|
149
|
+
return provider.getEntityType(globalId);
|
|
150
|
+
case 'attribute':
|
|
151
|
+
if (!spec.propertyName || !provider.getEntityAttribute)
|
|
152
|
+
return undefined;
|
|
153
|
+
return provider.getEntityAttribute(globalId, spec.propertyName);
|
|
154
|
+
case 'property':
|
|
155
|
+
if (!spec.psetName || !spec.propertyName)
|
|
156
|
+
return undefined;
|
|
157
|
+
{
|
|
158
|
+
const val = provider.getPropertyValue(globalId, spec.psetName, spec.propertyName);
|
|
159
|
+
return val != null ? String(val) : undefined;
|
|
160
|
+
}
|
|
161
|
+
case 'quantity':
|
|
162
|
+
if (!spec.psetName || !spec.propertyName || !provider.getQuantityValue)
|
|
163
|
+
return undefined;
|
|
164
|
+
return provider.getQuantityValue(globalId, spec.psetName, spec.propertyName);
|
|
165
|
+
case 'classification':
|
|
166
|
+
if (!provider.getClassifications)
|
|
167
|
+
return undefined;
|
|
168
|
+
{
|
|
169
|
+
const cls = provider.getClassifications(globalId);
|
|
170
|
+
if (!cls || cls.length === 0)
|
|
171
|
+
return undefined;
|
|
172
|
+
// Use "system: identification" as the grouping key
|
|
173
|
+
const c = cls[0];
|
|
174
|
+
const parts = [];
|
|
175
|
+
if (c.system)
|
|
176
|
+
parts.push(c.system);
|
|
177
|
+
if (c.identification)
|
|
178
|
+
parts.push(c.identification);
|
|
179
|
+
return parts.length > 0 ? parts.join(': ') : c.name;
|
|
180
|
+
}
|
|
181
|
+
case 'material':
|
|
182
|
+
if (!provider.getMaterialName)
|
|
183
|
+
return undefined;
|
|
184
|
+
return provider.getMaterialName(globalId);
|
|
185
|
+
default:
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
79
189
|
//# sourceMappingURL=engine.js.map
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,12 +17,15 @@
|
|
|
17
17
|
* // result.ruleCounts — Map<ruleId, count>
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
|
-
export type { LensDataProvider, PropertySetInfo, LensCriteria, LensRule, Lens, LensEvaluationResult, RGBAColor, } from './types.js';
|
|
20
|
+
export type { LensDataProvider, PropertySetInfo, ClassificationInfo, LensCriteria, LensRule, Lens, AutoColorSpec, AutoColorLegendEntry, LensEvaluationResult, RGBAColor, } from './types.js';
|
|
21
21
|
export { COMMON_IFC_CLASSES,
|
|
22
22
|
/** @deprecated Use COMMON_IFC_CLASSES instead */
|
|
23
|
-
COMMON_IFC_CLASSES as COMMON_IFC_TYPES, LENS_PALETTE, IFC_SUBTYPE_TO_BASE, } from './types.js';
|
|
24
|
-
export { evaluateLens } from './engine.js';
|
|
23
|
+
COMMON_IFC_CLASSES as COMMON_IFC_TYPES, LENS_PALETTE, IFC_SUBTYPE_TO_BASE, LENS_CRITERIA_TYPES, AUTO_COLOR_SOURCES, ENTITY_ATTRIBUTE_NAMES, } from './types.js';
|
|
24
|
+
export { evaluateLens, evaluateAutoColorLens } from './engine.js';
|
|
25
|
+
export type { AutoColorEvaluationResult } from './engine.js';
|
|
25
26
|
export { matchesCriteria } from './matching.js';
|
|
26
|
-
export { GHOST_COLOR, hexToRgba, rgbaToHex, isGhostColor, } from './colors.js';
|
|
27
|
+
export { GHOST_COLOR, hexToRgba, rgbaToHex, isGhostColor, uniqueColor, } from './colors.js';
|
|
27
28
|
export { BUILTIN_LENSES } from './presets.js';
|
|
29
|
+
export { discoverClasses, discoverDataSources } from './discovery.js';
|
|
30
|
+
export type { DiscoveredLensData } from './discovery.js';
|
|
28
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB;AAClB,iDAAiD;AACjD,kBAAkB,IAAI,gBAAgB,EACtC,YAAY,EACZ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB;AAClB,iDAAiD;AACjD,kBAAkB,IAAI,gBAAgB,EACtC,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAM7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,OAAO,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AAMrB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
export { COMMON_IFC_CLASSES,
|
|
5
5
|
/** @deprecated Use COMMON_IFC_CLASSES instead */
|
|
6
|
-
COMMON_IFC_CLASSES as COMMON_IFC_TYPES, LENS_PALETTE, IFC_SUBTYPE_TO_BASE, } from './types.js';
|
|
6
|
+
COMMON_IFC_CLASSES as COMMON_IFC_TYPES, LENS_PALETTE, IFC_SUBTYPE_TO_BASE, LENS_CRITERIA_TYPES, AUTO_COLOR_SOURCES, ENTITY_ATTRIBUTE_NAMES, } from './types.js';
|
|
7
7
|
// ============================================================================
|
|
8
8
|
// Engine
|
|
9
9
|
// ============================================================================
|
|
10
|
-
export { evaluateLens } from './engine.js';
|
|
10
|
+
export { evaluateLens, evaluateAutoColorLens } from './engine.js';
|
|
11
11
|
// ============================================================================
|
|
12
12
|
// Matching
|
|
13
13
|
// ============================================================================
|
|
@@ -15,9 +15,13 @@ export { matchesCriteria } from './matching.js';
|
|
|
15
15
|
// ============================================================================
|
|
16
16
|
// Colors
|
|
17
17
|
// ============================================================================
|
|
18
|
-
export { GHOST_COLOR, hexToRgba, rgbaToHex, isGhostColor, } from './colors.js';
|
|
18
|
+
export { GHOST_COLOR, hexToRgba, rgbaToHex, isGhostColor, uniqueColor, } from './colors.js';
|
|
19
19
|
// ============================================================================
|
|
20
20
|
// Presets
|
|
21
21
|
// ============================================================================
|
|
22
22
|
export { BUILTIN_LENSES } from './presets.js';
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Discovery
|
|
25
|
+
// ============================================================================
|
|
26
|
+
export { discoverClasses, discoverDataSources } from './discovery.js';
|
|
23
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuC/D,OAAO,EACL,kBAAkB;AAClB,iDAAiD;AACjD,kBAAkB,IAAI,gBAAgB,EACtC,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGlE,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/matching.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { LensCriteria, LensDataProvider } from './types.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Check if an entity matches a {@link LensCriteria}.
|
|
4
4
|
*
|
|
5
|
-
* Performance: O(1) for type
|
|
5
|
+
* Performance: O(1) for type/attribute, O(psets) for property/material/classification.
|
|
6
6
|
*/
|
|
7
7
|
export declare function matchesCriteria(criteria: LensCriteria, globalId: number, provider: LensDataProvider): boolean;
|
|
8
8
|
//# sourceMappingURL=matching.d.ts.map
|
package/dist/matching.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAiBT"}
|
package/dist/matching.js
CHANGED
|
@@ -5,7 +5,7 @@ import { IFC_SUBTYPE_TO_BASE } from './types.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Check if an entity matches a {@link LensCriteria}.
|
|
7
7
|
*
|
|
8
|
-
* Performance: O(1) for type
|
|
8
|
+
* Performance: O(1) for type/attribute, O(psets) for property/material/classification.
|
|
9
9
|
*/
|
|
10
10
|
export function matchesCriteria(criteria, globalId, provider) {
|
|
11
11
|
switch (criteria.type) {
|
|
@@ -15,6 +15,12 @@ export function matchesCriteria(criteria, globalId, provider) {
|
|
|
15
15
|
return matchesProperty(criteria, globalId, provider);
|
|
16
16
|
case 'material':
|
|
17
17
|
return matchesMaterial(criteria, globalId, provider);
|
|
18
|
+
case 'attribute':
|
|
19
|
+
return matchesAttribute(criteria, globalId, provider);
|
|
20
|
+
case 'quantity':
|
|
21
|
+
return matchesQuantity(criteria, globalId, provider);
|
|
22
|
+
case 'classification':
|
|
23
|
+
return matchesClassification(criteria, globalId, provider);
|
|
18
24
|
default:
|
|
19
25
|
return false;
|
|
20
26
|
}
|
|
@@ -50,14 +56,23 @@ function matchesProperty(criteria, globalId, provider) {
|
|
|
50
56
|
}
|
|
51
57
|
return value !== null && value !== undefined;
|
|
52
58
|
}
|
|
53
|
-
/** Match by material
|
|
59
|
+
/** Match by material — prefers dedicated getMaterialName, falls back to pset scan */
|
|
54
60
|
function matchesMaterial(criteria, globalId, provider) {
|
|
55
61
|
if (!criteria.materialName)
|
|
56
62
|
return false;
|
|
63
|
+
const pattern = criteria.materialName.toLowerCase();
|
|
64
|
+
// Prefer dedicated material accessor if available
|
|
65
|
+
if (provider.getMaterialName) {
|
|
66
|
+
const matName = provider.getMaterialName(globalId);
|
|
67
|
+
if (matName) {
|
|
68
|
+
return matName.toLowerCase().includes(pattern);
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
// Fallback: scan material-related property sets
|
|
57
73
|
const psets = provider.getPropertySets(globalId);
|
|
58
74
|
if (!psets || psets.length === 0)
|
|
59
75
|
return false;
|
|
60
|
-
const pattern = criteria.materialName.toLowerCase();
|
|
61
76
|
for (const pset of psets) {
|
|
62
77
|
if (pset.name.toLowerCase().includes('material')) {
|
|
63
78
|
for (const prop of pset.properties) {
|
|
@@ -69,4 +84,63 @@ function matchesMaterial(criteria, globalId, provider) {
|
|
|
69
84
|
}
|
|
70
85
|
return false;
|
|
71
86
|
}
|
|
87
|
+
/** Match by entity attribute (Name, Description, ObjectType, Tag) */
|
|
88
|
+
function matchesAttribute(criteria, globalId, provider) {
|
|
89
|
+
if (!criteria.attributeName)
|
|
90
|
+
return false;
|
|
91
|
+
if (!provider.getEntityAttribute)
|
|
92
|
+
return false;
|
|
93
|
+
const value = provider.getEntityAttribute(globalId, criteria.attributeName);
|
|
94
|
+
if (criteria.operator === 'exists') {
|
|
95
|
+
return value !== undefined && value !== '';
|
|
96
|
+
}
|
|
97
|
+
if (criteria.operator === 'contains' && criteria.attributeValue !== undefined) {
|
|
98
|
+
return (value ?? '').toLowerCase().includes(criteria.attributeValue.toLowerCase());
|
|
99
|
+
}
|
|
100
|
+
// Default: equals
|
|
101
|
+
if (criteria.attributeValue !== undefined) {
|
|
102
|
+
return (value ?? '') === criteria.attributeValue;
|
|
103
|
+
}
|
|
104
|
+
return value !== undefined && value !== '';
|
|
105
|
+
}
|
|
106
|
+
/** Match by quantity value (supports equals, contains, exists operators) */
|
|
107
|
+
function matchesQuantity(criteria, globalId, provider) {
|
|
108
|
+
if (!criteria.quantitySet || !criteria.quantityName)
|
|
109
|
+
return false;
|
|
110
|
+
if (!provider.getQuantityValue)
|
|
111
|
+
return false;
|
|
112
|
+
const value = provider.getQuantityValue(globalId, criteria.quantitySet, criteria.quantityName);
|
|
113
|
+
if (criteria.operator === 'exists') {
|
|
114
|
+
return value !== undefined && value !== null;
|
|
115
|
+
}
|
|
116
|
+
if (value === undefined || value === null)
|
|
117
|
+
return false;
|
|
118
|
+
if (criteria.operator === 'contains' && criteria.quantityValue !== undefined) {
|
|
119
|
+
return String(value).toLowerCase().includes(criteria.quantityValue.toLowerCase());
|
|
120
|
+
}
|
|
121
|
+
// Default: equals (string comparison)
|
|
122
|
+
if (criteria.quantityValue !== undefined) {
|
|
123
|
+
return String(value) === criteria.quantityValue;
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
/** Match by classification system and/or code */
|
|
128
|
+
function matchesClassification(criteria, globalId, provider) {
|
|
129
|
+
if (!criteria.classificationSystem && !criteria.classificationCode)
|
|
130
|
+
return false;
|
|
131
|
+
if (!provider.getClassifications)
|
|
132
|
+
return false;
|
|
133
|
+
const classifications = provider.getClassifications(globalId);
|
|
134
|
+
if (!classifications || classifications.length === 0)
|
|
135
|
+
return false;
|
|
136
|
+
for (const cls of classifications) {
|
|
137
|
+
const systemMatch = !criteria.classificationSystem ||
|
|
138
|
+
(cls.system ?? '').toLowerCase().includes(criteria.classificationSystem.toLowerCase());
|
|
139
|
+
const codeMatch = !criteria.classificationCode ||
|
|
140
|
+
(cls.identification ?? '').toLowerCase().includes(criteria.classificationCode.toLowerCase());
|
|
141
|
+
if (systemMatch && codeMatch)
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
72
146
|
//# sourceMappingURL=matching.js.map
|
package/dist/matching.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matching.js","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAsB,EACtB,QAAgB,EAChB,QAA0B;IAE1B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtD,KAAK,UAAU;YACb,OAAO,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD,KAAK,UAAU;YACb,OAAO,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,SAAS,cAAc,CACrB,QAAsB,EACtB,QAAgB,EAChB,QAA0B;IAE1B,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,cAAc;IACd,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE/C,kEAAkE;IAClE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC;AACvC,CAAC;AAED,8BAA8B;AAC9B,SAAS,eAAe,CACtB,QAAsB,EACtB,QAAgB,EAChB,QAA0B;IAE1B,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAElE,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CACrC,QAAQ,EACR,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,YAAY,CACtB,CAAC;IAEF,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,aAAa,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"matching.js","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"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"}
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,IAAI,EAoDzC,CAAC"}
|
package/dist/presets.js
CHANGED
|
@@ -8,20 +8,13 @@
|
|
|
8
8
|
* The viewer marks them with `builtin: true` so they cannot be deleted.
|
|
9
9
|
*/
|
|
10
10
|
export const BUILTIN_LENSES = [
|
|
11
|
+
// Auto-color by IFC Class — colors ALL classes automatically from model data
|
|
11
12
|
{
|
|
12
|
-
id: 'lens-by-
|
|
13
|
+
id: 'lens-by-class',
|
|
13
14
|
name: 'By IFC Class',
|
|
14
15
|
builtin: true,
|
|
15
|
-
rules: [
|
|
16
|
-
|
|
17
|
-
{ id: 'slab', name: 'Slabs', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcSlab' }, action: 'colorize', color: '#607D8B' },
|
|
18
|
-
{ id: 'column', name: 'Columns', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcColumn' }, action: 'colorize', color: '#E53935' },
|
|
19
|
-
{ id: 'beam', name: 'Beams', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcBeam' }, action: 'colorize', color: '#1E88E5' },
|
|
20
|
-
{ id: 'door', name: 'Doors', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcDoor' }, action: 'colorize', color: '#00897B' },
|
|
21
|
-
{ id: 'window', name: 'Windows', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcWindow' }, action: 'colorize', color: '#42A5F5' },
|
|
22
|
-
{ id: 'stair', name: 'Stairs', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcStairFlight' }, action: 'colorize', color: '#FF8F00' },
|
|
23
|
-
{ id: 'roof', name: 'Roofs', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcRoof' }, action: 'colorize', color: '#8E24AA' },
|
|
24
|
-
],
|
|
16
|
+
rules: [],
|
|
17
|
+
autoColor: { source: 'ifcType' },
|
|
25
18
|
},
|
|
26
19
|
{
|
|
27
20
|
id: 'lens-structural',
|
|
@@ -58,5 +51,13 @@ export const BUILTIN_LENSES = [
|
|
|
58
51
|
{ id: 'railing', name: 'Railings', enabled: true, criteria: { type: 'ifcType', ifcType: 'IfcRailing' }, action: 'colorize', color: '#78909C' },
|
|
59
52
|
],
|
|
60
53
|
},
|
|
54
|
+
// Auto-color by material
|
|
55
|
+
{
|
|
56
|
+
id: 'lens-auto-material',
|
|
57
|
+
name: 'By Material',
|
|
58
|
+
builtin: true,
|
|
59
|
+
rules: [],
|
|
60
|
+
autoColor: { source: 'material' },
|
|
61
|
+
},
|
|
61
62
|
];
|
|
62
63
|
//# sourceMappingURL=presets.js.map
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C;QACE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
* @ifc-lite/lens — Rule-based 3D filtering and colorization
|
|
3
3
|
*
|
|
4
4
|
* A lens is a collection of rules that match entities by IFC class, property
|
|
5
|
-
* value,
|
|
6
|
-
* make transparent). Unmatched entities are
|
|
5
|
+
* value, material name, attribute, quantity, or classification, then apply a
|
|
6
|
+
* visual action (colorize, hide, or make transparent). Unmatched entities are
|
|
7
|
+
* ghosted for context.
|
|
8
|
+
*
|
|
9
|
+
* Auto-color mode: given a data source (e.g. property column, attribute),
|
|
10
|
+
* automatically discovers distinct values and assigns a unique color to each.
|
|
7
11
|
*
|
|
8
12
|
* Multi-model support: evaluation works across federated models using
|
|
9
13
|
* global IDs. The {@link LensDataProvider} abstracts data access so
|
|
@@ -35,6 +39,37 @@ export interface LensDataProvider {
|
|
|
35
39
|
* Used for material matching (scans psets whose name contains "material").
|
|
36
40
|
*/
|
|
37
41
|
getPropertySets(globalId: number): PropertySetInfo[];
|
|
42
|
+
/**
|
|
43
|
+
* Get a single entity attribute by name (e.g. "Name", "Description",
|
|
44
|
+
* "ObjectType", "Tag"). Optional — engine skips attribute criteria
|
|
45
|
+
* when not implemented.
|
|
46
|
+
*/
|
|
47
|
+
getEntityAttribute?(globalId: number, attrName: string): string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Get a quantity value by quantity-set name and quantity name.
|
|
50
|
+
* Returns the numeric or string value, or `undefined` if not found.
|
|
51
|
+
*/
|
|
52
|
+
getQuantityValue?(globalId: number, qsetName: string, quantName: string): number | string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Get classification references for an entity.
|
|
55
|
+
* Returns an empty array when the entity has no classifications.
|
|
56
|
+
*/
|
|
57
|
+
getClassifications?(globalId: number): ClassificationInfo[];
|
|
58
|
+
/**
|
|
59
|
+
* Get the material name for an entity.
|
|
60
|
+
* Returns the top-level material name, or the first layer/constituent name.
|
|
61
|
+
*/
|
|
62
|
+
getMaterialName?(globalId: number): string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Get quantity sets for an entity (used for discovery).
|
|
65
|
+
* Returns quantity set names and their quantity names.
|
|
66
|
+
*/
|
|
67
|
+
getQuantitySets?(globalId: number): ReadonlyArray<{
|
|
68
|
+
name: string;
|
|
69
|
+
quantities: ReadonlyArray<{
|
|
70
|
+
name: string;
|
|
71
|
+
}>;
|
|
72
|
+
}>;
|
|
38
73
|
}
|
|
39
74
|
/** Property set returned by {@link LensDataProvider.getPropertySets} */
|
|
40
75
|
export interface PropertySetInfo {
|
|
@@ -44,9 +79,15 @@ export interface PropertySetInfo {
|
|
|
44
79
|
value: unknown;
|
|
45
80
|
}>;
|
|
46
81
|
}
|
|
82
|
+
/** Classification reference returned by {@link LensDataProvider.getClassifications} */
|
|
83
|
+
export interface ClassificationInfo {
|
|
84
|
+
system?: string;
|
|
85
|
+
identification?: string;
|
|
86
|
+
name?: string;
|
|
87
|
+
}
|
|
47
88
|
/** Criteria for matching entities */
|
|
48
89
|
export interface LensCriteria {
|
|
49
|
-
type: 'ifcType' | 'property' | 'material';
|
|
90
|
+
type: 'ifcType' | 'property' | 'material' | 'attribute' | 'quantity' | 'classification';
|
|
50
91
|
/** IFC class name (e.g. "IfcWall") — used when type === "ifcType" */
|
|
51
92
|
ifcType?: string;
|
|
52
93
|
/** Property set name (e.g. "Pset_WallCommon") — used when type === "property" */
|
|
@@ -59,6 +100,20 @@ export interface LensCriteria {
|
|
|
59
100
|
propertyValue?: string;
|
|
60
101
|
/** Material name pattern — used when type === "material" */
|
|
61
102
|
materialName?: string;
|
|
103
|
+
/** Attribute name (e.g. "Name", "Description") — used when type === "attribute" */
|
|
104
|
+
attributeName?: string;
|
|
105
|
+
/** Attribute value to compare against */
|
|
106
|
+
attributeValue?: string;
|
|
107
|
+
/** Quantity set name (e.g. "Qto_WallBaseQuantities") — used when type === "quantity" */
|
|
108
|
+
quantitySet?: string;
|
|
109
|
+
/** Quantity name (e.g. "Length") — used when type === "quantity" */
|
|
110
|
+
quantityName?: string;
|
|
111
|
+
/** Quantity value to compare against (stringified) */
|
|
112
|
+
quantityValue?: string;
|
|
113
|
+
/** Classification system (e.g. "Uniclass") — used when type === "classification" */
|
|
114
|
+
classificationSystem?: string;
|
|
115
|
+
/** Classification code (e.g. "Pr_60_10_32") — used when type === "classification" */
|
|
116
|
+
classificationCode?: string;
|
|
62
117
|
}
|
|
63
118
|
/** A single rule within a Lens */
|
|
64
119
|
export interface LensRule {
|
|
@@ -70,6 +125,20 @@ export interface LensRule {
|
|
|
70
125
|
/** Hex color for colorize/transparent actions (e.g. "#E53935") */
|
|
71
126
|
color: string;
|
|
72
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Data source specification for automatic coloring.
|
|
130
|
+
*
|
|
131
|
+
* In auto-color mode, the engine iterates all entities, extracts the
|
|
132
|
+
* specified value, groups by distinct values, and assigns a unique color
|
|
133
|
+
* to each group. No manual rule authoring needed.
|
|
134
|
+
*/
|
|
135
|
+
export interface AutoColorSpec {
|
|
136
|
+
source: 'ifcType' | 'attribute' | 'property' | 'quantity' | 'classification' | 'material';
|
|
137
|
+
/** Property/quantity set name — for source "property" or "quantity" */
|
|
138
|
+
psetName?: string;
|
|
139
|
+
/** Attribute, property, or quantity name */
|
|
140
|
+
propertyName?: string;
|
|
141
|
+
}
|
|
73
142
|
/** A saved Lens configuration */
|
|
74
143
|
export interface Lens {
|
|
75
144
|
id: string;
|
|
@@ -77,11 +146,8 @@ export interface Lens {
|
|
|
77
146
|
rules: LensRule[];
|
|
78
147
|
/** Built-in presets cannot be deleted */
|
|
79
148
|
builtin?: boolean;
|
|
80
|
-
/** Auto-color mode: color entities by distinct
|
|
81
|
-
|
|
82
|
-
propertySetName: string;
|
|
83
|
-
propertyName: string;
|
|
84
|
-
};
|
|
149
|
+
/** Auto-color mode: color entities by distinct values from a data column */
|
|
150
|
+
autoColor?: AutoColorSpec;
|
|
85
151
|
}
|
|
86
152
|
/** RGBA color tuple with values in the 0–1 range */
|
|
87
153
|
export type RGBAColor = [number, number, number, number];
|
|
@@ -98,6 +164,19 @@ export interface LensEvaluationResult {
|
|
|
98
164
|
/** Wall-clock evaluation time in milliseconds */
|
|
99
165
|
executionTime: number;
|
|
100
166
|
}
|
|
167
|
+
/** Auto-color legend entry (synthetic rule for UI display) */
|
|
168
|
+
export interface AutoColorLegendEntry {
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
color: string;
|
|
172
|
+
count: number;
|
|
173
|
+
}
|
|
174
|
+
/** Supported auto-color data sources for display in UI */
|
|
175
|
+
export declare const AUTO_COLOR_SOURCES: readonly ["ifcType", "attribute", "property", "quantity", "classification", "material"];
|
|
176
|
+
/** All supported criteria types for lens rules */
|
|
177
|
+
export declare const LENS_CRITERIA_TYPES: readonly ["ifcType", "attribute", "property", "quantity", "classification", "material"];
|
|
178
|
+
/** Common entity attribute names for the lens rule editor */
|
|
179
|
+
export declare const ENTITY_ATTRIBUTE_NAMES: readonly ["Name", "Description", "ObjectType", "Tag"];
|
|
101
180
|
/** Common IFC classes for lens rule editor UI */
|
|
102
181
|
export declare const COMMON_IFC_CLASSES: readonly ["IfcWall", "IfcWallStandardCase", "IfcSlab", "IfcSlabStandardCase", "IfcColumn", "IfcColumnStandardCase", "IfcBeam", "IfcBeamStandardCase", "IfcDoor", "IfcWindow", "IfcStairFlight", "IfcStair", "IfcRoof", "IfcRamp", "IfcRampFlight", "IfcRailing", "IfcCovering", "IfcCurtainWall", "IfcPlate", "IfcFooting", "IfcPile", "IfcMember", "IfcBuildingElementProxy", "IfcFurnishingElement", "IfcSpace", "IfcFlowSegment", "IfcFlowTerminal", "IfcFlowFitting", "IfcDistributionElement", "IfcOpeningElement"];
|
|
103
182
|
/** Preset colors for new lens rules — high contrast, perceptually distinct */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,cAAc,IAAI,MAAM,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE3E,4DAA4D;IAC5D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAEX;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAErD;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE5E;;;OAGG;IACH,gBAAgB,CAAC,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE/B;;;OAGG;IACH,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAE5D;;;OAGG;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEvD;;;OAGG;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC;QAChD,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7C,CAAC,CAAC;CACJ;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,uFAAuF;AACvF,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACxF,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,kCAAkC;AAClC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;IAC5C,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAC1F,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,iCAAiC;AACjC,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAMD,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzD,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,wCAAwC;IACxC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,qCAAqC;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,0DAA0D;IAC1D,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,yFAErB,CAAC;AAEX,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,yFAEtB,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,uDAEzB,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,0fAgBrB,CAAC;AAEX,8EAA8E;AAC9E,eAAO,MAAM,YAAY,+IAIf,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOhE,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/** Supported auto-color data sources for display in UI */
|
|
5
|
+
export const AUTO_COLOR_SOURCES = [
|
|
6
|
+
'ifcType', 'attribute', 'property', 'quantity', 'classification', 'material',
|
|
7
|
+
];
|
|
8
|
+
/** All supported criteria types for lens rules */
|
|
9
|
+
export const LENS_CRITERIA_TYPES = [
|
|
10
|
+
'ifcType', 'attribute', 'property', 'quantity', 'classification', 'material',
|
|
11
|
+
];
|
|
12
|
+
/** Common entity attribute names for the lens rule editor */
|
|
13
|
+
export const ENTITY_ATTRIBUTE_NAMES = [
|
|
14
|
+
'Name', 'Description', 'ObjectType', 'Tag',
|
|
15
|
+
];
|
|
7
16
|
/** Common IFC classes for lens rule editor UI */
|
|
8
17
|
export const COMMON_IFC_CLASSES = [
|
|
9
18
|
'IfcWall', 'IfcWallStandardCase',
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyN/D,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU;CACpE,CAAC;AAEX,kDAAkD;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU;CACpE,CAAC;AAEX,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK;CAClC,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,qBAAqB;IAChC,WAAW,EAAE,uBAAuB;IACpC,SAAS,EAAE,qBAAqB;IAChC,SAAS,EAAE,WAAW;IACtB,gBAAgB,EAAE,UAAU;IAC5B,SAAS,EAAE,SAAS,EAAE,eAAe;IACrC,YAAY,EAAE,aAAa;IAC3B,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,yBAAyB;IACtC,sBAAsB,EAAE,UAAU;IAClC,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB;IACrD,wBAAwB;IACxB,mBAAmB;CACX,CAAC;AAEX,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAC1C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAC1C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;CAClC,CAAC;AAEX,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,mBAAmB,EAAE,SAAS;IAC9B,mBAAmB,EAAE,SAAS;IAC9B,qBAAqB,EAAE,WAAW;IAClC,mBAAmB,EAAE,SAAS;IAC9B,cAAc,EAAE,UAAU;IAC1B,aAAa,EAAE,SAAS;CACzB,CAAC"}
|