TryGhost/Ghost

View on GitHub
ghost/admin/app/helpers/gh-count-down-characters.js

Summary

Maintainability
A
0 mins
Test Coverage
import {helper} from '@ember/component/helper';
import {htmlSafe} from '@ember/template';

export function countDownCharacters(params) {
    if (!params || params.length < 2) {
        return;
    }

    let el = document.createElement('span');
    let [content, maxCharacters] = params;

    // convert to array so that we get accurate symbol counts for multibyte chars
    // this will still count emoji+modifer as two chars
    let {length} = Array.from(content || '');

    el.className = 'word-count';

    if (length > maxCharacters) {
        el.style.color = '#E25440';
        el.style.fontWeight = 'bold';
    } else {
        el.style.color = '#30CF43';
        el.style.fontWeight = 'bold';
    }

    el.innerHTML = length;

    return htmlSafe(el.outerHTML);
}

export default helper(function (params) {
    return countDownCharacters(params);
});