gajus / table

Formats data into a string table.
Other
894 stars 77 forks source link

Headers in Table don't calculate the size correctly if using emoticons like "๐Ÿงช" #210

Open mastrzyz opened 1 year ago

mastrzyz commented 1 year ago

For some reason with the following code :

const baseColumns = [
  ["๐Ÿงชaaaa", ""],
  ["A", "B"]
];

const config = {
  spanningCells: [{ col: 0, row: 0, colSpan: 2 }]
};

console.log(table(baseColumns, config));

We get the following error from table : subjectWidth: 6 , containerwidth:5 node_modules/table/dist/src/alignString.js

    if (subjectWidth > containerWidth) {
        throw new Error('Subject parameter value width cannot be greater than the container width.');
    }

This does not repro if I remove the emoticon

const baseColumns = [
  ["aaaaaaaaaaaaaaaaaaaaaa", ""],
  ["A", "B"]
];

const config = {
  spanningCells: [{ col: 0, row: 0, colSpan: 2 }]
};

console.log(table(baseColumns, config));

output.

โ•”โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘ aaaaa โ•‘
โ•‘ aaaaa โ•‘
โ•‘ aaaaa โ•‘
โ•‘ aaaaa โ•‘
โ•‘ aa    โ•‘
โ•Ÿโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ•ข
โ•‘ A โ”‚ B โ•‘
โ•šโ•โ•โ•โ•งโ•โ•โ•โ•

Note this also repros if I use colSpan instead of header.