"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatNameParts = formatNameParts; exports.getStringCase = getStringCase; exports.orderNameParts = orderNameParts; exports.orderNamePieces = orderNamePieces; function getStringCase(string) { const a = string.toUpperCase(); const b = string.toLowerCase(); for (let i = 0; i < string.length; i++) { if (a[i] !== b[i]) { return a[i] === string[i]; } } return null; } function formatNameParts(parts) { if (parts.length === 0) { return undefined; } let piece = ''; while (parts.length > 1) { const { value, hyphenated } = parts.shift(); piece += value + (hyphenated ? '-' : ' '); } const output = piece + parts[0].value; return output[0] && output; } function orderNameParts(parts, orderGiven = true) { const given = []; const undecided = []; if (orderGiven) { while (parts.length > 1 && parts[0].upperCase !== false) { given.push(...undecided); undecided.length = 0; while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) { given.push(parts.shift()); } while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) { undecided.push(parts.shift()); } } } const prefix = []; const family = []; while (parts.length > 1) { prefix.push(...family); family.length = 0; while (parts.length > 1 && parts[0].upperCase === false) { prefix.push(parts.shift()); } while (parts.length > 0 && parts[0].upperCase !== false) { family.push(parts.shift()); } } if (undecided.length) { family.unshift(...undecided); } if (parts.length) { family.push(parts[0]); } return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]; } function orderNamePieces(pieces) { if (pieces[0][0].label) { const name = {}; for (const [{ value, label }] of pieces) { name[label] = value; } return name; } const name = {}; const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1); if (family) { name.family = family; } if (prefix) { name.prefix = prefix; } if (pieces.length === 3) { name.given = formatNameParts(pieces[2]); name.suffix = formatNameParts(pieces[1]); } else if (pieces.length === 2) { name.given = formatNameParts(pieces[1]); } else if (given) { name.given = given; } return name; }