@jaak.ai/stamps 2.5.6 → 2.5.7-dev.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.
- package/dist/cjs/{index-D6NBn_qu.js → index-BcFBOmM6.js} +30 -4
- package/dist/cjs/index-BcFBOmM6.js.map +1 -0
- package/dist/cjs/jaak-stamps-webcomponent.cjs.js +2 -2
- package/dist/cjs/jaak-stamps.cjs.entry.js +124 -40
- package/dist/cjs/jaak-stamps.cjs.entry.js.map +1 -1
- package/dist/cjs/jaak-stamps.entry.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/{my-component/my-component.js → jaak-stamps/jaak-stamps.js} +88 -34
- package/dist/collection/components/jaak-stamps/jaak-stamps.js.map +1 -0
- package/dist/collection/components/jaak-stamps/watermark-fallback.js.map +1 -0
- package/dist/collection/services/DetectionService.js +41 -6
- package/dist/collection/services/DetectionService.js.map +1 -1
- package/dist/components/index.js +20 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/jaak-stamps.js +126 -39
- package/dist/components/jaak-stamps.js.map +1 -1
- package/dist/esm/{index-BCfAsrzL.js → index-Cb0ILUvS.js} +30 -4
- package/dist/esm/index-Cb0ILUvS.js.map +1 -0
- package/dist/esm/jaak-stamps-webcomponent.js +3 -3
- package/dist/esm/jaak-stamps.entry.js +124 -40
- package/dist/esm/jaak-stamps.entry.js.map +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/jaak-stamps-webcomponent/jaak-stamps-webcomponent.esm.js +1 -1
- package/dist/jaak-stamps-webcomponent/jaak-stamps.entry.esm.js.map +1 -1
- package/dist/jaak-stamps-webcomponent/{p-5724f34b.entry.js → p-268577ba.entry.js} +3 -3
- package/dist/jaak-stamps-webcomponent/p-268577ba.entry.js.map +1 -0
- package/dist/jaak-stamps-webcomponent/p-Cb0ILUvS.js +3 -0
- package/dist/jaak-stamps-webcomponent/p-Cb0ILUvS.js.map +1 -0
- package/dist/types/components/{my-component/my-component.d.ts → jaak-stamps/jaak-stamps.d.ts} +5 -0
- package/dist/types/services/DetectionService.d.ts +5 -0
- package/package.json +4 -4
- package/dist/cjs/index-D6NBn_qu.js.map +0 -1
- package/dist/collection/components/my-component/my-component.js.map +0 -1
- package/dist/collection/components/my-component/watermark-fallback.js.map +0 -1
- package/dist/collection/utils/utils.js +0 -4
- package/dist/collection/utils/utils.js.map +0 -1
- package/dist/esm/index-BCfAsrzL.js.map +0 -1
- package/dist/jaak-stamps-webcomponent/p-5724f34b.entry.js.map +0 -1
- package/dist/jaak-stamps-webcomponent/p-BCfAsrzL.js +0 -3
- package/dist/jaak-stamps-webcomponent/p-BCfAsrzL.js.map +0 -1
- package/dist/types/utils/utils.d.ts +0 -1
- /package/dist/collection/components/{my-component/my-component.css → jaak-stamps/jaak-stamps.css} +0 -0
- /package/dist/collection/components/{my-component → jaak-stamps}/watermark-fallback.js +0 -0
- /package/dist/types/components/{my-component → jaak-stamps}/watermark-fallback.d.ts +0 -0
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-BcFBOmM6.js');
|
|
4
4
|
var appGlobals = require('./app-globals-V2Kpy_OQ.js');
|
|
5
5
|
|
|
6
6
|
const defineCustomElements = async (win, options) => {
|
|
7
7
|
if (typeof window === 'undefined') return undefined;
|
|
8
8
|
await appGlobals.globalScripts();
|
|
9
|
-
return index.bootstrapLazy([["jaak-stamps.cjs",[[257,"jaak-stamps",{"debug":[4],"alignmentTolerance":[2,"alignment-tolerance"],"maskSize":[2,"mask-size"],"cropMargin":[2,"crop-margin"],"useDocumentClassification":[4,"use-document-classification"],"useDocumentDetector":[4,"use-document-detector"],"preferredCamera":[1,"preferred-camera"],"captureDelay":[2,"capture-delay"],"enableBackDocumentTimer":[4,"enable-back-document-timer"],"backDocumentTimerDuration":[2,"back-document-timer-duration"],"telemetryCollectorUrl":[1,"telemetry-collector-url"],"metricsCollectorUrl":[1,"metrics-collector-url"],"enableTelemetry":[4,"enable-telemetry"],"enableMetrics":[4,"enable-metrics"],"customerId":[1,"customer-id"],"tenantId":[1,"tenant-id"],"environment":[1],"propagateTraceHeaderCorsUrls":[1,"propagate-trace-header-cors-urls"],"metricsExportIntervalMillis":[2,"metrics-export-interval-millis"],"license":[1],"licenseEnvironment":[1,"license-environment"],"traceId":[1,"trace-id"],"appId":[1,"app-id"],"detectionBoxes":[32],"sideAlignment":[32],"isMaskReady":[32],"shouldMirrorVideo":[32],"showCameraSelector":[32],"isSwitchingCamera":[32],"hasDocumentDetected":[32],"cameraInfoWithAutofocus":[32],"currentStatus":[32],"performanceData":[32],"backDocumentTimerRemaining":[32],"showManualCaptureButton":[32],"performanceDegradedMode":[32],"showPerformanceMessage":[32],"captureStateVersion":[32],"processingButton":[32],"licenseValid":[32],"licenseError":[32],"classificationDisabled":[32],"getCapturedImages":[64],"isProcessCompleted":[64],"startCapture":[64],"stopCapture":[64],"resetCapture":[64],"skipBackCapture":[64],"getStatus":[64],"preloadModel":[64],"getCameraInfo":[64],"setPreferredCamera":[64],"setCaptureDelay":[64],"getCaptureDelay":[64]}]]]], options);
|
|
9
|
+
return index.bootstrapLazy([["jaak-stamps.cjs",[[257,"jaak-stamps",{"debug":[4],"alignmentTolerance":[2,"alignment-tolerance"],"maskSize":[2,"mask-size"],"cropMargin":[2,"crop-margin"],"useDocumentClassification":[4,"use-document-classification"],"useDocumentDetector":[4,"use-document-detector"],"preferredCamera":[1,"preferred-camera"],"captureDelay":[2,"capture-delay"],"enableBackDocumentTimer":[4,"enable-back-document-timer"],"backDocumentTimerDuration":[2,"back-document-timer-duration"],"telemetryCollectorUrl":[1,"telemetry-collector-url"],"metricsCollectorUrl":[1,"metrics-collector-url"],"enableTelemetry":[4,"enable-telemetry"],"enableMetrics":[4,"enable-metrics"],"customerId":[1,"customer-id"],"tenantId":[1,"tenant-id"],"environment":[1],"propagateTraceHeaderCorsUrls":[1,"propagate-trace-header-cors-urls"],"metricsExportIntervalMillis":[2,"metrics-export-interval-millis"],"license":[1],"licenseEnvironment":[1,"license-environment"],"traceId":[1,"trace-id"],"appId":[1,"app-id"],"detectionBoxes":[32],"sideAlignment":[32],"isMaskReady":[32],"shouldMirrorVideo":[32],"showCameraSelector":[32],"isSwitchingCamera":[32],"hasDocumentDetected":[32],"cameraInfoWithAutofocus":[32],"currentStatus":[32],"performanceData":[32],"backDocumentTimerRemaining":[32],"showManualCaptureButton":[32],"performanceDegradedMode":[32],"showPerformanceMessage":[32],"captureStateVersion":[32],"processingButton":[32],"licenseValid":[32],"licenseError":[32],"classificationDisabled":[32],"getCapturedImages":[64],"isProcessCompleted":[64],"startCapture":[64],"stopCapture":[64],"resetCapture":[64],"skipBackCapture":[64],"getStatus":[64],"preloadModel":[64],"getCameraInfo":[64],"setPreferredCamera":[64],"setCaptureDelay":[64],"getCaptureDelay":[64]},null,{"license":["onLicenseChanged"],"licenseEnvironment":["onLicenseEnvironmentChanged"]}]]]], options);
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
exports.setNonce = index.setNonce;
|
package/dist/collection/components/{my-component/my-component.js → jaak-stamps/jaak-stamps.js}
RENAMED
|
@@ -24,7 +24,7 @@ export class JaakStamps {
|
|
|
24
24
|
propagateTraceHeaderCorsUrls; // Comma-separated URLs or regex patterns
|
|
25
25
|
metricsExportIntervalMillis = 60000; // Export metrics every 60 seconds
|
|
26
26
|
license; // License key for validation
|
|
27
|
-
licenseEnvironment = 'prod';
|
|
27
|
+
licenseEnvironment = 'prod';
|
|
28
28
|
traceId; // Optional trace ID for tracking
|
|
29
29
|
appId = 'jaak-stamps-web'; // Application ID for license validation
|
|
30
30
|
captureCompleted;
|
|
@@ -72,6 +72,8 @@ export class JaakStamps {
|
|
|
72
72
|
licenseValid = true; // License validation status
|
|
73
73
|
licenseError = null; // License validation error message
|
|
74
74
|
classificationDisabled = false; // Classification disabled at runtime due to errors
|
|
75
|
+
_initialized = false;
|
|
76
|
+
_initializing = false;
|
|
75
77
|
// Services
|
|
76
78
|
licenseValidationService = null;
|
|
77
79
|
serviceContainer;
|
|
@@ -141,8 +143,10 @@ export class JaakStamps {
|
|
|
141
143
|
canvasPool = [];
|
|
142
144
|
MAX_CANVAS_POOL_SIZE = 3;
|
|
143
145
|
async componentWillLoad() {
|
|
146
|
+
// Yield one microtask so attributes set synchronously after innerHTML are reflected as props
|
|
147
|
+
await Promise.resolve();
|
|
144
148
|
if (this.debug) {
|
|
145
|
-
console.log('[JAAK-DEBUG] componentWillLoad() - Props
|
|
149
|
+
console.log('[JAAK-DEBUG] componentWillLoad() - Props after microtask yield:');
|
|
146
150
|
console.log('[JAAK-DEBUG] useDocumentDetector:', this.useDocumentDetector, '(type:', typeof this.useDocumentDetector, ')');
|
|
147
151
|
console.log('[JAAK-DEBUG] useDocumentClassification:', this.useDocumentClassification);
|
|
148
152
|
console.log('[JAAK-DEBUG] debug:', this.debug);
|
|
@@ -154,32 +158,64 @@ export class JaakStamps {
|
|
|
154
158
|
console.log('[JAAK-DEBUG] preferredCamera:', this.preferredCamera);
|
|
155
159
|
console.log('[JAAK-DEBUG] appId:', this.appId);
|
|
156
160
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
console.log('[JAAK-DEBUG] useDocumentDetector:', this.useDocumentDetector, '(type:', typeof this.useDocumentDetector, ')');
|
|
161
|
+
if (!this.license) {
|
|
162
|
+
// No license yet — show blocking UI; @Watch('license') triggers init when it arrives
|
|
163
|
+
this.licenseValid = false;
|
|
164
|
+
this.licenseError = 'Se requiere una licencia para continuar. Por favor, proporcione una licencia usando el atributo "license".';
|
|
165
|
+
this.updateStatus('Licencia requerida', 'Proporcione una licencia para continuar', 'error');
|
|
163
166
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
else {
|
|
168
|
+
// License present — pre-set the first status synchronously so the initial render
|
|
169
|
+
// already shows it, preventing a state change inside componentDidLoad that Stencil
|
|
170
|
+
// would flag as an extra re-render.
|
|
171
|
+
this.updateStatus('Validando licencia...', 'Verificando autorización de uso', 'initializing');
|
|
172
|
+
}
|
|
173
|
+
// Heavy initialization is deferred to componentDidLoad so the first render is not blocked
|
|
174
|
+
}
|
|
175
|
+
async componentDidLoad() {
|
|
176
|
+
// License absent at mount time — @Watch('license') handles initialization when it arrives
|
|
177
|
+
if (!this.license || this._initialized || this._initializing) {
|
|
171
178
|
return;
|
|
172
179
|
}
|
|
173
|
-
|
|
174
|
-
|
|
180
|
+
await this.validateAndInitialize();
|
|
181
|
+
}
|
|
182
|
+
async onLicenseChanged(newLicense) {
|
|
183
|
+
if (!newLicense || this._initialized || this._initializing) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Set status synchronously before the async work so the UI updates immediately
|
|
187
|
+
this.updateStatus('Validando licencia...', 'Verificando autorización de uso', 'initializing');
|
|
188
|
+
await this.validateAndInitialize();
|
|
189
|
+
}
|
|
190
|
+
async onLicenseEnvironmentChanged() {
|
|
191
|
+
// Always recreate the service so the correct environment URL is used from now on.
|
|
192
|
+
this.licenseValidationService = new LicenseValidationService(this.licenseEnvironment);
|
|
193
|
+
// If a license is present but the component never finished initializing
|
|
194
|
+
// (e.g. first validate ran against the wrong env and failed, or license arrived
|
|
195
|
+
// before licenseEnvironment was set), retry the full init flow now.
|
|
196
|
+
if (this.license && !this._initialized && !this._initializing) {
|
|
197
|
+
this.updateStatus('Validando licencia...', 'Verificando autorización de uso', 'initializing');
|
|
198
|
+
await this.validateAndInitialize();
|
|
175
199
|
}
|
|
176
200
|
}
|
|
177
|
-
async
|
|
201
|
+
async validateAndInitialize() {
|
|
202
|
+
if (this._initialized || this._initializing) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this._initializing = true;
|
|
178
206
|
try {
|
|
179
|
-
//
|
|
207
|
+
// Status was already set synchronously by the caller (componentWillLoad or @Watch)
|
|
208
|
+
// to avoid a state change inside componentDidLoad that Stencil warns about.
|
|
209
|
+
await this.validateLicense();
|
|
180
210
|
if (!this.licenseValid) {
|
|
211
|
+
if (this.debug) {
|
|
212
|
+
console.error('[JAAK-DEBUG] License validation FAILED. Stopping initialization.');
|
|
213
|
+
}
|
|
181
214
|
return;
|
|
182
215
|
}
|
|
216
|
+
if (this.debug) {
|
|
217
|
+
console.log('[JAAK-DEBUG] License validation OK');
|
|
218
|
+
}
|
|
183
219
|
this.updateStatus('Preparando capturador...', 'Configurando herramientas de captura', 'initializing');
|
|
184
220
|
await this.initializeServices();
|
|
185
221
|
this.updateStatus('Preparando funciones...', 'Configurando herramientas de trabajo', 'initializing');
|
|
@@ -189,9 +225,14 @@ export class JaakStamps {
|
|
|
189
225
|
if (this.debug) {
|
|
190
226
|
this.initializePerformanceMonitor();
|
|
191
227
|
}
|
|
228
|
+
this._initialized = true;
|
|
192
229
|
}
|
|
193
230
|
catch (error) {
|
|
194
|
-
|
|
231
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
232
|
+
this.updateStatus('Error de inicialización', errorMessage, 'error');
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
this._initializing = false;
|
|
195
236
|
}
|
|
196
237
|
}
|
|
197
238
|
async initializeServices() {
|
|
@@ -241,14 +282,14 @@ export class JaakStamps {
|
|
|
241
282
|
}
|
|
242
283
|
async validateLicense() {
|
|
243
284
|
if (!this.license) {
|
|
244
|
-
console.error('❌ No license provided for JAAK Stamps component');
|
|
245
285
|
this.licenseError = 'Este componente requiere una licencia válida. Por favor, proporcione una licencia usando el atributo "license".';
|
|
246
286
|
this.licenseValid = false;
|
|
247
287
|
this.updateStatus('Error de licencia', 'Licencia no proporcionada', 'error');
|
|
248
288
|
return;
|
|
249
289
|
}
|
|
250
290
|
try {
|
|
251
|
-
|
|
291
|
+
if (this.debug)
|
|
292
|
+
console.log('[jaak-stamps] validating license...');
|
|
252
293
|
// Initialize license validation service
|
|
253
294
|
this.licenseValidationService = new LicenseValidationService(this.licenseEnvironment);
|
|
254
295
|
// Validate the license, passing traceId and appId if provided
|
|
@@ -256,18 +297,21 @@ export class JaakStamps {
|
|
|
256
297
|
if (response && response.access_token) {
|
|
257
298
|
this.licenseValid = true;
|
|
258
299
|
this.licenseError = null;
|
|
259
|
-
|
|
300
|
+
if (this.debug)
|
|
301
|
+
console.log('[jaak-stamps] license validated successfully');
|
|
260
302
|
// Emit the traceId (either provided or generated)
|
|
261
303
|
if (response.traceId) {
|
|
262
304
|
this.traceIdGenerated.emit({ traceId: response.traceId });
|
|
263
|
-
|
|
305
|
+
if (this.debug)
|
|
306
|
+
console.log('[jaak-stamps] traceId:', response.traceId);
|
|
264
307
|
}
|
|
265
308
|
}
|
|
266
309
|
else {
|
|
267
310
|
this.licenseValid = false;
|
|
268
311
|
this.licenseError = 'La licencia proporcionada no es válida. Por favor, verifique su licencia e intente nuevamente.';
|
|
269
312
|
this.updateStatus('Error de licencia', 'Licencia inválida', 'error');
|
|
270
|
-
|
|
313
|
+
if (this.debug)
|
|
314
|
+
console.error('[jaak-stamps] invalid license');
|
|
271
315
|
}
|
|
272
316
|
}
|
|
273
317
|
catch (error) {
|
|
@@ -275,7 +319,8 @@ export class JaakStamps {
|
|
|
275
319
|
const licenseError = error;
|
|
276
320
|
this.licenseError = licenseError.error_description || 'Error al validar la licencia. Por favor, verifique su conexión e intente nuevamente.';
|
|
277
321
|
this.updateStatus('Error de licencia', 'Fallo en la validación', 'error');
|
|
278
|
-
|
|
322
|
+
if (this.debug)
|
|
323
|
+
console.error('[jaak-stamps] license validation failed:', error);
|
|
279
324
|
}
|
|
280
325
|
}
|
|
281
326
|
async setupEventListeners() {
|
|
@@ -1562,7 +1607,7 @@ export class JaakStamps {
|
|
|
1562
1607
|
isCapturing: false
|
|
1563
1608
|
};
|
|
1564
1609
|
const cameraInfo = this.cameraInfoWithAutofocus;
|
|
1565
|
-
return (h("div", { key: '
|
|
1610
|
+
return (h("div", { key: '831ee76dee1c7f852e4c3d1d6c5ccc31f5b2633f', class: "detector-container" }, !this.licenseValid && this.licenseError && (h("div", { key: '65244e91e43e6bb589c56c4e33ccb4841a6049dc', class: "license-error-container" }, h("div", { key: '0c7e0c47c2d2186183f935969d15b6ec4e285475', class: "license-error-card" }, h("svg", { key: '45a1eebecf7c36ef63ea88697265a3579fbc1c5a', class: "license-error-icon", width: "64", height: "64", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '24f1d5a4ae9627336c4a0a8293df137f20b21161', d: "M12 22C12 22 20 18 20 12V5L12 2L4 5V12C4 18 12 22 12 22Z", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }), h("path", { key: '3717c8724487846702c58ba895384e6f8d19f638', d: "M12 8V12", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }), h("circle", { key: '82b0527d2241b370f842d66fa6d2f3e06042568e', cx: "12", cy: "16", r: "0.5", fill: "currentColor", stroke: "currentColor", "stroke-width": "1" })), h("h2", { key: '2ff63e9ca1f37e68a4516f79d609c0111d6bc7b1', class: "license-error-title" }, "Licencia Requerida"), h("p", { key: '151ac9130f685016f9d3568474ce2dda955509dc', class: "license-error-message" }, this.licenseError), h("p", { key: '022fd22a1b627442e8161971b86173ab9f134ba0', class: "license-error-help" }, "Contacte a soporte: ", h("a", { key: '4a4fd93259895d8909d888f64d55cc88b6b85f8f', href: "mailto:support@jaak.ai" }, "support@jaak.ai")), h("div", { key: '6fb9b5e305d83ec1bc2296accd0d60b1f3c832ca', class: "license-error-footer" }, "JAAK Stamps")))), this.licenseValid && (h("div", { key: 'd81a43d70a7277fc9ff13b6906c851d8b69a2f01', class: "video-container" }, h("video", { key: 'dcb6c1224c91d9eae41f3ebcdf65516cec5dfcb7', ref: el => this.videoRef = el, autoplay: true, muted: true, playsinline: true, class: this.shouldMirrorVideo ? 'mirror' : '', style: {
|
|
1566
1611
|
// Keep the element rendered (display: block) so the browser
|
|
1567
1612
|
// loads stream metadata and fires 'loadedmetadata'. Hiding it
|
|
1568
1613
|
// with display:none prevents metadata loading in Chrome and
|
|
@@ -1571,7 +1616,7 @@ export class JaakStamps {
|
|
|
1571
1616
|
// render context alive.
|
|
1572
1617
|
opacity: captureState.isVideoActive ? '1' : '0',
|
|
1573
1618
|
visibility: captureState.isVideoActive ? 'visible' : 'hidden',
|
|
1574
|
-
} }), h("div", { key: '
|
|
1619
|
+
} }), h("div", { key: '0535a299fe2e94e991d76c494c2067eca1617c58', ref: el => this.detectionContainer = el, class: `detection-overlay ${this.shouldMirrorVideo ? 'mirror' : ''}` }, this.debug && this.detectionBoxes.map((box, index) => (h("div", { key: index, class: "detection-box", style: {
|
|
1575
1620
|
position: 'absolute',
|
|
1576
1621
|
left: `${box.x}px`,
|
|
1577
1622
|
top: `${box.y}px`,
|
|
@@ -1580,9 +1625,9 @@ export class JaakStamps {
|
|
|
1580
1625
|
border: '2px solid #32406C',
|
|
1581
1626
|
pointerEvents: 'none',
|
|
1582
1627
|
boxSizing: 'border-box'
|
|
1583
|
-
} })))), this.isMaskReady && (h("div", { key: '
|
|
1628
|
+
} })))), this.isMaskReady && (h("div", { key: '625041af12b0ea65deb22ffbf7161fda8fd23bd2', class: "overlay-mask" }, h("div", { key: '37f6df4fb029c14ca81ccdb7a7fedb30a2c2832e', class: "card-outline" }, h("div", { key: '91a5fee25260fc2304f6b79c8bcd6b74688562d4', class: "side side-top" }), h("div", { key: '7c62e4cb1120495b985b1d4d8482bbf0ffe86745', class: "side side-right" }), h("div", { key: '4536e2835e2a3fd572bbec5076d45f854d262e32', class: "side side-bottom" }), h("div", { key: '150d7800a958dcd9e7bbd52a5725c240badc0fe5', class: "side side-left" })), !captureState.showFlipAnimation && !captureState.showSuccessAnimation && (h("div", { key: 'a266cbc2fd63215b863b55a291f36ff464453c9b', class: `guide-text ${this.showPerformanceMessage ? 'performance-warning-text' : ''}` }, this.getGuideText(captureState.step))), captureState.step === 'back' && !captureState.showFlipAnimation && !captureState.showSuccessAnimation && (h("div", { key: 'b7f7de8ecccd6a7929569184b724ae4b6ab55c34', class: "back-capture-section" }, h("div", { key: '3ac3ffcd9ae3a8b841b4f56cc3567da68a92ed4e', class: "back-capture-buttons" }, (!this.useDocumentDetector || this.performanceDegradedMode || this.showManualCaptureButton) && (h("button", { key: 'ad1dcfed7e27036f188e5ddce9ada28b15d24aad', class: "capture-button primary-button", onClick: () => this.takeManualScreenshot(), type: "button", disabled: this.processingButton !== null }, this.processingButton === 'capture-back' && (h("span", { key: '06d97ebbaf4f57e0c090a98732b1227fb6f6f8b2', class: "button-spinner" })), "Capturar Reverso")), h("button", { key: 'c018d29db7bb2369744ca8ad5aa87bff2c6d15dd', class: "skip-button", onClick: () => this.skipBackCapture(), type: "button", disabled: this.processingButton !== null }, this.processingButton === 'skip-back' && (h("span", { key: 'faf0c7995f2cecaf5d4df8ff6d3bb92364e36806', class: "button-spinner" })), this.enableBackDocumentTimer && this.backDocumentTimerRemaining > 0
|
|
1584
1629
|
? `Saltar reverso (${this.backDocumentTimerRemaining}s)`
|
|
1585
|
-
: 'Saltar reverso')))), captureState.isVideoActive && (h("div", { key: '
|
|
1630
|
+
: 'Saltar reverso')))), captureState.isVideoActive && (h("div", { key: '7000fa21f319e3c1fd2290710a60a4e4bd44d25b', class: "camera-controls" }, h("button", { key: '643aef1a72365b8b2d6e340fff4c837dba96a3fb', class: `camera-selector-button ${this.isSwitchingCamera ? 'loading' : ''}`, onClick: () => this.toggleCameraSelector(), type: "button", title: "Seleccionar c\u00E1mara", disabled: this.isSwitchingCamera }, this.isSwitchingCamera ? (h("div", { class: "button-spinner" })) : ('Cámaras')))), this.showCameraSelector && cameraInfo.availableCameras.length > 0 && (h("div", { key: '76e6765fc5264de81eeeab184d23c3ba23cd0976', class: "camera-selector-dropdown" }, h("div", { key: '0a9eb0ffc9a2a8ec5a632e0dc1e367a4f89c0499', class: "camera-selector-header" }, h("span", { key: 'ad09fc0efb7cda425853a156d310da57ddfa1906' }, "Seleccionar C\u00E1mara"), h("button", { key: '2ebaff48a49b56e6b65cd93c96048e3050ad92a4', class: "close-selector", onClick: () => this.toggleCameraSelector(), type: "button" }, "\u00D7")), h("div", { key: 'fbb80070332766d85f9a91856d90251928490a5f', class: "camera-list" }, cameraInfo.availableCameras.map((camera) => (h("button", { key: camera.id, class: `camera-option ${cameraInfo.selectedCameraId === camera.id ? 'selected' : ''}`, onClick: () => this.handleCameraSwitch(camera.id), type: "button" }, h("span", { class: "camera-label" }, camera.label || `Cámara ${cameraInfo.availableCameras.indexOf(camera) + 1}`, camera.hasAutofocus && (h("span", { class: "autofocus-icon", title: "Autofoco disponible" }, "\u29BF"))), cameraInfo.selectedCameraId === camera.id && (h("span", { class: "selected-indicator" }, "\u2713")))))), h("div", { key: '8ce8fbefe3cacf05f34f216de2b9539fd0f4c405', class: "device-info" }, h("small", { key: 'dec43734808a18f5a0b2c6dc8555b62d5bc4eafa' }, "Dispositivo: ", cameraInfo.deviceType)))), this.showManualCaptureButton && captureState.step === 'front' && !captureState.showFlipAnimation && !captureState.showSuccessAnimation && (h("div", { key: '3560ead8bf670c71c94457689cc7280127e6bb26', class: "manual-capture-section" }, h("button", { key: 'bb642fddb0bdd3014b600869f0c9fb892f40454c', class: "manual-capture-button", onClick: () => this.takeManualScreenshot(), type: "button", disabled: this.processingButton !== null }, this.processingButton === 'capture-front' && (h("span", { key: '2bcfd2b481e43684bf38584598747e68277ab18a', class: "button-spinner" })), "Capturar Frente"))))), captureState.isCapturing && (h("div", { key: '7c6ac830d622ff91de6f03273b11bdebf64b335e', class: "capture-animation" })), captureState.showFlipAnimation && (h("div", { key: '8a6b470eaafc34aadc6192553e38ccadf5755272', class: "flip-animation" }, h("div", { key: '965bc9d8858447eb44cc860df814fa54fc7ab697', class: "id-card-icon" }), h("div", { key: '2a4ff10eb928f88501e25112597efc345a6c587a', class: "flip-text" }, "\u00A1Voltea tu identificaci\u00F3n!"))), captureState.showSuccessAnimation && (h("div", { key: 'a599c61bb9dd4b910abdb1a5cb271484184a1ecd', class: "success-animation" }, h("div", { key: 'ce0d1f0f824e4ef2d3f24521246fde546bcb479a', class: "check-icon" }), h("div", { key: '752859c69c65130cd065f1fa6d15269ce7789035', class: "success-text" }, "\u00A1Proceso completado!"))), h("div", { key: '421768cd2d6aa9ab491861fb0cae305470b1456b', class: `component-status status-${this.currentStatus.type}` }, (this.currentStatus.type === 'loading' || this.currentStatus.type === 'initializing') && (h("div", { key: '81374800169c2b4e331cf8f876085c3420700423', class: "status-spinner" })), h("div", { key: 'f13c794c2c8c71bed1cae401f7e1104edfcad428', class: "status-content" }, h("div", { key: 'e662075d24c9400eb6e6b97e785f8453ea2c350b', class: "status-message" }, this.currentStatus.message), this.currentStatus.description && (h("div", { key: '42e03d32e3697b4095c190a670c04dd1a09d5f9d', class: "status-description" }, this.currentStatus.description)))), this.debug && (h("div", { key: 'cda6b3292ef939bbc1f0f0176ef55b8c8fc37929', class: "performance-monitor" }, h("div", { key: 'bc149a754f6e65f1870f2ce151f502694a2a8e52', class: "performance-expanded" }, h("div", { key: '30d7519b0ea3c72997363840dad433fbeef64569', class: "metrics-row" }, h("div", { key: 'da4101538afc21090ceb59f5d48ca4d48abc41e0', class: "metric-compact" }, h("span", { key: '8150ece409d7e62f61d79507d3a332042af5934a', class: "metric-label" }, "FPS"), h("span", { key: '0b07ac0de7f294f8d253e0c57931c52345918914', class: `metric-value ${this.performanceData.fps < 15 ? 'warning' : this.performanceData.fps < 10 ? 'danger' : 'good'}` }, this.performanceData.fps)), h("div", { key: '7242ad6791000c0d6cd86cfe5043c961f57ea754', class: "metric-compact" }, h("span", { key: '5499d7e3fac025933916b3efbd2b511128515ff8', class: "metric-label" }, "MEM"), h("span", { key: '885851d31aa1b639e8e2352b4c6813ee2b45b953', class: `metric-value ${this.performanceData.memoryUsage > 100 ? 'warning' : this.performanceData.memoryUsage > 200 ? 'danger' : 'good'}` }, this.performanceData.memoryUsage, "MB"))), h("div", { key: '14e3bda4caab1b182cb772e2da4cea4d3c342d00', class: "metrics-row" }, h("div", { key: 'be33011987e3cfa6b499fa618aba0575f6253992', class: "metric-compact" }, h("span", { key: '111dd593ba724adbd148a9bba5728db6f569b88d', class: "metric-label" }, "INF"), h("span", { key: '104680823cc990a0181a7a770c50ad43241856f8', class: `metric-value ${this.performanceData.inferenceTime > 100 ? 'warning' : this.performanceData.inferenceTime > 200 ? 'danger' : 'good'}` }, this.performanceData.inferenceTime, "ms")), h("div", { key: '006e6417a404a9296170bc1c20660716a9eca169', class: "metric-compact" }, h("span", { key: '2f5e7c8cfcd99e22b0c5399a05eb84816e6c3133', class: "metric-label" }, "FRAME"), h("span", { key: '3cedfc835bf282e513aef93e3e96a0154a62193b', class: `metric-value ${this.performanceData.frameProcessingTime > 50 ? 'warning' : this.performanceData.frameProcessingTime > 100 ? 'danger' : 'good'}` }, this.performanceData.frameProcessingTime, "ms"))), h("div", { key: '21ba720f1a3a4a5a900bf75602a0286a779b7cd0', class: "metrics-row" }, h("div", { key: 'b1bcdabe6feeee08068d70e280772a15f1ff9a1a', class: "metric-compact" }, h("span", { key: 'b9686f5946d878366b6b282a677b4e10eed7e3f3', class: "metric-label" }, "DET"), h("span", { key: 'fd6cf1adac9dd90936f64e6da93a9ea16bc060d1', class: "metric-value good" }, this.performanceData.successfulDetections, "/", this.performanceData.totalDetections)), h("div", { key: 'a4f796a8b19f3689f68a9213df7335b93d3947ad', class: "metric-compact" }, h("span", { key: 'abdec7d8b8cfc53cb635ba513d01e95e68ceb703', class: "metric-label" }, "RATE"), h("span", { key: '8fa1b3a30ad7dfcc77ee86c022e085b779a9ced7', class: `metric-value ${this.performanceData.detectionRate < 30 ? 'danger' : this.performanceData.detectionRate < 60 ? 'warning' : 'good'}` }, this.performanceData.detectionRate, "%")))))), h("div", { key: 'f9d1c4fd872a7d7bfd06b0b31ad557941de5067d', class: "watermark" }, h("img", { key: 'e9ea47bbc2eca4bde520198924e417e94f4e228f', src: "https://static.jaak.ai/commons/powered-by-jaak.png", alt: "Powered by Jaak", onError: (e) => {
|
|
1586
1631
|
const img = e.target;
|
|
1587
1632
|
img.onerror = null;
|
|
1588
1633
|
img.src = POWERED_BY_JAAK_FALLBACK;
|
|
@@ -2130,7 +2175,7 @@ export class JaakStamps {
|
|
|
2130
2175
|
await this.tracingService.flush();
|
|
2131
2176
|
}
|
|
2132
2177
|
catch (error) {
|
|
2133
|
-
console.error('[
|
|
2178
|
+
console.error('[jaak-stamps] Failed to flush traces:', error);
|
|
2134
2179
|
}
|
|
2135
2180
|
}
|
|
2136
2181
|
this.captureCompleted.emit(finalImages);
|
|
@@ -2406,12 +2451,12 @@ export class JaakStamps {
|
|
|
2406
2451
|
static get encapsulation() { return "shadow"; }
|
|
2407
2452
|
static get originalStyleUrls() {
|
|
2408
2453
|
return {
|
|
2409
|
-
"$": ["
|
|
2454
|
+
"$": ["jaak-stamps.css"]
|
|
2410
2455
|
};
|
|
2411
2456
|
}
|
|
2412
2457
|
static get styleUrls() {
|
|
2413
2458
|
return {
|
|
2414
|
-
"$": ["
|
|
2459
|
+
"$": ["jaak-stamps.css"]
|
|
2415
2460
|
};
|
|
2416
2461
|
}
|
|
2417
2462
|
static get assetsDirs() { return ["../../assets"]; }
|
|
@@ -3177,5 +3222,14 @@ export class JaakStamps {
|
|
|
3177
3222
|
};
|
|
3178
3223
|
}
|
|
3179
3224
|
static get elementRef() { return "el"; }
|
|
3225
|
+
static get watchers() {
|
|
3226
|
+
return [{
|
|
3227
|
+
"propName": "license",
|
|
3228
|
+
"methodName": "onLicenseChanged"
|
|
3229
|
+
}, {
|
|
3230
|
+
"propName": "licenseEnvironment",
|
|
3231
|
+
"methodName": "onLicenseEnvironmentChanged"
|
|
3232
|
+
}];
|
|
3233
|
+
}
|
|
3180
3234
|
}
|
|
3181
|
-
//# sourceMappingURL=
|
|
3235
|
+
//# sourceMappingURL=jaak-stamps.js.map
|