@examind/block-sdk 0.2.0 → 0.2.2
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/index.js +28 -13
- package/dist/index.mjs +28 -13
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -163,6 +163,19 @@ var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
|
163
163
|
}
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
+
// src/typeGuards/isSerializedExcelWorksheetLinkNode.ts
|
|
167
|
+
function isSerializedExcelWorksheetLinkNode(node) {
|
|
168
|
+
return node?.type === "excel-worksheet-link";
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// src/exportToHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
172
|
+
var ExcelWorksheetLinkNodeHandler = class extends NodeHandler {
|
|
173
|
+
processNode(node) {
|
|
174
|
+
if (!isSerializedExcelWorksheetLinkNode(node)) return null;
|
|
175
|
+
return `<x-worksheet-link x-data-name="${node.sheetName}"></x-worksheet-link>`;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
|
|
166
179
|
// src/typeGuards/isSerializedFillInTheBlankQuestionNode.ts
|
|
167
180
|
function isSerializedFillInTheBlankQuestionNode(node) {
|
|
168
181
|
return node?.type === "fill-in-the-blank-question" && "id" in node && typeof node.id === "string" && "pointsPerSpace" in node && typeof node.pointsPerSpace === "number" && "content" in node;
|
|
@@ -1004,7 +1017,7 @@ var VariableNodeHandler = class extends NodeHandler {
|
|
|
1004
1017
|
|
|
1005
1018
|
// src/exportToHtml/traverse.ts
|
|
1006
1019
|
var builder = new NodeHandlerChainBuilder();
|
|
1007
|
-
var nodeHandlerChain = builder.addHandler(CustomQuestionNodeHandler).addHandler(EssayQuestionNodeHandler).addHandler(ExcelQuestionNodeHandler).addHandler(FillInTheBlankQuestionNodeHandler).addHandler(FillInTheBlankSpaceNodeHandler).addHandler(FinancialStatementQuestionNodeHandler).addHandler(HeadingNodeHandler).addHandler(HorizontalRuleNodeHandler).addHandler(ImageNodeHandler).addHandler(JournalEntryQuestionNodeHandler).addHandler(LineBreakNodeHandler).addHandler(LinkNodeHandler).addHandler(ListNodeHandler).addHandler(ListItemNodeHandler).addHandler(MatchingQuestionNodeHandler).addHandler(MultipleOptionQuestionNodeHandler).addHandler(ParagraphNodeHandler).addHandler(ShortAnswerQuestionNodeHandler).addHandler(SimulationQuestionNodeHandler).addHandler(TableCellNodeHandler).addHandler(TableNodeHandler).addHandler(TableRowNodeHandler).addHandler(TextNodeHandler).addHandler(VariableNodeHandler).build();
|
|
1020
|
+
var nodeHandlerChain = builder.addHandler(CustomQuestionNodeHandler).addHandler(EssayQuestionNodeHandler).addHandler(ExcelQuestionNodeHandler).addHandler(ExcelWorksheetLinkNodeHandler).addHandler(FillInTheBlankQuestionNodeHandler).addHandler(FillInTheBlankSpaceNodeHandler).addHandler(FinancialStatementQuestionNodeHandler).addHandler(HeadingNodeHandler).addHandler(HorizontalRuleNodeHandler).addHandler(ImageNodeHandler).addHandler(JournalEntryQuestionNodeHandler).addHandler(LineBreakNodeHandler).addHandler(LinkNodeHandler).addHandler(ListNodeHandler).addHandler(ListItemNodeHandler).addHandler(MatchingQuestionNodeHandler).addHandler(MultipleOptionQuestionNodeHandler).addHandler(ParagraphNodeHandler).addHandler(ShortAnswerQuestionNodeHandler).addHandler(SimulationQuestionNodeHandler).addHandler(TableCellNodeHandler).addHandler(TableNodeHandler).addHandler(TableRowNodeHandler).addHandler(TextNodeHandler).addHandler(VariableNodeHandler).build();
|
|
1008
1021
|
var traverse = (node, metadata) => {
|
|
1009
1022
|
return nodeHandlerChain.handle(node, metadata);
|
|
1010
1023
|
};
|
|
@@ -1324,31 +1337,33 @@ var TAG_X = "x-excel";
|
|
|
1324
1337
|
function parseData(xDataString) {
|
|
1325
1338
|
const xData = JSON.parse(xDataString);
|
|
1326
1339
|
const parts = [];
|
|
1327
|
-
for (const xPart of xData.parts) {
|
|
1340
|
+
for (const xPart of xData.parts ?? []) {
|
|
1328
1341
|
const tasks = [];
|
|
1329
|
-
for (const xTask of xPart.tasks) {
|
|
1342
|
+
for (const xTask of xPart.tasks ?? []) {
|
|
1330
1343
|
const steps = [];
|
|
1331
|
-
for (const xStep of xTask.steps) {
|
|
1344
|
+
for (const xStep of xTask.steps ?? []) {
|
|
1332
1345
|
steps.push({
|
|
1333
1346
|
id: xStep.id,
|
|
1334
1347
|
description: createNestedEditorFromHtml(
|
|
1335
|
-
(0, import_node_html_parser5.parse)(xStep.description)
|
|
1348
|
+
(0, import_node_html_parser5.parse)(xStep.description ?? "")
|
|
1336
1349
|
)
|
|
1337
1350
|
});
|
|
1338
1351
|
}
|
|
1339
1352
|
tasks.push({
|
|
1340
1353
|
id: xTask.id,
|
|
1341
1354
|
instructions: createNestedEditorFromHtml(
|
|
1342
|
-
(0, import_node_html_parser5.parse)(xTask.instructions)
|
|
1355
|
+
(0, import_node_html_parser5.parse)(xTask.instructions ?? "")
|
|
1343
1356
|
),
|
|
1344
1357
|
steps
|
|
1345
1358
|
});
|
|
1346
1359
|
}
|
|
1347
1360
|
parts.push({
|
|
1348
1361
|
id: xPart.id,
|
|
1349
|
-
objective: createNestedEditorFromHtml(
|
|
1362
|
+
objective: createNestedEditorFromHtml(
|
|
1363
|
+
(0, import_node_html_parser5.parse)(xPart.objective ?? "")
|
|
1364
|
+
),
|
|
1350
1365
|
instructions: createNestedEditorFromHtml(
|
|
1351
|
-
(0, import_node_html_parser5.parse)(xPart.instructions)
|
|
1366
|
+
(0, import_node_html_parser5.parse)(xPart.instructions ?? "")
|
|
1352
1367
|
),
|
|
1353
1368
|
onLoadActions: xPart.onLoadActions,
|
|
1354
1369
|
onNextActions: xPart.onNextActions,
|
|
@@ -1388,19 +1403,19 @@ var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
|
1388
1403
|
// src/importFromHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
1389
1404
|
var import_node_html_parser6 = require("node-html-parser");
|
|
1390
1405
|
var TAG = "x-worksheet-link";
|
|
1391
|
-
var
|
|
1406
|
+
var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
|
|
1392
1407
|
processNode(node) {
|
|
1393
1408
|
if (!(node instanceof import_node_html_parser6.HTMLElement) || node.tagName !== TAG.toUpperCase()) {
|
|
1394
1409
|
return null;
|
|
1395
1410
|
}
|
|
1396
|
-
const
|
|
1411
|
+
const sheetName = node.getAttribute("x-data-name") || "";
|
|
1397
1412
|
const linkNode = {
|
|
1398
1413
|
detail: 0,
|
|
1399
1414
|
format: 0,
|
|
1400
1415
|
mode: "normal",
|
|
1401
1416
|
style: "",
|
|
1402
|
-
text:
|
|
1403
|
-
|
|
1417
|
+
text: sheetName,
|
|
1418
|
+
sheetName,
|
|
1404
1419
|
type: "excel-worksheet-link",
|
|
1405
1420
|
version: 1
|
|
1406
1421
|
};
|
|
@@ -2508,7 +2523,7 @@ var VariableNodeHandler2 = class extends NodeHandler2 {
|
|
|
2508
2523
|
|
|
2509
2524
|
// src/importFromHtml/traverse.ts
|
|
2510
2525
|
var builder2 = new NodeHandlerChainBuilder();
|
|
2511
|
-
var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelQuestionNodeHandler2).addHandler(
|
|
2526
|
+
var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelQuestionNodeHandler2).addHandler(ExcelWorksheetLinkNodeHandler2).addHandler(FillInTheBlankQuestionNodeHandler2).addHandler(FillInTheBlankSpaceNodeHandler2).addHandler(FinancialStatementQuestionNodeHandler2).addHandler(FormattedNodeHandler).addHandler(HeadingNodeHandler2).addHandler(HorizontalRuleNodeHandler2).addHandler(ImageNodeHandler2).addHandler(JournalEntryQuestionNodeHandler2).addHandler(LineBreakNodeHandler2).addHandler(LinkNodeHandler2).addHandler(ListItemNodeHandler2).addHandler(ListNodeHandler2).addHandler(MatchingQuestionNodeHandler2).addHandler(MultipleOptionQuestionNodeHandler2).addHandler(ParagraphNodeHandler2).addHandler(ShortAnswerQuestionNodeHandler2).addHandler(SimulationQuestionNodeHandler2).addHandler(SpanNodeHandler).addHandler(TableCellNodeHandler2).addHandler(TableNodeHandler2).addHandler(TableRowNodeHandler2).addHandler(TextNodeHandler2).addHandler(VariableNodeHandler2).build();
|
|
2512
2527
|
function traverse2(node) {
|
|
2513
2528
|
const result = nodeHandlerChain2.handle(node);
|
|
2514
2529
|
if (result === null) return [];
|
package/dist/index.mjs
CHANGED
|
@@ -136,6 +136,19 @@ var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
|
136
136
|
}
|
|
137
137
|
};
|
|
138
138
|
|
|
139
|
+
// src/typeGuards/isSerializedExcelWorksheetLinkNode.ts
|
|
140
|
+
function isSerializedExcelWorksheetLinkNode(node) {
|
|
141
|
+
return node?.type === "excel-worksheet-link";
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// src/exportToHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
145
|
+
var ExcelWorksheetLinkNodeHandler = class extends NodeHandler {
|
|
146
|
+
processNode(node) {
|
|
147
|
+
if (!isSerializedExcelWorksheetLinkNode(node)) return null;
|
|
148
|
+
return `<x-worksheet-link x-data-name="${node.sheetName}"></x-worksheet-link>`;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
|
|
139
152
|
// src/typeGuards/isSerializedFillInTheBlankQuestionNode.ts
|
|
140
153
|
function isSerializedFillInTheBlankQuestionNode(node) {
|
|
141
154
|
return node?.type === "fill-in-the-blank-question" && "id" in node && typeof node.id === "string" && "pointsPerSpace" in node && typeof node.pointsPerSpace === "number" && "content" in node;
|
|
@@ -977,7 +990,7 @@ var VariableNodeHandler = class extends NodeHandler {
|
|
|
977
990
|
|
|
978
991
|
// src/exportToHtml/traverse.ts
|
|
979
992
|
var builder = new NodeHandlerChainBuilder();
|
|
980
|
-
var nodeHandlerChain = builder.addHandler(CustomQuestionNodeHandler).addHandler(EssayQuestionNodeHandler).addHandler(ExcelQuestionNodeHandler).addHandler(FillInTheBlankQuestionNodeHandler).addHandler(FillInTheBlankSpaceNodeHandler).addHandler(FinancialStatementQuestionNodeHandler).addHandler(HeadingNodeHandler).addHandler(HorizontalRuleNodeHandler).addHandler(ImageNodeHandler).addHandler(JournalEntryQuestionNodeHandler).addHandler(LineBreakNodeHandler).addHandler(LinkNodeHandler).addHandler(ListNodeHandler).addHandler(ListItemNodeHandler).addHandler(MatchingQuestionNodeHandler).addHandler(MultipleOptionQuestionNodeHandler).addHandler(ParagraphNodeHandler).addHandler(ShortAnswerQuestionNodeHandler).addHandler(SimulationQuestionNodeHandler).addHandler(TableCellNodeHandler).addHandler(TableNodeHandler).addHandler(TableRowNodeHandler).addHandler(TextNodeHandler).addHandler(VariableNodeHandler).build();
|
|
993
|
+
var nodeHandlerChain = builder.addHandler(CustomQuestionNodeHandler).addHandler(EssayQuestionNodeHandler).addHandler(ExcelQuestionNodeHandler).addHandler(ExcelWorksheetLinkNodeHandler).addHandler(FillInTheBlankQuestionNodeHandler).addHandler(FillInTheBlankSpaceNodeHandler).addHandler(FinancialStatementQuestionNodeHandler).addHandler(HeadingNodeHandler).addHandler(HorizontalRuleNodeHandler).addHandler(ImageNodeHandler).addHandler(JournalEntryQuestionNodeHandler).addHandler(LineBreakNodeHandler).addHandler(LinkNodeHandler).addHandler(ListNodeHandler).addHandler(ListItemNodeHandler).addHandler(MatchingQuestionNodeHandler).addHandler(MultipleOptionQuestionNodeHandler).addHandler(ParagraphNodeHandler).addHandler(ShortAnswerQuestionNodeHandler).addHandler(SimulationQuestionNodeHandler).addHandler(TableCellNodeHandler).addHandler(TableNodeHandler).addHandler(TableRowNodeHandler).addHandler(TextNodeHandler).addHandler(VariableNodeHandler).build();
|
|
981
994
|
var traverse = (node, metadata) => {
|
|
982
995
|
return nodeHandlerChain.handle(node, metadata);
|
|
983
996
|
};
|
|
@@ -1297,31 +1310,33 @@ var TAG_X = "x-excel";
|
|
|
1297
1310
|
function parseData(xDataString) {
|
|
1298
1311
|
const xData = JSON.parse(xDataString);
|
|
1299
1312
|
const parts = [];
|
|
1300
|
-
for (const xPart of xData.parts) {
|
|
1313
|
+
for (const xPart of xData.parts ?? []) {
|
|
1301
1314
|
const tasks = [];
|
|
1302
|
-
for (const xTask of xPart.tasks) {
|
|
1315
|
+
for (const xTask of xPart.tasks ?? []) {
|
|
1303
1316
|
const steps = [];
|
|
1304
|
-
for (const xStep of xTask.steps) {
|
|
1317
|
+
for (const xStep of xTask.steps ?? []) {
|
|
1305
1318
|
steps.push({
|
|
1306
1319
|
id: xStep.id,
|
|
1307
1320
|
description: createNestedEditorFromHtml(
|
|
1308
|
-
parse(xStep.description)
|
|
1321
|
+
parse(xStep.description ?? "")
|
|
1309
1322
|
)
|
|
1310
1323
|
});
|
|
1311
1324
|
}
|
|
1312
1325
|
tasks.push({
|
|
1313
1326
|
id: xTask.id,
|
|
1314
1327
|
instructions: createNestedEditorFromHtml(
|
|
1315
|
-
parse(xTask.instructions)
|
|
1328
|
+
parse(xTask.instructions ?? "")
|
|
1316
1329
|
),
|
|
1317
1330
|
steps
|
|
1318
1331
|
});
|
|
1319
1332
|
}
|
|
1320
1333
|
parts.push({
|
|
1321
1334
|
id: xPart.id,
|
|
1322
|
-
objective: createNestedEditorFromHtml(
|
|
1335
|
+
objective: createNestedEditorFromHtml(
|
|
1336
|
+
parse(xPart.objective ?? "")
|
|
1337
|
+
),
|
|
1323
1338
|
instructions: createNestedEditorFromHtml(
|
|
1324
|
-
parse(xPart.instructions)
|
|
1339
|
+
parse(xPart.instructions ?? "")
|
|
1325
1340
|
),
|
|
1326
1341
|
onLoadActions: xPart.onLoadActions,
|
|
1327
1342
|
onNextActions: xPart.onNextActions,
|
|
@@ -1361,19 +1376,19 @@ var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
|
1361
1376
|
// src/importFromHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
1362
1377
|
import { HTMLElement as HTMLElement6 } from "node-html-parser";
|
|
1363
1378
|
var TAG = "x-worksheet-link";
|
|
1364
|
-
var
|
|
1379
|
+
var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
|
|
1365
1380
|
processNode(node) {
|
|
1366
1381
|
if (!(node instanceof HTMLElement6) || node.tagName !== TAG.toUpperCase()) {
|
|
1367
1382
|
return null;
|
|
1368
1383
|
}
|
|
1369
|
-
const
|
|
1384
|
+
const sheetName = node.getAttribute("x-data-name") || "";
|
|
1370
1385
|
const linkNode = {
|
|
1371
1386
|
detail: 0,
|
|
1372
1387
|
format: 0,
|
|
1373
1388
|
mode: "normal",
|
|
1374
1389
|
style: "",
|
|
1375
|
-
text:
|
|
1376
|
-
|
|
1390
|
+
text: sheetName,
|
|
1391
|
+
sheetName,
|
|
1377
1392
|
type: "excel-worksheet-link",
|
|
1378
1393
|
version: 1
|
|
1379
1394
|
};
|
|
@@ -2481,7 +2496,7 @@ var VariableNodeHandler2 = class extends NodeHandler2 {
|
|
|
2481
2496
|
|
|
2482
2497
|
// src/importFromHtml/traverse.ts
|
|
2483
2498
|
var builder2 = new NodeHandlerChainBuilder();
|
|
2484
|
-
var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelQuestionNodeHandler2).addHandler(
|
|
2499
|
+
var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelQuestionNodeHandler2).addHandler(ExcelWorksheetLinkNodeHandler2).addHandler(FillInTheBlankQuestionNodeHandler2).addHandler(FillInTheBlankSpaceNodeHandler2).addHandler(FinancialStatementQuestionNodeHandler2).addHandler(FormattedNodeHandler).addHandler(HeadingNodeHandler2).addHandler(HorizontalRuleNodeHandler2).addHandler(ImageNodeHandler2).addHandler(JournalEntryQuestionNodeHandler2).addHandler(LineBreakNodeHandler2).addHandler(LinkNodeHandler2).addHandler(ListItemNodeHandler2).addHandler(ListNodeHandler2).addHandler(MatchingQuestionNodeHandler2).addHandler(MultipleOptionQuestionNodeHandler2).addHandler(ParagraphNodeHandler2).addHandler(ShortAnswerQuestionNodeHandler2).addHandler(SimulationQuestionNodeHandler2).addHandler(SpanNodeHandler).addHandler(TableCellNodeHandler2).addHandler(TableNodeHandler2).addHandler(TableRowNodeHandler2).addHandler(TextNodeHandler2).addHandler(VariableNodeHandler2).build();
|
|
2485
2500
|
function traverse2(node) {
|
|
2486
2501
|
const result = nodeHandlerChain2.handle(node);
|
|
2487
2502
|
if (result === null) return [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@examind/block-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"@comment version": [
|
|
5
5
|
"Don't specify package version here. It will be injected by publish workflow."
|
|
6
6
|
],
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"nanoid": ">=3.0.0",
|
|
23
23
|
"node-html-parser": ">=6.0.0",
|
|
24
|
-
"@examind/block-types": "^0.2.
|
|
24
|
+
"@examind/block-types": "^0.2.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@eslint/js": "^9.17.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"tsup": "^8.3.5",
|
|
37
37
|
"typescript": "^5.7.2",
|
|
38
38
|
"typescript-eslint": "^8.18.2",
|
|
39
|
-
"@examind/block-types": "0.2.
|
|
39
|
+
"@examind/block-types": "0.2.2"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"lodash-es": "4.17.21"
|