infodocviewdoc 2.0.1 → 2.0.3

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.
@@ -4,6 +4,7 @@ import * as i3 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i4 from 'ngx-extended-pdf-viewer';
6
6
  import { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';
7
+ import Handsontable from 'handsontable';
7
8
  import * as i5 from '@handsontable/angular';
8
9
  import { HotTableModule } from '@handsontable/angular';
9
10
  import 'handsontable/dist/handsontable.full.css';
@@ -144,7 +145,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
144
145
  class PdfViewerComponent {
145
146
  route;
146
147
  fileService;
147
- // Entradas directas desde el host (opcionalmente se pueden pasar por @Input)
148
148
  nameFile;
149
149
  nameBucket;
150
150
  nameSpaceBucket;
@@ -197,7 +197,6 @@ class PdfViewerComponent {
197
197
  svg: 'image',
198
198
  webp: 'image',
199
199
  };
200
- // Excel
201
200
  excelData = [];
202
201
  excelColumns = [];
203
202
  excelColumnHeaders = [];
@@ -207,7 +206,6 @@ class PdfViewerComponent {
207
206
  showExcelViewer = false;
208
207
  excelWorkbook = null;
209
208
  xlsxModule = null;
210
- // Imagen (zoom, rotación, arrastre)
211
209
  zoomLevel = signal(100);
212
210
  rotation = signal(0);
213
211
  minZoom = 25;
@@ -230,19 +228,18 @@ class PdfViewerComponent {
230
228
  this.fileService = fileService;
231
229
  }
232
230
  ngOnInit() {
233
- // 1) Si el host pasó valores por @Input, usarlos directamente
234
231
  if (this.url ||
235
232
  this.nameFile ||
236
233
  this.nameBucket ||
237
234
  this.nameSpaceBucket ||
238
235
  this.token) {
239
- if (this.nameFile)
236
+ if (this.nameFile) {
240
237
  this.fileName.set(this.nameFile);
238
+ }
241
239
  this.detectFileType();
242
240
  void this.loadWithPreload();
243
241
  return;
244
242
  }
245
- // 2) Si no hay @Input, leer query params (modo microfront)
246
243
  this.route.queryParams.subscribe((params) => {
247
244
  this.nameFile = this.nameFile ?? params['nameFile'];
248
245
  this.nameBucket = this.nameBucket ?? params['nameBucket'];
@@ -264,7 +261,6 @@ class PdfViewerComponent {
264
261
  }
265
262
  detectFileType() {
266
263
  let extension = '';
267
- // Prioridad: nameFile (objectName) porque en el host `url` suele ser el API base sin extensión
268
264
  if (this.nameFile) {
269
265
  extension = this.nameFile.split('.').pop()?.toLowerCase() || '';
270
266
  }
@@ -301,20 +297,34 @@ class PdfViewerComponent {
301
297
  async preloadLibrariesForType(type) {
302
298
  const preloadTasks = [];
303
299
  if (!this.librariesPreloaded.pdf) {
304
- preloadTasks.push(import('ngx-extended-pdf-viewer').then(() => (this.librariesPreloaded.pdf = true)));
300
+ preloadTasks.push(import('ngx-extended-pdf-viewer')
301
+ .then(() => {
302
+ this.librariesPreloaded.pdf = true;
303
+ })
304
+ .catch((err) => console.warn('Error precargando PDF:', err)));
305
305
  }
306
306
  if (type === 'txt' && !this.librariesPreloaded.jspdf) {
307
- preloadTasks.push(import('jspdf').then(() => (this.librariesPreloaded.jspdf = true)));
307
+ preloadTasks.push(import('jspdf')
308
+ .then(() => {
309
+ this.librariesPreloaded.jspdf = true;
310
+ })
311
+ .catch((err) => console.warn('Error precargando jsPDF:', err)));
308
312
  }
309
313
  if (type === 'xlsx' || type === 'xls') {
310
314
  if (!this.librariesPreloaded.xlsx) {
311
- preloadTasks.push(import('xlsx').then((module) => {
315
+ preloadTasks.push(import('xlsx')
316
+ .then((module) => {
312
317
  this.xlsxModule = module;
313
318
  this.librariesPreloaded.xlsx = true;
314
- }));
319
+ })
320
+ .catch((err) => console.warn('Error precargando XLSX:', err)));
315
321
  }
316
322
  if (!this.librariesPreloaded.excel) {
317
- preloadTasks.push(import('handsontable').then(() => (this.librariesPreloaded.excel = true)));
323
+ preloadTasks.push(import('handsontable')
324
+ .then(() => {
325
+ this.librariesPreloaded.excel = true;
326
+ })
327
+ .catch((err) => console.warn('Error precargando Handsontable:', err)));
318
328
  }
319
329
  }
320
330
  if (preloadTasks.length > 0) {
@@ -331,13 +341,13 @@ class PdfViewerComponent {
331
341
  this.handleImageFile(blob);
332
342
  break;
333
343
  case type === 'txt':
334
- void this.convertTextToPdf(blob);
344
+ this.handleTextFile(blob);
335
345
  break;
336
346
  case ['xlsx', 'xls'].includes(type):
337
- void this.processExcelFile(blob);
347
+ this.handleExcelFile(blob);
338
348
  break;
339
349
  case ['docx', 'doc', 'pptx', 'ppt'].includes(type):
340
- this.convertOfficeToPdf(blob);
350
+ this.handleOfficeFile(blob);
341
351
  break;
342
352
  default:
343
353
  this.errorMessage.set('Formato no soportado');
@@ -352,6 +362,15 @@ class PdfViewerComponent {
352
362
  this.imageSrc = URL.createObjectURL(blob);
353
363
  this.loading.set(false);
354
364
  }
365
+ handleTextFile(blob) {
366
+ void this.convertTextToPdf(blob);
367
+ }
368
+ handleExcelFile(blob) {
369
+ void this.processExcelFile(blob);
370
+ }
371
+ handleOfficeFile(blob) {
372
+ this.convertOfficeToPdf(blob);
373
+ }
355
374
  convertOfficeToPdf(blob) {
356
375
  this.fileService.convertDocumentToPdf(blob, this.token, this.url).subscribe({
357
376
  next: (pdfBlob) => {
@@ -371,8 +390,13 @@ class PdfViewerComponent {
371
390
  if (!this.librariesPreloaded.jspdf) {
372
391
  await import('jspdf');
373
392
  }
374
- const { default: jsPDF } = await import('jspdf');
375
- const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' });
393
+ const { default: JsPdfCtor } = await import('jspdf');
394
+ const JsPdfClass = JsPdfCtor;
395
+ const pdf = new JsPdfClass({
396
+ orientation: 'portrait',
397
+ unit: 'pt',
398
+ format: 'a4',
399
+ });
376
400
  const pageWidth = pdf.internal.pageSize.getWidth();
377
401
  const pageHeight = pdf.internal.pageSize.getHeight();
378
402
  const margin = 40;
@@ -433,109 +457,195 @@ class PdfViewerComponent {
433
457
  async loadExcelSheetByIndex(index) {
434
458
  if (!this.excelWorkbook || !this.xlsxModule)
435
459
  return;
436
- this.showExcelViewer = false;
437
460
  const sheetName = this.excelSheetNames[index];
438
461
  const worksheet = this.excelWorkbook.Sheets[sheetName];
439
462
  if (!worksheet)
440
463
  return;
441
- let jsonData = this.xlsxModule.utils.sheet_to_json(worksheet, { header: 1, defval: '' });
442
- if (!Array.isArray(jsonData) || jsonData.length === 0) {
443
- jsonData = [['(Hoja vacía)']];
464
+ await new Promise((resolve) => setTimeout(resolve, 0));
465
+ let jsonData = this.xlsxModule.utils.sheet_to_json(worksheet, {
466
+ header: 1,
467
+ defval: '',
468
+ raw: true,
469
+ });
470
+ if (!jsonData.length) {
471
+ this.excelData = [];
472
+ this.excelColumns = [];
473
+ this.excelColumnHeaders = [];
474
+ return;
444
475
  }
445
- const headers = (jsonData[0] ?? []).map((h) => String(h ?? ''));
446
- const data = jsonData.slice(1);
447
- this.excelColumnHeaders = headers.length > 0 ? headers : [''];
448
- const maxColumns = Math.max(this.excelColumnHeaders.length, ...data.map((row) => row.length));
449
- this.excelColumnHeaders = Array.from({ length: maxColumns }, (_, i) => this.excelColumnHeaders[i] ?? `Col ${i + 1}`);
450
- this.excelData = data.map((row) => Array.from({ length: maxColumns }, (_, i) => row[i] ?? ''));
451
- this.excelColumns = Array.from({ length: maxColumns }, () => ({ type: 'text' }));
476
+ jsonData = jsonData.filter((row) => row.some((cell) => cell !== '' && cell !== null && cell !== undefined));
477
+ if (!jsonData.length) {
478
+ this.excelData = [];
479
+ this.excelColumns = [];
480
+ this.excelColumnHeaders = [];
481
+ return;
482
+ }
483
+ const columnCount = Math.max(...jsonData.map((r) => r.length));
484
+ const columnsToKeep = [];
485
+ for (let col = 0; col < columnCount; col++) {
486
+ const hasValue = jsonData.some((row) => row[col] !== '' && row[col] !== null && row[col] !== undefined);
487
+ if (hasValue)
488
+ columnsToKeep.push(col);
489
+ }
490
+ const cleanedData = jsonData.map((row) => columnsToKeep.map((colIndex) => row[colIndex] ?? ''));
491
+ const headers = cleanedData[0];
492
+ this.excelColumnHeaders = [...headers];
493
+ this.excelColumns = headers.map((header, i) => ({
494
+ data: i,
495
+ title: header || `Col ${i + 1}`,
496
+ readOnly: true,
497
+ }));
498
+ this.excelData = cleanedData.slice(1);
499
+ }
500
+ async selectExcelSheet(index) {
501
+ if (index < 0 || index >= this.excelSheetNames.length)
502
+ return;
503
+ this.showExcelViewer = false;
504
+ await new Promise((resolve) => setTimeout(resolve, 0));
452
505
  this.excelCurrentSheetIndex.set(index);
506
+ await this.loadExcelSheetByIndex(index);
507
+ this.buildExcelSettings();
453
508
  this.showExcelViewer = true;
454
509
  }
455
- selectExcelSheet(index) {
456
- void this.loadExcelSheetByIndex(index);
457
- }
458
510
  buildExcelSettings() {
459
511
  this.excelSettings = {
460
- licenseKey: 'non-commercial-and-evaluation',
461
- colHeaders: this.excelColumnHeaders,
462
- rowHeaders: true,
463
512
  stretchH: 'all',
464
- contextMenu: true,
465
- filters: true,
466
- dropdownMenu: true,
467
513
  readOnly: true,
468
- manualColumnResize: true,
469
- manualRowResize: true,
470
514
  columnSorting: true,
471
- height: '100%',
472
- width: '100%',
515
+ licenseKey: 'non-commercial-and-evaluation',
516
+ renderer: (instance, td, row, col, prop, value, cellProperties) => {
517
+ Handsontable.renderers.TextRenderer(instance, td, row, col, prop, value, cellProperties);
518
+ if (value && value.toString().length > 20) {
519
+ td.title = value.toString();
520
+ }
521
+ },
473
522
  };
474
523
  }
475
- // Helpers para template
476
524
  isExcelType() {
477
525
  return ['xlsx', 'xls'].includes(this.fileType());
478
526
  }
479
527
  isImageType() {
480
528
  return this.fileType() === 'image';
481
529
  }
482
- // Imagen: zoom/rotación/arrastre
483
530
  zoomIn() {
484
- this.zoomLevel.set(Math.min(this.zoomLevel() + this.zoomStep, this.maxZoom));
531
+ this.zoomLevel.update((level) => Math.min(level + this.zoomStep, this.maxZoom));
532
+ this.clampImagePosition();
485
533
  }
486
534
  zoomOut() {
487
- this.zoomLevel.set(Math.max(this.zoomLevel() - this.zoomStep, this.minZoom));
535
+ this.zoomLevel.update((level) => Math.max(level - this.zoomStep, this.minZoom));
536
+ this.clampImagePosition();
537
+ }
538
+ resetZoom() {
539
+ this.zoomLevel.set(100);
540
+ this.rotation.set(0);
541
+ this.imagePosition = { x: 0, y: 0 };
488
542
  }
489
543
  rotateLeft() {
490
- this.rotation.set((this.rotation() - 90) % 360);
544
+ this.rotation.update((rot) => (rot - 90) % 360);
545
+ setTimeout(() => this.adjustPositionAfterRotation(), 0);
491
546
  }
492
547
  rotateRight() {
493
- this.rotation.set((this.rotation() + 90) % 360);
548
+ this.rotation.update((rot) => (rot + 90) % 360);
549
+ setTimeout(() => this.adjustPositionAfterRotation(), 0);
494
550
  }
495
- getImageTransform() {
496
- const scale = this.zoomLevel() / 100;
497
- const translate = `translate(${this.imagePosition.x}px, ${this.imagePosition.y}px)`;
498
- const rotate = `rotate(${this.rotation()}deg)`;
499
- const scaleStr = `scale(${scale})`;
500
- return `${translate} ${rotate} ${scaleStr}`;
501
- }
502
- getCursorStyle() {
503
- return this.zoomLevel() > 100 ? (this.isDragging ? 'grabbing' : 'grab') : 'default';
551
+ resetRotation() {
552
+ this.rotation.set(0);
553
+ this.adjustPositionAfterRotation();
504
554
  }
505
- onImageLoad() {
506
- try {
507
- const imgEl = this.mainImage?.nativeElement;
508
- this.imageDimensions = { width: imgEl.naturalWidth, height: imgEl.naturalHeight };
555
+ adjustPositionAfterRotation() {
556
+ if (!this.imageContainer || !this.mainImage)
557
+ return;
558
+ this.imagePosition = { x: 0, y: 0 };
559
+ if (this.zoomLevel() > 100) {
560
+ this.clampImagePosition();
509
561
  }
510
- catch { /* noop */ }
562
+ }
563
+ getImageTransform() {
564
+ const scale = this.zoomLevel() / 100;
565
+ return `translate(${this.imagePosition.x}px, ${this.imagePosition.y}px) rotate(${this.rotation()}deg) scale(${scale})`;
511
566
  }
512
567
  onMouseWheel(event) {
513
- event.preventDefault();
514
- if (event.deltaY < 0)
515
- this.zoomIn();
516
- else
517
- this.zoomOut();
568
+ if (event.ctrlKey || event.metaKey) {
569
+ event.preventDefault();
570
+ const delta = event.deltaY > 0 ? -this.zoomStep : this.zoomStep;
571
+ const newZoom = this.zoomLevel() + delta;
572
+ if (newZoom >= this.minZoom && newZoom <= this.maxZoom) {
573
+ this.zoomLevel.set(newZoom);
574
+ this.clampImagePosition();
575
+ }
576
+ }
518
577
  }
519
578
  startDrag(event) {
520
- if (this.zoomLevel() <= 100)
521
- return;
522
- this.isDragging = true;
523
- this.dragStart = { x: event.clientX - this.imagePosition.x, y: event.clientY - this.imagePosition.y };
579
+ if (this.zoomLevel() > 100) {
580
+ this.isDragging = true;
581
+ this.dragStart = {
582
+ x: event.clientX - this.imagePosition.x,
583
+ y: event.clientY - this.imagePosition.y,
584
+ };
585
+ event.preventDefault();
586
+ }
524
587
  }
525
588
  onDrag(event) {
526
- if (!this.isDragging)
527
- return;
528
- this.imagePosition = { x: event.clientX - this.dragStart.x, y: event.clientY - this.dragStart.y };
589
+ if (this.isDragging && this.zoomLevel() > 100) {
590
+ this.imagePosition = {
591
+ x: event.clientX - this.dragStart.x,
592
+ y: event.clientY - this.dragStart.y,
593
+ };
594
+ this.clampImagePosition();
595
+ }
529
596
  }
530
597
  stopDrag() {
531
598
  this.isDragging = false;
532
599
  }
600
+ clampImagePosition() {
601
+ if (!this.imageContainer || !this.mainImage || !this.imageDimensions.width)
602
+ return;
603
+ const container = this.imageContainer.nativeElement;
604
+ const scaledWidth = this.imageDimensions.width * (this.zoomLevel() / 100);
605
+ const scaledHeight = this.imageDimensions.height * (this.zoomLevel() / 100);
606
+ if (scaledWidth <= container.clientWidth &&
607
+ scaledHeight <= container.clientHeight) {
608
+ this.imagePosition = { x: 0, y: 0 };
609
+ return;
610
+ }
611
+ const maxX = Math.max(0, (scaledWidth - container.clientWidth) / 2);
612
+ const maxY = Math.max(0, (scaledHeight - container.clientHeight) / 2);
613
+ this.imagePosition.x = Math.max(-maxX, Math.min(maxX, this.imagePosition.x));
614
+ this.imagePosition.y = Math.max(-maxY, Math.min(maxY, this.imagePosition.y));
615
+ }
616
+ onImageLoad() {
617
+ if (this.mainImage) {
618
+ const img = this.mainImage.nativeElement;
619
+ this.imageDimensions = {
620
+ width: img.naturalWidth,
621
+ height: img.naturalHeight,
622
+ };
623
+ }
624
+ }
625
+ getCursorStyle() {
626
+ if (this.zoomLevel() > 100) {
627
+ return this.isDragging ? 'grabbing' : 'grab';
628
+ }
629
+ return 'default';
630
+ }
631
+ isWordType() {
632
+ return ['docx', 'doc'].includes(this.fileType());
633
+ }
634
+ isPowerPointType() {
635
+ return ['pptx', 'ppt'].includes(this.fileType());
636
+ }
637
+ isOfficeType() {
638
+ return ['docx', 'doc', 'pptx', 'ppt'].includes(this.fileType());
639
+ }
640
+ getPreloadStatus() {
641
+ return `PDF: ${this.librariesPreloaded.pdf ? 'OK' : 'NO'}, Excel: ${this.librariesPreloaded.excel ? 'OK' : 'NO'}, XLSX: ${this.librariesPreloaded.xlsx ? 'OK' : 'NO'}, jsPDF: ${this.librariesPreloaded.jspdf ? 'OK' : 'NO'}`;
642
+ }
533
643
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: DocumentViewerFileService }], target: i0.ɵɵFactoryTarget.Component });
534
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: PdfViewerComponent, isStandalone: true, selector: "sgdea-document-viewer", inputs: { nameFile: "nameFile", nameBucket: "nameBucket", nameSpaceBucket: "nameSpaceBucket", url: "url", token: "token" }, viewQueries: [{ propertyName: "imageContainer", first: true, predicate: ["imageContainer"], descendants: true }, { propertyName: "mainImage", first: true, predicate: ["mainImage"], descendants: true }], ngImport: i0, template: "<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 +)\">\u2795</button>\n <button (click)=\"zoomOut()\" title=\"Alejar (Ctrl -)\">\u2796</button>\n <span class=\"separator\"></span>\n <button (click)=\"rotateLeft()\" title=\"Rotar izquierda (\u21BA)\">\u21BA</button>\n <button (click)=\"rotateRight()\" title=\"Rotar derecha (\u21BB)\">\u21BB</button>\n\n <span class=\"zoom-info\">{{ zoomLevel() }}%</span>\n <span class=\"rotation-info\" *ngIf=\"rotation() !== 0\">\n {{ rotation() }}\u00B0\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", styles: ["html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}.document-viewer-container{height:100vh;width:100%;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background-color:#f5f5f5;overflow:hidden}.loader,.error-message{text-align:center;padding:40px 20px;font-family:Arial,sans-serif;background-color:#fff;border-radius:4px;margin:20px;box-shadow:0 2px 4px #0000001a}.error-message{color:#d32f2f;background-color:#ffebee;border:1px solid #ffcdd2}::ng-deep ngx-extended-pdf-viewer{flex:1 1 auto;min-height:0;height:auto;width:calc(100% - 20px);margin:10px;border:1px solid #ddd;border-radius:4px;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showCommentEditor", "showDrawEditor", "showHighlightEditor", "showSignatureEditor", "logLevel", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "pdfBackgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showMovePageButton", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }, { kind: "ngmodule", type: HotTableModule }, { kind: "component", type: i5.HotTableComponent, selector: "hot-table", inputs: ["settings", "hotId", "activeHeaderClassName", "allowEmpty", "allowHtml", "allowInsertColumn", "allowInsertRow", "allowInvalid", "allowRemoveColumn", "allowRemoveRow", "ariaTags", "autoColumnSize", "autoRowSize", "autoWrapCol", "autoWrapRow", "bindRowsWithHeaders", "cell", "cells", "checkedTemplate", "className", "colHeaders", "collapsibleColumns", "columnHeaderHeight", "columns", "columnSorting", "columnSummary", "colWidths", "commentedCellClassName", "comments", "contextMenu", "copyable", "copyPaste", "correctFormat", "currentColClassName", "currentHeaderClassName", "currentRowClassName", "customBorders", "data", "dataDotNotation", "dataSchema", "dateFormat", "datePickerConfig", "defaultDate", "tabNavigation", "themeName", "disableVisualSelection", "dragToScroll", "dropdownMenu", "editor", "enterBeginsEditing", "enterMoves", "fillHandle", "filter", "filteringCaseSensitive", "filters", "fixedColumnsLeft", "fixedColumnsStart", "fixedRowsBottom", "fixedRowsTop", "formulas", "fragmentSelection", "headerClassName", "height", "hiddenColumns", "hiddenRows", "initialState", "invalidCellClassName", "imeFastEdit", "label", "language", "layoutDirection", "licenseKey", "locale", "manualColumnFreeze", "manualColumnMove", "manualColumnResize", "manualRowMove", "manualRowResize", "maxCols", "maxRows", "mergeCells", "minCols", "minRowHeights", "minRows", "minSpareCols", "minSpareRows", "multiColumnSorting", "navigableHeaders", "nestedHeaders", "nestedRows", "noWordWrapClassName", "numericFormat", "observeDOMVisibility", "outsideClickDeselects", "pagination", "persistentState", "placeholder", "placeholderCellClassName", "preventOverflow", "preventWheel", "readOnly", "readOnlyCellClassName", "renderAllColumns", "renderAllRows", "renderer", "rowHeaders", "rowHeaderWidth", "rowHeights", "search", "selectionMode", "selectOptions", "skipColumnOnPaste", "skipRowOnPaste", "sortByRelevance", "source", "startCols", "startRows", "stretchH", "strict", "tableClassName", "tabMoves", "title", "trimDropdown", "trimRows", "trimWhitespace", "type", "uncheckedTemplate", "undo", "validator", "valueGetter", "valueSetter", "viewportColumnRenderingOffset", "viewportRowRenderingOffset", "visibleRows", "width", "wordWrap", "afterAddChild", "afterAutofill", "afterBeginEditing", "afterCellMetaReset", "afterChange", "afterChangesObserved", "afterColumnCollapse", "afterColumnExpand", "afterColumnFreeze", "afterColumnMove", "afterColumnResize", "afterColumnSequenceCacheUpdate", "afterColumnSequenceChange", "afterColumnSort", "afterColumnUnfreeze", "afterContextMenuDefaultOptions", "afterContextMenuHide", "afterContextMenuShow", "afterCopy", "afterCopyLimit", "afterCreateCol", "afterCreateRow", "afterCut", "afterDeselect", "afterDestroy", "afterDetachChild", "afterDocumentKeyDown", "afterDrawSelection", "afterDropdownMenuDefaultOptions", "afterDropdownMenuHide", "afterDropdownMenuShow", "afterFilter", "afterFormulasValuesUpdate", "afterGetCellMeta", "afterGetColHeader", "afterGetColumnHeaderRenderers", "afterGetRowHeader", "afterGetRowHeaderRenderers", "afterHideColumns", "afterHideRows", "afterInit", "afterLanguageChange", "afterListen", "afterLoadData", "afterMergeCells", "afterModifyTransformEnd", "afterModifyTransformFocus", "afterModifyTransformStart", "afterMomentumScroll", "afterNamedExpressionAdded", "afterNamedExpressionRemoved", "afterOnCellContextMenu", "afterOnCellCornerDblClick", "afterOnCellCornerMouseDown", "afterOnCellMouseDown", "afterOnCellMouseOut", "afterOnCellMouseOver", "afterOnCellMouseUp", "afterPageChange", "afterPageSizeChange", "afterPageSizeVisibilityChange", "afterPageCounterVisibilityChange", "afterPageNavigationVisibilityChange", "afterPaste", "afterPluginsInitialized", "afterRedo", "afterRedoStackChange", "afterRefreshDimensions", "afterRemoveCellMeta", "afterRemoveCol", "afterRemoveRow", "afterRender", "afterRenderer", "afterRowMove", "afterRowResize", "afterRowSequenceCacheUpdate", "afterRowSequenceChange", "afterScrollHorizontally", "afterScrollVertically", "afterScroll", "afterSelectColumns", "afterSelection", "afterSelectionByProp", "afterSelectionEnd", "afterSelectionEndByProp", "afterSelectionFocusSet", "afterSelectRows", "afterSetCellMeta", "afterSetDataAtCell", "afterSetDataAtRowProp", "afterSetSourceDataAtCell", "afterSetTheme", "afterSheetAdded", "afterSheetRenamed", "afterSheetRemoved", "afterTrimRow", "afterUndo", "afterUndoStackChange", "afterUnhideColumns", "afterUnhideRows", "afterUnlisten", "afterUnmergeCells", "afterUntrimRow", "afterUpdateData", "afterUpdateSettings", "afterValidate", "afterViewportColumnCalculatorOverride", "afterViewportRowCalculatorOverride", "afterViewRender", "beforeAddChild", "beforeAutofill", "beforeBeginEditing", "beforeCellAlignment", "beforeChange", "beforeChangeRender", "beforeColumnCollapse", "beforeColumnExpand", "beforeColumnFreeze", "beforeColumnMove", "beforeColumnResize", "beforeColumnSort", "beforeColumnWrap", "beforeColumnUnfreeze", "beforeCompositionStart", "beforeContextMenuSetItems", "beforeContextMenuShow", "beforeCopy", "beforeCreateCol", "beforeCreateRow", "beforeCut", "beforeDetachChild", "beforeDrawBorders", "beforeDropdownMenuSetItems", "beforeDropdownMenuShow", "beforeFilter", "beforeGetCellMeta", "beforeHeightChange", "beforeHideColumns", "beforeHideRows", "beforeHighlightingColumnHeader", "beforeHighlightingRowHeader", "beforeInit", "beforeInitWalkontable", "beforeKeyDown", "beforeLanguageChange", "beforeLoadData", "beforeMergeCells", "beforeOnCellContextMenu", "beforeOnCellMouseDown", "beforeOnCellMouseOut", "beforeOnCellMouseOver", "beforeOnCellMouseUp", "beforePageChange", "beforePageSizeChange", "beforePaste", "beforeRedo", "beforeRedoStackChange", "beforeRefreshDimensions", "beforeRemoveCellClassNames", "beforeRemoveCellMeta", "beforeRemoveCol", "beforeRemoveRow", "beforeRender", "beforeRenderer", "beforeRowMove", "beforeRowResize", "beforeRowWrap", "beforeSelectColumns", "beforeSelectionFocusSet", "beforeSelectionHighlightSet", "beforeSelectRows", "beforeSetCellMeta", "beforeSetRangeEnd", "beforeSetRangeStart", "beforeSetRangeStartOnly", "beforeStretchingColumnWidth", "beforeTouchScroll", "beforeTrimRow", "beforeUndo", "beforeUndoStackChange", "beforeUnhideColumns", "beforeUnhideRows", "beforeUnmergeCells", "beforeUntrimRow", "beforeUpdateData", "beforeValidate", "beforeValueRender", "beforeViewportScroll", "beforeViewportScrollHorizontally", "beforeViewportScrollVertically", "beforeViewRender", "beforeWidthChange", "construct", "init", "modifyAutoColumnSizeSeed", "modifyAutofillRange", "modifyColHeader", "modifyColumnHeaderHeight", "modifyColumnHeaderValue", "modifyColWidth", "modifyCopyableRange", "modifyFiltersMultiSelectValue", "modifyFocusedElement", "modifyData", "modifyFocusOnTabNavigation", "modifyGetCellCoords", "modifyGetCoordsElement", "modifyRowData", "modifyRowHeader", "modifyRowHeaderWidth", "modifyRowHeight", "modifyRowHeightByOverlayName", "modifySourceData", "modifyTransformEnd", "modifyTransformFocus", "modifyTransformStart", "persistentStateLoad", "persistentStateReset", "persistentStateSave"] }] });
644
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: PdfViewerComponent, isStandalone: true, selector: "sgdea-document-viewer", inputs: { nameFile: "nameFile", nameBucket: "nameBucket", nameSpaceBucket: "nameSpaceBucket", url: "url", token: "token" }, viewQueries: [{ propertyName: "imageContainer", first: true, predicate: ["imageContainer"], descendants: true }, { propertyName: "mainImage", first: true, predicate: ["mainImage"], descendants: true }], ngImport: i0, template: "<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<!-- Visor de im\u00E1genes con zoom y rotaci\u00F3n -->\n <div *ngIf=\"isImageType() && imageSrc\" class=\"image-viewer\">\n <!-- Barra de herramientas -->\n <div class=\"image-toolbar\">\n <button (click)=\"zoomIn()\" title=\"Acercar (Ctrl +)\">\u2795</button>\n <button (click)=\"zoomOut()\" title=\"Alejar (Ctrl -)\">\u2796</button>\n <!-- Separador -->\n <span class=\"separator\"></span>\n\n <!-- Botones de rotaci\u00F3n AHORA FUNCIONALES -->\n <button (click)=\"rotateLeft()\" title=\"Rotar izquierda (\u21BA)\">\u21BA</button>\n <button (click)=\"rotateRight()\" title=\"Rotar derecha (\u21BB)\">\u21BB</button>\n\n <!-- Informaci\u00F3n -->\n <span class=\"zoom-info\">{{ zoomLevel() }}%</span>\n <span class=\"rotation-info\" *ngIf=\"rotation() !== 0\">\n {{ rotation() }}\u00B0\n </span>\n\n <span class=\"image-dimensions\" *ngIf=\"imageDimensions.width\">\n {{ imageDimensions.width }} x {{ imageDimensions.height }}\n </span>\n </div>\n\n <!-- Contenedor de la imagen -->\n <div\n class=\"image-container\" \n #imageContainer \n (wheel)=\"onMouseWheel($event)\"\n >\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 <!-- Instrucciones -->\n <div class=\"image-footer\" *ngIf=\"zoomLevel() > 100\">\n <small>Arrastra para mover la imagen</small>\n </div>\n </div>\n <!-- Excel -->\n <div *ngIf=\"isExcelType()\" class=\"excel-viewer-container\">\n\n <!-- Tabs -->\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\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.handsontable .table th,.handsontable .table td{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child th,.handsontable .table caption+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table thead:first-child tr:first-child th,.handsontable .table thead:first-child tr:first-child td{border-top:1px solid #CCCCCC}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered th,.handsontable .table-bordered td{border-left:none}.handsontable .table-bordered th:first-child,.handsontable .table-bordered td:first-child{border-left:1px solid #CCCCCC}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable.ht-wrapper{height:100%;width:100%}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{position:relative;width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable table,.handsontable tbody,.handsontable thead,.handsontable td,.handsontable th,.handsontable input,.handsontable textarea,.handsontable div{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:initial}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;cursor:default;max-width:none;max-height:none}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable th,.handsontable td{border-top-width:0;border-left-width:0;border-right:1px solid #ccc;border-bottom:1px solid #ccc;height:22px;empty-cells:show;line-height:21px;padding:0 4px;background-color:#fff;vertical-align:top;overflow:hidden;outline:none;outline-width:0;white-space:pre-wrap}[dir=rtl].handsontable th,[dir=rtl].handsontable td{border-right-width:0;border-left:1px solid #ccc}.handsontable th:last-child{border-left:none;border-right:1px solid #ccc;border-bottom:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-right:none;border-left:1px solid #ccc}.handsontable th:first-child,.handsontable .ht_clone_inline_start td:first-of-type,.handsontable .ht_clone_top_inline_start_corner td:first-of-type,.handsontable .ht_clone_bottom_inline_start_corner td:first-of-type,.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{border-left:1px solid #ccc}[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-right-width:0;border-left:1px solid #ccc}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child th,.handsontable tr:first-child td{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-right-width:0;border-left:1px solid #ccc}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;text-align:center;font-weight:400;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder:nth-child(1),.handsontable .wtBorder:nth-child(3){z-index:2}.handsontable .wtBorder:nth-child(2),.handsontable .wtBorder:nth-child(4){z-index:1}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.htBorders .wtBorder.ht-border-style-dashed-vertical{background-image:repeating-linear-gradient(to bottom,var(--ht-custom-border-color) 0 5px,transparent 0 10px)}.htBorders .wtBorder.ht-border-style-dashed-horizontal{background-image:repeating-linear-gradient(to right,var(--ht-custom-border-color) 0 5px,transparent 0 10px)}.htBorders .wtBorder.ht-border-style-dotted-horizontal{background-image:radial-gradient(circle,var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2),transparent 0);background-size:calc(var(--ht-custom-border-size) * 2) var(--ht-custom-border-size);background-repeat:repeat-x}.htBorders .wtBorder.ht-border-style-dotted-vertical{background-image:radial-gradient(circle,var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2),transparent 0);background-size:var(--ht-custom-border-size) calc(var(--ht-custom-border-size) * 2);background-repeat:repeat-y}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_master,.ht_clone_inline_start,.ht_clone_top,.ht_clone_bottom{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_master table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_clone_inline_start table.htCore>thead{visibility:hidden}.ht_clone_top .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_bottom .wtHolder{overflow:hidden}.handsontable{position:relative;touch-action:manipulation;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;color:#373737}.handsontable a{color:#104acc}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:#fff0}.hot-display-license-info{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;color:#373737;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.htFocusCatcher{position:absolute;z-index:-1;opacity:0;border:0;margin:0;padding:0;width:0;height:0}.handsontable .htTextEllipsis{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.handsontable .manualColumnResizer{position:absolute;top:0;cursor:col-resize;z-index:210;width:5px;height:25px}.handsontable .manualRowResizer{position:absolute;left:0;cursor:row-resize;z-index:210;height:5px;width:50px}.handsontable .manualColumnResizer:hover,.handsontable .manualColumnResizer.active,.handsontable .manualRowResizer:hover,.handsontable .manualRowResizer.active{background-color:#34a9db}.handsontable .manualColumnResizerGuide{position:absolute;right:unset;top:0;background-color:#34a9db;display:none;width:0;border-right:1px dashed #777;border-left:none;margin-left:5px;margin-right:unset}[dir=rtl].handsontable .manualColumnResizerGuide{left:unset;border-left:1px dashed #777;border-right:none;margin-right:5px;margin-left:unset}.handsontable .manualRowResizerGuide{position:absolute;left:0;bottom:0;background-color:#34a9db;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area:before,.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before{content:\"\";position:absolute;inset:0;background:#005eff}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{border:none;outline-width:0;margin:0;padding:1px 5px 0;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:0 0 0 2px #5292f7 inset;resize:none;display:block;color:#000;border-radius:0;background-color:#fff;box-sizing:border-box!important}.handsontableInput:focus{outline:none}.handsontableInputHolder{position:absolute;top:0;left:0}.htSelectEditor{position:absolute;select{-webkit-appearance:menulist-button!important;width:100%;height:100%;border:2px solid #4b89ff;box-sizing:border-box!important}}.htSelectEditor select:focus{outline:none}.htSelectEditor .htAutocompleteArrow{display:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:\"\\25b6\";color:#777;position:absolute;right:5px;font-size:9px}[dir=rtl].handsontable .htSubmenu :after{content:\"\"}[dir=rtl].handsontable .htSubmenu :before{content:\"\\25c0\";color:#777;position:absolute;left:5px;font-size:9px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{border:1px solid #ccc;margin:0}.handsontable.listbox.autocompleteEditor,.handsontable.listbox.dropdownEditor{border-width:0}.handsontable.listbox .ht_master table{border-collapse:separate;background:#fff}.handsontable.listbox.autocompleteEditor .ht_master table,.handsontable.listbox.dropdownEditor .ht_master table{border:1px solid #ccc}.handsontable.listbox th,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th,.handsontable.listbox tr:first-child td,.handsontable.listbox td{border-color:transparent!important}.handsontable.listbox th,.handsontable.listbox td{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-box-shadow:0 0 0 2px #5292f7 inset;-moz-box-shadow:0 0 0 2px #5292f7 inset;box-shadow:0 0 0 2px #5292f7 inset;-webkit-appearance:none}.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea,.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea,[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea{right:-10000px;left:unset}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#bbb;cursor:default;width:16px;text-align:center}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{font-size:inherit;vertical-align:middle;cursor:pointer;display:inline-block}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .collapsibleIndicator{position:absolute;top:50%;transform:translateY(-50%);left:unset;right:5px;border:1px solid #A6A6A6;line-height:8px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;-webkit-box-shadow:0 0 0 6px rgb(238,238,238);-moz-box-shadow:0 0 0 6px rgb(238,238,238);box-shadow:0 0 0 3px #eee;background:#eee;text-align:center}[dir=rtl].handsontable .collapsibleIndicator{right:unset;left:5px}.handsontable[dir=ltr] thead th:has(.collapsibleIndicator) div.htRight span.colHeader{margin-right:20px}.handsontable[dir=rtl] thead th:has(.collapsibleIndicator) div.htLeft span.colHeader{margin-left:20px}.handsontable .columnSorting{position:relative}.handsontable[dir=ltr] div.htRight span[class*=ascending],.handsontable[dir=ltr] div.htRight span[class*=descending]{margin-right:10px;margin-left:-10px}.handsontable[dir=rtl] div.htLeft span[class*=ascending],.handsontable[dir=rtl] div.htLeft span[class*=descending]{margin-left:10px;margin-right:-10px}.handsontable[dir=ltr] div.htRight span[class*=ascending]:only-child,.handsontable[dir=ltr] div.htRight span[class*=descending]:only-child{margin-right:15px;margin-left:-15px}.handsontable[dir=rtl] div.htLeft span[class*=ascending]:only-child,.handsontable[dir=rtl] div.htLeft span[class*=descending]:only-child{margin-left:15px;margin-right:-15px}.handsontable .columnSorting.sortAction:hover{text-decoration:underline;cursor:pointer}.handsontable span.colHeader.columnSorting:before{top:50%;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;left:unset;content:\"\";height:10px;width:5px;background-size:contain;background-repeat:no-repeat;background-position-x:right}[dir=rtl].handsontable span.colHeader.columnSorting:before{padding-right:8px;padding-left:0;left:-9px;right:unset;background-position-x:left}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:\"*\";display:inline-block;position:relative;padding-right:20px}.handsontable.htGhostTable table thead th{border-bottom-width:0}.handsontable.htGhostTable table tbody tr th,.handsontable.htGhostTable table tbody tr td{border-top-width:0}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{content:\"\";position:absolute;top:0;right:0;left:unset;border-left:6px solid transparent;border-right:none;border-top:6px solid black}[dir=rtl].handsontable .htCommentCell:after{left:0;right:unset;border-right:6px solid transparent;border-left:none}.htCommentsContainer .htComments{display:none;z-index:1059;position:absolute}.htCommentsContainer .htCommentTextArea{box-shadow:#0000001e 0 1px 3px,#0000003d 0 1px 2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-left:3px solid #ccc;border-right:none;background-color:#fff;width:215px;height:90px;font-size:12px;padding:5px;outline:0!important;-webkit-appearance:none}[dir=rtl].htCommentsContainer .htCommentTextArea{border-right:3px solid #ccc;border-left:none}.htCommentsContainer .htCommentTextArea:focus{box-shadow:#0000001e 0 1px 3px,#0000003d 0 1px 2px,inset 0 0 0 1px #5292f7;border-left:3px solid #5292f7;border-right:none}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-right:3px solid #5292f7;border-left:none}.htContextMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htContextMenu .ht_clone_top,.htContextMenu .ht_clone_bottom,.htContextMenu .ht_clone_inline_start,.htContextMenu .ht_clone_top_inline_start_corner,.htContextMenu .ht_clone_bottom_inline_start_corner{display:none}.htContextMenu .ht_master table.htCore{border-color:#ccc;border-style:solid;border-top-width:1px;border-bottom-width:2px;border-left-width:1px;border-right-width:2px}[dir=rtl].htContextMenu .ht_master table.htCore{border-right-width:1px;border-left-width:2px}.htContextMenu.handsontable:focus{outline:none}.htContextMenu .wtBorder{visibility:hidden}.htContextMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htContextMenu table tbody tr td:first-child{border-top-width:0;border-bottom-width:0;border-left-width:0;border-right-width:0}[dir=rtl].htContextMenu table tbody tr td:first-child{border-right-width:0;border-left-width:0}.htContextMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htContextMenu table tbody tr td.current{background:#f3f3f3}.htContextMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htContextMenu table tbody tr td.htDisabled{color:#999;cursor:default}.htContextMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htContextMenu table tbody tr.htHidden{display:none}.htContextMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:6px}[dir=rtl].htContextMenu table tbody tr td .htItemWrapper{margin-right:10px;margin-left:6px}.htContextMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px;right:0}[dir=rtl].htContextMenu table tbody tr td div span.selected{right:4px;left:0}.htContextMenu .ht_master .wtHolder{overflow:hidden}textarea.HandsontableCopyPaste{position:fixed!important;top:0!important;right:100%!important;overflow:hidden;opacity:0;outline:0 none!important}.handsontable .changeType{background:#eee;border-radius:2px;border:1px solid #bbb;color:#bbb;font-size:9px;line-height:9px;padding:2px;margin:3px 1px 0 5px;float:right}[dir=rtl].handsontable .changeType{float:left}.handsontable[dir=rtl] .changeType{margin:3px 5px 0 1px}.handsontable .changeType:before{content:\"\\25bc \"}.handsontable .changeType:hover{border:1px solid #777;color:#777;cursor:pointer}.htDropdownMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htDropdownMenu .ht_clone_top,.htDropdownMenu .ht_clone_bottom,.htDropdownMenu .ht_clone_inline_start,.htDropdownMenu .ht_clone_top_inline_start_corner,.htDropdownMenu .ht_clone_bottom_inline_start_corner{display:none}.htDropdownMenu table.htCore{border-color:#ccc;border-style:solid;border-top-width:1px;border-bottom-width:2px;border-left-width:1px;border-right-width:2px}[dir=rtl].htDropdownMenu table.htCore{border-right-width:1px;border-left-width:2px}.htDropdownMenu.handsontable:focus{outline:none}.htDropdownMenu .wtBorder{visibility:hidden}.htDropdownMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htDropdownMenu table tbody tr td:first-child{border-top-width:0;border-right-width:0;border-bottom-width:0;border-left-width:0}[dir=rtl].htDropdownMenu table tbody tr td:first-child{border-left-width:0;border-right-width:0}.htDropdownMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htDropdownMenu table tbody tr td.current{background:#e9e9e9}.htDropdownMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htDropdownMenu table tbody tr td.htDisabled{color:#999}.htDropdownMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htDropdownMenu:not(.htGhostTable) table tbody tr.htHidden{display:none}.htDropdownMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:10px}[dir=rtl].htDropdownMenu table tbody tr td .htItemWrapper{margin-right:10px;margin-left:10px}.htDropdownMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px;right:0}[dir=rtl].htDropdownMenu table tbody tr td div span.selected{right:4px;left:0}.htDropdownMenu .ht_master .wtHolder{overflow:hidden}.htFiltersConditionsMenu:not(.htGhostTable){display:none;position:absolute;z-index:1070}.htFiltersConditionsMenu .ht_clone_top,.htFiltersConditionsMenu .ht_clone_bottom,.htFiltersConditionsMenu .ht_clone_inline_start,.htFiltersConditionsMenu .ht_clone_top_inline_start_corner,.htFiltersConditionsMenu .ht_clone_bottom_inline_start_corner{display:none}.htFiltersConditionsMenu table.htCore{border:1px solid #bbb;border-bottom-width:2px;border-right-width:2px}.htFiltersConditionsMenu .wtBorder{visibility:hidden}.htFiltersConditionsMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htFiltersConditionsMenu table tbody tr td:first-child{border-top-width:0;border-right-width:0;border-bottom-width:0;border-left-width:0}[dir=rtl].htFiltersConditionsMenu table tbody tr td:first-child{border-left-width:0;border-right-width:0}.htFiltersConditionsMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htFiltersConditionsMenu table tbody tr td.current{background:#e9e9e9}.htFiltersConditionsMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0}.htFiltersConditionsMenu table tbody tr td.htDisabled{color:#999}.htFiltersConditionsMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htFiltersConditionsMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:10px}.htFiltersConditionsMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htFiltersConditionsMenu .ht_master .wtHolder{overflow:hidden}.handsontable .htMenuFiltering{border-bottom:1px dotted #ccc;height:135px;overflow:hidden}.handsontable .ht_master table td.htCustomMenuRenderer{background-color:#fff;cursor:auto}.handsontable .htFiltersMenuLabel{font-size:.75em}.handsontable .htFiltersMenuActionBar{text-align:center;padding-top:10px;padding-bottom:3px}.handsontable .htFiltersMenuCondition.border{border-bottom:1px dotted #ccc!important}.handsontable .htFiltersMenuCondition .htUIInput{padding:0 0 5px}.handsontable .htFiltersMenuValue{border-bottom:1px dotted #ccc!important}.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch{padding:0}.handsontable .htFiltersMenuCondition .htUIInput input,.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input{font-family:inherit;font-size:.75em;padding:4px;box-sizing:border-box;width:100%}.htUIMultipleSelect .ht_master .wtHolder{overflow:auto}.handsontable .htFiltersActive .changeType{border:1px solid #509272;color:#18804e;background-color:#d2e0d9}.handsontable .htUISelectAll{margin-left:0;margin-right:10px}[dir=rtl].handsontable .htUISelectAll{margin-right:0;margin-left:10px}.handsontable .htUIClearAll,.handsontable .htUISelectAll{display:inline-block}.handsontable .htUIClearAll a,.handsontable .htUISelectAll a{font-size:.75em}.handsontable .htUISelectionControls{text-align:right}[dir=rtl].handsontable .htUISelectionControls{text-align:left}.handsontable .htCheckboxRendererInput{display:inline-block;margin:0 5px 0 0;vertical-align:middle;height:1em}[dir=rtl].handsontable .htCheckboxRendererInput{margin-left:5px;margin-right:0}.handsontable .htUIInput{padding:3px 0 7px;position:relative;text-align:center}.handsontable .htUIInput input{border-radius:2px;border:1px solid #d2d1d1}.handsontable .htUIInputIcon{position:absolute}.handsontable .htUIInput.htUIButton{cursor:pointer;display:inline-block}.handsontable .htUIInput.htUIButton input{background-color:#eee;color:#000;cursor:pointer;font-family:inherit;font-size:.75em;font-weight:700;height:19px;min-width:64px}.handsontable .htUIInput.htUIButton input:hover{border-color:#b9b9b9}.handsontable .htUIInput.htUIButtonOK{margin-left:0;margin-right:10px}[dir=rtl].handsontable .htUIInput.htUIButtonOK{margin-right:0;margin-left:10px}.handsontable .htUIInput.htUIButtonOK input{background-color:#0f9d58;border-color:#18804e;color:#fff}.handsontable .htUIInput.htUIButtonOK input:focus-visible{background-color:#92dd8d;border-color:#7cb878;color:#000}.handsontable .htUIInput.htUIButtonOK input:hover{border-color:#1a6f46}.handsontable .htUISelect{cursor:pointer;margin-bottom:7px;position:relative}.handsontable .htUISelectCaption{background-color:#e8e8e8;border-radius:2px;border:1px solid #d2d1d1;font-family:inherit;font-size:.75em;font-weight:700;padding:3px 20px 3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.handsontable .htUISelectCaption:hover{background-color:#e8e8e8;border:1px solid #b9b9b9}.handsontable .htUISelectDropdown:after{content:\"\\25b2\";font-size:7px;position:absolute;right:10px;top:0}.handsontable .htUISelectDropdown:before{content:\"\\25bc\";font-size:7px;position:absolute;right:10px;top:8px}.handsontable .htUIMultipleSelect .handsontable .htCore{border:none}.handsontable .htUIMultipleSelect .handsontable .htCore td:hover{background-color:#f5f5f5}.handsontable .htUIMultipleSelectSearch input{border-radius:2px;border:1px solid #d2d1d1;padding:3px}.handsontable .htUIRadio{display:inline-block;margin-left:0;margin-right:5px;height:100%}[dir=rtl].handsontable .htUIRadio{margin-right:0;margin-left:5px}.handsontable .htUIRadio:last-child{margin-right:0}.handsontable .htUIRadio>input[type=radio]{margin-left:0;margin-right:.5ex}[dir=rtl].handsontable .htUIRadio>input[type=radio]{margin-right:0;margin-left:.5ex}.handsontable .htUIRadio label{vertical-align:middle}.handsontable .htFiltersMenuOperators{padding-bottom:5px}.handsontable th.beforeHiddenColumn{position:relative}.handsontable th.beforeHiddenColumn:after,.handsontable th.afterHiddenColumn:before{color:#bbb;position:absolute;top:50%;font-size:5pt;transform:translateY(-50%)}.handsontable th.afterHiddenColumn{position:relative}.handsontable[dir=ltr] th.afterHiddenColumn div.htLeft{margin-left:10px}.handsontable[dir=ltr] th.beforeHiddenColumn div.htRight,.handsontable[dir=rtl] th.afterHiddenColumn div.htRight{margin-right:10px}.handsontable[dir=rtl] th.beforeHiddenColumn div.htLeft{margin-left:10px}.handsontable th.beforeHiddenColumn:after{right:1px;content:\"\\25c0\"}[dir=rtl].handsontable th.beforeHiddenColumn:after{right:initial;left:1px;content:\"\\25b6\"}.handsontable th.afterHiddenColumn:before{left:1px;content:\"\\25b6\"}[dir=rtl].handsontable th.afterHiddenColumn:before{right:1px;left:initial;content:\"\\25c0\"}.handsontable th.beforeHiddenRow:before,.handsontable th.afterHiddenRow:after{color:#bbb;font-size:6pt;line-height:6pt;position:absolute;left:2px}.handsontable th.beforeHiddenRow,.handsontable th.afterHiddenRow{position:relative}.handsontable th.beforeHiddenRow:before{content:\"\\25b2\";bottom:2px}.handsontable th.afterHiddenRow:after{content:\"\\25bc\";top:2px}.handsontable.ht__selection--rows tbody th.beforeHiddenRow.ht__highlight:before,.handsontable.ht__selection--rows tbody th.afterHiddenRow.ht__highlight:after{color:#eee}.handsontable td.afterHiddenRow.firstVisibleRow,.handsontable th.afterHiddenRow.firstVisibleRow{border-top:1px solid #CCC}.htRowHeaders .ht_master.innerBorderInlineStart~.ht_clone_top_inline_start_corner th:nth-child(2),.htRowHeaders .ht_master.innerBorderInlineStart~.ht_clone_inline_start td:first-of-type{border-left:0 none}.handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualColumnMove.on-moving--columns *,.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer{display:none}.handsontable .ht__manualColumnMove--guideline,.handsontable .ht__manualColumnMove--backlight{position:absolute;height:100%;display:none}.handsontable .ht__manualColumnMove--guideline{background:#757575;width:2px;top:0;margin-inline-start:-1px;margin-inline-end:0;z-index:205}.handsontable .ht__manualColumnMove--backlight{background:#343434;background:#34343440;display:none;z-index:205;pointer-events:none}.handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline,.handsontable.on-moving--columns .ht__manualColumnMove--backlight{display:block}.handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualRowMove.on-moving--rows *,.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer{display:none}.handsontable .ht__manualRowMove--guideline,.handsontable .ht__manualRowMove--backlight{position:absolute;width:100%;display:none}.handsontable .ht__manualRowMove--guideline{background:#757575;height:2px;left:0;margin-top:-1px;z-index:205}.handsontable .ht__manualRowMove--backlight{background:#343434;background:#34343440;display:none;z-index:205;pointer-events:none}.handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline,.handsontable.on-moving--rows .ht__manualRowMove--backlight{display:block}.handsontable tbody td[rowspan][class*=area][class*=highlight]:not([class*=fullySelectedMergedCell]):before{opacity:0}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-multiple]:before{opacity:.1}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-0]:before{opacity:.1}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-1]:before{opacity:.2}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-2]:before{opacity:.27}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-3]:before{opacity:.35}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-4]:before{opacity:.41}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-5]:before{opacity:.47}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-6]:before{opacity:.54}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-7]:before{opacity:.58}.handsontable[dir=ltr] div.htRight span[class*=sort-]{margin-right:15px;margin-left:-15px}.handsontable[dir=rtl] div.htLeft span[class*=sort-]{margin-left:15px;margin-right:-15px}.handsontable[dir=ltr] div.htRight span[class*=sort-]:only-child{margin-right:20px;margin-left:-20px}.handsontable[dir=rtl] div.htLeft span[class*=sort-]:only-child{margin-left:20px;margin-right:-20px}.handsontable span.colHeader.columnSorting:after{top:50%;margin-top:-2px;position:absolute;right:-15px;left:unset;padding-left:5px;padding-right:unset;font-size:8px;height:8px;line-height:1.1}[dir=rtl].handsontable span.colHeader.columnSorting:after{left:-15px;right:unset;padding-right:5px;padding-left:unset}.handsontable span.colHeader.columnSorting[class^=sort-]:after,.handsontable span.colHeader.columnSorting[class*=\" sort-\"]:after{content:\"+\"}.handsontable span.colHeader.columnSorting.sort-1:after{content:\"1\"}.handsontable span.colHeader.columnSorting.sort-2:after{content:\"2\"}.handsontable span.colHeader.columnSorting.sort-3:after{content:\"3\"}.handsontable span.colHeader.columnSorting.sort-4:after{content:\"4\"}.handsontable span.colHeader.columnSorting.sort-5:after{content:\"5\"}.handsontable span.colHeader.columnSorting.sort-6:after{content:\"6\"}.handsontable span.colHeader.columnSorting.sort-7:after{content:\"7\"}.htGhostTable th div button.changeType+span.colHeader.columnSorting:not(.indicatorDisabled){padding-right:5px}.handsontable thead th.hiddenHeader:not(:first-of-type){display:none}thead th.hiddenHeaderText .colHeader{opacity:0}.handsontable th.ht_nestingLevels{text-align:left;padding-left:7px}[dir=rtl].handsontable th.ht_nestingLevels{text-align:right;padding-right:7px}.handsontable th div.ht_nestingLevels{display:inline-block;position:absolute;left:11px;right:unset}[dir=rtl].handsontable th div.ht_nestingLevels{right:11px;left:unset}.handsontable.innerBorderInlineStart th div.ht_nestingLevels,.handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingLevels{right:10px;left:unset}[dir=rtl].handsontable.innerBorderInlineStart th div.ht_nestingLevels,[dir=rtl].handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingLevels{left:10px;right:unset}.handsontable th span.ht_nestingLevel{display:inline-block}.handsontable th span.ht_nestingLevel_empty{display:inline-block;width:10px;height:1px;float:left}[dir=rtl].handsontable th span.ht_nestingLevel_empty{float:right}.handsontable th span.ht_nestingLevel:after{content:\"\\2510\";font-size:9px;display:inline-block;position:relative;bottom:3px}.handsontable th div.ht_nestingButton{display:inline-block;position:absolute;right:-2px;left:unset;cursor:pointer}[dir=rtl].handsontable th div.ht_nestingButton{left:-2px;right:unset}.handsontable th div.ht_nestingButton.ht_nestingExpand:after{content:\"+\"}.handsontable th div.ht_nestingButton.ht_nestingCollapse:after{content:\"-\"}.handsontable.innerBorderInlineStart th div.ht_nestingButton,.handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingButton{right:0;left:unset}[dir=rtl].handsontable.innerBorderInlineStart th div.ht_nestingButton,[dir=rtl].handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingButton{left:0;right:unset}.ht-root-wrapper{position:relative;display:flex;flex-direction:column;height:100%}.ht-grid{flex:1 1 auto;min-height:0}.ht-dialog{position:absolute;top:0;left:0;display:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;width:100%;height:100%;z-index:1060;opacity:0;overflow-y:auto;border:1px solid #ccc;box-sizing:border-box!important}.ht-dialog[dir=rtl]{left:auto;right:0}.ht-dialog:focus{border:1px solid #4b89ff;outline:none}.ht-dialog:has(.htFocusCatcher:focus){border:1px solid #4b89ff;outline:none}.ht-dialog *{box-sizing:border-box!important}.ht-dialog--background-solid{background-color:#fff}.ht-dialog--background-semi-transparent{background-color:#ffffff80}.ht-dialog--animation{transition:opacity .15s ease-in-out}.ht-dialog--show{opacity:1}.ht-dialog__content-wrapper{display:flex;align-items:center;justify-content:center;width:100%;min-height:100%;padding:16px}.ht-dialog__content-wrapper:focus{border:1px solid #4b89ff;outline:none}.ht-dialog__content{position:relative;padding:8px;display:flex;gap:8px;max-width:480px;color:#222}.ht-dialog__content--background{box-shadow:0 8px 16px #00000014;background-color:#f7f7f9}.ht-dialog--confirm .ht-dialog__content-wrapper{text-align:center}.ht-dialog--confirm .ht-dialog__content-wrapper-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;max-width:480px}.ht-dialog--confirm .ht-dialog__content-wrapper-inner--background{box-shadow:0 8px 16px #00000014;background-color:#f7f7f9}.ht-dialog--confirm .ht-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center}.ht-dialog--confirm .ht-dialog__content:has(.ht-dialog__buttons){gap:4px}.ht-dialog--confirm .ht-dialog__title{margin:0;font-size:16px;font-weight:400;line-height:24px}.ht-dialog--confirm .ht-dialog__description{margin:0;color:#222;font-size:12px;font-weight:400;line-height:16px}.ht-dialog--confirm .ht-dialog__buttons{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}.ht-root-wrapper .ht-pagination{color:#222;background:#f0f0f0;border:1px solid #ccc;border-top-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:12px;font-weight:400;box-sizing:border-box;overflow-x:auto}.ht-root-wrapper .ht-pagination__inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding-inline:8px;padding-block:4px;min-width:230px}.ht-root-wrapper .ht-pagination--bordered{border-top-color:#ccc}.ht-root-wrapper .ht-page-size-section{display:flex;align-items:center;gap:8px}.ht-root-wrapper .ht-page-size-section span{white-space:nowrap}.ht-root-wrapper .ht-page-size-section__select-wrapper{position:relative;border-radius:2px;border:1px solid #ccc}.ht-root-wrapper .ht-page-size-section__select-wrapper select{padding-inline-start:8px;padding-inline-end:8px;padding-top:4px;padding-bottom:4px;border-radius:2px;color:#222;background-color:#f0f0f0;border:none;-webkit-appearance:none;font-size:inherit;cursor:pointer}.ht-root-wrapper .ht-page-size-section__select-wrapper select:disabled{opacity:.4;cursor:default}.ht-root-wrapper .ht-page-size-section__select-wrapper select:hover:not(:disabled){background-color:#e0e0e0}.ht-root-wrapper .ht-page-size-section__select-wrapper select:focus{background-color:#e0e0e0;outline:1px solid #4b89ff}.ht-root-wrapper .ht-page-counter-section{margin-inline-end:auto}.ht-root-wrapper .ht-page-navigation-section{display:flex;align-items:center;gap:8px}.ht-root-wrapper .ht-page-navigation-section button{font-size:inherit;color:#222;background-color:transparent;border:none;padding:4px;border-radius:2px;cursor:pointer}.ht-root-wrapper .ht-page-navigation-section button:before{display:block;width:16px;height:16px;line-height:16px;text-align:center}.ht-root-wrapper .ht-page-navigation-section button:disabled{opacity:.4;cursor:default}.ht-root-wrapper .ht-page-navigation-section button:hover:not(:disabled){background-color:#e0e0e0}.ht-root-wrapper .ht-page-navigation-section button:focus{outline:1px solid #4b89ff}.ht-root-wrapper .ht-page-navigation-section .ht-page-first:before{content:\"\\21a4\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-first:before{content:\"\\21a6\"}.ht-root-wrapper .ht-page-navigation-section .ht-page-prev:before{content:\"\\21a2\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-prev:before{content:\"\\21a3\"}.ht-root-wrapper .ht-page-navigation-section .ht-page-next:before{content:\"\\21a3\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-next:before{content:\"\\21a2\"}.ht-root-wrapper .ht-page-navigation-section .ht-page-last:before{content:\"\\21a6\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-last:before{content:\"\\21a4\"}.ht-root-wrapper .ht-page-navigation-section span{white-space:nowrap}.ht-loading__icon-svg{display:block;width:16px;height:16px;color:#5292f7;animation:ht-loading-spin 1s linear infinite;transform-origin:50% 50%}.ht-loading__content{display:flex;align-items:center;gap:8px}.ht-loading__title{margin:0;font-size:13px;font-weight:400;line-height:18px}.ht-loading__description{margin:0;color:#222;font-size:12px;line-height:16px;font-weight:400}@keyframes ht-loading-spin{to{transform:rotate(360deg)}}.ht-empty-data-state{display:none;position:absolute;width:100%;left:0;z-index:999;overflow-y:auto;border:1px solid #ccc;box-sizing:border-box;background-color:#fff}.ht-empty-data-state *{box-sizing:border-box!important}.ht-empty-data-state__content-wrapper{display:flex;align-items:center;justify-content:center;text-align:center;width:100%;min-height:100%;padding:16px}.ht-empty-data-state__content-wrapper-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:480px;padding:16px}.ht-empty-data-state__content-wrapper-inner:focus{outline:none;box-shadow:0 0 0 1px #4b89ff}.ht-empty-data-state__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.ht-empty-data-state__title{margin:0;font-size:16px;font-weight:400;line-height:24px}.ht-empty-data-state__description{margin:0;color:#222;font-size:12px;line-height:16px;font-weight:400}.ht-empty-data-state__buttons{display:flex;justify-content:center;flex-direction:row;flex-wrap:wrap;gap:8px}.ht-empty-data-state__buttons--has-buttons{margin-top:8px}.ht-empty-data-state--disable-top-border{border-top-width:0}.ht-empty-data-state--disable-inline-border{border-inline-start-width:0}.ht-empty-data-state--disable-bottom-border,.ht-empty-data-state:has(~.ht-pagination){border-bottom-width:0}.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.pika-single:before,.pika-single:after{content:\" \";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px #00000080}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;opacity:0}.pika-prev,.pika-next{display:block;cursor:pointer;position:relative;outline:none;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-prev:hover,.pika-next:hover{opacity:1}.pika-prev,.is-rtl .pika-next{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.pika-next,.is-rtl .pika-prev{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-prev.is-disabled,.pika-next.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table th,.pika-table td{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:none;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:center;background:#f5f5f5;height:initial}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button,.has-event .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.is-disabled .pika-button,.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.is-outside-current-month .pika-button{color:#999;opacity:.3}.is-selection-disabled{pointer-events:none;cursor:default}.pika-button:hover,.pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}.document-viewer-container{height:100%;min-height:0;width:100%;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background-color:#f5f5f5;overflow:hidden}.loader,.error-message{text-align:center;padding:40px 20px;font-family:Arial,sans-serif;background-color:#fff;border-radius:4px;margin:20px;box-shadow:0 2px 4px #0000001a}.error-message{color:#d32f2f;background-color:#ffebee;border:1px solid #ffcdd2}.text-viewer{flex:1 1 auto;min-height:0;background-color:#fff;padding:20px;border-radius:4px;margin:10px;overflow:auto;border:1px solid #ddd;box-shadow:0 2px 4px #0000001a;font-family:Courier New,monospace}.text-viewer pre{margin:0;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.word-viewer{flex:1 1 auto;min-height:0;background-color:#fff;padding:20px;border-radius:4px;box-shadow:0 2px 10px #0000001a;margin:10px;overflow:auto;font-family:Calibri,Arial,sans-serif}.word-viewer h1,.word-viewer h2,.word-viewer h3{color:#333}.word-viewer p{line-height:1.6;margin-bottom:15px}.presentation-viewer{flex:1 1 auto;min-height:0;background-color:#f5f5f5;padding:20px;border-radius:4px;margin:10px;display:flex;justify-content:center;align-items:center}.presentation-placeholder{text-align:center;color:#666;font-style:italic;padding:50px;background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a}::ng-deep ngx-extended-pdf-viewer{flex:1 1 auto;min-height:0;height:auto;width:calc(100% - 20px);margin:10px;border:1px solid #ddd;border-radius:4px;display:block}.excel-viewer{flex:1 1 auto;min-height:0;background-color:#fff;padding:20px;border-radius:4px;box-shadow:0 2px 10px #0000001a;margin:10px;overflow:auto}.excel-sheet{margin-bottom:30px;background:#fff}.excel-sheet h3{background-color:#f3f2f1;padding:12px 16px;margin:0;border-radius:4px 4px 0 0;font-size:14px;font-weight:600;color:#333;border-bottom:1px solid #e1dfdd}.excel-container{overflow-x:auto;overflow-y:auto;border:1px solid #e1dfdd;border-top:none;border-radius:0 0 4px 4px;max-height:calc(100% - 50px)}.excel-table{border-collapse:collapse;width:100%;font-family:Segoe UI,Calibri,Arial,sans-serif;font-size:13px;background:#fff}.excel-table td,.excel-table th{border:1px solid #e1dfdd;padding:8px 12px;white-space:nowrap;color:#333}.excel-table th{background-color:#f2f2f2;font-weight:700}.excel-table tr:first-child td{background-color:#f3f2f1;font-weight:600;color:#333;border-bottom:2px solid #8a8886}.excel-table td.number-cell,.excel-table td.percentage-cell,.excel-table td[data-format*=\"%\"]{text-align:right}.excel-table td.percentage-cell{color:#107c41}.excel-table td.text-cell{text-align:left}.excel-table tr:nth-child(2n) td{background-color:#faf9f8}.excel-table tr:hover td{background-color:#edf3fa}.excel-table td.selected{background-color:#cce8ff;border:2px solid #0078d4}.excel-viewer-container{flex:1 1 auto;min-height:0;width:calc(100% - 20px);margin:10px;border-radius:4px;overflow:hidden;box-shadow:0 2px 10px #0000001a;background:#fff;display:flex;flex-direction:column}.excel-sheet-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:12px 10px 0 8px;background:#f3f2f1;border-bottom:1px solid #e1dfdd;min-height:44px}.excel-sheet-tab{padding:8px 16px;border:1px solid #e1dfdd;border-bottom:none;border-radius:4px 4px 0 0;font-size:13px;font-family:Segoe UI,Arial,sans-serif;color:#333;cursor:pointer;transition:background .15s,border-color .15s}.excel-sheet-tab:hover{background:#edebe9;border-bottom:1px solid #000000}.excel-sheet-tab.active{background:#fff;font-weight:600;border-bottom:1px solid #000000;margin-bottom:2px;z-index:1}.excel-container-custom{width:100%;overflow-x:auto;overflow-y:auto}::ng-deep .handsontable{font-family:Segoe UI,Arial,sans-serif;font-size:13px;overflow:hidden!important}::ng-deep .wtHolder{width:100%!important;height:100%!important}::ng-deep .handsontable td{border:1px solid #e1dfdd;padding:8px 12px;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.4;vertical-align:top;max-width:300px;min-width:80px;margin:0!important}::ng-deep .handsontable td:hover{overflow:visible;background-color:#edf3fa;position:relative;z-index:10;box-shadow:0 2px 8px #00000026}::ng-deep .handsontable .htRight{text-align:right;font-family:Segoe UI,Consolas,monospace}::ng-deep .handsontable .htLeft{text-align:left}::ng-deep .handsontable .htCenter{text-align:center}::ng-deep .handsontable tr:nth-child(2n) td{background-color:#faf9f8}::ng-deep .handsontable tr:hover td{background-color:#edf3fa}::ng-deep .handsontable .current-row td{background-color:#e5f3ff}::ng-deep .handsontable .manualColumnResizer{background-color:#34a9db;width:5px;cursor:col-resize;opacity:0;transition:opacity .2s}::ng-deep .handsontable .manualColumnResizer:hover,::ng-deep .handsontable .manualColumnResizer.active{opacity:1;background-color:#0078d4}::ng-deep .handsontable .manualRowResizer{background-color:#34a9db;height:5px;cursor:row-resize;opacity:0;transition:opacity .2s}::ng-deep .handsontable .manualRowResizer:hover,::ng-deep .handsontable .manualRowResizer.active{opacity:1;background-color:#0078d4}::ng-deep .wtHolder::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::ng-deep .wtHolder::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::ng-deep .wtHolder::-webkit-scrollbar-thumb:hover{background:#a8a8a8}::ng-deep .htContextMenu table{font-family:Segoe UI,Arial,sans-serif;font-size:12px}::ng-deep .htContextMenu .htItemWrapper{padding:6px 12px}::ng-deep .htContextMenu .current{background-color:#e5f3ff}@media(max-width:768px){.document-viewer-container{padding:10px}.excel-viewer-container{width:calc(100% - 10px);margin:5px}.excel-viewer,.image-viewer,.text-viewer,.word-viewer,.presentation-viewer{margin:5px;padding:10px}::ng-deep .handsontable td{font-size:11px;padding:4px 6px}::ng-deep .handsontable th{font-size:11px;padding:6px}::ng-deep ngx-extended-pdf-viewer{width:calc(100% - 10px);margin:5px}}.excel-viewer-container{overflow:hidden;position:relative}.excel-container-custom{overflow:auto;position:relative;height:100%;width:100%}.image-viewer{flex:1 1 auto;width:100%;height:100%;display:flex;flex-direction:column;background-color:#fff}.image-toolbar{padding:10px;background-color:#fff;border-bottom:1px solid #ddd;display:flex;gap:8px;align-items:center;z-index:10}.image-toolbar button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;border-radius:4px;cursor:pointer;font-size:16px;min-width:36px}.image-toolbar button:hover{background-color:#f0f0f0}.image-container{flex:1;overflow:hidden;position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff}.responsive-image{max-width:100%;max-height:100%;object-fit:contain;transition:transform .1s ease;transform-origin:center center;will-change:transform;-webkit-user-select:none;user-select:none}::ng-deep .handsontable .ht_clone_top,::ng-deep .handsontable .ht_clone_top_left_corner,::ng-deep .handsontable .ht_clone_left{display:none!important}\n/*! Bundled license information:\n\nhandsontable/dist/handsontable.full.css:\n (*!\n * Copyright (c) HANDSONCODE sp. z o. o.\n *\n * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in\n * Gdynia, Poland, at Aleja Zwyciestwa 96-98, registered by the District Court in Gdansk under number\n * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.\n *\n * This software is protected by applicable copyright laws, including international treaties, and dual-\n * licensed - depending on whether your use for commercial purposes, meaning intended for or\n * resulting in commercial advantage or monetary compensation, or not.\n *\n * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing\n * the suitability, performance, and usefulness of this software outside the production environment,\n * you agree to be bound by the terms included in the \"handsontable-non-commercial-license.pdf\" file.\n *\n * Your use of this software for commercial purposes is subject to the terms included in an applicable\n * license agreement.\n *\n * In any case, you must not make any such use of this software as to develop software which may be\n * considered competitive with this software.\n *\n * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN \"AS IS\"\n * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO\n * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,\n * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM\n * USE OR INABILITY TO USE THIS SOFTWARE.\n *\n * Version: 16.2.0\n * Release date: 25/11/2025 (built at 20/11/2025 13:27:05)\n *)\n (*!\n * Handsontable ContextMenu\n *)\n (*!\n * Handsontable DropdownMenu\n *)\n (*!\n * Handsontable Filters\n *)\n (*!\n * Handsontable HiddenRows\n *)\n (*!\n * Pikaday\n * Copyright \u00A9 2014 David Bushell | BSD & MIT license | https://dbushell.com/\n *)\n*/\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showCommentEditor", "showDrawEditor", "showHighlightEditor", "showSignatureEditor", "logLevel", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "pdfBackgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showMovePageButton", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }, { kind: "ngmodule", type: HotTableModule }, { kind: "component", type: i5.HotTableComponent, selector: "hot-table", inputs: ["settings", "hotId", "activeHeaderClassName", "allowEmpty", "allowHtml", "allowInsertColumn", "allowInsertRow", "allowInvalid", "allowRemoveColumn", "allowRemoveRow", "ariaTags", "autoColumnSize", "autoRowSize", "autoWrapCol", "autoWrapRow", "bindRowsWithHeaders", "cell", "cells", "checkedTemplate", "className", "colHeaders", "collapsibleColumns", "columnHeaderHeight", "columns", "columnSorting", "columnSummary", "colWidths", "commentedCellClassName", "comments", "contextMenu", "copyable", "copyPaste", "correctFormat", "currentColClassName", "currentHeaderClassName", "currentRowClassName", "customBorders", "data", "dataDotNotation", "dataSchema", "dateFormat", "datePickerConfig", "defaultDate", "tabNavigation", "themeName", "disableVisualSelection", "dragToScroll", "dropdownMenu", "editor", "enterBeginsEditing", "enterMoves", "fillHandle", "filter", "filteringCaseSensitive", "filters", "fixedColumnsLeft", "fixedColumnsStart", "fixedRowsBottom", "fixedRowsTop", "formulas", "fragmentSelection", "headerClassName", "height", "hiddenColumns", "hiddenRows", "initialState", "invalidCellClassName", "imeFastEdit", "label", "language", "layoutDirection", "licenseKey", "locale", "manualColumnFreeze", "manualColumnMove", "manualColumnResize", "manualRowMove", "manualRowResize", "maxCols", "maxRows", "mergeCells", "minCols", "minRowHeights", "minRows", "minSpareCols", "minSpareRows", "multiColumnSorting", "navigableHeaders", "nestedHeaders", "nestedRows", "noWordWrapClassName", "numericFormat", "observeDOMVisibility", "outsideClickDeselects", "pagination", "persistentState", "placeholder", "placeholderCellClassName", "preventOverflow", "preventWheel", "readOnly", "readOnlyCellClassName", "renderAllColumns", "renderAllRows", "renderer", "rowHeaders", "rowHeaderWidth", "rowHeights", "search", "selectionMode", "selectOptions", "skipColumnOnPaste", "skipRowOnPaste", "sortByRelevance", "source", "startCols", "startRows", "stretchH", "strict", "tableClassName", "tabMoves", "title", "trimDropdown", "trimRows", "trimWhitespace", "type", "uncheckedTemplate", "undo", "validator", "valueGetter", "valueSetter", "viewportColumnRenderingOffset", "viewportRowRenderingOffset", "visibleRows", "width", "wordWrap", "afterAddChild", "afterAutofill", "afterBeginEditing", "afterCellMetaReset", "afterChange", "afterChangesObserved", "afterColumnCollapse", "afterColumnExpand", "afterColumnFreeze", "afterColumnMove", "afterColumnResize", "afterColumnSequenceCacheUpdate", "afterColumnSequenceChange", "afterColumnSort", "afterColumnUnfreeze", "afterContextMenuDefaultOptions", "afterContextMenuHide", "afterContextMenuShow", "afterCopy", "afterCopyLimit", "afterCreateCol", "afterCreateRow", "afterCut", "afterDeselect", "afterDestroy", "afterDetachChild", "afterDocumentKeyDown", "afterDrawSelection", "afterDropdownMenuDefaultOptions", "afterDropdownMenuHide", "afterDropdownMenuShow", "afterFilter", "afterFormulasValuesUpdate", "afterGetCellMeta", "afterGetColHeader", "afterGetColumnHeaderRenderers", "afterGetRowHeader", "afterGetRowHeaderRenderers", "afterHideColumns", "afterHideRows", "afterInit", "afterLanguageChange", "afterListen", "afterLoadData", "afterMergeCells", "afterModifyTransformEnd", "afterModifyTransformFocus", "afterModifyTransformStart", "afterMomentumScroll", "afterNamedExpressionAdded", "afterNamedExpressionRemoved", "afterOnCellContextMenu", "afterOnCellCornerDblClick", "afterOnCellCornerMouseDown", "afterOnCellMouseDown", "afterOnCellMouseOut", "afterOnCellMouseOver", "afterOnCellMouseUp", "afterPageChange", "afterPageSizeChange", "afterPageSizeVisibilityChange", "afterPageCounterVisibilityChange", "afterPageNavigationVisibilityChange", "afterPaste", "afterPluginsInitialized", "afterRedo", "afterRedoStackChange", "afterRefreshDimensions", "afterRemoveCellMeta", "afterRemoveCol", "afterRemoveRow", "afterRender", "afterRenderer", "afterRowMove", "afterRowResize", "afterRowSequenceCacheUpdate", "afterRowSequenceChange", "afterScrollHorizontally", "afterScrollVertically", "afterScroll", "afterSelectColumns", "afterSelection", "afterSelectionByProp", "afterSelectionEnd", "afterSelectionEndByProp", "afterSelectionFocusSet", "afterSelectRows", "afterSetCellMeta", "afterSetDataAtCell", "afterSetDataAtRowProp", "afterSetSourceDataAtCell", "afterSetTheme", "afterSheetAdded", "afterSheetRenamed", "afterSheetRemoved", "afterTrimRow", "afterUndo", "afterUndoStackChange", "afterUnhideColumns", "afterUnhideRows", "afterUnlisten", "afterUnmergeCells", "afterUntrimRow", "afterUpdateData", "afterUpdateSettings", "afterValidate", "afterViewportColumnCalculatorOverride", "afterViewportRowCalculatorOverride", "afterViewRender", "beforeAddChild", "beforeAutofill", "beforeBeginEditing", "beforeCellAlignment", "beforeChange", "beforeChangeRender", "beforeColumnCollapse", "beforeColumnExpand", "beforeColumnFreeze", "beforeColumnMove", "beforeColumnResize", "beforeColumnSort", "beforeColumnWrap", "beforeColumnUnfreeze", "beforeCompositionStart", "beforeContextMenuSetItems", "beforeContextMenuShow", "beforeCopy", "beforeCreateCol", "beforeCreateRow", "beforeCut", "beforeDetachChild", "beforeDrawBorders", "beforeDropdownMenuSetItems", "beforeDropdownMenuShow", "beforeFilter", "beforeGetCellMeta", "beforeHeightChange", "beforeHideColumns", "beforeHideRows", "beforeHighlightingColumnHeader", "beforeHighlightingRowHeader", "beforeInit", "beforeInitWalkontable", "beforeKeyDown", "beforeLanguageChange", "beforeLoadData", "beforeMergeCells", "beforeOnCellContextMenu", "beforeOnCellMouseDown", "beforeOnCellMouseOut", "beforeOnCellMouseOver", "beforeOnCellMouseUp", "beforePageChange", "beforePageSizeChange", "beforePaste", "beforeRedo", "beforeRedoStackChange", "beforeRefreshDimensions", "beforeRemoveCellClassNames", "beforeRemoveCellMeta", "beforeRemoveCol", "beforeRemoveRow", "beforeRender", "beforeRenderer", "beforeRowMove", "beforeRowResize", "beforeRowWrap", "beforeSelectColumns", "beforeSelectionFocusSet", "beforeSelectionHighlightSet", "beforeSelectRows", "beforeSetCellMeta", "beforeSetRangeEnd", "beforeSetRangeStart", "beforeSetRangeStartOnly", "beforeStretchingColumnWidth", "beforeTouchScroll", "beforeTrimRow", "beforeUndo", "beforeUndoStackChange", "beforeUnhideColumns", "beforeUnhideRows", "beforeUnmergeCells", "beforeUntrimRow", "beforeUpdateData", "beforeValidate", "beforeValueRender", "beforeViewportScroll", "beforeViewportScrollHorizontally", "beforeViewportScrollVertically", "beforeViewRender", "beforeWidthChange", "construct", "init", "modifyAutoColumnSizeSeed", "modifyAutofillRange", "modifyColHeader", "modifyColumnHeaderHeight", "modifyColumnHeaderValue", "modifyColWidth", "modifyCopyableRange", "modifyFiltersMultiSelectValue", "modifyFocusedElement", "modifyData", "modifyFocusOnTabNavigation", "modifyGetCellCoords", "modifyGetCoordsElement", "modifyRowData", "modifyRowHeader", "modifyRowHeaderWidth", "modifyRowHeight", "modifyRowHeightByOverlayName", "modifySourceData", "modifyTransformEnd", "modifyTransformFocus", "modifyTransformStart", "persistentStateLoad", "persistentStateReset", "persistentStateSave"] }] });
535
645
  }
536
646
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PdfViewerComponent, decorators: [{
537
647
  type: Component,
538
- args: [{ selector: 'sgdea-document-viewer', standalone: true, imports: [CommonModule, NgxExtendedPdfViewerModule, HotTableModule], template: "<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 +)\">\u2795</button>\n <button (click)=\"zoomOut()\" title=\"Alejar (Ctrl -)\">\u2796</button>\n <span class=\"separator\"></span>\n <button (click)=\"rotateLeft()\" title=\"Rotar izquierda (\u21BA)\">\u21BA</button>\n <button (click)=\"rotateRight()\" title=\"Rotar derecha (\u21BB)\">\u21BB</button>\n\n <span class=\"zoom-info\">{{ zoomLevel() }}%</span>\n <span class=\"rotation-info\" *ngIf=\"rotation() !== 0\">\n {{ rotation() }}\u00B0\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", styles: ["html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}.document-viewer-container{height:100vh;width:100%;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background-color:#f5f5f5;overflow:hidden}.loader,.error-message{text-align:center;padding:40px 20px;font-family:Arial,sans-serif;background-color:#fff;border-radius:4px;margin:20px;box-shadow:0 2px 4px #0000001a}.error-message{color:#d32f2f;background-color:#ffebee;border:1px solid #ffcdd2}::ng-deep ngx-extended-pdf-viewer{flex:1 1 auto;min-height:0;height:auto;width:calc(100% - 20px);margin:10px;border:1px solid #ddd;border-radius:4px;display:block}\n"] }]
648
+ args: [{ selector: 'sgdea-document-viewer', standalone: true, imports: [CommonModule, NgxExtendedPdfViewerModule, HotTableModule], template: "<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<!-- Visor de im\u00E1genes con zoom y rotaci\u00F3n -->\n <div *ngIf=\"isImageType() && imageSrc\" class=\"image-viewer\">\n <!-- Barra de herramientas -->\n <div class=\"image-toolbar\">\n <button (click)=\"zoomIn()\" title=\"Acercar (Ctrl +)\">\u2795</button>\n <button (click)=\"zoomOut()\" title=\"Alejar (Ctrl -)\">\u2796</button>\n <!-- Separador -->\n <span class=\"separator\"></span>\n\n <!-- Botones de rotaci\u00F3n AHORA FUNCIONALES -->\n <button (click)=\"rotateLeft()\" title=\"Rotar izquierda (\u21BA)\">\u21BA</button>\n <button (click)=\"rotateRight()\" title=\"Rotar derecha (\u21BB)\">\u21BB</button>\n\n <!-- Informaci\u00F3n -->\n <span class=\"zoom-info\">{{ zoomLevel() }}%</span>\n <span class=\"rotation-info\" *ngIf=\"rotation() !== 0\">\n {{ rotation() }}\u00B0\n </span>\n\n <span class=\"image-dimensions\" *ngIf=\"imageDimensions.width\">\n {{ imageDimensions.width }} x {{ imageDimensions.height }}\n </span>\n </div>\n\n <!-- Contenedor de la imagen -->\n <div\n class=\"image-container\" \n #imageContainer \n (wheel)=\"onMouseWheel($event)\"\n >\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 <!-- Instrucciones -->\n <div class=\"image-footer\" *ngIf=\"zoomLevel() > 100\">\n <small>Arrastra para mover la imagen</small>\n </div>\n </div>\n <!-- Excel -->\n <div *ngIf=\"isExcelType()\" class=\"excel-viewer-container\">\n\n <!-- Tabs -->\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\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.handsontable .table th,.handsontable .table td{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child th,.handsontable .table caption+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table thead:first-child tr:first-child th,.handsontable .table thead:first-child tr:first-child td{border-top:1px solid #CCCCCC}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered th,.handsontable .table-bordered td{border-left:none}.handsontable .table-bordered th:first-child,.handsontable .table-bordered td:first-child{border-left:1px solid #CCCCCC}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable.ht-wrapper{height:100%;width:100%}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{position:relative;width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable table,.handsontable tbody,.handsontable thead,.handsontable td,.handsontable th,.handsontable input,.handsontable textarea,.handsontable div{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:initial}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;cursor:default;max-width:none;max-height:none}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable th,.handsontable td{border-top-width:0;border-left-width:0;border-right:1px solid #ccc;border-bottom:1px solid #ccc;height:22px;empty-cells:show;line-height:21px;padding:0 4px;background-color:#fff;vertical-align:top;overflow:hidden;outline:none;outline-width:0;white-space:pre-wrap}[dir=rtl].handsontable th,[dir=rtl].handsontable td{border-right-width:0;border-left:1px solid #ccc}.handsontable th:last-child{border-left:none;border-right:1px solid #ccc;border-bottom:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-right:none;border-left:1px solid #ccc}.handsontable th:first-child,.handsontable .ht_clone_inline_start td:first-of-type,.handsontable .ht_clone_top_inline_start_corner td:first-of-type,.handsontable .ht_clone_bottom_inline_start_corner td:first-of-type,.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{border-left:1px solid #ccc}[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-right-width:0;border-left:1px solid #ccc}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child th,.handsontable tr:first-child td{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-right-width:0;border-left:1px solid #ccc}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;text-align:center;font-weight:400;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder:nth-child(1),.handsontable .wtBorder:nth-child(3){z-index:2}.handsontable .wtBorder:nth-child(2),.handsontable .wtBorder:nth-child(4){z-index:1}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.htBorders .wtBorder.ht-border-style-dashed-vertical{background-image:repeating-linear-gradient(to bottom,var(--ht-custom-border-color) 0 5px,transparent 0 10px)}.htBorders .wtBorder.ht-border-style-dashed-horizontal{background-image:repeating-linear-gradient(to right,var(--ht-custom-border-color) 0 5px,transparent 0 10px)}.htBorders .wtBorder.ht-border-style-dotted-horizontal{background-image:radial-gradient(circle,var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2),transparent 0);background-size:calc(var(--ht-custom-border-size) * 2) var(--ht-custom-border-size);background-repeat:repeat-x}.htBorders .wtBorder.ht-border-style-dotted-vertical{background-image:radial-gradient(circle,var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2),transparent 0);background-size:var(--ht-custom-border-size) calc(var(--ht-custom-border-size) * 2);background-repeat:repeat-y}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_master,.ht_clone_inline_start,.ht_clone_top,.ht_clone_bottom{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_master table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_clone_inline_start table.htCore>thead{visibility:hidden}.ht_clone_top .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_bottom .wtHolder{overflow:hidden}.handsontable{position:relative;touch-action:manipulation;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;color:#373737}.handsontable a{color:#104acc}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:#fff0}.hot-display-license-info{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;color:#373737;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.htFocusCatcher{position:absolute;z-index:-1;opacity:0;border:0;margin:0;padding:0;width:0;height:0}.handsontable .htTextEllipsis{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.handsontable .manualColumnResizer{position:absolute;top:0;cursor:col-resize;z-index:210;width:5px;height:25px}.handsontable .manualRowResizer{position:absolute;left:0;cursor:row-resize;z-index:210;height:5px;width:50px}.handsontable .manualColumnResizer:hover,.handsontable .manualColumnResizer.active,.handsontable .manualRowResizer:hover,.handsontable .manualRowResizer.active{background-color:#34a9db}.handsontable .manualColumnResizerGuide{position:absolute;right:unset;top:0;background-color:#34a9db;display:none;width:0;border-right:1px dashed #777;border-left:none;margin-left:5px;margin-right:unset}[dir=rtl].handsontable .manualColumnResizerGuide{left:unset;border-left:1px dashed #777;border-right:none;margin-right:5px;margin-left:unset}.handsontable .manualRowResizerGuide{position:absolute;left:0;bottom:0;background-color:#34a9db;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area:before,.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before{content:\"\";position:absolute;inset:0;background:#005eff}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{border:none;outline-width:0;margin:0;padding:1px 5px 0;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:0 0 0 2px #5292f7 inset;resize:none;display:block;color:#000;border-radius:0;background-color:#fff;box-sizing:border-box!important}.handsontableInput:focus{outline:none}.handsontableInputHolder{position:absolute;top:0;left:0}.htSelectEditor{position:absolute;select{-webkit-appearance:menulist-button!important;width:100%;height:100%;border:2px solid #4b89ff;box-sizing:border-box!important}}.htSelectEditor select:focus{outline:none}.htSelectEditor .htAutocompleteArrow{display:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:\"\\25b6\";color:#777;position:absolute;right:5px;font-size:9px}[dir=rtl].handsontable .htSubmenu :after{content:\"\"}[dir=rtl].handsontable .htSubmenu :before{content:\"\\25c0\";color:#777;position:absolute;left:5px;font-size:9px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{border:1px solid #ccc;margin:0}.handsontable.listbox.autocompleteEditor,.handsontable.listbox.dropdownEditor{border-width:0}.handsontable.listbox .ht_master table{border-collapse:separate;background:#fff}.handsontable.listbox.autocompleteEditor .ht_master table,.handsontable.listbox.dropdownEditor .ht_master table{border:1px solid #ccc}.handsontable.listbox th,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th,.handsontable.listbox tr:first-child td,.handsontable.listbox td{border-color:transparent!important}.handsontable.listbox th,.handsontable.listbox td{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-box-shadow:0 0 0 2px #5292f7 inset;-moz-box-shadow:0 0 0 2px #5292f7 inset;box-shadow:0 0 0 2px #5292f7 inset;-webkit-appearance:none}.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea,.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea,[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea{right:-10000px;left:unset}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#bbb;cursor:default;width:16px;text-align:center}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{font-size:inherit;vertical-align:middle;cursor:pointer;display:inline-block}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .collapsibleIndicator{position:absolute;top:50%;transform:translateY(-50%);left:unset;right:5px;border:1px solid #A6A6A6;line-height:8px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;-webkit-box-shadow:0 0 0 6px rgb(238,238,238);-moz-box-shadow:0 0 0 6px rgb(238,238,238);box-shadow:0 0 0 3px #eee;background:#eee;text-align:center}[dir=rtl].handsontable .collapsibleIndicator{right:unset;left:5px}.handsontable[dir=ltr] thead th:has(.collapsibleIndicator) div.htRight span.colHeader{margin-right:20px}.handsontable[dir=rtl] thead th:has(.collapsibleIndicator) div.htLeft span.colHeader{margin-left:20px}.handsontable .columnSorting{position:relative}.handsontable[dir=ltr] div.htRight span[class*=ascending],.handsontable[dir=ltr] div.htRight span[class*=descending]{margin-right:10px;margin-left:-10px}.handsontable[dir=rtl] div.htLeft span[class*=ascending],.handsontable[dir=rtl] div.htLeft span[class*=descending]{margin-left:10px;margin-right:-10px}.handsontable[dir=ltr] div.htRight span[class*=ascending]:only-child,.handsontable[dir=ltr] div.htRight span[class*=descending]:only-child{margin-right:15px;margin-left:-15px}.handsontable[dir=rtl] div.htLeft span[class*=ascending]:only-child,.handsontable[dir=rtl] div.htLeft span[class*=descending]:only-child{margin-left:15px;margin-right:-15px}.handsontable .columnSorting.sortAction:hover{text-decoration:underline;cursor:pointer}.handsontable span.colHeader.columnSorting:before{top:50%;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;left:unset;content:\"\";height:10px;width:5px;background-size:contain;background-repeat:no-repeat;background-position-x:right}[dir=rtl].handsontable span.colHeader.columnSorting:before{padding-right:8px;padding-left:0;left:-9px;right:unset;background-position-x:left}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:\"*\";display:inline-block;position:relative;padding-right:20px}.handsontable.htGhostTable table thead th{border-bottom-width:0}.handsontable.htGhostTable table tbody tr th,.handsontable.htGhostTable table tbody tr td{border-top-width:0}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{content:\"\";position:absolute;top:0;right:0;left:unset;border-left:6px solid transparent;border-right:none;border-top:6px solid black}[dir=rtl].handsontable .htCommentCell:after{left:0;right:unset;border-right:6px solid transparent;border-left:none}.htCommentsContainer .htComments{display:none;z-index:1059;position:absolute}.htCommentsContainer .htCommentTextArea{box-shadow:#0000001e 0 1px 3px,#0000003d 0 1px 2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-left:3px solid #ccc;border-right:none;background-color:#fff;width:215px;height:90px;font-size:12px;padding:5px;outline:0!important;-webkit-appearance:none}[dir=rtl].htCommentsContainer .htCommentTextArea{border-right:3px solid #ccc;border-left:none}.htCommentsContainer .htCommentTextArea:focus{box-shadow:#0000001e 0 1px 3px,#0000003d 0 1px 2px,inset 0 0 0 1px #5292f7;border-left:3px solid #5292f7;border-right:none}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-right:3px solid #5292f7;border-left:none}.htContextMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htContextMenu .ht_clone_top,.htContextMenu .ht_clone_bottom,.htContextMenu .ht_clone_inline_start,.htContextMenu .ht_clone_top_inline_start_corner,.htContextMenu .ht_clone_bottom_inline_start_corner{display:none}.htContextMenu .ht_master table.htCore{border-color:#ccc;border-style:solid;border-top-width:1px;border-bottom-width:2px;border-left-width:1px;border-right-width:2px}[dir=rtl].htContextMenu .ht_master table.htCore{border-right-width:1px;border-left-width:2px}.htContextMenu.handsontable:focus{outline:none}.htContextMenu .wtBorder{visibility:hidden}.htContextMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htContextMenu table tbody tr td:first-child{border-top-width:0;border-bottom-width:0;border-left-width:0;border-right-width:0}[dir=rtl].htContextMenu table tbody tr td:first-child{border-right-width:0;border-left-width:0}.htContextMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htContextMenu table tbody tr td.current{background:#f3f3f3}.htContextMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htContextMenu table tbody tr td.htDisabled{color:#999;cursor:default}.htContextMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htContextMenu table tbody tr.htHidden{display:none}.htContextMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:6px}[dir=rtl].htContextMenu table tbody tr td .htItemWrapper{margin-right:10px;margin-left:6px}.htContextMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px;right:0}[dir=rtl].htContextMenu table tbody tr td div span.selected{right:4px;left:0}.htContextMenu .ht_master .wtHolder{overflow:hidden}textarea.HandsontableCopyPaste{position:fixed!important;top:0!important;right:100%!important;overflow:hidden;opacity:0;outline:0 none!important}.handsontable .changeType{background:#eee;border-radius:2px;border:1px solid #bbb;color:#bbb;font-size:9px;line-height:9px;padding:2px;margin:3px 1px 0 5px;float:right}[dir=rtl].handsontable .changeType{float:left}.handsontable[dir=rtl] .changeType{margin:3px 5px 0 1px}.handsontable .changeType:before{content:\"\\25bc \"}.handsontable .changeType:hover{border:1px solid #777;color:#777;cursor:pointer}.htDropdownMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htDropdownMenu .ht_clone_top,.htDropdownMenu .ht_clone_bottom,.htDropdownMenu .ht_clone_inline_start,.htDropdownMenu .ht_clone_top_inline_start_corner,.htDropdownMenu .ht_clone_bottom_inline_start_corner{display:none}.htDropdownMenu table.htCore{border-color:#ccc;border-style:solid;border-top-width:1px;border-bottom-width:2px;border-left-width:1px;border-right-width:2px}[dir=rtl].htDropdownMenu table.htCore{border-right-width:1px;border-left-width:2px}.htDropdownMenu.handsontable:focus{outline:none}.htDropdownMenu .wtBorder{visibility:hidden}.htDropdownMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htDropdownMenu table tbody tr td:first-child{border-top-width:0;border-right-width:0;border-bottom-width:0;border-left-width:0}[dir=rtl].htDropdownMenu table tbody tr td:first-child{border-left-width:0;border-right-width:0}.htDropdownMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htDropdownMenu table tbody tr td.current{background:#e9e9e9}.htDropdownMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htDropdownMenu table tbody tr td.htDisabled{color:#999}.htDropdownMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htDropdownMenu:not(.htGhostTable) table tbody tr.htHidden{display:none}.htDropdownMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:10px}[dir=rtl].htDropdownMenu table tbody tr td .htItemWrapper{margin-right:10px;margin-left:10px}.htDropdownMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px;right:0}[dir=rtl].htDropdownMenu table tbody tr td div span.selected{right:4px;left:0}.htDropdownMenu .ht_master .wtHolder{overflow:hidden}.htFiltersConditionsMenu:not(.htGhostTable){display:none;position:absolute;z-index:1070}.htFiltersConditionsMenu .ht_clone_top,.htFiltersConditionsMenu .ht_clone_bottom,.htFiltersConditionsMenu .ht_clone_inline_start,.htFiltersConditionsMenu .ht_clone_top_inline_start_corner,.htFiltersConditionsMenu .ht_clone_bottom_inline_start_corner{display:none}.htFiltersConditionsMenu table.htCore{border:1px solid #bbb;border-bottom-width:2px;border-right-width:2px}.htFiltersConditionsMenu .wtBorder{visibility:hidden}.htFiltersConditionsMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htFiltersConditionsMenu table tbody tr td:first-child{border-top-width:0;border-right-width:0;border-bottom-width:0;border-left-width:0}[dir=rtl].htFiltersConditionsMenu table tbody tr td:first-child{border-left-width:0;border-right-width:0}.htFiltersConditionsMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htFiltersConditionsMenu table tbody tr td.current{background:#e9e9e9}.htFiltersConditionsMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0}.htFiltersConditionsMenu table tbody tr td.htDisabled{color:#999}.htFiltersConditionsMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htFiltersConditionsMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:10px}.htFiltersConditionsMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htFiltersConditionsMenu .ht_master .wtHolder{overflow:hidden}.handsontable .htMenuFiltering{border-bottom:1px dotted #ccc;height:135px;overflow:hidden}.handsontable .ht_master table td.htCustomMenuRenderer{background-color:#fff;cursor:auto}.handsontable .htFiltersMenuLabel{font-size:.75em}.handsontable .htFiltersMenuActionBar{text-align:center;padding-top:10px;padding-bottom:3px}.handsontable .htFiltersMenuCondition.border{border-bottom:1px dotted #ccc!important}.handsontable .htFiltersMenuCondition .htUIInput{padding:0 0 5px}.handsontable .htFiltersMenuValue{border-bottom:1px dotted #ccc!important}.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch{padding:0}.handsontable .htFiltersMenuCondition .htUIInput input,.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input{font-family:inherit;font-size:.75em;padding:4px;box-sizing:border-box;width:100%}.htUIMultipleSelect .ht_master .wtHolder{overflow:auto}.handsontable .htFiltersActive .changeType{border:1px solid #509272;color:#18804e;background-color:#d2e0d9}.handsontable .htUISelectAll{margin-left:0;margin-right:10px}[dir=rtl].handsontable .htUISelectAll{margin-right:0;margin-left:10px}.handsontable .htUIClearAll,.handsontable .htUISelectAll{display:inline-block}.handsontable .htUIClearAll a,.handsontable .htUISelectAll a{font-size:.75em}.handsontable .htUISelectionControls{text-align:right}[dir=rtl].handsontable .htUISelectionControls{text-align:left}.handsontable .htCheckboxRendererInput{display:inline-block;margin:0 5px 0 0;vertical-align:middle;height:1em}[dir=rtl].handsontable .htCheckboxRendererInput{margin-left:5px;margin-right:0}.handsontable .htUIInput{padding:3px 0 7px;position:relative;text-align:center}.handsontable .htUIInput input{border-radius:2px;border:1px solid #d2d1d1}.handsontable .htUIInputIcon{position:absolute}.handsontable .htUIInput.htUIButton{cursor:pointer;display:inline-block}.handsontable .htUIInput.htUIButton input{background-color:#eee;color:#000;cursor:pointer;font-family:inherit;font-size:.75em;font-weight:700;height:19px;min-width:64px}.handsontable .htUIInput.htUIButton input:hover{border-color:#b9b9b9}.handsontable .htUIInput.htUIButtonOK{margin-left:0;margin-right:10px}[dir=rtl].handsontable .htUIInput.htUIButtonOK{margin-right:0;margin-left:10px}.handsontable .htUIInput.htUIButtonOK input{background-color:#0f9d58;border-color:#18804e;color:#fff}.handsontable .htUIInput.htUIButtonOK input:focus-visible{background-color:#92dd8d;border-color:#7cb878;color:#000}.handsontable .htUIInput.htUIButtonOK input:hover{border-color:#1a6f46}.handsontable .htUISelect{cursor:pointer;margin-bottom:7px;position:relative}.handsontable .htUISelectCaption{background-color:#e8e8e8;border-radius:2px;border:1px solid #d2d1d1;font-family:inherit;font-size:.75em;font-weight:700;padding:3px 20px 3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.handsontable .htUISelectCaption:hover{background-color:#e8e8e8;border:1px solid #b9b9b9}.handsontable .htUISelectDropdown:after{content:\"\\25b2\";font-size:7px;position:absolute;right:10px;top:0}.handsontable .htUISelectDropdown:before{content:\"\\25bc\";font-size:7px;position:absolute;right:10px;top:8px}.handsontable .htUIMultipleSelect .handsontable .htCore{border:none}.handsontable .htUIMultipleSelect .handsontable .htCore td:hover{background-color:#f5f5f5}.handsontable .htUIMultipleSelectSearch input{border-radius:2px;border:1px solid #d2d1d1;padding:3px}.handsontable .htUIRadio{display:inline-block;margin-left:0;margin-right:5px;height:100%}[dir=rtl].handsontable .htUIRadio{margin-right:0;margin-left:5px}.handsontable .htUIRadio:last-child{margin-right:0}.handsontable .htUIRadio>input[type=radio]{margin-left:0;margin-right:.5ex}[dir=rtl].handsontable .htUIRadio>input[type=radio]{margin-right:0;margin-left:.5ex}.handsontable .htUIRadio label{vertical-align:middle}.handsontable .htFiltersMenuOperators{padding-bottom:5px}.handsontable th.beforeHiddenColumn{position:relative}.handsontable th.beforeHiddenColumn:after,.handsontable th.afterHiddenColumn:before{color:#bbb;position:absolute;top:50%;font-size:5pt;transform:translateY(-50%)}.handsontable th.afterHiddenColumn{position:relative}.handsontable[dir=ltr] th.afterHiddenColumn div.htLeft{margin-left:10px}.handsontable[dir=ltr] th.beforeHiddenColumn div.htRight,.handsontable[dir=rtl] th.afterHiddenColumn div.htRight{margin-right:10px}.handsontable[dir=rtl] th.beforeHiddenColumn div.htLeft{margin-left:10px}.handsontable th.beforeHiddenColumn:after{right:1px;content:\"\\25c0\"}[dir=rtl].handsontable th.beforeHiddenColumn:after{right:initial;left:1px;content:\"\\25b6\"}.handsontable th.afterHiddenColumn:before{left:1px;content:\"\\25b6\"}[dir=rtl].handsontable th.afterHiddenColumn:before{right:1px;left:initial;content:\"\\25c0\"}.handsontable th.beforeHiddenRow:before,.handsontable th.afterHiddenRow:after{color:#bbb;font-size:6pt;line-height:6pt;position:absolute;left:2px}.handsontable th.beforeHiddenRow,.handsontable th.afterHiddenRow{position:relative}.handsontable th.beforeHiddenRow:before{content:\"\\25b2\";bottom:2px}.handsontable th.afterHiddenRow:after{content:\"\\25bc\";top:2px}.handsontable.ht__selection--rows tbody th.beforeHiddenRow.ht__highlight:before,.handsontable.ht__selection--rows tbody th.afterHiddenRow.ht__highlight:after{color:#eee}.handsontable td.afterHiddenRow.firstVisibleRow,.handsontable th.afterHiddenRow.firstVisibleRow{border-top:1px solid #CCC}.htRowHeaders .ht_master.innerBorderInlineStart~.ht_clone_top_inline_start_corner th:nth-child(2),.htRowHeaders .ht_master.innerBorderInlineStart~.ht_clone_inline_start td:first-of-type{border-left:0 none}.handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualColumnMove.on-moving--columns *,.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer{display:none}.handsontable .ht__manualColumnMove--guideline,.handsontable .ht__manualColumnMove--backlight{position:absolute;height:100%;display:none}.handsontable .ht__manualColumnMove--guideline{background:#757575;width:2px;top:0;margin-inline-start:-1px;margin-inline-end:0;z-index:205}.handsontable .ht__manualColumnMove--backlight{background:#343434;background:#34343440;display:none;z-index:205;pointer-events:none}.handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline,.handsontable.on-moving--columns .ht__manualColumnMove--backlight{display:block}.handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualRowMove.on-moving--rows *,.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer{display:none}.handsontable .ht__manualRowMove--guideline,.handsontable .ht__manualRowMove--backlight{position:absolute;width:100%;display:none}.handsontable .ht__manualRowMove--guideline{background:#757575;height:2px;left:0;margin-top:-1px;z-index:205}.handsontable .ht__manualRowMove--backlight{background:#343434;background:#34343440;display:none;z-index:205;pointer-events:none}.handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline,.handsontable.on-moving--rows .ht__manualRowMove--backlight{display:block}.handsontable tbody td[rowspan][class*=area][class*=highlight]:not([class*=fullySelectedMergedCell]):before{opacity:0}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-multiple]:before{opacity:.1}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-0]:before{opacity:.1}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-1]:before{opacity:.2}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-2]:before{opacity:.27}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-3]:before{opacity:.35}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-4]:before{opacity:.41}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-5]:before{opacity:.47}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-6]:before{opacity:.54}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-7]:before{opacity:.58}.handsontable[dir=ltr] div.htRight span[class*=sort-]{margin-right:15px;margin-left:-15px}.handsontable[dir=rtl] div.htLeft span[class*=sort-]{margin-left:15px;margin-right:-15px}.handsontable[dir=ltr] div.htRight span[class*=sort-]:only-child{margin-right:20px;margin-left:-20px}.handsontable[dir=rtl] div.htLeft span[class*=sort-]:only-child{margin-left:20px;margin-right:-20px}.handsontable span.colHeader.columnSorting:after{top:50%;margin-top:-2px;position:absolute;right:-15px;left:unset;padding-left:5px;padding-right:unset;font-size:8px;height:8px;line-height:1.1}[dir=rtl].handsontable span.colHeader.columnSorting:after{left:-15px;right:unset;padding-right:5px;padding-left:unset}.handsontable span.colHeader.columnSorting[class^=sort-]:after,.handsontable span.colHeader.columnSorting[class*=\" sort-\"]:after{content:\"+\"}.handsontable span.colHeader.columnSorting.sort-1:after{content:\"1\"}.handsontable span.colHeader.columnSorting.sort-2:after{content:\"2\"}.handsontable span.colHeader.columnSorting.sort-3:after{content:\"3\"}.handsontable span.colHeader.columnSorting.sort-4:after{content:\"4\"}.handsontable span.colHeader.columnSorting.sort-5:after{content:\"5\"}.handsontable span.colHeader.columnSorting.sort-6:after{content:\"6\"}.handsontable span.colHeader.columnSorting.sort-7:after{content:\"7\"}.htGhostTable th div button.changeType+span.colHeader.columnSorting:not(.indicatorDisabled){padding-right:5px}.handsontable thead th.hiddenHeader:not(:first-of-type){display:none}thead th.hiddenHeaderText .colHeader{opacity:0}.handsontable th.ht_nestingLevels{text-align:left;padding-left:7px}[dir=rtl].handsontable th.ht_nestingLevels{text-align:right;padding-right:7px}.handsontable th div.ht_nestingLevels{display:inline-block;position:absolute;left:11px;right:unset}[dir=rtl].handsontable th div.ht_nestingLevels{right:11px;left:unset}.handsontable.innerBorderInlineStart th div.ht_nestingLevels,.handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingLevels{right:10px;left:unset}[dir=rtl].handsontable.innerBorderInlineStart th div.ht_nestingLevels,[dir=rtl].handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingLevels{left:10px;right:unset}.handsontable th span.ht_nestingLevel{display:inline-block}.handsontable th span.ht_nestingLevel_empty{display:inline-block;width:10px;height:1px;float:left}[dir=rtl].handsontable th span.ht_nestingLevel_empty{float:right}.handsontable th span.ht_nestingLevel:after{content:\"\\2510\";font-size:9px;display:inline-block;position:relative;bottom:3px}.handsontable th div.ht_nestingButton{display:inline-block;position:absolute;right:-2px;left:unset;cursor:pointer}[dir=rtl].handsontable th div.ht_nestingButton{left:-2px;right:unset}.handsontable th div.ht_nestingButton.ht_nestingExpand:after{content:\"+\"}.handsontable th div.ht_nestingButton.ht_nestingCollapse:after{content:\"-\"}.handsontable.innerBorderInlineStart th div.ht_nestingButton,.handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingButton{right:0;left:unset}[dir=rtl].handsontable.innerBorderInlineStart th div.ht_nestingButton,[dir=rtl].handsontable.innerBorderInlineStart~.handsontable th div.ht_nestingButton{left:0;right:unset}.ht-root-wrapper{position:relative;display:flex;flex-direction:column;height:100%}.ht-grid{flex:1 1 auto;min-height:0}.ht-dialog{position:absolute;top:0;left:0;display:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;width:100%;height:100%;z-index:1060;opacity:0;overflow-y:auto;border:1px solid #ccc;box-sizing:border-box!important}.ht-dialog[dir=rtl]{left:auto;right:0}.ht-dialog:focus{border:1px solid #4b89ff;outline:none}.ht-dialog:has(.htFocusCatcher:focus){border:1px solid #4b89ff;outline:none}.ht-dialog *{box-sizing:border-box!important}.ht-dialog--background-solid{background-color:#fff}.ht-dialog--background-semi-transparent{background-color:#ffffff80}.ht-dialog--animation{transition:opacity .15s ease-in-out}.ht-dialog--show{opacity:1}.ht-dialog__content-wrapper{display:flex;align-items:center;justify-content:center;width:100%;min-height:100%;padding:16px}.ht-dialog__content-wrapper:focus{border:1px solid #4b89ff;outline:none}.ht-dialog__content{position:relative;padding:8px;display:flex;gap:8px;max-width:480px;color:#222}.ht-dialog__content--background{box-shadow:0 8px 16px #00000014;background-color:#f7f7f9}.ht-dialog--confirm .ht-dialog__content-wrapper{text-align:center}.ht-dialog--confirm .ht-dialog__content-wrapper-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;max-width:480px}.ht-dialog--confirm .ht-dialog__content-wrapper-inner--background{box-shadow:0 8px 16px #00000014;background-color:#f7f7f9}.ht-dialog--confirm .ht-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center}.ht-dialog--confirm .ht-dialog__content:has(.ht-dialog__buttons){gap:4px}.ht-dialog--confirm .ht-dialog__title{margin:0;font-size:16px;font-weight:400;line-height:24px}.ht-dialog--confirm .ht-dialog__description{margin:0;color:#222;font-size:12px;font-weight:400;line-height:16px}.ht-dialog--confirm .ht-dialog__buttons{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}.ht-root-wrapper .ht-pagination{color:#222;background:#f0f0f0;border:1px solid #ccc;border-top-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:12px;font-weight:400;box-sizing:border-box;overflow-x:auto}.ht-root-wrapper .ht-pagination__inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding-inline:8px;padding-block:4px;min-width:230px}.ht-root-wrapper .ht-pagination--bordered{border-top-color:#ccc}.ht-root-wrapper .ht-page-size-section{display:flex;align-items:center;gap:8px}.ht-root-wrapper .ht-page-size-section span{white-space:nowrap}.ht-root-wrapper .ht-page-size-section__select-wrapper{position:relative;border-radius:2px;border:1px solid #ccc}.ht-root-wrapper .ht-page-size-section__select-wrapper select{padding-inline-start:8px;padding-inline-end:8px;padding-top:4px;padding-bottom:4px;border-radius:2px;color:#222;background-color:#f0f0f0;border:none;-webkit-appearance:none;font-size:inherit;cursor:pointer}.ht-root-wrapper .ht-page-size-section__select-wrapper select:disabled{opacity:.4;cursor:default}.ht-root-wrapper .ht-page-size-section__select-wrapper select:hover:not(:disabled){background-color:#e0e0e0}.ht-root-wrapper .ht-page-size-section__select-wrapper select:focus{background-color:#e0e0e0;outline:1px solid #4b89ff}.ht-root-wrapper .ht-page-counter-section{margin-inline-end:auto}.ht-root-wrapper .ht-page-navigation-section{display:flex;align-items:center;gap:8px}.ht-root-wrapper .ht-page-navigation-section button{font-size:inherit;color:#222;background-color:transparent;border:none;padding:4px;border-radius:2px;cursor:pointer}.ht-root-wrapper .ht-page-navigation-section button:before{display:block;width:16px;height:16px;line-height:16px;text-align:center}.ht-root-wrapper .ht-page-navigation-section button:disabled{opacity:.4;cursor:default}.ht-root-wrapper .ht-page-navigation-section button:hover:not(:disabled){background-color:#e0e0e0}.ht-root-wrapper .ht-page-navigation-section button:focus{outline:1px solid #4b89ff}.ht-root-wrapper .ht-page-navigation-section .ht-page-first:before{content:\"\\21a4\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-first:before{content:\"\\21a6\"}.ht-root-wrapper .ht-page-navigation-section .ht-page-prev:before{content:\"\\21a2\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-prev:before{content:\"\\21a3\"}.ht-root-wrapper .ht-page-navigation-section .ht-page-next:before{content:\"\\21a3\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-next:before{content:\"\\21a2\"}.ht-root-wrapper .ht-page-navigation-section .ht-page-last:before{content:\"\\21a6\"}[dir=rtl].ht-root-wrapper .ht-page-navigation-section .ht-page-last:before{content:\"\\21a4\"}.ht-root-wrapper .ht-page-navigation-section span{white-space:nowrap}.ht-loading__icon-svg{display:block;width:16px;height:16px;color:#5292f7;animation:ht-loading-spin 1s linear infinite;transform-origin:50% 50%}.ht-loading__content{display:flex;align-items:center;gap:8px}.ht-loading__title{margin:0;font-size:13px;font-weight:400;line-height:18px}.ht-loading__description{margin:0;color:#222;font-size:12px;line-height:16px;font-weight:400}@keyframes ht-loading-spin{to{transform:rotate(360deg)}}.ht-empty-data-state{display:none;position:absolute;width:100%;left:0;z-index:999;overflow-y:auto;border:1px solid #ccc;box-sizing:border-box;background-color:#fff}.ht-empty-data-state *{box-sizing:border-box!important}.ht-empty-data-state__content-wrapper{display:flex;align-items:center;justify-content:center;text-align:center;width:100%;min-height:100%;padding:16px}.ht-empty-data-state__content-wrapper-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:480px;padding:16px}.ht-empty-data-state__content-wrapper-inner:focus{outline:none;box-shadow:0 0 0 1px #4b89ff}.ht-empty-data-state__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.ht-empty-data-state__title{margin:0;font-size:16px;font-weight:400;line-height:24px}.ht-empty-data-state__description{margin:0;color:#222;font-size:12px;line-height:16px;font-weight:400}.ht-empty-data-state__buttons{display:flex;justify-content:center;flex-direction:row;flex-wrap:wrap;gap:8px}.ht-empty-data-state__buttons--has-buttons{margin-top:8px}.ht-empty-data-state--disable-top-border{border-top-width:0}.ht-empty-data-state--disable-inline-border{border-inline-start-width:0}.ht-empty-data-state--disable-bottom-border,.ht-empty-data-state:has(~.ht-pagination){border-bottom-width:0}.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.pika-single:before,.pika-single:after{content:\" \";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px #00000080}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;opacity:0}.pika-prev,.pika-next{display:block;cursor:pointer;position:relative;outline:none;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-prev:hover,.pika-next:hover{opacity:1}.pika-prev,.is-rtl .pika-next{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.pika-next,.is-rtl .pika-prev{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-prev.is-disabled,.pika-next.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table th,.pika-table td{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:none;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:center;background:#f5f5f5;height:initial}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button,.has-event .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.is-disabled .pika-button,.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.is-outside-current-month .pika-button{color:#999;opacity:.3}.is-selection-disabled{pointer-events:none;cursor:default}.pika-button:hover,.pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}.document-viewer-container{height:100%;min-height:0;width:100%;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background-color:#f5f5f5;overflow:hidden}.loader,.error-message{text-align:center;padding:40px 20px;font-family:Arial,sans-serif;background-color:#fff;border-radius:4px;margin:20px;box-shadow:0 2px 4px #0000001a}.error-message{color:#d32f2f;background-color:#ffebee;border:1px solid #ffcdd2}.text-viewer{flex:1 1 auto;min-height:0;background-color:#fff;padding:20px;border-radius:4px;margin:10px;overflow:auto;border:1px solid #ddd;box-shadow:0 2px 4px #0000001a;font-family:Courier New,monospace}.text-viewer pre{margin:0;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.word-viewer{flex:1 1 auto;min-height:0;background-color:#fff;padding:20px;border-radius:4px;box-shadow:0 2px 10px #0000001a;margin:10px;overflow:auto;font-family:Calibri,Arial,sans-serif}.word-viewer h1,.word-viewer h2,.word-viewer h3{color:#333}.word-viewer p{line-height:1.6;margin-bottom:15px}.presentation-viewer{flex:1 1 auto;min-height:0;background-color:#f5f5f5;padding:20px;border-radius:4px;margin:10px;display:flex;justify-content:center;align-items:center}.presentation-placeholder{text-align:center;color:#666;font-style:italic;padding:50px;background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a}::ng-deep ngx-extended-pdf-viewer{flex:1 1 auto;min-height:0;height:auto;width:calc(100% - 20px);margin:10px;border:1px solid #ddd;border-radius:4px;display:block}.excel-viewer{flex:1 1 auto;min-height:0;background-color:#fff;padding:20px;border-radius:4px;box-shadow:0 2px 10px #0000001a;margin:10px;overflow:auto}.excel-sheet{margin-bottom:30px;background:#fff}.excel-sheet h3{background-color:#f3f2f1;padding:12px 16px;margin:0;border-radius:4px 4px 0 0;font-size:14px;font-weight:600;color:#333;border-bottom:1px solid #e1dfdd}.excel-container{overflow-x:auto;overflow-y:auto;border:1px solid #e1dfdd;border-top:none;border-radius:0 0 4px 4px;max-height:calc(100% - 50px)}.excel-table{border-collapse:collapse;width:100%;font-family:Segoe UI,Calibri,Arial,sans-serif;font-size:13px;background:#fff}.excel-table td,.excel-table th{border:1px solid #e1dfdd;padding:8px 12px;white-space:nowrap;color:#333}.excel-table th{background-color:#f2f2f2;font-weight:700}.excel-table tr:first-child td{background-color:#f3f2f1;font-weight:600;color:#333;border-bottom:2px solid #8a8886}.excel-table td.number-cell,.excel-table td.percentage-cell,.excel-table td[data-format*=\"%\"]{text-align:right}.excel-table td.percentage-cell{color:#107c41}.excel-table td.text-cell{text-align:left}.excel-table tr:nth-child(2n) td{background-color:#faf9f8}.excel-table tr:hover td{background-color:#edf3fa}.excel-table td.selected{background-color:#cce8ff;border:2px solid #0078d4}.excel-viewer-container{flex:1 1 auto;min-height:0;width:calc(100% - 20px);margin:10px;border-radius:4px;overflow:hidden;box-shadow:0 2px 10px #0000001a;background:#fff;display:flex;flex-direction:column}.excel-sheet-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:12px 10px 0 8px;background:#f3f2f1;border-bottom:1px solid #e1dfdd;min-height:44px}.excel-sheet-tab{padding:8px 16px;border:1px solid #e1dfdd;border-bottom:none;border-radius:4px 4px 0 0;font-size:13px;font-family:Segoe UI,Arial,sans-serif;color:#333;cursor:pointer;transition:background .15s,border-color .15s}.excel-sheet-tab:hover{background:#edebe9;border-bottom:1px solid #000000}.excel-sheet-tab.active{background:#fff;font-weight:600;border-bottom:1px solid #000000;margin-bottom:2px;z-index:1}.excel-container-custom{width:100%;overflow-x:auto;overflow-y:auto}::ng-deep .handsontable{font-family:Segoe UI,Arial,sans-serif;font-size:13px;overflow:hidden!important}::ng-deep .wtHolder{width:100%!important;height:100%!important}::ng-deep .handsontable td{border:1px solid #e1dfdd;padding:8px 12px;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.4;vertical-align:top;max-width:300px;min-width:80px;margin:0!important}::ng-deep .handsontable td:hover{overflow:visible;background-color:#edf3fa;position:relative;z-index:10;box-shadow:0 2px 8px #00000026}::ng-deep .handsontable .htRight{text-align:right;font-family:Segoe UI,Consolas,monospace}::ng-deep .handsontable .htLeft{text-align:left}::ng-deep .handsontable .htCenter{text-align:center}::ng-deep .handsontable tr:nth-child(2n) td{background-color:#faf9f8}::ng-deep .handsontable tr:hover td{background-color:#edf3fa}::ng-deep .handsontable .current-row td{background-color:#e5f3ff}::ng-deep .handsontable .manualColumnResizer{background-color:#34a9db;width:5px;cursor:col-resize;opacity:0;transition:opacity .2s}::ng-deep .handsontable .manualColumnResizer:hover,::ng-deep .handsontable .manualColumnResizer.active{opacity:1;background-color:#0078d4}::ng-deep .handsontable .manualRowResizer{background-color:#34a9db;height:5px;cursor:row-resize;opacity:0;transition:opacity .2s}::ng-deep .handsontable .manualRowResizer:hover,::ng-deep .handsontable .manualRowResizer.active{opacity:1;background-color:#0078d4}::ng-deep .wtHolder::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::ng-deep .wtHolder::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::ng-deep .wtHolder::-webkit-scrollbar-thumb:hover{background:#a8a8a8}::ng-deep .htContextMenu table{font-family:Segoe UI,Arial,sans-serif;font-size:12px}::ng-deep .htContextMenu .htItemWrapper{padding:6px 12px}::ng-deep .htContextMenu .current{background-color:#e5f3ff}@media(max-width:768px){.document-viewer-container{padding:10px}.excel-viewer-container{width:calc(100% - 10px);margin:5px}.excel-viewer,.image-viewer,.text-viewer,.word-viewer,.presentation-viewer{margin:5px;padding:10px}::ng-deep .handsontable td{font-size:11px;padding:4px 6px}::ng-deep .handsontable th{font-size:11px;padding:6px}::ng-deep ngx-extended-pdf-viewer{width:calc(100% - 10px);margin:5px}}.excel-viewer-container{overflow:hidden;position:relative}.excel-container-custom{overflow:auto;position:relative;height:100%;width:100%}.image-viewer{flex:1 1 auto;width:100%;height:100%;display:flex;flex-direction:column;background-color:#fff}.image-toolbar{padding:10px;background-color:#fff;border-bottom:1px solid #ddd;display:flex;gap:8px;align-items:center;z-index:10}.image-toolbar button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;border-radius:4px;cursor:pointer;font-size:16px;min-width:36px}.image-toolbar button:hover{background-color:#f0f0f0}.image-container{flex:1;overflow:hidden;position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff}.responsive-image{max-width:100%;max-height:100%;object-fit:contain;transition:transform .1s ease;transform-origin:center center;will-change:transform;-webkit-user-select:none;user-select:none}::ng-deep .handsontable .ht_clone_top,::ng-deep .handsontable .ht_clone_top_left_corner,::ng-deep .handsontable .ht_clone_left{display:none!important}\n/*! Bundled license information:\n\nhandsontable/dist/handsontable.full.css:\n (*!\n * Copyright (c) HANDSONCODE sp. z o. o.\n *\n * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in\n * Gdynia, Poland, at Aleja Zwyciestwa 96-98, registered by the District Court in Gdansk under number\n * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.\n *\n * This software is protected by applicable copyright laws, including international treaties, and dual-\n * licensed - depending on whether your use for commercial purposes, meaning intended for or\n * resulting in commercial advantage or monetary compensation, or not.\n *\n * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing\n * the suitability, performance, and usefulness of this software outside the production environment,\n * you agree to be bound by the terms included in the \"handsontable-non-commercial-license.pdf\" file.\n *\n * Your use of this software for commercial purposes is subject to the terms included in an applicable\n * license agreement.\n *\n * In any case, you must not make any such use of this software as to develop software which may be\n * considered competitive with this software.\n *\n * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN \"AS IS\"\n * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO\n * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,\n * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM\n * USE OR INABILITY TO USE THIS SOFTWARE.\n *\n * Version: 16.2.0\n * Release date: 25/11/2025 (built at 20/11/2025 13:27:05)\n *)\n (*!\n * Handsontable ContextMenu\n *)\n (*!\n * Handsontable DropdownMenu\n *)\n (*!\n * Handsontable Filters\n *)\n (*!\n * Handsontable HiddenRows\n *)\n (*!\n * Pikaday\n * Copyright \u00A9 2014 David Bushell | BSD & MIT license | https://dbushell.com/\n *)\n*/\n"] }]
539
649
  }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: DocumentViewerFileService }], propDecorators: { nameFile: [{
540
650
  type: Input
541
651
  }], nameBucket: [{