UNPKG

ember-legacy-class-transform

Version:
74 lines (73 loc) 7.91 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeProperty = normalizeProperty; exports.normalizePropertyValue = normalizePropertyValue; /* * @method normalizeProperty * @param element {HTMLElement} * @param slotName {String} * @returns {Object} { name, type } */ function normalizeProperty(element, slotName) { let type, normalized; if (slotName in element) { normalized = slotName; type = 'prop'; } else { let lower = slotName.toLowerCase(); if (lower in element) { type = 'prop'; normalized = lower; } else { type = 'attr'; normalized = slotName; } } if (type === 'prop' && (normalized.toLowerCase() === 'style' || preferAttr(element.tagName, normalized))) { type = 'attr'; } return { normalized, type }; } function normalizePropertyValue(value) { if (value === '') { return true; } return value; } // properties that MUST be set as attributes, due to: // * browser bug // * strange spec outlier const ATTR_OVERRIDES = { // phantomjs < 2.0 lets you set it as a prop but won't reflect it // back to the attribute. button.getAttribute('type') === null BUTTON: { type: true, form: true }, INPUT: { // Some version of IE (like IE9) actually throw an exception // if you set input.type = 'something-unknown' type: true, form: true, // Chrome 46.0.2464.0: 'autocorrect' in document.createElement('input') === false // Safari 8.0.7: 'autocorrect' in document.createElement('input') === false // Mobile Safari (iOS 8.4 simulator): 'autocorrect' in document.createElement('input') === true autocorrect: true, // Chrome 54.0.2840.98: 'list' in document.createElement('input') === true // Safari 9.1.3: 'list' in document.createElement('input') === false list: true }, // element.form is actually a legitimate readOnly property, that is to be // mutated, but must be mutated by setAttribute... SELECT: { form: true }, OPTION: { form: true }, TEXTAREA: { form: true }, LABEL: { form: true }, FIELDSET: { form: true }, LEGEND: { form: true }, OBJECT: { form: true } }; function preferAttr(tagName, propName) { let tag = ATTR_OVERRIDES[tagName.toUpperCase()]; return tag && tag[propName.toLowerCase()] || false; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vcHJvcHMuanMiXSwibmFtZXMiOlsibm9ybWFsaXplUHJvcGVydHkiLCJub3JtYWxpemVQcm9wZXJ0eVZhbHVlIiwiZWxlbWVudCIsInNsb3ROYW1lIiwidHlwZSIsIm5vcm1hbGl6ZWQiLCJsb3dlciIsInRvTG93ZXJDYXNlIiwicHJlZmVyQXR0ciIsInRhZ05hbWUiLCJ2YWx1ZSIsIkFUVFJfT1ZFUlJJREVTIiwiQlVUVE9OIiwiZm9ybSIsIklOUFVUIiwiYXV0b2NvcnJlY3QiLCJsaXN0IiwiU0VMRUNUIiwiT1BUSU9OIiwiVEVYVEFSRUEiLCJMQUJFTCIsIkZJRUxEU0VUIiwiTEVHRU5EIiwiT0JKRUNUIiwicHJvcE5hbWUiLCJ0YWciLCJ0b1VwcGVyQ2FzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFNZ0JBLGlCLEdBQUFBLGlCO1FBb0JBQyxzQixHQUFBQSxzQjtBQTFCaEI7Ozs7OztBQU1PLFNBQVNELGlCQUFULENBQTJCRSxPQUEzQixFQUFvQ0MsUUFBcEMsRUFBOEM7QUFDakQsUUFBSUMsSUFBSixFQUFVQyxVQUFWO0FBQ0EsUUFBSUYsWUFBWUQsT0FBaEIsRUFBeUI7QUFDckJHLHFCQUFhRixRQUFiO0FBQ0FDLGVBQU8sTUFBUDtBQUNILEtBSEQsTUFHTztBQUNILFlBQUlFLFFBQVFILFNBQVNJLFdBQVQsRUFBWjtBQUNBLFlBQUlELFNBQVNKLE9BQWIsRUFBc0I7QUFDbEJFLG1CQUFPLE1BQVA7QUFDQUMseUJBQWFDLEtBQWI7QUFDSCxTQUhELE1BR087QUFDSEYsbUJBQU8sTUFBUDtBQUNBQyx5QkFBYUYsUUFBYjtBQUNIO0FBQ0o7QUFDRCxRQUFJQyxTQUFTLE1BQVQsS0FBb0JDLFdBQVdFLFdBQVgsT0FBNkIsT0FBN0IsSUFBd0NDLFdBQVdOLFFBQVFPLE9BQW5CLEVBQTRCSixVQUE1QixDQUE1RCxDQUFKLEVBQTBHO0FBQ3RHRCxlQUFPLE1BQVA7QUFDSDtBQUNELFdBQU8sRUFBRUMsVUFBRixFQUFjRCxJQUFkLEVBQVA7QUFDSDtBQUNNLFNBQVNILHNCQUFULENBQWdDUyxLQUFoQyxFQUF1QztBQUMxQyxRQUFJQSxVQUFVLEVBQWQsRUFBa0I7QUFDZCxlQUFPLElBQVA7QUFDSDtBQUNELFdBQU9BLEtBQVA7QUFDSDtBQUNEO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLGlCQUFpQjtBQUNuQjtBQUNBO0FBQ0FDLFlBQVEsRUFBRVIsTUFBTSxJQUFSLEVBQWNTLE1BQU0sSUFBcEIsRUFIVztBQUluQkMsV0FBTztBQUNIO0FBQ0E7QUFDQVYsY0FBTSxJQUhIO0FBSUhTLGNBQU0sSUFKSDtBQUtIO0FBQ0E7QUFDQTtBQUNBRSxxQkFBYSxJQVJWO0FBU0g7QUFDQTtBQUNBQyxjQUFNO0FBWEgsS0FKWTtBQWlCbkI7QUFDQTtBQUNBQyxZQUFRLEVBQUVKLE1BQU0sSUFBUixFQW5CVztBQW9CbkJLLFlBQVEsRUFBRUwsTUFBTSxJQUFSLEVBcEJXO0FBcUJuQk0sY0FBVSxFQUFFTixNQUFNLElBQVIsRUFyQlM7QUFzQm5CTyxXQUFPLEVBQUVQLE1BQU0sSUFBUixFQXRCWTtBQXVCbkJRLGNBQVUsRUFBRVIsTUFBTSxJQUFSLEVBdkJTO0FBd0JuQlMsWUFBUSxFQUFFVCxNQUFNLElBQVIsRUF4Qlc7QUF5Qm5CVSxZQUFRLEVBQUVWLE1BQU0sSUFBUjtBQXpCVyxDQUF2QjtBQTJCQSxTQUFTTCxVQUFULENBQW9CQyxPQUFwQixFQUE2QmUsUUFBN0IsRUFBdUM7QUFDbkMsUUFBSUMsTUFBTWQsZUFBZUYsUUFBUWlCLFdBQVIsRUFBZixDQUFWO0FBQ0EsV0FBT0QsT0FBT0EsSUFBSUQsU0FBU2pCLFdBQVQsRUFBSixDQUFQLElBQXNDLEtBQTdDO0FBQ0giLCJmaWxlIjoibGliL2RvbS9wcm9wcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAbWV0aG9kIG5vcm1hbGl6ZVByb3BlcnR5XG4gKiBAcGFyYW0gZWxlbWVudCB7SFRNTEVsZW1lbnR9XG4gKiBAcGFyYW0gc2xvdE5hbWUge1N0cmluZ31cbiAqIEByZXR1cm5zIHtPYmplY3R9IHsgbmFtZSwgdHlwZSB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQcm9wZXJ0eShlbGVtZW50LCBzbG90TmFtZSkge1xuICAgIGxldCB0eXBlLCBub3JtYWxpemVkO1xuICAgIGlmIChzbG90TmFtZSBpbiBlbGVtZW50KSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBzbG90TmFtZTtcbiAgICAgICAgdHlwZSA9ICdwcm9wJztcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgbG93ZXIgPSBzbG90TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAobG93ZXIgaW4gZWxlbWVudCkge1xuICAgICAgICAgICAgdHlwZSA9ICdwcm9wJztcbiAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBsb3dlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHR5cGUgPSAnYXR0cic7XG4gICAgICAgICAgICBub3JtYWxpemVkID0gc2xvdE5hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdwcm9wJyAmJiAobm9ybWFsaXplZC50b0xvd2VyQ2FzZSgpID09PSAnc3R5bGUnIHx8IHByZWZlckF0dHIoZWxlbWVudC50YWdOYW1lLCBub3JtYWxpemVkKSkpIHtcbiAgICAgICAgdHlwZSA9ICdhdHRyJztcbiAgICB9XG4gICAgcmV0dXJuIHsgbm9ybWFsaXplZCwgdHlwZSB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BlcnR5VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG4vLyBwcm9wZXJ0aWVzIHRoYXQgTVVTVCBiZSBzZXQgYXMgYXR0cmlidXRlcywgZHVlIHRvOlxuLy8gKiBicm93c2VyIGJ1Z1xuLy8gKiBzdHJhbmdlIHNwZWMgb3V0bGllclxuY29uc3QgQVRUUl9PVkVSUklERVMgPSB7XG4gICAgLy8gcGhhbnRvbWpzIDwgMi4wIGxldHMgeW91IHNldCBpdCBhcyBhIHByb3AgYnV0IHdvbid0IHJlZmxlY3QgaXRcbiAgICAvLyBiYWNrIHRvIHRoZSBhdHRyaWJ1dGUuIGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gbnVsbFxuICAgIEJVVFRPTjogeyB0eXBlOiB0cnVlLCBmb3JtOiB0cnVlIH0sXG4gICAgSU5QVVQ6IHtcbiAgICAgICAgLy8gU29tZSB2ZXJzaW9uIG9mIElFIChsaWtlIElFOSkgYWN0dWFsbHkgdGhyb3cgYW4gZXhjZXB0aW9uXG4gICAgICAgIC8vIGlmIHlvdSBzZXQgaW5wdXQudHlwZSA9ICdzb21ldGhpbmctdW5rbm93bidcbiAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgZm9ybTogdHJ1ZSxcbiAgICAgICAgLy8gQ2hyb21lIDQ2LjAuMjQ2NC4wOiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IGZhbHNlXG4gICAgICAgIC8vIFNhZmFyaSA4LjAuNzogJ2F1dG9jb3JyZWN0JyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpID09PSBmYWxzZVxuICAgICAgICAvLyBNb2JpbGUgU2FmYXJpIChpT1MgOC40IHNpbXVsYXRvcik6ICdhdXRvY29ycmVjdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSA9PT0gdHJ1ZVxuICAgICAgICBhdXRvY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgLy8gQ2hyb21lIDU0LjAuMjg0MC45ODogJ2xpc3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IHRydWVcbiAgICAgICAgLy8gU2FmYXJpIDkuMS4zOiAnbGlzdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSA9PT0gZmFsc2VcbiAgICAgICAgbGlzdDogdHJ1ZVxuICAgIH0sXG4gICAgLy8gZWxlbWVudC5mb3JtIGlzIGFjdHVhbGx5IGEgbGVnaXRpbWF0ZSByZWFkT25seSBwcm9wZXJ0eSwgdGhhdCBpcyB0byBiZVxuICAgIC8vIG11dGF0ZWQsIGJ1dCBtdXN0IGJlIG11dGF0ZWQgYnkgc2V0QXR0cmlidXRlLi4uXG4gICAgU0VMRUNUOiB7IGZvcm06IHRydWUgfSxcbiAgICBPUFRJT046IHsgZm9ybTogdHJ1ZSB9LFxuICAgIFRFWFRBUkVBOiB7IGZvcm06IHRydWUgfSxcbiAgICBMQUJFTDogeyBmb3JtOiB0cnVlIH0sXG4gICAgRklFTERTRVQ6IHsgZm9ybTogdHJ1ZSB9LFxuICAgIExFR0VORDogeyBmb3JtOiB0cnVlIH0sXG4gICAgT0JKRUNUOiB7IGZvcm06IHRydWUgfVxufTtcbmZ1bmN0aW9uIHByZWZlckF0dHIodGFnTmFtZSwgcHJvcE5hbWUpIHtcbiAgICBsZXQgdGFnID0gQVRUUl9PVkVSUklERVNbdGFnTmFtZS50b1VwcGVyQ2FzZSgpXTtcbiAgICByZXR1cm4gdGFnICYmIHRhZ1twcm9wTmFtZS50b0xvd2VyQ2FzZSgpXSB8fCBmYWxzZTtcbn0iXX0=