版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

81 regels
2.2 KiB

  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const DocumentFragment_1 = __importDefault(require("../document-fragment/DocumentFragment"));
  7. const XMLParser_1 = __importDefault(require("../../xml-parser/XMLParser"));
  8. const XMLSerializer_1 = __importDefault(require("../../xml-serializer/XMLSerializer"));
  9. /**
  10. * ShadowRoot.
  11. */
  12. class ShadowRoot extends DocumentFragment_1.default {
  13. constructor() {
  14. super(...arguments);
  15. this.mode = 'open';
  16. this.host = null;
  17. this.adoptedStyleSheets = [];
  18. // Events
  19. this.onslotchange = null;
  20. }
  21. /**
  22. * Returns inner HTML.
  23. *
  24. * @returns HTML.
  25. */
  26. get innerHTML() {
  27. const xmlSerializer = new XMLSerializer_1.default();
  28. let xml = '';
  29. for (const node of this.childNodes) {
  30. xml += xmlSerializer.serializeToString(node);
  31. }
  32. return xml;
  33. }
  34. /**
  35. * Sets inner HTML.
  36. *
  37. * @param html HTML.
  38. */
  39. set innerHTML(html) {
  40. for (const child of this.childNodes.slice()) {
  41. this.removeChild(child);
  42. }
  43. for (const node of XMLParser_1.default.parse(this.ownerDocument, html).childNodes.slice()) {
  44. this.appendChild(node);
  45. }
  46. }
  47. /**
  48. * Returns active element.
  49. *
  50. * @returns Active element.
  51. */
  52. get activeElement() {
  53. const activeElement = this.ownerDocument['_activeElement'];
  54. if (activeElement && activeElement.isConnected && activeElement.getRootNode() === this) {
  55. return activeElement;
  56. }
  57. return null;
  58. }
  59. /**
  60. * Converts to string.
  61. *
  62. * @returns String.
  63. */
  64. toString() {
  65. return this.innerHTML;
  66. }
  67. /**
  68. * Clones a node.
  69. *
  70. * @override
  71. * @param [deep=false] "true" to clone deep.
  72. * @returns Cloned node.
  73. */
  74. cloneNode(deep = false) {
  75. const clone = super.cloneNode(deep);
  76. clone.mode = this.mode;
  77. return clone;
  78. }
  79. }
  80. exports.default = ShadowRoot;
  81. //# sourceMappingURL=ShadowRoot.js.map