{"version":3,"file":"chartsheet-C3-tqkPy.mjs","names":[],"sources":["../src/chartsheet/chartsheet.ts"],"sourcesContent":["// Chartsheet model.\n//\n// A chartsheet is a workbook child that holds a single chart instead of cells.\n// It still gets a row in `<sheets>` (with the same r:id + sheetId machinery as\n// a worksheet), but its part lives under `xl/chartsheets/sheetN.xml` and\n// references a drawing via `<drawing r:id=\"...\"/>` carrying an absoluteAnchor\n// with the chart.\n\nimport type { Drawing } from '../drawing/drawing';\nimport type { Color } from '../styles/colors';\nimport type { HeaderFooter, PageMargins, PageSetup } from '../worksheet/page-setup';\nimport type { WebPublishItem } from '../worksheet/web-publish';\n\n/** `<sheetView>` inside `<sheetViews>`. */\nexport interface ChartsheetView {\n  workbookViewId: number;\n  tabSelected?: boolean;\n  zoomScale?: number;\n  zoomToFit?: boolean;\n}\n\n/** `<sheetPr>` chartsheet properties. */\nexport interface ChartsheetProperties {\n  published?: boolean;\n  codeName?: string;\n  /**\n   * Tab strip colour. Mirrors `SheetProperties.tabColor` on worksheets so the\n   * two sheet kinds expose the same colour model (rgb / indexed / theme /\n   * auto / tint) instead of forcing callers to special-case chartsheets.\n   */\n  tabColor?: Color;\n}\n\n/** Subset of `<sheetProtection>` fields we round-trip on chartsheets. */\nexport interface ChartsheetProtection {\n  /** Protect content (chart elements / text). */\n  content?: boolean;\n  /** Protect drawing objects (shapes / annotations). */\n  objects?: boolean;\n  algorithmName?: string;\n  hashValue?: string;\n  saltValue?: string;\n  spinCount?: number;\n}\n\nexport interface Chartsheet {\n  /** Display title shown in Excel's tab strip. Mirrors Worksheet.title for SheetRef compatibility. */\n  title: string;\n  views: ChartsheetView[];\n  properties?: ChartsheetProperties;\n  protection?: ChartsheetProtection;\n  /**\n   * Drawing payload — typically a single absoluteAnchor with a chart\n   * graphicFrame. Mirrors Worksheet.drawing so the existing drawing-XML helpers\n   * can be reused.\n   */\n  drawing?: Drawing;\n  /** `<pageMargins>` — six required margins in inches. */\n  pageMargins?: PageMargins;\n  /** `<pageSetup>` — paper size / orientation / scale / fitToPage. */\n  pageSetup?: PageSetup;\n  /** `<headerFooter>` — odd/even/first header + footer mini-format strings. */\n  headerFooter?: HeaderFooter;\n  /** `<legacyDrawing r:id=\"…\"/>` — VML drawing for comments / form-control overlay. */\n  legacyDrawingRId?: string;\n  /** `<legacyDrawingHF r:id=\"…\"/>` — VML drawing for header/footer print background. */\n  legacyDrawingHFRId?: string;\n  /**\n   * `<drawingHF r:id=\"…\" lho=\"N\" cho=\"N\" lhe=\"N\" che=\"N\" lhf=\"N\" chf=\"N\"\n   * rho=\"N\" cho2=\"N\" rhe=\"N\" che2=\"N\" rhf=\"N\" chf2=\"N\" lfo=\"N\" cfo=\"N\" lfe=\"N\"\n   * cfe=\"N\" lff=\"N\" cff=\"N\" rfo=\"N\" cfo2=\"N\" rfe=\"N\" cfe2=\"N\" rff=\"N\"\n   * cff2=\"N\"/>` — drawing slot + per-section image indices for header/footer\n   * print backgrounds (DrawingML rather than VML).\n   */\n  drawingHF?: ChartsheetDrawingHF;\n  /** `<picture r:id=\"…\"/>` — chartsheet background image. */\n  backgroundPictureRId?: string;\n  /** `<webPublishItems>` — Excel 2007 \"Publish to web\" entries (rare on chartsheets). */\n  webPublishItems: WebPublishItem[];\n  /**\n   * `<customSheetViews>` — saved per-user view presets for this chartsheet\n   * (Shared Workbook era). Each entry can carry its own page margins / setup /\n   * header-footer.\n   */\n  customSheetViews: ChartsheetCustomSheetView[];\n}\n\n/** One `<customSheetView>` entry inside a chartsheet. */\nexport interface ChartsheetCustomSheetView {\n  guid: string;\n  scale?: number;\n  state?: 'visible' | 'hidden' | 'veryHidden';\n  zoomToFit?: boolean;\n  pageMargins?: PageMargins;\n  pageSetup?: PageSetup;\n  headerFooter?: HeaderFooter;\n}\n\nexport const makeChartsheetCustomSheetView = (\n  opts: Partial<ChartsheetCustomSheetView> & { guid: string },\n): ChartsheetCustomSheetView => ({\n  guid: opts.guid,\n  ...(opts.scale !== undefined ? { scale: opts.scale } : {}),\n  ...(opts.state !== undefined ? { state: opts.state } : {}),\n  ...(opts.zoomToFit !== undefined ? { zoomToFit: opts.zoomToFit } : {}),\n  ...(opts.pageMargins !== undefined ? { pageMargins: opts.pageMargins } : {}),\n  ...(opts.pageSetup !== undefined ? { pageSetup: opts.pageSetup } : {}),\n  ...(opts.headerFooter !== undefined ? { headerFooter: opts.headerFooter } : {}),\n});\n\n/**\n * `<drawingHF>` — per-section image-index map for the header/footer drawing\n * reference. Each `*o` / `*e` / `*f` attr is a 1-based image number into the\n * referenced drawing part. All optional.\n */\nexport interface ChartsheetDrawingHF {\n  /** Required rels link to xl/drawings/drawingN.xml carrying the actual image refs. */\n  rId: string;\n  /** Left-header image index for odd pages. */\n  lho?: number;\n  cho?: number;\n  rho?: number;\n  /** Left-header image index for even pages. */\n  lhe?: number;\n  che?: number;\n  rhe?: number;\n  /** Left-header image index for the first page (when differentFirst). */\n  lhf?: number;\n  chf?: number;\n  rhf?: number;\n  /** Left-footer image index for odd pages. */\n  lfo?: number;\n  cfo?: number;\n  rfo?: number;\n  /** Left-footer image index for even pages. */\n  lfe?: number;\n  cfe?: number;\n  rfe?: number;\n  /** Left-footer image index for first page. */\n  lff?: number;\n  cff?: number;\n  rff?: number;\n}\n\nexport const makeChartsheet = (title: string): Chartsheet => ({\n  title,\n  views: [{ workbookViewId: 0, zoomToFit: true }],\n  webPublishItems: [],\n  customSheetViews: [],\n});\n"],"mappings":";AAkGA,MAAa,iCACX,UAC+B;CAC/B,MAAM,KAAK;CACX,GAAI,KAAK,UAAU,KAAA,IAAY,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;CACxD,GAAI,KAAK,UAAU,KAAA,IAAY,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;CACxD,GAAI,KAAK,cAAc,KAAA,IAAY,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;CACpE,GAAI,KAAK,gBAAgB,KAAA,IAAY,EAAE,aAAa,KAAK,YAAY,IAAI,CAAC;CAC1E,GAAI,KAAK,cAAc,KAAA,IAAY,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;CACpE,GAAI,KAAK,iBAAiB,KAAA,IAAY,EAAE,cAAc,KAAK,aAAa,IAAI,CAAC;AAC/E;AAoCA,MAAa,kBAAkB,WAA+B;CAC5D;CACA,OAAO,CAAC;EAAE,gBAAgB;EAAG,WAAW;CAAK,CAAC;CAC9C,iBAAiB,CAAC;CAClB,kBAAkB,CAAC;AACrB"}