@glimmer/compiler
Version:
89 lines (85 loc) • 7.97 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.
const XLINK = 'http://www.w3.org/1999/xlink';
const XML = 'http://www.w3.org/XML/1998/namespace';
const XMLNS = 'http://www.w3.org/2000/xmlns/';
const 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];
}
const DEFLATE_TAG_TABLE = {
div: 0
/* div */
,
span: 1
/* span */
,
p: 2
/* p */
,
a: 3
/* a */
};
const 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];
}
const DEFLATE_ATTR_TABLE = {
class: 0
/* class */
,
id: 1
/* id */
,
value: 2
/* value */
,
name: 3
/* name */
,
type: 4
/* type */
,
style: 5
/* style */
,
href: 6
/* href */
};
const 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU0sS0FBSyxHQUFHLDhCQUFkO0FBQ0EsTUFBTSxHQUFHLEdBQUcsc0NBQVo7QUFDQSxNQUFNLEtBQUssR0FBRywrQkFBZDtBQUVBLE1BQU0sU0FBUyxHQUE2QjtBQUMxQyxtQkFBaUIsS0FEeUI7QUFFMUMsbUJBQWlCLEtBRnlCO0FBRzFDLGdCQUFjLEtBSDRCO0FBSTFDLGdCQUFjLEtBSjRCO0FBSzFDLGdCQUFjLEtBTDRCO0FBTTFDLGlCQUFlLEtBTjJCO0FBTzFDLGdCQUFjLEtBUDRCO0FBUTFDLGNBQVksR0FSOEI7QUFTMUMsY0FBWSxHQVQ4QjtBQVUxQyxlQUFhLEdBVjZCO0FBVzFDLEVBQUEsS0FBSyxFQUFFLEtBWG1DO0FBWTFDLGlCQUFlO0FBWjJCLENBQTVDO0FBZUEsT0FBTSxTQUFVLGdCQUFWLENBQTJCLFFBQTNCLEVBQTJDO0FBQy9DLFNBQU8sU0FBUyxDQUFDLFFBQUQsQ0FBaEI7QUFDRDtBQUVELE1BQU0saUJBQWlCLEdBRW5CO0FBQ0YsRUFBQSxHQUFHLEVBQUE7QUFBQTtBQUREO0FBRUYsRUFBQSxJQUFJLEVBQUE7QUFBQTtBQUZGO0FBR0YsRUFBQSxDQUFDLEVBQUE7QUFBQTtBQUhDO0FBSUYsRUFBQSxDQUFDLEVBQUE7QUFBQTs7QUFKQyxDQUZKO0FBU0EsTUFBTSxpQkFBaUIsR0FFbkIsQ0FBQyxLQUFELEVBQVEsTUFBUixFQUFnQixHQUFoQixFQUFxQixHQUFyQixDQUZKO0FBSUEsT0FBTSxTQUFVLGNBQVYsQ0FBeUIsT0FBekIsRUFBd0M7OztBQUM1QyxTQUFBLENBQUEsRUFBQSxHQUFPLGlCQUFpQixDQUFDLE9BQUQsQ0FBeEIsTUFBaUMsSUFBakMsSUFBaUMsRUFBQSxLQUFBLEtBQUEsQ0FBakMsR0FBaUMsRUFBakMsR0FBcUMsT0FBckM7QUFDRDtBQUVELE9BQU0sU0FBVSxjQUFWLENBQXlCLE9BQXpCLEVBQTJEO0FBQy9ELFNBQU8sT0FBTyxPQUFQLEtBQW1CLFFBQW5CLEdBQThCLE9BQTlCLEdBQXdDLGlCQUFpQixDQUFDLE9BQUQsQ0FBaEU7QUFDRDtBQUVELE1BQU0sa0JBQWtCLEdBRXBCO0FBQ0YsRUFBQSxLQUFLLEVBQUE7QUFBQTtBQURIO0FBRUYsRUFBQSxFQUFFLEVBQUE7QUFBQTtBQUZBO0FBR0YsRUFBQSxLQUFLLEVBQUE7QUFBQTtBQUhIO0FBSUYsRUFBQSxJQUFJLEVBQUE7QUFBQTtBQUpGO0FBS0YsRUFBQSxJQUFJLEVBQUE7QUFBQTtBQUxGO0FBTUYsRUFBQSxLQUFLLEVBQUE7QUFBQTtBQU5IO0FBT0YsRUFBQSxJQUFJLEVBQUE7QUFBQTs7QUFQRixDQUZKO0FBWUEsTUFBTSxrQkFBa0IsR0FFcEIsQ0FBQyxPQUFELEVBQVUsSUFBVixFQUFnQixPQUFoQixFQUF5QixNQUF6QixFQUFpQyxNQUFqQyxFQUF5QyxPQUF6QyxFQUFrRCxNQUFsRCxDQUZKO0FBSUEsT0FBTSxTQUFVLGVBQVYsQ0FBMEIsUUFBMUIsRUFBMEM7OztBQUM5QyxTQUFBLENBQUEsRUFBQSxHQUFPLGtCQUFrQixDQUFDLFFBQUQsQ0FBekIsTUFBbUMsSUFBbkMsSUFBbUMsRUFBQSxLQUFBLEtBQUEsQ0FBbkMsR0FBbUMsRUFBbkMsR0FBdUMsUUFBdkM7QUFDRDtBQUVELE9BQU0sU0FBVSxlQUFWLENBQTBCLFFBQTFCLEVBQThEO0FBQ2xFLFNBQU8sT0FBTyxRQUFQLEtBQW9CLFFBQXBCLEdBQStCLFFBQS9CLEdBQTBDLGtCQUFrQixDQUFDLFFBQUQsQ0FBbkU7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3QsIFdlbGxLbm93bkF0dHJOYW1lLCBXZWxsS25vd25UYWdOYW1lIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbi8vIFRoZXJlIGlzIGEgc21hbGwgd2hpdGVsaXN0IG9mIG5hbWVzcGFjZWQgYXR0cmlidXRlcyBzcGVjaWFsbHlcbi8vIGVudW1lcmF0ZWQgaW5cbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMFxuLy9cbi8vID4gV2hlbiBhIGZvcmVpZ24gZWxlbWVudCBoYXMgb25lIG9mIHRoZSBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgZ2l2ZW4gYnlcbi8vID4gdGhlIGxvY2FsIG5hbWUgYW5kIG5hbWVzcGFjZSBvZiB0aGUgZmlyc3QgYW5kIHNlY29uZCBjZWxscyBvZiBhIHJvd1xuLy8gPiBmcm9tIHRoZSBmb2xsb3dpbmcgdGFibGUsIGl0IG11c3QgYmUgd3JpdHRlbiB1c2luZyB0aGUgbmFtZSBnaXZlbiBieVxuLy8gPiB0aGUgdGhpcmQgY2VsbCBmcm9tIHRoZSBzYW1lIHJvdy5cbi8vXG4vLyBJbiBhbGwgb3RoZXIgY2FzZXMsIGNvbG9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSByZWd1bGFyIGNoYXJhY3RlclxuLy8gd2l0aCBubyBzcGVjaWFsIG1lYW5pbmc6XG4vL1xuLy8gPiBObyBvdGhlciBuYW1lc3BhY2VkIGF0dHJpYnV0ZSBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBIVE1MIHN5bnRheC5cblxuY29uc3QgWExJTksgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5jb25zdCBYTUwgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcbmNvbnN0IFhNTE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJztcblxuY29uc3QgV0hJVEVMSVNUOiBEaWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSB7XG4gICd4bGluazphY3R1YXRlJzogWExJTkssXG4gICd4bGluazphcmNyb2xlJzogWExJTkssXG4gICd4bGluazpocmVmJzogWExJTkssXG4gICd4bGluazpyb2xlJzogWExJTkssXG4gICd4bGluazpzaG93JzogWExJTkssXG4gICd4bGluazp0aXRsZSc6IFhMSU5LLFxuICAneGxpbms6dHlwZSc6IFhMSU5LLFxuICAneG1sOmJhc2UnOiBYTUwsXG4gICd4bWw6bGFuZyc6IFhNTCxcbiAgJ3htbDpzcGFjZSc6IFhNTCxcbiAgeG1sbnM6IFhNTE5TLFxuICAneG1sbnM6eGxpbmsnOiBYTUxOUyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdHRyTmFtZXNwYWNlKGF0dHJOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gV0hJVEVMSVNUW2F0dHJOYW1lXTtcbn1cblxuY29uc3QgREVGTEFURV9UQUdfVEFCTEU6IHtcbiAgW3RhZ05hbWU6IHN0cmluZ106IFdlbGxLbm93blRhZ05hbWUgfCB1bmRlZmluZWQ7XG59ID0ge1xuICBkaXY6IFdlbGxLbm93blRhZ05hbWUuZGl2LFxuICBzcGFuOiBXZWxsS25vd25UYWdOYW1lLnNwYW4sXG4gIHA6IFdlbGxLbm93blRhZ05hbWUucCxcbiAgYTogV2VsbEtub3duVGFnTmFtZS5hLFxufTtcblxuY29uc3QgSU5GTEFURV9UQUdfVEFCTEU6IHtcbiAgW0kgaW4gV2VsbEtub3duVGFnTmFtZV06IHN0cmluZztcbn0gPSBbJ2RpdicsICdzcGFuJywgJ3AnLCAnYSddO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmbGF0ZVRhZ05hbWUodGFnTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgV2VsbEtub3duVGFnTmFtZSB7XG4gIHJldHVybiBERUZMQVRFX1RBR19UQUJMRVt0YWdOYW1lXSA/PyB0YWdOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mbGF0ZVRhZ05hbWUodGFnTmFtZTogc3RyaW5nIHwgV2VsbEtub3duVGFnTmFtZSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdGFnTmFtZSA9PT0gJ3N0cmluZycgPyB0YWdOYW1lIDogSU5GTEFURV9UQUdfVEFCTEVbdGFnTmFtZV07XG59XG5cbmNvbnN0IERFRkxBVEVfQVRUUl9UQUJMRToge1xuICBbdGFnTmFtZTogc3RyaW5nXTogV2VsbEtub3duQXR0ck5hbWUgfCB1bmRlZmluZWQ7XG59ID0ge1xuICBjbGFzczogV2VsbEtub3duQXR0ck5hbWUuY2xhc3MsXG4gIGlkOiBXZWxsS25vd25BdHRyTmFtZS5pZCxcbiAgdmFsdWU6IFdlbGxLbm93bkF0dHJOYW1lLnZhbHVlLFxuICBuYW1lOiBXZWxsS25vd25BdHRyTmFtZS5uYW1lLFxuICB0eXBlOiBXZWxsS25vd25BdHRyTmFtZS50eXBlLFxuICBzdHlsZTogV2VsbEtub3duQXR0ck5hbWUuc3R5bGUsXG4gIGhyZWY6IFdlbGxLbm93bkF0dHJOYW1lLmhyZWYsXG59O1xuXG5jb25zdCBJTkZMQVRFX0FUVFJfVEFCTEU6IHtcbiAgW0kgaW4gV2VsbEtub3duQXR0ck5hbWVdOiBzdHJpbmc7XG59ID0gWydjbGFzcycsICdpZCcsICd2YWx1ZScsICduYW1lJywgJ3R5cGUnLCAnc3R5bGUnLCAnaHJlZiddO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmbGF0ZUF0dHJOYW1lKGF0dHJOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBXZWxsS25vd25BdHRyTmFtZSB7XG4gIHJldHVybiBERUZMQVRFX0FUVFJfVEFCTEVbYXR0ck5hbWVdID8/IGF0dHJOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mbGF0ZUF0dHJOYW1lKGF0dHJOYW1lOiBzdHJpbmcgfCBXZWxsS25vd25BdHRyTmFtZSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgYXR0ck5hbWUgPT09ICdzdHJpbmcnID8gYXR0ck5hbWUgOiBJTkZMQVRFX0FUVFJfVEFCTEVbYXR0ck5hbWVdO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==