{"version":3,"file":"broadpaper-angular.mjs","sources":["../../src/index.ts","../../src/broadpaper-angular.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewContainerRef, Type, inject } from \"@angular/core\";\nimport { createReportDesigner, type ReportDesignerApi, type ReportDesignerInstance, type ReportDesignerOptions } from \"@broadpaper/editor\";\nimport { createReportPreview, createReportViewer, type LayoutResult, type PreviewOptions, type ReportPreview, type ReportViewer, type ReportViewerOptions } from \"@broadpaper/renderer\";\nimport { BlockRegistry, type AnyVersionTemplate, type BlockDefinition, type DataSource, type InspectorApi, type InspectorComponent, type Issue, type ReportData, type ReportTemplate, type Theme } from \"@broadpaper/core\";\nimport { builtInBlocks } from \"@broadpaper/blocks\";\n\nexport type { ReportDesignerOptions, ReportDesignerInstance, FeatureFlags, SampleDataSet, ExportContext } from \"@broadpaper/editor\";\n\n/**\n * The BroadPaper designer as an Angular standalone component.\n *\n *   <bp-report-designer [dataSources]=\"schema\" [theme]=\"theme\" [sampleData]=\"sample\" (templateChange)=\"onChange($event)\" />\n *\n * Runs outside Angular's zone so editor interactions never trigger host change detection.\n */\n@Component({\n  selector: \"bp-report-designer\",\n  standalone: true,\n  template: \"\",\n  host: { style: \"display:block;width:100%;height:100%;min-height:480px\" }\n})\nexport class ReportDesignerComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() template?: ReportTemplate | AnyVersionTemplate;\n  @Input() dataSources?: DataSource[];\n  @Input() sampleData?: ReportDesignerOptions[\"sampleData\"];\n  @Input() theme?: Theme;\n  @Input() themes?: Theme[];\n  @Input() blocks?: Array<BlockDefinition<any>>;\n  @Input() library?: ReportDesignerOptions[\"library\"];\n  @Input() features?: ReportDesignerOptions[\"features\"];\n  @Input() enabledTiers?: ReportDesignerOptions[\"enabledTiers\"];\n  @Input() locale?: string;\n  @Input() currency?: string;\n  @Input() timeZone?: string;\n  @Input() appearance?: ReportDesignerOptions[\"appearance\"];\n  @Input() zoom?: ReportDesignerOptions[\"zoom\"];\n  @Input() pdfService?: ReportDesignerOptions[\"pdfService\"];\n  @Input() onExportPdf?: ReportDesignerOptions[\"onExportPdf\"];\n  @Input() onSave?: ReportDesignerOptions[\"onSave\"];\n  /** AI template design: the host's provider. The panel is hidden without one. See the \"AI template design\" guide. */\n  @Input() ai?: ReportDesignerOptions[\"ai\"];\n\n  @Output() templateChange = new EventEmitter<ReportTemplate>();\n  @Output() selectionChange = new EventEmitter<string[]>();\n  @Output() validate = new EventEmitter<Issue[]>();\n  @Output() modeChange = new EventEmitter<\"design\" | \"preview\">();\n  @Output() themeChange = new EventEmitter<Theme>();\n  @Output() ready = new EventEmitter<ReportDesignerApi>();\n\n  private readonly host = inject(ElementRef<HTMLElement>);\n  private readonly zone = inject(NgZone);\n  private instance: ReportDesignerInstance | null = null;\n  private lastEmitted: ReportTemplate | null = null;\n\n  /** The underlying framework-neutral API (available after `ready`). */\n  get api(): ReportDesignerInstance | null {\n    return this.instance;\n  }\n\n  ngOnInit(): void {\n    this.zone.runOutsideAngular(() => {\n      this.instance = createReportDesigner(this.host.nativeElement, {\n        ...this.options(),\n        template: this.template,\n        onChange: (t) => {\n          this.lastEmitted = t;\n          this.zone.run(() => this.templateChange.emit(t));\n        },\n        onSelectionChange: (ids) => this.zone.run(() => this.selectionChange.emit(ids)),\n        onValidate: (issues) => this.zone.run(() => this.validate.emit(issues)),\n        onModeChange: (m) => this.zone.run(() => this.modeChange.emit(m)),\n        onThemeChange: (t) => this.zone.run(() => this.themeChange.emit(t)),\n        onReady: (api) => this.zone.run(() => this.ready.emit(api))\n      });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const inst = this.instance;\n    if (!inst) return;\n    if (changes[\"template\"] && this.template && this.template !== this.lastEmitted && this.template !== inst.getTemplate()) inst.setTemplate(this.template);\n    if (changes[\"theme\"] && this.theme) inst.setTheme(this.theme);\n    if (changes[\"themes\"] && this.themes) inst.setThemes(this.themes);\n    if (changes[\"sampleData\"] && this.sampleData) inst.setSampleData(this.sampleData);\n    if (changes[\"dataSources\"] && this.dataSources) inst.setDataSources(this.dataSources);\n    if (changes[\"blocks\"] && this.blocks) for (const b of this.blocks) inst.registerBlock(b);\n    const rest: Partial<ReportDesignerOptions> = {};\n    for (const k of [\"library\", \"features\", \"locale\", \"currency\", \"timeZone\", \"appearance\", \"pdfService\", \"onExportPdf\", \"onSave\", \"ai\"] as const) if (changes[k]) (rest as Record<string, unknown>)[k] = this[k];\n    if (Object.keys(rest).length) inst.update(rest);\n  }\n\n  ngOnDestroy(): void {\n    this.instance?.destroy();\n    this.instance = null;\n  }\n\n  private options(): ReportDesignerOptions {\n    return {\n      dataSources: this.dataSources,\n      sampleData: this.sampleData,\n      theme: this.theme,\n      themes: this.themes,\n      blocks: this.blocks,\n      library: this.library,\n      features: this.features,\n      enabledTiers: this.enabledTiers,\n      locale: this.locale,\n      currency: this.currency,\n      timeZone: this.timeZone,\n      appearance: this.appearance,\n      zoom: this.zoom,\n      pdfService: this.pdfService,\n      onExportPdf: this.onExportPdf,\n      onSave: this.onSave,\n      ai: this.ai\n    };\n  }\n}\n\n/** Read-only paginated preview: the same pipeline the editor and the PDF use. */\n@Component({\n  selector: \"bp-report-preview\",\n  standalone: true,\n  template: \"\",\n  host: { style: \"display:block;width:100%\" }\n})\nexport class ReportPreviewComponent implements OnInit, OnChanges, OnDestroy {\n  @Input({ required: true }) template!: ReportTemplate;\n  @Input() data?: ReportData;\n  @Input() theme?: Theme;\n  @Input() dataSources?: DataSource[];\n  @Input() blocks?: Array<BlockDefinition<any>>;\n  @Input() mode: PreviewOptions[\"mode\"] = \"preview\";\n  @Input() zoom?: number;\n  @Input() locale?: string;\n  @Input() currency?: string;\n  @Output() layout = new EventEmitter<LayoutResult>();\n\n  private readonly host = inject(ElementRef<HTMLElement>);\n  private readonly zone = inject(NgZone);\n  private handle: ReportPreview | null = null;\n  private registry = new BlockRegistry(builtInBlocks);\n\n  ngOnInit(): void {\n    this.registry = new BlockRegistry([...builtInBlocks, ...(this.blocks ?? [])]);\n    this.zone.runOutsideAngular(() => {\n      this.handle = createReportPreview(this.host.nativeElement, this.options());\n      void this.handle.update({}).then((r) => this.zone.run(() => this.layout.emit(r)));\n    });\n  }\n\n  ngOnChanges(): void {\n    if (!this.handle) return;\n    this.zone.runOutsideAngular(() => void this.handle!.update(this.options()).then((r) => this.zone.run(() => this.layout.emit(r))));\n  }\n\n  ngOnDestroy(): void {\n    this.handle?.destroy();\n    this.handle = null;\n  }\n\n  private options(): PreviewOptions {\n    return { template: this.template, registry: this.registry, data: this.data, theme: this.theme, dataSources: this.dataSources, mode: this.mode, zoom: this.zoom, locale: this.locale, currency: this.currency };\n  }\n}\n\n/**\n * The report as a page a reader can read.\n *\n *   <bp-report-viewer [template]=\"template\" [data]=\"data\" [theme]=\"theme\" (pageChange)=\"onPage($event)\" />\n *\n * Read-only and page-shaped, with charts a reader can point at — the same\n * pipeline the PDF uses, so the screen and the file agree. Give the host\n * element a height: the viewer fills it and scrolls inside itself, and in a box\n * with no height it collapses to its toolbar.\n *\n * Like the designer, it runs outside Angular's zone. Scrolling a long report\n * fires a page-position event per frame, and running change detection on each\n * of them would make the host application's performance this component's fault.\n */\n@Component({\n  selector: \"bp-report-viewer\",\n  standalone: true,\n  template: \"\",\n  host: { style: \"display:block;width:100%;height:100%;min-height:480px\" }\n})\nexport class ReportViewerComponent implements OnInit, OnChanges, OnDestroy {\n  @Input({ required: true }) template!: ReportTemplate;\n  @Input() data?: ReportData;\n  @Input() theme?: Theme;\n  @Input() dataSources?: DataSource[];\n  @Input() blocks?: Array<BlockDefinition<any>>;\n  /** \"width\" (default), \"page\" or \"actual\". Ignored when `zoom` is set. */\n  @Input() fit?: ReportViewerOptions[\"fit\"];\n  @Input() zoom?: number;\n  @Input() toolbar?: boolean;\n  @Input() interactions?: ReportViewerOptions[\"interactions\"];\n  @Input() locale?: string;\n  @Input() currency?: string;\n  @Input() label?: string;\n\n  @Output() pageChange = new EventEmitter<number>();\n  @Output() layout = new EventEmitter<LayoutResult>();\n\n  private readonly host = inject(ElementRef<HTMLElement>);\n  private readonly zone = inject(NgZone);\n  private handle: ReportViewer | null = null;\n  private registry = new BlockRegistry(builtInBlocks);\n\n  /** The underlying framework-neutral viewer, for `goToPage`, `setZoom` and `print`. */\n  get api(): ReportViewer | null {\n    return this.handle;\n  }\n\n  ngOnInit(): void {\n    this.registry = new BlockRegistry([...builtInBlocks, ...(this.blocks ?? [])]);\n    this.zone.runOutsideAngular(() => {\n      this.handle = createReportViewer(this.host.nativeElement, {\n        ...this.options(),\n        onPageChange: (p) => this.zone.run(() => this.pageChange.emit(p)),\n        onLayout: (r) => this.zone.run(() => this.layout.emit(r))\n      });\n    });\n  }\n\n  ngOnChanges(): void {\n    if (!this.handle) return;\n    this.zone.runOutsideAngular(() => void this.handle!.update(this.options()));\n  }\n\n  ngOnDestroy(): void {\n    this.handle?.destroy();\n    this.handle = null;\n  }\n\n  private options(): ReportViewerOptions {\n    return {\n      template: this.template,\n      registry: this.registry,\n      data: this.data,\n      theme: this.theme,\n      dataSources: this.dataSources,\n      fit: this.fit,\n      zoom: this.zoom,\n      toolbar: this.toolbar,\n      interactions: this.interactions,\n      locale: this.locale,\n      currency: this.currency,\n      label: this.label\n    };\n  }\n}\n\n/**\n * Wraps an Angular component as a custom inspector field for `defineBlock`.\n * The component receives the InspectorApi via an `api` input (setter or signal).\n */\nexport function angularInspector<T extends { api?: InspectorApi }>(component: Type<T>, vcr: ViewContainerRef): InspectorComponent {\n  const refs = new Map<HTMLElement, ReturnType<ViewContainerRef[\"createComponent\"]>>();\n  return {\n    mount(element, api) {\n      const ref = vcr.createComponent(component);\n      (ref.instance as { api?: InspectorApi }).api = api;\n      ref.changeDetectorRef.detectChanges();\n      element.appendChild(ref.location.nativeElement);\n      refs.set(element, ref);\n    },\n    update(api) {\n      for (const ref of refs.values()) {\n        (ref.instance as { api?: InspectorApi }).api = api;\n        ref.changeDetectorRef.detectChanges();\n      }\n    },\n    unmount(element) {\n      refs.get(element)?.destroy();\n      refs.delete(element);\n    }\n  };\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}