UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

64 lines (55 loc) 9.92 kB
import { applySVGInnerHTMLFix } from '../compat/svg-inner-html-fix'; import { applyTextNodeMergingFix } from '../compat/text-node-merging-fix'; import { BLACKLIST_TABLE, DOMOperations } from './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 => 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; export function isWhitespace(string) { return WHITESPACE.test(string); } export var DOM; (function (DOM) { class TreeConstruction extends 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 = applyTextNodeMergingFix(doc, appliedTreeConstruction); appliedTreeConstruction = applySVGInnerHTMLFix(doc, appliedTreeConstruction, "http://www.w3.org/2000/svg" /* SVG */ ); DOM.DOMTreeConstruction = appliedTreeConstruction; })(DOM || (DOM = {})); export class DOMChangesImpl extends 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); } } let helper = DOMChangesImpl; helper = applyTextNodeMergingFix(doc, helper); helper = applySVGInnerHTMLFix(doc, helper, "http://www.w3.org/2000/svg" /* SVG */ ); export default helper; export const DOMTreeConstruction = DOM.DOMTreeConstruction; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2RvbS9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsU0FBUyxvQkFBVCxRQUFxQyw4QkFBckM7QUFDQSxTQUFTLHVCQUFULFFBQXdDLGlDQUF4QztBQUNBLFNBQVMsZUFBVCxFQUEwQixhQUExQixRQUErQyxjQUEvQztBQUVBLENBQ0UsR0FERixFQUVFLEtBRkYsRUFHRSxZQUhGLEVBSUUsTUFKRixFQUtFLElBTEYsRUFNRSxRQU5GLEVBT0UsTUFQRixFQVFFLElBUkYsRUFTRSxLQVRGLEVBVUUsSUFWRixFQVdFLElBWEYsRUFZRSxJQVpGLEVBYUUsT0FiRixFQWNFLElBZEYsRUFlRSxJQWZGLEVBZ0JFLElBaEJGLEVBaUJFLElBakJGLEVBa0JFLElBbEJGLEVBbUJFLElBbkJGLEVBb0JFLE1BcEJGLEVBcUJFLElBckJGLEVBc0JFLEdBdEJGLEVBdUJFLEtBdkJGLEVBd0JFLElBeEJGLEVBeUJFLFNBekJGLEVBMEJFLE1BMUJGLEVBMkJFLE1BM0JGLEVBNEJFLE1BNUJGLEVBNkJFLElBN0JGLEVBOEJFLEdBOUJGLEVBK0JFLEtBL0JGLEVBZ0NFLE1BaENGLEVBaUNFLEdBakNGLEVBa0NFLE9BbENGLEVBbUNFLE1BbkNGLEVBb0NFLFFBcENGLEVBcUNFLFFBckNGLEVBc0NFLEtBdENGLEVBdUNFLEtBdkNGLEVBd0NFLE9BeENGLEVBeUNFLElBekNGLEVBMENFLEdBMUNGLEVBMkNFLElBM0NGLEVBNENFLEtBNUNGLEVBNkNFLE9BN0NGLENBNkNXLEdBQUQsSUFBVSxlQUFlLENBQUMsR0FBRCxDQUFmLEdBQXVCLENBN0MzQztBQStDQSxNQUFNLFVBQVUsR0FBRywyRUFBbkI7QUFFQSxJQUFJLEdBQUcsR0FBMkIsT0FBTyxRQUFQLEtBQW9CLFdBQXBCLEdBQWtDLElBQWxDLEdBQXNELFFBQXhGO0FBRUEsT0FBTSxTQUFVLFlBQVYsQ0FBdUIsTUFBdkIsRUFBcUM7QUFDekMsU0FBTyxVQUFVLENBQUMsSUFBWCxDQUFnQixNQUFoQixDQUFQO0FBQ0Q7QUFFRCxPQUFNLElBQVcsR0FBWDs7QUFBTixDQUFBLFVBQWlCLEdBQWpCLEVBQW9CO0FBQ2xCLFFBQWEsZ0JBQWIsU0FBc0MsYUFBdEMsQ0FBbUQ7QUFDakQsSUFBQSxlQUFlLENBQUMsU0FBRCxFQUE4QixHQUE5QixFQUF5QztBQUN0RCxhQUFPLEtBQUssUUFBTCxDQUFjLGVBQWQsQ0FBOEIsU0FBOUIsRUFBeUMsR0FBekMsQ0FBUDtBQUNEOztBQUVELElBQUEsWUFBWSxDQUNWLE9BRFUsRUFFVixJQUZVLEVBR1YsS0FIVSxFQUlWLFNBQUEsR0FBbUMsSUFKekIsRUFJNkI7QUFFdkMsVUFBSSxTQUFKLEVBQWU7QUFDYixRQUFBLE9BQU8sQ0FBQyxjQUFSLENBQXVCLFNBQXZCLEVBQWtDLElBQWxDLEVBQXdDLEtBQXhDO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsUUFBQSxPQUFPLENBQUMsWUFBUixDQUFxQixJQUFyQixFQUEyQixLQUEzQjtBQUNEO0FBQ0Y7O0FBaEJnRDs7QUFBdEMsRUFBQSxHQUFBLENBQUEsZ0JBQUEsR0FBZ0IsZ0JBQWhCO0FBbUJiLE1BQUksdUJBQXVCLEdBQUcsZ0JBQTlCO0FBQ0EsRUFBQSx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FDL0MsR0FEK0MsRUFFL0MsdUJBRitDLENBQWpEO0FBSUEsRUFBQSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FDNUMsR0FENEMsRUFFNUMsdUJBRjRDLEVBRXJCO0FBQUE7QUFGcUIsR0FBOUM7QUFNYSxFQUFBLEdBQUEsQ0FBQSxtQkFBQSxHQUFzQix1QkFBdEI7QUFFZCxDQWpDRCxFQUFpQixHQUFHLEtBQUgsR0FBRyxHQUFBLEVBQUEsQ0FBcEI7O0FBbUNBLE9BQU0sTUFBTyxjQUFQLFNBQThCLGFBQTlCLENBQTJDO0FBRy9DLEVBQUEsV0FBQSxDQUFzQixRQUF0QixFQUE4QztBQUM1QyxVQUFNLFFBQU47QUFEb0IsU0FBQSxRQUFBLEdBQUEsUUFBQTtBQUVwQixTQUFLLFNBQUwsR0FBaUIsSUFBakI7QUFDRDs7QUFFRCxFQUFBLFlBQVksQ0FBQyxPQUFELEVBQXlCLElBQXpCLEVBQXVDLEtBQXZDLEVBQW9EO0FBQzlELElBQUEsT0FBTyxDQUFDLFlBQVIsQ0FBcUIsSUFBckIsRUFBMkIsS0FBM0I7QUFDRDs7QUFFRCxFQUFBLGVBQWUsQ0FBQyxPQUFELEVBQXlCLElBQXpCLEVBQXFDO0FBQ2xELElBQUEsT0FBTyxDQUFDLGVBQVIsQ0FBd0IsSUFBeEI7QUFDRDs7QUFFRCxFQUFBLFdBQVcsQ0FBQyxPQUFELEVBQXlCLElBQXpCLEVBQTJDLFNBQTNDLEVBQWdFO0FBQ3pFLFNBQUssWUFBTCxDQUFrQixPQUFsQixFQUEyQixJQUEzQixFQUFpQyxTQUFTLENBQUMsV0FBM0M7QUFDRDs7QUFsQjhDO0FBcUJqRCxJQUFJLE1BQU0sR0FBRyxjQUFiO0FBRUEsTUFBTSxHQUFHLHVCQUF1QixDQUFDLEdBQUQsRUFBTSxNQUFOLENBQWhDO0FBQ0EsTUFBTSxHQUFHLG9CQUFvQixDQUFDLEdBQUQsRUFBTSxNQUFOLEVBQVk7QUFBQTtBQUFaLENBQTdCO0FBRUEsZUFBZSxNQUFmO0FBQ0EsT0FBTyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxtQkFBaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHbGltbWVyVHJlZUNoYW5nZXMsIEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uLCBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNhc3RUb1NpbXBsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQXR0ck5hbWVzcGFjZSxcbiAgRWxlbWVudE5hbWVzcGFjZSxcbiAgTmFtZXNwYWNlLFxuICBTaW1wbGVEb2N1bWVudCxcbiAgU2ltcGxlRWxlbWVudCxcbiAgU2ltcGxlTm9kZSxcbn0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGFwcGx5U1ZHSW5uZXJIVE1MRml4IH0gZnJvbSAnLi4vY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeCc7XG5pbXBvcnQgeyBhcHBseVRleHROb2RlTWVyZ2luZ0ZpeCB9IGZyb20gJy4uL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgnO1xuaW1wb3J0IHsgQkxBQ0tMSVNUX1RBQkxFLCBET01PcGVyYXRpb25zIH0gZnJvbSAnLi9vcGVyYXRpb25zJztcblxuW1xuICAnYicsXG4gICdiaWcnLFxuICAnYmxvY2txdW90ZScsXG4gICdib2R5JyxcbiAgJ2JyJyxcbiAgJ2NlbnRlcicsXG4gICdjb2RlJyxcbiAgJ2RkJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdlbScsXG4gICdlbWJlZCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hyJyxcbiAgJ2knLFxuICAnaW1nJyxcbiAgJ2xpJyxcbiAgJ2xpc3RpbmcnLFxuICAnbWFpbicsXG4gICdtZXRhJyxcbiAgJ25vYnInLFxuICAnb2wnLFxuICAncCcsXG4gICdwcmUnLFxuICAncnVieScsXG4gICdzJyxcbiAgJ3NtYWxsJyxcbiAgJ3NwYW4nLFxuICAnc3Ryb25nJyxcbiAgJ3N0cmlrZScsXG4gICdzdWInLFxuICAnc3VwJyxcbiAgJ3RhYmxlJyxcbiAgJ3R0JyxcbiAgJ3UnLFxuICAndWwnLFxuICAndmFyJyxcbl0uZm9yRWFjaCgodGFnKSA9PiAoQkxBQ0tMSVNUX1RBQkxFW3RhZ10gPSAxKSk7XG5cbmNvbnN0IFdISVRFU1BBQ0UgPSAvW1xcdC1cXHIgXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1RkVGRl0vO1xuXG5sZXQgZG9jOiBPcHRpb248U2ltcGxlRG9jdW1lbnQ+ID0gdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBjYXN0VG9TaW1wbGUoZG9jdW1lbnQpO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKHN0cmluZzogc3RyaW5nKSB7XG4gIHJldHVybiBXSElURVNQQUNFLnRlc3Qoc3RyaW5nKTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBET00ge1xuICBleHBvcnQgY2xhc3MgVHJlZUNvbnN0cnVjdGlvbiBleHRlbmRzIERPTU9wZXJhdGlvbnMgaW1wbGVtZW50cyBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbiB7XG4gICAgY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZTogRWxlbWVudE5hbWVzcGFjZSwgdGFnOiBzdHJpbmcpOiBTaW1wbGVFbGVtZW50IHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZyk7XG4gICAgfVxuXG4gICAgc2V0QXR0cmlidXRlKFxuICAgICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCxcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPiA9IG51bGxcbiAgICApIHtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgYXBwbGllZFRyZWVDb25zdHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xuICBhcHBsaWVkVHJlZUNvbnN0cnVjdGlvbiA9IGFwcGx5VGV4dE5vZGVNZXJnaW5nRml4KFxuICAgIGRvYyxcbiAgICBhcHBsaWVkVHJlZUNvbnN0cnVjdGlvblxuICApIGFzIHR5cGVvZiBUcmVlQ29uc3RydWN0aW9uO1xuICBhcHBsaWVkVHJlZUNvbnN0cnVjdGlvbiA9IGFwcGx5U1ZHSW5uZXJIVE1MRml4KFxuICAgIGRvYyxcbiAgICBhcHBsaWVkVHJlZUNvbnN0cnVjdGlvbixcbiAgICBOYW1lc3BhY2UuU1ZHXG4gICkgYXMgdHlwZW9mIFRyZWVDb25zdHJ1Y3Rpb247XG5cbiAgZXhwb3J0IGNvbnN0IERPTVRyZWVDb25zdHJ1Y3Rpb24gPSBhcHBsaWVkVHJlZUNvbnN0cnVjdGlvbjtcbiAgZXhwb3J0IHR5cGUgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG59XG5cbmV4cG9ydCBjbGFzcyBET01DaGFuZ2VzSW1wbCBleHRlbmRzIERPTU9wZXJhdGlvbnMgaW1wbGVtZW50cyBHbGltbWVyVHJlZUNoYW5nZXMge1xuICBwcm90ZWN0ZWQgbmFtZXNwYWNlOiBPcHRpb248c3RyaW5nPjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZG9jdW1lbnQ6IFNpbXBsZURvY3VtZW50KSB7XG4gICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbnVsbDtcbiAgfVxuXG4gIHNldEF0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGVFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlRWxlbWVudCwgbmFtZTogc3RyaW5nKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH1cblxuICBpbnNlcnRBZnRlcihlbGVtZW50OiBTaW1wbGVFbGVtZW50LCBub2RlOiBTaW1wbGVOb2RlLCByZWZlcmVuY2U6IFNpbXBsZU5vZGUpIHtcbiAgICB0aGlzLmluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLCByZWZlcmVuY2UubmV4dFNpYmxpbmcpO1xuICB9XG59XG5cbmxldCBoZWxwZXIgPSBET01DaGFuZ2VzSW1wbDtcblxuaGVscGVyID0gYXBwbHlUZXh0Tm9kZU1lcmdpbmdGaXgoZG9jLCBoZWxwZXIpIGFzIHR5cGVvZiBET01DaGFuZ2VzSW1wbDtcbmhlbHBlciA9IGFwcGx5U1ZHSW5uZXJIVE1MRml4KGRvYywgaGVscGVyLCBOYW1lc3BhY2UuU1ZHKSBhcyB0eXBlb2YgRE9NQ2hhbmdlc0ltcGw7XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcjtcbmV4cG9ydCBjb25zdCBET01UcmVlQ29uc3RydWN0aW9uID0gRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb247XG5leHBvcnQgdHlwZSBET01UcmVlQ29uc3RydWN0aW9uID0gRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb247XG5leHBvcnQgdHlwZSBET01OYW1lc3BhY2UgPSBOYW1lc3BhY2U7XG4iXSwic291cmNlUm9vdCI6IiJ9