@examind/block-sdk 0.6.0 → 0.6.1
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 +95 -71
- package/dist/index.mjs +86 -62
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1076,7 +1076,7 @@ function exportToHtml(editorState) {
|
|
|
1076
1076
|
}
|
|
1077
1077
|
|
|
1078
1078
|
// src/importFromHtml/index.ts
|
|
1079
|
-
var
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
1440
|
+
(0, import_node_html_parser6.parse)(xPart.objective ?? "")
|
|
1417
1441
|
),
|
|
1418
1442
|
instructions: createNestedEditorFromHtml(
|
|
1419
|
-
(0,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2208
|
-
var 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2537
|
+
var import_node_html_parser29 = require("node-html-parser");
|
|
2514
2538
|
var isHtmlTableRowElement = (node) => {
|
|
2515
|
-
return node instanceof
|
|
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
|
|
2539
|
-
var TextNode2 =
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1479
|
+
import { HTMLElement as HTMLElement8 } from "node-html-parser";
|
|
1456
1480
|
var FillInTheBlankQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
1457
1481
|
processNode(node) {
|
|
1458
|
-
if (!(node instanceof
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1913
|
+
import { HTMLElement as HTMLElement17 } from "node-html-parser";
|
|
1890
1914
|
var LineBreakNodeHandler2 = class extends NodeHandler2 {
|
|
1891
1915
|
processNode(node) {
|
|
1892
|
-
if (!(node instanceof
|
|
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
|
|
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
|
|
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
|
|
1959
|
+
import { HTMLElement as HTMLElement19 } from "node-html-parser";
|
|
1936
1960
|
var ListItemNodeHandler2 = class extends NodeHandler2 {
|
|
1937
1961
|
processNode(node) {
|
|
1938
|
-
if (!(node instanceof
|
|
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
|
|
1983
|
+
import { HTMLElement as HTMLElement20 } from "node-html-parser";
|
|
1960
1984
|
var ListNodeHandler2 = class extends NodeHandler2 {
|
|
1961
1985
|
processNode(node) {
|
|
1962
|
-
if (!(node instanceof
|
|
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
|
|
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
|
|
2029
|
+
import { HTMLElement as HTMLElement21 } from "node-html-parser";
|
|
2006
2030
|
var MatchingQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
2007
2031
|
processNode(node) {
|
|
2008
|
-
if (!(node instanceof
|
|
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
|
|
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
|
|
2068
|
+
import { HTMLElement as HTMLElement22 } from "node-html-parser";
|
|
2045
2069
|
var MultipleOptionQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
2046
2070
|
processNode(node) {
|
|
2047
|
-
if (!(node instanceof
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2156
|
+
import { HTMLElement as HTMLElement24 } from "node-html-parser";
|
|
2133
2157
|
var ShortAnswerQuestionNodeHandler2 = class extends NodeHandler2 {
|
|
2134
2158
|
processNode(node) {
|
|
2135
|
-
if (!(node instanceof
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2510
|
+
import { HTMLElement as HTMLElement29 } from "node-html-parser";
|
|
2487
2511
|
var isHtmlTableRowElement = (node) => {
|
|
2488
|
-
return node instanceof
|
|
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
|
|
2555
|
+
import { HTMLElement as HTMLElement30 } from "node-html-parser";
|
|
2532
2556
|
var VariableNodeHandler2 = class extends NodeHandler2 {
|
|
2533
2557
|
processNode(node) {
|
|
2534
|
-
if (!(node instanceof
|
|
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.
|
|
3
|
+
"version": "0.6.1",
|
|
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.
|
|
24
|
+
"@examind/block-types": "^0.6.1"
|
|
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.
|
|
39
|
+
"@examind/block-types": "0.6.1"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"lodash-es": "4.17.21"
|