| 230 | } |
| 231 | |
| 232 | const sortTreeEntries = (entries: ListTreeEntry[]): ListTreeEntry[] => { |
| 233 | const collator = new Intl.Collator(undefined, { sensitivity: 'base' }); |
| 234 | |
| 235 | return [...entries].sort((a, b) => { |
| 236 | const parentCompare = collator.compare(a.parentPath, b.parentPath); |
| 237 | if (parentCompare !== 0) return parentCompare; |
| 238 | |
| 239 | if (a.type !== b.type) { |
| 240 | return a.type === 'tree' ? -1 : 1; |
| 241 | } |
| 242 | |
| 243 | const nameCompare = collator.compare(a.name, b.name); |
| 244 | if (nameCompare !== 0) return nameCompare; |
| 245 | |
| 246 | return collator.compare(a.path, b.path); |
| 247 | }); |
| 248 | } |