substance
Version:
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.
83 lines (69 loc) • 2.52 kB
JavaScript
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() {
// ATTENTION: in Browsers as well as in Elect
if (platform.inBrowser || platform.inElectron) {
return BrowserDOMElement
} else {
return MemoryDOMElement
}
}
export default DefaultDOMElement