UNPKG

angular-rich-text-editor

Version:

A lightweight, configurable rich-text editor component for Angular applications.

33 lines 4.62 kB
export function hasRequiredValidator(control) { if (!control || !control.validator) return false; const result = control.validator({ value: null }); return !!(result && result['required']); } /** * Enhanced empty check that considers images and media as content */ export function isTrulyEmpty(html) { if (!html || html.trim() === '') return true; const div = document.createElement('div'); div.innerHTML = html; const hasImages = div.querySelectorAll('img').length > 0; if (hasImages) return false; const hasVideos = div.querySelectorAll('video, iframe').length > 0; if (hasVideos) return false; const hasEmbeds = div.querySelectorAll('embed, object, audio').length > 0; if (hasEmbeds) return false; const text = div.textContent?.replace(/\u00A0/g, '').trim() || ''; const cleaned = div.innerHTML .replace(/<br\s*\/?>/gi, '') .replace(/<div>(\s|&nbsp;)*<\/div>/gi, '') .replace(/<p>(\s|&nbsp;)*<\/p>/gi, '') .replace(/&nbsp;/gi, '') .trim(); return !text && cleaned.length === 0; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JpY2gtdGV4dC1lZGl0b3Ivc3JjL2xpYi91dGlscy92YWxpZGF0aW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUErQjtJQUNsRSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNqRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBcUIsQ0FBQyxDQUFDO0lBQ3JFLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWTtJQUN2QyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFN0MsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVyQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RCxJQUFJLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU1QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRSxJQUFJLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU1QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzFFLElBQUksU0FBUztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTVCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFFbEUsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFNBQVM7U0FDMUIsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7U0FDM0IsT0FBTyxDQUFDLDRCQUE0QixFQUFFLEVBQUUsQ0FBQztTQUN6QyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1NBQ3JDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1NBQ3ZCLElBQUksRUFBRSxDQUFDO0lBRVYsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVxdWlyZWRWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IGJvb2xlYW4ge1xuICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wudmFsaWRhdG9yKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHJlc3VsdCA9IGNvbnRyb2wudmFsaWRhdG9yKHsgdmFsdWU6IG51bGwgfSBhcyBBYnN0cmFjdENvbnRyb2wpO1xuICByZXR1cm4gISEocmVzdWx0ICYmIHJlc3VsdFsncmVxdWlyZWQnXSk7XG59XG5cbi8qKlxuICogRW5oYW5jZWQgZW1wdHkgY2hlY2sgdGhhdCBjb25zaWRlcnMgaW1hZ2VzIGFuZCBtZWRpYSBhcyBjb250ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RydWx5RW1wdHkoaHRtbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghaHRtbCB8fCBodG1sLnRyaW0oKSA9PT0gJycpIHJldHVybiB0cnVlO1xuXG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaW5uZXJIVE1MID0gaHRtbDtcblxuICBjb25zdCBoYXNJbWFnZXMgPSBkaXYucXVlcnlTZWxlY3RvckFsbCgnaW1nJykubGVuZ3RoID4gMDtcbiAgaWYgKGhhc0ltYWdlcykgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGhhc1ZpZGVvcyA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKCd2aWRlbywgaWZyYW1lJykubGVuZ3RoID4gMDtcbiAgaWYgKGhhc1ZpZGVvcykgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGhhc0VtYmVkcyA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKCdlbWJlZCwgb2JqZWN0LCBhdWRpbycpLmxlbmd0aCA+IDA7XG4gIGlmIChoYXNFbWJlZHMpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCB0ZXh0ID0gZGl2LnRleHRDb250ZW50Py5yZXBsYWNlKC9cXHUwMEEwL2csICcnKS50cmltKCkgfHwgJyc7XG5cbiAgY29uc3QgY2xlYW5lZCA9IGRpdi5pbm5lckhUTUxcbiAgICAucmVwbGFjZSgvPGJyXFxzKlxcLz8+L2dpLCAnJylcbiAgICAucmVwbGFjZSgvPGRpdj4oXFxzfCZuYnNwOykqPFxcL2Rpdj4vZ2ksICcnKVxuICAgIC5yZXBsYWNlKC88cD4oXFxzfCZuYnNwOykqPFxcL3A+L2dpLCAnJylcbiAgICAucmVwbGFjZSgvJm5ic3A7L2dpLCAnJylcbiAgICAudHJpbSgpO1xuXG4gIHJldHVybiAhdGV4dCAmJiBjbGVhbmVkLmxlbmd0aCA9PT0gMDtcbn1cbiJdfQ==