infodocviewdoc 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"infodocviewdoc.mjs","sources":["../../../projects/ui-components/src/lib/ui-components.service.ts","../../../projects/ui-components/src/lib/ui-components.component.ts","../../../projects/ui-components/src/lib/button/button.component.ts","../../../projects/ui-components/src/lib/button/button.component.html","../../../projects/ui-components/src/lib/document-viewer/services/file.service.ts","../../../projects/ui-components/src/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.ts","../../../projects/ui-components/src/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.html","../../../projects/ui-components/src/public-api.ts","../../../projects/ui-components/src/infodocviewdoc.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UiComponentsService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sgdea-ui-components',\r\n imports: [],\r\n template: `\r\n <p>\r\n ui-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class UiComponentsComponent {\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sgdea-button',\r\n imports: [],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.css'\r\n})\r\nexport class ButtonComponent {\r\n @Input() label: string = 'Click me';\r\n @Input() type: 'primary' | 'secondary' | 'danger' = 'primary';\r\n @Input() disabled: boolean = false;\r\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\r\n @Output() clicked = new EventEmitter<void>();\r\n\r\n onClick() {\r\n if (!this.disabled) {\r\n this.clicked.emit();\r\n }\r\n }\r\n}\r\n","<button \r\n class=\"sgdea-btn sgdea-btn--{{ type }} sgdea-btn--{{ size }}\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\">\r\n {{ label }}\r\n</button>\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpClient,\r\n HttpErrorResponse,\r\n HttpHeaders\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocumentViewerFileService {\r\n constructor(private http: HttpClient) {}\r\n\r\n getFileByParams(params: {\r\n nameFile: string;\r\n nameBucket: string;\r\n nameSpaceBucket: string;\r\n url: string;\r\n token: string;\r\n }): Observable<Blob> {\r\n const endpoint = `${params.url}/api/v1/file/download?objectName=${encodeURIComponent(\r\n params.nameFile\r\n )}&bucketName=${params.nameBucket}`;\r\n\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${params.token}`\r\n });\r\n\r\n return this.http\r\n .post(endpoint, {}, { headers, responseType: 'blob' })\r\n .pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n const errorMessages: Record<number, string> = {\r\n 0: 'No hay conexión con el servidor',\r\n 400: 'Solicitud inválida',\r\n 401: 'No autorizado. Token inválido o expirado',\r\n 403: 'Acceso denegado',\r\n 404: 'Archivo no encontrado',\r\n 500: 'Error interno del servidor'\r\n };\r\n\r\n const message =\r\n errorMessages[error.status] ??\r\n 'Error inesperado al descargar el archivo';\r\n\r\n return throwError(() => new Error(message));\r\n })\r\n );\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, signal } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { NgxExtendedPdfViewerModule, NgxExtendedPdfViewerService } from 'ngx-extended-pdf-viewer';\r\nimport { DocumentViewerFileService } from '../../services/file.service';\r\n\r\n@Component({\r\n selector: 'sgdea-document-viewer',\r\n standalone: true,\r\n imports: [CommonModule, NgxExtendedPdfViewerModule],\r\n templateUrl: './pdf-viewer.component.html',\r\n styleUrls: ['./pdf-viewer.component.css'],\r\n providers: [NgxExtendedPdfViewerService]\r\n})\r\nexport class PdfViewerComponent implements OnInit {\r\n @Input() nameFile?: string;\r\n @Input() nameBucket?: string;\r\n @Input() nameSpaceBucket?: string;\r\n @Input() url?: string;\r\n @Input() token: string = '';\r\n\r\n pdfSrc?: string;\r\n loading = signal<boolean>(false);\r\n errorMessage = signal<string | null>(null);\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private fileService: DocumentViewerFileService,\r\n private pdfService: NgxExtendedPdfViewerService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // 1) Si el host ya pasó valores por @Input, usarlos directamente\r\n if (\r\n this.url ||\r\n this.nameFile ||\r\n this.nameBucket ||\r\n this.nameSpaceBucket ||\r\n this.token\r\n ) {\r\n this.loadPdf();\r\n return;\r\n }\r\n\r\n // 2) Si no hay @Input, intentar leer desde query params (modo microfront original)\r\n this.route.queryParams.subscribe((params: Params) => {\r\n this.nameFile = this.nameFile ?? params['nameFile'];\r\n this.nameBucket = this.nameBucket ?? params['nameBucket'];\r\n this.nameSpaceBucket = this.nameSpaceBucket ?? params['nameSpaceBucket'];\r\n this.token = this.token || params['token'];\r\n this.url = this.url ?? params['url'];\r\n\r\n if (\r\n this.url ||\r\n this.nameFile ||\r\n this.nameBucket ||\r\n this.nameSpaceBucket ||\r\n this.token\r\n ) {\r\n this.loadPdf();\r\n } else {\r\n this.errorMessage.set(\r\n `No se han proporcionado los parámetros necesarios {url: ${this.url} nameFile: ${this.nameFile} nameBucket: ${this.nameBucket} nameSpaceBucket: ${this.nameSpaceBucket} token: ${this.token}}`\r\n );\r\n this.loading.set(false);\r\n this.errorMessage.set(null);\r\n }\r\n });\r\n }\r\n\r\n private loadPdf() {\r\n this.loading.set(true);\r\n this.errorMessage.set(null);\r\n\r\n this.fileService\r\n .getFileByParams({\r\n nameFile: this.nameFile!,\r\n nameBucket: this.nameBucket!,\r\n nameSpaceBucket: this.nameSpaceBucket!,\r\n url: this.url!,\r\n token: this.token!,\r\n })\r\n .subscribe({\r\n next: (blob) => {\r\n this.pdfSrc = URL.createObjectURL(blob);\r\n this.loading.set(false);\r\n this.errorMessage.set(null);\r\n },\r\n error: (err: Error) => {\r\n this.loading.set(false);\r\n this.errorMessage.set(err.message || 'Error al cargar el documento');\r\n },\r\n });\r\n }\r\n}\r\n\r\n","<div *ngIf=\"loading()\" class=\"loader\">\r\n Cargando documento...\r\n</div>\r\n\r\n<div *ngIf=\"errorMessage() && !loading()\" class=\"error-message\">\r\n {{ errorMessage() }}\r\n</div>\r\n\r\n<div class=\"pdf-viewer-container\">\r\n <ngx-extended-pdf-viewer\r\n *ngIf=\"pdfSrc && !loading()\"\r\n [src]=\"pdfSrc\"\r\n height=\"auto\"\r\n useBrowserLocale=\"false\"\r\n [showDownloadButton]=\"false\"\r\n [showPrintButton]=\"false\"\r\n [showOpenFileButton]=\"false\"\r\n [showSecondaryToolbarButton]=\"false\"\r\n [showFirstAndLastPageButtons]=\"false\"\r\n [showPagingButtons]=\"false\"\r\n [showZoomButtons]=\"false\"\r\n [showDrawEditor]=\"false\"\r\n [showTextEditor]=\"false\"\r\n [showStampEditor]=\"false\"\r\n [showHighlightEditor]=\"false\"\r\n >\r\n </ngx-extended-pdf-viewer>\r\n</div>\r\n\r\n","/*\r\n * Public API Surface of ui-components\r\n */\r\n\r\nexport * from './lib/ui-components.service';\r\nexport * from './lib/ui-components.component';\r\nexport * from './lib/button/button.component';\r\nexport * from './lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DocumentViewerFileService"],"mappings":"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"}
1
+ {"version":3,"file":"infodocviewdoc.mjs","sources":["../../../projects/ui-components/src/lib/ui-components.service.ts","../../../projects/ui-components/src/lib/ui-components.component.ts","../../../projects/ui-components/src/lib/button/button.component.ts","../../../projects/ui-components/src/lib/button/button.component.html","../../../projects/ui-components/src/lib/document-viewer/services/file.service.ts","../../../projects/ui-components/src/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.ts","../../../projects/ui-components/src/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.html","../../../projects/ui-components/src/public-api.ts","../../../projects/ui-components/src/infodocviewdoc.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UiComponentsService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sgdea-ui-components',\r\n imports: [],\r\n template: `\r\n <p>\r\n ui-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class UiComponentsComponent {\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sgdea-button',\r\n imports: [],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.css'\r\n})\r\nexport class ButtonComponent {\r\n @Input() label: string = 'Click me';\r\n @Input() type: 'primary' | 'secondary' | 'danger' = 'primary';\r\n @Input() disabled: boolean = false;\r\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\r\n @Output() clicked = new EventEmitter<void>();\r\n\r\n onClick() {\r\n if (!this.disabled) {\r\n this.clicked.emit();\r\n }\r\n }\r\n}\r\n","<button \r\n class=\"sgdea-btn sgdea-btn--{{ type }} sgdea-btn--{{ size }}\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\">\r\n {{ label }}\r\n</button>\r\n","import { Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpHeaders\n} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DocumentViewerFileService {\n constructor(private http: HttpClient) {}\n\n getFileByParams(params: {\n nameFile: string;\n nameBucket: string;\n nameSpaceBucket: string;\n url: string;\n token: string;\n }): Observable<Blob> {\n const endpoint = `${params.url}/api/v1/file/download?objectName=${encodeURIComponent(\n params.nameFile\n )}&bucketName=${params.nameBucket}`;\n\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${params.token}`\n });\n\n return this.http\n .post(endpoint, {}, { headers, responseType: 'blob' })\n .pipe(\n catchError((error: HttpErrorResponse) => {\n const errorMessages: Record<number, string> = {\n 0: 'No hay conexión con el servidor',\n 400: 'Solicitud inválida',\n 401: 'No autorizado. Token inválido o expirado',\n 403: 'Acceso denegado',\n 404: 'Archivo no encontrado',\n 500: 'Error interno del servidor'\n };\n\n const message =\n errorMessages[error.status] ??\n 'Error inesperado al descargar el archivo';\n\n return throwError(() => new Error(message));\n })\n );\n }\n\n convertDocumentToPdf(file: Blob, token: string, baseApiUrl: string): Observable<Blob> {\n const url = `${baseApiUrl}/api/v1/file/${\n file.type === '.ppt' || file.type === '.pptx'\n ? 'conversion-ppt-to-pdf'\n : 'conversion-word-to-pdf'\n }`;\n\n const headers = new HttpHeaders({\n Authorization: `Bearer ${token}`,\n });\n\n const formData = new FormData();\n formData.append('file', file, 'documento.docx');\n\n return this.http\n .post<{ downloadUrl: string }>(url, formData, { headers })\n .pipe(\n switchMap((response) => {\n if (!response?.downloadUrl) {\n throw new Error('No se recibió downloadUrl');\n }\n\n return this.http.get(`${baseApiUrl}${response.downloadUrl}`, {\n headers,\n responseType: 'blob',\n });\n }),\n catchError((error: HttpErrorResponse) => {\n const errorMessages: Record<number, string> = {\n 0: 'No hay conexión con el servidor',\n 400: 'Solicitud inválida',\n 401: 'No autorizado. Token inválido o expirado',\n 403: 'Acceso denegado',\n 404: 'Archivo no encontrado',\n 500: 'Error interno del servidor',\n };\n\n const message =\n errorMessages[error.status] ??\n 'Error inesperado al convertir el archivo a PDF';\n\n return throwError(() => new Error(message));\n }),\n );\n }\n}\n\n","import {\n Component,\n OnInit,\n OnDestroy,\n signal,\n ViewChild,\n ElementRef,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\nimport { DocumentViewerFileService } from '../../services/file.service';\n\nimport Handsontable from 'handsontable';\nimport { HotTableModule } from '@handsontable/angular';\nimport 'handsontable/dist/handsontable.full.css';\n\n@Component({\n selector: 'sgdea-document-viewer',\n standalone: true,\n imports: [CommonModule, NgxExtendedPdfViewerModule, HotTableModule],\n templateUrl: './pdf-viewer.component.html',\n styleUrls: ['./pdf-viewer.component.css'],\n})\nexport class PdfViewerComponent implements OnInit, OnDestroy {\n // Entradas directas desde el host (opcionalmente se pueden pasar por @Input)\n @Input() nameFile?: string;\n @Input() nameBucket?: string;\n @Input() nameSpaceBucket?: string;\n @Input() url?: string;\n @Input() token: string = '';\n\n pdfSrc?: string;\n imageSrc?: string;\n textContent?: string;\n officeContent?: string;\n\n loading = signal(false);\n errorMessage = signal<string | null>(null);\n fileType = signal<string>('unknown');\n fileName = signal<string>('');\n\n private readonly extensionToType: { [key: string]: string } = {\n pdf: 'pdf',\n docx: 'docx',\n doc: 'doc',\n xlsx: 'xlsx',\n xls: 'xls',\n pptx: 'pptx',\n ppt: 'ppt',\n txt: 'txt',\n md: 'txt',\n csv: 'txt',\n log: 'txt',\n json: 'txt',\n xml: 'txt',\n html: 'txt',\n css: 'txt',\n js: 'txt',\n ts: 'txt',\n java: 'txt',\n py: 'txt',\n cpp: 'txt',\n c: 'txt',\n h: 'txt',\n php: 'txt',\n rb: 'txt',\n go: 'txt',\n rs: 'txt',\n swift: 'txt',\n kt: 'txt',\n sql: 'txt',\n jpg: 'image',\n jpeg: 'image',\n png: 'image',\n gif: 'image',\n tiff: 'image',\n bmp: 'image',\n svg: 'image',\n webp: 'image',\n };\n\n // Excel\n excelData: any[][] = [];\n excelColumns: any[] = [];\n excelColumnHeaders: string[] = [];\n excelSettings: any = {};\n excelSheetNames: string[] = [];\n excelCurrentSheetIndex = signal(0);\n showExcelViewer = false;\n private excelWorkbook: any = null;\n private xlsxModule: any = null;\n\n // Imagen (zoom, rotación, arrastre)\n zoomLevel = signal(100);\n rotation = signal(0);\n minZoom = 25;\n maxZoom = 400;\n zoomStep = 25;\n isDragging = false;\n dragStart = { x: 0, y: 0 };\n imagePosition = { x: 0, y: 0 };\n imageDimensions = { width: 0, height: 0 };\n\n @ViewChild('imageContainer') imageContainer!: ElementRef;\n @ViewChild('mainImage') mainImage!: ElementRef;\n\n private librariesPreloaded = {\n pdf: false,\n excel: false,\n xlsx: false,\n jspdf: false,\n };\n\n constructor(\n private route: ActivatedRoute,\n private fileService: DocumentViewerFileService,\n ) {}\n\n ngOnInit(): void {\n // 1) Si el host pasó valores por @Input, usarlos directamente\n if (\n this.url ||\n this.nameFile ||\n this.nameBucket ||\n this.nameSpaceBucket ||\n this.token\n ) {\n if (this.nameFile) this.fileName.set(this.nameFile);\n this.detectFileType();\n void this.loadWithPreload();\n return;\n }\n\n // 2) Si no hay @Input, leer query params (modo microfront)\n this.route.queryParams.subscribe((params: Params) => {\n this.nameFile = this.nameFile ?? params['nameFile'];\n this.nameBucket = this.nameBucket ?? params['nameBucket'];\n this.nameSpaceBucket = this.nameSpaceBucket ?? params['nameSpaceBucket'];\n this.token = this.token || params['token'];\n this.url = this.url ?? params['url'];\n\n if (this.nameFile) {\n this.fileName.set(this.nameFile);\n }\n\n this.detectFileType();\n void this.loadWithPreload();\n });\n }\n\n ngOnDestroy(): void {\n if (this.pdfSrc) URL.revokeObjectURL(this.pdfSrc);\n if (this.imageSrc) URL.revokeObjectURL(this.imageSrc);\n }\n\n private detectFileType(): void {\n let extension = '';\n if (this.url) {\n extension = this.url.split('.').pop()?.toLowerCase() || '';\n } else if (this.nameFile) {\n extension = this.nameFile.split('.').pop()?.toLowerCase() || '';\n }\n this.fileType.set(this.extensionToType[extension] || 'unknown');\n if (this.fileType() !== 'unknown') {\n void this.preloadLibrariesForType(this.fileType());\n }\n }\n\n private async loadWithPreload(): Promise<void> {\n this.loading.set(true);\n this.errorMessage.set(null);\n\n try {\n const preloadPromise = this.preloadLibrariesForType(this.fileType());\n const documentPromise = this.fileService\n .getFileByParams({\n nameFile: this.nameFile!,\n nameBucket: this.nameBucket!,\n nameSpaceBucket: this.nameSpaceBucket!,\n url: this.url!,\n token: this.token!,\n })\n .toPromise();\n\n const [blob] = await Promise.all([documentPromise, preloadPromise]);\n this.processFile(blob!);\n } catch (error: any) {\n this.errorMessage.set(error.message || 'Error al cargar el documento');\n this.loading.set(false);\n }\n }\n\n private async preloadLibrariesForType(type: string): Promise<void> {\n const preloadTasks: Promise<any>[] = [];\n\n if (!this.librariesPreloaded.pdf) {\n preloadTasks.push(import('ngx-extended-pdf-viewer').then(() => (this.librariesPreloaded.pdf = true)));\n }\n\n if (type === 'txt' && !this.librariesPreloaded.jspdf) {\n preloadTasks.push(import('jspdf').then(() => (this.librariesPreloaded.jspdf = true)));\n }\n\n if (type === 'xlsx' || type === 'xls') {\n if (!this.librariesPreloaded.xlsx) {\n preloadTasks.push(\n import('xlsx').then((module) => {\n this.xlsxModule = module;\n this.librariesPreloaded.xlsx = true;\n }),\n );\n }\n if (!this.librariesPreloaded.excel) {\n preloadTasks.push(import('handsontable').then(() => (this.librariesPreloaded.excel = true)));\n }\n }\n\n if (preloadTasks.length > 0) {\n await Promise.allSettled(preloadTasks);\n }\n }\n\n private processFile(blob: Blob): void {\n const type = this.fileType();\n\n switch (true) {\n case type === 'pdf':\n this.handlePdfFile(blob);\n break;\n case type === 'image':\n this.handleImageFile(blob);\n break;\n case type === 'txt':\n void this.convertTextToPdf(blob);\n break;\n case ['xlsx', 'xls'].includes(type):\n void this.processExcelFile(blob);\n break;\n case ['docx', 'doc', 'pptx', 'ppt'].includes(type):\n this.convertOfficeToPdf(blob);\n break;\n default:\n this.errorMessage.set('Formato no soportado');\n this.loading.set(false);\n }\n }\n\n private handlePdfFile(blob: Blob): void {\n this.pdfSrc = URL.createObjectURL(blob);\n this.loading.set(false);\n }\n\n private handleImageFile(blob: Blob): void {\n this.imageSrc = URL.createObjectURL(blob);\n this.loading.set(false);\n }\n\n private convertOfficeToPdf(blob: Blob): void {\n this.fileService.convertDocumentToPdf(blob, this.token!, this.url!).subscribe({\n next: (pdfBlob) => {\n this.pdfSrc = URL.createObjectURL(pdfBlob);\n this.fileType.set('pdf');\n this.loading.set(false);\n },\n error: (error) => {\n this.errorMessage.set(error.message || 'Error al convertir el archivo a PDF');\n this.loading.set(false);\n },\n });\n }\n\n private async convertTextToPdf(blob: Blob): Promise<void> {\n try {\n const text = await blob.text();\n if (!this.librariesPreloaded.jspdf) {\n await import('jspdf');\n }\n const { default: jsPDF } = await import('jspdf');\n const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' });\n const pageWidth = pdf.internal.pageSize.getWidth();\n const pageHeight = pdf.internal.pageSize.getHeight();\n const margin = 40;\n const maxLineWidth = pageWidth - margin * 2;\n pdf.setFontSize(11);\n pdf.setFont('helvetica');\n let yPosition = margin;\n const lineHeight = 15;\n const paragraphs = text.split('\\n');\n for (const paragraph of paragraphs) {\n if (paragraph.trim() === '') {\n yPosition += lineHeight;\n continue;\n }\n const lines = pdf.splitTextToSize(paragraph, maxLineWidth);\n for (const line of lines) {\n if (yPosition > pageHeight - margin) {\n pdf.addPage();\n yPosition = margin;\n }\n pdf.text(line, margin, yPosition);\n yPosition += lineHeight;\n }\n yPosition += lineHeight / 2;\n }\n const pdfBlob = pdf.output('blob');\n this.pdfSrc = URL.createObjectURL(pdfBlob);\n this.fileType.set('pdf');\n this.loading.set(false);\n } catch {\n const reader = new FileReader();\n reader.onload = (e) => {\n this.textContent = e.target?.result as string;\n this.loading.set(false);\n };\n reader.readAsText(blob);\n }\n }\n\n private async processExcelFile(blob: Blob): Promise<void> {\n try {\n if (!this.xlsxModule) {\n this.xlsxModule = await import('xlsx');\n }\n const buffer = await blob.arrayBuffer();\n this.excelWorkbook = this.xlsxModule.read(buffer, { type: 'array' });\n this.excelSheetNames = [...this.excelWorkbook.SheetNames];\n await this.loadExcelSheetByIndex(0);\n this.buildExcelSettings();\n this.showExcelViewer = true;\n this.loading.set(false);\n } catch {\n this.errorMessage.set('Error procesando Excel');\n this.loading.set(false);\n }\n }\n\n private async loadExcelSheetByIndex(index: number): Promise<void> {\n if (!this.excelWorkbook || !this.xlsxModule) return;\n this.showExcelViewer = false;\n const sheetName = this.excelSheetNames[index];\n const worksheet = this.excelWorkbook.Sheets[sheetName];\n if (!worksheet) return;\n let jsonData = this.xlsxModule.utils.sheet_to_json(worksheet, { header: 1, defval: '' }) as any[][];\n if (!Array.isArray(jsonData) || jsonData.length === 0) {\n jsonData = [['(Hoja vacía)']];\n }\n const headers = (jsonData[0] ?? []).map((h: any) => String(h ?? ''));\n const data = jsonData.slice(1);\n this.excelColumnHeaders = headers.length > 0 ? headers : [''];\n const maxColumns = Math.max(this.excelColumnHeaders.length, ...data.map((row) => row.length));\n this.excelColumnHeaders = Array.from({ length: maxColumns }, (_, i) => this.excelColumnHeaders[i] ?? `Col ${i + 1}`);\n this.excelData = data.map((row) => Array.from({ length: maxColumns }, (_, i) => row[i] ?? ''));\n this.excelColumns = Array.from({ length: maxColumns }, () => ({ type: 'text' }));\n this.excelCurrentSheetIndex.set(index);\n this.showExcelViewer = true;\n }\n\n selectExcelSheet(index: number): void {\n void this.loadExcelSheetByIndex(index);\n }\n\n private buildExcelSettings(): void {\n this.excelSettings = {\n licenseKey: 'non-commercial-and-evaluation',\n colHeaders: this.excelColumnHeaders,\n rowHeaders: true,\n stretchH: 'all',\n contextMenu: true,\n filters: true,\n dropdownMenu: true,\n readOnly: true,\n manualColumnResize: true,\n manualRowResize: true,\n columnSorting: true,\n height: '100%',\n width: '100%',\n };\n }\n\n // Helpers para template\n isExcelType(): boolean {\n return ['xlsx', 'xls'].includes(this.fileType());\n }\n\n isImageType(): boolean {\n return this.fileType() === 'image';\n }\n\n // Imagen: zoom/rotación/arrastre\n zoomIn(): void {\n this.zoomLevel.set(Math.min(this.zoomLevel() + this.zoomStep, this.maxZoom));\n }\n\n zoomOut(): void {\n this.zoomLevel.set(Math.max(this.zoomLevel() - this.zoomStep, this.minZoom));\n }\n\n rotateLeft(): void {\n this.rotation.set((this.rotation() - 90) % 360);\n }\n\n rotateRight(): void {\n this.rotation.set((this.rotation() + 90) % 360);\n }\n\n getImageTransform(): string {\n const scale = this.zoomLevel() / 100;\n const translate = `translate(${this.imagePosition.x}px, ${this.imagePosition.y}px)`;\n const rotate = `rotate(${this.rotation()}deg)`;\n const scaleStr = `scale(${scale})`;\n return `${translate} ${rotate} ${scaleStr}`;\n }\n\n getCursorStyle(): string {\n return this.zoomLevel() > 100 ? (this.isDragging ? 'grabbing' : 'grab') : 'default';\n }\n\n onImageLoad(): void {\n try {\n const imgEl = this.mainImage?.nativeElement as HTMLImageElement;\n this.imageDimensions = { width: imgEl.naturalWidth, height: imgEl.naturalHeight };\n } catch { /* noop */ }\n }\n\n onMouseWheel(event: WheelEvent): void {\n event.preventDefault();\n if (event.deltaY < 0) this.zoomIn();\n else this.zoomOut();\n }\n\n startDrag(event: MouseEvent): void {\n if (this.zoomLevel() <= 100) return;\n this.isDragging = true;\n this.dragStart = { x: event.clientX - this.imagePosition.x, y: event.clientY - this.imagePosition.y };\n }\n\n onDrag(event: MouseEvent): void {\n if (!this.isDragging) return;\n this.imagePosition = { x: event.clientX - this.dragStart.x, y: event.clientY - this.dragStart.y };\n }\n\n stopDrag(): void {\n this.isDragging = false;\n }\n}\n\n","<div *ngIf=\"loading()\" class=\"loader\">Cargando documento...</div>\n\n<div *ngIf=\"errorMessage() && !loading()\" class=\"error-message\">\n {{ errorMessage() }}\n</div>\n\n<div *ngIf=\"!loading() && !errorMessage()\" class=\"document-viewer-container\">\n\n <!-- PDF -->\n <ngx-extended-pdf-viewer\n *ngIf=\"fileType() === 'pdf' && pdfSrc\"\n [src]=\"pdfSrc\"\n height=\"auto\"\n useBrowserLocale=\"false\"\n [showDownloadButton]=\"false\"\n [showPrintButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showSecondaryToolbarButton]=\"false\"\n [showFirstAndLastPageButtons]=\"false\"\n [showPagingButtons]=\"false\"\n [showZoomButtons]=\"true\"\n [showDrawEditor]=\"false\"\n [showTextEditor]=\"false\"\n [showStampEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n\n <!-- Imagen -->\n <div *ngIf=\"isImageType() && imageSrc\" class=\"image-viewer\">\n <div class=\"image-toolbar\">\n <button (click)=\"zoomIn()\" title=\"Acercar (Ctrl +)\">➕</button>\n <button (click)=\"zoomOut()\" title=\"Alejar (Ctrl -)\">➖</button>\n <span class=\"separator\"></span>\n <button (click)=\"rotateLeft()\" title=\"Rotar izquierda (↺)\">↺</button>\n <button (click)=\"rotateRight()\" title=\"Rotar derecha (↻)\">↻</button>\n\n <span class=\"zoom-info\">{{ zoomLevel() }}%</span>\n <span class=\"rotation-info\" *ngIf=\"rotation() !== 0\">\n {{ rotation() }}°\n </span>\n\n <span class=\"image-dimensions\" *ngIf=\"imageDimensions.width\">\n {{ imageDimensions.width }} x {{ imageDimensions.height }}\n </span>\n </div>\n\n <div class=\"image-container\" #imageContainer (wheel)=\"onMouseWheel($event)\">\n <img\n #mainImage\n [src]=\"imageSrc\"\n [alt]=\"fileName()\"\n [style.transform]=\"getImageTransform()\"\n [style.cursor]=\"getCursorStyle()\"\n (load)=\"onImageLoad()\"\n (mousedown)=\"startDrag($event)\"\n (mousemove)=\"onDrag($event)\"\n (mouseup)=\"stopDrag()\"\n (mouseleave)=\"stopDrag()\"\n class=\"zoomable-image\"\n />\n </div>\n\n <div class=\"image-footer\" *ngIf=\"zoomLevel() > 100\">\n <small>Arrastra para mover la imagen</small>\n </div>\n </div>\n\n <!-- Excel -->\n <div *ngIf=\"isExcelType()\" class=\"excel-viewer-container\">\n <div *ngIf=\"excelSheetNames.length > 1\" class=\"excel-sheet-tabs\">\n <button\n *ngFor=\"let sheet of excelSheetNames; let i = index\"\n type=\"button\"\n class=\"excel-sheet-tab\"\n [class.active]=\"excelCurrentSheetIndex() === i\"\n (click)=\"selectExcelSheet(i)\"\n >\n {{ sheet }}\n </button>\n </div>\n\n <hot-table\n *ngIf=\"showExcelViewer\"\n #hotTable\n [settings]=\"excelSettings\"\n [data]=\"excelData\"\n [colHeaders]=\"excelColumnHeaders\"\n [rowHeaders]=\"true\"\n [width]=\"'100%'\"\n [height]=\"'100%'\"\n licenseKey=\"non-commercial-and-evaluation\"\n [columns]=\"excelColumns\"\n >\n </hot-table>\n\n <div *ngIf=\"!showExcelViewer\" class=\"loader\">\n Cargando hoja...\n </div>\n </div>\n</div>\n\n","/*\r\n * Public API Surface of ui-components\r\n */\r\n\r\nexport * from './lib/ui-components.service';\r\nexport * from './lib/ui-components.component';\r\nexport * from './lib/button/button.component';\r\nexport * from './lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DocumentViewerFileService"],"mappings":"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"}
@@ -1,23 +1,83 @@
1
- import { OnInit } from '@angular/core';
1
+ import { OnInit, OnDestroy, ElementRef } from '@angular/core';
2
2
  import { ActivatedRoute } from '@angular/router';
3
- import { NgxExtendedPdfViewerService } from 'ngx-extended-pdf-viewer';
4
3
  import { DocumentViewerFileService } from '../../services/file.service';
4
+ import 'handsontable/dist/handsontable.full.css';
5
5
  import * as i0 from "@angular/core";
6
- export declare class PdfViewerComponent implements OnInit {
6
+ export declare class PdfViewerComponent implements OnInit, OnDestroy {
7
7
  private route;
8
8
  private fileService;
9
- private pdfService;
10
9
  nameFile?: string;
11
10
  nameBucket?: string;
12
11
  nameSpaceBucket?: string;
13
12
  url?: string;
14
13
  token: string;
15
14
  pdfSrc?: string;
15
+ imageSrc?: string;
16
+ textContent?: string;
17
+ officeContent?: string;
16
18
  loading: import("@angular/core").WritableSignal<boolean>;
17
19
  errorMessage: import("@angular/core").WritableSignal<string | null>;
18
- constructor(route: ActivatedRoute, fileService: DocumentViewerFileService, pdfService: NgxExtendedPdfViewerService);
20
+ fileType: import("@angular/core").WritableSignal<string>;
21
+ fileName: import("@angular/core").WritableSignal<string>;
22
+ private readonly extensionToType;
23
+ excelData: any[][];
24
+ excelColumns: any[];
25
+ excelColumnHeaders: string[];
26
+ excelSettings: any;
27
+ excelSheetNames: string[];
28
+ excelCurrentSheetIndex: import("@angular/core").WritableSignal<number>;
29
+ showExcelViewer: boolean;
30
+ private excelWorkbook;
31
+ private xlsxModule;
32
+ zoomLevel: import("@angular/core").WritableSignal<number>;
33
+ rotation: import("@angular/core").WritableSignal<number>;
34
+ minZoom: number;
35
+ maxZoom: number;
36
+ zoomStep: number;
37
+ isDragging: boolean;
38
+ dragStart: {
39
+ x: number;
40
+ y: number;
41
+ };
42
+ imagePosition: {
43
+ x: number;
44
+ y: number;
45
+ };
46
+ imageDimensions: {
47
+ width: number;
48
+ height: number;
49
+ };
50
+ imageContainer: ElementRef;
51
+ mainImage: ElementRef;
52
+ private librariesPreloaded;
53
+ constructor(route: ActivatedRoute, fileService: DocumentViewerFileService);
19
54
  ngOnInit(): void;
20
- private loadPdf;
55
+ ngOnDestroy(): void;
56
+ private detectFileType;
57
+ private loadWithPreload;
58
+ private preloadLibrariesForType;
59
+ private processFile;
60
+ private handlePdfFile;
61
+ private handleImageFile;
62
+ private convertOfficeToPdf;
63
+ private convertTextToPdf;
64
+ private processExcelFile;
65
+ private loadExcelSheetByIndex;
66
+ selectExcelSheet(index: number): void;
67
+ private buildExcelSettings;
68
+ isExcelType(): boolean;
69
+ isImageType(): boolean;
70
+ zoomIn(): void;
71
+ zoomOut(): void;
72
+ rotateLeft(): void;
73
+ rotateRight(): void;
74
+ getImageTransform(): string;
75
+ getCursorStyle(): string;
76
+ onImageLoad(): void;
77
+ onMouseWheel(event: WheelEvent): void;
78
+ startDrag(event: MouseEvent): void;
79
+ onDrag(event: MouseEvent): void;
80
+ stopDrag(): void;
21
81
  static ɵfac: i0.ɵɵFactoryDeclaration<PdfViewerComponent, never>;
22
82
  static ɵcmp: i0.ɵɵComponentDeclaration<PdfViewerComponent, "sgdea-document-viewer", never, { "nameFile": { "alias": "nameFile"; "required": false; }; "nameBucket": { "alias": "nameBucket"; "required": false; }; "nameSpaceBucket": { "alias": "nameSpaceBucket"; "required": false; }; "url": { "alias": "url"; "required": false; }; "token": { "alias": "token"; "required": false; }; }, {}, never, never, true, never>;
23
83
  }
@@ -11,6 +11,7 @@ export declare class DocumentViewerFileService {
11
11
  url: string;
12
12
  token: string;
13
13
  }): Observable<Blob>;
14
+ convertDocumentToPdf(file: Blob, token: string, baseApiUrl: string): Observable<Blob>;
14
15
  static ɵfac: i0.ɵɵFactoryDeclaration<DocumentViewerFileService, never>;
15
16
  static ɵprov: i0.ɵɵInjectableDeclaration<DocumentViewerFileService>;
16
17
  }
package/package.json CHANGED
@@ -1,32 +1,20 @@
1
1
  {
2
2
  "name": "infodocviewdoc",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "peerDependencies": {
5
- "@angular/animations": "19.2.4",
6
- "@angular/cdk": "^19.2.9",
7
- "@angular/common": "19.2.4",
8
- "@angular/compiler": "19.2.4",
9
- "@angular/core": "19.2.4",
10
- "@angular/forms": "19.2.4",
11
- "@angular/material": "^19.2.9",
12
- "@angular/platform-browser": "19.2.4",
13
- "@angular/platform-browser-dynamic": "19.2.4",
14
- "@angular/router": "19.2.4",
15
- "@ngxs/devtools-plugin": "^19.0.0",
16
- "@ngxs/storage-plugin": "^19.0.0",
17
- "@ngxs/store": "^19.0.0",
18
- "@softarc/native-federation-node": "^2.0.10",
19
- "@swimlane/ngx-datatable": "^21.0.0-alpha.1",
20
- "es-module-shims": "1.5.12",
5
+ "@angular/common": "^19.2.0",
6
+ "@angular/core": "^19.2.0",
7
+ "@angular/platform-browser": "^19.2.0",
8
+ "@angular/router": "^19.2.0",
21
9
  "ngx-extended-pdf-viewer": "^25.6.4",
22
- "ngx-skeleton-loader": "^11.0.0",
23
- "permission-info-lib": "^0.0.2",
24
- "rxjs": "~7.8.0",
25
- "sweetalert2": "^11.19.1",
26
- "zone.js": "~0.15.0"
10
+ "@handsontable/angular": "^16.2.0",
11
+ "handsontable": "^16.2.0",
12
+ "xlsx": "^0.18.5",
13
+ "jspdf": "^4.1.0",
14
+ "rxjs": "~7.8.0"
27
15
  },
28
16
  "dependencies": {
29
- "tslib": "2.3.0"
17
+ "tslib": "^2.3.0"
30
18
  },
31
19
  "sideEffects": false,
32
20
  "module": "fesm2022/infodocviewdoc.mjs",
@@ -0,0 +1,4 @@
1
+ .nvd3 .nv-axis line,.nvd3 .nv-axis path{fill:none;shape-rendering:crispEdges}.nv-brush .extent,.nvd3 .background path,.nvd3 .nv-axis line,.nvd3 .nv-axis path{shape-rendering:crispEdges}.nv-distx,.nv-disty,.nv-noninteractive,.nvd3 .nv-axis,.nvd3.nv-pie .nv-label,.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvtooltip,svg.nvd3-svg{display:block;-webkit-touch-callout:none;-khtml-user-select:none}.nvd3 .nv-axis{opacity:1}.nvd3 .nv-axis.nv-disabled,.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3 .nv-axis path{stroke:#000;stroke-opacity:.75}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{stroke:#e5e5e5}.nvd3 .nv-axis .zero line, .nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:transparent}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-discretebar .nv-groups rect,.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover,.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:transparent}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvtooltip{position:absolute;color:rgba(0,0,0,1);padding:1px;z-index:10000;font-family:Arial;font-size:13px;text-align:left;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvd3 line.nv-guideline{stroke:#ccc}
2
+ /* trimmed for package size */
3
+ .nvd3 .nv-axis line,.nvd3 .nv-axis path{fill:none;shape-rendering:crispEdges}.nv-brush .extent,.nvd3 .background path,.nvd3 .nv-axis line,.nvd3 .nv-axis path{shape-rendering:crispEdges}.nv-distx,.nv-disty,.nv-noninteractive,.nvd3 .nv-axis,.nvd3.nv-pie .nv-label,.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvtooltip,svg.nvd3-svg{display:block;-webkit-touch-callout:none;-khtml-user-select:none}.nvd3 .nv-axis{opacity:1}.nvd3 .nv-axis.nv-disabled,.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3 .nv-axis path{stroke:#000;stroke-opacity:.75}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{stroke:#e5e5e5}.nvd3 .nv-axis .zero line, .nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:transparent}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-discretebar .nv-groups rect,.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover,.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:transparent}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover,.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3 .nv-groups .nv-point.hover,.nvd3.nv-scatter .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-interactiveGuideLine,.nvtooltip{pointer-events:none}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvtooltip h3,.nvtooltip table td.key{font-weight:400}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;color:rgba(0,0,0,1);padding:1px;z-index:10000;font-family:Arial;font-size:13px;text-align:left;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip h3,.nvtooltip p{margin:0;text-align:center}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{padding:4px 14px;line-height:18px;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{padding:5px 14px}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key.total{font-weight:700}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{vertical-align:middle;width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 line.nv-guideline{stroke:#ccc}
4
+ /*# sourceMappingURL=nv.d3.min.css.map */
@@ -0,0 +1,200 @@
1
+ .slide {
2
+ position: relative;
3
+ border: 1px solid #333;
4
+ border-radius: 10px;
5
+ overflow: hidden;
6
+ margin-bottom: 50px;
7
+ margin-left: auto;
8
+ margin-right: auto;
9
+ }
10
+
11
+ .slide div.block {
12
+ position: absolute;
13
+ top: 0px;
14
+ left: 0px;
15
+ width: 100%;
16
+ line-height: 1;
17
+ }
18
+
19
+ .slide div.content {
20
+ display: flex;
21
+ flex-direction: column;
22
+ }
23
+ .slide div.diagram-content{
24
+ display: flex;
25
+ flex-direction: column;
26
+ }
27
+
28
+ .slide div.content-rtl {
29
+ display: flex;
30
+ flex-direction: column;
31
+ direction: rtl;
32
+ }
33
+ .slide .pregraph-rtl{
34
+ direction: rtl;
35
+ }
36
+ .slide .pregraph-ltr{
37
+ direction: ltr;
38
+ }
39
+
40
+
41
+
42
+ .slide {
43
+ position: relative;
44
+ border: 1px solid #333;
45
+ border-radius: 10px;
46
+ overflow: hidden;
47
+ margin-bottom: 50px;
48
+ margin-left: auto;
49
+ margin-right: auto;
50
+ }
51
+
52
+ .slide div.block {
53
+ position: absolute;
54
+ top: 0px;
55
+ left: 0px;
56
+ width: 100%;
57
+ line-height: 1;
58
+ }
59
+
60
+ .slide div.content {
61
+ display: flex;
62
+ flex-direction: column;
63
+ }
64
+ .slide div.diagram-content{
65
+ display: flex;
66
+ flex-direction: column;
67
+ }
68
+
69
+ .slide div.content-rtl {
70
+ display: flex;
71
+ flex-direction: column;
72
+ direction: rtl;
73
+ }
74
+ .slide .pregraph-rtl{
75
+ direction: rtl;
76
+ }
77
+ .slide .pregraph-ltr{
78
+ direction: ltr;
79
+ }
80
+ .slide .pregraph-inherit{
81
+ direction: inherit;
82
+ }
83
+ .slide .slide-prgrph{
84
+ width: 100%;
85
+ /* overflow-wrap:break-word;
86
+ word-wrap: break-word; */
87
+
88
+ /* word-break: break-word; */
89
+ /* unicode-bidi: bidi-override; */
90
+ /* hyphens: auto;
91
+ overflow-wrap: break-word; */
92
+
93
+ }
94
+
95
+ .slide .line-break-br::before{
96
+ content: "\A";
97
+ white-space: pre;
98
+ }
99
+ .slide div.v-up {
100
+ justify-content: flex-start;
101
+ }
102
+ .slide div.v-mid {
103
+ justify-content: center;
104
+ }
105
+ .slide div.v-down {
106
+ justify-content: flex-end;
107
+ }
108
+
109
+ .slide div.h-left {
110
+ justify-content: flex-start;
111
+ align-items: flex-start;
112
+ text-align: left;
113
+ }
114
+ .slide div.h-left-rtl {
115
+ justify-content: flex-end;
116
+ align-items: flex-end;
117
+ text-align: left;
118
+ }
119
+ .slide div.h-mid {
120
+ justify-content: center;
121
+ align-items: center;
122
+ text-align: center;
123
+ }
124
+ .slide div.h-right {
125
+ justify-content: flex-end;
126
+ align-items: flex-end;
127
+ text-align: right;
128
+ }
129
+ .slide div.h-right-rtl {
130
+ justify-content: flex-start;
131
+ align-items: flex-start;
132
+ text-align: right;
133
+ }
134
+
135
+ .slide div.h-just,
136
+ .slide div.h-dist {
137
+ text-align: justify;
138
+ }
139
+
140
+
141
+ .slide div.up-left {
142
+ justify-content: flex-start;
143
+ align-items: flex-start;
144
+ text-align: left;
145
+ }
146
+ .slide div.up-center {
147
+ justify-content: flex-start;
148
+ align-items: center;
149
+ }
150
+ .slide div.up-right {
151
+ justify-content: flex-start;
152
+ align-items: flex-end;
153
+ }
154
+ .slide div.center-left {
155
+ justify-content: center;
156
+ align-items: flex-start;
157
+ text-align: left;
158
+ }
159
+ .slide div.center-center {
160
+ justify-content: center;
161
+ align-items: center;
162
+ }
163
+ .slide div.center-right {
164
+ justify-content: center;
165
+ align-items: flex-end;
166
+ }
167
+ .slide div.down-left {
168
+ justify-content: flex-end;
169
+ align-items: flex-start;
170
+ text-align: left;
171
+ }
172
+ .slide div.down-center {
173
+ justify-content: flex-end;
174
+ align-items: center;
175
+ }
176
+ .slide div.down-right {
177
+ justify-content: flex-end;
178
+ align-items: flex-end;
179
+ }
180
+
181
+
182
+ .slide li.slide {
183
+ margin: 10px 0px;
184
+ font-size: 18px;
185
+ }
186
+
187
+ .slide table {
188
+ position: absolute;
189
+ }
190
+
191
+ .slide svg.drawing {
192
+ position: absolute;
193
+ overflow: visible;
194
+ }
195
+ /*
196
+ #pptx-thumb {
197
+ min-width: 240px;
198
+ height: 180px;
199
+ }
200
+ */