all files / dom/ DefaultDOMElement.js

87.88% Statements 29/33
75% Branches 6/8
81.82% Functions 9/11
90.32% Lines 28/31
6 statements, 2 functions Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82                1036×                                       469×                 129×       1049× 1047×                     2687× 2129×   558×          
import { platform } from '../util'
import BrowserDOMElement from './BrowserDOMElement'
import MemoryDOMElement from './MemoryDOMElement'
 
/**
  A Bridge to the default DOMElement implementation, either BrowserDOMElement, or MemoryDOMElement.
*/
let DefaultDOMElement = {}
 
DefaultDOMElement.createDocument = function(format) {
  return _getDefaultImpl().createDocument(format)
}
 
/* istanbul ignore next */
DefaultDOMElement.createElement = function(tagName) {
  console.error("DEPRECATED: every element should have an ownerDocument. Use DefaultDOMElement.createDocument() to create a document first")
  let doc = DefaultDOMElement.createDocument('html')
  return doc.createElement(tagName)
}
 
/* istanbul ignore next */
DefaultDOMElement.createTextNode = function(text) {
  console.error("DEPRECATED: every element should have a ownerDocument. Use DefaultDOMElement.createDocument() to create a document first")
  let doc = DefaultDOMElement.createDocument('html')
  return doc.createTextNode(text)
}
 
/*
  A wrapper for Browser's `window` providing
  the DOMElement's eventlistener API.
*/
DefaultDOMElement.getBrowserWindow = function() {
  return _getDefaultImpl().getBrowserWindow()
}
 
/*
  @param {String} html
  @returns {DOMElement|DOMElement[]}
*/
DefaultDOMElement.parseHTML = function(html, options) {
  return _getDefaultImpl().parseMarkup(html, 'html', options)
}
 
/*
  @param {String} xml
  @returns {DOMElement|DOMElement[]}
*/
DefaultDOMElement.parseXML = function(xml, options) {
  return _getDefaultImpl().parseMarkup(xml, 'xml', options)
}
 
DefaultDOMElement.parseSnippet = function(str, format) {
  return _getDefaultImpl().parseMarkup(str, format, {snippet: true})
}
 
DefaultDOMElement.wrap =
DefaultDOMElement.wrapNativeElement = function(nativeEl) {
  if (!nativeEl) throw new Error('Illegal argument')
  return _getDefaultImpl().wrap(nativeEl)
}
 
DefaultDOMElement.unwrap = function(nativeEl) {
  if (!nativeEl) throw new Error('Illegal argument')
  return _getDefaultImpl().unwrap(nativeEl)
}
 
//TODO: this should not be part of DefaultDOMElement
/* istanbul ignore next */
DefaultDOMElement.isReverse = function(anchorNode, anchorOffset, focusNode, focusOffset) {
  return _getDefaultImpl().isReverse(anchorNode, anchorOffset, focusNode, focusOffset)
}
 
function _getDefaultImpl() {
  if (platform.inBrowser && !platform.inNodeJS) {
    return BrowserDOMElement
  } else {
    return MemoryDOMElement
  }
}
 
export default DefaultDOMElement