@jjlmoya/utils-audiovisual 1.14.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/entries.ts +32 -0
  4. package/src/tool/chromaticLens/chromatic-lens-color-palette-extraction-online.css +308 -0
  5. package/src/tool/chromaticLens/component.astro +0 -309
  6. package/src/tool/chromaticLens/entry.ts +39 -0
  7. package/src/tool/chromaticLens/index.ts +2 -41
  8. package/src/tool/collageMaker/component.astro +0 -387
  9. package/src/tool/collageMaker/entry.ts +48 -0
  10. package/src/tool/collageMaker/free-online-photo-collage-maker-professional-compositions.css +386 -0
  11. package/src/tool/collageMaker/index.ts +2 -50
  12. package/src/tool/exifCleaner/component.astro +0 -290
  13. package/src/tool/exifCleaner/entry.ts +53 -0
  14. package/src/tool/exifCleaner/exif-metadata-cleaner-remove-gps-photo-privacy.css +289 -0
  15. package/src/tool/exifCleaner/index.ts +2 -55
  16. package/src/tool/imageCompressor/component.astro +0 -498
  17. package/src/tool/imageCompressor/entry.ts +56 -0
  18. package/src/tool/imageCompressor/index.ts +2 -58
  19. package/src/tool/imageCompressor/online-image-compressor-reduce-file-size-no-quality-loss.css +496 -0
  20. package/src/tool/printQualityCalculator/component.astro +0 -485
  21. package/src/tool/printQualityCalculator/entry.ts +66 -0
  22. package/src/tool/printQualityCalculator/index.ts +2 -68
  23. package/src/tool/printQualityCalculator/print-quality-calculator-pixels-to-cm-dpi.css +483 -0
  24. package/src/tool/privacyBlur/component.astro +0 -334
  25. package/src/tool/privacyBlur/entry.ts +45 -0
  26. package/src/tool/privacyBlur/index.ts +2 -47
  27. package/src/tool/privacyBlur/online-privacy-editor-pixelate-blur-faces-photos.css +332 -0
  28. package/src/tool/subtitleSync/component.astro +0 -327
  29. package/src/tool/subtitleSync/entry.ts +45 -0
  30. package/src/tool/subtitleSync/index.ts +2 -47
  31. package/src/tool/subtitleSync/synchronize-srt-subtitles-online-adjust-timing-free.css +325 -0
  32. package/src/tool/timelapseCalculator/component.astro +0 -285
  33. package/src/tool/timelapseCalculator/entry.ts +48 -0
  34. package/src/tool/timelapseCalculator/index.ts +2 -50
  35. package/src/tool/timelapseCalculator/timelapse-hyperlapse-calculator-perfect-intervals.css +283 -0
  36. package/src/tool/tvDistance/component.astro +0 -437
  37. package/src/tool/tvDistance/entry.ts +45 -0
  38. package/src/tool/tvDistance/index.ts +2 -47
  39. package/src/tool/tvDistance/tv-viewing-distance-calculator-thx-4k-optimal-screen.css +435 -0
  40. package/src/tool/videoFrameExtractor/component.astro +0 -428
  41. package/src/tool/videoFrameExtractor/entry.ts +49 -0
  42. package/src/tool/videoFrameExtractor/index.ts +2 -51
  43. package/src/tool/videoFrameExtractor/online-video-frame-extractor-capture-hd-stills.css +426 -0
  44. package/src/tools.ts +1 -1
@@ -341,488 +341,3 @@ const { ui } = Astro.props;
341
341
  document.addEventListener("astro:page-load", initPQCalc);
342
342
  </script>
343
343
 
344
- <style>
345
- :root {
346
- --pq-bg: #fff;
347
- --pq-border: #cbd5e1;
348
- --pq-primary: #6366f1;
349
- --pq-primary-light: #e0e7ff;
350
- --pq-accent: #4f46e5;
351
- }
352
-
353
- :global(.theme-dark) {
354
- --pq-bg: #0f172a;
355
- --pq-border: #334155;
356
- --pq-primary: #6366f1;
357
- --pq-primary-light: rgba(99, 102, 241, 0.2);
358
- --pq-accent: #818cf8;
359
- }
360
-
361
- :global(.pq-wrapper) {
362
- width: 100%;
363
- max-width: 56rem;
364
- margin: 0 auto;
365
- display: flex;
366
- flex-direction: column;
367
- gap: 2rem;
368
- padding: 1rem;
369
- }
370
-
371
- .pq-hidden {
372
- display: none;
373
- }
374
-
375
- :global(.pq-drop-zone) {
376
- position: relative;
377
- cursor: pointer;
378
- border: 2px dashed var(--pq-border);
379
- border-radius: 1rem;
380
- padding: 3rem;
381
- transition: border-color 0.3s, background 0.3s;
382
- }
383
-
384
- :global(.theme-dark .pq-drop-zone) {
385
- border-color: var(--pq-border);
386
- }
387
- :global(.pq-drop-zone:hover),
388
- :global(.pq-drop-zone.pq-drop-active) {
389
- border-color: var(--pq-primary);
390
- background: rgba(99, 102, 241, 0.04);
391
- }
392
- :global(.pq-drop-inner) {
393
- display: flex;
394
- flex-direction: column;
395
- align-items: center;
396
- justify-content: center;
397
- text-align: center;
398
- gap: 1rem;
399
- }
400
- :global(.pq-upload-icon-wrap) {
401
- width: 5rem;
402
- height: 5rem;
403
- background: var(--pq-primary-light);
404
- border-radius: 50%;
405
- display: flex;
406
- align-items: center;
407
- justify-content: center;
408
- color: var(--pq-accent);
409
- transition: transform 0.3s;
410
- }
411
-
412
- :global(.theme-dark .pq-upload-icon-wrap) {
413
- background: rgba(99, 102, 241, 0.2);
414
- color: #818cf8;
415
- }
416
- :global(.pq-drop-zone:hover .pq-upload-icon-wrap) {
417
- transform: scale(1.1);
418
- }
419
- :global(.pq-drop-title) {
420
- font-size: 1.25rem;
421
- font-weight: 700;
422
- color: #0f172a;
423
- margin: 0;
424
- }
425
-
426
- :global(.theme-dark .pq-drop-title) {
427
- color: #f1f5f9;
428
- }
429
- :global(.pq-drop-sub) {
430
- color: #64748b;
431
- margin: 0.25rem 0 0;
432
- font-size: 0.95rem;
433
- }
434
- :global(.pq-drop-overlay) {
435
- position: absolute;
436
- inset: 0;
437
- background: linear-gradient(135deg, rgba(99,102,241,0.04), rgba(168,85,247,0.04));
438
- border-radius: 1rem;
439
- opacity: 0;
440
- pointer-events: none;
441
- transition: opacity 0.3s;
442
- }
443
- :global(.pq-drop-zone:hover .pq-drop-overlay) { opacity: 1; }
444
-
445
- :global(.pq-results) {
446
- display: flex;
447
- flex-direction: column;
448
- gap: 2rem;
449
- animation: pq-fade-up 0.5s ease-out;
450
- }
451
-
452
- @keyframes pq-fade-up {
453
- from {
454
- opacity: 0;
455
- transform: translateY(1.25rem);
456
- }
457
- to {
458
- opacity: 1;
459
- transform: translateY(0);
460
- }
461
- }
462
-
463
- :global(.pq-file-card) {
464
- background: #fff;
465
- border: 1px solid #e2e8f0;
466
- border-radius: 0.75rem;
467
- box-shadow: 0 4px 24px -8px rgba(0,0,0,0.1);
468
- padding: 1.5rem;
469
- }
470
-
471
- :global(.theme-dark .pq-file-card) {
472
- background: #0f172a;
473
- border-color: #1e293b;
474
- }
475
- :global(.pq-file-left) {
476
- display: flex;
477
- align-items: center;
478
- gap: 1.5rem;
479
- }
480
- :global(.pq-preview-wrap) {
481
- position: relative;
482
- width: 8rem;
483
- height: 8rem;
484
- flex-shrink: 0;
485
- }
486
- :global(.pq-preview-img) {
487
- width: 100%;
488
- height: 100%;
489
- object-fit: cover;
490
- border-radius: 0.5rem;
491
- box-shadow: 0 2px 8px rgba(0,0,0,0.15);
492
- }
493
- :global(.pq-file-name) {
494
- font-weight: 700;
495
- color: #0f172a;
496
- font-size: 1rem;
497
- margin: 0 0 0.5rem;
498
- overflow: hidden;
499
- text-overflow: ellipsis;
500
- white-space: nowrap;
501
- max-width: 20rem;
502
- }
503
-
504
- :global(.theme-dark .pq-file-name) {
505
- color: #f1f5f9;
506
- }
507
- :global(.pq-file-meta) {
508
- display: flex;
509
- flex-wrap: wrap;
510
- gap: 1rem;
511
- }
512
- :global(.pq-meta-item) {
513
- display: flex;
514
- align-items: center;
515
- gap: 0.25rem;
516
- font-size: 0.85rem;
517
- color: #64748b;
518
- }
519
-
520
- :global(.pq-main-grid) {
521
- display: grid;
522
- grid-template-columns: 1fr 1fr;
523
- gap: 2rem;
524
- }
525
-
526
- @media (max-width: 640px) {
527
- .pq-main-grid { grid-template-columns: 1fr; }
528
- }
529
-
530
- :global(.pq-config-panel) {
531
- background: #f8fafc;
532
- border: 1px solid #e2e8f0;
533
- border-radius: 0.75rem;
534
- padding: 1.5rem;
535
- }
536
-
537
- :global(.theme-dark .pq-config-panel) {
538
- background: rgba(30, 41, 59, 0.5);
539
- border-color: var(--pq-border);
540
- }
541
- :global(.pq-config-label) {
542
- display: block;
543
- font-size: 0.875rem;
544
- font-weight: 500;
545
- color: #475569;
546
- margin-bottom: 1rem;
547
- }
548
-
549
- :global(.theme-dark .pq-config-label) {
550
- color: #94a3b8;
551
- }
552
- :global(.pq-slider) {
553
- width: 100%;
554
- height: 0.5rem;
555
- background: #e2e8f0;
556
- border-radius: 0.5rem;
557
- appearance: none;
558
- cursor: pointer;
559
- accent-color: #6366f1;
560
- margin-bottom: 1rem;
561
- }
562
-
563
- :global(.theme-dark .pq-slider) {
564
- background: #334155;
565
- }
566
- :global(.pq-dpi-row) {
567
- display: flex;
568
- align-items: center;
569
- gap: 1rem;
570
- margin-bottom: 1.5rem;
571
- }
572
- :global(.pq-dpi-number) {
573
- width: 6rem;
574
- border: 1px solid #e2e8f0;
575
- border-radius: 0.5rem;
576
- background: #fff;
577
- color: #0f172a;
578
- font-size: 1rem;
579
- font-weight: 700;
580
- text-align: center;
581
- padding: 0.4rem 0.5rem;
582
- outline: none;
583
- }
584
- :global(.pq-dpi-number:focus) { border-color: var(--pq-primary); }
585
-
586
- :global(.theme-dark .pq-dpi-number) {
587
- background: #0f172a;
588
- border-color: var(--pq-border);
589
- color: #f1f5f9;
590
- }
591
- :global(.pq-dpi-label) {
592
- font-size: 0.875rem;
593
- color: #64748b;
594
- }
595
- :global(.pq-presets) {
596
- display: flex;
597
- flex-wrap: wrap;
598
- gap: 0.5rem;
599
- }
600
- :global(.pq-preset-btn) {
601
- padding: 0.25rem 0.75rem;
602
- font-size: 0.75rem;
603
- font-weight: 500;
604
- border-radius: 999px;
605
- background: #e2e8f0;
606
- color: #475569;
607
- border: none;
608
- cursor: pointer;
609
- transition: background 0.15s, color 0.15s;
610
- }
611
- :global(.pq-preset-btn:hover) { background: #cbd5e1; }
612
-
613
- :global(.theme-dark .pq-preset-btn) {
614
- background: #334155;
615
- color: #94a3b8;
616
- }
617
-
618
- :global(.theme-dark .pq-preset-btn:hover) {
619
- background: #475569;
620
- }
621
- :global(.pq-preset-active) {
622
- background: var(--pq-primary-light);
623
- color: #4338ca;
624
- box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.2);
625
- }
626
-
627
- :global(.theme-dark .pq-preset-active) {
628
- background: rgba(99, 102, 241, 0.3);
629
- color: #a5b4fc;
630
- }
631
-
632
- :global(.pq-output-panel) {
633
- display: flex;
634
- }
635
- :global(.pq-output-gradient) {
636
- flex: 1;
637
- display: flex;
638
- flex-direction: column;
639
- justify-content: center;
640
- background: linear-gradient(135deg, #6366f1, #a855f7);
641
- border-radius: 0.75rem;
642
- padding: 1.5rem;
643
- color: #fff;
644
- box-shadow: 0 10px 40px -10px rgba(99,102,241,0.4);
645
- position: relative;
646
- overflow: hidden;
647
- }
648
- :global(.pq-output-blur-bg) {
649
- position: absolute;
650
- top: 0; right: 0;
651
- width: 8rem; height: 8rem;
652
- background: rgba(255,255,255,0.1);
653
- border-radius: 50%;
654
- filter: blur(2rem);
655
- transform: translate(2rem, -2rem);
656
- pointer-events: none;
657
- }
658
- :global(.pq-output-subtitle) {
659
- font-size: 0.75rem;
660
- font-weight: 500;
661
- text-transform: uppercase;
662
- letter-spacing: 0.05em;
663
- color: rgba(224,231,255,0.9);
664
- margin: 0 0 0.5rem;
665
- position: relative;
666
- }
667
- :global(.pq-output-size) {
668
- display: flex;
669
- align-items: baseline;
670
- gap: 0.5rem;
671
- font-size: 2.5rem;
672
- font-weight: 900;
673
- margin-bottom: 0.25rem;
674
- position: relative;
675
- }
676
- :global(.pq-size-sep) {
677
- font-size: 1.5rem;
678
- opacity: 0.5;
679
- }
680
- :global(.pq-size-unit) {
681
- font-size: 1.5rem;
682
- }
683
- :global(.pq-output-inches) {
684
- color: rgba(199, 210, 254, 0.8);
685
- font-size: 0.875rem;
686
- margin-bottom: 1.5rem;
687
- position: relative;
688
- }
689
- :global(.pq-quality-section) {
690
- padding-top: 1rem;
691
- border-top: 1px solid rgba(255,255,255,0.2);
692
- position: relative;
693
- }
694
- :global(.pq-quality-badge) {
695
- display: inline-flex;
696
- align-items: center;
697
- gap: 0.375rem;
698
- padding: 0.25rem 0.75rem;
699
- border-radius: 999px;
700
- font-size: 0.875rem;
701
- font-weight: 700;
702
- background: rgba(255,255,255,0.2);
703
- backdrop-filter: blur(4px);
704
- margin-bottom: 0.5rem;
705
- }
706
- :global(.pq-badge-green) {
707
- background: rgba(16, 185, 129, 0.25);
708
- box-shadow: 0 0 0 1px rgba(52, 211, 153, 0.3);
709
- }
710
-
711
- :global(.pq-badge-yellow) {
712
- background: rgba(234, 179, 8, 0.25);
713
- box-shadow: 0 0 0 1px rgba(253, 224, 71, 0.3);
714
- }
715
-
716
- :global(.pq-badge-red) {
717
- background: rgba(239, 68, 68, 0.25);
718
- box-shadow: 0 0 0 1px rgba(252, 165, 165, 0.3);
719
- }
720
-
721
- :global(.pq-badge-slate) {
722
- background: rgba(100, 116, 139, 0.25);
723
- box-shadow: 0 0 0 1px rgba(148, 163, 184, 0.3);
724
- }
725
- :global(.pq-quality-desc) {
726
- font-size: 0.875rem;
727
- color: rgba(199,210,254,0.9);
728
- line-height: 1.4;
729
- margin: 0;
730
- }
731
-
732
- :global(.pq-formats-card) {
733
- background: #fff;
734
- border: 1px solid #e2e8f0;
735
- border-radius: 0.75rem;
736
- padding: 1.5rem;
737
- }
738
-
739
- :global(.theme-dark .pq-formats-card) {
740
- background: #0f172a;
741
- border-color: #1e293b;
742
- }
743
- :global(.pq-formats-title) {
744
- display: flex;
745
- align-items: center;
746
- gap: 0.5rem;
747
- font-weight: 700;
748
- font-size: 1rem;
749
- color: #0f172a;
750
- margin: 0 0 1rem;
751
- }
752
-
753
- :global(.theme-dark .pq-formats-title) {
754
- color: #f1f5f9;
755
- }
756
- :global(.pq-formats-scroll) {
757
- overflow-x: auto;
758
- }
759
- :global(.pq-formats-table) {
760
- width: 100%;
761
- border-collapse: collapse;
762
- font-size: 0.875rem;
763
- }
764
- :global(.pq-formats-table th) {
765
- text-align: left;
766
- padding: 0.75rem 1rem;
767
- font-size: 0.75rem;
768
- font-weight: 700;
769
- text-transform: uppercase;
770
- letter-spacing: 0.05em;
771
- color: #475569;
772
- background: #f8fafc;
773
- }
774
-
775
- :global(.theme-dark .pq-formats-table th) {
776
- background: #1e293b;
777
- color: #94a3b8;
778
- }
779
- :global(.pq-formats-row) {
780
- border-bottom: 1px solid #f1f5f9;
781
- transition: background 0.15s;
782
- }
783
-
784
- :global(.pq-formats-row:hover) {
785
- background: #f8fafc;
786
- }
787
-
788
- :global(.theme-dark .pq-formats-row) {
789
- border-color: #1e293b;
790
- }
791
-
792
- :global(.theme-dark .pq-formats-row:hover) {
793
- background: #1e293b;
794
- }
795
- :global(.pq-td) {
796
- padding: 0.75rem 1rem;
797
- color: #475569;
798
- }
799
-
800
- :global(.theme-dark .pq-td) {
801
- color: #94a3b8;
802
- }
803
- :global(.pq-td-name) {
804
- font-weight: 600;
805
- color: #0f172a;
806
- }
807
-
808
- :global(.theme-dark .pq-td-name) {
809
- color: #f1f5f9;
810
- }
811
- :global(.pq-status) {
812
- display: inline-flex;
813
- align-items: center;
814
- gap: 0.35rem;
815
- font-weight: 600;
816
- font-size: 0.8rem;
817
- }
818
- :global(.pq-status-ok) { color: #16a34a; }
819
- :global(.pq-status-no) { color: #d97706; }
820
-
821
- :global(.theme-dark .pq-status-ok) {
822
- color: #4ade80;
823
- }
824
-
825
- :global(.theme-dark .pq-status-no) {
826
- color: #fbbf24;
827
- }
828
- </style>
@@ -0,0 +1,66 @@
1
+ import type { AudiovisualToolEntry, ToolLocaleContent } from '../../types';
2
+
3
+ export interface PrintQualityCalculatorUI {
4
+ dropTitle: string;
5
+ dropSubtitle: string;
6
+ resultsTitle: string;
7
+ dpiDensityLabel: string;
8
+ dpiPointsLabel: string;
9
+ maxPrintTitle: string;
10
+ standardFormatsTitle: string;
11
+ formatColumn: string;
12
+ measureColumn: string;
13
+ supportColumn: string;
14
+ qualityExcellent: string;
15
+ qualityGood: string;
16
+ qualityFair: string;
17
+ qualityPoor: string;
18
+ qualityExcellentDesc: string;
19
+ qualityGoodDesc: string;
20
+ qualityFairDesc: string;
21
+ qualityPoorDesc: string;
22
+ unitCm: string;
23
+ unitInches: string;
24
+ dpiScreenLabel: string;
25
+ dpiNewspaperLabel: string;
26
+ dpiPrintLabel: string;
27
+ dpiFineArtLabel: string;
28
+ formatPostal: string;
29
+ formatQuartilla: string;
30
+ formatFolio: string;
31
+ formatDoubleFolio: string;
32
+ formatSmallPoster: string;
33
+ formatLargePoster: string;
34
+ formatPlane: string;
35
+ supportedText: string;
36
+ notSupportedPrefix: string;
37
+ invalidImageError: string;
38
+ [key: string]: string;
39
+ }
40
+
41
+ export type PrintQualityCalculatorLocaleContent = ToolLocaleContent<PrintQualityCalculatorUI>;
42
+
43
+ export const printQualityCalculator: AudiovisualToolEntry<PrintQualityCalculatorUI> = {
44
+ id: 'calidad-impresion',
45
+ icons: {
46
+ bg: 'mdi:printer',
47
+ fg: 'mdi:ruler-square',
48
+ },
49
+ i18n: {
50
+ es: async () => (await import('./i18n/es')).content as unknown as PrintQualityCalculatorLocaleContent,
51
+ en: async () => (await import('./i18n/en')).content as unknown as PrintQualityCalculatorLocaleContent,
52
+ fr: async () => (await import('./i18n/fr')).content as unknown as PrintQualityCalculatorLocaleContent,
53
+ de: async () => (await import('./i18n/de')).content as unknown as PrintQualityCalculatorLocaleContent,
54
+ it: async () => (await import('./i18n/it')).content as unknown as PrintQualityCalculatorLocaleContent,
55
+ pt: async () => (await import('./i18n/pt')).content as unknown as PrintQualityCalculatorLocaleContent,
56
+ id: async () => (await import('./i18n/id')).content as unknown as PrintQualityCalculatorLocaleContent,
57
+ ja: async () => (await import('./i18n/ja')).content as unknown as PrintQualityCalculatorLocaleContent,
58
+ ko: async () => (await import('./i18n/ko')).content as unknown as PrintQualityCalculatorLocaleContent,
59
+ nl: async () => (await import('./i18n/nl')).content as unknown as PrintQualityCalculatorLocaleContent,
60
+ pl: async () => (await import('./i18n/pl')).content as unknown as PrintQualityCalculatorLocaleContent,
61
+ ru: async () => (await import('./i18n/ru')).content as unknown as PrintQualityCalculatorLocaleContent,
62
+ sv: async () => (await import('./i18n/sv')).content as unknown as PrintQualityCalculatorLocaleContent,
63
+ tr: async () => (await import('./i18n/tr')).content as unknown as PrintQualityCalculatorLocaleContent,
64
+ zh: async () => (await import('./i18n/zh')).content as unknown as PrintQualityCalculatorLocaleContent,
65
+ },
66
+ };
@@ -1,71 +1,5 @@
1
- import type { AudiovisualToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
-
3
- export interface PrintQualityCalculatorUI {
4
- dropTitle: string;
5
- dropSubtitle: string;
6
- resultsTitle: string;
7
- dpiDensityLabel: string;
8
- dpiPointsLabel: string;
9
- maxPrintTitle: string;
10
- standardFormatsTitle: string;
11
- formatColumn: string;
12
- measureColumn: string;
13
- supportColumn: string;
14
- qualityExcellent: string;
15
- qualityGood: string;
16
- qualityFair: string;
17
- qualityPoor: string;
18
- qualityExcellentDesc: string;
19
- qualityGoodDesc: string;
20
- qualityFairDesc: string;
21
- qualityPoorDesc: string;
22
- unitCm: string;
23
- unitInches: string;
24
- dpiScreenLabel: string;
25
- dpiNewspaperLabel: string;
26
- dpiPrintLabel: string;
27
- dpiFineArtLabel: string;
28
- formatPostal: string;
29
- formatQuartilla: string;
30
- formatFolio: string;
31
- formatDoubleFolio: string;
32
- formatSmallPoster: string;
33
- formatLargePoster: string;
34
- formatPlane: string;
35
- supportedText: string;
36
- notSupportedPrefix: string;
37
- invalidImageError: string;
38
- [key: string]: string;
39
- }
40
-
41
- export type PrintQualityCalculatorLocaleContent = ToolLocaleContent<PrintQualityCalculatorUI>;
42
-
43
- export const printQualityCalculator: AudiovisualToolEntry<PrintQualityCalculatorUI> = {
44
- id: 'calidad-impresion',
45
- icons: {
46
- bg: 'mdi:printer',
47
- fg: 'mdi:ruler-square',
48
- },
49
- i18n: {
50
- es: async () => (await import('./i18n/es')).content as unknown as PrintQualityCalculatorLocaleContent,
51
- en: async () => (await import('./i18n/en')).content as unknown as PrintQualityCalculatorLocaleContent,
52
- fr: async () => (await import('./i18n/fr')).content as unknown as PrintQualityCalculatorLocaleContent,
53
- de: async () => (await import('./i18n/de')).content as unknown as PrintQualityCalculatorLocaleContent,
54
- it: async () => (await import('./i18n/it')).content as unknown as PrintQualityCalculatorLocaleContent,
55
- pt: async () => (await import('./i18n/pt')).content as unknown as PrintQualityCalculatorLocaleContent,
56
- id: async () => (await import('./i18n/id')).content as unknown as PrintQualityCalculatorLocaleContent,
57
- ja: async () => (await import('./i18n/ja')).content as unknown as PrintQualityCalculatorLocaleContent,
58
- ko: async () => (await import('./i18n/ko')).content as unknown as PrintQualityCalculatorLocaleContent,
59
- nl: async () => (await import('./i18n/nl')).content as unknown as PrintQualityCalculatorLocaleContent,
60
- pl: async () => (await import('./i18n/pl')).content as unknown as PrintQualityCalculatorLocaleContent,
61
- ru: async () => (await import('./i18n/ru')).content as unknown as PrintQualityCalculatorLocaleContent,
62
- sv: async () => (await import('./i18n/sv')).content as unknown as PrintQualityCalculatorLocaleContent,
63
- tr: async () => (await import('./i18n/tr')).content as unknown as PrintQualityCalculatorLocaleContent,
64
- zh: async () => (await import('./i18n/zh')).content as unknown as PrintQualityCalculatorLocaleContent,
65
- },
66
- };
67
-
68
-
1
+ import { printQualityCalculator } from './entry';
2
+ export * from './entry';
69
3
  export const PRINT_QUALITY_CALCULATOR_TOOL: ToolDefinition = {
70
4
  entry: printQualityCalculator as unknown as AudiovisualToolEntry,
71
5
  Component: () => import('./component.astro'),