@json-to-office/jto 3.1.0 → 3.2.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/cli.js +1 -1
- package/dist/client/assets/{HomePage-D_mB1xuk.js → HomePage-tunH4yrJ.js} +4 -4
- package/dist/client/assets/{HomePage-D_mB1xuk.js.map → HomePage-tunH4yrJ.js.map} +1 -1
- package/dist/client/assets/{JsonEditorPage-FZF7bI9j.js → JsonEditorPage-BoWB1SW8.js} +3 -3
- package/dist/client/assets/{JsonEditorPage-FZF7bI9j.js.map → JsonEditorPage-BoWB1SW8.js.map} +1 -1
- package/dist/client/assets/{MonacoPluginProvider-B7HWmtL0.js → MonacoPluginProvider-CZLdOK0o.js} +5 -5
- package/dist/client/assets/{MonacoPluginProvider-B7HWmtL0.js.map → MonacoPluginProvider-CZLdOK0o.js.map} +1 -1
- package/dist/client/assets/{_virtual_jto-plugin-type-libs-C1-TFWU1.js → _virtual_jto-plugin-type-libs-BP6g-o7Z.js} +35 -7
- package/dist/client/assets/{_virtual_jto-plugin-type-libs-C1-TFWU1.js.map → _virtual_jto-plugin-type-libs-BP6g-o7Z.js.map} +1 -1
- package/dist/client/assets/_virtual_jto-sandbox-runtime-U0ykVFSo.js +2 -0
- package/dist/client/assets/_virtual_jto-sandbox-runtime-U0ykVFSo.js.map +1 -0
- package/dist/client/assets/{editor-CB0JVQZR.js → editor-C6m04j66.js} +2 -2
- package/dist/client/assets/{editor-CB0JVQZR.js.map → editor-C6m04j66.js.map} +1 -1
- package/dist/client/assets/{editor-monaco-json-BmaikXAE.js → editor-monaco-json-DsYufbUM.js} +2 -2
- package/dist/client/assets/{editor-monaco-json-BmaikXAE.js.map → editor-monaco-json-DsYufbUM.js.map} +1 -1
- package/dist/client/assets/{index-B5xm7tQq.js → index-B7DLwiJH.js} +3 -3
- package/dist/client/assets/{index-B5xm7tQq.js.map → index-B7DLwiJH.js.map} +1 -1
- package/dist/client/assets/{index-D4AFQUeZ.js → index-BDoOeKmB.js} +2 -2
- package/dist/client/assets/{index-D4AFQUeZ.js.map → index-BDoOeKmB.js.map} +1 -1
- package/dist/client/assets/{preview-D5DLJy12.js → preview-CutpTQQJ.js} +2 -2
- package/dist/client/assets/{preview-D5DLJy12.js.map → preview-CutpTQQJ.js.map} +1 -1
- package/dist/client/assets/{useQualityAnalysis-9ud5tV-u.js → useQualityAnalysis-k0GXJxAw.js} +2 -2
- package/dist/client/assets/{useQualityAnalysis-9ud5tV-u.js.map → useQualityAnalysis-k0GXJxAw.js.map} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/client/templates/client-report-blocks.docx.json +329 -0
- package/dist/client/templates/media/client-report-blocks/delivery-model.png +0 -0
- package/package.json +4 -4
- package/dist/client/assets/_virtual_jto-sandbox-runtime-B-I74ajs.js +0 -2
- package/dist/client/assets/_virtual_jto-sandbox-runtime-B-I74ajs.js.map +0 -1
|
@@ -1046,6 +1046,263 @@
|
|
|
1046
1046
|
}
|
|
1047
1047
|
}
|
|
1048
1048
|
]
|
|
1049
|
+
},
|
|
1050
|
+
"figure-caption": {
|
|
1051
|
+
"description": "The numbered caption under a figure: **Figure N.** and the text, N being a Word SEQ field over the figure sequence. chart-figure and figure invoke it, so charts and images number together.",
|
|
1052
|
+
"slots": {
|
|
1053
|
+
"text": {
|
|
1054
|
+
"type": "string",
|
|
1055
|
+
"required": true,
|
|
1056
|
+
"oneLine": true,
|
|
1057
|
+
"maxWords": 20
|
|
1058
|
+
}
|
|
1059
|
+
},
|
|
1060
|
+
"body": [
|
|
1061
|
+
{
|
|
1062
|
+
"name": "paragraph",
|
|
1063
|
+
"props": {
|
|
1064
|
+
"text": {
|
|
1065
|
+
"$join": [
|
|
1066
|
+
"**Figure {SEQ:figure}.** ",
|
|
1067
|
+
{
|
|
1068
|
+
"$slot": "/text"
|
|
1069
|
+
}
|
|
1070
|
+
]
|
|
1071
|
+
},
|
|
1072
|
+
"font": {
|
|
1073
|
+
"family": {
|
|
1074
|
+
"$theme": "/fonts/body/family",
|
|
1075
|
+
"default": "Calibri"
|
|
1076
|
+
},
|
|
1077
|
+
"size": {
|
|
1078
|
+
"$theme": "/styles/label/size",
|
|
1079
|
+
"default": 9
|
|
1080
|
+
},
|
|
1081
|
+
"bold": false,
|
|
1082
|
+
"color": {
|
|
1083
|
+
"$theme": "/styles/label/color",
|
|
1084
|
+
"default": "textPrimary"
|
|
1085
|
+
}
|
|
1086
|
+
},
|
|
1087
|
+
"spacing": {
|
|
1088
|
+
"before": 4,
|
|
1089
|
+
"after": 2
|
|
1090
|
+
},
|
|
1091
|
+
"keepNext": true
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
]
|
|
1095
|
+
},
|
|
1096
|
+
"chart-figure": {
|
|
1097
|
+
"description": "A numbered, sourced chart: the chart itself (highcharts through the export server, or a native chart on the office-open renderer), a caption that says what it shows, an optional takeaway beneath, and the source line the report cites. The source is required; the figure number is a Word SEQ field.",
|
|
1098
|
+
"slots": {
|
|
1099
|
+
"chart": {
|
|
1100
|
+
"type": "component",
|
|
1101
|
+
"required": true,
|
|
1102
|
+
"description": "A highcharts or chart component. Put the unit in the value-axis title: Revenue (€m)."
|
|
1103
|
+
},
|
|
1104
|
+
"caption": {
|
|
1105
|
+
"type": "string",
|
|
1106
|
+
"required": true,
|
|
1107
|
+
"oneLine": true,
|
|
1108
|
+
"maxWords": 20,
|
|
1109
|
+
"description": "What the chart shows, as a statement: Revenue by quarter, 2026."
|
|
1110
|
+
},
|
|
1111
|
+
"takeaway": {
|
|
1112
|
+
"type": "string",
|
|
1113
|
+
"maxWords": 30,
|
|
1114
|
+
"role": "takeaway",
|
|
1115
|
+
"description": "The one sentence the reader should leave with."
|
|
1116
|
+
},
|
|
1117
|
+
"source": {
|
|
1118
|
+
"type": "string",
|
|
1119
|
+
"required": true,
|
|
1120
|
+
"maxWords": 20,
|
|
1121
|
+
"role": "source"
|
|
1122
|
+
}
|
|
1123
|
+
},
|
|
1124
|
+
"body": [
|
|
1125
|
+
{
|
|
1126
|
+
"$slot": "/chart"
|
|
1127
|
+
},
|
|
1128
|
+
{
|
|
1129
|
+
"name": "block",
|
|
1130
|
+
"props": {
|
|
1131
|
+
"ref": "figure-caption",
|
|
1132
|
+
"slots": {
|
|
1133
|
+
"text": {
|
|
1134
|
+
"$slot": "/caption"
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
},
|
|
1139
|
+
{
|
|
1140
|
+
"$if": "/takeaway",
|
|
1141
|
+
"then": {
|
|
1142
|
+
"name": "paragraph",
|
|
1143
|
+
"props": {
|
|
1144
|
+
"text": {
|
|
1145
|
+
"$slot": "/takeaway"
|
|
1146
|
+
},
|
|
1147
|
+
"font": {
|
|
1148
|
+
"family": {
|
|
1149
|
+
"$theme": "/fonts/body/family",
|
|
1150
|
+
"default": "Calibri"
|
|
1151
|
+
},
|
|
1152
|
+
"color": {
|
|
1153
|
+
"$theme": "/styles/quote/color",
|
|
1154
|
+
"default": "textSecondary"
|
|
1155
|
+
}
|
|
1156
|
+
},
|
|
1157
|
+
"spacing": {
|
|
1158
|
+
"before": 0,
|
|
1159
|
+
"after": 2
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
"$if": "/source",
|
|
1166
|
+
"then": {
|
|
1167
|
+
"name": "block",
|
|
1168
|
+
"props": {
|
|
1169
|
+
"ref": "source-line",
|
|
1170
|
+
"slots": {
|
|
1171
|
+
"text": {
|
|
1172
|
+
"$slot": "/source"
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
]
|
|
1179
|
+
},
|
|
1180
|
+
"figure": {
|
|
1181
|
+
"description": "A numbered image with a caption and an optional source line. The image keeps its own width and alt text; the figure number is a Word SEQ field shared with chart-figure.",
|
|
1182
|
+
"slots": {
|
|
1183
|
+
"image": {
|
|
1184
|
+
"type": "component",
|
|
1185
|
+
"required": true,
|
|
1186
|
+
"description": "An image or visual component. Give it alt text and a width."
|
|
1187
|
+
},
|
|
1188
|
+
"caption": {
|
|
1189
|
+
"type": "string",
|
|
1190
|
+
"required": true,
|
|
1191
|
+
"oneLine": true,
|
|
1192
|
+
"maxWords": 20
|
|
1193
|
+
},
|
|
1194
|
+
"source": {
|
|
1195
|
+
"type": "string",
|
|
1196
|
+
"maxWords": 20,
|
|
1197
|
+
"role": "source"
|
|
1198
|
+
}
|
|
1199
|
+
},
|
|
1200
|
+
"body": [
|
|
1201
|
+
{
|
|
1202
|
+
"$slot": "/image"
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
"name": "block",
|
|
1206
|
+
"props": {
|
|
1207
|
+
"ref": "figure-caption",
|
|
1208
|
+
"slots": {
|
|
1209
|
+
"text": {
|
|
1210
|
+
"$slot": "/caption"
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
{
|
|
1216
|
+
"$if": "/source",
|
|
1217
|
+
"then": {
|
|
1218
|
+
"name": "block",
|
|
1219
|
+
"props": {
|
|
1220
|
+
"ref": "source-line",
|
|
1221
|
+
"slots": {
|
|
1222
|
+
"text": {
|
|
1223
|
+
"$slot": "/source"
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
]
|
|
1230
|
+
},
|
|
1231
|
+
"footnotes": {
|
|
1232
|
+
"description": "Notes and sources: every distinct source-role slot value the document's block invocations carry, in order, as a numbered list under a label — the engine's /sources context. Emits nothing when no invocation cites a source.",
|
|
1233
|
+
"slots": {
|
|
1234
|
+
"title": {
|
|
1235
|
+
"type": "string",
|
|
1236
|
+
"oneLine": true,
|
|
1237
|
+
"maxWords": 6,
|
|
1238
|
+
"default": "Notes and sources"
|
|
1239
|
+
}
|
|
1240
|
+
},
|
|
1241
|
+
"body": [
|
|
1242
|
+
{
|
|
1243
|
+
"$if": {
|
|
1244
|
+
"$context": "/sources"
|
|
1245
|
+
},
|
|
1246
|
+
"then": [
|
|
1247
|
+
{
|
|
1248
|
+
"name": "divider",
|
|
1249
|
+
"props": {
|
|
1250
|
+
"thickness": 0.5,
|
|
1251
|
+
"color": {
|
|
1252
|
+
"$theme": "/palette/rule",
|
|
1253
|
+
"default": "borderPrimary"
|
|
1254
|
+
},
|
|
1255
|
+
"spacing": {
|
|
1256
|
+
"before": 12,
|
|
1257
|
+
"after": 4
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
},
|
|
1261
|
+
{
|
|
1262
|
+
"name": "paragraph",
|
|
1263
|
+
"props": {
|
|
1264
|
+
"text": {
|
|
1265
|
+
"$slot": "/title"
|
|
1266
|
+
},
|
|
1267
|
+
"font": {
|
|
1268
|
+
"family": {
|
|
1269
|
+
"$theme": "/fonts/body/family",
|
|
1270
|
+
"default": "Calibri"
|
|
1271
|
+
},
|
|
1272
|
+
"size": {
|
|
1273
|
+
"$theme": "/styles/label/size",
|
|
1274
|
+
"default": 9
|
|
1275
|
+
},
|
|
1276
|
+
"bold": true,
|
|
1277
|
+
"color": {
|
|
1278
|
+
"$theme": "/styles/label/color",
|
|
1279
|
+
"default": "textPrimary"
|
|
1280
|
+
}
|
|
1281
|
+
},
|
|
1282
|
+
"spacing": {
|
|
1283
|
+
"before": 0,
|
|
1284
|
+
"after": 4
|
|
1285
|
+
},
|
|
1286
|
+
"keepNext": true
|
|
1287
|
+
}
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
"name": "list",
|
|
1291
|
+
"props": {
|
|
1292
|
+
"format": "decimal",
|
|
1293
|
+
"items": {
|
|
1294
|
+
"$each": {
|
|
1295
|
+
"$context": "/sources"
|
|
1296
|
+
},
|
|
1297
|
+
"template": {
|
|
1298
|
+
"$item": ""
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
]
|
|
1304
|
+
}
|
|
1305
|
+
]
|
|
1049
1306
|
}
|
|
1050
1307
|
}
|
|
1051
1308
|
},
|
|
@@ -1217,6 +1474,78 @@
|
|
|
1217
1474
|
"props": {
|
|
1218
1475
|
"text": "The inherited running header uses this section’s tracker and page width. Page numbers are native Word fields."
|
|
1219
1476
|
}
|
|
1477
|
+
},
|
|
1478
|
+
{
|
|
1479
|
+
"name": "block",
|
|
1480
|
+
"props": {
|
|
1481
|
+
"ref": "chart-figure",
|
|
1482
|
+
"slots": {
|
|
1483
|
+
"chart": {
|
|
1484
|
+
"name": "highcharts",
|
|
1485
|
+
"props": {
|
|
1486
|
+
"width": "100%",
|
|
1487
|
+
"options": {
|
|
1488
|
+
"chart": {
|
|
1489
|
+
"type": "column",
|
|
1490
|
+
"width": 900,
|
|
1491
|
+
"height": 460
|
|
1492
|
+
},
|
|
1493
|
+
"title": {
|
|
1494
|
+
"text": null
|
|
1495
|
+
},
|
|
1496
|
+
"xAxis": {
|
|
1497
|
+
"categories": ["Q1", "Q2", "Q3", "Q4"]
|
|
1498
|
+
},
|
|
1499
|
+
"yAxis": {
|
|
1500
|
+
"min": 0,
|
|
1501
|
+
"title": {
|
|
1502
|
+
"text": "Revenue (€m)"
|
|
1503
|
+
}
|
|
1504
|
+
},
|
|
1505
|
+
"legend": {
|
|
1506
|
+
"enabled": false
|
|
1507
|
+
},
|
|
1508
|
+
"series": [
|
|
1509
|
+
{
|
|
1510
|
+
"name": "Revenue",
|
|
1511
|
+
"data": [1.9, 2.4, 2.7, 3.1]
|
|
1512
|
+
}
|
|
1513
|
+
],
|
|
1514
|
+
"credits": {
|
|
1515
|
+
"enabled": false
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
},
|
|
1520
|
+
"caption": "Revenue by quarter, 2026",
|
|
1521
|
+
"takeaway": "Each quarter outgrew the last as delivery stabilised; the fourth quarter alone matched the first half of 2025.",
|
|
1522
|
+
"source": "Source: quarterly operating review, 2026."
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
},
|
|
1526
|
+
{
|
|
1527
|
+
"name": "block",
|
|
1528
|
+
"props": {
|
|
1529
|
+
"ref": "figure",
|
|
1530
|
+
"slots": {
|
|
1531
|
+
"image": {
|
|
1532
|
+
"name": "image",
|
|
1533
|
+
"props": {
|
|
1534
|
+
"path": "media/client-report-blocks/delivery-model.png",
|
|
1535
|
+
"width": "100%",
|
|
1536
|
+
"alt": "Four delivery stages in sequence: intake, weekly ownership, delivery and renewal; ownership and delivery are shaded as the stages that changed"
|
|
1537
|
+
}
|
|
1538
|
+
},
|
|
1539
|
+
"caption": "The delivery model, with the two stages that changed this year",
|
|
1540
|
+
"source": "Source: operating handbook, 2026 edition."
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"name": "block",
|
|
1546
|
+
"props": {
|
|
1547
|
+
"ref": "footnotes"
|
|
1548
|
+
}
|
|
1220
1549
|
}
|
|
1221
1550
|
]
|
|
1222
1551
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@json-to-office/jto",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "JSON to Office CLI - Unified document and presentation generation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -84,11 +84,11 @@
|
|
|
84
84
|
"vite": "6.0.5",
|
|
85
85
|
"zod": "^4.0.0",
|
|
86
86
|
"zustand": "5.0.2",
|
|
87
|
-
"@json-to-office/core-docx": "^3.
|
|
88
|
-
"@json-to-office/core-pptx": "^3.
|
|
87
|
+
"@json-to-office/core-docx": "^3.2.0",
|
|
88
|
+
"@json-to-office/core-pptx": "^3.2.0",
|
|
89
89
|
"@json-to-office/jto-cli": "^3.0.0",
|
|
90
90
|
"@json-to-office/quality": "^3.0.0",
|
|
91
|
-
"@json-to-office/shared": "^3.
|
|
91
|
+
"@json-to-office/shared": "^3.2.0",
|
|
92
92
|
"@json-to-office/shared-docx": "^3.0.0",
|
|
93
93
|
"@json-to-office/shared-pptx": "^3.0.0"
|
|
94
94
|
},
|