@iget/editor
Version:
WYSIWYG Editor for Angular Material applications
28 lines • 3.84 kB
JavaScript
export function MaxLengthValidator(maxlength, options) {
return (control) => {
const parsedDocument = new DOMParser().parseFromString(control.value, 'text/html');
let 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 {
IgetEditor: {
allowedLength: maxlength,
textLength: innerText.length
}
};
}
return null;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4bGVuZ3RoLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaWdldC1lZGl0b3IvdmFsaWRhdG9ycy9tYXhsZW5ndGgtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLE9BQW9DO0lBQ3hGLE9BQU8sQ0FBQyxPQUF3QixFQUFpQyxFQUFFO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkYsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBRXBELHlCQUF5QjtRQUN6QixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QixTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN6RDtRQUVELHVEQUF1RDtRQUN2RCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QixTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDakQ7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZQUNoQyxPQUFPO2dCQUNMLFVBQVUsRUFBRTtvQkFDVixhQUFhLEVBQUUsU0FBUztvQkFDeEIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNO2lCQUM3QjthQUNGLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW50ZXJmYWNlIElNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zIHtcbiAgZXhjbHVkZUxpbmVCcmVha3M/OiBib29sZWFuO1xuICBjb25jYXRXaGl0ZVNwYWNlcz86IGJvb2xlYW47XG4gIGV4Y2x1ZGVXaGl0ZVNwYWNlcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXhMZW5ndGhWYWxpZGF0b3IobWF4bGVuZ3RoOiBudW1iZXIsIG9wdGlvbnM/OiBJTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucykge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcbiAgICBjb25zdCBwYXJzZWREb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoY29udHJvbC52YWx1ZSwgJ3RleHQvaHRtbCcpO1xuICAgIGxldCBpbm5lclRleHQgPSBwYXJzZWREb2N1bWVudC5ib2R5LmlubmVyVGV4dCB8fCAnJztcblxuICAgIC8vIHJlcGxhY2UgYWxsIGxpbmVicmVha3NcbiAgICBpZiAob3B0aW9ucy5leGNsdWRlTGluZUJyZWFrcykge1xuICAgICAgaW5uZXJUZXh0ID0gaW5uZXJUZXh0LnJlcGxhY2UoLyhcXHJcXG5cXHR8XFxufFxcclxcdCkvZ20sICcnKTtcbiAgICB9XG5cbiAgICAvLyBjb25jYXQgbXVsdGlwbGUgd2hpdGVzcGFjZXMgaW50byBhIHNpbmdsZSB3aGl0ZXNwYWNlXG4gICAgaWYgKG9wdGlvbnMuY29uY2F0V2hpdGVTcGFjZXMpIHtcbiAgICAgIGlubmVyVGV4dCA9IGlubmVyVGV4dC5yZXBsYWNlKC8oXFxzXFxzKykvZ20sICcgJyk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCB3aGl0ZXNwYWNlc1xuICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVXaGl0ZVNwYWNlcykge1xuICAgICAgaW5uZXJUZXh0ID0gaW5uZXJUZXh0LnJlcGxhY2UoLyhcXHMpL2dtLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKGlubmVyVGV4dC5sZW5ndGggPiBtYXhsZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIElnZXRFZGl0b3I6IHtcbiAgICAgICAgICBhbGxvd2VkTGVuZ3RoOiBtYXhsZW5ndGgsXG4gICAgICAgICAgdGV4dExlbmd0aDogaW5uZXJUZXh0Lmxlbmd0aFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn1cbiJdfQ==