@glimmer/compiler
Version:
89 lines (85 loc) • 7.89 kB
JavaScript
// There is a small whitelist of namespaced attributes specially
// enumerated in
// https://www.w3.org/TR/html/syntax.html#attributes-0
//
// > When a foreign element has one of the namespaced attributes given by
// > the local name and namespace of the first and second cells of a row
// > from the following table, it must be written using the name given by
// > the third cell from the same row.
//
// In all other cases, colons are interpreted as a regular character
// with no special meaning:
//
// > No other namespaced attribute can be expressed in the HTML syntax.
var XLINK = 'http://www.w3.org/1999/xlink';
var XML = 'http://www.w3.org/XML/1998/namespace';
var XMLNS = 'http://www.w3.org/2000/xmlns/';
var WHITELIST = {
'xlink:actuate': XLINK,
'xlink:arcrole': XLINK,
'xlink:href': XLINK,
'xlink:role': XLINK,
'xlink:show': XLINK,
'xlink:title': XLINK,
'xlink:type': XLINK,
'xml:base': XML,
'xml:lang': XML,
'xml:space': XML,
xmlns: XMLNS,
'xmlns:xlink': XMLNS
};
export function getAttrNamespace(attrName) {
return WHITELIST[attrName];
}
var DEFLATE_TAG_TABLE = {
div: 0
/* div */
,
span: 1
/* span */
,
p: 2
/* p */
,
a: 3
/* a */
};
var INFLATE_TAG_TABLE = ['div', 'span', 'p', 'a'];
export function deflateTagName(tagName) {
var _a;
return (_a = DEFLATE_TAG_TABLE[tagName]) !== null && _a !== void 0 ? _a : tagName;
}
export function inflateTagName(tagName) {
return typeof tagName === 'string' ? tagName : INFLATE_TAG_TABLE[tagName];
}
var DEFLATE_ATTR_TABLE = {
"class": 0
/* class */
,
id: 1
/* id */
,
value: 2
/* value */
,
name: 3
/* name */
,
type: 4
/* type */
,
style: 5
/* style */
,
href: 6
/* href */
};
var INFLATE_ATTR_TABLE = ['class', 'id', 'value', 'name', 'type', 'style', 'href'];
export function deflateAttrName(attrName) {
var _a;
return (_a = DEFLATE_ATTR_TABLE[attrName]) !== null && _a !== void 0 ? _a : attrName;
}
export function inflateAttrName(attrName) {
return typeof attrName === 'string' ? attrName : INFLATE_ATTR_TABLE[attrName];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQU0sS0FBSyxHQUFYLDhCQUFBO0FBQ0EsSUFBTSxHQUFHLEdBQVQsc0NBQUE7QUFDQSxJQUFNLEtBQUssR0FBWCwrQkFBQTtBQUVBLElBQU0sU0FBUyxHQUE2QjtBQUMxQyxtQkFEMEMsS0FBQTtBQUUxQyxtQkFGMEMsS0FBQTtBQUcxQyxnQkFIMEMsS0FBQTtBQUkxQyxnQkFKMEMsS0FBQTtBQUsxQyxnQkFMMEMsS0FBQTtBQU0xQyxpQkFOMEMsS0FBQTtBQU8xQyxnQkFQMEMsS0FBQTtBQVExQyxjQVIwQyxHQUFBO0FBUzFDLGNBVDBDLEdBQUE7QUFVMUMsZUFWMEMsR0FBQTtBQVcxQyxFQUFBLEtBQUssRUFYcUMsS0FBQTtBQVkxQyxpQkFBZTtBQVoyQixDQUE1QztBQWVBLE9BQU0sU0FBQSxnQkFBQSxDQUFBLFFBQUEsRUFBMkM7QUFDL0MsU0FBTyxTQUFTLENBQWhCLFFBQWdCLENBQWhCO0FBQ0Q7QUFFRCxJQUFNLGlCQUFpQixHQUVuQjtBQUNGLEVBQUEsR0FBRyxFQUFBO0FBQUE7QUFERDtBQUVGLEVBQUEsSUFBSSxFQUFBO0FBQUE7QUFGRjtBQUdGLEVBQUEsQ0FBQyxFQUFBO0FBQUE7QUFIQztBQUlGLEVBQUEsQ0FBQyxFQUFBO0FBQUE7O0FBSkMsQ0FGSjtBQVNBLElBQU0saUJBQWlCLEdBRW5CLENBQUEsS0FBQSxFQUFBLE1BQUEsRUFBQSxHQUFBLEVBRkosR0FFSSxDQUZKO0FBSUEsT0FBTSxTQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQXdDOzs7QUFDNUMsU0FBQSxDQUFBLEVBQUEsR0FBTyxpQkFBaUIsQ0FBeEIsT0FBd0IsQ0FBeEIsTUFBQSxJQUFBLElBQWlDLEVBQUEsS0FBQSxLQUFqQyxDQUFBLEdBQUEsRUFBQSxHQUFBLE9BQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxjQUFBLENBQUEsT0FBQSxFQUEyRDtBQUMvRCxTQUFPLE9BQUEsT0FBQSxLQUFBLFFBQUEsR0FBQSxPQUFBLEdBQXdDLGlCQUFpQixDQUFoRSxPQUFnRSxDQUFoRTtBQUNEO0FBRUQsSUFBTSxrQkFBa0IsR0FFcEI7QUFDRixXQUFLO0FBQUE7QUFESDtBQUVGLEVBQUEsRUFBRSxFQUFBO0FBQUE7QUFGQTtBQUdGLEVBQUEsS0FBSyxFQUFBO0FBQUE7QUFISDtBQUlGLEVBQUEsSUFBSSxFQUFBO0FBQUE7QUFKRjtBQUtGLEVBQUEsSUFBSSxFQUFBO0FBQUE7QUFMRjtBQU1GLEVBQUEsS0FBSyxFQUFBO0FBQUE7QUFOSDtBQU9GLEVBQUEsSUFBSSxFQUFBO0FBQUE7O0FBUEYsQ0FGSjtBQVlBLElBQU0sa0JBQWtCLEdBRXBCLENBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxPQUFBLEVBQUEsTUFBQSxFQUFBLE1BQUEsRUFBQSxPQUFBLEVBRkosTUFFSSxDQUZKO0FBSUEsT0FBTSxTQUFBLGVBQUEsQ0FBQSxRQUFBLEVBQTBDOzs7QUFDOUMsU0FBQSxDQUFBLEVBQUEsR0FBTyxrQkFBa0IsQ0FBekIsUUFBeUIsQ0FBekIsTUFBQSxJQUFBLElBQW1DLEVBQUEsS0FBQSxLQUFuQyxDQUFBLEdBQUEsRUFBQSxHQUFBLFFBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxlQUFBLENBQUEsUUFBQSxFQUE4RDtBQUNsRSxTQUFPLE9BQUEsUUFBQSxLQUFBLFFBQUEsR0FBQSxRQUFBLEdBQTBDLGtCQUFrQixDQUFuRSxRQUFtRSxDQUFuRTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCwgV2VsbEtub3duQXR0ck5hbWUsIFdlbGxLbm93blRhZ05hbWUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuLy8gVGhlcmUgaXMgYSBzbWFsbCB3aGl0ZWxpc3Qgb2YgbmFtZXNwYWNlZCBhdHRyaWJ1dGVzIHNwZWNpYWxseVxuLy8gZW51bWVyYXRlZCBpblxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0wXG4vL1xuLy8gPiBXaGVuIGEgZm9yZWlnbiBlbGVtZW50IGhhcyBvbmUgb2YgdGhlIG5hbWVzcGFjZWQgYXR0cmlidXRlcyBnaXZlbiBieVxuLy8gPiB0aGUgbG9jYWwgbmFtZSBhbmQgbmFtZXNwYWNlIG9mIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGNlbGxzIG9mIGEgcm93XG4vLyA+IGZyb20gdGhlIGZvbGxvd2luZyB0YWJsZSwgaXQgbXVzdCBiZSB3cml0dGVuIHVzaW5nIHRoZSBuYW1lIGdpdmVuIGJ5XG4vLyA+IHRoZSB0aGlyZCBjZWxsIGZyb20gdGhlIHNhbWUgcm93LlxuLy9cbi8vIEluIGFsbCBvdGhlciBjYXNlcywgY29sb25zIGFyZSBpbnRlcnByZXRlZCBhcyBhIHJlZ3VsYXIgY2hhcmFjdGVyXG4vLyB3aXRoIG5vIHNwZWNpYWwgbWVhbmluZzpcbi8vXG4vLyA+IE5vIG90aGVyIG5hbWVzcGFjZWQgYXR0cmlidXRlIGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIEhUTUwgc3ludGF4LlxuXG5jb25zdCBYTElOSyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbmNvbnN0IFhNTCA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnO1xuY29uc3QgWE1MTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nO1xuXG5jb25zdCBXSElURUxJU1Q6IERpY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IHtcbiAgJ3hsaW5rOmFjdHVhdGUnOiBYTElOSyxcbiAgJ3hsaW5rOmFyY3JvbGUnOiBYTElOSyxcbiAgJ3hsaW5rOmhyZWYnOiBYTElOSyxcbiAgJ3hsaW5rOnJvbGUnOiBYTElOSyxcbiAgJ3hsaW5rOnNob3cnOiBYTElOSyxcbiAgJ3hsaW5rOnRpdGxlJzogWExJTkssXG4gICd4bGluazp0eXBlJzogWExJTkssXG4gICd4bWw6YmFzZSc6IFhNTCxcbiAgJ3htbDpsYW5nJzogWE1MLFxuICAneG1sOnNwYWNlJzogWE1MLFxuICB4bWxuczogWE1MTlMsXG4gICd4bWxuczp4bGluayc6IFhNTE5TLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF0dHJOYW1lc3BhY2UoYXR0ck5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBXSElURUxJU1RbYXR0ck5hbWVdO1xufVxuXG5jb25zdCBERUZMQVRFX1RBR19UQUJMRToge1xuICBbdGFnTmFtZTogc3RyaW5nXTogV2VsbEtub3duVGFnTmFtZSB8IHVuZGVmaW5lZDtcbn0gPSB7XG4gIGRpdjogV2VsbEtub3duVGFnTmFtZS5kaXYsXG4gIHNwYW46IFdlbGxLbm93blRhZ05hbWUuc3BhbixcbiAgcDogV2VsbEtub3duVGFnTmFtZS5wLFxuICBhOiBXZWxsS25vd25UYWdOYW1lLmEsXG59O1xuXG5jb25zdCBJTkZMQVRFX1RBR19UQUJMRToge1xuICBbSSBpbiBXZWxsS25vd25UYWdOYW1lXTogc3RyaW5nO1xufSA9IFsnZGl2JywgJ3NwYW4nLCAncCcsICdhJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZsYXRlVGFnTmFtZSh0YWdOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBXZWxsS25vd25UYWdOYW1lIHtcbiAgcmV0dXJuIERFRkxBVEVfVEFHX1RBQkxFW3RhZ05hbWVdID8/IHRhZ05hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZsYXRlVGFnTmFtZSh0YWdOYW1lOiBzdHJpbmcgfCBXZWxsS25vd25UYWdOYW1lKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB0YWdOYW1lID09PSAnc3RyaW5nJyA/IHRhZ05hbWUgOiBJTkZMQVRFX1RBR19UQUJMRVt0YWdOYW1lXTtcbn1cblxuY29uc3QgREVGTEFURV9BVFRSX1RBQkxFOiB7XG4gIFt0YWdOYW1lOiBzdHJpbmddOiBXZWxsS25vd25BdHRyTmFtZSB8IHVuZGVmaW5lZDtcbn0gPSB7XG4gIGNsYXNzOiBXZWxsS25vd25BdHRyTmFtZS5jbGFzcyxcbiAgaWQ6IFdlbGxLbm93bkF0dHJOYW1lLmlkLFxuICB2YWx1ZTogV2VsbEtub3duQXR0ck5hbWUudmFsdWUsXG4gIG5hbWU6IFdlbGxLbm93bkF0dHJOYW1lLm5hbWUsXG4gIHR5cGU6IFdlbGxLbm93bkF0dHJOYW1lLnR5cGUsXG4gIHN0eWxlOiBXZWxsS25vd25BdHRyTmFtZS5zdHlsZSxcbiAgaHJlZjogV2VsbEtub3duQXR0ck5hbWUuaHJlZixcbn07XG5cbmNvbnN0IElORkxBVEVfQVRUUl9UQUJMRToge1xuICBbSSBpbiBXZWxsS25vd25BdHRyTmFtZV06IHN0cmluZztcbn0gPSBbJ2NsYXNzJywgJ2lkJywgJ3ZhbHVlJywgJ25hbWUnLCAndHlwZScsICdzdHlsZScsICdocmVmJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZsYXRlQXR0ck5hbWUoYXR0ck5hbWU6IHN0cmluZyk6IHN0cmluZyB8IFdlbGxLbm93bkF0dHJOYW1lIHtcbiAgcmV0dXJuIERFRkxBVEVfQVRUUl9UQUJMRVthdHRyTmFtZV0gPz8gYXR0ck5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZsYXRlQXR0ck5hbWUoYXR0ck5hbWU6IHN0cmluZyB8IFdlbGxLbm93bkF0dHJOYW1lKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiBhdHRyTmFtZSA9PT0gJ3N0cmluZycgPyBhdHRyTmFtZSA6IElORkxBVEVfQVRUUl9UQUJMRVthdHRyTmFtZV07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9