@smileid/usesmileid 12.0.0-beta01 → 12.0.1
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/CHANGELOG.md +15 -0
- package/README.md +701 -89
- package/dist/camera/camera_defaults.d.ts +14 -9
- package/dist/camera/camera_defaults.d.ts.map +1 -1
- package/dist/camera/camera_defaults.js +11 -9
- package/dist/camera/camera_defaults.js.map +1 -1
- package/dist/camera/orientation_degrees.d.ts +5 -6
- package/dist/camera/orientation_degrees.d.ts.map +1 -1
- package/dist/camera/orientation_degrees.js +5 -6
- package/dist/camera/orientation_degrees.js.map +1 -1
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts +11 -0
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts.map +1 -0
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js +17 -0
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js.map +1 -0
- package/dist/core/exception/capture_validation_exceptions.d.ts +1 -0
- package/dist/core/exception/capture_validation_exceptions.d.ts.map +1 -1
- package/dist/core/exception/capture_validation_exceptions.js +1 -0
- package/dist/core/exception/capture_validation_exceptions.js.map +1 -1
- package/dist/core/exception/index.d.ts +1 -0
- package/dist/core/exception/index.d.ts.map +1 -1
- package/dist/core/exception/index.js +1 -0
- package/dist/core/exception/index.js.map +1 -1
- package/dist/core/exception/use_smile_id_error_code.d.ts +1 -0
- package/dist/core/exception/use_smile_id_error_code.d.ts.map +1 -1
- package/dist/core/exception/use_smile_id_error_code.js +1 -0
- package/dist/core/exception/use_smile_id_error_code.js.map +1 -1
- package/dist/core/models/config.d.ts +19 -0
- package/dist/core/models/config.d.ts.map +1 -1
- package/dist/core/models/document_capture_mode.d.ts +8 -0
- package/dist/core/models/document_capture_mode.d.ts.map +1 -1
- package/dist/core/models/document_capture_mode.js +24 -0
- package/dist/core/models/document_capture_mode.js.map +1 -1
- package/dist/core/models/document_type.d.ts +2 -2
- package/dist/core/models/document_type.d.ts.map +1 -1
- package/dist/core/models/document_type.js +7 -5
- package/dist/core/models/document_type.js.map +1 -1
- package/dist/core/models/global_privacy_control.d.ts +36 -0
- package/dist/core/models/global_privacy_control.d.ts.map +1 -0
- package/dist/core/models/global_privacy_control.js +39 -0
- package/dist/core/models/global_privacy_control.js.map +1 -0
- package/dist/core/models/network_config.d.ts +2 -2
- package/dist/core/models/network_config.js +2 -2
- package/dist/core/models/result.d.ts +9 -8
- package/dist/core/models/result.d.ts.map +1 -1
- package/dist/core/models/result.js +5 -6
- package/dist/core/models/result.js.map +1 -1
- package/dist/data/api/interceptors/smile_auth_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_auth_interceptor.js +3 -17
- package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
- package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +11 -0
- package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_integrity_interceptor.js +13 -0
- package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +1 -1
- package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +8 -0
- package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_request_mac_interceptor.js +11 -0
- package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +1 -1
- package/dist/data/api/smile_id_api.d.ts +1 -1
- package/dist/data/api/smile_id_api.d.ts.map +1 -1
- package/dist/data/compression/compressible_asset.d.ts +41 -0
- package/dist/data/compression/compressible_asset.d.ts.map +1 -0
- package/dist/data/compression/compressible_asset.js +34 -0
- package/dist/data/compression/compressible_asset.js.map +1 -0
- package/dist/data/compression/payload_compression_config.d.ts +36 -0
- package/dist/data/compression/payload_compression_config.d.ts.map +1 -0
- package/dist/data/compression/payload_compression_config.js +52 -0
- package/dist/data/compression/payload_compression_config.js.map +1 -0
- package/dist/data/compression/payload_compression_runner.d.ts +29 -0
- package/dist/data/compression/payload_compression_runner.d.ts.map +1 -0
- package/dist/data/compression/payload_compression_runner.js +55 -0
- package/dist/data/compression/payload_compression_runner.js.map +1 -0
- package/dist/data/compression/payload_compressor.d.ts +40 -0
- package/dist/data/compression/payload_compressor.d.ts.map +1 -0
- package/dist/data/compression/payload_compressor.js +126 -0
- package/dist/data/compression/payload_compressor.js.map +1 -0
- package/dist/data/compression/uri_compressible_asset.d.ts +23 -0
- package/dist/data/compression/uri_compressible_asset.d.ts.map +1 -0
- package/dist/data/compression/uri_compressible_asset.js +77 -0
- package/dist/data/compression/uri_compressible_asset.js.map +1 -0
- package/dist/data/dsl/builder/cache_config_builder.d.ts +2 -1
- package/dist/data/dsl/builder/cache_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/cache_config_builder.js +2 -1
- package/dist/data/dsl/builder/cache_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/config_builder.d.ts +40 -14
- package/dist/data/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/config_builder.js +40 -14
- package/dist/data/dsl/builder/config_builder.js.map +1 -1
- package/dist/data/dsl/builder/interceptor_config_builder.d.ts +9 -7
- package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/interceptor_config_builder.js +9 -7
- package/dist/data/dsl/builder/interceptor_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.d.ts +19 -4
- package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.js +21 -6
- package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/timeout_config_builder.d.ts +4 -0
- package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/timeout_config_builder.js +4 -0
- package/dist/data/dsl/builder/timeout_config_builder.js.map +1 -1
- package/dist/data/dsl/use_smile_id_network_builder.d.ts +17 -0
- package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +1 -1
- package/dist/data/dsl/use_smile_id_network_builder.js +17 -0
- package/dist/data/dsl/use_smile_id_network_builder.js.map +1 -1
- package/dist/data/factory/networking_factory.d.ts.map +1 -1
- package/dist/data/factory/networking_factory.js +11 -1
- package/dist/data/factory/networking_factory.js.map +1 -1
- package/dist/data/repository/use_smile_id_repository_impl.d.ts +6 -0
- package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +1 -1
- package/dist/data/repository/use_smile_id_repository_impl.js +82 -8
- package/dist/data/repository/use_smile_id_repository_impl.js.map +1 -1
- package/dist/data/security/request_canonicalizer.d.ts.map +1 -1
- package/dist/data/security/request_canonicalizer.js +14 -2
- package/dist/data/security/request_canonicalizer.js.map +1 -1
- package/dist/data/security/security_policy.d.ts +43 -0
- package/dist/data/security/security_policy.d.ts.map +1 -0
- package/dist/data/security/security_policy.js +61 -0
- package/dist/data/security/security_policy.js.map +1 -0
- package/dist/data/smile_id_urls.d.ts +1 -1
- package/dist/data/smile_id_urls.js +1 -1
- package/dist/data/smile_id_urls.js.map +1 -1
- package/dist/data/util/retry_util.d.ts +2 -2
- package/dist/data/util/retry_util.d.ts.map +1 -1
- package/dist/data/util/retry_util.js +7 -1
- package/dist/data/util/retry_util.js.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.d.ts +22 -0
- package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.js +58 -24
- package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/l10n/strings_en.d.ts +2 -1
- package/dist/l10n/strings_en.d.ts.map +1 -1
- package/dist/l10n/strings_en.js +2 -1
- package/dist/l10n/strings_en.js.map +1 -1
- package/dist/l10n/use_smile_id_localizations.d.ts +1 -0
- package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
- package/dist/l10n/use_smile_id_localizations.js +3 -0
- package/dist/l10n/use_smile_id_localizations.js.map +1 -1
- package/dist/metadata/builder_configuration.d.ts +44 -0
- package/dist/metadata/builder_configuration.d.ts.map +1 -0
- package/dist/metadata/builder_configuration.js +35 -0
- package/dist/metadata/builder_configuration.js.map +1 -0
- package/dist/metadata/captured_image_properties.d.ts +11 -0
- package/dist/metadata/captured_image_properties.d.ts.map +1 -0
- package/dist/metadata/captured_image_properties.js +11 -0
- package/dist/metadata/captured_image_properties.js.map +1 -0
- package/dist/metadata/device_orientation_collector.d.ts +17 -0
- package/dist/metadata/device_orientation_collector.d.ts.map +1 -0
- package/dist/metadata/device_orientation_collector.js +66 -0
- package/dist/metadata/device_orientation_collector.js.map +1 -0
- package/dist/metadata/geolocation.d.ts +20 -0
- package/dist/metadata/geolocation.d.ts.map +1 -0
- package/dist/metadata/geolocation.js +40 -0
- package/dist/metadata/geolocation.js.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts +47 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.js +178 -0
- package/dist/metadata/metadata_configuration_mappers.js.map +1 -0
- package/dist/metadata/model_configuration.d.ts +41 -0
- package/dist/metadata/model_configuration.d.ts.map +1 -0
- package/dist/metadata/model_configuration.js +44 -0
- package/dist/metadata/model_configuration.js.map +1 -0
- package/dist/metadata/optional_native_modules.d.ts +79 -3
- package/dist/metadata/optional_native_modules.d.ts.map +1 -1
- package/dist/metadata/optional_native_modules.js +108 -3
- package/dist/metadata/optional_native_modules.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata.d.ts +45 -7
- package/dist/metadata/use_smile_id_metadata.d.ts.map +1 -1
- package/dist/metadata/use_smile_id_metadata.js +85 -13
- package/dist/metadata/use_smile_id_metadata.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.d.ts +37 -0
- package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.js +197 -16
- package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
- package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +14 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +1 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.js +14 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.js.map +1 -0
- package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +12 -4
- package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +1 -1
- package/dist/presentation/assets/svg/instruction_svg_strings.js +19 -8
- package/dist/presentation/assets/svg/instruction_svg_strings.js.map +1 -1
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -5
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +1 -1
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +0 -5
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +1 -1
- package/dist/presentation/components/icons/index.d.ts +24 -8
- package/dist/presentation/components/icons/index.d.ts.map +1 -1
- package/dist/presentation/components/icons/index.js +31 -11
- package/dist/presentation/components/icons/index.js.map +1 -1
- package/dist/presentation/components/use_smile_id_attribution.d.ts +1 -1
- package/dist/presentation/components/use_smile_id_button.d.ts +2 -2
- package/dist/presentation/components/use_smile_id_button.js +4 -4
- package/dist/presentation/components/use_smile_id_button.js.map +1 -1
- package/dist/presentation/components/use_smile_id_capture_content.d.ts +13 -0
- package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_capture_content.js +15 -9
- package/dist/presentation/components/use_smile_id_capture_content.js.map +1 -1
- package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +2 -3
- package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -3
- package/dist/presentation/components/use_smile_id_captured_document_image.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +12 -6
- package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_document_capture_controls.js +59 -16
- package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_overlay.d.ts +22 -5
- package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_document_overlay.js +80 -40
- package/dist/presentation/components/use_smile_id_document_overlay.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +15 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +1 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.js +23 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.js.map +1 -0
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts +5 -2
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +9 -6
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +84 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +1 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +3 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.js +25 -5
- package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
- package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_oval_border_palette.js +7 -3
- package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts +28 -0
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.js +30 -0
- package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +13 -4
- package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/ml_builder.js +3 -2
- package/dist/presentation/flow/dsl/builder/ml_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +110 -12
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.js +110 -12
- package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +15 -2
- package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/theme_builder.js +15 -2
- package/dist/presentation/flow/dsl/builder/theme_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +6 -4
- package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +62 -36
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +62 -36
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.d.ts +44 -5
- package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.js +148 -11
- package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
- package/dist/presentation/flow/model/instruction_guideline.d.ts +9 -0
- package/dist/presentation/flow/model/instruction_guideline.d.ts.map +1 -1
- package/dist/presentation/flow/model/instructions_defaults.d.ts +11 -2
- package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
- package/dist/presentation/flow/model/instructions_defaults.js +74 -26
- package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_capture_screen.js +48 -14
- package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_consent_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_consent_screen.js +3 -1
- package/dist/presentation/flow/screen/orchestrated_consent_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -1
- package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.js +3 -9
- package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js +3 -3
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
- package/dist/presentation/flow/use_smile_id_flow.d.ts.map +1 -1
- package/dist/presentation/flow/use_smile_id_flow.js +10 -4
- package/dist/presentation/flow/use_smile_id_flow.js.map +1 -1
- package/dist/presentation/flow/validation/flow_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/flow_validator.js +42 -20
- package/dist/presentation/flow/validation/flow_validator.js.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.js +14 -0
- package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
- package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -0
- package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +1 -1
- package/dist/presentation/screen/helpers/capture_ui_state.d.ts +6 -6
- package/dist/presentation/screen/helpers/capture_ui_state.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/capture_ui_state.js +19 -19
- package/dist/presentation/screen/helpers/capture_ui_state.js.map +1 -1
- package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts +2 -2
- package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/ess_turn_haptics.js +6 -6
- package/dist/presentation/screen/helpers/ess_turn_haptics.js.map +1 -1
- package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +1 -0
- package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/instructions_screen_helpers.js +6 -2
- package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +1 -1
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts +5 -5
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +14 -11
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts +13 -3
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.js +48 -6
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +21 -3
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.js +188 -32
- package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_consent_screen.d.ts +7 -0
- package/dist/presentation/screen/use_smile_id_consent_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_consent_screen.js +6 -5
- package/dist/presentation/screen/use_smile_id_consent_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_back_instructions.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_back_instructions.js +5 -13
- package/dist/presentation/screen/use_smile_id_document_back_instructions.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +2 -3
- package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_preview_screen.js +17 -12
- package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +2 -0
- package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +7 -26
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.js +10 -20
- package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +2 -3
- package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_processing_screen.js +4 -3
- package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
- package/dist/presentation/theme/theme.d.ts +1 -1
- package/dist/presentation/theme/theme.d.ts.map +1 -1
- package/dist/presentation/theme/theme.js +20 -18
- package/dist/presentation/theme/theme.js.map +1 -1
- package/dist/presentation/utils/force_max_brightness.d.ts +4 -4
- package/dist/presentation/utils/locale_utils.d.ts +10 -4
- package/dist/presentation/utils/locale_utils.d.ts.map +1 -1
- package/dist/presentation/utils/locale_utils.js +13 -5
- package/dist/presentation/utils/locale_utils.js.map +1 -1
- package/dist/testing/fake_face_analyzer.d.ts +43 -0
- package/dist/testing/fake_face_analyzer.d.ts.map +1 -0
- package/dist/testing/fake_face_analyzer.js +52 -0
- package/dist/testing/fake_face_analyzer.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/scenario_expectations.d.ts +28 -0
- package/dist/testing/scenario_expectations.d.ts.map +1 -0
- package/dist/testing/scenario_expectations.js +65 -0
- package/dist/testing/scenario_expectations.js.map +1 -0
- package/dist/testing/scenario_loader.d.ts +11 -0
- package/dist/testing/scenario_loader.d.ts.map +1 -0
- package/dist/testing/scenario_loader.js +64 -0
- package/dist/testing/scenario_loader.js.map +1 -0
- package/dist/testing/scripted_scan_results.d.ts +17 -0
- package/dist/testing/scripted_scan_results.d.ts.map +1 -0
- package/dist/testing/scripted_scan_results.js +52 -0
- package/dist/testing/scripted_scan_results.js.map +1 -0
- package/package.json +34 -7
- package/src/__tests__/dsl.test.ts +51 -1
- package/src/__tests__/react_native_mock.tsx +8 -0
- package/src/__tests__/setup_react_native.ts +17 -2
- package/src/__tests__/snapshots/__snapshots__/screens_structural.test.tsx.snap +5261 -0
- package/src/__tests__/snapshots/screens_structural.test.tsx +230 -0
- package/src/camera/__tests__/use_smile_id_camera_system.test.ts +103 -0
- package/src/camera/camera_defaults.ts +11 -9
- package/src/camera/orientation_degrees.ts +5 -6
- package/src/core/exception/__tests__/builder_validation_exceptions.test.ts +67 -0
- package/src/core/exception/agent_mode_with_enhanced_liveness_exception.ts +20 -0
- package/src/core/exception/capture_validation_exceptions.ts +1 -0
- package/src/core/exception/index.ts +1 -0
- package/src/core/exception/use_smile_id_error_code.ts +1 -0
- package/src/core/models/__tests__/document_type.test.ts +7 -5
- package/src/core/models/__tests__/flow_models.test.ts +26 -0
- package/src/core/models/config.ts +22 -0
- package/src/core/models/document_capture_mode.ts +27 -0
- package/src/core/models/document_type.ts +7 -5
- package/src/core/models/global_privacy_control.ts +45 -0
- package/src/core/models/network_config.ts +2 -2
- package/src/core/models/result.ts +9 -8
- package/src/data/api/__tests__/smile_id_api.test.ts +1 -1
- package/src/data/api/interceptors/__tests__/gzip_interceptor.test.ts +83 -0
- package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +37 -1
- package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +59 -1
- package/src/data/api/interceptors/smile_auth_interceptor.ts +3 -18
- package/src/data/api/interceptors/smile_integrity_interceptor.ts +20 -0
- package/src/data/api/interceptors/smile_request_mac_interceptor.ts +13 -0
- package/src/data/compression/__tests__/payload_compressor.test.ts +200 -0
- package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +226 -0
- package/src/data/compression/compressible_asset.ts +62 -0
- package/src/data/compression/payload_compression_config.ts +53 -0
- package/src/data/compression/payload_compression_runner.ts +102 -0
- package/src/data/compression/payload_compressor.ts +164 -0
- package/src/data/compression/uri_compressible_asset.ts +85 -0
- package/src/data/dsl/builder/__tests__/config_builders.test.ts +62 -0
- package/src/data/dsl/builder/cache_config_builder.ts +3 -1
- package/src/data/dsl/builder/config_builder.ts +45 -14
- package/src/data/dsl/builder/interceptor_config_builder.ts +9 -7
- package/src/data/dsl/builder/retry_config_builder.ts +27 -6
- package/src/data/dsl/builder/timeout_config_builder.ts +7 -0
- package/src/data/dsl/use_smile_id_network_builder.ts +17 -0
- package/src/data/factory/__tests__/retry_gzip_mac_composition.test.ts +163 -0
- package/src/data/factory/__tests__/signed_job_submission_headers.test.ts +1 -1
- package/src/data/factory/networking_factory.ts +14 -1
- package/src/data/repository/__tests__/network_retries.test.ts +117 -0
- package/src/data/repository/__tests__/use_smile_id_repository.test.ts +1 -1
- package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
- package/src/data/security/__tests__/request_canonicalizer.test.ts +132 -0
- package/src/data/security/__tests__/security_policy.test.ts +96 -0
- package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +18 -0
- package/src/data/security/request_canonicalizer.ts +15 -2
- package/src/data/security/security_policy.ts +70 -0
- package/src/data/smile_id_urls.ts +1 -1
- package/src/data/util/__tests__/retry_util.test.ts +25 -0
- package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
- package/src/data/util/retry_util.ts +12 -3
- package/src/data/util/use_smile_id_token_decoder.ts +76 -28
- package/src/index.ts +6 -4
- package/src/l10n/strings_en.ts +2 -1
- package/src/l10n/use_smile_id_localizations.ts +3 -0
- package/src/metadata/__tests__/device_orientation_collector.test.ts +15 -0
- package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +254 -0
- package/src/metadata/__tests__/metadata_configuration_objects.test.ts +86 -0
- package/src/metadata/__tests__/metadata_device_context.test.ts +147 -0
- package/src/metadata/__tests__/metadata_device_os_android.test.ts +18 -0
- package/src/metadata/__tests__/metadata_golden_fixture.json +13 -0
- package/src/metadata/__tests__/metadata_payload_golden.test.ts +193 -0
- package/src/metadata/__tests__/use_smile_id_metadata.test.ts +19 -25
- package/src/metadata/builder_configuration.ts +69 -0
- package/src/metadata/captured_image_properties.ts +10 -0
- package/src/metadata/device_orientation_collector.ts +75 -0
- package/src/metadata/geolocation.ts +46 -0
- package/src/metadata/metadata_configuration_mappers.ts +248 -0
- package/src/metadata/model_configuration.ts +68 -0
- package/src/metadata/optional_native_modules.ts +157 -3
- package/src/metadata/use_smile_id_metadata.ts +140 -17
- package/src/metadata/use_smile_id_metadata_factory.ts +211 -16
- package/src/presentation/assets/si_document_green_book_hero_animation.json +1 -4668
- package/src/presentation/assets/si_document_hero_animation.json +1 -4799
- package/src/presentation/assets/si_document_hero_back_animation.json +1 -2039
- package/src/presentation/assets/si_document_passport_hero_animation.json +1 -14491
- package/src/presentation/assets/si_ess_all_directions_hero_animation.json +1 -0
- package/src/presentation/assets/si_ess_animation_all_directions.json +1 -5575
- package/src/presentation/assets/si_selfie_hero_animation.json +1 -1439
- package/src/presentation/assets/si_smile_to_capture_animation.json +1 -1439
- package/src/presentation/assets/svg/document_shimmer_strings.ts +17 -0
- package/src/presentation/assets/svg/instruction_svg_strings.ts +34 -12
- package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +1 -3
- package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +12 -8
- package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +34 -1
- package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +71 -0
- package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +7 -5
- package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -6
- package/src/presentation/components/icons/index.tsx +65 -18
- package/src/presentation/components/use_smile_id_attribution.tsx +1 -1
- package/src/presentation/components/use_smile_id_button.tsx +4 -4
- package/src/presentation/components/use_smile_id_capture_content.tsx +36 -12
- package/src/presentation/components/use_smile_id_captured_document_image.tsx +3 -8
- package/src/presentation/components/use_smile_id_document_capture_controls.tsx +103 -39
- package/src/presentation/components/use_smile_id_document_overlay.tsx +134 -44
- package/src/presentation/components/use_smile_id_document_shimmer.tsx +51 -0
- package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +9 -6
- package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
- package/src/presentation/components/use_smile_id_instructions_hero.tsx +111 -60
- package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
- package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +203 -4
- package/src/presentation/flow/__tests__/flow_navigation_manager.test.ts +49 -0
- package/src/presentation/flow/dsl/builder/__tests__/config_builder.test.ts +25 -0
- package/src/presentation/flow/dsl/builder/config_builder.ts +35 -0
- package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
- package/src/presentation/flow/dsl/builder/screens_builder.ts +110 -12
- package/src/presentation/flow/dsl/builder/theme_builder.ts +19 -2
- package/src/presentation/flow/dsl/use_smile_id_builder.tsx +6 -4
- package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +62 -36
- package/src/presentation/flow/flow_navigation_manager.ts +185 -14
- package/src/presentation/flow/model/instruction_guideline.ts +6 -0
- package/src/presentation/flow/model/instructions_defaults.ts +104 -26
- package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +60 -12
- package/src/presentation/flow/screen/orchestrated_consent_screen.tsx +5 -0
- package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
- package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -14
- package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
- package/src/presentation/flow/use_smile_id_flow.tsx +11 -4
- package/src/presentation/flow/validation/__tests__/flow_validator.test.ts +61 -1
- package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
- package/src/presentation/flow/validation/flow_validator.ts +55 -26
- package/src/presentation/flow/validation/job_type_validator.ts +24 -0
- package/src/presentation/screen/__tests__/capture_ui_state.test.ts +66 -47
- package/src/presentation/screen/__tests__/ess_turn_haptics.test.ts +15 -11
- package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
- package/src/presentation/screen/__tests__/scan_state_to_overlay_state.test.ts +47 -27
- package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +182 -18
- package/src/presentation/screen/__tests__/use_smile_id_document_back_instructions.test.tsx +1 -1
- package/src/presentation/screen/__tests__/use_smile_id_preview_screen.test.tsx +10 -40
- package/src/presentation/screen/helpers/__tests__/use_capture_orientation_lock.test.tsx +212 -0
- package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
- package/src/presentation/screen/helpers/capture_ui_state.ts +27 -27
- package/src/presentation/screen/helpers/ess_turn_haptics.ts +9 -9
- package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
- package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +16 -13
- package/src/presentation/screen/helpers/use_capture_orientation_lock.ts +69 -7
- package/src/presentation/screen/use_smile_id_capture_screen.tsx +280 -54
- package/src/presentation/screen/use_smile_id_consent_screen.tsx +16 -5
- package/src/presentation/screen/use_smile_id_document_back_instructions.tsx +14 -23
- package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +33 -23
- package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
- package/src/presentation/screen/use_smile_id_preview_screen.tsx +21 -53
- package/src/presentation/screen/use_smile_id_processing_screen.tsx +8 -8
- package/src/presentation/theme/theme.ts +21 -19
- package/src/presentation/utils/__tests__/locale_utils.test.ts +46 -5
- package/src/presentation/utils/force_max_brightness.tsx +4 -4
- package/src/presentation/utils/locale_utils.ts +13 -4
- package/src/testing/__tests__/fake_face_analyzer.test.ts +42 -0
- package/src/testing/__tests__/scenario_expectations.test.ts +110 -0
- package/src/testing/__tests__/scenario_loader.test.ts +64 -0
- package/src/testing/fake_face_analyzer.ts +82 -0
- package/src/testing/index.ts +15 -0
- package/src/testing/scenario_expectations.ts +87 -0
- package/src/testing/scenario_loader.ts +83 -0
- package/src/testing/scripted_scan_results.ts +66 -0
- package/dist/camera/frame_processor_plugin.d.ts +0 -28
- package/dist/camera/frame_processor_plugin.d.ts.map +0 -1
- package/dist/camera/frame_processor_plugin.js +0 -21
- package/dist/camera/frame_processor_plugin.js.map +0 -1
- package/dist/camera/use_smile_id_frame_processor.d.ts +0 -38
- package/dist/camera/use_smile_id_frame_processor.d.ts.map +0 -1
- package/dist/camera/use_smile_id_frame_processor.js +0 -2
- package/dist/camera/use_smile_id_frame_processor.js.map +0 -1
- package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts +0 -17
- package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_document_frame_glyph.js +0 -17
- package/dist/presentation/components/use_smile_id_document_frame_glyph.js.map +0 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts +0 -24
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js +0 -91
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js.map +0 -1
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts +0 -15
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js +0 -19
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js.map +0 -1
- package/dist/presentation/components/use_smile_id_instruction_card.d.ts +0 -31
- package/dist/presentation/components/use_smile_id_instruction_card.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_instruction_card.js +0 -43
- package/dist/presentation/components/use_smile_id_instruction_card.js.map +0 -1
- package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts +0 -24
- package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts.map +0 -1
- package/dist/presentation/screen/helpers/use_document_orientation_lock.js +0 -47
- package/dist/presentation/screen/helpers/use_document_orientation_lock.js.map +0 -1
- package/src/presentation/components/use_smile_id_document_frame_glyph.tsx +0 -162
- package/src/presentation/components/use_smile_id_face_silhouette_overlay.tsx +0 -27
package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx
CHANGED
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
import { AccessibilityInfo } from "react-native";
|
|
9
9
|
import {
|
|
10
10
|
UseSmileIDEnhancedSmartSelfieClip,
|
|
11
|
-
|
|
11
|
+
ENHANCED_SMART_SELFIE_ARROW_FIT,
|
|
12
12
|
} from "../use_smile_id_enhanced_smart_selfie_clip";
|
|
13
|
+
import { FaceOvalDefaults } from "../face_oval_defaults";
|
|
13
14
|
import {
|
|
14
|
-
ENHANCED_SMART_SELFIE_ANIMATION_OPACITY,
|
|
15
15
|
ENHANCED_SMART_SELFIE_ANIMATION_SPEED,
|
|
16
16
|
ENHANCED_SMART_SELFIE_TOTAL_FRAMES,
|
|
17
17
|
} from "../helpers/enhanced_smart_selfie_animation_frames";
|
|
@@ -196,7 +196,7 @@ describe("UseSmileIDEnhancedSmartSelfieClip", () => {
|
|
|
196
196
|
});
|
|
197
197
|
|
|
198
198
|
describe("positioning", () => {
|
|
199
|
-
it("
|
|
199
|
+
it("sizes the container to the oval width times the arrow-fit factor", async () => {
|
|
200
200
|
const tree = renderClip({ pingPong: false });
|
|
201
201
|
await act(async () => {
|
|
202
202
|
await Promise.resolve();
|
|
@@ -210,13 +210,17 @@ describe("UseSmileIDEnhancedSmartSelfieClip", () => {
|
|
|
210
210
|
);
|
|
211
211
|
expect(container).toBeDefined();
|
|
212
212
|
const style = container!.props.style as { width: number; height: number };
|
|
213
|
-
|
|
214
|
-
|
|
213
|
+
const expectedSize =
|
|
214
|
+
BASE_CONTAINER_WIDTH *
|
|
215
|
+
FaceOvalDefaults.ovalWidthRatio *
|
|
216
|
+
ENHANCED_SMART_SELFIE_ARROW_FIT;
|
|
217
|
+
expect(style.width).toBe(expectedSize);
|
|
218
|
+
expect(style.height).toBe(expectedSize);
|
|
215
219
|
});
|
|
216
220
|
});
|
|
217
221
|
|
|
218
222
|
describe("tuning — opacity + speed", () => {
|
|
219
|
-
it("renders the cue at
|
|
223
|
+
it("renders the cue at full opacity (no translucency over the animation)", async () => {
|
|
220
224
|
const tree = renderClip({ pingPong: false });
|
|
221
225
|
await act(async () => {
|
|
222
226
|
await Promise.resolve();
|
|
@@ -227,8 +231,8 @@ describe("UseSmileIDEnhancedSmartSelfieClip", () => {
|
|
|
227
231
|
match.props.style !== undefined && match.props.style !== null,
|
|
228
232
|
);
|
|
229
233
|
expect(container).toBeDefined();
|
|
230
|
-
const style = container!.props.style as { opacity
|
|
231
|
-
expect(style.opacity).
|
|
234
|
+
const style = container!.props.style as { opacity?: number };
|
|
235
|
+
expect(style.opacity).toBeUndefined();
|
|
232
236
|
});
|
|
233
237
|
|
|
234
238
|
it("plays the full primer at 0.6x speed", async () => {
|
|
@@ -7,7 +7,10 @@ import {
|
|
|
7
7
|
} from "react-test-renderer";
|
|
8
8
|
import { Text } from "react-native";
|
|
9
9
|
import { UseSmileIDGuidelineThumbnail } from "../use_smile_id_guideline_thumbnail";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
DOCUMENT_GUIDELINES_PASSPORT,
|
|
12
|
+
SELFIE_GUIDELINES,
|
|
13
|
+
} from "../../flow/model/instructions_defaults";
|
|
11
14
|
|
|
12
15
|
function render(element: React.ReactElement) {
|
|
13
16
|
let tree!: ReturnType<typeof createRenderer>;
|
|
@@ -77,3 +80,33 @@ describe("UseSmileIDGuidelineThumbnail", () => {
|
|
|
77
80
|
);
|
|
78
81
|
});
|
|
79
82
|
});
|
|
83
|
+
|
|
84
|
+
// DOCUMENT_GUIDELINES_PASSPORT order: [Good (allowed), …, Not reflective]; these
|
|
85
|
+
// carry a `card` size → the thumbnail renders the document-card layout.
|
|
86
|
+
const documentAllowedGuideline = DOCUMENT_GUIDELINES_PASSPORT[0]!;
|
|
87
|
+
const documentBlockedGuideline = DOCUMENT_GUIDELINES_PASSPORT[3]!;
|
|
88
|
+
|
|
89
|
+
describe("UseSmileIDGuidelineThumbnail — document card", () => {
|
|
90
|
+
it("renders the caption and allowed badge for a document guideline", () => {
|
|
91
|
+
const { root } = render(
|
|
92
|
+
<UseSmileIDGuidelineThumbnail guideline={documentAllowedGuideline} />,
|
|
93
|
+
);
|
|
94
|
+
expect(findTextNode(root, "Good")).not.toBeNull();
|
|
95
|
+
expect(
|
|
96
|
+
root.findAllByProps({ accessibilityLabel: "Allowed" })[0],
|
|
97
|
+
).toBeTruthy();
|
|
98
|
+
expect(
|
|
99
|
+
root.findAllByProps({ accessibilityLabel: "Not allowed" }),
|
|
100
|
+
).toHaveLength(0);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it("renders the blocked badge and caption for a blocked document guideline", () => {
|
|
104
|
+
const { root } = render(
|
|
105
|
+
<UseSmileIDGuidelineThumbnail guideline={documentBlockedGuideline} />,
|
|
106
|
+
);
|
|
107
|
+
expect(findTextNode(root, "Not reflective")).not.toBeNull();
|
|
108
|
+
expect(
|
|
109
|
+
root.findAllByProps({ accessibilityLabel: "Not allowed" })[0],
|
|
110
|
+
).toBeTruthy();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
OVAL_PROGRESS_DURATION_MS,
|
|
8
8
|
loopDurationMs,
|
|
9
9
|
} from "../use_smile_id_instructions_hero";
|
|
10
|
+
import { AnimatedLottieView } from "../helpers/animated_lottie_view";
|
|
10
11
|
import { SELFIE_HERO_ANIMATION } from "../../flow/model/instructions_defaults";
|
|
11
12
|
|
|
12
13
|
function render(element: React.ReactElement) {
|
|
@@ -76,4 +77,74 @@ describe("UseSmileIDInstructionsHero", () => {
|
|
|
76
77
|
timingSpy.mockRestore();
|
|
77
78
|
}
|
|
78
79
|
});
|
|
80
|
+
|
|
81
|
+
it("pins oval-less heroes to the software Lottie engine on iOS", () => {
|
|
82
|
+
// lottie-ios's CA engine mis-renders the doc heroes' track mattes, so
|
|
83
|
+
// oval-less heroes must pin renderMode SOFTWARE on iOS.
|
|
84
|
+
const docTree = render(
|
|
85
|
+
<UseSmileIDInstructionsHero
|
|
86
|
+
source={SELFIE_HERO_ANIMATION}
|
|
87
|
+
showOval={false}
|
|
88
|
+
showOvalProgress={false}
|
|
89
|
+
/>,
|
|
90
|
+
);
|
|
91
|
+
const docHero = docTree.root.findByProps({
|
|
92
|
+
testID: "si_instructions_hero",
|
|
93
|
+
});
|
|
94
|
+
act(() => {
|
|
95
|
+
docHero.props.onLayout({
|
|
96
|
+
nativeEvent: { layout: { width: 390, height: 600 } },
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
expect(docTree.root.findByType(AnimatedLottieView).props.renderMode).toBe(
|
|
100
|
+
"SOFTWARE",
|
|
101
|
+
);
|
|
102
|
+
act(() => docTree.unmount());
|
|
103
|
+
|
|
104
|
+
const ovalTree = render(
|
|
105
|
+
<UseSmileIDInstructionsHero
|
|
106
|
+
source={SELFIE_HERO_ANIMATION}
|
|
107
|
+
showOval
|
|
108
|
+
showOvalProgress={false}
|
|
109
|
+
/>,
|
|
110
|
+
);
|
|
111
|
+
const ovalHero = ovalTree.root.findByProps({
|
|
112
|
+
testID: "si_instructions_hero",
|
|
113
|
+
});
|
|
114
|
+
act(() => {
|
|
115
|
+
ovalHero.props.onLayout({
|
|
116
|
+
nativeEvent: { layout: { width: 390, height: 600 } },
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
expect(
|
|
120
|
+
ovalTree.root.findByType(AnimatedLottieView).props.renderMode,
|
|
121
|
+
).toBeUndefined();
|
|
122
|
+
act(() => ovalTree.unmount());
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("gives the document card hero explicit dimensions (no intrinsic-size flash)", () => {
|
|
126
|
+
const tree = render(
|
|
127
|
+
<UseSmileIDInstructionsHero
|
|
128
|
+
source={SELFIE_HERO_ANIMATION}
|
|
129
|
+
showCardBackground
|
|
130
|
+
showOvalProgress={false}
|
|
131
|
+
/>,
|
|
132
|
+
);
|
|
133
|
+
// The renderer doesn't fire onLayout on its own; drive it so the measured
|
|
134
|
+
// subtree (card + Lottie) materializes.
|
|
135
|
+
const hero = tree.root.findByProps({ testID: "si_instructions_hero" });
|
|
136
|
+
act(() => {
|
|
137
|
+
hero.props.onLayout({
|
|
138
|
+
nativeEvent: { layout: { width: 384, height: 600 } },
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
const lottie = tree.root.findByType(AnimatedLottieView);
|
|
143
|
+
const style = lottie.props.style as { width?: unknown; height?: unknown };
|
|
144
|
+
// Regression guard: explicit numeric width/height (not absoluteFill), else the Lottie
|
|
145
|
+
// flashes at the composition's intrinsic size on first render.
|
|
146
|
+
expect(typeof style.width).toBe("number");
|
|
147
|
+
expect(typeof style.height).toBe("number");
|
|
148
|
+
act(() => tree.unmount());
|
|
149
|
+
});
|
|
79
150
|
});
|
|
@@ -16,17 +16,14 @@ describe("UseSmileIDOvalBorderPalette", () => {
|
|
|
16
16
|
UseSmileIDOverlayState.MOVE_RIGHT,
|
|
17
17
|
UseSmileIDOverlayState.MOVE_UP,
|
|
18
18
|
UseSmileIDOverlayState.MOVE_DOWN,
|
|
19
|
-
UseSmileIDOverlayState.DOCUMENT_NOT_CENTERED,
|
|
20
|
-
UseSmileIDOverlayState.DOCUMENT_TOO_FAR,
|
|
21
|
-
UseSmileIDOverlayState.DOCUMENT_TOO_CLOSE,
|
|
22
|
-
UseSmileIDOverlayState.DOCUMENT_HOLD_STILL,
|
|
23
|
-
UseSmileIDOverlayState.DOCUMENT_READY,
|
|
24
19
|
];
|
|
25
20
|
|
|
26
21
|
const active: UseSmileIDOverlayState[] = [
|
|
27
22
|
UseSmileIDOverlayState.READY,
|
|
28
23
|
UseSmileIDOverlayState.CAPTURING,
|
|
29
24
|
UseSmileIDOverlayState.PROCESSING,
|
|
25
|
+
// Document is correctly framed → green, mirroring the selfie ready state.
|
|
26
|
+
UseSmileIDOverlayState.DOCUMENT_READY,
|
|
30
27
|
];
|
|
31
28
|
|
|
32
29
|
const warning: UseSmileIDOverlayState[] = [
|
|
@@ -38,6 +35,11 @@ describe("UseSmileIDOvalBorderPalette", () => {
|
|
|
38
35
|
UseSmileIDOverlayState.WRONG_ORIENTATION,
|
|
39
36
|
UseSmileIDOverlayState.NOT_SMILING,
|
|
40
37
|
UseSmileIDOverlayState.MULTIPLE_FACES,
|
|
38
|
+
// Document detected but mispositioned → red, mirroring the face warnings.
|
|
39
|
+
UseSmileIDOverlayState.DOCUMENT_NOT_CENTERED,
|
|
40
|
+
UseSmileIDOverlayState.DOCUMENT_TOO_FAR,
|
|
41
|
+
UseSmileIDOverlayState.DOCUMENT_TOO_CLOSE,
|
|
42
|
+
UseSmileIDOverlayState.DOCUMENT_HOLD_STILL,
|
|
41
43
|
];
|
|
42
44
|
|
|
43
45
|
it("covers every overlay state exactly once across the three buckets", () => {
|
|
@@ -50,12 +50,6 @@ export const ENHANCED_SMART_SELFIE_FRAME_RATE = 30;
|
|
|
50
50
|
*/
|
|
51
51
|
export const ENHANCED_SMART_SELFIE_ANIMATION_SPEED = 0.6;
|
|
52
52
|
|
|
53
|
-
/**
|
|
54
|
-
* Opacity for the ESS cues so the face stays the focal point behind the
|
|
55
|
-
* translucent arrow overlay.
|
|
56
|
-
*/
|
|
57
|
-
export const ENHANCED_SMART_SELFIE_ANIMATION_OPACITY = 0.75;
|
|
58
|
-
|
|
59
53
|
/**
|
|
60
54
|
* Resolve the keyframe span for [direction] — the green `matched` span
|
|
61
55
|
* while [poseMatched], otherwise the grey `pending` span. Pure, so the
|
|
@@ -4,10 +4,18 @@ import {
|
|
|
4
4
|
SI_FILLED_CHECK_CIRCLE,
|
|
5
5
|
SI_FILLED_CLOSE_CIRCLE,
|
|
6
6
|
SI_GUIDELINE_ACCESSORIES,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_GOOD,
|
|
8
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_NOT_BLURRY,
|
|
9
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_NOT_CROPPED,
|
|
10
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_NOT_REFLECTIVE,
|
|
11
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_GOOD,
|
|
12
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_NOT_BLURRY,
|
|
13
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_NOT_CROPPED,
|
|
14
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_NOT_REFLECTIVE,
|
|
15
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_GOOD,
|
|
16
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_NOT_BLURRY,
|
|
17
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_NOT_CROPPED,
|
|
18
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_NOT_REFLECTIVE,
|
|
11
19
|
SI_GUIDELINE_GOOD,
|
|
12
20
|
SI_GUIDELINE_MULTIPLE_FACES,
|
|
13
21
|
SI_GUIDELINE_POOR_LIGHTING,
|
|
@@ -245,23 +253,62 @@ export const SiGuidelinePoorLighting = guidelineIllustration(
|
|
|
245
253
|
SI_GUIDELINE_POOR_LIGHTING,
|
|
246
254
|
);
|
|
247
255
|
|
|
248
|
-
// Document-capture guideline illustrations
|
|
249
|
-
//
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
256
|
+
// Document-capture guideline illustrations — self-contained card art per
|
|
257
|
+
// document type (see `instruction_svg_strings`). Each renders at the asset's
|
|
258
|
+
// natural viewBox; `UseSmileIDGuidelineThumbnail` sizes and frames them.
|
|
259
|
+
|
|
260
|
+
// --- Generic document (landscape) ---
|
|
261
|
+
/** "Good" generic-document guideline illustration (allowed). */
|
|
262
|
+
export const SiGuidelineDocumentGenericGood = guidelineIllustration(
|
|
263
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_GOOD,
|
|
264
|
+
);
|
|
265
|
+
/** "Not cropped" generic-document guideline illustration (blocked). */
|
|
266
|
+
export const SiGuidelineDocumentGenericNotCropped = guidelineIllustration(
|
|
267
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_NOT_CROPPED,
|
|
268
|
+
);
|
|
269
|
+
/** "Not blurry" generic-document guideline illustration (blocked). */
|
|
270
|
+
export const SiGuidelineDocumentGenericNotBlurry = guidelineIllustration(
|
|
271
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_NOT_BLURRY,
|
|
272
|
+
);
|
|
273
|
+
/** "Not reflective" generic-document guideline illustration (blocked). */
|
|
274
|
+
export const SiGuidelineDocumentGenericNotReflective = guidelineIllustration(
|
|
275
|
+
SI_GUIDELINE_DOCUMENT_GENERIC_NOT_REFLECTIVE,
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
// --- Passport (landscape) ---
|
|
279
|
+
/** "Good" passport guideline illustration (allowed). */
|
|
280
|
+
export const SiGuidelineDocumentPassportGood = guidelineIllustration(
|
|
281
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_GOOD,
|
|
282
|
+
);
|
|
283
|
+
/** "Not cropped" passport guideline illustration (blocked). */
|
|
284
|
+
export const SiGuidelineDocumentPassportNotCropped = guidelineIllustration(
|
|
285
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_NOT_CROPPED,
|
|
286
|
+
);
|
|
287
|
+
/** "Not blurry" passport guideline illustration (blocked). */
|
|
288
|
+
export const SiGuidelineDocumentPassportNotBlurry = guidelineIllustration(
|
|
289
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_NOT_BLURRY,
|
|
290
|
+
);
|
|
291
|
+
/** "Not reflective" passport guideline illustration (blocked). */
|
|
292
|
+
export const SiGuidelineDocumentPassportNotReflective = guidelineIllustration(
|
|
293
|
+
SI_GUIDELINE_DOCUMENT_PASSPORT_NOT_REFLECTIVE,
|
|
294
|
+
);
|
|
295
|
+
|
|
296
|
+
// --- South Africa green book (portrait) ---
|
|
297
|
+
/** "Good" green-book guideline illustration (allowed). */
|
|
298
|
+
export const SiGuidelineDocumentGreenBookGood = guidelineIllustration(
|
|
299
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_GOOD,
|
|
253
300
|
);
|
|
254
|
-
/** "Not cropped"
|
|
255
|
-
export const
|
|
256
|
-
|
|
301
|
+
/** "Not cropped" green-book guideline illustration (blocked). */
|
|
302
|
+
export const SiGuidelineDocumentGreenBookNotCropped = guidelineIllustration(
|
|
303
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_NOT_CROPPED,
|
|
257
304
|
);
|
|
258
|
-
/** "Not blurry"
|
|
259
|
-
export const
|
|
260
|
-
|
|
305
|
+
/** "Not blurry" green-book guideline illustration (blocked). */
|
|
306
|
+
export const SiGuidelineDocumentGreenBookNotBlurry = guidelineIllustration(
|
|
307
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_NOT_BLURRY,
|
|
261
308
|
);
|
|
262
|
-
/** "Not reflective"
|
|
263
|
-
export const
|
|
264
|
-
|
|
309
|
+
/** "Not reflective" green-book guideline illustration (blocked). */
|
|
310
|
+
export const SiGuidelineDocumentGreenBookNotReflective = guidelineIllustration(
|
|
311
|
+
SI_GUIDELINE_DOCUMENT_GREEN_BOOK_NOT_REFLECTIVE,
|
|
265
312
|
);
|
|
266
313
|
|
|
267
314
|
/** Capture-guidelines section-header glyph; tint via `color` (currentColor). */
|
|
@@ -8,7 +8,7 @@ export type UseSmileIDAttributionProps = {
|
|
|
8
8
|
/**
|
|
9
9
|
* Force the light-tone attribution regardless of the active
|
|
10
10
|
* colour scheme. Used by surfaces that always render light
|
|
11
|
-
* (capture screen overlay
|
|
11
|
+
* (the capture screen overlay).
|
|
12
12
|
*/
|
|
13
13
|
readonly forceLightMode?: boolean;
|
|
14
14
|
readonly testID?: string;
|
|
@@ -23,8 +23,8 @@ export type UseSmileIDButtonProps = {
|
|
|
23
23
|
* Pill-shaped primary / secondary button (48-dp height, 32-radius
|
|
24
24
|
* corners).
|
|
25
25
|
*
|
|
26
|
-
* Secondary variant: transparent background +
|
|
27
|
-
*
|
|
26
|
+
* Secondary variant: transparent background + 2-pt stroke in the
|
|
27
|
+
* primary colour + primary-coloured label.
|
|
28
28
|
*/
|
|
29
29
|
export function UseSmileIDButton(props: UseSmileIDButtonProps) {
|
|
30
30
|
const themeFromContext = useUseSmileIDTheme();
|
|
@@ -58,8 +58,8 @@ export function UseSmileIDButton(props: UseSmileIDButtonProps) {
|
|
|
58
58
|
? "transparent"
|
|
59
59
|
: theme.colors.primary,
|
|
60
60
|
borderColor:
|
|
61
|
-
!disabled && isSecondary ? theme.colors.
|
|
62
|
-
borderWidth: !disabled && isSecondary ?
|
|
61
|
+
!disabled && isSecondary ? theme.colors.primary : "transparent",
|
|
62
|
+
borderWidth: !disabled && isSecondary ? 2 : 0,
|
|
63
63
|
opacity: disabled ? 1 : pressed ? 0.85 : 1,
|
|
64
64
|
},
|
|
65
65
|
]}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
10
10
|
import type { ScanHeadTurnDirection } from "@smileid/usesmileid_bridge";
|
|
11
11
|
import { CaptureType } from "../../core/models/ml_config";
|
|
12
|
+
import type { DocumentType } from "../../core/models/document_type";
|
|
12
13
|
import { defaultLightTheme, type UseSmileIDTheme } from "../theme/theme";
|
|
13
14
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
14
15
|
import {
|
|
@@ -45,6 +46,10 @@ export type UseSmileIDCaptureContentState = {
|
|
|
45
46
|
/** Show the Start Capture control (pre-flight instruction state only). */
|
|
46
47
|
readonly showCaptureButton: boolean;
|
|
47
48
|
readonly knownIdAspectRatio?: number;
|
|
49
|
+
/** Document type — selects the in-frame shimmer skeleton. Ignored for selfie. */
|
|
50
|
+
readonly documentTypeKind?: DocumentType["kind"];
|
|
51
|
+
/** Active side is the back — swaps the generic shimmer front→back. Ignored for selfie. */
|
|
52
|
+
readonly isBackSide?: boolean;
|
|
48
53
|
/** Document manual shutter availability (capture-mode + fallback-timer driven). Ignored for selfie. */
|
|
49
54
|
readonly showManualShutter?: boolean;
|
|
50
55
|
/** Document gallery-upload availability (`allowGalleryUpload`). Ignored for selfie. */
|
|
@@ -72,6 +77,13 @@ export type UseSmileIDCaptureContentProps = {
|
|
|
72
77
|
readonly onGalleryUpload?: (() => void) | undefined;
|
|
73
78
|
/** Disables document controls while a manual/gallery delivery is in flight. */
|
|
74
79
|
readonly documentControlsEnabled?: boolean | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Reports the camera-viewport (canvas) size on layout so the screen can
|
|
82
|
+
* derive the document crop region from the same geometry the overlay draws.
|
|
83
|
+
*/
|
|
84
|
+
readonly onViewportLayout?:
|
|
85
|
+
| ((size: { width: number; height: number }) => void)
|
|
86
|
+
| undefined;
|
|
75
87
|
readonly theme?: UseSmileIDTheme | undefined;
|
|
76
88
|
};
|
|
77
89
|
|
|
@@ -96,9 +108,14 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
96
108
|
? previous
|
|
97
109
|
: { width, height },
|
|
98
110
|
);
|
|
111
|
+
// Surface the viewport size; the screen dedupes no-change passes.
|
|
112
|
+
props.onViewportLayout?.({ width, height });
|
|
99
113
|
};
|
|
100
114
|
|
|
101
115
|
const isSelfie = state.captureType === CaptureType.selfie;
|
|
116
|
+
// Landscape document moves the close ✕ into the control lane; portrait /
|
|
117
|
+
// selfie keep it in the top bar. False until the canvas is measured.
|
|
118
|
+
const isLandscapeDocument = !isSelfie && canvas.width > canvas.height;
|
|
102
119
|
const feedback = state.feedbackKey
|
|
103
120
|
? resolveFeedbackCopy(state.feedbackKey, loc)
|
|
104
121
|
: null;
|
|
@@ -129,6 +146,10 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
129
146
|
containerWidth={canvas.width}
|
|
130
147
|
containerHeight={canvas.height}
|
|
131
148
|
theme={theme}
|
|
149
|
+
isBackSide={state.isBackSide ?? false}
|
|
150
|
+
{...(state.documentTypeKind !== undefined
|
|
151
|
+
? { documentTypeKind: state.documentTypeKind }
|
|
152
|
+
: {})}
|
|
132
153
|
{...(state.knownIdAspectRatio !== undefined
|
|
133
154
|
? { knownIdAspectRatio: state.knownIdAspectRatio }
|
|
134
155
|
: {})}
|
|
@@ -159,11 +180,11 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
159
180
|
/>
|
|
160
181
|
) : null
|
|
161
182
|
) : null}
|
|
162
|
-
{/* Document control slot: shutter + gallery while positioning
|
|
163
|
-
|
|
183
|
+
{/* Document control slot: shutter + gallery while positioning (plus the
|
|
184
|
+
close ✕ in landscape). The capture-progress spinner renders in the
|
|
185
|
+
overlay only while capturing, so it never coexists with these controls. */}
|
|
164
186
|
{!isSelfie ? (
|
|
165
187
|
<UseSmileIDDocumentCaptureControls
|
|
166
|
-
capturing={isDocumentCaptureActive(state.overlayState)}
|
|
167
188
|
showManualShutter={
|
|
168
189
|
(state.showManualShutter ?? false) &&
|
|
169
190
|
props.onManualShutter !== undefined &&
|
|
@@ -180,14 +201,17 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
180
201
|
onGallery={props.onGalleryUpload ?? noop}
|
|
181
202
|
shutterAccessibilityLabel={loc.siCdDocumentCaptureShutter}
|
|
182
203
|
galleryAccessibilityLabel={loc.siCdDocumentGallery}
|
|
204
|
+
closeAccessibilityLabel={loc.siCdClose}
|
|
205
|
+
onClose={props.onClose}
|
|
183
206
|
/>
|
|
184
207
|
) : null}
|
|
185
208
|
</>
|
|
186
209
|
) : null}
|
|
187
210
|
|
|
188
|
-
{/*
|
|
211
|
+
{/* Control layers inset from the system bars (camera stays full-bleed);
|
|
212
|
+
both horizontal edges so landscape keeps chrome clear of the notch. */}
|
|
189
213
|
<SafeAreaView
|
|
190
|
-
edges={["top"]}
|
|
214
|
+
edges={["top", "left", "right"]}
|
|
191
215
|
style={[
|
|
192
216
|
styles.topBar,
|
|
193
217
|
{
|
|
@@ -207,8 +231,9 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
207
231
|
) : (
|
|
208
232
|
<View style={styles.chromeSpacer} />
|
|
209
233
|
)}
|
|
210
|
-
{/* Close/cancel (document chrome) — top-right
|
|
211
|
-
|
|
234
|
+
{/* Close/cancel (document chrome) — top-right in portrait / selfie; in
|
|
235
|
+
landscape document capture the ✕ moves into the control lane. */}
|
|
236
|
+
{props.onClose && !isLandscapeDocument ? (
|
|
212
237
|
<Pressable
|
|
213
238
|
onPress={props.onClose}
|
|
214
239
|
accessibilityRole="button"
|
|
@@ -247,10 +272,9 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
247
272
|
<Text
|
|
248
273
|
style={{
|
|
249
274
|
...theme.typography.cardTitle,
|
|
250
|
-
//
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
: defaultLightTheme.colors.captureFeedbackText,
|
|
275
|
+
// The capture screen supplies the light-resolved partner theme, so
|
|
276
|
+
// this stays light-on-light while honouring a partner `primary`.
|
|
277
|
+
color: theme.colors.primary,
|
|
254
278
|
textAlign: "center",
|
|
255
279
|
}}
|
|
256
280
|
testID="si_capture_feedback_text"
|
|
@@ -261,7 +285,7 @@ function UseSmileIDCaptureContentInner(props: UseSmileIDCaptureContentProps) {
|
|
|
261
285
|
) : null}
|
|
262
286
|
|
|
263
287
|
<SafeAreaView
|
|
264
|
-
edges={["bottom"]}
|
|
288
|
+
edges={["bottom", "left", "right"]}
|
|
265
289
|
style={[
|
|
266
290
|
styles.bottom,
|
|
267
291
|
{
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import { Image, StyleSheet, View } from "react-native";
|
|
3
|
-
import {
|
|
4
|
-
defaultFrameAspectRatio,
|
|
5
|
-
type DocumentOrientation,
|
|
6
|
-
} from "../../core/models/document_type";
|
|
7
3
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
8
4
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
9
5
|
|
|
10
6
|
export type UseSmileIDCapturedDocumentImageProps = {
|
|
11
7
|
/** Local file URI (`file:///…`) of the captured document side. */
|
|
12
8
|
readonly uri?: string;
|
|
13
|
-
/**
|
|
14
|
-
readonly
|
|
9
|
+
/** Capture-frame aspect ratio (width / height): ≥1 fills width (landscape), <1 fills height (portrait). */
|
|
10
|
+
readonly aspectRatio: number;
|
|
15
11
|
/** Content centered over the document rect — e.g. the processing-screen status badge. */
|
|
16
12
|
readonly overlayChild?: ReactNode;
|
|
17
13
|
/** Accessible name for the image; when unset the image stays decorative. */
|
|
@@ -33,8 +29,7 @@ export function UseSmileIDCapturedDocumentImage(
|
|
|
33
29
|
) {
|
|
34
30
|
const themeFromContext = useUseSmileIDTheme();
|
|
35
31
|
const theme = props.theme ?? themeFromContext;
|
|
36
|
-
const aspectRatio =
|
|
37
|
-
// Landscape (aspect ≥ 1) is width-bound; portrait is height-bound.
|
|
32
|
+
const aspectRatio = props.aspectRatio;
|
|
38
33
|
const fill = aspectRatio >= 1 ? styles.fillWidth : styles.fillHeight;
|
|
39
34
|
|
|
40
35
|
return (
|