@wiris/mathtype-viewer 1.4.1 → 1.5.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/WIRISplugins.js +1 -1
- package/dist/WIRISplugins.js.LICENSE.txt +1 -1
- package/dist/app.d.ts +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/mathml.d.ts.map +1 -1
- package/dist/properties.d.ts +4 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/services.d.ts.map +1 -1
- package/index.html +1 -7
- package/package.json +2 -2
- package/src/app.ts +9 -2
- package/src/mathml.ts +10 -2
- package/src/properties.ts +28 -17
- package/src/retro.ts +2 -1
- package/src/services.ts +10 -4
- package/tsconfig.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! @license DOMPurify
|
|
1
|
+
/*! @license DOMPurify 3.1.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.0/LICENSE */
|
package/dist/app.d.ts
CHANGED
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE;YACN,UAAU,EAAE,UAAU,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC;YAClB,OAAO,EAAE,MAAM,CAAA;SAChB,CAAC;KACH;CACF"}
|
package/dist/mathml.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathml.d.ts","sourceRoot":"","sources":["../src/mathml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"mathml.d.ts","sourceRoot":"","sources":["../src/mathml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA0D1C,wBAAsB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC3F"}
|
package/dist/properties.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare type Config = {
|
|
|
6
6
|
backendConfig?: {
|
|
7
7
|
wirispluginperformance?: Wirispluginperformance;
|
|
8
8
|
wiriseditormathmlattribute?: string;
|
|
9
|
+
wiriscustomheaders?: object;
|
|
9
10
|
};
|
|
10
11
|
dpi?: number;
|
|
11
12
|
element?: string;
|
|
@@ -14,10 +15,12 @@ export declare type Config = {
|
|
|
14
15
|
zoom?: number;
|
|
15
16
|
};
|
|
16
17
|
export declare class Properties {
|
|
18
|
+
private static instance;
|
|
17
19
|
render: () => Promise<void>;
|
|
18
20
|
config: Config;
|
|
19
21
|
private new;
|
|
20
|
-
static
|
|
22
|
+
static getInstance(): Properties;
|
|
23
|
+
private initialize;
|
|
21
24
|
private checkServices;
|
|
22
25
|
get editorServicesRoot(): string;
|
|
23
26
|
set editorServicesRoot(editorServicesRoot: string);
|
package/dist/properties.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAIA,aAAK,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,aAAK,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAC;AAK/C,oBAAY,MAAM,GAAG;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE;QACd,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;QAChD,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAuBF,qBAAa,UAAU;IAErB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAElD,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAkB;IAG7C,MAAM,EAAE,MAAM,CAAiB;IAM/B,OAAO,CAAC,GAAG;IAEX,MAAM,CAAC,WAAW,IAAI,UAAU;YAWlB,UAAU;IAqDxB,OAAO,CAAC,aAAa;IAcrB,IAAI,kBAAkB,IAAI,MAAM,CAG/B;IAED,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAGhD;IAED,IAAI,uBAAuB,IAAI,MAAM,CAGpC;IAED,IAAI,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,EAG1D;IAWD,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAGpB;IAQD,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAGxB;IAQD,IAAI,GAAG,IAAI,MAAM,CAGhB;IAED,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAGlB;IAQD,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAGpB;IAQD,IAAI,OAAO,IAAI,MAAM,CAGpB;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAG1B;IAQD,IAAI,sBAAsB,IAAI,sBAAsB,CAGnD;IAED,IAAI,sBAAsB,CAAC,sBAAsB,EAAE,sBAAsB,EAGxE;IAQD,IAAI,0BAA0B,IAAI,MAAM,CAGvC;IAED,IAAI,0BAA0B,CAAC,0BAA0B,EAAE,MAAM,EAGhE;CACF"}
|
package/dist/services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAGA,aAAK,UAAU;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAKD,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,KAAA;CAIpB;AAUD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAanF;AAUD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CA8B7I;AAUD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CAahH;AAUD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAyBvG;AAUD,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAUzG;AASD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAQ/F;AAQD,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,CAO7G"}
|
package/index.html
CHANGED
|
@@ -14,13 +14,7 @@
|
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
16
|
<p>
|
|
17
|
-
<math>
|
|
18
|
-
<mn>2</mn>
|
|
19
|
-
<mo>+</mo>
|
|
20
|
-
<mn>2</mn>
|
|
21
|
-
<mo>=</mo>
|
|
22
|
-
<mn>4</mn>
|
|
23
|
-
</math>
|
|
17
|
+
<math xmlns="http://www.w3.org/1998/Math/MathML"><mn>2</mn><mo>+</mo><mn>2</mn><mo>=</mo><mn>4</mn></math>
|
|
24
18
|
</p>
|
|
25
19
|
<p>
|
|
26
20
|
$$4 - 2 = 2$$
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wiris/mathtype-viewer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "app.js",
|
|
6
6
|
"scripts": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"author": "Integrations",
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@wiris/mathtype-html-integration-devkit": "1.
|
|
19
|
+
"@wiris/mathtype-html-integration-devkit": "1.17.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"babel-loader": "^9.1.2",
|
package/src/app.ts
CHANGED
|
@@ -2,12 +2,14 @@ import { Properties } from './properties';
|
|
|
2
2
|
import { renderLatex } from './latex';
|
|
3
3
|
import { renderMathML } from './mathml';
|
|
4
4
|
import { bypassEncapsulation } from './retro';
|
|
5
|
+
import packageInformation from '../../../node_modules/@wiris/mathtype-viewer/package.json'
|
|
5
6
|
|
|
6
7
|
declare global {
|
|
7
8
|
interface Window {
|
|
8
9
|
viewer: {
|
|
9
10
|
properties: Properties,
|
|
10
|
-
isLoaded: boolean
|
|
11
|
+
isLoaded: boolean,
|
|
12
|
+
version: string
|
|
11
13
|
};
|
|
12
14
|
}
|
|
13
15
|
}
|
|
@@ -23,14 +25,19 @@ main(window);
|
|
|
23
25
|
*/
|
|
24
26
|
async function main(w: Window): Promise<void> {
|
|
25
27
|
|
|
26
|
-
const properties: Properties = await Properties.
|
|
28
|
+
const properties: Properties = await Properties.getInstance();
|
|
27
29
|
|
|
28
30
|
// Expose the globals to the browser
|
|
29
31
|
if (!w.viewer) {
|
|
30
32
|
w.viewer = {
|
|
31
33
|
properties,
|
|
32
34
|
isLoaded: false,
|
|
35
|
+
version: packageInformation.version
|
|
33
36
|
};
|
|
37
|
+
} else {
|
|
38
|
+
w.viewer.properties = properties;
|
|
39
|
+
w.viewer.isLoaded = false;
|
|
40
|
+
w.viewer.version = packageInformation.version;
|
|
34
41
|
}
|
|
35
42
|
|
|
36
43
|
const document = w.document;
|
package/src/mathml.ts
CHANGED
|
@@ -11,6 +11,7 @@ interface FormulaData {
|
|
|
11
11
|
baseline: string,
|
|
12
12
|
height: string,
|
|
13
13
|
width: string,
|
|
14
|
+
alt?: string,
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -118,8 +119,15 @@ async function setImageProperties(properties: Properties, data: FormulaData, mml
|
|
|
118
119
|
|
|
119
120
|
// Set the alt text whenever there's a translation for the characters and MathML on the mml.
|
|
120
121
|
if (!corruptMathML.some(corruptMathML => mml.includes(corruptMathML))) {
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
try {
|
|
123
|
+
if (!data.alt) {
|
|
124
|
+
const { text } = await mathml2accessible(mml, properties.lang, properties.editorServicesRoot, properties.editorServicesExtension);
|
|
125
|
+
data.alt = text;
|
|
126
|
+
}
|
|
127
|
+
img.alt = data.alt;
|
|
128
|
+
} catch {
|
|
129
|
+
img.alt = 'Alternative text not available';
|
|
130
|
+
}
|
|
123
131
|
}
|
|
124
132
|
|
|
125
133
|
return img;
|
package/src/properties.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { configurationJson, StatusError } from './services';
|
|
2
|
+
import Util from '@wiris/mathtype-html-integration-devkit/src/util';
|
|
2
3
|
|
|
3
4
|
// Helper types for Config below
|
|
4
5
|
type Viewer = 'none' | 'image' | 'mathml' | 'latex';
|
|
@@ -13,6 +14,7 @@ export type Config = {
|
|
|
13
14
|
backendConfig?: {
|
|
14
15
|
wirispluginperformance?: Wirispluginperformance,
|
|
15
16
|
wiriseditormathmlattribute?: string,
|
|
17
|
+
wiriscustomheaders?: object,
|
|
16
18
|
},
|
|
17
19
|
dpi?: number,
|
|
18
20
|
element?: string,
|
|
@@ -29,7 +31,8 @@ const defaultValues: Config = {
|
|
|
29
31
|
editorServicesExtension: '',
|
|
30
32
|
backendConfig: {
|
|
31
33
|
wirispluginperformance: 'true',
|
|
32
|
-
wiriseditormathmlattribute: 'data-mathml'
|
|
34
|
+
wiriseditormathmlattribute: 'data-mathml',
|
|
35
|
+
wiriscustomheaders: {},
|
|
33
36
|
},
|
|
34
37
|
dpi: 96,
|
|
35
38
|
element: 'body',
|
|
@@ -43,6 +46,8 @@ const defaultValues: Config = {
|
|
|
43
46
|
*/
|
|
44
47
|
export class Properties {
|
|
45
48
|
|
|
49
|
+
private static instance: Properties | null = null;
|
|
50
|
+
|
|
46
51
|
render: () => Promise<void> = async () => {};
|
|
47
52
|
|
|
48
53
|
// Get URL properties (retrocompatibility).
|
|
@@ -54,13 +59,18 @@ export class Properties {
|
|
|
54
59
|
*/
|
|
55
60
|
private new() {}
|
|
56
61
|
|
|
62
|
+
static getInstance(): Properties {
|
|
63
|
+
if (!Properties.instance) {
|
|
64
|
+
Properties.instance = new Properties();
|
|
65
|
+
Properties.instance.initialize();
|
|
66
|
+
}
|
|
67
|
+
return Properties.instance;
|
|
68
|
+
}
|
|
69
|
+
|
|
57
70
|
/**
|
|
58
71
|
* Creates and sets up a new instance of class Properties
|
|
59
72
|
*/
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const instance = new Properties();
|
|
63
|
-
|
|
73
|
+
private async initialize(): Promise<void> {
|
|
64
74
|
// Get URL parameters from <script>
|
|
65
75
|
const pluginName = 'WIRISplugins.js';
|
|
66
76
|
const script: HTMLScriptElement = document.querySelector(`script[src*="${pluginName}"]`);
|
|
@@ -71,31 +81,34 @@ export class Properties {
|
|
|
71
81
|
const urlParams = new URLSearchParams(params);
|
|
72
82
|
|
|
73
83
|
if (urlParams.get('dpi') !== null && urlParams.get('dpi') !== undefined) {
|
|
74
|
-
instance.config.dpi = +urlParams.get('dpi');
|
|
84
|
+
Properties.instance.config.dpi = +urlParams.get('dpi');
|
|
75
85
|
}
|
|
76
86
|
if (urlParams.get('element') !== null && urlParams.get('element') !== undefined) {
|
|
77
|
-
instance.config.element = urlParams.get('element');
|
|
87
|
+
Properties.instance.config.element = urlParams.get('element');
|
|
78
88
|
}
|
|
79
89
|
if (urlParams.get('lang') !== null && urlParams.get('lang') !== undefined) {
|
|
80
|
-
instance.config.lang = urlParams.get('lang');
|
|
90
|
+
Properties.instance.config.lang = urlParams.get('lang');
|
|
81
91
|
}
|
|
82
92
|
if (urlParams.get('viewer') !== null && urlParams.get('viewer') !== undefined) {
|
|
83
|
-
instance.config.viewer = (urlParams.get('viewer') as Viewer);
|
|
93
|
+
Properties.instance.config.viewer = (urlParams.get('viewer') as Viewer);
|
|
84
94
|
}
|
|
85
95
|
if (urlParams.get('zoom') !== null && urlParams.get('zoom') !== undefined) {
|
|
86
|
-
instance.config.zoom = +urlParams.get('zoom');
|
|
96
|
+
Properties.instance.config.zoom = +urlParams.get('zoom');
|
|
87
97
|
}
|
|
88
98
|
}
|
|
89
99
|
|
|
90
|
-
instance.checkServices();
|
|
100
|
+
Properties.instance.checkServices();
|
|
91
101
|
|
|
92
102
|
// Get backend parameters calling the configurationjson service
|
|
93
103
|
try {
|
|
94
|
-
instance.config.backendConfig = await configurationJson(
|
|
95
|
-
['wirispluginperformance', 'wiriseditormathmlattribute'],
|
|
96
|
-
instance.editorServicesRoot,
|
|
97
|
-
instance.editorServicesExtension
|
|
104
|
+
Properties.instance.config.backendConfig = await configurationJson(
|
|
105
|
+
['wirispluginperformance', 'wiriseditormathmlattribute', 'wiriscustomheaders'],
|
|
106
|
+
Properties.instance.editorServicesRoot,
|
|
107
|
+
Properties.instance.editorServicesExtension
|
|
98
108
|
);
|
|
109
|
+
|
|
110
|
+
// We'll always get a string from the wiriscustomheaders backend parameter. It needs to be converted to an object.
|
|
111
|
+
Properties.instance.config.backendConfig.wiriscustomheaders = Util.convertStringToObject(Properties.instance.config.backendConfig.wiriscustomheaders);
|
|
99
112
|
} catch(e) {
|
|
100
113
|
if (e instanceof StatusError) {
|
|
101
114
|
// Do nothing; leave default values.
|
|
@@ -104,8 +117,6 @@ export class Properties {
|
|
|
104
117
|
throw e;
|
|
105
118
|
}
|
|
106
119
|
}
|
|
107
|
-
|
|
108
|
-
return instance;
|
|
109
120
|
}
|
|
110
121
|
|
|
111
122
|
/**
|
package/src/retro.ts
CHANGED
|
@@ -87,7 +87,8 @@ class JsPluginViewer {
|
|
|
87
87
|
* @deprecated Please consider using {@link renderMathML}.
|
|
88
88
|
*/
|
|
89
89
|
async parseElement(element: HTMLElement, asynchronously?: boolean, callbackFunc?: () => void): Promise<void> {
|
|
90
|
-
|
|
90
|
+
await renderLatex(JsPluginViewer.properties, element);
|
|
91
|
+
return await renderMathML(JsPluginViewer.properties, element);
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
/**
|
package/src/services.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Parser from '@wiris/mathtype-html-integration-devkit/src/parser';
|
|
2
|
+
import { Properties } from './properties';
|
|
2
3
|
|
|
3
4
|
enum MethodType {
|
|
4
5
|
Post = "POST",
|
|
@@ -49,11 +50,16 @@ export async function processJsonResponse(response: Promise<Response>): Promise<
|
|
|
49
50
|
export async function callService(query: object, serviceName: string, method: MethodType, serverURL: string, extension: string) : Promise<any> {
|
|
50
51
|
try {
|
|
51
52
|
const url = new URL(serviceName + extension, serverURL);
|
|
53
|
+
|
|
54
|
+
const properties = Properties.getInstance();
|
|
55
|
+
const headers = {
|
|
56
|
+
'Content-type': 'application/x-www-form-urlencoded; charset=utf-8',
|
|
57
|
+
...properties.config.backendConfig.wiriscustomheaders
|
|
58
|
+
}
|
|
59
|
+
|
|
52
60
|
const init: RequestInit = {
|
|
53
61
|
method,
|
|
54
|
-
headers
|
|
55
|
-
'Content-type': 'application/x-www-form-urlencoded; charset=utf-8',
|
|
56
|
-
},
|
|
62
|
+
headers
|
|
57
63
|
};
|
|
58
64
|
|
|
59
65
|
if (method === MethodType.Get) {
|
|
@@ -113,7 +119,7 @@ export async function showImage(mml: string, lang: string, url: string, extensio
|
|
|
113
119
|
}
|
|
114
120
|
|
|
115
121
|
// Try to obtain the image via GET
|
|
116
|
-
const getParams = Parser.createShowImageSrcData(params);
|
|
122
|
+
const getParams = Parser.createShowImageSrcData(params, params.lang);
|
|
117
123
|
const getResponse = callService(getParams, 'showimage', MethodType.Get, url, extension);
|
|
118
124
|
try {
|
|
119
125
|
return await processJsonResponse(getResponse);
|
package/tsconfig.json
CHANGED
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
/* Experimental Options */
|
|
70
70
|
"experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
|
71
71
|
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
|
72
|
+
"resolveJsonModule": true
|
|
72
73
|
},
|
|
73
74
|
"exclude": [
|
|
74
75
|
"node_modules", // would be the default
|