@examind/block-sdk 0.2.1 → 0.2.3
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 +27 -10
- package/dist/index.mjs +27 -10
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -140,6 +140,10 @@ function createHtmlFromNestedEditor(editor, metadata) {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
// src/exportToHtml/ExcelQuestionNodeHandler.ts
|
|
143
|
+
var htmlOrNullIfEmpty = (editor) => {
|
|
144
|
+
const html = createHtmlFromNestedEditor(editor);
|
|
145
|
+
return !html || html === "<p></p>" ? null : html;
|
|
146
|
+
};
|
|
143
147
|
var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
144
148
|
processNode(node) {
|
|
145
149
|
if (!isSerializedExcelQuestionNode(node)) return null;
|
|
@@ -147,14 +151,14 @@ var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
|
147
151
|
...node.data,
|
|
148
152
|
parts: node.data.parts.map((p) => ({
|
|
149
153
|
...p,
|
|
150
|
-
objective:
|
|
151
|
-
instructions:
|
|
154
|
+
objective: htmlOrNullIfEmpty(p.objective),
|
|
155
|
+
instructions: htmlOrNullIfEmpty(p.instructions),
|
|
152
156
|
tasks: p.tasks.map((t) => ({
|
|
153
157
|
...t,
|
|
154
|
-
instructions:
|
|
158
|
+
instructions: htmlOrNullIfEmpty(t.instructions),
|
|
155
159
|
steps: t.steps.map((s) => ({
|
|
156
160
|
...s,
|
|
157
|
-
description:
|
|
161
|
+
description: htmlOrNullIfEmpty(s.description)
|
|
158
162
|
}))
|
|
159
163
|
}))
|
|
160
164
|
}))
|
|
@@ -163,6 +167,19 @@ var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
|
163
167
|
}
|
|
164
168
|
};
|
|
165
169
|
|
|
170
|
+
// src/typeGuards/isSerializedExcelWorksheetLinkNode.ts
|
|
171
|
+
function isSerializedExcelWorksheetLinkNode(node) {
|
|
172
|
+
return node?.type === "excel-worksheet-link";
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// src/exportToHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
176
|
+
var ExcelWorksheetLinkNodeHandler = class extends NodeHandler {
|
|
177
|
+
processNode(node) {
|
|
178
|
+
if (!isSerializedExcelWorksheetLinkNode(node)) return null;
|
|
179
|
+
return `<x-worksheet-link x-data-name="${node.sheetName}"></x-worksheet-link>`;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
|
|
166
183
|
// src/typeGuards/isSerializedFillInTheBlankQuestionNode.ts
|
|
167
184
|
function isSerializedFillInTheBlankQuestionNode(node) {
|
|
168
185
|
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 +1021,7 @@ var VariableNodeHandler = class extends NodeHandler {
|
|
|
1004
1021
|
|
|
1005
1022
|
// src/exportToHtml/traverse.ts
|
|
1006
1023
|
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();
|
|
1024
|
+
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
1025
|
var traverse = (node, metadata) => {
|
|
1009
1026
|
return nodeHandlerChain.handle(node, metadata);
|
|
1010
1027
|
};
|
|
@@ -1390,19 +1407,19 @@ var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
|
1390
1407
|
// src/importFromHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
1391
1408
|
var import_node_html_parser6 = require("node-html-parser");
|
|
1392
1409
|
var TAG = "x-worksheet-link";
|
|
1393
|
-
var
|
|
1410
|
+
var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
|
|
1394
1411
|
processNode(node) {
|
|
1395
1412
|
if (!(node instanceof import_node_html_parser6.HTMLElement) || node.tagName !== TAG.toUpperCase()) {
|
|
1396
1413
|
return null;
|
|
1397
1414
|
}
|
|
1398
|
-
const
|
|
1415
|
+
const sheetName = node.getAttribute("x-data-name") || "";
|
|
1399
1416
|
const linkNode = {
|
|
1400
1417
|
detail: 0,
|
|
1401
1418
|
format: 0,
|
|
1402
1419
|
mode: "normal",
|
|
1403
1420
|
style: "",
|
|
1404
|
-
text:
|
|
1405
|
-
|
|
1421
|
+
text: sheetName,
|
|
1422
|
+
sheetName,
|
|
1406
1423
|
type: "excel-worksheet-link",
|
|
1407
1424
|
version: 1
|
|
1408
1425
|
};
|
|
@@ -2510,7 +2527,7 @@ var VariableNodeHandler2 = class extends NodeHandler2 {
|
|
|
2510
2527
|
|
|
2511
2528
|
// src/importFromHtml/traverse.ts
|
|
2512
2529
|
var builder2 = new NodeHandlerChainBuilder();
|
|
2513
|
-
var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelQuestionNodeHandler2).addHandler(
|
|
2530
|
+
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();
|
|
2514
2531
|
function traverse2(node) {
|
|
2515
2532
|
const result = nodeHandlerChain2.handle(node);
|
|
2516
2533
|
if (result === null) return [];
|
package/dist/index.mjs
CHANGED
|
@@ -113,6 +113,10 @@ function createHtmlFromNestedEditor(editor, metadata) {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
// src/exportToHtml/ExcelQuestionNodeHandler.ts
|
|
116
|
+
var htmlOrNullIfEmpty = (editor) => {
|
|
117
|
+
const html = createHtmlFromNestedEditor(editor);
|
|
118
|
+
return !html || html === "<p></p>" ? null : html;
|
|
119
|
+
};
|
|
116
120
|
var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
117
121
|
processNode(node) {
|
|
118
122
|
if (!isSerializedExcelQuestionNode(node)) return null;
|
|
@@ -120,14 +124,14 @@ var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
|
120
124
|
...node.data,
|
|
121
125
|
parts: node.data.parts.map((p) => ({
|
|
122
126
|
...p,
|
|
123
|
-
objective:
|
|
124
|
-
instructions:
|
|
127
|
+
objective: htmlOrNullIfEmpty(p.objective),
|
|
128
|
+
instructions: htmlOrNullIfEmpty(p.instructions),
|
|
125
129
|
tasks: p.tasks.map((t) => ({
|
|
126
130
|
...t,
|
|
127
|
-
instructions:
|
|
131
|
+
instructions: htmlOrNullIfEmpty(t.instructions),
|
|
128
132
|
steps: t.steps.map((s) => ({
|
|
129
133
|
...s,
|
|
130
|
-
description:
|
|
134
|
+
description: htmlOrNullIfEmpty(s.description)
|
|
131
135
|
}))
|
|
132
136
|
}))
|
|
133
137
|
}))
|
|
@@ -136,6 +140,19 @@ var ExcelQuestionNodeHandler = class extends NodeHandler {
|
|
|
136
140
|
}
|
|
137
141
|
};
|
|
138
142
|
|
|
143
|
+
// src/typeGuards/isSerializedExcelWorksheetLinkNode.ts
|
|
144
|
+
function isSerializedExcelWorksheetLinkNode(node) {
|
|
145
|
+
return node?.type === "excel-worksheet-link";
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// src/exportToHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
149
|
+
var ExcelWorksheetLinkNodeHandler = class extends NodeHandler {
|
|
150
|
+
processNode(node) {
|
|
151
|
+
if (!isSerializedExcelWorksheetLinkNode(node)) return null;
|
|
152
|
+
return `<x-worksheet-link x-data-name="${node.sheetName}"></x-worksheet-link>`;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
139
156
|
// src/typeGuards/isSerializedFillInTheBlankQuestionNode.ts
|
|
140
157
|
function isSerializedFillInTheBlankQuestionNode(node) {
|
|
141
158
|
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 +994,7 @@ var VariableNodeHandler = class extends NodeHandler {
|
|
|
977
994
|
|
|
978
995
|
// src/exportToHtml/traverse.ts
|
|
979
996
|
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();
|
|
997
|
+
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
998
|
var traverse = (node, metadata) => {
|
|
982
999
|
return nodeHandlerChain.handle(node, metadata);
|
|
983
1000
|
};
|
|
@@ -1363,19 +1380,19 @@ var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
|
1363
1380
|
// src/importFromHtml/ExcelWorksheetLinkNodeHandler.ts
|
|
1364
1381
|
import { HTMLElement as HTMLElement6 } from "node-html-parser";
|
|
1365
1382
|
var TAG = "x-worksheet-link";
|
|
1366
|
-
var
|
|
1383
|
+
var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
|
|
1367
1384
|
processNode(node) {
|
|
1368
1385
|
if (!(node instanceof HTMLElement6) || node.tagName !== TAG.toUpperCase()) {
|
|
1369
1386
|
return null;
|
|
1370
1387
|
}
|
|
1371
|
-
const
|
|
1388
|
+
const sheetName = node.getAttribute("x-data-name") || "";
|
|
1372
1389
|
const linkNode = {
|
|
1373
1390
|
detail: 0,
|
|
1374
1391
|
format: 0,
|
|
1375
1392
|
mode: "normal",
|
|
1376
1393
|
style: "",
|
|
1377
|
-
text:
|
|
1378
|
-
|
|
1394
|
+
text: sheetName,
|
|
1395
|
+
sheetName,
|
|
1379
1396
|
type: "excel-worksheet-link",
|
|
1380
1397
|
version: 1
|
|
1381
1398
|
};
|
|
@@ -2483,7 +2500,7 @@ var VariableNodeHandler2 = class extends NodeHandler2 {
|
|
|
2483
2500
|
|
|
2484
2501
|
// src/importFromHtml/traverse.ts
|
|
2485
2502
|
var builder2 = new NodeHandlerChainBuilder();
|
|
2486
|
-
var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelQuestionNodeHandler2).addHandler(
|
|
2503
|
+
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();
|
|
2487
2504
|
function traverse2(node) {
|
|
2488
2505
|
const result = nodeHandlerChain2.handle(node);
|
|
2489
2506
|
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.3",
|
|
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.3"
|
|
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.3"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"lodash-es": "4.17.21"
|