@ifc-lite/bcf 1.18.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ids-reporter.d.ts +15 -0
- package/dist/ids-reporter.d.ts.map +1 -1
- package/dist/ids-reporter.js +77 -4
- package/dist/ids-reporter.js.map +1 -1
- package/dist/reader-components.d.ts +15 -0
- package/dist/reader-components.d.ts.map +1 -0
- package/dist/reader-components.js +202 -0
- package/dist/reader-components.js.map +1 -0
- package/dist/reader.d.ts.map +1 -1
- package/dist/reader.js +108 -138
- package/dist/reader.js.map +1 -1
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +223 -68
- package/dist/writer.js.map +1 -1
- package/dist/xml-text.d.ts +32 -0
- package/dist/xml-text.d.ts.map +1 -0
- package/dist/xml-text.js +55 -0
- package/dist/xml-text.js.map +1 -0
- package/package.json +4 -3
package/dist/writer.js
CHANGED
|
@@ -20,7 +20,7 @@ export async function writeBCF(project) {
|
|
|
20
20
|
writeVersionFile(zip, project.version);
|
|
21
21
|
// Write project file (optional)
|
|
22
22
|
if (project.projectId || project.name) {
|
|
23
|
-
writeProjectFile(zip, project);
|
|
23
|
+
writeProjectFile(zip, project, project.version);
|
|
24
24
|
}
|
|
25
25
|
// Write topics
|
|
26
26
|
const usedFolderNames = new Set();
|
|
@@ -37,9 +37,22 @@ export async function writeBCF(project) {
|
|
|
37
37
|
/**
|
|
38
38
|
* Write bcf.version file
|
|
39
39
|
* Uses buildingSMART standard format with both xsi and xsd namespaces
|
|
40
|
+
*
|
|
41
|
+
* BCF 2.1's version.xsd declares `<DetailedVersion>` as an optional
|
|
42
|
+
* (minOccurs="0") child of `<Version>`. BCF 3.0's version.xsd redefines
|
|
43
|
+
* `<Version>` with ONLY a required `VersionId` attribute and no content
|
|
44
|
+
* model at all (empty content type) -- emitting `<DetailedVersion>` there,
|
|
45
|
+
* or even just the whitespace/newline of a non-self-closing `<Version>...
|
|
46
|
+
* </Version>` pair, produces "Character content is not allowed, because the
|
|
47
|
+
* content type is empty" (libxml2 treats incidental whitespace as character
|
|
48
|
+
* content against an empty content model). So for 3.0 the element must be
|
|
49
|
+
* self-closing with no child content at all, not merely omit DetailedVersion.
|
|
40
50
|
*/
|
|
41
51
|
function writeVersionFile(zip, version) {
|
|
42
|
-
const content =
|
|
52
|
+
const content = version === '3.0'
|
|
53
|
+
? `<?xml version="1.0" encoding="UTF-8"?>
|
|
54
|
+
<Version xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" VersionId="${version}"/>`
|
|
55
|
+
: `<?xml version="1.0" encoding="UTF-8"?>
|
|
43
56
|
<Version xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" VersionId="${version}">
|
|
44
57
|
<DetailedVersion>${version}</DetailedVersion>
|
|
45
58
|
</Version>`;
|
|
@@ -48,15 +61,24 @@ function writeVersionFile(zip, version) {
|
|
|
48
61
|
/**
|
|
49
62
|
* Write project.bcfp file
|
|
50
63
|
* Uses buildingSMART standard format
|
|
64
|
+
*
|
|
65
|
+
* The root element is renamed between versions: 2.1's project.xsd declares
|
|
66
|
+
* root element `<ProjectExtension>` (and requires a following
|
|
67
|
+
* `<ExtensionSchema>` sibling of `<Project>`, which we deliberately do not
|
|
68
|
+
* emit -- out of scope here); 3.0's project.xsd instead declares root
|
|
69
|
+
* element `<ProjectInfo>` containing just a required `<Project>`, and has no
|
|
70
|
+
* `ProjectExtension`/`ExtensionSchema` concept at all. The inner
|
|
71
|
+
* `<Project ProjectId="...">`/`<Name>` shape is unchanged between versions.
|
|
51
72
|
*/
|
|
52
|
-
function writeProjectFile(zip, project) {
|
|
73
|
+
function writeProjectFile(zip, project, version) {
|
|
53
74
|
const projectId = project.projectId || generateUuid();
|
|
54
75
|
const nameElement = project.name ? `\n <Name>${escapeXml(project.name)}</Name>` : '';
|
|
76
|
+
const rootElement = version === '3.0' ? 'ProjectInfo' : 'ProjectExtension';
|
|
55
77
|
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
56
|
-
|
|
78
|
+
<${rootElement} xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
57
79
|
<Project ProjectId="${projectId}">${nameElement}
|
|
58
80
|
</Project>
|
|
59
|
-
|
|
81
|
+
</${rootElement}>`;
|
|
60
82
|
zip.file('project.bcfp', content);
|
|
61
83
|
}
|
|
62
84
|
/** FNV-1a 32-bit hash, hex-encoded; disambiguates sanitized folder names. */
|
|
@@ -135,7 +157,7 @@ async function writeTopicFolder(zip, topic, version, usedFolderNames) {
|
|
|
135
157
|
writeMarkupFile(folder, topic, version, viewpointBaseNames);
|
|
136
158
|
// Write viewpoints
|
|
137
159
|
for (let i = 0; i < topic.viewpoints.length; i++) {
|
|
138
|
-
await writeViewpointFiles(folder, topic.viewpoints[i], viewpointBaseNames[i]);
|
|
160
|
+
await writeViewpointFiles(folder, topic.viewpoints[i], viewpointBaseNames[i], version);
|
|
139
161
|
}
|
|
140
162
|
}
|
|
141
163
|
/**
|
|
@@ -210,8 +232,23 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
210
232
|
content += `\n <Index>${topic.index}</Index>`;
|
|
211
233
|
}
|
|
212
234
|
if (topic.labels && topic.labels.length > 0) {
|
|
213
|
-
|
|
214
|
-
|
|
235
|
+
// BCF 3.0's markup.xsd wraps labels in ONE `<Labels>` container holding
|
|
236
|
+
// repeated `<Label>` children (Labels -> Label*); repeating `<Labels>text
|
|
237
|
+
// </Labels>` once per label -- the 2.1 shape, where `<Labels>` itself is
|
|
238
|
+
// the repeated per-entry element with no `<Label>` child -- fails 3.0
|
|
239
|
+
// validation ("Character content other than whitespace is not allowed
|
|
240
|
+
// because the content type is 'element-only'"). 2.1 is left as-is.
|
|
241
|
+
if (version === '3.0') {
|
|
242
|
+
content += `\n <Labels>`;
|
|
243
|
+
for (const label of topic.labels) {
|
|
244
|
+
content += `\n <Label>${escapeXml(label)}</Label>`;
|
|
245
|
+
}
|
|
246
|
+
content += `\n </Labels>`;
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
for (const label of topic.labels) {
|
|
250
|
+
content += `\n <Labels>${escapeXml(label)}</Labels>`;
|
|
251
|
+
}
|
|
215
252
|
}
|
|
216
253
|
}
|
|
217
254
|
content += `\n <CreationDate>${escapeXml(topic.creationDate)}</CreationDate>`;
|
|
@@ -253,14 +290,50 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
253
290
|
content += `\n </DocumentReferences>`;
|
|
254
291
|
}
|
|
255
292
|
if (topic.relatedTopics && topic.relatedTopics.length > 0) {
|
|
293
|
+
// Same containment split as DocumentReferences/Comments/Viewpoints
|
|
294
|
+
// elsewhere in this function: 3.0's markup.xsd groups entries under one
|
|
295
|
+
// <RelatedTopics> element, while 2.1 repeats <RelatedTopic> directly
|
|
296
|
+
// under <Topic>.
|
|
297
|
+
if (version === '3.0')
|
|
298
|
+
content += `\n <RelatedTopics>`;
|
|
256
299
|
for (const relatedGuid of topic.relatedTopics) {
|
|
257
300
|
content += `\n <RelatedTopic Guid="${escapeXml(relatedGuid)}"/>`;
|
|
258
301
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
302
|
+
if (version === '3.0')
|
|
303
|
+
content += `\n </RelatedTopics>`;
|
|
304
|
+
}
|
|
305
|
+
// Render each <Comment Guid="..."> wrapper. Shared by both versions --
|
|
306
|
+
// the wrapper's own shape doesn't change, only where it's placed (see
|
|
307
|
+
// below).
|
|
308
|
+
const commentXml = (indent) => topic.comments
|
|
309
|
+
.map((comment) => {
|
|
310
|
+
let c = `\n${indent}<Comment Guid="${escapeXml(comment.guid)}">`;
|
|
311
|
+
c += `\n${indent} <Date>${escapeXml(comment.date)}</Date>`;
|
|
312
|
+
c += `\n${indent} <Author>${escapeXml(comment.author)}</Author>`;
|
|
313
|
+
c += `\n${indent} <Comment>${escapeXml(comment.comment)}</Comment>`;
|
|
314
|
+
if (comment.viewpointGuid) {
|
|
315
|
+
c += `\n${indent} <Viewpoint Guid="${escapeXml(comment.viewpointGuid)}"/>`;
|
|
316
|
+
}
|
|
317
|
+
if (comment.modifiedDate) {
|
|
318
|
+
c += `\n${indent} <ModifiedDate>${escapeXml(comment.modifiedDate)}</ModifiedDate>`;
|
|
319
|
+
}
|
|
320
|
+
if (comment.modifiedAuthor) {
|
|
321
|
+
c += `\n${indent} <ModifiedAuthor>${escapeXml(comment.modifiedAuthor)}</ModifiedAuthor>`;
|
|
322
|
+
}
|
|
323
|
+
c += `\n${indent}</Comment>`;
|
|
324
|
+
return c;
|
|
325
|
+
})
|
|
326
|
+
.join('');
|
|
327
|
+
// Render each viewpoint reference. BCF 2.1 names the per-entry element
|
|
328
|
+
// <Viewpoints Guid="..."> (the wrapper IS the entry, repeated); BCF 3.0
|
|
329
|
+
// renamed the entry to singular <ViewPoint Guid="..."> (capital P) nested
|
|
330
|
+
// inside one shared <Viewpoints> wrapper (buildingSMART/BCF-XML
|
|
331
|
+
// markup.xsd, release_3_0 Topic.Viewpoints/ViewPoint -- confirmed against
|
|
332
|
+
// Test Cases/v3.0/Visualization/Perspective camera/unzipped/.../markup.bcf,
|
|
333
|
+
// which reads `<Viewpoints><ViewPoint Guid="f99eb1ed-...">`).
|
|
334
|
+
const viewpointEntryTag = version === '3.0' ? 'ViewPoint' : 'Viewpoints';
|
|
335
|
+
const viewpointXml = (indent) => topic.viewpoints
|
|
336
|
+
.map((viewpoint, i) => {
|
|
264
337
|
// Use standard buildingSMART naming convention: Viewpoint_<guid>.bcfv,
|
|
265
338
|
// but the file name component is the sanitized base name (zip-slip
|
|
266
339
|
// guard) -- the SAME one writeViewpointFiles uses for the actual entry,
|
|
@@ -269,29 +342,37 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
269
342
|
const baseName = viewpointBaseNames[i];
|
|
270
343
|
const filename = `Viewpoint_${baseName}.bcfv`;
|
|
271
344
|
const snapshotName = `Snapshot_${baseName}.${snapshotExt(viewpoint)}`;
|
|
272
|
-
|
|
273
|
-
|
|
345
|
+
let v = `\n${indent}<${viewpointEntryTag} Guid="${escapeXml(viewpoint.guid)}">`;
|
|
346
|
+
v += `\n${indent} <Viewpoint>${filename}</Viewpoint>`;
|
|
274
347
|
if (viewpoint.snapshot || viewpoint.snapshotData) {
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
content += `\n </Viewpoints>`;
|
|
278
|
-
}
|
|
279
|
-
// Write comments
|
|
280
|
-
for (const comment of topic.comments) {
|
|
281
|
-
content += `\n <Comment Guid="${escapeXml(comment.guid)}">`;
|
|
282
|
-
content += `\n <Date>${escapeXml(comment.date)}</Date>`;
|
|
283
|
-
content += `\n <Author>${escapeXml(comment.author)}</Author>`;
|
|
284
|
-
content += `\n <Comment>${escapeXml(comment.comment)}</Comment>`;
|
|
285
|
-
if (comment.viewpointGuid) {
|
|
286
|
-
content += `\n <Viewpoint Guid="${escapeXml(comment.viewpointGuid)}"/>`;
|
|
348
|
+
v += `\n${indent} <Snapshot>${snapshotName}</Snapshot>`;
|
|
287
349
|
}
|
|
288
|
-
|
|
289
|
-
|
|
350
|
+
v += `\n${indent}</${viewpointEntryTag}>`;
|
|
351
|
+
return v;
|
|
352
|
+
})
|
|
353
|
+
.join('');
|
|
354
|
+
if (version === '3.0') {
|
|
355
|
+
// BCF 3.0's markup.xsd moves Comments and Viewpoints INSIDE <Topic>
|
|
356
|
+
// (wrapped in their own plural containers), after RelatedTopics -- unlike
|
|
357
|
+
// 2.1, where they are top-level <Markup> siblings following </Topic>.
|
|
358
|
+
// Writing them as 2.1-shaped top-level siblings at version 3.0 produces
|
|
359
|
+
// markup a strict 3.0 consumer rejects outright (Comments/Viewpoints
|
|
360
|
+
// would not even be children of Topic, let alone in schema order).
|
|
361
|
+
if (topic.comments.length > 0) {
|
|
362
|
+
content += `\n <Comments>${commentXml(' ')}\n </Comments>`;
|
|
290
363
|
}
|
|
291
|
-
if (
|
|
292
|
-
content += `\n <
|
|
364
|
+
if (topic.viewpoints.length > 0) {
|
|
365
|
+
content += `\n <Viewpoints>${viewpointXml(' ')}\n </Viewpoints>`;
|
|
293
366
|
}
|
|
294
|
-
content += `\n </
|
|
367
|
+
content += `\n </Topic>`;
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
content += `\n </Topic>`;
|
|
371
|
+
// 2.1's Markup sequence is Header, Topic, Comment*, Viewpoints*
|
|
372
|
+
// (buildingSMART/BCF-XML release_2_1 markup.xsd) -- Comment precedes
|
|
373
|
+
// Viewpoints, the reverse of the order written here previously.
|
|
374
|
+
content += commentXml(' ');
|
|
375
|
+
content += viewpointXml(' ');
|
|
295
376
|
}
|
|
296
377
|
content += `\n</Markup>`;
|
|
297
378
|
folder.file('markup.bcf', content);
|
|
@@ -299,7 +380,7 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
|
|
|
299
380
|
/**
|
|
300
381
|
* Write viewpoint files (bcfv and snapshot)
|
|
301
382
|
*/
|
|
302
|
-
async function writeViewpointFiles(folder, viewpoint, baseName) {
|
|
383
|
+
async function writeViewpointFiles(folder, viewpoint, baseName, version) {
|
|
303
384
|
// Use standard buildingSMART naming convention: Viewpoint_<guid>.bcfv, but
|
|
304
385
|
// the file name component is the sanitized base name (zip-slip guard) --
|
|
305
386
|
// the SAME one the caller wrote into the markup <Viewpoint> reference, so
|
|
@@ -311,15 +392,15 @@ async function writeViewpointFiles(folder, viewpoint, baseName) {
|
|
|
311
392
|
<VisualizationInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="${escapeXml(viewpoint.guid)}">`;
|
|
312
393
|
// Write components
|
|
313
394
|
if (viewpoint.components) {
|
|
314
|
-
content += writeComponents(viewpoint.components);
|
|
395
|
+
content += writeComponents(viewpoint.components, version);
|
|
315
396
|
}
|
|
316
397
|
// Write perspective camera
|
|
317
398
|
if (viewpoint.perspectiveCamera) {
|
|
318
|
-
content += writePerspectiveCamera(viewpoint.perspectiveCamera);
|
|
399
|
+
content += writePerspectiveCamera(viewpoint.perspectiveCamera, version, viewpoint.guid);
|
|
319
400
|
}
|
|
320
401
|
// Write orthogonal camera
|
|
321
402
|
if (viewpoint.orthogonalCamera) {
|
|
322
|
-
content += writeOrthogonalCamera(viewpoint.orthogonalCamera);
|
|
403
|
+
content += writeOrthogonalCamera(viewpoint.orthogonalCamera, version, viewpoint.guid);
|
|
323
404
|
}
|
|
324
405
|
// Write lines
|
|
325
406
|
if (viewpoint.lines && viewpoint.lines.length > 0) {
|
|
@@ -338,12 +419,26 @@ async function writeViewpointFiles(folder, viewpoint, baseName) {
|
|
|
338
419
|
content += `\n </ClippingPlanes>`;
|
|
339
420
|
}
|
|
340
421
|
// Write bitmaps
|
|
422
|
+
//
|
|
423
|
+
// The wrapper and inner shape both change between versions (v2_1/visinfo.xsd
|
|
424
|
+
// vs v3_0/visinfo.xsd):
|
|
425
|
+
// - 2.1: `<Bitmap>` entries sit DIRECTLY under `<VisualizationInfo>`, no
|
|
426
|
+
// wrapping element (there is no `<Bitmaps>` in the 2.1 schema at all).
|
|
427
|
+
// - 3.0: entries are wrapped in a `<Bitmaps>` container.
|
|
428
|
+
// See {@link writeBitmap} for the further divergence inside each entry.
|
|
341
429
|
if (viewpoint.bitmaps && viewpoint.bitmaps.length > 0) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
430
|
+
if (version === '3.0') {
|
|
431
|
+
content += `\n <Bitmaps>`;
|
|
432
|
+
for (const bitmap of viewpoint.bitmaps) {
|
|
433
|
+
content += writeBitmap(bitmap, version);
|
|
434
|
+
}
|
|
435
|
+
content += `\n </Bitmaps>`;
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
for (const bitmap of viewpoint.bitmaps) {
|
|
439
|
+
content += writeBitmap(bitmap, version);
|
|
440
|
+
}
|
|
345
441
|
}
|
|
346
|
-
content += `\n </Bitmaps>`;
|
|
347
442
|
}
|
|
348
443
|
content += `\n</VisualizationInfo>`;
|
|
349
444
|
folder.file(filename, content);
|
|
@@ -379,22 +474,12 @@ async function writeViewpointFiles(folder, viewpoint, baseName) {
|
|
|
379
474
|
* 3. Visibility (REQUIRED)
|
|
380
475
|
* 4. Coloring (optional)
|
|
381
476
|
*/
|
|
382
|
-
function writeComponents(components) {
|
|
477
|
+
function writeComponents(components, version) {
|
|
383
478
|
let content = `\n <Components>`;
|
|
384
|
-
// 1. Write ViewSetupHints (
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
content +=
|
|
388
|
-
if (hints.spacesVisible !== undefined) {
|
|
389
|
-
content += ` SpacesVisible="${hints.spacesVisible}"`;
|
|
390
|
-
}
|
|
391
|
-
if (hints.spaceBoundariesVisible !== undefined) {
|
|
392
|
-
content += ` SpaceBoundariesVisible="${hints.spaceBoundariesVisible}"`;
|
|
393
|
-
}
|
|
394
|
-
if (hints.openingsVisible !== undefined) {
|
|
395
|
-
content += ` OpeningsVisible="${hints.openingsVisible}"`;
|
|
396
|
-
}
|
|
397
|
-
content += `/>`;
|
|
479
|
+
// 1. Write ViewSetupHints (2.1 only -- see writeVisibility for the 3.0
|
|
480
|
+
// placement, which is inside <Visibility> instead of here).
|
|
481
|
+
if (version === '2.1' && components.visibility?.viewSetupHints) {
|
|
482
|
+
content += writeViewSetupHintsElement(components.visibility.viewSetupHints);
|
|
398
483
|
}
|
|
399
484
|
// 2. Write selection (before visibility per schema)
|
|
400
485
|
if (components.selection && components.selection.length > 0) {
|
|
@@ -405,31 +490,56 @@ function writeComponents(components) {
|
|
|
405
490
|
content += `\n </Selection>`;
|
|
406
491
|
}
|
|
407
492
|
// 3. Write visibility (REQUIRED by schema)
|
|
408
|
-
content += writeVisibility(components.visibility);
|
|
493
|
+
content += writeVisibility(components.visibility, version);
|
|
409
494
|
// 4. Write coloring
|
|
410
495
|
if (components.coloring && components.coloring.length > 0) {
|
|
411
496
|
content += `\n <Coloring>`;
|
|
412
497
|
for (const coloring of components.coloring) {
|
|
413
|
-
content += writeColoringEntry(coloring);
|
|
498
|
+
content += writeColoringEntry(coloring, version);
|
|
414
499
|
}
|
|
415
500
|
content += `\n </Coloring>`;
|
|
416
501
|
}
|
|
417
502
|
content += `\n </Components>`;
|
|
418
503
|
return content;
|
|
419
504
|
}
|
|
505
|
+
/** Write the `<ViewSetupHints>` element itself (attributes only, no children). */
|
|
506
|
+
function writeViewSetupHintsElement(hints, indent = ' ') {
|
|
507
|
+
let content = `\n${indent}<ViewSetupHints`;
|
|
508
|
+
if (hints.spacesVisible !== undefined) {
|
|
509
|
+
content += ` SpacesVisible="${hints.spacesVisible}"`;
|
|
510
|
+
}
|
|
511
|
+
if (hints.spaceBoundariesVisible !== undefined) {
|
|
512
|
+
content += ` SpaceBoundariesVisible="${hints.spaceBoundariesVisible}"`;
|
|
513
|
+
}
|
|
514
|
+
if (hints.openingsVisible !== undefined) {
|
|
515
|
+
content += ` OpeningsVisible="${hints.openingsVisible}"`;
|
|
516
|
+
}
|
|
517
|
+
content += `/>`;
|
|
518
|
+
return content;
|
|
519
|
+
}
|
|
420
520
|
/**
|
|
421
521
|
* Write visibility XML
|
|
422
522
|
*
|
|
423
|
-
* Per BCF 2.1 schema:
|
|
523
|
+
* Per BCF 2.1 schema (v2_1/visinfo.xsd):
|
|
424
524
|
* - Visibility is REQUIRED inside Components
|
|
425
525
|
* - DefaultVisibility attribute defaults to false
|
|
426
526
|
* - Exceptions contains Component elements (entities to show/hide opposite of default)
|
|
427
|
-
* - ViewSetupHints is NOT inside Visibility
|
|
527
|
+
* - ViewSetupHints is NOT inside Visibility -- it is a sibling of Visibility
|
|
528
|
+
* at Components level (written by {@link writeComponents} instead)
|
|
529
|
+
*
|
|
530
|
+
* BCF 3.0 moved it: v3_0/visinfo.xsd's `ComponentVisibility` complexType is a
|
|
531
|
+
* sequence of `ViewSetupHints` (optional) then `Exceptions` (optional), and
|
|
532
|
+
* 3.0's `Components` complexType only allows exactly Selection/Visibility/
|
|
533
|
+
* Coloring as children -- so for 3.0, ViewSetupHints must be the FIRST child
|
|
534
|
+
* of `<Visibility>`, not a Components-level sibling.
|
|
428
535
|
*/
|
|
429
|
-
function writeVisibility(visibility) {
|
|
536
|
+
function writeVisibility(visibility, version) {
|
|
430
537
|
// Default visibility to true (show all) if not specified
|
|
431
538
|
const defaultVis = visibility?.defaultVisibility ?? true;
|
|
432
539
|
let content = `\n <Visibility DefaultVisibility="${defaultVis}">`;
|
|
540
|
+
if (version === '3.0' && visibility?.viewSetupHints) {
|
|
541
|
+
content += writeViewSetupHintsElement(visibility.viewSetupHints, ' ');
|
|
542
|
+
}
|
|
433
543
|
if (visibility?.exceptions && visibility.exceptions.length > 0) {
|
|
434
544
|
content += `\n <Exceptions>`;
|
|
435
545
|
for (const component of visibility.exceptions) {
|
|
@@ -471,19 +581,49 @@ function writeComponent(component, indent = ' ') {
|
|
|
471
581
|
}
|
|
472
582
|
/**
|
|
473
583
|
* Write coloring entry XML
|
|
584
|
+
*
|
|
585
|
+
* Containment differs between versions (v2_1/visinfo.xsd's `ComponentColoring`
|
|
586
|
+
* vs v3_0/visinfo.xsd's `ComponentColoring`): 2.1 nests `<Component>` entries
|
|
587
|
+
* directly under `<Color>`; 3.0 adds one more wrapping level, an inner
|
|
588
|
+
* `<Components>` element (distinct from the outer per-viewpoint `<Components>`
|
|
589
|
+
* written by {@link writeComponents}) holding the `<Component>` entries.
|
|
474
590
|
*/
|
|
475
|
-
function writeColoringEntry(coloring) {
|
|
591
|
+
function writeColoringEntry(coloring, version) {
|
|
476
592
|
let content = `\n <Color Color="${escapeXml(coloring.color)}">`;
|
|
593
|
+
if (version === '3.0')
|
|
594
|
+
content += `\n <Components>`;
|
|
477
595
|
for (const component of coloring.components) {
|
|
478
|
-
content += writeComponent(component, ' ');
|
|
596
|
+
content += writeComponent(component, version === '3.0' ? ' ' : ' ');
|
|
479
597
|
}
|
|
598
|
+
if (version === '3.0')
|
|
599
|
+
content += `\n </Components>`;
|
|
480
600
|
content += `\n </Color>`;
|
|
481
601
|
return content;
|
|
482
602
|
}
|
|
603
|
+
/**
|
|
604
|
+
* Require a positive AspectRatio for a BCF 3.0 camera and return the element
|
|
605
|
+
* to append.
|
|
606
|
+
*
|
|
607
|
+
* v3_0/visinfo.xsd adds `<AspectRatio>` (type `PositiveDouble`, i.e.
|
|
608
|
+
* `xs:double` with `minExclusive value="0"`) as a REQUIRED, no-minOccurs
|
|
609
|
+
* child of both `OrthogonalCamera` and `PerspectiveCamera`. 2.1 has no such
|
|
610
|
+
* element. We refuse to invent a value (there is no safe default aspect
|
|
611
|
+
* ratio) because that would assert a value the caller never chose; instead
|
|
612
|
+
* we fail the write so the caller supplies one -- same policy as the
|
|
613
|
+
* `Topic/@TopicType`/`Topic/@TopicStatus` checks in {@link writeMarkupFile}.
|
|
614
|
+
*/
|
|
615
|
+
function requireAspectRatioElement(aspectRatio, viewpointGuid) {
|
|
616
|
+
if (aspectRatio === undefined || !(aspectRatio > 0)) {
|
|
617
|
+
throw new Error(`BCF 3.0 requires a positive Camera/AspectRatio (viewpoint "${viewpointGuid}" has none). ` +
|
|
618
|
+
`Set the camera's aspectRatio before writing a 3.0 file.`);
|
|
619
|
+
}
|
|
620
|
+
return `\n <AspectRatio>${aspectRatio}</AspectRatio>`;
|
|
621
|
+
}
|
|
483
622
|
/**
|
|
484
623
|
* Write perspective camera XML
|
|
485
624
|
*/
|
|
486
|
-
function writePerspectiveCamera(camera) {
|
|
625
|
+
function writePerspectiveCamera(camera, version, viewpointGuid) {
|
|
626
|
+
const aspectRatioElement = version === '3.0' ? requireAspectRatioElement(camera.aspectRatio, viewpointGuid) : '';
|
|
487
627
|
return `\n <PerspectiveCamera>
|
|
488
628
|
<CameraViewPoint>
|
|
489
629
|
<X>${camera.cameraViewPoint.x}</X>
|
|
@@ -500,13 +640,14 @@ function writePerspectiveCamera(camera) {
|
|
|
500
640
|
<Y>${camera.cameraUpVector.y}</Y>
|
|
501
641
|
<Z>${camera.cameraUpVector.z}</Z>
|
|
502
642
|
</CameraUpVector>
|
|
503
|
-
<FieldOfView>${camera.fieldOfView}</FieldOfView
|
|
643
|
+
<FieldOfView>${camera.fieldOfView}</FieldOfView>${aspectRatioElement}
|
|
504
644
|
</PerspectiveCamera>`;
|
|
505
645
|
}
|
|
506
646
|
/**
|
|
507
647
|
* Write orthogonal camera XML
|
|
508
648
|
*/
|
|
509
|
-
function writeOrthogonalCamera(camera) {
|
|
649
|
+
function writeOrthogonalCamera(camera, version, viewpointGuid) {
|
|
650
|
+
const aspectRatioElement = version === '3.0' ? requireAspectRatioElement(camera.aspectRatio, viewpointGuid) : '';
|
|
510
651
|
return `\n <OrthogonalCamera>
|
|
511
652
|
<CameraViewPoint>
|
|
512
653
|
<X>${camera.cameraViewPoint.x}</X>
|
|
@@ -523,7 +664,7 @@ function writeOrthogonalCamera(camera) {
|
|
|
523
664
|
<Y>${camera.cameraUpVector.y}</Y>
|
|
524
665
|
<Z>${camera.cameraUpVector.z}</Z>
|
|
525
666
|
</CameraUpVector>
|
|
526
|
-
<ViewToWorldScale>${camera.viewToWorldScale}</ViewToWorldScale
|
|
667
|
+
<ViewToWorldScale>${camera.viewToWorldScale}</ViewToWorldScale>${aspectRatioElement}
|
|
527
668
|
</OrthogonalCamera>`;
|
|
528
669
|
}
|
|
529
670
|
/**
|
|
@@ -562,10 +703,24 @@ function writeClippingPlane(plane) {
|
|
|
562
703
|
}
|
|
563
704
|
/**
|
|
564
705
|
* Write bitmap XML
|
|
706
|
+
*
|
|
707
|
+
* Two more shape differences beyond the `<Bitmaps>` wrapper (see the call
|
|
708
|
+
* site in {@link writeViewpointFiles}), both against v2_1/visinfo.xsd vs
|
|
709
|
+
* v3_0/visinfo.xsd:
|
|
710
|
+
* - The format element's name changes: 2.1 nests it as `<Bitmap>` (same tag
|
|
711
|
+
* name as the outer per-entry element -- `<Bitmap><Bitmap>PNG</Bitmap>...`);
|
|
712
|
+
* 3.0 renamed it `<Format>`.
|
|
713
|
+
* - The `BitmapFormat` enum's case changes: 2.1 is uppercase (`PNG`, `JPG`);
|
|
714
|
+
* 3.0's simpleType only accepts lowercase (`png`, `jpg`) -- validation
|
|
715
|
+
* fails with "The value 'PNG' is not an element of the set {'png','jpg'}"
|
|
716
|
+
* otherwise. `BCFBitmap.format` stays typed `'PNG' | 'JPG'`; we only
|
|
717
|
+
* lowercase it on the wire for 3.0.
|
|
565
718
|
*/
|
|
566
|
-
function writeBitmap(bitmap) {
|
|
719
|
+
function writeBitmap(bitmap, version) {
|
|
720
|
+
const formatTag = version === '3.0' ? 'Format' : 'Bitmap';
|
|
721
|
+
const formatValue = version === '3.0' ? bitmap.format.toLowerCase() : bitmap.format;
|
|
567
722
|
return `\n <Bitmap>
|
|
568
|
-
|
|
723
|
+
<${formatTag}>${formatValue}</${formatTag}>
|
|
569
724
|
<Reference>${escapeXml(bitmap.reference)}</Reference>
|
|
570
725
|
<Location>
|
|
571
726
|
<X>${bitmap.location.x}</X>
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading text back out of BCF's XML.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `reader.ts` so the component parsers can share it without a
|
|
5
|
+
* cycle. `writer.ts::escapeXml` is the inverse of `unescapeXml` here, and the
|
|
6
|
+
* two are pinned against each other in `writer.test.ts`.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Extract a simple element value from XML
|
|
10
|
+
*
|
|
11
|
+
* Values are unescaped so writer.ts's escapeXml() round-trips correctly
|
|
12
|
+
* (see escapeXml/unescapeXml regression: & < > " ' in titles/descriptions/
|
|
13
|
+
* comments must come back exactly as written, not as literal entities).
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractElement(content: string, elementName: string): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Decode XML character references: the five named entities `escapeXml` writes,
|
|
18
|
+
* and the numeric forms `&` / `&` that other authoring tools emit.
|
|
19
|
+
*
|
|
20
|
+
* ONE pass, not a chain of `replace` calls. A chain has to decode `&` last,
|
|
21
|
+
* or a literal `<` written as `&lt;` is corrupted into `<` by the
|
|
22
|
+
* earlier pass -- and adding numeric references to a chain reintroduces that
|
|
23
|
+
* hazard from a second direction, since `&lt;` decodes to `<` and would
|
|
24
|
+
* then be re-scanned. A single pass never looks at its own output, so the
|
|
25
|
+
* ordering question does not arise at all.
|
|
26
|
+
*
|
|
27
|
+
* An unrecognised or out-of-range reference is returned untouched rather than
|
|
28
|
+
* dropped: this reads other tools' archives, and losing a character is worse
|
|
29
|
+
* than leaving one encoded.
|
|
30
|
+
*/
|
|
31
|
+
export declare function unescapeXml(str: string): string;
|
|
32
|
+
//# sourceMappingURL=xml-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-text.d.ts","sourceRoot":"","sources":["../src/xml-text.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGvF;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW/C"}
|
package/dist/xml-text.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Reading text back out of BCF's XML.
|
|
6
|
+
*
|
|
7
|
+
* Split out of `reader.ts` so the component parsers can share it without a
|
|
8
|
+
* cycle. `writer.ts::escapeXml` is the inverse of `unescapeXml` here, and the
|
|
9
|
+
* two are pinned against each other in `writer.test.ts`.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Extract a simple element value from XML
|
|
13
|
+
*
|
|
14
|
+
* Values are unescaped so writer.ts's escapeXml() round-trips correctly
|
|
15
|
+
* (see escapeXml/unescapeXml regression: & < > " ' in titles/descriptions/
|
|
16
|
+
* comments must come back exactly as written, not as literal entities).
|
|
17
|
+
*/
|
|
18
|
+
export function extractElement(content, elementName) {
|
|
19
|
+
const match = content.match(new RegExp(`<${elementName}>([^<]*)<\\/${elementName}>`));
|
|
20
|
+
return match?.[1] !== undefined ? unescapeXml(match[1]) : undefined;
|
|
21
|
+
}
|
|
22
|
+
/** The five entities `writer.ts::escapeXml` produces. */
|
|
23
|
+
const NAMED_ENTITIES = {
|
|
24
|
+
lt: '<',
|
|
25
|
+
gt: '>',
|
|
26
|
+
quot: '"',
|
|
27
|
+
apos: "'",
|
|
28
|
+
amp: '&',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Decode XML character references: the five named entities `escapeXml` writes,
|
|
32
|
+
* and the numeric forms `&` / `&` that other authoring tools emit.
|
|
33
|
+
*
|
|
34
|
+
* ONE pass, not a chain of `replace` calls. A chain has to decode `&` last,
|
|
35
|
+
* or a literal `<` written as `&lt;` is corrupted into `<` by the
|
|
36
|
+
* earlier pass -- and adding numeric references to a chain reintroduces that
|
|
37
|
+
* hazard from a second direction, since `&lt;` decodes to `<` and would
|
|
38
|
+
* then be re-scanned. A single pass never looks at its own output, so the
|
|
39
|
+
* ordering question does not arise at all.
|
|
40
|
+
*
|
|
41
|
+
* An unrecognised or out-of-range reference is returned untouched rather than
|
|
42
|
+
* dropped: this reads other tools' archives, and losing a character is worse
|
|
43
|
+
* than leaving one encoded.
|
|
44
|
+
*/
|
|
45
|
+
export function unescapeXml(str) {
|
|
46
|
+
return str.replace(/&(?:#(\d+)|#[xX]([0-9a-fA-F]+)|(lt|gt|quot|apos|amp));/g, (whole, dec, hex, name) => {
|
|
47
|
+
if (name !== undefined)
|
|
48
|
+
return NAMED_ENTITIES[name];
|
|
49
|
+
const code = Number.parseInt(dec ?? hex ?? '', dec !== undefined ? 10 : 16);
|
|
50
|
+
return Number.isFinite(code) && code >= 0 && code <= 0x10ffff
|
|
51
|
+
? String.fromCodePoint(code)
|
|
52
|
+
: whole;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=xml-text.js.map
|