@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 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((0, import_node_html_parser5.parse)(xPart.objective)),
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 ExcelWorksheetLinkNodeHandler = class extends NodeHandler2 {
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 url = node.getAttribute("x-data-name") || "";
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: node.text || url,
1403
- dataName: url,
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(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();
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(parse(xPart.objective)),
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 ExcelWorksheetLinkNodeHandler = class extends NodeHandler2 {
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 url = node.getAttribute("x-data-name") || "";
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: node.text || url,
1376
- dataName: url,
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(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();
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.0",
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.0"
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.0"
39
+ "@examind/block-types": "0.2.2"
40
40
  },
41
41
  "dependencies": {
42
42
  "lodash-es": "4.17.21"