@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 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: createHtmlFromNestedEditor(p.objective),
151
- instructions: createHtmlFromNestedEditor(p.instructions),
154
+ objective: htmlOrNullIfEmpty(p.objective),
155
+ instructions: htmlOrNullIfEmpty(p.instructions),
152
156
  tasks: p.tasks.map((t) => ({
153
157
  ...t,
154
- instructions: createHtmlFromNestedEditor(t.instructions),
158
+ instructions: htmlOrNullIfEmpty(t.instructions),
155
159
  steps: t.steps.map((s) => ({
156
160
  ...s,
157
- description: createHtmlFromNestedEditor(s.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 ExcelWorksheetLinkNodeHandler = class extends NodeHandler2 {
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 url = node.getAttribute("x-data-name") || "";
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: node.text || url,
1405
- dataName: url,
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(ExcelWorksheetLinkNodeHandler).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();
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: createHtmlFromNestedEditor(p.objective),
124
- instructions: createHtmlFromNestedEditor(p.instructions),
127
+ objective: htmlOrNullIfEmpty(p.objective),
128
+ instructions: htmlOrNullIfEmpty(p.instructions),
125
129
  tasks: p.tasks.map((t) => ({
126
130
  ...t,
127
- instructions: createHtmlFromNestedEditor(t.instructions),
131
+ instructions: htmlOrNullIfEmpty(t.instructions),
128
132
  steps: t.steps.map((s) => ({
129
133
  ...s,
130
- description: createHtmlFromNestedEditor(s.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 ExcelWorksheetLinkNodeHandler = class extends NodeHandler2 {
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 url = node.getAttribute("x-data-name") || "";
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: node.text || url,
1378
- dataName: url,
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(ExcelWorksheetLinkNodeHandler).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();
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.1",
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.1"
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.1"
39
+ "@examind/block-types": "0.2.3"
40
40
  },
41
41
  "dependencies": {
42
42
  "lodash-es": "4.17.21"