{"version":3,"file":"ngx-stimulsoft.mjs","sources":["../../src/stimulsoft/config.ts","../../src/stimulsoft/stimulsoft-source-name.model.ts","../../src/stimulsoft/stimulsoft.service.ts","../../src/stimulsoft/stimulsoft.provider.ts","../../src/stimulsoft/stimulsoft.module.ts","../../src/stimulsoft/util.ts","../../src/stimulsoft/stimulsoft-designer.component.ts","../../src/stimulsoft/stimulsoft-viewer.component.ts","../../src/ngx-stimulsoft.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface IStimulsoftOption {\n  appearance?: {\n    backgroundColor?: any;\n    pageBorderColor?: any;\n    rightToLeft?: boolean;\n    fullScreenMode?: boolean;\n    scrollbarsMode?: boolean;\n    openLinksWindow?: string;\n    openExportedReportWindow?: string;\n    showTooltips?: boolean;\n    showTooltipsHelp?: boolean;\n    showDialogsHelp?: boolean;\n    pageAlignment?: number;\n    showPageShadow?: boolean;\n    bookmarksPrint?: boolean;\n    bookmarksTreeWidth?: number;\n    parametersPanelPosition?: number;\n    parametersPanelMaxHeight?: number;\n    parametersPanelColumnsCount?: number;\n    parametersPanelDateFormat?: string;\n    parametersPanelSortDataItems?: boolean;\n    interfaceType?: number;\n    chartRenderType?: number;\n    reportDisplayMode?: number;\n    datePickerFirstDayOfWeek?: number;\n    datePickerIncludeCurrentDayForRanges?: boolean;\n    allowTouchZoom?: boolean;\n    allowMobileMode?: boolean;\n    combineReportPages?: boolean;\n    htmlRenderMode?: number;\n    theme?: number;\n  };\n  exports?: {\n    storeExportSettings?: boolean;\n    showExportDialog?: boolean;\n    showExportToDocument?: boolean;\n    showExportToPdf?: boolean;\n    showExportToHtml?: boolean;\n    showExportToHtml5?: boolean;\n    showExportToWord2007?: boolean;\n    showExportToExcel2007?: boolean;\n    showExportToCsv?: boolean;\n    showExportToJson?: boolean;\n    showExportToText?: boolean;\n    showExportToOpenDocumentWriter?: boolean;\n    showExportToOpenDocumentCalc?: boolean;\n    showExportToPowerPoint?: boolean;\n    showExportToImageSvg?: boolean;\n    showExportToXps?: boolean;\n  };\n  toolbar?: {\n    visible?: boolean;\n    displayMode?: number;\n    backgroundColor?: any;\n    borderColor?: any;\n    fontColor?: any;\n    fontFamily?: string;\n    alignment?: number;\n    showButtonCaptions?: boolean;\n    showPrintButton?: boolean;\n    showOpenButton?: boolean;\n    showSaveButton?: boolean;\n    showSendEmailButton?: boolean;\n    showFindButton?: boolean;\n    showBookmarksButton?: boolean;\n    showParametersButton?: boolean;\n    showResourcesButton?: boolean;\n    showEditorButton?: boolean;\n    showFullScreenButton?: boolean;\n    showRefreshButton?: boolean;\n    showFirstPageButton?: boolean;\n    showPreviousPageButton?: boolean;\n    showCurrentPageControl?: boolean;\n    showNextPageButton?: boolean;\n    showLastPageButton?: boolean;\n    showZoomButton?: boolean;\n    showViewModeButton?: boolean;\n    showDesignButton?: boolean;\n    showAboutButton?: boolean;\n    showPinToolbarButton?: boolean;\n    printDestination?: number;\n    viewMode?: number;\n    multiPageWidthCount?: number;\n    multiPageHeightCount?: number;\n    _zoom?: number;\n    menuAnimation?: boolean;\n    showMenuMode?: number;\n    autoHide?: boolean;\n  };\n  email?: {\n    showEmailDialog?: boolean;\n    showExportDialog?: boolean;\n    defaultEmailAddress?: string;\n    defaultEmailSubject?: string;\n    defaultEmailMessage?: string;\n  };\n  width?: string;\n  height?: string;\n  viewerId?: string;\n  reportDesignerMode?: false;\n}\n\nexport type ResourceUrl = string | string[];\n\nexport interface IStimulsoftConfig {\n  baseUrl?: string;\n  designerCssUrl?: ResourceUrl;\n  designerJsUrl: ResourceUrl;\n  reportsJsUrl: ResourceUrl;\n  viewerCssUrl?: ResourceUrl;\n  viewerJsUrl: ResourceUrl;\n  localizationPath?: string;\n  fonts?: Record<string, string>;\n  options?: IStimulsoftOption;\n  licenseKey?: string;\n  licenseFile?: string;\n}\n\nexport type OptionsConfig = Partial<IStimulsoftConfig>;\nexport const config: InjectionToken<IStimulsoftConfig> = new InjectionToken('config');\nexport const NEW_CONFIG: InjectionToken<IStimulsoftConfig> = new InjectionToken('NEW_CONFIG');\nexport const INITIAL_CONFIG: InjectionToken<IStimulsoftConfig> = new InjectionToken('INITIAL_CONFIG');\n\nexport const initialStimulsoftConfig: IStimulsoftConfig = {\n  baseUrl: '',\n  designerJsUrl: '/content/js/stimulsoft.designer.js',\n  reportsJsUrl: '/content/js/stimulsoft.reports.js',\n  viewerJsUrl: '/content/js/stimulsoft.viewer.js',\n};\n","export enum StimulsoftSourceName {\n  DESIGNER_SCRIPT = 'DESIGNER_SCRIPT',\n  REPORTER_SCRIPT = 'REPORTER_SCRIPT',\n  VIEWER_SCRIPT = 'VIEWER_SCRIPT',\n  DESIGNER_STYLE = 'DESIGNER_STYLE',\n  VIEWER_STYLE = 'VIEWER_STYLE',\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ISource, Source, SourceType } from 'ngx-source';\nimport { config, initialStimulsoftConfig, IStimulsoftConfig, ResourceUrl } from './config';\nimport { StimulsoftSourceName } from './stimulsoft-source-name.model';\n\n@Injectable()\nexport class StimulsoftService {\n  public readonly designerCssUrl?: ResourceUrl;\n  public readonly viewerCssUrl?: ResourceUrl;\n  public readonly designerJsUrl: ResourceUrl;\n  public readonly reportsJsUrl: ResourceUrl;\n  public readonly viewerJsUrl: ResourceUrl;\n  public readonly options: IStimulsoftConfig['options'];\n  public readonly fonts: IStimulsoftConfig['fonts'];\n  public readonly baseUrl: string | undefined;\n  public readonly localizationPath: string | undefined;\n\n  constructor(@Inject(config) public readonly stimulsoftConfig: IStimulsoftConfig) {\n    const { designerCssUrl, viewerCssUrl, designerJsUrl, reportsJsUrl, viewerJsUrl, options, fonts, baseUrl, localizationPath } =\n      stimulsoftConfig;\n\n    this.designerCssUrl = designerCssUrl;\n    this.viewerCssUrl = viewerCssUrl;\n    this.designerJsUrl = designerJsUrl || initialStimulsoftConfig.designerJsUrl;\n    this.reportsJsUrl = reportsJsUrl || initialStimulsoftConfig.reportsJsUrl;\n    this.viewerJsUrl = viewerJsUrl || initialStimulsoftConfig.viewerJsUrl;\n    this.localizationPath = localizationPath;\n    this.options = options;\n    this.fonts = fonts;\n    this.baseUrl = baseUrl;\n  }\n\n  public get stimulsoftSourceStore(): ISource[] {\n    const { STYLE, SCRIPT } = SourceType;\n    const sources: Array<[StimulsoftSourceName, ResourceUrl, SourceType]> = [\n      [StimulsoftSourceName.DESIGNER_SCRIPT, this.designerJsUrl, SCRIPT],\n      [StimulsoftSourceName.REPORTER_SCRIPT, this.reportsJsUrl, SCRIPT],\n      [StimulsoftSourceName.VIEWER_SCRIPT, this.viewerJsUrl, SCRIPT],\n    ];\n    if (this.designerCssUrl) {\n      sources.push([StimulsoftSourceName.DESIGNER_STYLE, this.designerCssUrl, STYLE]);\n    }\n    if (this.viewerCssUrl) {\n      sources.push([StimulsoftSourceName.VIEWER_STYLE, this.viewerCssUrl, STYLE]);\n    }\n    return sources\n      .map(([name, url, type]) => (Array.isArray(url) ? url : [url]).map(u => new Source(name, u, type)))\n      .reduce((resources, item) => [...resources, ...item], [] as ISource[]);\n  }\n}\n","import { config, INITIAL_CONFIG, initialStimulsoftConfig, NEW_CONFIG, OptionsConfig } from './config';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { StimulsoftService } from './stimulsoft.service';\nimport { NgxSourceService } from 'ngx-source';\n\nexport function configFactory(initConfig: OptionsConfig, configValue?: OptionsConfig | (() => OptionsConfig)): OptionsConfig {\n  return {\n    ...initConfig,\n    ...(typeof configValue === 'function' ? configValue() : (configValue ?? {})),\n  };\n}\n\nexport function provideStimulsoft(configValue?: OptionsConfig | (() => OptionsConfig)): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    NgxSourceService,\n    { provide: NEW_CONFIG, useValue: configValue },\n    { provide: INITIAL_CONFIG, useValue: initialStimulsoftConfig },\n    {\n      provide: config,\n      useFactory: configFactory,\n      deps: [INITIAL_CONFIG, NEW_CONFIG],\n    },\n    StimulsoftService,\n  ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { OptionsConfig } from './config';\nimport { provideStimulsoft } from './stimulsoft.provider';\n\n@NgModule({\n  declarations: [],\n  exports: [],\n  providers: [],\n})\nexport class NgxStimulsoftModule {\n  static forRoot(configValue?: OptionsConfig | (() => OptionsConfig)): ModuleWithProviders<NgxStimulsoftModule> {\n    return {\n      ngModule: NgxStimulsoftModule,\n      providers: [provideStimulsoft(configValue)],\n    };\n  }\n\n  static forChild(): ModuleWithProviders<NgxStimulsoftModule> {\n    return {\n      ngModule: NgxStimulsoftModule,\n    };\n  }\n}\n","let lastId = 0;\nexport const UniqueComponentId = (prefix = 'stimulsoft_id_'): string => `${prefix}${++lastId}`;\n","import { Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { NgxSourceService } from 'ngx-source';\nimport { StimulsoftSourceName } from './stimulsoft-source-name.model';\nimport { StimulsoftService } from './stimulsoft.service';\nimport { UniqueComponentId } from './util';\n\ndeclare let Stimulsoft: any;\n\n@Component({\n  selector: 'ngx-stimulsoft-designer',\n  template: ` <div dir=\"ltr\" [id]=\"id()\"></div>`,\n  standalone: true,\n})\nexport class StimulsoftDesignerComponent {\n  readonly id = input<string>(UniqueComponentId());\n  readonly licenseKey = input<string | undefined>();\n  readonly licenseFile = input<string | undefined>();\n  readonly local = input<string>('en');\n\n  readonly onLoadResourceFailed = output<{ source: string; error: any }>();\n  readonly loading = output<boolean>();\n\n  private readonly sourceService = inject(NgxSourceService);\n  private readonly stimulsoftService = inject(StimulsoftService);\n  private readonly isLoadedSource = signal(false);\n  private failResourcesDownload = signal<boolean>(false);\n\n  private readonly resourcesReady = computed(() => this.isLoadedSource() && !this.failResourcesDownload());\n\n  constructor() {\n    this.sourceService.addSources(...this.stimulsoftService.stimulsoftSourceStore);\n    this.loadResources().then();\n    effect(() => {\n      if (this.resourcesReady()) {\n        // eslint-disable-next-line\n        const dependencies = [this.id(), this.licenseKey(), this.licenseFile(), this.local()];\n        this.initializeDesigner(this.id());\n      }\n    });\n  }\n\n  private async loadResources(): Promise<void> {\n    this.loading.emit(true);\n\n    const sources = [StimulsoftSourceName.REPORTER_SCRIPT, StimulsoftSourceName.VIEWER_SCRIPT, StimulsoftSourceName.DESIGNER_SCRIPT];\n\n    if (this.stimulsoftService.viewerCssUrl) {\n      sources.push(StimulsoftSourceName.VIEWER_STYLE);\n    }\n    if (this.stimulsoftService.designerCssUrl) {\n      sources.push(StimulsoftSourceName.DESIGNER_STYLE);\n    }\n\n    try {\n      await this.sourceService.loadBySourceNames(...sources);\n      this.isLoadedSource.set(true);\n    } catch (error) {\n      this.failResourcesDownload.set(true);\n      this.onLoadResourceFailed.emit({ source: 'stimulsoft', error });\n    } finally {\n      this.loading.emit(false);\n    }\n  }\n\n  private initializeDesigner(id: string): void {\n    const container = document.getElementById(id);\n    if (!container) {\n      console.warn(`Container with id \"${id}\" not found.`);\n      return;\n    }\n\n    this.applyLicense();\n\n    const options = new Stimulsoft.Designer.StiDesignerOptions();\n    const designer = new Stimulsoft.Designer.StiDesigner(options, 'StiDesigner', false);\n    designer.report = new Stimulsoft.Report.StiReport();\n\n    this.applyLocalization();\n\n    designer.renderHtml(id);\n  }\n\n  private applyLocalization(): void {\n    if (!this.stimulsoftService.localizationPath) {\n      return;\n    }\n\n    const stiLocalization = Stimulsoft.Base.Localization.StiLocalization;\n    const local = this.local();\n\n    if (local === 'en') {\n      stiLocalization.cultureName = 'English';\n      return;\n    }\n\n    const path = `${this.stimulsoftService.localizationPath.replace(/\\/$/g, '')}/${local}.xml`;\n    stiLocalization.cultureName = stiLocalization.loadLocalizationFile(path);\n  }\n\n  private applyLicense(): void {\n    const key = this.licenseKey() ?? this.stimulsoftService.stimulsoftConfig.licenseKey;\n    const file = this.licenseFile() ?? this.stimulsoftService.stimulsoftConfig.licenseFile;\n\n    if (key) {\n      Stimulsoft.Base.StiLicense.Key = key;\n    } else if (file) {\n      Stimulsoft.Base.StiLicense.loadFromFile(file);\n    }\n  }\n}\n","import { Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { NgxSourceService } from 'ngx-source';\nimport { IStimulsoftOption } from './config';\nimport { StimulsoftSourceName } from './stimulsoft-source-name.model';\nimport { StimulsoftService } from './stimulsoft.service';\nimport { UniqueComponentId } from './util';\n\ndeclare let Stimulsoft: any;\n\n@Component({\n  selector: 'ngx-stimulsoft-viewer',\n  template: ` <div dir=\"ltr\" [id]=\"id()\"></div>`,\n  standalone: true,\n})\nexport class StimulsoftViewerComponent {\n  readonly stimulsoftService = inject(StimulsoftService);\n  readonly sourceService = inject(NgxSourceService);\n  readonly document = inject(DOCUMENT);\n\n  readonly id = input<string>(UniqueComponentId());\n  readonly baseUrl = input<string | undefined>(this.stimulsoftService.baseUrl);\n  readonly fileName = input.required<string>();\n  readonly fonts = input<Record<string, string> | undefined>(this.stimulsoftService.fonts);\n  readonly dataSet = input.required<any>();\n  readonly options = input<IStimulsoftOption | undefined>(this.stimulsoftService.options);\n  readonly licenseKey = input<string | undefined>();\n  readonly licenseFile = input<string | undefined>();\n  readonly local = input<string>('en');\n  readonly dir = input<'ltr' | 'rtl'>('ltr');\n\n  readonly ready = output<boolean>();\n  readonly loading = output<boolean>();\n  readonly onLoadResourceFailed = output<{ source: string; error: any }>();\n\n  private viewerOptions: any;\n  private viewer: any;\n  private report: any;\n\n  private readonly isLoadedSource = signal(false);\n  private readonly failResourcesDownload = signal<boolean>(false);\n\n  private readonly canInitialize = computed(\n    () => this.isLoadedSource() && !this.failResourcesDownload() && !!this.fileName() && !!this.dataSet(),\n  );\n\n  constructor() {\n    this.sourceService.addSources(...this.stimulsoftService.stimulsoftSourceStore);\n\n    this.loadResources().then();\n\n    effect(() => {\n      if (this.canInitialize()) {\n        // eslint-disable-next-line\n        const dependencies = [\n          this.options(),\n          this.fonts(),\n          this.dataSet(),\n          this.fileName(),\n          this.id(),\n          this.licenseKey(),\n          this.licenseFile(),\n          this.local(),\n          this.dir(),\n        ];\n        this.initializeViewer();\n      }\n    });\n  }\n\n  private async loadResources(): Promise<void> {\n    this.loading.emit(true);\n    const sources = [StimulsoftSourceName.REPORTER_SCRIPT, StimulsoftSourceName.VIEWER_SCRIPT];\n\n    if (this.stimulsoftService.viewerCssUrl) {\n      sources.push(StimulsoftSourceName.VIEWER_STYLE);\n    }\n\n    try {\n      await this.sourceService.loadBySourceNames(...sources);\n      this.isLoadedSource.set(true);\n    } catch (error) {\n      this.failResourcesDownload.set(true);\n      this.onLoadResourceFailed.emit({ source: 'stimulsoft', error });\n    } finally {\n      this.loading.emit(false);\n    }\n  }\n\n  private initializeViewer(): void {\n    if (typeof Stimulsoft === 'undefined') {\n      this.onLoadResourceFailed.emit({ error: 'Stimulsoft undefined', source: 'global' });\n      return;\n    }\n\n    this.ready.emit(false);\n\n    this.viewerOptions = new Stimulsoft.Viewer.StiViewerOptions();\n    this.viewerOptions.appearance.rightToLeft = this.dir() === 'rtl';\n    this.viewer = new Stimulsoft.Viewer.StiViewer(this.viewerOptions, 'StiViewer', false);\n    this.report = new Stimulsoft.Report.StiReport();\n\n    this.applyOptions();\n    this.setupReport();\n  }\n\n  private applyOptions(): void {\n    const options = this.options();\n    this.deepMerge(this.stimulsoftService.options, options);\n    this.deepMerge(options, this.viewerOptions);\n  }\n\n  private deepMerge(source: any, target: any): void {\n    if (!source || !target) {\n      return;\n    }\n\n    for (const [key, value] of Object.entries(source)) {\n      if (typeof value === 'object' && value !== null) {\n        this.deepMerge(value, (target[key] ??= {}));\n      } else {\n        target[key] = value;\n      }\n    }\n  }\n\n  private setupReport(): void {\n    if (!this.viewerOptions || !this.viewer || !this.report) {\n      return;\n    }\n\n    this.applyFonts();\n    this.loadReportFile();\n    this.registerDataSet();\n    this.applyLicense();\n    this.setLocale();\n\n    const targetElement = this.document.getElementById(this.id());\n    if (!targetElement) {\n      console.warn(`Element with id \"${this.id()}\" not found.`);\n      return;\n    }\n\n    this.ready.emit(true);\n    this.report.renderAsync(() => {\n      this.viewer.report = this.report;\n      this.viewer.renderHtml(this.id());\n    });\n  }\n\n  private applyFonts(): void {\n    const fonts = this.fonts();\n    if (!fonts) {\n      return;\n    }\n    for (const [name, url] of Object.entries(fonts)) {\n      try {\n        Stimulsoft.Base.StiFontCollection.addFontFile(url, name);\n      } catch {\n        console.error(`Can't load font: ${url}`);\n      }\n    }\n  }\n\n  private registerDataSet(): void {\n    const json = this.dataSet();\n    if (!json) {\n      return;\n    }\n    const dataSet = new Stimulsoft.System.Data.DataSet('DataSet');\n    dataSet.readJson(JSON.stringify(json));\n    this.report.dictionary.databases.clear();\n    this.report.regData('DataSet', 'DataSet', dataSet);\n  }\n\n  private applyLicense(): void {\n    const key = this.licenseKey() ?? this.stimulsoftService.stimulsoftConfig.licenseKey;\n    const file = this.licenseFile() ?? this.stimulsoftService.stimulsoftConfig.licenseFile;\n\n    if (key) {\n      Stimulsoft.Base.StiLicense.Key = key;\n    } else if (file) {\n      Stimulsoft.Base.StiLicense.loadFromFile(file);\n    }\n  }\n\n  private loadReportFile(): void {\n    const name = this.fileName();\n    if (!name) {\n      return;\n    }\n\n    const base = this.baseUrl() ?? '';\n    this.report.loadFile(base + name);\n  }\n\n  private setLocale(): void {\n    if (!this.stimulsoftService.localizationPath) {\n      return;\n    }\n    const local = this.local();\n    const stiLocalization = Stimulsoft.Base.Localization.StiLocalization;\n\n    if (local === 'en') {\n      stiLocalization.cultureName = 'English';\n    } else {\n      const path = [this.stimulsoftService.localizationPath.replace(/\\/$/g, ''), `${local}.xml`].join('/');\n      stiLocalization.cultureName = stiLocalization.loadLocalizationFile(path);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}