kopia lustrzana https://github.com/Tldraw/Tldraw
23 wiersze
537 B
TypeScript
23 wiersze
537 B
TypeScript
/**
|
|
* Get an incremented name (e.g. New page (2)) from a name (e.g. New page), based on an array of
|
|
* existing names.
|
|
*
|
|
* @param name - The name to increment.
|
|
* @param others - The array of existing names.
|
|
* @public
|
|
*/
|
|
export function getIncrementedName(name: string, others: string[]) {
|
|
let result = name
|
|
const set = new Set(others)
|
|
|
|
while (set.has(result)) {
|
|
result = /^.*(\d+)$/.exec(result)?.[1]
|
|
? result.replace(/(\d+)(?=\D?)$/, (m) => {
|
|
return (+m + 1).toString()
|
|
})
|
|
: `${result} 1`
|
|
}
|
|
|
|
return result
|
|
}
|