@examind/block-sdk 0.6.0 → 0.7.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/index.js CHANGED
@@ -1076,7 +1076,7 @@ function exportToHtml(editorState) {
1076
1076
  }
1077
1077
 
1078
1078
  // src/importFromHtml/index.ts
1079
- var import_node_html_parser31 = require("node-html-parser");
1079
+ var import_node_html_parser32 = require("node-html-parser");
1080
1080
 
1081
1081
  // src/importFromHtml/createEmptyParagraphNode.ts
1082
1082
  function createEmptyParagraphNode(format = "") {
@@ -1368,6 +1368,30 @@ var EssayQuestionNodeHandler2 = class extends NodeHandler2 {
1368
1368
  }
1369
1369
  };
1370
1370
 
1371
+ // src/importFromHtml/ExcelCopyTextNodeHandler.ts
1372
+ var import_node_html_parser5 = require("node-html-parser");
1373
+ var ExcelCopyTextNodeHandler2 = class extends NodeHandler2 {
1374
+ isXCopyElement(node) {
1375
+ return node instanceof import_node_html_parser5.HTMLElement && node.tagName === "X-COPY";
1376
+ }
1377
+ processNode(node) {
1378
+ if (!this.isXCopyElement(node)) return null;
1379
+ const children = [];
1380
+ for (const childNode of node.childNodes) {
1381
+ const processedChildren = traverse2(childNode);
1382
+ children.push(...processedChildren);
1383
+ }
1384
+ return {
1385
+ children,
1386
+ direction: null,
1387
+ format: "",
1388
+ indent: 0,
1389
+ type: "excel-copy-text",
1390
+ version: 1
1391
+ };
1392
+ }
1393
+ };
1394
+
1371
1395
  // src/importFromHtml/createNestedEditorFromHtml.ts
1372
1396
  function createNestedEditorFromHtml(node) {
1373
1397
  return {
@@ -1385,7 +1409,7 @@ function createNestedEditorFromHtml(node) {
1385
1409
  }
1386
1410
 
1387
1411
  // src/importFromHtml/ExcelQuestionNodeHandler.ts
1388
- var import_node_html_parser5 = require("node-html-parser");
1412
+ var import_node_html_parser6 = require("node-html-parser");
1389
1413
  var TAG_X = "x-excel";
1390
1414
  function parseData(xDataString) {
1391
1415
  const xData = JSON.parse(xDataString);
@@ -1398,14 +1422,14 @@ function parseData(xDataString) {
1398
1422
  steps.push({
1399
1423
  id: xStep.id,
1400
1424
  description: createNestedEditorFromHtml(
1401
- (0, import_node_html_parser5.parse)(xStep.description ?? "")
1425
+ (0, import_node_html_parser6.parse)(xStep.description ?? "")
1402
1426
  )
1403
1427
  });
1404
1428
  }
1405
1429
  tasks.push({
1406
1430
  id: xTask.id,
1407
1431
  instructions: createNestedEditorFromHtml(
1408
- (0, import_node_html_parser5.parse)(xTask.instructions ?? "")
1432
+ (0, import_node_html_parser6.parse)(xTask.instructions ?? "")
1409
1433
  ),
1410
1434
  steps
1411
1435
  });
@@ -1413,10 +1437,10 @@ function parseData(xDataString) {
1413
1437
  parts.push({
1414
1438
  id: xPart.id,
1415
1439
  objective: createNestedEditorFromHtml(
1416
- (0, import_node_html_parser5.parse)(xPart.objective ?? "")
1440
+ (0, import_node_html_parser6.parse)(xPart.objective ?? "")
1417
1441
  ),
1418
1442
  instructions: createNestedEditorFromHtml(
1419
- (0, import_node_html_parser5.parse)(xPart.instructions ?? "")
1443
+ (0, import_node_html_parser6.parse)(xPart.instructions ?? "")
1420
1444
  ),
1421
1445
  onLoadActions: xPart.onLoadActions,
1422
1446
  onNextActions: xPart.onNextActions,
@@ -1431,7 +1455,7 @@ function parseData(xDataString) {
1431
1455
  }
1432
1456
  var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
1433
1457
  processNode(node) {
1434
- if (!(node instanceof import_node_html_parser5.HTMLElement) || node.tagName !== TAG_X.toUpperCase()) {
1458
+ if (!(node instanceof import_node_html_parser6.HTMLElement) || node.tagName !== TAG_X.toUpperCase()) {
1435
1459
  return null;
1436
1460
  }
1437
1461
  const xDataElement = node.querySelector("x-data");
@@ -1455,11 +1479,11 @@ var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
1455
1479
  };
1456
1480
 
1457
1481
  // src/importFromHtml/ExcelWorksheetLinkNodeHandler.ts
1458
- var import_node_html_parser6 = require("node-html-parser");
1482
+ var import_node_html_parser7 = require("node-html-parser");
1459
1483
  var TAG = "x-worksheet-link";
1460
1484
  var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
1461
1485
  processNode(node) {
1462
- if (!(node instanceof import_node_html_parser6.HTMLElement) || node.tagName !== TAG.toUpperCase()) {
1486
+ if (!(node instanceof import_node_html_parser7.HTMLElement) || node.tagName !== TAG.toUpperCase()) {
1463
1487
  return null;
1464
1488
  }
1465
1489
  const sheetName = node.getAttribute("x-data-name") || "";
@@ -1479,10 +1503,10 @@ var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
1479
1503
 
1480
1504
  // src/importFromHtml/FillInTheBlankQuestionNodeHandler.ts
1481
1505
  var import_nanoid2 = require("nanoid");
1482
- var import_node_html_parser7 = require("node-html-parser");
1506
+ var import_node_html_parser8 = require("node-html-parser");
1483
1507
  var FillInTheBlankQuestionNodeHandler2 = class extends NodeHandler2 {
1484
1508
  processNode(node) {
1485
- if (!(node instanceof import_node_html_parser7.HTMLElement) || node.tagName !== "x-fill-in-the-blank".toUpperCase())
1509
+ if (!(node instanceof import_node_html_parser8.HTMLElement) || node.tagName !== "x-fill-in-the-blank".toUpperCase())
1486
1510
  return null;
1487
1511
  const jsonNode = {
1488
1512
  id: node.getAttribute("id") ?? (0, import_nanoid2.nanoid)(),
@@ -1499,7 +1523,7 @@ var FillInTheBlankQuestionNodeHandler2 = class extends NodeHandler2 {
1499
1523
 
1500
1524
  // src/importFromHtml/FillInTheBlankSpaceNodeHandler.ts
1501
1525
  var import_nanoid3 = require("nanoid");
1502
- var import_node_html_parser8 = require("node-html-parser");
1526
+ var import_node_html_parser9 = require("node-html-parser");
1503
1527
 
1504
1528
  // src/importFromHtml/parseErrorToleranceAttribute.ts
1505
1529
  function parseErrorToleranceAttribute(attr) {
@@ -1511,7 +1535,7 @@ function parseErrorToleranceAttribute(attr) {
1511
1535
  // src/importFromHtml/FillInTheBlankSpaceNodeHandler.ts
1512
1536
  var FillInTheBlankSpaceNodeHandler2 = class extends NodeHandler2 {
1513
1537
  processNode(node) {
1514
- if (!(node instanceof import_node_html_parser8.HTMLElement) || node.tagName !== "x-space".toUpperCase())
1538
+ if (!(node instanceof import_node_html_parser9.HTMLElement) || node.tagName !== "x-space".toUpperCase())
1515
1539
  return null;
1516
1540
  const spaceTypeAttr = node.getAttribute("data-x-type");
1517
1541
  const spaceType = spaceTypeAttr === "Text" || spaceTypeAttr === "Number" || spaceTypeAttr === "Dropdown" ? spaceTypeAttr : "Text";
@@ -1562,7 +1586,7 @@ var FillInTheBlankSpaceNodeHandler2 = class extends NodeHandler2 {
1562
1586
 
1563
1587
  // src/importFromHtml/FinancialStatementQuestionNodeHandler.ts
1564
1588
  var import_nanoid4 = require("nanoid");
1565
- var import_node_html_parser9 = require("node-html-parser");
1589
+ var import_node_html_parser10 = require("node-html-parser");
1566
1590
  var TAG_X_FINANCIAL_STATEMENT = "x-financial-statement";
1567
1591
  var TAG_X_HEADER = "x-header";
1568
1592
  var TAG_X_ROWS = "x-rows";
@@ -1576,7 +1600,7 @@ var isLineRole = (value) => value === "line-item" || value === "subtotal" || val
1576
1600
  var parseLineRole = (value) => isLineRole(value) ? value : null;
1577
1601
  var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1578
1602
  processNode(node) {
1579
- if (!(node instanceof import_node_html_parser9.HTMLElement) || node.tagName !== TAG_X_FINANCIAL_STATEMENT.toUpperCase()) {
1603
+ if (!(node instanceof import_node_html_parser10.HTMLElement) || node.tagName !== TAG_X_FINANCIAL_STATEMENT.toUpperCase()) {
1580
1604
  return null;
1581
1605
  }
1582
1606
  const headerElement = node.querySelector(TAG_X_HEADER);
@@ -1591,7 +1615,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1591
1615
  version: 1
1592
1616
  };
1593
1617
  node.childNodes.forEach((child) => {
1594
- if (!(child instanceof import_node_html_parser9.HTMLElement)) return;
1618
+ if (!(child instanceof import_node_html_parser10.HTMLElement)) return;
1595
1619
  if (child.tagName === TAG_X_DISTRACTORS.toUpperCase()) {
1596
1620
  this.processDistractorsNode(child, jsonNode);
1597
1621
  } else if (child.tagName === TAG_X_ROWS.toUpperCase()) {
@@ -1602,7 +1626,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1602
1626
  }
1603
1627
  processDistractorsNode(distractorsNode, jsonNode) {
1604
1628
  for (const distractorsChild of distractorsNode.childNodes) {
1605
- if (!(distractorsChild instanceof import_node_html_parser9.HTMLElement)) continue;
1629
+ if (!(distractorsChild instanceof import_node_html_parser10.HTMLElement)) continue;
1606
1630
  if (distractorsChild.tagName !== TAG_X_DISTRACTOR.toUpperCase())
1607
1631
  continue;
1608
1632
  jsonNode.distractors.push({
@@ -1621,7 +1645,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1621
1645
  const contentDiv = headerElement.querySelector(
1622
1646
  'div > div:not([style*="display:flex"])'
1623
1647
  );
1624
- if (contentDiv && contentDiv instanceof import_node_html_parser9.HTMLElement)
1648
+ if (contentDiv && contentDiv instanceof import_node_html_parser10.HTMLElement)
1625
1649
  return createNestedEditorFromHtml(contentDiv);
1626
1650
  }
1627
1651
  return createNestedEditorFromHtml(headerElement);
@@ -1638,7 +1662,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1638
1662
  }
1639
1663
  processRowsNode(rowsNode, jsonNode) {
1640
1664
  for (const rowsChild of rowsNode.childNodes) {
1641
- if (!(rowsChild instanceof import_node_html_parser9.HTMLElement)) continue;
1665
+ if (!(rowsChild instanceof import_node_html_parser10.HTMLElement)) continue;
1642
1666
  if (rowsChild.tagName === TAG_X_HEADING.toUpperCase()) {
1643
1667
  this.processHeadingRow(rowsChild, jsonNode);
1644
1668
  } else if (rowsChild.tagName === TAG_X_LINE.toUpperCase()) {
@@ -1674,7 +1698,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1674
1698
  };
1675
1699
 
1676
1700
  // src/importFromHtml/FormattedNodeHandler.ts
1677
- var import_node_html_parser10 = require("node-html-parser");
1701
+ var import_node_html_parser11 = require("node-html-parser");
1678
1702
  var IS_BOLD2 = 1;
1679
1703
  var IS_ITALIC2 = 1 << 1;
1680
1704
  var IS_STRIKETHROUGH2 = 1 << 2;
@@ -1714,7 +1738,7 @@ function formatToProps(format) {
1714
1738
  }
1715
1739
  var FormattedNodeHandler = class extends NodeHandler2 {
1716
1740
  processNode(node) {
1717
- if (!(node instanceof import_node_html_parser10.HTMLElement)) return null;
1741
+ if (!(node instanceof import_node_html_parser11.HTMLElement)) return null;
1718
1742
  const tagName = node.tagName;
1719
1743
  if (!tagName || !(tagName in TAG_TO_FORMAT)) return null;
1720
1744
  const formatFlag = TAG_TO_FORMAT[tagName];
@@ -1749,7 +1773,7 @@ var FormattedNodeHandler = class extends NodeHandler2 {
1749
1773
  };
1750
1774
 
1751
1775
  // src/importFromHtml/HeadingNodeHandler.ts
1752
- var import_node_html_parser11 = require("node-html-parser");
1776
+ var import_node_html_parser12 = require("node-html-parser");
1753
1777
 
1754
1778
  // src/importFromHtml/extractTextAlignment.ts
1755
1779
  var TEXT_ALIGN_TO_FORMAT = {
@@ -1777,7 +1801,7 @@ function extractTextAlignment(element) {
1777
1801
  var TAG_HEADINGS = ["h1", "h2", "h3", "h4", "h5", "h6"];
1778
1802
  var HeadingNodeHandler2 = class extends NodeHandler2 {
1779
1803
  processNode(node) {
1780
- if (!(node instanceof import_node_html_parser11.HTMLElement) || !TAG_HEADINGS.includes(node.tagName.toLowerCase())) {
1804
+ if (!(node instanceof import_node_html_parser12.HTMLElement) || !TAG_HEADINGS.includes(node.tagName.toLowerCase())) {
1781
1805
  return null;
1782
1806
  }
1783
1807
  const headingNode = {
@@ -1798,11 +1822,11 @@ var HeadingNodeHandler2 = class extends NodeHandler2 {
1798
1822
  };
1799
1823
 
1800
1824
  // src/importFromHtml/HorizontalRuleNodeHandler.ts
1801
- var import_node_html_parser12 = require("node-html-parser");
1825
+ var import_node_html_parser13 = require("node-html-parser");
1802
1826
  var TAG_HR = "hr";
1803
1827
  var HorizontalRuleNodeHandler2 = class extends NodeHandler2 {
1804
1828
  processNode(node) {
1805
- if (!(node instanceof import_node_html_parser12.HTMLElement) || node.tagName !== TAG_HR.toUpperCase()) {
1829
+ if (!(node instanceof import_node_html_parser13.HTMLElement) || node.tagName !== TAG_HR.toUpperCase()) {
1806
1830
  return null;
1807
1831
  }
1808
1832
  const horizontalRuleNode = {
@@ -1814,11 +1838,11 @@ var HorizontalRuleNodeHandler2 = class extends NodeHandler2 {
1814
1838
  };
1815
1839
 
1816
1840
  // src/importFromHtml/ImageNodeHandler.ts
1817
- var import_node_html_parser13 = require("node-html-parser");
1841
+ var import_node_html_parser14 = require("node-html-parser");
1818
1842
  var TAG_IMG = "img";
1819
1843
  var ImageNodeHandler2 = class extends NodeHandler2 {
1820
1844
  processNode(node) {
1821
- if (!(node instanceof import_node_html_parser13.HTMLElement) || node.tagName !== TAG_IMG.toUpperCase()) {
1845
+ if (!(node instanceof import_node_html_parser14.HTMLElement) || node.tagName !== TAG_IMG.toUpperCase()) {
1822
1846
  return null;
1823
1847
  }
1824
1848
  return createImageNode(
@@ -1834,11 +1858,11 @@ var ImageNodeHandler2 = class extends NodeHandler2 {
1834
1858
 
1835
1859
  // src/importFromHtml/JournalEntryQuestionNodeHandler.ts
1836
1860
  var import_nanoid6 = require("nanoid");
1837
- var import_node_html_parser15 = require("node-html-parser");
1861
+ var import_node_html_parser16 = require("node-html-parser");
1838
1862
 
1839
1863
  // src/importFromHtml/createOnePerLineDistractorNode.ts
1840
1864
  var import_nanoid5 = require("nanoid");
1841
- var import_node_html_parser14 = require("node-html-parser");
1865
+ var import_node_html_parser15 = require("node-html-parser");
1842
1866
  function extractDistractorId(id) {
1843
1867
  if (!id) return null;
1844
1868
  const parts = id.split("|");
@@ -1851,7 +1875,7 @@ var createOnePerLineDistractorNode = (node) => {
1851
1875
  distractorEditor.editorState.root.children = [];
1852
1876
  let distractorId = null;
1853
1877
  distractors.forEach((distractor) => {
1854
- if (!(distractor instanceof import_node_html_parser14.HTMLElement)) return;
1878
+ if (!(distractor instanceof import_node_html_parser15.HTMLElement)) return;
1855
1879
  distractorId = distractorId ?? extractDistractorId(distractor.getAttribute("id"));
1856
1880
  distractorEditor.editorState.root.children.push(
1857
1881
  ...createNestedNodesFromHtml(distractor)
@@ -1869,7 +1893,7 @@ var createOnePerLineDistractorNode = (node) => {
1869
1893
  // src/importFromHtml/JournalEntryQuestionNodeHandler.ts
1870
1894
  var JournalEntryQuestionNodeHandler2 = class extends NodeHandler2 {
1871
1895
  processNode(node) {
1872
- if (!(node instanceof import_node_html_parser15.HTMLElement) || node.tagName !== "x-journal-entry".toUpperCase())
1896
+ if (!(node instanceof import_node_html_parser16.HTMLElement) || node.tagName !== "x-journal-entry".toUpperCase())
1873
1897
  return null;
1874
1898
  const jsonNode = {
1875
1899
  id: node.getAttribute("id") ?? (0, import_nanoid6.nanoid)(),
@@ -1884,7 +1908,7 @@ var JournalEntryQuestionNodeHandler2 = class extends NodeHandler2 {
1884
1908
  };
1885
1909
  const lineItems = node.querySelectorAll("x-line-item");
1886
1910
  lineItems.forEach((lineItem) => {
1887
- if (!(lineItem instanceof import_node_html_parser15.HTMLElement)) return;
1911
+ if (!(lineItem instanceof import_node_html_parser16.HTMLElement)) return;
1888
1912
  const accountElement = lineItem.querySelector("x-account");
1889
1913
  const debitElement = lineItem.querySelector("x-debit");
1890
1914
  const creditElement = lineItem.querySelector("x-credit");
@@ -1913,10 +1937,10 @@ var JournalEntryQuestionNodeHandler2 = class extends NodeHandler2 {
1913
1937
  };
1914
1938
 
1915
1939
  // src/importFromHtml/LineBreakNodeHandler.ts
1916
- var import_node_html_parser16 = require("node-html-parser");
1940
+ var import_node_html_parser17 = require("node-html-parser");
1917
1941
  var LineBreakNodeHandler2 = class extends NodeHandler2 {
1918
1942
  processNode(node) {
1919
- if (!(node instanceof import_node_html_parser16.HTMLElement)) return null;
1943
+ if (!(node instanceof import_node_html_parser17.HTMLElement)) return null;
1920
1944
  if (node.tagName !== "BR") return null;
1921
1945
  return {
1922
1946
  type: "linebreak",
@@ -1926,11 +1950,11 @@ var LineBreakNodeHandler2 = class extends NodeHandler2 {
1926
1950
  };
1927
1951
 
1928
1952
  // src/importFromHtml/LinkNodeHandler.ts
1929
- var import_node_html_parser17 = require("node-html-parser");
1953
+ var import_node_html_parser18 = require("node-html-parser");
1930
1954
  var TAG_A = "a";
1931
1955
  var LinkNodeHandler2 = class extends NodeHandler2 {
1932
1956
  processNode(node) {
1933
- if (!(node instanceof import_node_html_parser17.HTMLElement) || node.tagName !== TAG_A.toUpperCase()) {
1957
+ if (!(node instanceof import_node_html_parser18.HTMLElement) || node.tagName !== TAG_A.toUpperCase()) {
1934
1958
  return null;
1935
1959
  }
1936
1960
  const url = node.getAttribute("href") || "";
@@ -1959,10 +1983,10 @@ var LinkNodeHandler2 = class extends NodeHandler2 {
1959
1983
  };
1960
1984
 
1961
1985
  // src/importFromHtml/ListItemNodeHandler.ts
1962
- var import_node_html_parser18 = require("node-html-parser");
1986
+ var import_node_html_parser19 = require("node-html-parser");
1963
1987
  var ListItemNodeHandler2 = class extends NodeHandler2 {
1964
1988
  processNode(node) {
1965
- if (!(node instanceof import_node_html_parser18.HTMLElement)) return null;
1989
+ if (!(node instanceof import_node_html_parser19.HTMLElement)) return null;
1966
1990
  if (node.tagName !== "LI") return null;
1967
1991
  const jsonNode = {
1968
1992
  type: "listitem",
@@ -1983,10 +2007,10 @@ var ListItemNodeHandler2 = class extends NodeHandler2 {
1983
2007
  };
1984
2008
 
1985
2009
  // src/importFromHtml/ListNodeHandler.ts
1986
- var import_node_html_parser19 = require("node-html-parser");
2010
+ var import_node_html_parser20 = require("node-html-parser");
1987
2011
  var ListNodeHandler2 = class extends NodeHandler2 {
1988
2012
  processNode(node) {
1989
- if (!(node instanceof import_node_html_parser19.HTMLElement)) return null;
2013
+ if (!(node instanceof import_node_html_parser20.HTMLElement)) return null;
1990
2014
  if (node.tagName !== "UL" && node.tagName !== "OL") return null;
1991
2015
  const tag = node.tagName.toLowerCase();
1992
2016
  const listType = tag === "ol" ? "number" : "bullet";
@@ -2004,7 +2028,7 @@ var ListNodeHandler2 = class extends NodeHandler2 {
2004
2028
  };
2005
2029
  let itemIndex = 1;
2006
2030
  node.childNodes.forEach((child) => {
2007
- if (child instanceof import_node_html_parser19.HTMLElement && child.tagName === "LI") {
2031
+ if (child instanceof import_node_html_parser20.HTMLElement && child.tagName === "LI") {
2008
2032
  const listItemNode = {
2009
2033
  type: "listitem",
2010
2034
  version: 1,
@@ -2029,10 +2053,10 @@ var ListNodeHandler2 = class extends NodeHandler2 {
2029
2053
 
2030
2054
  // src/importFromHtml/MatchingQuestionNodeHandler.ts
2031
2055
  var import_nanoid7 = require("nanoid");
2032
- var import_node_html_parser20 = require("node-html-parser");
2056
+ var import_node_html_parser21 = require("node-html-parser");
2033
2057
  var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
2034
2058
  processNode(node) {
2035
- if (!(node instanceof import_node_html_parser20.HTMLElement) || node.tagName !== "x-matching".toUpperCase())
2059
+ if (!(node instanceof import_node_html_parser21.HTMLElement) || node.tagName !== "x-matching".toUpperCase())
2036
2060
  return null;
2037
2061
  const jsonNode = {
2038
2062
  id: node.getAttribute("id") ?? (0, import_nanoid7.nanoid)(),
@@ -2045,7 +2069,7 @@ var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
2045
2069
  };
2046
2070
  const matches = node.querySelectorAll("x-match");
2047
2071
  matches.forEach((match) => {
2048
- if (!(match instanceof import_node_html_parser20.HTMLElement)) return;
2072
+ if (!(match instanceof import_node_html_parser21.HTMLElement)) return;
2049
2073
  const premise = match.querySelector("x-premise");
2050
2074
  const option = match.querySelector("x-option");
2051
2075
  if (!premise || !option) return;
@@ -2068,10 +2092,10 @@ var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
2068
2092
 
2069
2093
  // src/importFromHtml/MultipleOptionQuestionNodeHandler.ts
2070
2094
  var import_nanoid8 = require("nanoid");
2071
- var import_node_html_parser21 = require("node-html-parser");
2095
+ var import_node_html_parser22 = require("node-html-parser");
2072
2096
  var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
2073
2097
  processNode(node) {
2074
- if (!(node instanceof import_node_html_parser21.HTMLElement)) return null;
2098
+ if (!(node instanceof import_node_html_parser22.HTMLElement)) return null;
2075
2099
  if (node.tagName === "x-multiple-choice".toUpperCase())
2076
2100
  return this.processMultipleChoiceNode(node);
2077
2101
  else if (node.tagName === "x-multiple-answers".toUpperCase())
@@ -2111,7 +2135,7 @@ var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
2111
2135
  processOptions(node, jsonNode) {
2112
2136
  const childNodes = node.childNodes;
2113
2137
  childNodes.forEach((child) => {
2114
- if (!(child instanceof import_node_html_parser21.HTMLElement)) return;
2138
+ if (!(child instanceof import_node_html_parser22.HTMLElement)) return;
2115
2139
  if (child.tagName !== "x-option".toUpperCase()) return;
2116
2140
  jsonNode.options.push({
2117
2141
  id: child.getAttribute("id") ?? (0, import_nanoid8.nanoid)(),
@@ -2123,28 +2147,28 @@ var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
2123
2147
  };
2124
2148
 
2125
2149
  // src/importFromHtml/ParagraphNodeHandler.ts
2126
- var import_node_html_parser22 = require("node-html-parser");
2150
+ var import_node_html_parser23 = require("node-html-parser");
2127
2151
  var ParagraphNodeHandler2 = class extends NodeHandler2 {
2128
2152
  processImageNode(node) {
2129
- if (node.childNodes.length === 1 && node.childNodes[0] instanceof import_node_html_parser22.HTMLElement && node.childNodes[0].tagName === "IMG") {
2153
+ if (node.childNodes.length === 1 && node.childNodes[0] instanceof import_node_html_parser23.HTMLElement && node.childNodes[0].tagName === "IMG") {
2130
2154
  return traverse2(node.childNodes[0]);
2131
2155
  }
2132
2156
  return null;
2133
2157
  }
2134
2158
  processSpanImageNode(node) {
2135
- if (node.childNodes.length === 1 && node.childNodes[0] instanceof import_node_html_parser22.HTMLElement && node.childNodes[0].tagName === "SPAN" && node.childNodes[0].childNodes.length === 1 && node.childNodes[0].childNodes[0] instanceof import_node_html_parser22.HTMLElement && node.childNodes[0].childNodes[0].tagName === "IMG") {
2159
+ if (node.childNodes.length === 1 && node.childNodes[0] instanceof import_node_html_parser23.HTMLElement && node.childNodes[0].tagName === "SPAN" && node.childNodes[0].childNodes.length === 1 && node.childNodes[0].childNodes[0] instanceof import_node_html_parser23.HTMLElement && node.childNodes[0].childNodes[0].tagName === "IMG") {
2136
2160
  return traverse2(node.childNodes[0].childNodes[0]);
2137
2161
  }
2138
2162
  return null;
2139
2163
  }
2140
2164
  processNode(node) {
2141
- if (!(node instanceof import_node_html_parser22.HTMLElement)) return null;
2165
+ if (!(node instanceof import_node_html_parser23.HTMLElement)) return null;
2142
2166
  if (node.tagName !== "P") return null;
2143
2167
  const imageNode = this.processImageNode(node) ?? this.processSpanImageNode(node);
2144
2168
  if (imageNode) return imageNode;
2145
2169
  const jsonNode = createEmptyParagraphNode();
2146
2170
  jsonNode.format = extractTextAlignment(node);
2147
- if (node.childNodes.length === 1 && node.childNodes[0] instanceof import_node_html_parser22.HTMLElement && node.childNodes[0].tagName === "BR")
2171
+ if (node.childNodes.length === 1 && node.childNodes[0] instanceof import_node_html_parser23.HTMLElement && node.childNodes[0].tagName === "BR")
2148
2172
  return jsonNode;
2149
2173
  node.childNodes.forEach((child) => {
2150
2174
  const processedChildren = traverse2(child);
@@ -2156,10 +2180,10 @@ var ParagraphNodeHandler2 = class extends NodeHandler2 {
2156
2180
 
2157
2181
  // src/importFromHtml/ShortAnswerQuestionNodeHandler.ts
2158
2182
  var import_nanoid9 = require("nanoid");
2159
- var import_node_html_parser23 = require("node-html-parser");
2183
+ var import_node_html_parser24 = require("node-html-parser");
2160
2184
  var ShortAnswerQuestionNodeHandler2 = class extends NodeHandler2 {
2161
2185
  processNode(node) {
2162
- if (!(node instanceof import_node_html_parser23.HTMLElement) || node.tagName !== "x-short-answer".toUpperCase())
2186
+ if (!(node instanceof import_node_html_parser24.HTMLElement) || node.tagName !== "x-short-answer".toUpperCase())
2163
2187
  return null;
2164
2188
  return {
2165
2189
  id: node.getAttribute("id") ?? (0, import_nanoid9.nanoid)(),
@@ -2175,7 +2199,7 @@ var ShortAnswerQuestionNodeHandler2 = class extends NodeHandler2 {
2175
2199
  };
2176
2200
 
2177
2201
  // src/importFromHtml/SimulationQuestionNodeHandler.ts
2178
- var import_node_html_parser24 = require("node-html-parser");
2202
+ var import_node_html_parser25 = require("node-html-parser");
2179
2203
  var TAG_X_SIMULATION = "x-simulation";
2180
2204
  var TAG_X_SYSTEM_MESSAGE2 = "x-ai-system-message";
2181
2205
  var TAG_X_COMMENT_INSTRUCTIONS = "x-comment-instructions";
@@ -2183,7 +2207,7 @@ var TAG_X_STEP2_INSTRUCTIONS = "x-step2-instructions";
2183
2207
  var findFirstNonEmptyInnerHtml = (root, elementNames) => elementNames.map((name) => root.querySelector(name)).find((el) => el?.innerHTML.trim().length)?.innerHTML.trim() ?? null;
2184
2208
  var SimulationQuestionNodeHandler2 = class extends NodeHandler2 {
2185
2209
  processNode(node) {
2186
- if (!(node instanceof import_node_html_parser24.HTMLElement) || node.tagName !== TAG_X_SIMULATION.toUpperCase()) {
2210
+ if (!(node instanceof import_node_html_parser25.HTMLElement) || node.tagName !== TAG_X_SIMULATION.toUpperCase()) {
2187
2211
  return null;
2188
2212
  }
2189
2213
  const jsonNode = {
@@ -2204,11 +2228,11 @@ var SimulationQuestionNodeHandler2 = class extends NodeHandler2 {
2204
2228
  };
2205
2229
 
2206
2230
  // src/importFromHtml/SpanNodeHandler.ts
2207
- var import_node_html_parser25 = require("node-html-parser");
2208
- var TextNode = import_node_html_parser25.parse.TextNode;
2231
+ var import_node_html_parser26 = require("node-html-parser");
2232
+ var TextNode = import_node_html_parser26.parse.TextNode;
2209
2233
  var SpanNodeHandler = class extends NodeHandler2 {
2210
2234
  processNode(node) {
2211
- if (!(node instanceof import_node_html_parser25.HTMLElement) || node.tagName !== "SPAN")
2235
+ if (!(node instanceof import_node_html_parser26.HTMLElement) || node.tagName !== "SPAN")
2212
2236
  return null;
2213
2237
  const styleAttr = node.getAttribute("style") || "";
2214
2238
  if (node.childNodes.length === 1 && node.childNodes[0] instanceof TextNode) {
@@ -2270,7 +2294,7 @@ var SpanNodeHandler = class extends NodeHandler2 {
2270
2294
  };
2271
2295
 
2272
2296
  // src/importFromHtml/TableCellNodeHandler.ts
2273
- var import_node_html_parser26 = require("node-html-parser");
2297
+ var import_node_html_parser27 = require("node-html-parser");
2274
2298
 
2275
2299
  // src/importFromHtml/createTableNodes.ts
2276
2300
  function createEmptyTableNode() {
@@ -2307,7 +2331,7 @@ function createEmptyTableCellNode(isHeader = false) {
2307
2331
 
2308
2332
  // src/importFromHtml/TableCellNodeHandler.ts
2309
2333
  var isHtmlTableCellElement = (node) => {
2310
- return node instanceof import_node_html_parser26.HTMLElement && (node.tagName === "TD" || node.tagName === "TH");
2334
+ return node instanceof import_node_html_parser27.HTMLElement && (node.tagName === "TD" || node.tagName === "TH");
2311
2335
  };
2312
2336
  var TableCellNodeHandler2 = class extends NodeHandler2 {
2313
2337
  processNode(node) {
@@ -2352,10 +2376,10 @@ var TableCellNodeHandler2 = class extends NodeHandler2 {
2352
2376
  };
2353
2377
 
2354
2378
  // src/importFromHtml/TableNodeHandler.ts
2355
- var import_node_html_parser27 = require("node-html-parser");
2379
+ var import_node_html_parser28 = require("node-html-parser");
2356
2380
  var REFERENCE_TABLE_WIDTH = 720;
2357
2381
  var MINIMUM_REFERENCE_TABLE_WIDTH = 500;
2358
- var isHtmlTableElement = (node) => node instanceof import_node_html_parser27.HTMLElement && node.tagName === "TABLE";
2382
+ var isHtmlTableElement = (node) => node instanceof import_node_html_parser28.HTMLElement && node.tagName === "TABLE";
2359
2383
  var TableNodeHandler2 = class extends NodeHandler2 {
2360
2384
  processNode(node) {
2361
2385
  if (!isHtmlTableElement(node)) return null;
@@ -2510,9 +2534,9 @@ var TableNodeHandler2 = class extends NodeHandler2 {
2510
2534
  };
2511
2535
 
2512
2536
  // src/importFromHtml/TableRowNodeHandler.ts
2513
- var import_node_html_parser28 = require("node-html-parser");
2537
+ var import_node_html_parser29 = require("node-html-parser");
2514
2538
  var isHtmlTableRowElement = (node) => {
2515
- return node instanceof import_node_html_parser28.HTMLElement && node.tagName === "TR";
2539
+ return node instanceof import_node_html_parser29.HTMLElement && node.tagName === "TR";
2516
2540
  };
2517
2541
  var TableRowNodeHandler2 = class extends NodeHandler2 {
2518
2542
  processNode(node) {
@@ -2535,8 +2559,8 @@ var TableRowNodeHandler2 = class extends NodeHandler2 {
2535
2559
  };
2536
2560
 
2537
2561
  // src/importFromHtml/TextNodeHandler.ts
2538
- var import_node_html_parser29 = require("node-html-parser");
2539
- var TextNode2 = import_node_html_parser29.parse.TextNode;
2562
+ var import_node_html_parser30 = require("node-html-parser");
2563
+ var TextNode2 = import_node_html_parser30.parse.TextNode;
2540
2564
  var TextNodeHandler2 = class extends NodeHandler2 {
2541
2565
  processNode(node) {
2542
2566
  if (!(node instanceof TextNode2)) return null;
@@ -2555,10 +2579,10 @@ var TextNodeHandler2 = class extends NodeHandler2 {
2555
2579
  };
2556
2580
 
2557
2581
  // src/importFromHtml/VariableNodeHandler.ts
2558
- var import_node_html_parser30 = require("node-html-parser");
2582
+ var import_node_html_parser31 = require("node-html-parser");
2559
2583
  var VariableNodeHandler2 = class extends NodeHandler2 {
2560
2584
  processNode(node) {
2561
- if (!(node instanceof import_node_html_parser30.HTMLElement) || !node.tagName) return null;
2585
+ if (!(node instanceof import_node_html_parser31.HTMLElement) || !node.tagName) return null;
2562
2586
  if (node.tagName !== "x-param".toUpperCase()) return null;
2563
2587
  return {
2564
2588
  variableName: node.getAttribute("data-x-name") || "undefined",
@@ -2571,7 +2595,7 @@ var VariableNodeHandler2 = class extends NodeHandler2 {
2571
2595
 
2572
2596
  // src/importFromHtml/traverse.ts
2573
2597
  var builder2 = new NodeHandlerChainBuilder();
2574
- 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();
2598
+ var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelCopyTextNodeHandler2).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();
2575
2599
  function traverse2(node) {
2576
2600
  const result = nodeHandlerChain2.handle(node);
2577
2601
  if (result === null) return [];
@@ -2589,7 +2613,7 @@ function processChildren(node) {
2589
2613
  return result;
2590
2614
  }
2591
2615
  function processHtml(html) {
2592
- const root = (0, import_node_html_parser31.parse)(html);
2616
+ const root = (0, import_node_html_parser32.parse)(html);
2593
2617
  return processChildren(root);
2594
2618
  }
2595
2619
  function importFromHtml(html) {
package/dist/index.mjs CHANGED
@@ -1341,6 +1341,30 @@ var EssayQuestionNodeHandler2 = class extends NodeHandler2 {
1341
1341
  }
1342
1342
  };
1343
1343
 
1344
+ // src/importFromHtml/ExcelCopyTextNodeHandler.ts
1345
+ import { HTMLElement as HTMLElement5 } from "node-html-parser";
1346
+ var ExcelCopyTextNodeHandler2 = class extends NodeHandler2 {
1347
+ isXCopyElement(node) {
1348
+ return node instanceof HTMLElement5 && node.tagName === "X-COPY";
1349
+ }
1350
+ processNode(node) {
1351
+ if (!this.isXCopyElement(node)) return null;
1352
+ const children = [];
1353
+ for (const childNode of node.childNodes) {
1354
+ const processedChildren = traverse2(childNode);
1355
+ children.push(...processedChildren);
1356
+ }
1357
+ return {
1358
+ children,
1359
+ direction: null,
1360
+ format: "",
1361
+ indent: 0,
1362
+ type: "excel-copy-text",
1363
+ version: 1
1364
+ };
1365
+ }
1366
+ };
1367
+
1344
1368
  // src/importFromHtml/createNestedEditorFromHtml.ts
1345
1369
  function createNestedEditorFromHtml(node) {
1346
1370
  return {
@@ -1358,7 +1382,7 @@ function createNestedEditorFromHtml(node) {
1358
1382
  }
1359
1383
 
1360
1384
  // src/importFromHtml/ExcelQuestionNodeHandler.ts
1361
- import { HTMLElement as HTMLElement5, parse } from "node-html-parser";
1385
+ import { HTMLElement as HTMLElement6, parse } from "node-html-parser";
1362
1386
  var TAG_X = "x-excel";
1363
1387
  function parseData(xDataString) {
1364
1388
  const xData = JSON.parse(xDataString);
@@ -1404,7 +1428,7 @@ function parseData(xDataString) {
1404
1428
  }
1405
1429
  var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
1406
1430
  processNode(node) {
1407
- if (!(node instanceof HTMLElement5) || node.tagName !== TAG_X.toUpperCase()) {
1431
+ if (!(node instanceof HTMLElement6) || node.tagName !== TAG_X.toUpperCase()) {
1408
1432
  return null;
1409
1433
  }
1410
1434
  const xDataElement = node.querySelector("x-data");
@@ -1428,11 +1452,11 @@ var ExcelQuestionNodeHandler2 = class extends NodeHandler2 {
1428
1452
  };
1429
1453
 
1430
1454
  // src/importFromHtml/ExcelWorksheetLinkNodeHandler.ts
1431
- import { HTMLElement as HTMLElement6 } from "node-html-parser";
1455
+ import { HTMLElement as HTMLElement7 } from "node-html-parser";
1432
1456
  var TAG = "x-worksheet-link";
1433
1457
  var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
1434
1458
  processNode(node) {
1435
- if (!(node instanceof HTMLElement6) || node.tagName !== TAG.toUpperCase()) {
1459
+ if (!(node instanceof HTMLElement7) || node.tagName !== TAG.toUpperCase()) {
1436
1460
  return null;
1437
1461
  }
1438
1462
  const sheetName = node.getAttribute("x-data-name") || "";
@@ -1452,10 +1476,10 @@ var ExcelWorksheetLinkNodeHandler2 = class extends NodeHandler2 {
1452
1476
 
1453
1477
  // src/importFromHtml/FillInTheBlankQuestionNodeHandler.ts
1454
1478
  import { nanoid as nanoid2 } from "nanoid";
1455
- import { HTMLElement as HTMLElement7 } from "node-html-parser";
1479
+ import { HTMLElement as HTMLElement8 } from "node-html-parser";
1456
1480
  var FillInTheBlankQuestionNodeHandler2 = class extends NodeHandler2 {
1457
1481
  processNode(node) {
1458
- if (!(node instanceof HTMLElement7) || node.tagName !== "x-fill-in-the-blank".toUpperCase())
1482
+ if (!(node instanceof HTMLElement8) || node.tagName !== "x-fill-in-the-blank".toUpperCase())
1459
1483
  return null;
1460
1484
  const jsonNode = {
1461
1485
  id: node.getAttribute("id") ?? nanoid2(),
@@ -1472,7 +1496,7 @@ var FillInTheBlankQuestionNodeHandler2 = class extends NodeHandler2 {
1472
1496
 
1473
1497
  // src/importFromHtml/FillInTheBlankSpaceNodeHandler.ts
1474
1498
  import { nanoid as nanoid3 } from "nanoid";
1475
- import { HTMLElement as HTMLElement8 } from "node-html-parser";
1499
+ import { HTMLElement as HTMLElement9 } from "node-html-parser";
1476
1500
 
1477
1501
  // src/importFromHtml/parseErrorToleranceAttribute.ts
1478
1502
  function parseErrorToleranceAttribute(attr) {
@@ -1484,7 +1508,7 @@ function parseErrorToleranceAttribute(attr) {
1484
1508
  // src/importFromHtml/FillInTheBlankSpaceNodeHandler.ts
1485
1509
  var FillInTheBlankSpaceNodeHandler2 = class extends NodeHandler2 {
1486
1510
  processNode(node) {
1487
- if (!(node instanceof HTMLElement8) || node.tagName !== "x-space".toUpperCase())
1511
+ if (!(node instanceof HTMLElement9) || node.tagName !== "x-space".toUpperCase())
1488
1512
  return null;
1489
1513
  const spaceTypeAttr = node.getAttribute("data-x-type");
1490
1514
  const spaceType = spaceTypeAttr === "Text" || spaceTypeAttr === "Number" || spaceTypeAttr === "Dropdown" ? spaceTypeAttr : "Text";
@@ -1535,7 +1559,7 @@ var FillInTheBlankSpaceNodeHandler2 = class extends NodeHandler2 {
1535
1559
 
1536
1560
  // src/importFromHtml/FinancialStatementQuestionNodeHandler.ts
1537
1561
  import { nanoid as nanoid4 } from "nanoid";
1538
- import { HTMLElement as HTMLElement9 } from "node-html-parser";
1562
+ import { HTMLElement as HTMLElement10 } from "node-html-parser";
1539
1563
  var TAG_X_FINANCIAL_STATEMENT = "x-financial-statement";
1540
1564
  var TAG_X_HEADER = "x-header";
1541
1565
  var TAG_X_ROWS = "x-rows";
@@ -1549,7 +1573,7 @@ var isLineRole = (value) => value === "line-item" || value === "subtotal" || val
1549
1573
  var parseLineRole = (value) => isLineRole(value) ? value : null;
1550
1574
  var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1551
1575
  processNode(node) {
1552
- if (!(node instanceof HTMLElement9) || node.tagName !== TAG_X_FINANCIAL_STATEMENT.toUpperCase()) {
1576
+ if (!(node instanceof HTMLElement10) || node.tagName !== TAG_X_FINANCIAL_STATEMENT.toUpperCase()) {
1553
1577
  return null;
1554
1578
  }
1555
1579
  const headerElement = node.querySelector(TAG_X_HEADER);
@@ -1564,7 +1588,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1564
1588
  version: 1
1565
1589
  };
1566
1590
  node.childNodes.forEach((child) => {
1567
- if (!(child instanceof HTMLElement9)) return;
1591
+ if (!(child instanceof HTMLElement10)) return;
1568
1592
  if (child.tagName === TAG_X_DISTRACTORS.toUpperCase()) {
1569
1593
  this.processDistractorsNode(child, jsonNode);
1570
1594
  } else if (child.tagName === TAG_X_ROWS.toUpperCase()) {
@@ -1575,7 +1599,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1575
1599
  }
1576
1600
  processDistractorsNode(distractorsNode, jsonNode) {
1577
1601
  for (const distractorsChild of distractorsNode.childNodes) {
1578
- if (!(distractorsChild instanceof HTMLElement9)) continue;
1602
+ if (!(distractorsChild instanceof HTMLElement10)) continue;
1579
1603
  if (distractorsChild.tagName !== TAG_X_DISTRACTOR.toUpperCase())
1580
1604
  continue;
1581
1605
  jsonNode.distractors.push({
@@ -1594,7 +1618,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1594
1618
  const contentDiv = headerElement.querySelector(
1595
1619
  'div > div:not([style*="display:flex"])'
1596
1620
  );
1597
- if (contentDiv && contentDiv instanceof HTMLElement9)
1621
+ if (contentDiv && contentDiv instanceof HTMLElement10)
1598
1622
  return createNestedEditorFromHtml(contentDiv);
1599
1623
  }
1600
1624
  return createNestedEditorFromHtml(headerElement);
@@ -1611,7 +1635,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1611
1635
  }
1612
1636
  processRowsNode(rowsNode, jsonNode) {
1613
1637
  for (const rowsChild of rowsNode.childNodes) {
1614
- if (!(rowsChild instanceof HTMLElement9)) continue;
1638
+ if (!(rowsChild instanceof HTMLElement10)) continue;
1615
1639
  if (rowsChild.tagName === TAG_X_HEADING.toUpperCase()) {
1616
1640
  this.processHeadingRow(rowsChild, jsonNode);
1617
1641
  } else if (rowsChild.tagName === TAG_X_LINE.toUpperCase()) {
@@ -1647,7 +1671,7 @@ var FinancialStatementQuestionNodeHandler2 = class extends NodeHandler2 {
1647
1671
  };
1648
1672
 
1649
1673
  // src/importFromHtml/FormattedNodeHandler.ts
1650
- import { HTMLElement as HTMLElement10 } from "node-html-parser";
1674
+ import { HTMLElement as HTMLElement11 } from "node-html-parser";
1651
1675
  var IS_BOLD2 = 1;
1652
1676
  var IS_ITALIC2 = 1 << 1;
1653
1677
  var IS_STRIKETHROUGH2 = 1 << 2;
@@ -1687,7 +1711,7 @@ function formatToProps(format) {
1687
1711
  }
1688
1712
  var FormattedNodeHandler = class extends NodeHandler2 {
1689
1713
  processNode(node) {
1690
- if (!(node instanceof HTMLElement10)) return null;
1714
+ if (!(node instanceof HTMLElement11)) return null;
1691
1715
  const tagName = node.tagName;
1692
1716
  if (!tagName || !(tagName in TAG_TO_FORMAT)) return null;
1693
1717
  const formatFlag = TAG_TO_FORMAT[tagName];
@@ -1722,7 +1746,7 @@ var FormattedNodeHandler = class extends NodeHandler2 {
1722
1746
  };
1723
1747
 
1724
1748
  // src/importFromHtml/HeadingNodeHandler.ts
1725
- import { HTMLElement as HTMLElement11 } from "node-html-parser";
1749
+ import { HTMLElement as HTMLElement12 } from "node-html-parser";
1726
1750
 
1727
1751
  // src/importFromHtml/extractTextAlignment.ts
1728
1752
  var TEXT_ALIGN_TO_FORMAT = {
@@ -1750,7 +1774,7 @@ function extractTextAlignment(element) {
1750
1774
  var TAG_HEADINGS = ["h1", "h2", "h3", "h4", "h5", "h6"];
1751
1775
  var HeadingNodeHandler2 = class extends NodeHandler2 {
1752
1776
  processNode(node) {
1753
- if (!(node instanceof HTMLElement11) || !TAG_HEADINGS.includes(node.tagName.toLowerCase())) {
1777
+ if (!(node instanceof HTMLElement12) || !TAG_HEADINGS.includes(node.tagName.toLowerCase())) {
1754
1778
  return null;
1755
1779
  }
1756
1780
  const headingNode = {
@@ -1771,11 +1795,11 @@ var HeadingNodeHandler2 = class extends NodeHandler2 {
1771
1795
  };
1772
1796
 
1773
1797
  // src/importFromHtml/HorizontalRuleNodeHandler.ts
1774
- import { HTMLElement as HTMLElement12 } from "node-html-parser";
1798
+ import { HTMLElement as HTMLElement13 } from "node-html-parser";
1775
1799
  var TAG_HR = "hr";
1776
1800
  var HorizontalRuleNodeHandler2 = class extends NodeHandler2 {
1777
1801
  processNode(node) {
1778
- if (!(node instanceof HTMLElement12) || node.tagName !== TAG_HR.toUpperCase()) {
1802
+ if (!(node instanceof HTMLElement13) || node.tagName !== TAG_HR.toUpperCase()) {
1779
1803
  return null;
1780
1804
  }
1781
1805
  const horizontalRuleNode = {
@@ -1787,11 +1811,11 @@ var HorizontalRuleNodeHandler2 = class extends NodeHandler2 {
1787
1811
  };
1788
1812
 
1789
1813
  // src/importFromHtml/ImageNodeHandler.ts
1790
- import { HTMLElement as HTMLElement13 } from "node-html-parser";
1814
+ import { HTMLElement as HTMLElement14 } from "node-html-parser";
1791
1815
  var TAG_IMG = "img";
1792
1816
  var ImageNodeHandler2 = class extends NodeHandler2 {
1793
1817
  processNode(node) {
1794
- if (!(node instanceof HTMLElement13) || node.tagName !== TAG_IMG.toUpperCase()) {
1818
+ if (!(node instanceof HTMLElement14) || node.tagName !== TAG_IMG.toUpperCase()) {
1795
1819
  return null;
1796
1820
  }
1797
1821
  return createImageNode(
@@ -1807,11 +1831,11 @@ var ImageNodeHandler2 = class extends NodeHandler2 {
1807
1831
 
1808
1832
  // src/importFromHtml/JournalEntryQuestionNodeHandler.ts
1809
1833
  import { nanoid as nanoid6 } from "nanoid";
1810
- import { HTMLElement as HTMLElement15 } from "node-html-parser";
1834
+ import { HTMLElement as HTMLElement16 } from "node-html-parser";
1811
1835
 
1812
1836
  // src/importFromHtml/createOnePerLineDistractorNode.ts
1813
1837
  import { nanoid as nanoid5 } from "nanoid";
1814
- import { HTMLElement as HTMLElement14 } from "node-html-parser";
1838
+ import { HTMLElement as HTMLElement15 } from "node-html-parser";
1815
1839
  function extractDistractorId(id) {
1816
1840
  if (!id) return null;
1817
1841
  const parts = id.split("|");
@@ -1824,7 +1848,7 @@ var createOnePerLineDistractorNode = (node) => {
1824
1848
  distractorEditor.editorState.root.children = [];
1825
1849
  let distractorId = null;
1826
1850
  distractors.forEach((distractor) => {
1827
- if (!(distractor instanceof HTMLElement14)) return;
1851
+ if (!(distractor instanceof HTMLElement15)) return;
1828
1852
  distractorId = distractorId ?? extractDistractorId(distractor.getAttribute("id"));
1829
1853
  distractorEditor.editorState.root.children.push(
1830
1854
  ...createNestedNodesFromHtml(distractor)
@@ -1842,7 +1866,7 @@ var createOnePerLineDistractorNode = (node) => {
1842
1866
  // src/importFromHtml/JournalEntryQuestionNodeHandler.ts
1843
1867
  var JournalEntryQuestionNodeHandler2 = class extends NodeHandler2 {
1844
1868
  processNode(node) {
1845
- if (!(node instanceof HTMLElement15) || node.tagName !== "x-journal-entry".toUpperCase())
1869
+ if (!(node instanceof HTMLElement16) || node.tagName !== "x-journal-entry".toUpperCase())
1846
1870
  return null;
1847
1871
  const jsonNode = {
1848
1872
  id: node.getAttribute("id") ?? nanoid6(),
@@ -1857,7 +1881,7 @@ var JournalEntryQuestionNodeHandler2 = class extends NodeHandler2 {
1857
1881
  };
1858
1882
  const lineItems = node.querySelectorAll("x-line-item");
1859
1883
  lineItems.forEach((lineItem) => {
1860
- if (!(lineItem instanceof HTMLElement15)) return;
1884
+ if (!(lineItem instanceof HTMLElement16)) return;
1861
1885
  const accountElement = lineItem.querySelector("x-account");
1862
1886
  const debitElement = lineItem.querySelector("x-debit");
1863
1887
  const creditElement = lineItem.querySelector("x-credit");
@@ -1886,10 +1910,10 @@ var JournalEntryQuestionNodeHandler2 = class extends NodeHandler2 {
1886
1910
  };
1887
1911
 
1888
1912
  // src/importFromHtml/LineBreakNodeHandler.ts
1889
- import { HTMLElement as HTMLElement16 } from "node-html-parser";
1913
+ import { HTMLElement as HTMLElement17 } from "node-html-parser";
1890
1914
  var LineBreakNodeHandler2 = class extends NodeHandler2 {
1891
1915
  processNode(node) {
1892
- if (!(node instanceof HTMLElement16)) return null;
1916
+ if (!(node instanceof HTMLElement17)) return null;
1893
1917
  if (node.tagName !== "BR") return null;
1894
1918
  return {
1895
1919
  type: "linebreak",
@@ -1899,11 +1923,11 @@ var LineBreakNodeHandler2 = class extends NodeHandler2 {
1899
1923
  };
1900
1924
 
1901
1925
  // src/importFromHtml/LinkNodeHandler.ts
1902
- import { HTMLElement as HTMLElement17 } from "node-html-parser";
1926
+ import { HTMLElement as HTMLElement18 } from "node-html-parser";
1903
1927
  var TAG_A = "a";
1904
1928
  var LinkNodeHandler2 = class extends NodeHandler2 {
1905
1929
  processNode(node) {
1906
- if (!(node instanceof HTMLElement17) || node.tagName !== TAG_A.toUpperCase()) {
1930
+ if (!(node instanceof HTMLElement18) || node.tagName !== TAG_A.toUpperCase()) {
1907
1931
  return null;
1908
1932
  }
1909
1933
  const url = node.getAttribute("href") || "";
@@ -1932,10 +1956,10 @@ var LinkNodeHandler2 = class extends NodeHandler2 {
1932
1956
  };
1933
1957
 
1934
1958
  // src/importFromHtml/ListItemNodeHandler.ts
1935
- import { HTMLElement as HTMLElement18 } from "node-html-parser";
1959
+ import { HTMLElement as HTMLElement19 } from "node-html-parser";
1936
1960
  var ListItemNodeHandler2 = class extends NodeHandler2 {
1937
1961
  processNode(node) {
1938
- if (!(node instanceof HTMLElement18)) return null;
1962
+ if (!(node instanceof HTMLElement19)) return null;
1939
1963
  if (node.tagName !== "LI") return null;
1940
1964
  const jsonNode = {
1941
1965
  type: "listitem",
@@ -1956,10 +1980,10 @@ var ListItemNodeHandler2 = class extends NodeHandler2 {
1956
1980
  };
1957
1981
 
1958
1982
  // src/importFromHtml/ListNodeHandler.ts
1959
- import { HTMLElement as HTMLElement19 } from "node-html-parser";
1983
+ import { HTMLElement as HTMLElement20 } from "node-html-parser";
1960
1984
  var ListNodeHandler2 = class extends NodeHandler2 {
1961
1985
  processNode(node) {
1962
- if (!(node instanceof HTMLElement19)) return null;
1986
+ if (!(node instanceof HTMLElement20)) return null;
1963
1987
  if (node.tagName !== "UL" && node.tagName !== "OL") return null;
1964
1988
  const tag = node.tagName.toLowerCase();
1965
1989
  const listType = tag === "ol" ? "number" : "bullet";
@@ -1977,7 +2001,7 @@ var ListNodeHandler2 = class extends NodeHandler2 {
1977
2001
  };
1978
2002
  let itemIndex = 1;
1979
2003
  node.childNodes.forEach((child) => {
1980
- if (child instanceof HTMLElement19 && child.tagName === "LI") {
2004
+ if (child instanceof HTMLElement20 && child.tagName === "LI") {
1981
2005
  const listItemNode = {
1982
2006
  type: "listitem",
1983
2007
  version: 1,
@@ -2002,10 +2026,10 @@ var ListNodeHandler2 = class extends NodeHandler2 {
2002
2026
 
2003
2027
  // src/importFromHtml/MatchingQuestionNodeHandler.ts
2004
2028
  import { nanoid as nanoid7 } from "nanoid";
2005
- import { HTMLElement as HTMLElement20 } from "node-html-parser";
2029
+ import { HTMLElement as HTMLElement21 } from "node-html-parser";
2006
2030
  var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
2007
2031
  processNode(node) {
2008
- if (!(node instanceof HTMLElement20) || node.tagName !== "x-matching".toUpperCase())
2032
+ if (!(node instanceof HTMLElement21) || node.tagName !== "x-matching".toUpperCase())
2009
2033
  return null;
2010
2034
  const jsonNode = {
2011
2035
  id: node.getAttribute("id") ?? nanoid7(),
@@ -2018,7 +2042,7 @@ var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
2018
2042
  };
2019
2043
  const matches = node.querySelectorAll("x-match");
2020
2044
  matches.forEach((match) => {
2021
- if (!(match instanceof HTMLElement20)) return;
2045
+ if (!(match instanceof HTMLElement21)) return;
2022
2046
  const premise = match.querySelector("x-premise");
2023
2047
  const option = match.querySelector("x-option");
2024
2048
  if (!premise || !option) return;
@@ -2041,10 +2065,10 @@ var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
2041
2065
 
2042
2066
  // src/importFromHtml/MultipleOptionQuestionNodeHandler.ts
2043
2067
  import { nanoid as nanoid8 } from "nanoid";
2044
- import { HTMLElement as HTMLElement21 } from "node-html-parser";
2068
+ import { HTMLElement as HTMLElement22 } from "node-html-parser";
2045
2069
  var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
2046
2070
  processNode(node) {
2047
- if (!(node instanceof HTMLElement21)) return null;
2071
+ if (!(node instanceof HTMLElement22)) return null;
2048
2072
  if (node.tagName === "x-multiple-choice".toUpperCase())
2049
2073
  return this.processMultipleChoiceNode(node);
2050
2074
  else if (node.tagName === "x-multiple-answers".toUpperCase())
@@ -2084,7 +2108,7 @@ var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
2084
2108
  processOptions(node, jsonNode) {
2085
2109
  const childNodes = node.childNodes;
2086
2110
  childNodes.forEach((child) => {
2087
- if (!(child instanceof HTMLElement21)) return;
2111
+ if (!(child instanceof HTMLElement22)) return;
2088
2112
  if (child.tagName !== "x-option".toUpperCase()) return;
2089
2113
  jsonNode.options.push({
2090
2114
  id: child.getAttribute("id") ?? nanoid8(),
@@ -2096,28 +2120,28 @@ var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
2096
2120
  };
2097
2121
 
2098
2122
  // src/importFromHtml/ParagraphNodeHandler.ts
2099
- import { HTMLElement as HTMLElement22 } from "node-html-parser";
2123
+ import { HTMLElement as HTMLElement23 } from "node-html-parser";
2100
2124
  var ParagraphNodeHandler2 = class extends NodeHandler2 {
2101
2125
  processImageNode(node) {
2102
- if (node.childNodes.length === 1 && node.childNodes[0] instanceof HTMLElement22 && node.childNodes[0].tagName === "IMG") {
2126
+ if (node.childNodes.length === 1 && node.childNodes[0] instanceof HTMLElement23 && node.childNodes[0].tagName === "IMG") {
2103
2127
  return traverse2(node.childNodes[0]);
2104
2128
  }
2105
2129
  return null;
2106
2130
  }
2107
2131
  processSpanImageNode(node) {
2108
- if (node.childNodes.length === 1 && node.childNodes[0] instanceof HTMLElement22 && node.childNodes[0].tagName === "SPAN" && node.childNodes[0].childNodes.length === 1 && node.childNodes[0].childNodes[0] instanceof HTMLElement22 && node.childNodes[0].childNodes[0].tagName === "IMG") {
2132
+ if (node.childNodes.length === 1 && node.childNodes[0] instanceof HTMLElement23 && node.childNodes[0].tagName === "SPAN" && node.childNodes[0].childNodes.length === 1 && node.childNodes[0].childNodes[0] instanceof HTMLElement23 && node.childNodes[0].childNodes[0].tagName === "IMG") {
2109
2133
  return traverse2(node.childNodes[0].childNodes[0]);
2110
2134
  }
2111
2135
  return null;
2112
2136
  }
2113
2137
  processNode(node) {
2114
- if (!(node instanceof HTMLElement22)) return null;
2138
+ if (!(node instanceof HTMLElement23)) return null;
2115
2139
  if (node.tagName !== "P") return null;
2116
2140
  const imageNode = this.processImageNode(node) ?? this.processSpanImageNode(node);
2117
2141
  if (imageNode) return imageNode;
2118
2142
  const jsonNode = createEmptyParagraphNode();
2119
2143
  jsonNode.format = extractTextAlignment(node);
2120
- if (node.childNodes.length === 1 && node.childNodes[0] instanceof HTMLElement22 && node.childNodes[0].tagName === "BR")
2144
+ if (node.childNodes.length === 1 && node.childNodes[0] instanceof HTMLElement23 && node.childNodes[0].tagName === "BR")
2121
2145
  return jsonNode;
2122
2146
  node.childNodes.forEach((child) => {
2123
2147
  const processedChildren = traverse2(child);
@@ -2129,10 +2153,10 @@ var ParagraphNodeHandler2 = class extends NodeHandler2 {
2129
2153
 
2130
2154
  // src/importFromHtml/ShortAnswerQuestionNodeHandler.ts
2131
2155
  import { nanoid as nanoid9 } from "nanoid";
2132
- import { HTMLElement as HTMLElement23 } from "node-html-parser";
2156
+ import { HTMLElement as HTMLElement24 } from "node-html-parser";
2133
2157
  var ShortAnswerQuestionNodeHandler2 = class extends NodeHandler2 {
2134
2158
  processNode(node) {
2135
- if (!(node instanceof HTMLElement23) || node.tagName !== "x-short-answer".toUpperCase())
2159
+ if (!(node instanceof HTMLElement24) || node.tagName !== "x-short-answer".toUpperCase())
2136
2160
  return null;
2137
2161
  return {
2138
2162
  id: node.getAttribute("id") ?? nanoid9(),
@@ -2148,7 +2172,7 @@ var ShortAnswerQuestionNodeHandler2 = class extends NodeHandler2 {
2148
2172
  };
2149
2173
 
2150
2174
  // src/importFromHtml/SimulationQuestionNodeHandler.ts
2151
- import { HTMLElement as HTMLElement24 } from "node-html-parser";
2175
+ import { HTMLElement as HTMLElement25 } from "node-html-parser";
2152
2176
  var TAG_X_SIMULATION = "x-simulation";
2153
2177
  var TAG_X_SYSTEM_MESSAGE2 = "x-ai-system-message";
2154
2178
  var TAG_X_COMMENT_INSTRUCTIONS = "x-comment-instructions";
@@ -2156,7 +2180,7 @@ var TAG_X_STEP2_INSTRUCTIONS = "x-step2-instructions";
2156
2180
  var findFirstNonEmptyInnerHtml = (root, elementNames) => elementNames.map((name) => root.querySelector(name)).find((el) => el?.innerHTML.trim().length)?.innerHTML.trim() ?? null;
2157
2181
  var SimulationQuestionNodeHandler2 = class extends NodeHandler2 {
2158
2182
  processNode(node) {
2159
- if (!(node instanceof HTMLElement24) || node.tagName !== TAG_X_SIMULATION.toUpperCase()) {
2183
+ if (!(node instanceof HTMLElement25) || node.tagName !== TAG_X_SIMULATION.toUpperCase()) {
2160
2184
  return null;
2161
2185
  }
2162
2186
  const jsonNode = {
@@ -2177,11 +2201,11 @@ var SimulationQuestionNodeHandler2 = class extends NodeHandler2 {
2177
2201
  };
2178
2202
 
2179
2203
  // src/importFromHtml/SpanNodeHandler.ts
2180
- import { HTMLElement as HTMLElement25, parse as parse2 } from "node-html-parser";
2204
+ import { HTMLElement as HTMLElement26, parse as parse2 } from "node-html-parser";
2181
2205
  var TextNode = parse2.TextNode;
2182
2206
  var SpanNodeHandler = class extends NodeHandler2 {
2183
2207
  processNode(node) {
2184
- if (!(node instanceof HTMLElement25) || node.tagName !== "SPAN")
2208
+ if (!(node instanceof HTMLElement26) || node.tagName !== "SPAN")
2185
2209
  return null;
2186
2210
  const styleAttr = node.getAttribute("style") || "";
2187
2211
  if (node.childNodes.length === 1 && node.childNodes[0] instanceof TextNode) {
@@ -2243,7 +2267,7 @@ var SpanNodeHandler = class extends NodeHandler2 {
2243
2267
  };
2244
2268
 
2245
2269
  // src/importFromHtml/TableCellNodeHandler.ts
2246
- import { HTMLElement as HTMLElement26 } from "node-html-parser";
2270
+ import { HTMLElement as HTMLElement27 } from "node-html-parser";
2247
2271
 
2248
2272
  // src/importFromHtml/createTableNodes.ts
2249
2273
  function createEmptyTableNode() {
@@ -2280,7 +2304,7 @@ function createEmptyTableCellNode(isHeader = false) {
2280
2304
 
2281
2305
  // src/importFromHtml/TableCellNodeHandler.ts
2282
2306
  var isHtmlTableCellElement = (node) => {
2283
- return node instanceof HTMLElement26 && (node.tagName === "TD" || node.tagName === "TH");
2307
+ return node instanceof HTMLElement27 && (node.tagName === "TD" || node.tagName === "TH");
2284
2308
  };
2285
2309
  var TableCellNodeHandler2 = class extends NodeHandler2 {
2286
2310
  processNode(node) {
@@ -2325,10 +2349,10 @@ var TableCellNodeHandler2 = class extends NodeHandler2 {
2325
2349
  };
2326
2350
 
2327
2351
  // src/importFromHtml/TableNodeHandler.ts
2328
- import { HTMLElement as HTMLElement27 } from "node-html-parser";
2352
+ import { HTMLElement as HTMLElement28 } from "node-html-parser";
2329
2353
  var REFERENCE_TABLE_WIDTH = 720;
2330
2354
  var MINIMUM_REFERENCE_TABLE_WIDTH = 500;
2331
- var isHtmlTableElement = (node) => node instanceof HTMLElement27 && node.tagName === "TABLE";
2355
+ var isHtmlTableElement = (node) => node instanceof HTMLElement28 && node.tagName === "TABLE";
2332
2356
  var TableNodeHandler2 = class extends NodeHandler2 {
2333
2357
  processNode(node) {
2334
2358
  if (!isHtmlTableElement(node)) return null;
@@ -2483,9 +2507,9 @@ var TableNodeHandler2 = class extends NodeHandler2 {
2483
2507
  };
2484
2508
 
2485
2509
  // src/importFromHtml/TableRowNodeHandler.ts
2486
- import { HTMLElement as HTMLElement28 } from "node-html-parser";
2510
+ import { HTMLElement as HTMLElement29 } from "node-html-parser";
2487
2511
  var isHtmlTableRowElement = (node) => {
2488
- return node instanceof HTMLElement28 && node.tagName === "TR";
2512
+ return node instanceof HTMLElement29 && node.tagName === "TR";
2489
2513
  };
2490
2514
  var TableRowNodeHandler2 = class extends NodeHandler2 {
2491
2515
  processNode(node) {
@@ -2528,10 +2552,10 @@ var TextNodeHandler2 = class extends NodeHandler2 {
2528
2552
  };
2529
2553
 
2530
2554
  // src/importFromHtml/VariableNodeHandler.ts
2531
- import { HTMLElement as HTMLElement29 } from "node-html-parser";
2555
+ import { HTMLElement as HTMLElement30 } from "node-html-parser";
2532
2556
  var VariableNodeHandler2 = class extends NodeHandler2 {
2533
2557
  processNode(node) {
2534
- if (!(node instanceof HTMLElement29) || !node.tagName) return null;
2558
+ if (!(node instanceof HTMLElement30) || !node.tagName) return null;
2535
2559
  if (node.tagName !== "x-param".toUpperCase()) return null;
2536
2560
  return {
2537
2561
  variableName: node.getAttribute("data-x-name") || "undefined",
@@ -2544,7 +2568,7 @@ var VariableNodeHandler2 = class extends NodeHandler2 {
2544
2568
 
2545
2569
  // src/importFromHtml/traverse.ts
2546
2570
  var builder2 = new NodeHandlerChainBuilder();
2547
- 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();
2571
+ var nodeHandlerChain2 = builder2.addHandler(CustomQuestionNodeHandler2).addHandler(DivNodeHandler).addHandler(EssayQuestionNodeHandler2).addHandler(ExcelCopyTextNodeHandler2).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();
2548
2572
  function traverse2(node) {
2549
2573
  const result = nodeHandlerChain2.handle(node);
2550
2574
  if (result === null) return [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@examind/block-sdk",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
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.6.0"
24
+ "@examind/block-types": "^0.7.0"
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.6.0"
39
+ "@examind/block-types": "0.7.0"
40
40
  },
41
41
  "dependencies": {
42
42
  "lodash-es": "4.17.21"