Skip to content

Commit

Permalink
#1744 - Add vanish and specVanish
Browse files Browse the repository at this point in the history
  • Loading branch information
dolanmiu committed Oct 28, 2022
1 parent 29f4216 commit 4cfb0ad
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .nycrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"check-coverage": true,
"statements": 99.72,
"branches": 97.97,
"branches": 98.08,
"functions": 99.83,
"lines": 99.72,
"include": [
Expand Down
8 changes: 8 additions & 0 deletions demo/2-declaritive-styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,14 @@ const doc = new Document({
new TextRun({
text: "and back to normal.",
}),
new TextRun({
text: "This text will be invisible!",
vanish: true,
}),
new TextRun({
text: "This text will be VERY invisible! Word processors cannot override this!",
specVanish: true,
}),
],
}),
new Paragraph({
Expand Down
22 changes: 22 additions & 0 deletions docs/usage/text.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,28 @@ const text = new TextRun({
});
```

### Vanish and SpecVanish

You may want to hide your text in your document.

`Vanish` should affect the normal display of text, but an application may have settings to force hidden text to be displayed.

```ts
const text = new TextRun({
text: "This text will be hidden",
vanish: true,
});
```

`SpecVanish` was typically used to ensure that a paragraph style can be applied to a part of a paragraph, and still appear as in the Table of Contents (which in previous word processors would ignore the use of the style if it were being used as a character style).

```ts
const text = new TextRun({
text: "This text will be hidden forever.",
specVanish: true,
});
```

## Break

Sometimes you would want to put text underneath another line of text but inside the same paragraph.
Expand Down
13 changes: 13 additions & 0 deletions src/file/paragraph/run/properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ export interface IRunStylePropertiesOptions {
readonly imprint?: boolean;
readonly revision?: IRunPropertiesChangeOptions;
readonly border?: IBorderOptions;
readonly vanish?: boolean;
readonly specVanish?: boolean;
}

export interface IRunPropertiesOptions extends IRunStylePropertiesOptions {
Expand Down Expand Up @@ -215,6 +217,17 @@ export class RunProperties extends IgnoreIfEmptyXmlComponent {
if (options.border) {
this.push(new BorderElement("w:bdr", options.border));
}

if (options.vanish) {
// https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_vanish_topic_ID0E6W3O.html
// http://www.datypic.com/sc/ooxml/e-w_vanish-1.html
this.push(new OnOffElement("w:vanish", options.vanish));
}

if (options.specVanish) {
// https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_specVanish_topic_ID0EIE1O.html
this.push(new OnOffElement("w:specVanish", options.vanish));
}
}

public push(item: XmlComponent): void {
Expand Down
38 changes: 38 additions & 0 deletions src/file/paragraph/run/run.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -519,4 +519,42 @@ describe("Run", () => {
});
});
});

describe("#vanish and #specVanish", () => {
it("should correctly set vanish", () => {
const run = new Run({
vanish: true,
});
const tree = new Formatter().format(run);
expect(tree).to.deep.equal({
"w:r": [
{
"w:rPr": [
{
"w:vanish": {},
},
],
},
],
});
});

it("should correctly set specVanish", () => {
const run = new Run({
specVanish: true,
});
const tree = new Formatter().format(run);
expect(tree).to.deep.equal({
"w:r": [
{
"w:rPr": [
{
"w:specVanish": {},
},
],
},
],
});
});
});
});
1 change: 1 addition & 0 deletions src/file/paragraph/run/tab.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_tab_topic_ID0EM6AO.html
import { XmlComponent } from "@file/xml-components";

// <xsd:group name="EG_RunInnerContent">
Expand Down

0 comments on commit 4cfb0ad

Please sign in to comment.