@t7/utils
Version:
Utility methods for T7 components.
61 lines (45 loc) • 1.44 kB
JavaScript
/*
You would call this after getting an element's
`.innerHTML` value, while the user is typing.
*/
const contentToText = (value = '') => {
// Convert `&` to `&`.
value = value.replace(/&/gi, '&')
// Replace spaces.
value = value.replace(/ /gi, ' ')
value = value.replace(/\s+/g, ' ')
// Remove `<b>`.
value = value.replace(/<b>/gi, '')
value = value.replace(/<\/b>/gi, '')
// Remove `<strong>`.
value = value.replace(/<strong>/gi, '')
value = value.replace(/<\/strong>/gi, '')
// Remove `<i>`.
value = value.replace(/<i>/gi, '')
value = value.replace(/<\/i>/gi, '')
// Remove `<em>`.
value = value.replace(/<em>/gi, '')
value = value.replace(/<\/em>/gi, '')
// Remove `<u>`.
value = value.replace(/<u>/gi, '')
value = value.replace(/<\/u>/gi, '')
// Tighten up `<` and `>`.
value = value.replace(/>\s+/g, '>')
value = value.replace(/\s+</g, '<')
// Replace `<br>`.
value = value.replace(/<br>/gi, '\n')
// Replace `<div>` (from Chrome).
value = value.replace(/<div>/gi, '\n')
value = value.replace(/<\/div>/gi, '')
// Replace `<p>` (from IE).
value = value.replace(/<p>/gi, '\n')
value = value.replace(/<\/p>/gi, '')
// No more than 2x newline, per "paragraph".
value = value.replace(/\n\n+/g, '\n\n')
// Whitespace before/after.
value = value.trim()
// Expose string.
return value
}
// Expose function.
export default contentToText