ngx-editor-custom
Version:
WYSIWYG Editor for Angular Applications
50 lines (49 loc) • 4.32 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @record
*/
function IMaxLengthValidatorOptions() { }
/** @type {?|undefined} */
IMaxLengthValidatorOptions.prototype.excludeLineBreaks;
/** @type {?|undefined} */
IMaxLengthValidatorOptions.prototype.concatWhiteSpaces;
/** @type {?|undefined} */
IMaxLengthValidatorOptions.prototype.excludeWhiteSpaces;
/**
* @param {?} maxlength
* @param {?=} options
* @return {?}
*/
export function MaxLengthValidator(maxlength, options) {
return function (control) {
/** @type {?} */
var parsedDocument = new DOMParser().parseFromString(control.value, 'text/html');
/** @type {?} */
var innerText = parsedDocument.body.innerText || '';
// replace all linebreaks
if (options.excludeLineBreaks) {
innerText = innerText.replace(/(\r\n\t|\n|\r\t)/gm, '');
}
// concat multiple whitespaces into a single whitespace
if (options.concatWhiteSpaces) {
innerText = innerText.replace(/(\s\s+)/gm, ' ');
}
// remove all whitespaces
if (options.excludeWhiteSpaces) {
innerText = innerText.replace(/(\s)/gm, '');
}
if (innerText.length > maxlength) {
return {
ngxEditor: {
allowedLength: maxlength,
textLength: innerText.length
}
};
}
return null;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4bGVuZ3RoLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1lZGl0b3ItY3VzdG9tLyIsInNvdXJjZXMiOlsiYXBwL25neC1lZGl0b3IvdmFsaWRhdG9ycy9tYXhsZW5ndGgtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxNQUFNLDZCQUE2QixTQUFpQixFQUFFLE9BQW9DO0lBQ3hGLE9BQU8sVUFBQyxPQUF3Qjs7UUFDOUIsSUFBTSxjQUFjLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQzs7UUFDbkYsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDOztRQUdwRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QixTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN6RDs7UUFHRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QixTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDakQ7O1FBR0QsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZQUNoQyxPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxhQUFhLEVBQUUsU0FBUztvQkFDeEIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNO2lCQUM3QjthQUNGLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbnRlcmZhY2UgSU1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMge1xuICBleGNsdWRlTGluZUJyZWFrcz86IGJvb2xlYW47XG4gIGNvbmNhdFdoaXRlU3BhY2VzPzogYm9vbGVhbjtcbiAgZXhjbHVkZVdoaXRlU3BhY2VzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1heExlbmd0aFZhbGlkYXRvcihtYXhsZW5ndGg6IG51bWJlciwgb3B0aW9ucz86IElNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHBhcnNlZERvY3VtZW50ID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhjb250cm9sLnZhbHVlLCAndGV4dC9odG1sJyk7XG4gICAgbGV0IGlubmVyVGV4dCA9IHBhcnNlZERvY3VtZW50LmJvZHkuaW5uZXJUZXh0IHx8ICcnO1xuXG4gICAgLy8gcmVwbGFjZSBhbGwgbGluZWJyZWFrc1xuICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVMaW5lQnJlYWtzKSB7XG4gICAgICBpbm5lclRleHQgPSBpbm5lclRleHQucmVwbGFjZSgvKFxcclxcblxcdHxcXG58XFxyXFx0KS9nbSwgJycpO1xuICAgIH1cblxuICAgIC8vIGNvbmNhdCBtdWx0aXBsZSB3aGl0ZXNwYWNlcyBpbnRvIGEgc2luZ2xlIHdoaXRlc3BhY2VcbiAgICBpZiAob3B0aW9ucy5jb25jYXRXaGl0ZVNwYWNlcykge1xuICAgICAgaW5uZXJUZXh0ID0gaW5uZXJUZXh0LnJlcGxhY2UoLyhcXHNcXHMrKS9nbSwgJyAnKTtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHdoaXRlc3BhY2VzXG4gICAgaWYgKG9wdGlvbnMuZXhjbHVkZVdoaXRlU3BhY2VzKSB7XG4gICAgICBpbm5lclRleHQgPSBpbm5lclRleHQucmVwbGFjZSgvKFxccykvZ20sICcnKTtcbiAgICB9XG5cbiAgICBpZiAoaW5uZXJUZXh0Lmxlbmd0aCA+IG1heGxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmd4RWRpdG9yOiB7XG4gICAgICAgICAgYWxsb3dlZExlbmd0aDogbWF4bGVuZ3RoLFxuICAgICAgICAgIHRleHRMZW5ndGg6IGlubmVyVGV4dC5sZW5ndGhcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG4iXX0=