@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
82 lines (65 loc) • 10.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isWhitespace = isWhitespace;
exports.DOMTreeConstruction = exports.default = exports.DOMChangesImpl = exports.DOM = void 0;
var _svgInnerHtmlFix = require("../compat/svg-inner-html-fix");
var _textNodeMergingFix = require("../compat/text-node-merging-fix");
var _operations = require("./operations");
['b', 'big', 'blockquote', 'body', 'br', 'center', 'code', 'dd', 'div', 'dl', 'dt', 'em', 'embed', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'i', 'img', 'li', 'listing', 'main', 'meta', 'nobr', 'ol', 'p', 'pre', 'ruby', 's', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'table', 'tt', 'u', 'ul', 'var'].forEach(tag => _operations.BLACKLIST_TABLE[tag] = 1);
const WHITESPACE = /[\t-\r \xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/;
let doc = typeof document === 'undefined' ? null : document;
function isWhitespace(string) {
return WHITESPACE.test(string);
}
var DOM;
exports.DOM = DOM;
(function (DOM) {
class TreeConstruction extends _operations.DOMOperations {
createElementNS(namespace, tag) {
return this.document.createElementNS(namespace, tag);
}
setAttribute(element, name, value, namespace = null) {
if (namespace) {
element.setAttributeNS(namespace, name, value);
} else {
element.setAttribute(name, value);
}
}
}
DOM.TreeConstruction = TreeConstruction;
let appliedTreeConstruction = TreeConstruction;
appliedTreeConstruction = (0, _textNodeMergingFix.applyTextNodeMergingFix)(doc, appliedTreeConstruction);
appliedTreeConstruction = (0, _svgInnerHtmlFix.applySVGInnerHTMLFix)(doc, appliedTreeConstruction, "http://www.w3.org/2000/svg"
/* SVG */
);
DOM.DOMTreeConstruction = appliedTreeConstruction;
})(DOM || (exports.DOM = DOM = {}));
class DOMChangesImpl extends _operations.DOMOperations {
constructor(document) {
super(document);
this.document = document;
this.namespace = null;
}
setAttribute(element, name, value) {
element.setAttribute(name, value);
}
removeAttribute(element, name) {
element.removeAttribute(name);
}
insertAfter(element, node, reference) {
this.insertBefore(element, node, reference.nextSibling);
}
}
exports.DOMChangesImpl = DOMChangesImpl;
let helper = DOMChangesImpl;
helper = (0, _textNodeMergingFix.applyTextNodeMergingFix)(doc, helper);
helper = (0, _svgInnerHtmlFix.applySVGInnerHTMLFix)(doc, helper, "http://www.w3.org/2000/svg"
/* SVG */
);
var _default = helper;
exports.default = _default;
const DOMTreeConstruction = DOM.DOMTreeConstruction;
exports.DOMTreeConstruction = DOMTreeConstruction;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2RvbS9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFVQTs7QUFDQTs7QUFDQTs7QUFFQSxDQUFBLEdBQUEsRUFBQSxLQUFBLEVBQUEsWUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsUUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLEdBQUEsRUFBQSxLQUFBLEVBQUEsSUFBQSxFQUFBLFNBQUEsRUFBQSxNQUFBLEVBQUEsTUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLEVBQUEsUUFBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsT0FBQSxDQTZDVyxHQUFELElBQVUsNEJBQUEsR0FBQSxJQTdDcEIsQ0FBQTtBQStDQSxNQUFNLFVBQVUsR0FBaEIsMkVBQUE7QUFFQSxJQUFJLEdBQUcsR0FBMkIsT0FBQSxRQUFBLEtBQUEsV0FBQSxHQUFBLElBQUEsR0FBbEMsUUFBQTs7QUFFTSxTQUFBLFlBQUEsQ0FBQSxNQUFBLEVBQXFDO0FBQ3pDLFNBQU8sVUFBVSxDQUFWLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFDRDs7QUFFSyxJQUFBLEdBQUE7OztBQUFOLENBQUEsVUFBQSxHQUFBLEVBQW9CO0FBQ2xCLFFBQUEsZ0JBQUEsU0FBQSx5QkFBQSxDQUFtRDtBQUNqRCxJQUFBLGVBQWUsQ0FBQSxTQUFBLEVBQUEsR0FBQSxFQUF5QztBQUN0RCxhQUFPLEtBQUEsUUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQVAsR0FBTyxDQUFQO0FBQ0Q7O0FBRUQsSUFBQSxZQUFZLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBSVYsU0FBQSxHQUpVLElBQUEsRUFJNkI7QUFFdkMsVUFBQSxTQUFBLEVBQWU7QUFDYixRQUFBLE9BQU8sQ0FBUCxjQUFBLENBQUEsU0FBQSxFQUFBLElBQUEsRUFBQSxLQUFBO0FBREYsT0FBQSxNQUVPO0FBQ0wsUUFBQSxPQUFPLENBQVAsWUFBQSxDQUFBLElBQUEsRUFBQSxLQUFBO0FBQ0Q7QUFDRjs7QUFoQmdEOztBQUF0QyxFQUFBLEdBQUEsQ0FBQSxnQkFBQSxHQUFBLGdCQUFBO0FBbUJiLE1BQUksdUJBQXVCLEdBQTNCLGdCQUFBO0FBQ0EsRUFBQSx1QkFBdUIsR0FBRyxpREFBdUIsR0FBdkIsRUFBMUIsdUJBQTBCLENBQTFCO0FBSUEsRUFBQSx1QkFBdUIsR0FBRywyQ0FBb0IsR0FBcEIsRUFBb0IsdUJBQXBCLEVBRUQ7QUFBQTtBQUZDLEdBQTFCO0FBTWEsRUFBQSxHQUFBLENBQUEsbUJBQUEsR0FBQSx1QkFBQTtBQS9CZixDQUFBLEVBQWlCLEdBQUcsbUJBQUgsR0FBRyxHQUFwQixFQUFvQixDQUFwQjs7QUFtQ00sTUFBQSxjQUFBLFNBQUEseUJBQUEsQ0FBMkM7QUFHL0MsRUFBQSxXQUFBLENBQUEsUUFBQSxFQUE4QztBQUM1QyxVQUFBLFFBQUE7QUFEb0IsU0FBQSxRQUFBLEdBQUEsUUFBQTtBQUVwQixTQUFBLFNBQUEsR0FBQSxJQUFBO0FBQ0Q7O0FBRUQsRUFBQSxZQUFZLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQW9EO0FBQzlELElBQUEsT0FBTyxDQUFQLFlBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQTtBQUNEOztBQUVELEVBQUEsZUFBZSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQXFDO0FBQ2xELElBQUEsT0FBTyxDQUFQLGVBQUEsQ0FBQSxJQUFBO0FBQ0Q7O0FBRUQsRUFBQSxXQUFXLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxTQUFBLEVBQWdFO0FBQ3pFLFNBQUEsWUFBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQWlDLFNBQVMsQ0FBMUMsV0FBQTtBQUNEOztBQWxCOEM7OztBQXFCakQsSUFBSSxNQUFNLEdBQVYsY0FBQTtBQUVBLE1BQU0sR0FBRyxpREFBdUIsR0FBdkIsRUFBVCxNQUFTLENBQVQ7QUFDQSxNQUFNLEdBQUcsMkNBQW9CLEdBQXBCLEVBQW9CLE1BQXBCLEVBQWdDO0FBQUE7QUFBaEMsQ0FBVDtlQUVBLE07O0FBQ08sTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQS9CLG1CQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2xpbW1lclRyZWVDaGFuZ2VzLCBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbiwgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjYXN0VG9TaW1wbGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIEF0dHJOYW1lc3BhY2UsXG4gIEVsZW1lbnROYW1lc3BhY2UsXG4gIE5hbWVzcGFjZSxcbiAgU2ltcGxlRG9jdW1lbnQsXG4gIFNpbXBsZUVsZW1lbnQsXG4gIFNpbXBsZU5vZGUsXG59IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBhcHBseVNWR0lubmVySFRNTEZpeCB9IGZyb20gJy4uL2NvbXBhdC9zdmctaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IHsgYXBwbHlUZXh0Tm9kZU1lcmdpbmdGaXggfSBmcm9tICcuLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4JztcbmltcG9ydCB7IEJMQUNLTElTVF9UQUJMRSwgRE9NT3BlcmF0aW9ucyB9IGZyb20gJy4vb3BlcmF0aW9ucyc7XG5cbltcbiAgJ2InLFxuICAnYmlnJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdicicsXG4gICdjZW50ZXInLFxuICAnY29kZScsXG4gICdkZCcsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZHQnLFxuICAnZW0nLFxuICAnZW1iZWQnLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZCcsXG4gICdocicsXG4gICdpJyxcbiAgJ2ltZycsXG4gICdsaScsXG4gICdsaXN0aW5nJyxcbiAgJ21haW4nLFxuICAnbWV0YScsXG4gICdub2JyJyxcbiAgJ29sJyxcbiAgJ3AnLFxuICAncHJlJyxcbiAgJ3J1YnknLFxuICAncycsXG4gICdzbWFsbCcsXG4gICdzcGFuJyxcbiAgJ3N0cm9uZycsXG4gICdzdHJpa2UnLFxuICAnc3ViJyxcbiAgJ3N1cCcsXG4gICd0YWJsZScsXG4gICd0dCcsXG4gICd1JyxcbiAgJ3VsJyxcbiAgJ3ZhcicsXG5dLmZvckVhY2goKHRhZykgPT4gKEJMQUNLTElTVF9UQUJMRVt0YWddID0gMSkpO1xuXG5jb25zdCBXSElURVNQQUNFID0gL1tcXHQtXFxyIFxceEEwXFx1MTY4MFxcdTE4MEVcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdUZFRkZdLztcblxubGV0IGRvYzogT3B0aW9uPFNpbXBsZURvY3VtZW50PiA9IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogY2FzdFRvU2ltcGxlKGRvY3VtZW50KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVzcGFjZShzdHJpbmc6IHN0cmluZykge1xuICByZXR1cm4gV0hJVEVTUEFDRS50ZXN0KHN0cmluZyk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRE9NIHtcbiAgZXhwb3J0IGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb24gZXh0ZW5kcyBET01PcGVyYXRpb25zIGltcGxlbWVudHMgR2xpbW1lclRyZWVDb25zdHJ1Y3Rpb24ge1xuICAgIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2U6IEVsZW1lbnROYW1lc3BhY2UsIHRhZzogc3RyaW5nKTogU2ltcGxlRWxlbWVudCB7XG4gICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWcpO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZShcbiAgICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4gPSBudWxsXG4gICAgKSB7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGFwcGxpZWRUcmVlQ29uc3RydWN0aW9uID0gVHJlZUNvbnN0cnVjdGlvbjtcbiAgYXBwbGllZFRyZWVDb25zdHJ1Y3Rpb24gPSBhcHBseVRleHROb2RlTWVyZ2luZ0ZpeChcbiAgICBkb2MsXG4gICAgYXBwbGllZFRyZWVDb25zdHJ1Y3Rpb25cbiAgKSBhcyB0eXBlb2YgVHJlZUNvbnN0cnVjdGlvbjtcbiAgYXBwbGllZFRyZWVDb25zdHJ1Y3Rpb24gPSBhcHBseVNWR0lubmVySFRNTEZpeChcbiAgICBkb2MsXG4gICAgYXBwbGllZFRyZWVDb25zdHJ1Y3Rpb24sXG4gICAgTmFtZXNwYWNlLlNWR1xuICApIGFzIHR5cGVvZiBUcmVlQ29uc3RydWN0aW9uO1xuXG4gIGV4cG9ydCBjb25zdCBET01UcmVlQ29uc3RydWN0aW9uID0gYXBwbGllZFRyZWVDb25zdHJ1Y3Rpb247XG4gIGV4cG9ydCB0eXBlIERPTVRyZWVDb25zdHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgRE9NQ2hhbmdlc0ltcGwgZXh0ZW5kcyBET01PcGVyYXRpb25zIGltcGxlbWVudHMgR2xpbW1lclRyZWVDaGFuZ2VzIHtcbiAgcHJvdGVjdGVkIG5hbWVzcGFjZTogT3B0aW9uPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRvY3VtZW50OiBTaW1wbGVEb2N1bWVudCkge1xuICAgIHN1cGVyKGRvY3VtZW50KTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG51bGw7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9XG5cbiAgaW5zZXJ0QWZ0ZXIoZWxlbWVudDogU2ltcGxlRWxlbWVudCwgbm9kZTogU2ltcGxlTm9kZSwgcmVmZXJlbmNlOiBTaW1wbGVOb2RlKSB7XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlLm5leHRTaWJsaW5nKTtcbiAgfVxufVxuXG5sZXQgaGVscGVyID0gRE9NQ2hhbmdlc0ltcGw7XG5cbmhlbHBlciA9IGFwcGx5VGV4dE5vZGVNZXJnaW5nRml4KGRvYywgaGVscGVyKSBhcyB0eXBlb2YgRE9NQ2hhbmdlc0ltcGw7XG5oZWxwZXIgPSBhcHBseVNWR0lubmVySFRNTEZpeChkb2MsIGhlbHBlciwgTmFtZXNwYWNlLlNWRykgYXMgdHlwZW9mIERPTUNoYW5nZXNJbXBsO1xuXG5leHBvcnQgZGVmYXVsdCBoZWxwZXI7XG5leHBvcnQgY29uc3QgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IERPTS5ET01UcmVlQ29uc3RydWN0aW9uO1xuZXhwb3J0IHR5cGUgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IERPTS5ET01UcmVlQ29uc3RydWN0aW9uO1xuZXhwb3J0IHR5cGUgRE9NTmFtZXNwYWNlID0gTmFtZXNwYWNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==