Source: xblocks/utils/createShadowRoot.js

  1. import context from '../../context';
  2. const proto = context.Element.prototype;
  3. const createShadowRoot = proto.createShadowRoot ||
  4. proto.webkitCreateShadowRoot ||
  5. proto.mozCreateShadowRoot ||
  6. proto.msCreateShadowRoot ||
  7. proto.oCreateShadowRoot ||
  8. function () {};
  9. /**
  10. * Creating a shadow root.
  11. * Does not create the existing shadow root.
  12. *
  13. * @example
  14. * import createShadowRoot from 'xblocks-core/utils/createShadowRoot';
  15. * var root = createShadowRoot(node);
  16. *
  17. * @module xblocks-core/utils/createShadowRoot
  18. * @param {HTMLElement} node
  19. * @returns {ShadowRoot}
  20. */
  21. export default function (node) {
  22. return node.shadowRoot || ((context.HTMLSlotElement || context.HTMLContentElement) && createShadowRoot.call(node));
  23. }