@instruments/taxonomy 0.3.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,178 +0,0 @@
1
- import {
2
- approximates,
3
- constitutive,
4
- declined
5
- } from "../chunk-WIRA24HM.js";
6
- import {
7
- TAXONOMY_SNAPSHOT_VERSION
8
- } from "../chunk-FCMCKNQF.js";
9
- import {
10
- defineAlternatives,
11
- defineBundle
12
- } from "../chunk-4ECRPD2I.js";
13
-
14
- // src/crosswalks/materialgraph.ts
15
- var MATERIALGRAPH_CROSSWALK_VERSION = "materialgraph-2026-08-27.1";
16
- var MATERIALGRAPH_SOURCE_SYSTEM = "materialgraph";
17
- var MATERIALGRAPH_SNAPSHOT = "2026-08-27";
18
- var MATERIALGRAPH_SOURCE_FIELDS = ["role", "character"];
19
- var MATERIALGRAPH_COMPOSITIONAL_ROLES = {
20
- accent: "accent",
21
- feature_surface: "constitutive"
22
- };
23
- var SCALE_SHIFT = "A claim about a MATERIAL answered by a term about a ROOM. The two substitute in retrieval most of the time and not always, which is what `close` says and what `resolved` could not.";
24
- var LADDER = "One rung of the quiet/restrained/expressive/bold presence ladder. MOOD is unordered and has no term for this rung, so the association is published and the ordering is lost. See the header.";
25
- var READS_AS = "A `reads-as` claim with nothing to point at. The predicate exists in `term.ts`; the target vocabulary - a natural/synthetic and soft/hard reading register - is not authored on any axis, and minting one would be a new axis. Searched 2026-08-27 across all 23 axes; absent.";
26
- var MATERIALGRAPH_CROSSWALK = {
27
- /* oxlint-disable sort-keys -- rows follow the upstream dictionary order, so a reader can check
28
- this file against `material-semantics-core.ts` and `-aesthetics.ts` without reordering. */
29
- role: {
30
- wall_finish: approximates(
31
- "broad",
32
- "`application.wall` is every use of a wall face - panelling, tiling, cladding - and the source names one of them. The canon covers more than the source claimed. Note the collision with `material-family.wall-finish`, which is the same two words asking what the thing is MADE OF; this row is about where it goes.",
33
- "application.wall"
34
- ),
35
- flooring: constitutive("application.flooring"),
36
- ceiling: constitutive("application.ceiling"),
37
- // `element.millwork` already carries `joinery` and `casework` as alt labels: the canon has
38
- // ruled that the British and American words name one thing, and this row follows that ruling
39
- // rather than re-opening it.
40
- joinery: constitutive("application.millwork"),
41
- upholstery: constitutive("application.upholstery"),
42
- drapery: constitutive("application.vh_drapery"),
43
- // `application.countertop` gained `worksurface` as an alt label for this row. One surface, two
44
- // national names, one term.
45
- worksurface: constitutive("application.countertop"),
46
- casegoods: approximates(
47
- "close",
48
- "A role answered by a product kind. `product_category.storage` carries `casegoods` as an alt label, so the words agree; the claims do not quite, because the source says what the material is DOING and the canon says what the product IS.",
49
- "product_category.storage"
50
- ),
51
- trim: constitutive("application.trim"),
52
- accent: declined(
53
- "Compositional, not a product property: the same material is an accent in one scheme and the field in the next. Its destination is the bundle role `accent` in `match.ts` - see MATERIALGRAPH_COMPOSITIONAL_ROLES."
54
- ),
55
- feature_surface: declined(
56
- "Compositional, as `accent` is. Its destination is the bundle role `constitutive`: a feature surface is the one you cannot remove without changing what the scheme is."
57
- ),
58
- other: declined(
59
- "A routing bucket with no content. `other` on a closed axis is a positive classification; on this one it names nothing at all, and the honest canonical value is null."
60
- )
61
- },
62
- character: {
63
- quiet: approximates("close", SCALE_SHIFT, "mood.calm"),
64
- expressive: approximates("related", LADDER, "mood.dramatic"),
65
- restrained: approximates(
66
- "related",
67
- `${LADDER} \`mood.austere\` is the nearest room-scale term and it overstates: austerity is renunciation, restraint is only quietness of means.`,
68
- "mood.austere"
69
- ),
70
- bold: approximates("related", LADDER, "mood.dramatic"),
71
- // The one row in this dictionary that reads the same at both scales: a rustic material and a
72
- // rustic room are the same idiom, which is what TAX-14 found and this keeps.
73
- rustic: approximates("close", SCALE_SHIFT, "style.rustic"),
74
- crafted: approximates(
75
- "related",
76
- "A READING answered by a production FACT, and the two come apart in both directions: a printed laminate can read as crafted, and a machine-finished handmade tile can read as neither. Association only.",
77
- "construction.handcrafted"
78
- ),
79
- refined: declined(
80
- "The machine-precise register has no canonical term. `mood.quiet-luxury` is about expense being legible and `finish.treatment.polished` is about a surface operation; refined is about precision of execution and is neither. Searched 2026-08-27; absent."
81
- ),
82
- // TAX-14 recorded this as `lossy` - "`serious` understates the social convention `formal`
83
- // carries". That verdict is SKOS's `closeMatch`, reached independently and now spelled in the
84
- // published vocabulary rather than in a bespoke one.
85
- formal: approximates(
86
- "close",
87
- `${SCALE_SHIFT} \`mood.serious\` also understates the social convention \`formal\` carries.`,
88
- "mood.serious"
89
- ),
90
- casual: approximates("close", SCALE_SHIFT, "mood.domestic"),
91
- natural_reading: declined(READS_AS),
92
- synthetic_reading: declined(READS_AS),
93
- soft_reading: declined(READS_AS),
94
- hard_reading: declined(READS_AS)
95
- }
96
- /* oxlint-enable sort-keys */
97
- };
98
- var canonicaliseMaterialGraph = (input) => {
99
- const base = {
100
- crosswalkVersion: MATERIALGRAPH_CROSSWALK_VERSION,
101
- provenance: input.provenance,
102
- sourceField: input.sourceField,
103
- sourceSystem: MATERIALGRAPH_SOURCE_SYSTEM,
104
- sourceValue: input.sourceValue,
105
- taxonomySnapshotVersion: TAXONOMY_SNAPSHOT_VERSION
106
- };
107
- const mapping = MATERIALGRAPH_CROSSWALK[input.sourceField][input.sourceValue];
108
- if (mapping === void 0) {
109
- return { ...base, status: "unresolved" };
110
- }
111
- if (mapping.status === "declined") {
112
- return { ...base, reason: mapping.reason, status: "declined" };
113
- }
114
- if (mapping.status === "ambiguous") {
115
- return {
116
- ...base,
117
- alternatives: defineAlternatives(
118
- mapping.alternatives,
119
- "source-ambiguous"
120
- ),
121
- match: mapping.match,
122
- status: "ambiguous",
123
- ...mapping.note === void 0 ? {} : { note: mapping.note }
124
- };
125
- }
126
- return {
127
- ...base,
128
- canonical: defineBundle(mapping.assertions),
129
- match: mapping.match,
130
- status: "resolved",
131
- ...mapping.note === void 0 ? {} : { note: mapping.note }
132
- };
133
- };
134
- var MATERIALGRAPH_ROLE_VALUES = [
135
- "wall_finish",
136
- "flooring",
137
- "ceiling",
138
- "joinery",
139
- "upholstery",
140
- "drapery",
141
- "accent",
142
- "worksurface",
143
- "casegoods",
144
- "feature_surface",
145
- "trim",
146
- "other"
147
- ];
148
- var MATERIALGRAPH_CHARACTER_VALUES = [
149
- "quiet",
150
- "expressive",
151
- "restrained",
152
- "bold",
153
- "rustic",
154
- "crafted",
155
- "refined",
156
- "formal",
157
- "casual",
158
- "natural_reading",
159
- "synthetic_reading",
160
- "soft_reading",
161
- "hard_reading"
162
- ];
163
- var MATERIALGRAPH_SOURCE_VALUES = {
164
- character: MATERIALGRAPH_CHARACTER_VALUES,
165
- role: MATERIALGRAPH_ROLE_VALUES
166
- };
167
- export {
168
- MATERIALGRAPH_CHARACTER_VALUES,
169
- MATERIALGRAPH_COMPOSITIONAL_ROLES,
170
- MATERIALGRAPH_CROSSWALK,
171
- MATERIALGRAPH_CROSSWALK_VERSION,
172
- MATERIALGRAPH_ROLE_VALUES,
173
- MATERIALGRAPH_SNAPSHOT,
174
- MATERIALGRAPH_SOURCE_FIELDS,
175
- MATERIALGRAPH_SOURCE_SYSTEM,
176
- MATERIALGRAPH_SOURCE_VALUES,
177
- canonicaliseMaterialGraph
178
- };
@@ -1,19 +0,0 @@
1
- import { MaterialFamily, Sector, Application } from '../index.js';
2
- import '../match-CWzTEuL-.js';
3
- import '../mapping-pvHk5VjC.js';
4
- import '../taste.js';
5
-
6
- declare const MIU_MATERIAL_FAMILIES: readonly ["wood", "wood_veneer", "engineered_wood", "bamboo", "cork", "natural_stone", "terrazzo", "ceramic_porcelain", "glass", "metal", "concrete", "plaster", "clay", "brick", "paint_coating", "wallcovering", "laminate", "solid_surface", "mineral_composite", "resin", "linoleum", "vinyl", "rubber", "carpet", "rug", "textile", "leather", "acoustic_felt", "acoustic_composite", "recycled_composite", "paper_cardboard", "biobased_composite", "greenery_planting", "lighting", "hardware", "digital_media", "water_feature", "mixed_material", "color_palette_only", "unknown"];
7
- type MiuMaterialFamily = (typeof MIU_MATERIAL_FAMILIES)[number];
8
- declare const MIU_FAMILY_TO_CANONICAL: Readonly<Record<MiuMaterialFamily, MaterialFamily | null>>;
9
- declare const MIU_PROJECT_SECTORS: readonly ["hospitality", "food_and_beverage", "workplace", "residential", "multifamily", "retail_and_showroom", "healthcare", "wellness", "education", "civic", "cultural", "community", "sports_recreation", "entertainment", "industrial", "logistics", "maker", "transportation", "landscape_public_realm", "mixed_use", "master_planning", "temporary_exhibition", "religious", "senior_living", "student_housing", "unknown"];
10
- type MiuProjectSector = (typeof MIU_PROJECT_SECTORS)[number];
11
- declare const MIU_SECTOR_TO_CANONICAL: Readonly<Record<MiuProjectSector, Sector | null>>;
12
- declare const MIU_SURFACE_APPLICATIONS: readonly ["flooring", "floor_inlay", "stair_tread", "stair_riser", "wall_finish", "wall_panel", "wainscot", "baseboard", "trim", "ceiling_finish", "ceiling_cloud", "column_wrap", "door_finish", "frame_finish", "shower_wall", "shower_floor", "backsplash", "vanity_top", "toilet_partition", "commercial_kitchen_floor", "kitchen_wall", "food_service_counter", "laundry_floor", "pool_deck_surface", "reception_desk", "bar_front", "bar_top", "back_bar", "banquette_base", "cabinet_front", "shelving", "display_fixture", "closet_system", "workstation_casework", "checkout_counter", "upholstery", "loose_furniture", "built_in_seating", "banquette_upholstery", "drapery", "window_treatment", "rug", "carpet_tile", "bedding", "privacy_curtain", "acoustic_fabric_panel", "lighting_fixture", "acoustic_treatment", "partition", "operable_wall", "signage", "wayfinding", "hardware", "plumbing_fixture", "decorative_screen", "art_installation", "green_wall", "facade_cladding", "soffit", "exterior_screen", "paving", "decking", "outdoor_furniture", "planter", "pool_coping", "shade_structure", "railing", "fence_screen", "unknown"];
13
- type MiuSurfaceApplication = (typeof MIU_SURFACE_APPLICATIONS)[number];
14
- declare const MIU_SURFACE_APPLICATION_TO_CANONICAL: Readonly<Record<MiuSurfaceApplication, Application | null>>;
15
- declare const miuFamilyToCanonical: (value: string) => MaterialFamily | null;
16
- declare const miuSectorToCanonical: (value: string) => Sector | null;
17
- declare const miuSurfaceApplicationToCanonical: (value: string) => Application | null;
18
-
19
- export { MIU_FAMILY_TO_CANONICAL, MIU_MATERIAL_FAMILIES, MIU_PROJECT_SECTORS, MIU_SECTOR_TO_CANONICAL, MIU_SURFACE_APPLICATIONS, MIU_SURFACE_APPLICATION_TO_CANONICAL, type MiuMaterialFamily, type MiuProjectSector, type MiuSurfaceApplication, miuFamilyToCanonical, miuSectorToCanonical, miuSurfaceApplicationToCanonical };
@@ -1,406 +0,0 @@
1
- // src/crosswalks/miu.ts
2
- var MIU_MATERIAL_FAMILIES = [
3
- "wood",
4
- "wood_veneer",
5
- "engineered_wood",
6
- "bamboo",
7
- "cork",
8
- "natural_stone",
9
- "terrazzo",
10
- "ceramic_porcelain",
11
- "glass",
12
- "metal",
13
- "concrete",
14
- "plaster",
15
- "clay",
16
- "brick",
17
- "paint_coating",
18
- "wallcovering",
19
- "laminate",
20
- "solid_surface",
21
- "mineral_composite",
22
- "resin",
23
- "linoleum",
24
- "vinyl",
25
- "rubber",
26
- "carpet",
27
- "rug",
28
- "textile",
29
- "leather",
30
- "acoustic_felt",
31
- "acoustic_composite",
32
- "recycled_composite",
33
- "paper_cardboard",
34
- "biobased_composite",
35
- "greenery_planting",
36
- "lighting",
37
- "hardware",
38
- "digital_media",
39
- "water_feature",
40
- "mixed_material",
41
- "color_palette_only",
42
- "unknown"
43
- ];
44
- var MIU_FAMILY_TO_CANONICAL = {
45
- wood: "wood",
46
- // Veneer and engineered constructions are wood at family grain; construction is sub-family detail.
47
- wood_veneer: "wood",
48
- engineered_wood: "wood",
49
- // Botanically a grass, but sold, specified, and finished as wood (flooring, ply, veneer).
50
- bamboo: "wood",
51
- // Trade classification: cork is a canonical resilient flooring type alongside linoleum and rubber.
52
- cork: "resilient_flooring",
53
- natural_stone: "stone",
54
- terrazzo: "terrazzo",
55
- // MS has no ceramic family; in interiors ceramic/porcelain IS the tile family (materialgraph's
56
- // own tile_material_family dictionary leads with ceramic and porcelain).
57
- ceramic_porcelain: "tile",
58
- glass: "glass",
59
- metal: "metal",
60
- concrete: "concrete",
61
- // Plaster, venetian plaster, and limewash are the archetypal MS wall finishes.
62
- plaster: "wall_finish",
63
- // With ceramic_porcelain and brick as separate MIU families, clay denotes unfired clay finishes
64
- // (clay plaster and kin) — wall finish.
65
- clay: "wall_finish",
66
- // Real masonry material with no canonical family (no masonry term; fired clay is not `stone`).
67
- brick: "other",
68
- paint_coating: "paint",
69
- wallcovering: "wallcovering",
70
- // HPL is a paper/resin layered composite; worksurface/wall are roles, not the material family.
71
- laminate: "composite",
72
- // Acrylic + mineral-filler blend — the definition of an engineered composite.
73
- solid_surface: "composite",
74
- mineral_composite: "composite",
75
- // Architectural resin panels (ecoresin, encapsulated-layer) are composites in practice.
76
- resin: "composite",
77
- linoleum: "resilient_flooring",
78
- // In a list where textile and wallcovering are separate families, MIU vinyl means sheet/LVT flooring.
79
- vinyl: "resilient_flooring",
80
- // Rubber flooring is trade-canonical resilient flooring.
81
- rubber: "resilient_flooring",
82
- carpet: "carpet",
83
- // A rug is loose-laid carpet; installation is not family.
84
- rug: "carpet",
85
- textile: "textile",
86
- leather: "leather",
87
- // PET felt is a nonwoven textile; "acoustic" is the role (MATERIAL_ROLES), not the family.
88
- acoustic_felt: "textile",
89
- // Layered/engineered acoustic panels; composite is the material-truth home.
90
- acoustic_composite: "composite",
91
- recycled_composite: "composite",
92
- // Genuine architectural material (paper wall finishes, cardboard construction) with no canonical
93
- // family; not textile, not composite.
94
- paper_cardboard: "other",
95
- biobased_composite: "composite",
96
- // Living matter, not a material family; even `other` would falsely assert material-hood.
97
- greenery_planting: null,
98
- // FF&E product category; classifying the fixture's constituent materials would be a guess.
99
- lighting: null,
100
- // FF&E product category; usually metal, but asserting `metal` is a guess — never guess.
101
- hardware: null,
102
- // Screens/projected content — an experience layer, not a material.
103
- digital_media: null,
104
- // An assembly/element, not a material family.
105
- water_feature: null,
106
- // Spans multiple families; materialgraph models families as a multi-valued array, so a
107
- // single-valued crosswalk cannot honestly pick one.
108
- mixed_material: null,
109
- // Granularity sentinel (it also appears in MATERIAL_GRANULARITIES), not a material identity.
110
- color_palette_only: null,
111
- // Epistemic sentinel — explicitly NOT `other` (unidentified is not identified-but-unclassifiable).
112
- unknown: null
113
- };
114
- var MIU_PROJECT_SECTORS = [
115
- "hospitality",
116
- "food_and_beverage",
117
- "workplace",
118
- "residential",
119
- "multifamily",
120
- "retail_and_showroom",
121
- "healthcare",
122
- "wellness",
123
- "education",
124
- "civic",
125
- "cultural",
126
- "community",
127
- "sports_recreation",
128
- "entertainment",
129
- "industrial",
130
- "logistics",
131
- "maker",
132
- "transportation",
133
- "landscape_public_realm",
134
- "mixed_use",
135
- "master_planning",
136
- "temporary_exhibition",
137
- "religious",
138
- "senior_living",
139
- "student_housing",
140
- "unknown"
141
- ];
142
- var MIU_SECTOR_TO_CANONICAL = {
143
- hospitality: "hospitality",
144
- // Restaurants and F&B venues are the hospitality sector at MG grain (MB's own analytics files
145
- // "Hospitality: Restaurant").
146
- food_and_beverage: "hospitality",
147
- workplace: "workplace",
148
- residential: "residential",
149
- // Multi-unit housing is residential; MG mixed_use means mixed-use developments, not multifamily.
150
- multifamily: "residential",
151
- // Showrooms are retail environments.
152
- retail_and_showroom: "retail",
153
- healthcare: "healthcare",
154
- // Spans hospitality spas, healthcare clinics, and fitness; no honest single sector term.
155
- wellness: "other",
156
- education: "education",
157
- civic: "civic",
158
- // Museums, galleries, and theatres are civic-cultural institutions at MG grain.
159
- cultural: "civic",
160
- // Community centres are civic infrastructure.
161
- community: "civic",
162
- // No sports sector; spans civic recreation and commercial venues.
163
- sports_recreation: "other",
164
- // Cinemas and venues; no canonical term.
165
- entertainment: "other",
166
- // Real sector with no canonical term.
167
- industrial: "other",
168
- // Real sector with no canonical term.
169
- logistics: "other",
170
- // Fabrication studios and workshops; nearer industrial than office workplace.
171
- maker: "other",
172
- transportation: "transportation",
173
- // Parks and plazas are civic public realm.
174
- landscape_public_realm: "civic",
175
- mixed_use: "mixed_use",
176
- // Spans sectors by definition — a single-valued crosswalk cannot honestly pick one (mirrors
177
- // mixed_material in the family crosswalk).
178
- master_planning: null,
179
- // Exhibitions and installations; no canonical term.
180
- temporary_exhibition: "other",
181
- // Religious buildings are not civic government; real sector, no term.
182
- religious: "other",
183
- // A housing typology; the healthcare-adjacent bleed is accepted.
184
- senior_living: "residential",
185
- // A housing typology.
186
- student_housing: "residential",
187
- // Epistemic sentinel — explicitly NOT `other` (unidentified is not identified-but-unclassifiable).
188
- unknown: null
189
- };
190
- var MIU_SURFACE_APPLICATIONS = [
191
- "flooring",
192
- "floor_inlay",
193
- "stair_tread",
194
- "stair_riser",
195
- "wall_finish",
196
- "wall_panel",
197
- "wainscot",
198
- "baseboard",
199
- "trim",
200
- "ceiling_finish",
201
- "ceiling_cloud",
202
- "column_wrap",
203
- "door_finish",
204
- "frame_finish",
205
- "shower_wall",
206
- "shower_floor",
207
- "backsplash",
208
- "vanity_top",
209
- "toilet_partition",
210
- "commercial_kitchen_floor",
211
- "kitchen_wall",
212
- "food_service_counter",
213
- "laundry_floor",
214
- "pool_deck_surface",
215
- "reception_desk",
216
- "bar_front",
217
- "bar_top",
218
- "back_bar",
219
- "banquette_base",
220
- "cabinet_front",
221
- "shelving",
222
- "display_fixture",
223
- "closet_system",
224
- "workstation_casework",
225
- "checkout_counter",
226
- "upholstery",
227
- "loose_furniture",
228
- "built_in_seating",
229
- "banquette_upholstery",
230
- "drapery",
231
- "window_treatment",
232
- "rug",
233
- "carpet_tile",
234
- "bedding",
235
- "privacy_curtain",
236
- "acoustic_fabric_panel",
237
- "lighting_fixture",
238
- "acoustic_treatment",
239
- "partition",
240
- "operable_wall",
241
- "signage",
242
- "wayfinding",
243
- "hardware",
244
- "plumbing_fixture",
245
- "decorative_screen",
246
- "art_installation",
247
- "green_wall",
248
- "facade_cladding",
249
- "soffit",
250
- "exterior_screen",
251
- "paving",
252
- "decking",
253
- "outdoor_furniture",
254
- "planter",
255
- "pool_coping",
256
- "shade_structure",
257
- "railing",
258
- "fence_screen",
259
- "unknown"
260
- ];
261
- var MIU_SURFACE_APPLICATION_TO_CANONICAL = {
262
- flooring: "flooring",
263
- // A decorative flooring detail.
264
- floor_inlay: "flooring",
265
- stair_tread: "stair_tread",
266
- stair_riser: "stair_riser",
267
- wall_finish: "wall",
268
- // Panelised wall surface; still the wall zone.
269
- wall_panel: "wall",
270
- // Lower-wall treatment.
271
- wainscot: "wall",
272
- // Wall-base trim reads as the wall zone, not flooring.
273
- baseboard: "wall",
274
- // Architectural trim is millwork/joinery.
275
- trim: "millwork",
276
- ceiling_finish: "ceiling",
277
- // A suspended ceiling element.
278
- ceiling_cloud: "ceiling",
279
- // Vertical surface cladding.
280
- column_wrap: "wall",
281
- door_finish: "door",
282
- // Spans door, window, and facade frames; no honest single term.
283
- frame_finish: null,
284
- shower_wall: "wall_wet_shower",
285
- // Wet-area flooring.
286
- shower_floor: "flooring_wet_area",
287
- backsplash: "wall_backsplash",
288
- // A bathroom counter.
289
- vanity_top: "countertop",
290
- toilet_partition: "partition_toilet",
291
- // Kitchen-zone application; MG's oil/wet flooring leaves would over-assume the condition.
292
- commercial_kitchen_floor: "kitchen",
293
- // Kitchen-zone application.
294
- kitchen_wall: "kitchen",
295
- // A service counter.
296
- food_service_counter: "countertop",
297
- // Wet-area flooring.
298
- laundry_floor: "flooring_wet_area",
299
- pool_deck_surface: "pool_decking",
300
- // Reception desks are casework.
301
- reception_desk: "millwork",
302
- // The bar zone.
303
- bar_front: "bar",
304
- // The bar zone term is more specific than countertop.
305
- bar_top: "bar",
306
- // The bar zone.
307
- back_bar: "bar",
308
- // Built-in joinery base.
309
- banquette_base: "millwork",
310
- cabinet_front: "cabinetry",
311
- // Built-in shelving is millwork.
312
- shelving: "millwork",
313
- // Retail display fixtures are casework.
314
- display_fixture: "millwork",
315
- // Closet systems are cabinetry.
316
- closet_system: "cabinetry",
317
- // Office systems furniture.
318
- workstation_casework: "furniture_systems",
319
- // A service counter.
320
- checkout_counter: "countertop",
321
- // Seating upholstery; upholstered walls have their own MIU entries.
322
- upholstery: "furniture_seating",
323
- loose_furniture: "furniture",
324
- // Built-in seating.
325
- built_in_seating: "furniture_seating",
326
- // Banquette seating upholstery.
327
- banquette_upholstery: "furniture_seating",
328
- drapery: "vh_drapery",
329
- // Generic; the shade/curtain leaves would over-assume the type.
330
- window_treatment: "vertically_hanging",
331
- // Loose floor covering.
332
- rug: "flooring",
333
- // Modular floor covering.
334
- carpet_tile: "flooring",
335
- bedding: "bedding",
336
- privacy_curtain: "vh_privacy_curtain",
337
- // An upholstered wall panel.
338
- acoustic_fabric_panel: "wall_upholstered",
339
- lighting_fixture: "lighting",
340
- // Spans wall, ceiling, and baffle treatments; no honest single term.
341
- acoustic_treatment: null,
342
- partition: "partition",
343
- // A movable partition.
344
- operable_wall: "partition",
345
- // No signage term; decor or ornamentation would be false.
346
- signage: null,
347
- // No wayfinding term.
348
- wayfinding: null,
349
- // Spans door, cabinet, and bath hardware — never guess.
350
- hardware: null,
351
- // Predominantly sanitary fixtures; the kitchen-sink bleed is accepted.
352
- plumbing_fixture: "bath",
353
- // A freestanding room divider.
354
- decorative_screen: "partition",
355
- // Artwork is decor at MG grain.
356
- art_installation: "decor",
357
- // A planted wall system is still a wall application.
358
- green_wall: "wall",
359
- facade_cladding: "facade",
360
- // The underside plane; exterior soffits accepted as bleed.
361
- soffit: "ceiling",
362
- // Envelope screening.
363
- exterior_screen: "facade",
364
- paving: "paving_deck",
365
- // General decking; pool decking has its own MIU entry.
366
- decking: "paving_deck",
367
- // The application vocabulary has no outdoor bucket.
368
- outdoor_furniture: "furniture",
369
- // Pots and planters are decor.
370
- planter: "decor",
371
- pool_coping: "pool_coping",
372
- // Awning/tensile family; a specific leaf would over-assume.
373
- shade_structure: "awning_umbrella",
374
- // Railings and balustrades live under stair & elevator.
375
- railing: "stair_railing",
376
- // Exterior fencing; no canonical term.
377
- fence_screen: null,
378
- // Epistemic sentinel.
379
- unknown: null
380
- };
381
- var MIU_MATERIAL_FAMILY_SET = new Set(
382
- MIU_MATERIAL_FAMILIES
383
- );
384
- var MIU_PROJECT_SECTOR_SET = new Set(
385
- MIU_PROJECT_SECTORS
386
- );
387
- var MIU_SURFACE_APPLICATION_SET = new Set(
388
- MIU_SURFACE_APPLICATIONS
389
- );
390
- var isMiuMaterialFamily = (value) => MIU_MATERIAL_FAMILY_SET.has(value);
391
- var isMiuProjectSector = (value) => MIU_PROJECT_SECTOR_SET.has(value);
392
- var isMiuSurfaceApplication = (value) => MIU_SURFACE_APPLICATION_SET.has(value);
393
- var miuFamilyToCanonical = (value) => isMiuMaterialFamily(value) ? MIU_FAMILY_TO_CANONICAL[value] : null;
394
- var miuSectorToCanonical = (value) => isMiuProjectSector(value) ? MIU_SECTOR_TO_CANONICAL[value] : null;
395
- var miuSurfaceApplicationToCanonical = (value) => isMiuSurfaceApplication(value) ? MIU_SURFACE_APPLICATION_TO_CANONICAL[value] : null;
396
- export {
397
- MIU_FAMILY_TO_CANONICAL,
398
- MIU_MATERIAL_FAMILIES,
399
- MIU_PROJECT_SECTORS,
400
- MIU_SECTOR_TO_CANONICAL,
401
- MIU_SURFACE_APPLICATIONS,
402
- MIU_SURFACE_APPLICATION_TO_CANONICAL,
403
- miuFamilyToCanonical,
404
- miuSectorToCanonical,
405
- miuSurfaceApplicationToCanonical
406
- };