/** * Workbook-level persons store for threaded comments ([MS-XLSX] §2.1.18 / §2.3.7.1). * * Part: `application/vnd.ms-excel.person+xml` * Rel: `http://schemas.microsoft.com/office/2017/10/relationships/person` * Root: `personList` in NS `…/2018/threadedcomments` * * Authoring default (No Provider): `providerId="None"`, `userId="Name"`. * Ensure-by-displayName reuses an existing person with the same display name. * * @private */ import { OpcPackage } from '../core/package/opc-package'; import { OpcRelationship } from '../core/package/relationships'; /** Conventional persons part name when allocating. */ export declare const DEFAULT_PERSONS_PART_NAME = "/xl/persons/person.xml"; /** * One `CT_Person` row ([MS-XLSX] §2.6.203). * @private */ export interface PersonEntry { /** ST_Guid — required `id`. */ id: string; /** Required `displayName`. */ displayName: string; /** Optional `userId` (authoring default `"Name"`). */ userId: string | undefined; /** Optional `providerId` (authoring default `"None"`). */ providerId: string | undefined; /** Opaque residual attribute XML (preserve). */ extraAttrsXml: string; } /** * Workbook persons store. Materializes on save after worksheet flush (R5.1). * @private */ export declare class PersonsStore { private readonly entries; private partName; private dirty; /** True once loaded or intentionally empty for create path. */ private loaded; /** * Empty store for `Workbook.create()`. */ static empty(): PersonsStore; /** * Load persons from workbook relationships (or conventional part name). */ static loadFromPackage(pkg: OpcPackage, workbookPartName: string, rels: ReadonlyArray): PersonsStore; /** @private */ readonly isDirty: boolean; /** @private */ readonly personsPartName: string | undefined; /** * Resolve display name for a person id. Missing → empty string. */ displayNameFor(personId: string): string; /** * Ensure a person row for `displayName`. Reuses first match; else appends. * Returns the person `id` (braced uppercase ST_Guid). */ ensureByDisplayName(displayName: string): string; /** * True when any person rows exist (need part on save). */ shouldWritePart(): boolean; /** * Write persons part + workbook relationship when needed. * * @param allocateRelationshipId workbook-level rId allocator */ flush(pkg: OpcPackage, workbookPartName: string, allocateRelationshipId: () => string): void; private parsePersonList; }