htmldomapi.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. function createElement(tagName, options) {
  2. return document.createElement(tagName, options);
  3. }
  4. function createElementNS(namespaceURI, qualifiedName, options) {
  5. return document.createElementNS(namespaceURI, qualifiedName, options);
  6. }
  7. function createDocumentFragment() {
  8. return parseFragment(document.createDocumentFragment());
  9. }
  10. function createTextNode(text) {
  11. return document.createTextNode(text);
  12. }
  13. function createComment(text) {
  14. return document.createComment(text);
  15. }
  16. function insertBefore(parentNode, newNode, referenceNode) {
  17. if (isDocumentFragment(parentNode)) {
  18. let node = parentNode;
  19. while (node && isDocumentFragment(node)) {
  20. const fragment = parseFragment(node);
  21. node = fragment.parent;
  22. }
  23. parentNode = node !== null && node !== void 0 ? node : parentNode;
  24. }
  25. if (isDocumentFragment(newNode)) {
  26. newNode = parseFragment(newNode, parentNode);
  27. }
  28. if (referenceNode && isDocumentFragment(referenceNode)) {
  29. referenceNode = parseFragment(referenceNode).firstChildNode;
  30. }
  31. parentNode.insertBefore(newNode, referenceNode);
  32. }
  33. function removeChild(node, child) {
  34. node.removeChild(child);
  35. }
  36. function appendChild(node, child) {
  37. if (isDocumentFragment(child)) {
  38. child = parseFragment(child, node);
  39. }
  40. node.appendChild(child);
  41. }
  42. function parentNode(node) {
  43. if (isDocumentFragment(node)) {
  44. while (node && isDocumentFragment(node)) {
  45. const fragment = parseFragment(node);
  46. node = fragment.parent;
  47. }
  48. return node !== null && node !== void 0 ? node : null;
  49. }
  50. return node.parentNode;
  51. }
  52. function nextSibling(node) {
  53. var _a;
  54. if (isDocumentFragment(node)) {
  55. const fragment = parseFragment(node);
  56. const parent = parentNode(fragment);
  57. if (parent && fragment.lastChildNode) {
  58. const children = Array.from(parent.childNodes);
  59. const index = children.indexOf(fragment.lastChildNode);
  60. return (_a = children[index + 1]) !== null && _a !== void 0 ? _a : null;
  61. }
  62. return null;
  63. }
  64. return node.nextSibling;
  65. }
  66. function tagName(elm) {
  67. return elm.tagName;
  68. }
  69. function setTextContent(node, text) {
  70. node.textContent = text;
  71. }
  72. function getTextContent(node) {
  73. return node.textContent;
  74. }
  75. function isElement(node) {
  76. return node.nodeType === 1;
  77. }
  78. function isText(node) {
  79. return node.nodeType === 3;
  80. }
  81. function isComment(node) {
  82. return node.nodeType === 8;
  83. }
  84. function isDocumentFragment(node) {
  85. return node.nodeType === 11;
  86. }
  87. function parseFragment(fragmentNode, parentNode) {
  88. var _a, _b, _c;
  89. const fragment = fragmentNode;
  90. (_a = fragment.parent) !== null && _a !== void 0 ? _a : (fragment.parent = parentNode !== null && parentNode !== void 0 ? parentNode : null);
  91. (_b = fragment.firstChildNode) !== null && _b !== void 0 ? _b : (fragment.firstChildNode = fragmentNode.firstChild);
  92. (_c = fragment.lastChildNode) !== null && _c !== void 0 ? _c : (fragment.lastChildNode = fragmentNode.lastChild);
  93. return fragment;
  94. }
  95. export const htmlDomApi = {
  96. createElement,
  97. createElementNS,
  98. createTextNode,
  99. createDocumentFragment,
  100. createComment,
  101. insertBefore,
  102. removeChild,
  103. appendChild,
  104. parentNode,
  105. nextSibling,
  106. tagName,
  107. setTextContent,
  108. getTextContent,
  109. isElement,
  110. isText,
  111. isComment,
  112. isDocumentFragment
  113. };
  114. //# sourceMappingURL=htmldomapi.js.map