@jaak.ai/stamps 2.0.0-dev.31 → 2.0.0-dev.33

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.
@@ -5,7 +5,7 @@ var index = require('./index-BfhtOB0D.js');
5
5
  const defineCustomElements = async (win, options) => {
6
6
  if (typeof window === 'undefined') return undefined;
7
7
  await index.globalScripts();
8
- return index.bootstrapLazy([["jaak-stamps.cjs",[[1,"jaak-stamps",{"debug":[4],"alignmentTolerance":[2,"alignment-tolerance"],"maskSize":[2,"mask-size"],"cropMargin":[2,"crop-margin"],"useDocumentClassification":[4,"use-document-classification"],"preferredCamera":[1,"preferred-camera"],"detectionBoxes":[32],"sideAlignment":[32],"isMaskReady":[32],"shouldMirrorVideo":[32],"showCameraSelector":[32],"currentStatus":[32],"getCapturedImages":[64],"isProcessCompleted":[64],"startCapture":[64],"stopCapture":[64],"resetCapture":[64],"skipBackCapture":[64],"getStatus":[64],"preloadModel":[64],"getCameraInfo":[64],"setPreferredCamera":[64]}]]]], options);
8
+ return index.bootstrapLazy([["jaak-stamps.cjs",[[1,"jaak-stamps",{"debug":[4],"alignmentTolerance":[2,"alignment-tolerance"],"maskSize":[2,"mask-size"],"cropMargin":[2,"crop-margin"],"useDocumentClassification":[4,"use-document-classification"],"preferredCamera":[1,"preferred-camera"],"detectionBoxes":[32],"sideAlignment":[32],"isMaskReady":[32],"shouldMirrorVideo":[32],"showCameraSelector":[32],"isSwitchingCamera":[32],"currentStatus":[32],"performanceData":[32],"isPerformanceMonitorMinimized":[32],"getCapturedImages":[64],"isProcessCompleted":[64],"startCapture":[64],"stopCapture":[64],"resetCapture":[64],"skipBackCapture":[64],"getStatus":[64],"preloadModel":[64],"getCameraInfo":[64],"setPreferredCamera":[64]}]]]], options);
9
9
  };
10
10
 
11
11
  exports.setNonce = index.setNonce;
@@ -85,12 +85,10 @@ video {
85
85
  border: none;
86
86
  border-radius: 4px;
87
87
  background: transparent;
88
- box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.7);
89
88
  opacity: 0.8;
90
89
  }
91
90
 
92
91
  .card-outline.perfect-match {
93
- box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.7);
94
92
  }
95
93
 
96
94
  /* Lados individuales de la máscara */
@@ -98,79 +96,74 @@ video {
98
96
  position: absolute;
99
97
  background: #999;
100
98
  transition: background-color 0.3s ease;
99
+ border-radius: 1px;
100
+ }
101
+
102
+ .side-top.aligned {
103
+ border-left-color: #28a745;
104
+ border-top-color: #28a745;
105
+ }
106
+
107
+ .side-right.aligned {
108
+ border-right-color: #28a745;
109
+ border-top-color: #28a745;
101
110
  }
102
111
 
103
- .side.aligned {
104
- background: #28a745;
112
+ .side-bottom.aligned {
113
+ border-left-color: #28a745;
114
+ border-bottom-color: #28a745;
115
+ }
116
+
117
+ .side-left.aligned {
118
+ border-right-color: #28a745;
119
+ border-bottom-color: #28a745;
105
120
  }
106
121
 
107
122
  .side-top {
108
- top: 0;
109
- left: 0;
110
- width: 100%;
111
- height: 3px;
123
+ top: -3px;
124
+ left: -3px;
125
+ width: 30px;
126
+ height: 30px;
127
+ border-left: 6px solid #ffffff;
128
+ border-top: 6px solid #ffffff;
129
+ background: transparent;
112
130
  }
113
131
 
114
132
  .side-right {
115
- top: 0;
116
- right: 0;
117
- width: 3px;
118
- height: 100%;
133
+ top: -3px;
134
+ right: -3px;
135
+ width: 30px;
136
+ height: 30px;
137
+ border-right: 6px solid #ffffff;
138
+ border-top: 6px solid #ffffff;
139
+ background: transparent;
119
140
  }
120
141
 
121
142
  .side-bottom {
122
- bottom: 0;
123
- left: 0;
124
- width: 100%;
125
- height: 3px;
143
+ bottom: -3px;
144
+ left: -3px;
145
+ width: 30px;
146
+ height: 30px;
147
+ border-left: 6px solid #ffffff;
148
+ border-bottom: 6px solid #ffffff;
149
+ background: transparent;
126
150
  }
127
151
 
128
152
  .side-left {
129
- top: 0;
130
- left: 0;
131
- width: 3px;
132
- height: 100%;
153
+ bottom: -3px;
154
+ right: -3px;
155
+ width: 30px;
156
+ height: 30px;
157
+ border-right: 6px solid #ffffff;
158
+ border-bottom: 6px solid #ffffff;
159
+ background: transparent;
133
160
  }
134
161
 
135
- .corner {
136
- position: absolute;
137
- width: 20px;
138
- height: 20px;
139
- border: 2px solid #999;
140
- z-index: 12;
141
- }
142
162
 
143
- .corner-tl {
144
- top: -10px;
145
- left: -10px;
146
- border-right: none;
147
- border-bottom: none;
148
- }
149
163
 
150
- .corner-tr {
151
- top: -10px;
152
- right: -10px;
153
- border-left: none;
154
- border-bottom: none;
155
- }
156
164
 
157
- .corner-bl {
158
- bottom: -10px;
159
- left: -10px;
160
- border-right: none;
161
- border-top: none;
162
- }
163
165
 
164
- .corner-br {
165
- bottom: -10px;
166
- right: -10px;
167
- border-left: none;
168
- border-top: none;
169
- }
170
166
 
171
- .corner.perfect-match {
172
- border-color: #28a745;
173
- }
174
167
 
175
168
  .guide-text {
176
169
  position: absolute;
@@ -233,15 +226,15 @@ video {
233
226
  @keyframes pulseGreen {
234
227
  0% {
235
228
  border-color: #28a745;
236
- box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.7), 0 0 0 4px rgba(40, 167, 69, 0);
229
+ box-shadow: 0 0 0 4px rgba(40, 167, 69, 0);
237
230
  }
238
231
  50% {
239
232
  border-color: #28a745;
240
- box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.7), 0 0 0 8px rgba(40, 167, 69, 0.6);
233
+ box-shadow: 0 0 0 8px rgba(40, 167, 69, 0.6);
241
234
  }
242
235
  100% {
243
236
  border-color: #28a745;
244
- box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.7), 0 0 0 4px rgba(40, 167, 69, 0);
237
+ box-shadow: 0 0 0 4px rgba(40, 167, 69, 0);
245
238
  }
246
239
  }
247
240
 
@@ -489,11 +482,11 @@ video {
489
482
 
490
483
 
491
484
  .camera-selector-button {
492
- height: 40px;
493
- padding: 0 16px;
485
+ height: 32px;
486
+ padding: 0 10px;
494
487
  border: none;
495
488
  border-radius: 8px;
496
- background: rgba(0, 0, 0, 0.6);
489
+ background: rgba(0, 0, 0, 0.25);
497
490
  backdrop-filter: blur(12px);
498
491
  color: #ffffff;
499
492
  font-size: 12px;
@@ -519,13 +512,41 @@ video {
519
512
  background: rgba(0, 0, 0, 0.9);
520
513
  }
521
514
 
515
+ .camera-selector-button:disabled,
516
+ .camera-selector-button.loading {
517
+ opacity: 0.7;
518
+ cursor: not-allowed;
519
+ pointer-events: none;
520
+ }
521
+
522
+ .camera-selector-button:disabled:hover,
523
+ .camera-selector-button.loading:hover {
524
+ transform: none;
525
+ background: rgba(0, 0, 0, 0.6);
526
+ border-color: rgba(255, 255, 255, 0.1);
527
+ }
528
+
529
+ .button-spinner {
530
+ width: 16px;
531
+ height: 16px;
532
+ border: 2px solid rgba(255, 255, 255, 0.3);
533
+ border-top: 2px solid #ffffff;
534
+ border-radius: 50%;
535
+ animation: spin 1s linear infinite;
536
+ }
537
+
538
+ @keyframes spin {
539
+ 0% { transform: rotate(0deg); }
540
+ 100% { transform: rotate(360deg); }
541
+ }
542
+
522
543
  /* Camera selector dropdown */
523
544
  .camera-selector-dropdown {
524
545
  position: absolute;
525
546
  top: 56px;
526
547
  right: 16px;
527
548
  z-index: 30;
528
- background: rgba(0, 0, 0, 0.85);
549
+ background: rgba(0, 0, 0, 0.25);
529
550
  backdrop-filter: blur(20px);
530
551
  border-radius: 12px;
531
552
  min-width: 260px;
@@ -551,7 +572,7 @@ video {
551
572
  display: flex;
552
573
  justify-content: space-between;
553
574
  align-items: center;
554
- padding: 12px 16px;
575
+ padding: 8px 12px;
555
576
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
556
577
  }
557
578
 
@@ -590,7 +611,7 @@ video {
590
611
 
591
612
  .camera-option {
592
613
  width: 100%;
593
- padding: 10px 16px;
614
+ padding: 8px 12px;
594
615
  border: none;
595
616
  background: none;
596
617
  text-align: left;
@@ -628,7 +649,7 @@ video {
628
649
  }
629
650
 
630
651
  .device-info {
631
- padding: 8px 16px;
652
+ padding: 6px 12px;
632
653
  border-top: 1px solid rgba(255, 255, 255, 0.1);
633
654
  background: rgba(255, 255, 255, 0.05);
634
655
  }
@@ -663,15 +684,15 @@ video {
663
684
  }
664
685
 
665
686
  .camera-selector-header {
666
- padding: 10px 14px;
687
+ padding: 6px 10px;
667
688
  }
668
689
 
669
690
  .camera-option {
670
- padding: 8px 14px;
691
+ padding: 6px 10px;
671
692
  }
672
693
 
673
694
  .device-info {
674
- padding: 6px 14px;
695
+ padding: 4px 10px;
675
696
  }
676
697
  }
677
698
 
@@ -696,67 +717,48 @@ video {
696
717
  position: absolute;
697
718
  top: 16px;
698
719
  left: 16px;
699
- right: 16px;
700
- background: rgba(26, 26, 26, 0.95);
701
- backdrop-filter: blur(8px);
720
+ background: rgba(0, 0, 0, 0.25);
721
+ backdrop-filter: blur(20px);
722
+ border-radius: 12px;
723
+ border: 1px solid rgba(255, 255, 255, 0.1);
702
724
  display: flex;
703
725
  align-items: center;
704
- gap: 12px;
705
- padding: 12px 16px;
706
- border-radius: 12px;
726
+ gap: 6px;
727
+ padding: 6px 10px;
707
728
  z-index: 40;
708
- transition: all 0.3s ease;
709
- min-height: 48px;
710
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
711
- }
712
-
713
- /* Estados específicos */
714
- .component-status.status-initializing {
715
- background: rgba(26, 26, 26, 0.95);
716
- }
717
-
718
- .component-status.status-loading {
719
- background: rgba(26, 26, 26, 0.95);
720
- }
721
-
722
- .component-status.status-ready {
723
- background: rgba(26, 26, 26, 0.95);
729
+ height: 32px;
730
+ width: fit-content;
731
+ animation: slideInFromTop 0.3s ease-out;
724
732
  }
725
733
 
726
- .component-status.status-error {
727
- background: rgba(26, 26, 26, 0.95);
728
- }
729
734
 
730
735
  .status-spinner {
731
- width: 24px;
732
- height: 24px;
733
- border: 2px solid rgba(255, 255, 255, 0.2);
734
- border-top: 2px solid #ffffff;
736
+ width: 16px;
737
+ height: 16px;
738
+ border: 1px solid rgba(255, 255, 255, 0.3);
739
+ border-top: 1px solid #ffffff;
735
740
  border-radius: 50%;
736
- animation: statusSpin 1.2s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite;
741
+ animation: statusSpin 1s linear infinite;
737
742
  flex-shrink: 0;
738
743
  }
739
744
 
740
745
  .status-content {
741
746
  display: flex;
742
747
  flex-direction: column;
743
- gap: 2px;
748
+ gap: 1px;
744
749
  }
745
750
 
746
751
  .status-message {
747
- color: #e6edf3;
748
- font-size: 14px;
749
- font-weight: 600;
750
- opacity: 0.95;
751
- letter-spacing: 0.3px;
752
+ color: #ffffff;
753
+ font-size: 12px;
754
+ font-weight: 500;
752
755
  margin: 0;
753
756
  }
754
757
 
755
758
  .status-description {
756
- color: #8b949e;
757
- font-size: 12px;
758
- line-height: 1.3;
759
- opacity: 0.9;
759
+ color: rgba(255, 255, 255, 0.7);
760
+ font-size: 10px;
761
+ line-height: 1.2;
760
762
  margin: 0;
761
763
  }
762
764
 
@@ -774,23 +776,23 @@ video {
774
776
  .component-status {
775
777
  top: 12px;
776
778
  left: 12px;
777
- right: 12px;
778
- padding: 10px 14px;
779
- gap: 10px;
780
- min-height: 44px;
779
+ padding: 4px 8px;
780
+ gap: 4px;
781
+ height: 28px;
782
+ border-radius: 8px;
781
783
  }
782
784
 
783
785
  .status-spinner {
784
- width: 20px;
785
- height: 20px;
786
+ width: 14px;
787
+ height: 14px;
786
788
  }
787
789
 
788
790
  .status-message {
789
- font-size: 13px;
791
+ font-size: 11px;
790
792
  }
791
793
 
792
794
  .status-description {
793
- font-size: 11px;
795
+ font-size: 9px;
794
796
  }
795
797
  }
796
798
 
@@ -846,3 +848,134 @@ video {
846
848
  }
847
849
  }
848
850
 
851
+ /* Monitor de Performance - Diseño compacto y minimalista */
852
+ .performance-monitor {
853
+ position: absolute;
854
+ top: 70px;
855
+ left: 16px;
856
+ background: rgba(0, 0, 0, 0.25);
857
+ backdrop-filter: blur(20px);
858
+ border-radius: 12px;
859
+ border: 1px solid rgba(255, 255, 255, 0.1);
860
+ z-index: 35;
861
+ width: fit-content;
862
+ animation: slideInFromLeft 0.3s ease-out;
863
+ transition: all 0.3s ease;
864
+ }
865
+
866
+ @keyframes slideInFromLeft {
867
+ 0% {
868
+ opacity: 0;
869
+ transform: translateX(-20px) scale(0.95);
870
+ }
871
+ 100% {
872
+ opacity: 1;
873
+ transform: translateX(0) scale(1);
874
+ }
875
+ }
876
+
877
+
878
+ .performance-expanded {
879
+ padding: 6px 10px;
880
+ }
881
+
882
+ .metrics-row {
883
+ display: flex;
884
+ gap: 8px;
885
+ margin-bottom: 4px;
886
+ }
887
+
888
+ .metrics-row:last-child {
889
+ margin-bottom: 0;
890
+ }
891
+
892
+ .metric-compact {
893
+ display: flex;
894
+ flex-direction: column;
895
+ align-items: center;
896
+ gap: 2px;
897
+ min-width: 50px;
898
+ }
899
+
900
+ .metric-label {
901
+ font-size: 9px;
902
+ color: rgba(255, 255, 255, 0.6);
903
+ font-weight: 500;
904
+ text-transform: uppercase;
905
+ letter-spacing: 0.3px;
906
+ }
907
+
908
+ .metric-value {
909
+ font-size: 10px;
910
+ font-weight: 600;
911
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
912
+ padding: 2px 4px;
913
+ border-radius: 3px;
914
+ text-align: center;
915
+ white-space: nowrap;
916
+ }
917
+
918
+ .metric-value.good {
919
+ color: #4ade80;
920
+ background: rgba(74, 222, 128, 0.1);
921
+ border: 1px solid rgba(74, 222, 128, 0.2);
922
+ }
923
+
924
+ .metric-value.warning {
925
+ color: #fbbf24;
926
+ background: rgba(251, 191, 36, 0.1);
927
+ border: 1px solid rgba(251, 191, 36, 0.2);
928
+ }
929
+
930
+ .metric-value.danger {
931
+ color: #f87171;
932
+ background: rgba(248, 113, 113, 0.1);
933
+ border: 1px solid rgba(248, 113, 113, 0.2);
934
+ }
935
+
936
+ /* Responsive para monitor de performance */
937
+ @media (max-width: 480px) {
938
+ .performance-monitor {
939
+ top: 60px;
940
+ left: 12px;
941
+ width: fit-content;
942
+ }
943
+
944
+ .performance-expanded {
945
+ padding: 4px 8px;
946
+ }
947
+
948
+ .metrics-row {
949
+ gap: 6px;
950
+ margin-bottom: 3px;
951
+ }
952
+
953
+ .metric-compact {
954
+ min-width: 45px;
955
+ gap: 1px;
956
+ }
957
+
958
+ .metric-label {
959
+ font-size: 8px;
960
+ }
961
+
962
+ .metric-value {
963
+ font-size: 9px;
964
+ padding: 1px 3px;
965
+ }
966
+ }
967
+
968
+ /* Animación pulsante para valores críticos */
969
+ @keyframes pulse {
970
+ 0%, 100% {
971
+ opacity: 1;
972
+ }
973
+ 50% {
974
+ opacity: 0.7;
975
+ }
976
+ }
977
+
978
+ .metric-value.danger {
979
+ animation: pulse 2s infinite;
980
+ }
981
+