@smileid/usesmileid 12.0.0-beta01 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -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/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 +6 -4
- package/dist/core/models/document_type.js.map +1 -1
- 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.js +1 -1
- 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/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 +16 -1
- package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.js +16 -1
- 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/util/retry_util.d.ts +1 -1
- package/dist/data/util/retry_util.d.ts.map +1 -1
- package/dist/data/util/retry_util.js +2 -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/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 +39 -0
- package/dist/metadata/builder_configuration.d.ts.map +1 -0
- package/dist/metadata/builder_configuration.js +34 -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 +48 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.js +171 -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 +184 -12
- 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.map +1 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +1 -3
- 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 +18 -3
- 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 +12 -0
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.js +12 -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 +111 -10
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.js +111 -10
- 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 +39 -4
- package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.js +141 -10
- 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 +73 -25
- 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 +36 -12
- package/dist/presentation/flow/screen/orchestrated_capture_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 -1
- 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/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/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.js +3 -0
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +17 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.js +153 -18
- package/dist/presentation/screen/use_smile_id_capture_screen.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 +16 -11
- 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 -6
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.js +9 -8
- 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 +3 -2
- 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/package.json +26 -6
- package/src/__tests__/react_native_mock.tsx +8 -0
- package/src/camera/camera_defaults.ts +11 -9
- package/src/camera/orientation_degrees.ts +5 -6
- package/src/core/models/__tests__/document_type.test.ts +6 -4
- package/src/core/models/document_capture_mode.ts +27 -0
- package/src/core/models/document_type.ts +6 -4
- package/src/core/models/result.ts +9 -8
- 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 +1 -1
- 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 +222 -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/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 +22 -1
- 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/networking_factory.ts +14 -1
- package/src/data/repository/__tests__/network_retries.test.ts +117 -0
- package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
- 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/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
- package/src/data/util/retry_util.ts +3 -2
- package/src/data/util/use_smile_id_token_decoder.ts +76 -28
- 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 +215 -0
- package/src/metadata/__tests__/metadata_configuration_objects.test.ts +85 -0
- package/src/metadata/__tests__/metadata_device_context.test.ts +147 -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 +18 -24
- package/src/metadata/builder_configuration.ts +63 -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 +234 -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 +195 -11
- package/src/presentation/assets/si_ess_animation_all_directions.json +1300 -286
- 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 +3 -4
- 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 +27 -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 +0 -3
- package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
- package/src/presentation/components/use_smile_id_instructions_hero.tsx +100 -59
- package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
- package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +200 -1
- package/src/presentation/flow/dsl/builder/config_builder.ts +14 -0
- package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
- package/src/presentation/flow/dsl/builder/screens_builder.ts +111 -10
- 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 +179 -13
- package/src/presentation/flow/model/instruction_guideline.ts +6 -0
- package/src/presentation/flow/model/instructions_defaults.ts +103 -25
- package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +43 -10
- package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
- package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -2
- package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
- package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
- package/src/presentation/flow/validation/job_type_validator.ts +24 -0
- package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
- package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +6 -4
- package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
- package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
- package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +3 -0
- package/src/presentation/screen/use_smile_id_capture_screen.tsx +234 -36
- package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +32 -22
- package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
- package/src/presentation/screen/use_smile_id_preview_screen.tsx +9 -9
- package/src/presentation/screen/use_smile_id_processing_screen.tsx +7 -7
- package/src/presentation/theme/theme.ts +21 -19
- package/src/presentation/utils/force_max_brightness.tsx +4 -4
- 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_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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Pressable, StyleSheet, Text, View } from "react-native";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
SafeAreaView,
|
|
4
|
+
useSafeAreaInsets,
|
|
5
|
+
} from "react-native-safe-area-context";
|
|
4
6
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
5
7
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
6
8
|
import { UseSmileIDAttribution } from "../components/use_smile_id_attribution";
|
|
@@ -13,8 +15,8 @@ import { useUseSmileIDLocalizations } from "../../l10n/use_smile_id_localization
|
|
|
13
15
|
export type UseSmileIDDocumentPreviewScreenProps = {
|
|
14
16
|
/** Local file URI of the captured side being reviewed (front, then back). */
|
|
15
17
|
readonly capturedDocumentPath?: string;
|
|
16
|
-
/** Capture
|
|
17
|
-
readonly
|
|
18
|
+
/** Capture-frame aspect ratio (width / height) — drives the document image aspect. */
|
|
19
|
+
readonly documentAspectRatio: number;
|
|
18
20
|
readonly showAttribution?: boolean;
|
|
19
21
|
/** Confirm — commit the captured side and advance. */
|
|
20
22
|
readonly onAccept?: () => void;
|
|
@@ -38,9 +40,11 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
38
40
|
const theme = props.theme ?? themeFromContext;
|
|
39
41
|
const loc = useUseSmileIDLocalizations();
|
|
40
42
|
const showAttribution = props.showAttribution ?? true;
|
|
43
|
+
const insets = useSafeAreaInsets();
|
|
41
44
|
|
|
42
45
|
return (
|
|
43
46
|
<SafeAreaView
|
|
47
|
+
edges={["left", "right", "bottom"]}
|
|
44
48
|
style={[
|
|
45
49
|
styles.root,
|
|
46
50
|
{ backgroundColor: theme.colors.captureReviewBackground },
|
|
@@ -53,7 +57,7 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
53
57
|
styles.closeRow,
|
|
54
58
|
{
|
|
55
59
|
paddingHorizontal: theme.spacing.medium,
|
|
56
|
-
paddingTop: theme.spacing.small,
|
|
60
|
+
paddingTop: insets.top + theme.spacing.small,
|
|
57
61
|
},
|
|
58
62
|
]}
|
|
59
63
|
>
|
|
@@ -64,26 +68,27 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
64
68
|
testID="si_document_preview_close"
|
|
65
69
|
style={({ pressed }) => [
|
|
66
70
|
styles.closeButton,
|
|
67
|
-
{
|
|
68
|
-
backgroundColor: theme.colors.cardText,
|
|
69
|
-
opacity: pressed ? 0.7 : 1,
|
|
70
|
-
},
|
|
71
|
+
{ opacity: pressed ? 0.7 : 1 },
|
|
71
72
|
]}
|
|
72
73
|
>
|
|
73
|
-
<SiOutlineClose size={20} color=
|
|
74
|
+
<SiOutlineClose size={20} color="#FFFFFF" />
|
|
74
75
|
</Pressable>
|
|
75
76
|
</View>
|
|
76
77
|
) : null}
|
|
77
78
|
|
|
78
|
-
<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
<View
|
|
80
|
+
style={[styles.imageRegion, { paddingVertical: theme.spacing.medium }]}
|
|
81
|
+
>
|
|
82
|
+
<UseSmileIDCapturedDocumentImage
|
|
83
|
+
aspectRatio={props.documentAspectRatio}
|
|
84
|
+
{...(props.capturedDocumentPath
|
|
85
|
+
? { uri: props.capturedDocumentPath }
|
|
86
|
+
: {})}
|
|
87
|
+
imageTestID="si_document_preview_image"
|
|
88
|
+
imageAccessibilityLabel={loc.siPreviewAccessibilityImage}
|
|
89
|
+
theme={theme}
|
|
90
|
+
/>
|
|
91
|
+
</View>
|
|
87
92
|
|
|
88
93
|
<UseSmileIDCardSurface theme={theme} style={styles.card}>
|
|
89
94
|
<Text
|
|
@@ -119,22 +124,27 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
119
124
|
</View>
|
|
120
125
|
</UseSmileIDCardSurface>
|
|
121
126
|
|
|
122
|
-
{showAttribution ?
|
|
123
|
-
<UseSmileIDAttribution forceLightMode theme={theme} />
|
|
124
|
-
) : null}
|
|
127
|
+
{showAttribution ? <UseSmileIDAttribution theme={theme} /> : null}
|
|
125
128
|
</SafeAreaView>
|
|
126
129
|
);
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
const CLOSE_BUTTON_SIZE = 40;
|
|
133
|
+
/** Warm-grey close-button fill for the document preview chrome. */
|
|
134
|
+
const CLOSE_BUTTON_FILL = "#848282";
|
|
130
135
|
|
|
131
136
|
const styles = StyleSheet.create({
|
|
132
137
|
root: { flex: 1, overflow: "hidden" },
|
|
138
|
+
// Fills the space between the close row and the card.
|
|
139
|
+
imageRegion: { flex: 1 },
|
|
133
140
|
closeRow: { flexDirection: "row", justifyContent: "flex-end" },
|
|
134
141
|
closeButton: {
|
|
135
142
|
width: CLOSE_BUTTON_SIZE,
|
|
136
143
|
height: CLOSE_BUTTON_SIZE,
|
|
137
144
|
borderRadius: CLOSE_BUTTON_SIZE / 2,
|
|
145
|
+
backgroundColor: CLOSE_BUTTON_FILL,
|
|
146
|
+
borderWidth: 1,
|
|
147
|
+
borderColor: "rgba(255,255,255,0.1)",
|
|
138
148
|
alignItems: "center",
|
|
139
149
|
justifyContent: "center",
|
|
140
150
|
},
|
|
@@ -33,6 +33,8 @@ export type UseSmileIDInstructionsScreenProps = {
|
|
|
33
33
|
readonly showHeroOval?: boolean;
|
|
34
34
|
/** Animate the ring's rising green progress fill. */
|
|
35
35
|
readonly showHeroOvalProgress?: boolean;
|
|
36
|
+
/** Present the hero in a document card (document flows) instead of an oval. */
|
|
37
|
+
readonly showCardBackground?: boolean;
|
|
36
38
|
readonly onContinue?: () => void;
|
|
37
39
|
readonly onBack?: () => void;
|
|
38
40
|
readonly theme?: UseSmileIDTheme;
|
|
@@ -71,6 +73,7 @@ export function UseSmileIDInstructionsScreen(
|
|
|
71
73
|
const showAttribution = props.showAttribution ?? true;
|
|
72
74
|
const showHeroOval = props.showHeroOval ?? true;
|
|
73
75
|
const showHeroOvalProgress = props.showHeroOvalProgress ?? true;
|
|
76
|
+
const showCardBackground = props.showCardBackground ?? false;
|
|
74
77
|
const onContinue = props.onContinue ?? (() => {});
|
|
75
78
|
|
|
76
79
|
return (
|
|
@@ -112,6 +115,7 @@ export function UseSmileIDInstructionsScreen(
|
|
|
112
115
|
source={heroSource}
|
|
113
116
|
showOval={showHeroOval}
|
|
114
117
|
showOvalProgress={showHeroOvalProgress}
|
|
118
|
+
showCardBackground={showCardBackground}
|
|
115
119
|
theme={theme}
|
|
116
120
|
/>
|
|
117
121
|
|
|
@@ -37,12 +37,13 @@ export type UseSmileIDPreviewScreenProps = {
|
|
|
37
37
|
/**
|
|
38
38
|
* Preview screen — confirms the captured selfie before submission.
|
|
39
39
|
*
|
|
40
|
-
* - Uniform
|
|
41
|
-
* oval. The oval scales to the
|
|
42
|
-
* the two never overlap; no scrim
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
40
|
+
* - Uniform page (`captureReviewBackground`, theme-following) with the
|
|
41
|
+
* captured image clipped to the face oval. The oval scales to the
|
|
42
|
+
* leftover height above the card so the two never overlap; no scrim
|
|
43
|
+
* is painted.
|
|
44
|
+
* - Bottom card (theme card surface, rounded, soft upward shadow) with
|
|
45
|
+
* the title "Confirm image quality", a caption, and the Retake /
|
|
46
|
+
* Confirm tiles.
|
|
46
47
|
* - Attribution sits centered below the card.
|
|
47
48
|
*/
|
|
48
49
|
export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
@@ -79,6 +80,7 @@ export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
|
79
80
|
|
|
80
81
|
return (
|
|
81
82
|
<SafeAreaView
|
|
83
|
+
edges={["left", "right", "bottom"]}
|
|
82
84
|
style={[
|
|
83
85
|
styles.root,
|
|
84
86
|
{ backgroundColor: theme.colors.captureReviewBackground },
|
|
@@ -140,9 +142,7 @@ export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
|
140
142
|
</View>
|
|
141
143
|
</UseSmileIDCardSurface>
|
|
142
144
|
|
|
143
|
-
{showAttribution ?
|
|
144
|
-
<UseSmileIDAttribution forceLightMode theme={theme} />
|
|
145
|
-
) : null}
|
|
145
|
+
{showAttribution ? <UseSmileIDAttribution theme={theme} /> : null}
|
|
146
146
|
</SafeAreaView>
|
|
147
147
|
);
|
|
148
148
|
}
|
|
@@ -3,7 +3,7 @@ import { StyleSheet, View, type LayoutChangeEvent } from "react-native";
|
|
|
3
3
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
4
4
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
5
5
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
6
|
-
import
|
|
6
|
+
import { defaultFrameAspectRatio } from "../../core/models/document_type";
|
|
7
7
|
import { UseSmileIDAttribution } from "../components/use_smile_id_attribution";
|
|
8
8
|
import { UseSmileIDCapturedDocumentImage } from "../components/use_smile_id_captured_document_image";
|
|
9
9
|
import { UseSmileIDCapturedImageOval } from "../components/use_smile_id_captured_image_oval";
|
|
@@ -35,8 +35,8 @@ export type UseSmileIDProcessingScreenProps = {
|
|
|
35
35
|
* it (document-job variant).
|
|
36
36
|
*/
|
|
37
37
|
readonly documentImageUri?: string;
|
|
38
|
-
/** Capture
|
|
39
|
-
readonly
|
|
38
|
+
/** Capture-frame aspect ratio (width / height) for {@link documentImageUri}. Defaults to landscape. */
|
|
39
|
+
readonly documentAspectRatio?: number;
|
|
40
40
|
readonly showProgressPercentage?: boolean;
|
|
41
41
|
readonly showAttribution?: boolean;
|
|
42
42
|
readonly onContinue?: () => void;
|
|
@@ -117,7 +117,9 @@ export function UseSmileIDProcessingScreen(
|
|
|
117
117
|
>
|
|
118
118
|
{hasDocumentImage ? (
|
|
119
119
|
<UseSmileIDCapturedDocumentImage
|
|
120
|
-
|
|
120
|
+
aspectRatio={
|
|
121
|
+
props.documentAspectRatio ?? defaultFrameAspectRatio("Landscape")
|
|
122
|
+
}
|
|
121
123
|
{...(props.documentImageUri ? { uri: props.documentImageUri } : {})}
|
|
122
124
|
imageTestID="si_processing_document_image"
|
|
123
125
|
imageAccessibilityLabel={loc.siCdCapturedImage}
|
|
@@ -208,9 +210,7 @@ export function UseSmileIDProcessingScreen(
|
|
|
208
210
|
) : null}
|
|
209
211
|
</UseSmileIDCardSurface>
|
|
210
212
|
|
|
211
|
-
{showAttribution ?
|
|
212
|
-
<UseSmileIDAttribution forceLightMode theme={theme} />
|
|
213
|
-
) : null}
|
|
213
|
+
{showAttribution ? <UseSmileIDAttribution theme={theme} /> : null}
|
|
214
214
|
</SafeAreaView>
|
|
215
215
|
);
|
|
216
216
|
}
|
|
@@ -67,7 +67,7 @@ export type UseSmileIDColors = {
|
|
|
67
67
|
previewRejectBorder: string;
|
|
68
68
|
|
|
69
69
|
// --- Capture review (preview + processing page surface) --------
|
|
70
|
-
/**
|
|
70
|
+
/** Page surface behind the capture-review screens; light in the light theme, dark in the dark theme. */
|
|
71
71
|
captureReviewBackground: string;
|
|
72
72
|
|
|
73
73
|
// --- Processing / cards ----------------------------------------
|
|
@@ -221,7 +221,7 @@ const sharedTypography: UseSmileIDTypography = {
|
|
|
221
221
|
cardHeading: {
|
|
222
222
|
fontFamily: dmSans("800"),
|
|
223
223
|
fontSize: 20,
|
|
224
|
-
lineHeight:
|
|
224
|
+
lineHeight: 25.5,
|
|
225
225
|
fontWeight: "800",
|
|
226
226
|
letterSpacing: -0.425,
|
|
227
227
|
},
|
|
@@ -286,7 +286,7 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
286
286
|
|
|
287
287
|
background: "#F9FAFB",
|
|
288
288
|
cardBackground: "#FFFFFF",
|
|
289
|
-
instructionCardBackground: "#
|
|
289
|
+
instructionCardBackground: "#F9F0E7",
|
|
290
290
|
|
|
291
291
|
titleText: "#21232C",
|
|
292
292
|
cardText: "#5E646E",
|
|
@@ -296,11 +296,11 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
296
296
|
|
|
297
297
|
stroke: "#EAECF0",
|
|
298
298
|
|
|
299
|
-
warningFill: "#
|
|
300
|
-
warningIcon: "#
|
|
301
|
-
warningStroke: "#
|
|
302
|
-
successFill: "#
|
|
303
|
-
successIcon: "#
|
|
299
|
+
warningFill: "#EF43431A", // warning red @10%
|
|
300
|
+
warningIcon: "#EF4343",
|
|
301
|
+
warningStroke: "#EF43434D", // warning red @30%
|
|
302
|
+
successFill: "#00C8531A", // success green @10%
|
|
303
|
+
successIcon: "#00C853",
|
|
304
304
|
|
|
305
305
|
captureOverlayBackground: "#FFFFFFE5",
|
|
306
306
|
documentOverlayScrim: "#00000066", // black @40% — surround dim outside the frame
|
|
@@ -314,8 +314,9 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
314
314
|
ovalWarning: "#EF4343",
|
|
315
315
|
ovalDirectionalIndicator: "#EF4343",
|
|
316
316
|
|
|
317
|
-
// Preview
|
|
318
|
-
//
|
|
317
|
+
// Preview accept/reject tokens are theme-static (same in dark) so the
|
|
318
|
+
// review affordances read identically across themes; the page surface
|
|
319
|
+
// (`captureReviewBackground`) follows the active theme's background.
|
|
319
320
|
previewAcceptBackground: "#04B04A1A", // 10% green
|
|
320
321
|
previewAcceptIcon: "#12B76A",
|
|
321
322
|
previewAcceptBorder: "#04B04A4D", // 30% green
|
|
@@ -328,7 +329,7 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
328
329
|
cardShadow: "#0000001A", // black @10%
|
|
329
330
|
backButtonBorder: "#FFFFFF1A", // white @10% rim on the dark fill
|
|
330
331
|
|
|
331
|
-
smileIdYellow: "#
|
|
332
|
+
smileIdYellow: "#FDB515",
|
|
332
333
|
offBlack: "#2D2B2A",
|
|
333
334
|
offWhite: "#F9F0E7",
|
|
334
335
|
},
|
|
@@ -358,11 +359,11 @@ export const defaultDarkTheme: UseSmileIDTheme = {
|
|
|
358
359
|
// 15% alpha — divider stroke on dark surfaces.
|
|
359
360
|
stroke: "#EAECF026",
|
|
360
361
|
|
|
361
|
-
warningFill: "#
|
|
362
|
-
warningIcon: "#
|
|
363
|
-
warningStroke: "#
|
|
364
|
-
successFill: "#
|
|
365
|
-
successIcon: "#
|
|
362
|
+
warningFill: "#EA2D2D",
|
|
363
|
+
warningIcon: "#FFFFFF",
|
|
364
|
+
warningStroke: "#9F0000",
|
|
365
|
+
successFill: "#00E676",
|
|
366
|
+
successIcon: "#FFFFFF",
|
|
366
367
|
|
|
367
368
|
captureOverlayBackground: "#FFFFFFE5",
|
|
368
369
|
documentOverlayScrim: "#00000066", // black @40% — surround dim outside the frame (identical in dark)
|
|
@@ -376,20 +377,21 @@ export const defaultDarkTheme: UseSmileIDTheme = {
|
|
|
376
377
|
ovalWarning: "#EF4343",
|
|
377
378
|
ovalDirectionalIndicator: "#EF4343",
|
|
378
379
|
|
|
379
|
-
//
|
|
380
|
+
// Accept/reject affordances are theme-static (match light); the page
|
|
381
|
+
// surface behind them follows the dark background so cards read on-theme.
|
|
380
382
|
previewAcceptBackground: "#04B04A1A", // 10% green
|
|
381
383
|
previewAcceptIcon: "#12B76A",
|
|
382
384
|
previewAcceptBorder: "#04B04A4D", // 30% green
|
|
383
385
|
previewRejectBackground: "#F8FAFC",
|
|
384
386
|
previewRejectIcon: "#90A1B9",
|
|
385
387
|
previewRejectBorder: "#E2E8F0",
|
|
386
|
-
captureReviewBackground: "#
|
|
388
|
+
captureReviewBackground: "#1A1C23",
|
|
387
389
|
|
|
388
390
|
submittingIndicator: "#2CC05C",
|
|
389
391
|
cardShadow: "#0000001A", // black @10%
|
|
390
392
|
backButtonBorder: "#0000001A", // black @10% rim on the light fill
|
|
391
393
|
|
|
392
|
-
smileIdYellow: "#
|
|
394
|
+
smileIdYellow: "#FDB515",
|
|
393
395
|
offBlack: "#F9F0E7",
|
|
394
396
|
offWhite: "#2D2B2A",
|
|
395
397
|
},
|
|
@@ -6,10 +6,10 @@ export interface ForceMaxBrightnessProps {
|
|
|
6
6
|
/** Target brightness in the range 0.0–1.0. Defaults to 1.0 (max). */
|
|
7
7
|
readonly brightness?: number;
|
|
8
8
|
/**
|
|
9
|
-
* When false the component is a no-op. Defaults to true.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* When false the component is a no-op. Defaults to true. Every capture
|
|
10
|
+
* screen (selfie and document) mounts this enabled so the preview always
|
|
11
|
+
* runs at full brightness with the screen kept awake for the duration of
|
|
12
|
+
* the capture.
|
|
13
13
|
*/
|
|
14
14
|
readonly enabled?: boolean;
|
|
15
15
|
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { HybridObject } from "react-native-nitro-modules";
|
|
2
|
-
import type { Frame } from "react-native-vision-camera";
|
|
3
|
-
/**
|
|
4
|
-
* A provider's frame-processor Nitro HybridObject. Each provider module
|
|
5
|
-
* registers a platform-native implementation (Swift on iOS, Kotlin on
|
|
6
|
-
* Android) under its `frameProcessorPluginName`; the SDK resolves it by
|
|
7
|
-
* that key with {@link resolveFrameProcessorPlugin}.
|
|
8
|
-
*
|
|
9
|
-
* `call` runs the provider's scan session on the frame and returns the
|
|
10
|
-
* scan-result map serialised as a JSON string — pixels never enter JS.
|
|
11
|
-
* Frame-level failures return `{"error":"<reason>"}`; absent optional
|
|
12
|
-
* keys are omitted (never `null`). The worklet must `dispose()` the
|
|
13
|
-
* frame after the call.
|
|
14
|
-
*/
|
|
15
|
-
export interface UseSmileIDFrameProcessorPlugin extends HybridObject<{}> {
|
|
16
|
-
call(frame: Frame, rotation: number): string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Resolve a provider's frame-processor HybridObject by name, or `null`
|
|
20
|
-
* if it isn't registered natively.
|
|
21
|
-
*
|
|
22
|
-
* VisionCamera v5's `NitroModules.createHybridObject(...)` throws when the
|
|
23
|
-
* key is missing (v4's `VisionCameraProxy.initFrameProcessorPlugin`
|
|
24
|
-
* returned `null`). The throw is mapped back to `null` here so callers
|
|
25
|
-
* keep the v4 report-once-then-no-op behaviour for a missing plugin.
|
|
26
|
-
*/
|
|
27
|
-
export declare function resolveFrameProcessorPlugin(name: string): UseSmileIDFrameProcessorPlugin | null;
|
|
28
|
-
//# sourceMappingURL=frame_processor_plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frame_processor_plugin.d.ts","sourceRoot":"","sources":["../../src/camera/frame_processor_plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,8BAA+B,SAAQ,YAAY,CAAC,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GACX,8BAA8B,GAAG,IAAI,CAUvC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { NitroModules } from "react-native-nitro-modules";
|
|
2
|
-
/**
|
|
3
|
-
* Resolve a provider's frame-processor HybridObject by name, or `null`
|
|
4
|
-
* if it isn't registered natively.
|
|
5
|
-
*
|
|
6
|
-
* VisionCamera v5's `NitroModules.createHybridObject(...)` throws when the
|
|
7
|
-
* key is missing (v4's `VisionCameraProxy.initFrameProcessorPlugin`
|
|
8
|
-
* returned `null`). The throw is mapped back to `null` here so callers
|
|
9
|
-
* keep the v4 report-once-then-no-op behaviour for a missing plugin.
|
|
10
|
-
*/
|
|
11
|
-
export function resolveFrameProcessorPlugin(name) {
|
|
12
|
-
try {
|
|
13
|
-
return NitroModules.createHybridObject(name);
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
// Not registered natively — the caller surfaces a typed
|
|
17
|
-
// FrameProcessorPluginNotRegisteredException once on its own.
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=frame_processor_plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frame_processor_plugin.js","sourceRoot":"","sources":["../../src/camera/frame_processor_plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAoB1D;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAY;IAEZ,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,kBAAkB,CACpC,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;QACxD,8DAA8D;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { HybridObject } from "react-native-nitro-modules";
|
|
2
|
-
import type { Frame } from "react-native-vision-camera";
|
|
3
|
-
/**
|
|
4
|
-
* Shared shape of every provider's native VisionCamera v5 Nitro
|
|
5
|
-
* frame-processor HybridObject.
|
|
6
|
-
*
|
|
7
|
-
* Each provider package (`usesmileid_vision_face`,
|
|
8
|
-
* `usesmileid_mlkit_face`, …) ships a Nitro `HybridObject`
|
|
9
|
-
* implementation registered — via Nitro autolinking — under the name
|
|
10
|
-
* the analyzer exposes as `frameProcessorPluginName`. The camera layer
|
|
11
|
-
* resolves it by that name with
|
|
12
|
-
* `NitroModules.createHybridObject<UseSmileIDFrameProcessor>(name)`,
|
|
13
|
-
* keeping the cross-bridge identifier in the single per-provider
|
|
14
|
-
* `identifiers` registry (no second string literal here).
|
|
15
|
-
*
|
|
16
|
-
* `call` runs the provider's native scan session on the frame and
|
|
17
|
-
* returns the scan-result map serialised as JSON — pixels never enter
|
|
18
|
-
* the JS runtime. Frame-level failures return `{"error":"<reason>"}`.
|
|
19
|
-
* The JSON is parsed and Zod-validated on the JS thread by
|
|
20
|
-
* `useSmileIDFrameStream`; absent optional keys are omitted natively
|
|
21
|
-
* (never serialised as `null`, which the wire schemas reject).
|
|
22
|
-
*
|
|
23
|
-
* The platform tag here is only structural — it satisfies the
|
|
24
|
-
* `createHybridObject` generic bound. Each provider's own `.nitro.ts`
|
|
25
|
-
* spec declares its real (iOS-only or Android-only) platform.
|
|
26
|
-
*/
|
|
27
|
-
export interface UseSmileIDFrameProcessor extends HybridObject<{
|
|
28
|
-
ios: "swift";
|
|
29
|
-
android: "kotlin";
|
|
30
|
-
}> {
|
|
31
|
-
/**
|
|
32
|
-
* Run the native scan on `frame` with the physical device tilt
|
|
33
|
-
* `rotation` (clockwise degrees, `0` = upright portrait). Returns the
|
|
34
|
-
* scan-result map as a JSON string.
|
|
35
|
-
*/
|
|
36
|
-
call(frame: Frame, rotation: number): string;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=use_smile_id_frame_processor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use_smile_id_frame_processor.d.ts","sourceRoot":"","sources":["../../src/camera/use_smile_id_frame_processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,wBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use_smile_id_frame_processor.js","sourceRoot":"","sources":["../../src/camera/use_smile_id_frame_processor.ts"],"names":[],"mappings":""}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Translucent in-frame document glyph — the "what to align here" hint shown
|
|
3
|
-
* while idle/positioning, hidden once capture begins.
|
|
4
|
-
*
|
|
5
|
-
* PLACEHOLDER: static card illustration standing in for the per-document-type
|
|
6
|
-
* capture Lottie (not finalised). Swap point: replace the body with the resolved
|
|
7
|
-
* Lottie for `documentType` + `isLandscape`; the call site and props stay the same.
|
|
8
|
-
*/
|
|
9
|
-
export type UseSmileIDDocumentFrameGlyphProps = {
|
|
10
|
-
readonly width: number;
|
|
11
|
-
readonly height: number;
|
|
12
|
-
/** Landscape (ID card): photo left + lines right. Portrait: header + lines, photo bottom-left. */
|
|
13
|
-
readonly isLandscape: boolean;
|
|
14
|
-
readonly testID?: string;
|
|
15
|
-
};
|
|
16
|
-
export declare const UseSmileIDDocumentFrameGlyph: import("react").MemoExoticComponent<(props: UseSmileIDDocumentFrameGlyphProps) => import("react").JSX.Element | null>;
|
|
17
|
-
//# sourceMappingURL=use_smile_id_document_frame_glyph.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use_smile_id_document_frame_glyph.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_frame_glyph.tsx"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kGAAkG;IAClG,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAUF,eAAO,MAAM,4BAA4B,8CAE9B,iCAAiC,wCAoI3C,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { memo } from "react";
|
|
3
|
-
import Svg, { Rect } from "react-native-svg";
|
|
4
|
-
/** Translucent white — readable over the dimmed feed without hiding it. */
|
|
5
|
-
const GLYPH_COLOR = "#FFFFFF8C"; // white @ ~55%
|
|
6
|
-
/** Faint card fill so the skeleton reads as one document card, not loose bars. */
|
|
7
|
-
const CARD_FILL = "#FFFFFF26"; // white @ ~15%
|
|
8
|
-
const CORNER = 6;
|
|
9
|
-
/** Card-fill corner radius — matches the overlay frame's 8px radius. */
|
|
10
|
-
const FRAME_FILL_CORNER = 8;
|
|
11
|
-
export const UseSmileIDDocumentFrameGlyph = memo(function UseSmileIDDocumentFrameGlyph(props) {
|
|
12
|
-
const { width: w, height: h, isLandscape } = props;
|
|
13
|
-
if (w <= 0 || h <= 0)
|
|
14
|
-
return null;
|
|
15
|
-
return (_jsxs(Svg, { width: w, height: h, viewBox: `0 0 ${w} ${h}`, preserveAspectRatio: "none", ...(props.testID !== undefined ? { testID: props.testID } : {}), children: [_jsx(Rect, { x: 0, y: 0, width: w, height: h, rx: FRAME_FILL_CORNER, fill: CARD_FILL }), isLandscape ? (_jsxs(_Fragment, { children: [_jsx(Rect, { x: w * 0.08, y: h * 0.2, width: w * 0.3, height: h * 0.6, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.26, width: w * 0.4, height: h * 0.07, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.4, width: w * 0.44, height: h * 0.07, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.54, width: w * 0.36, height: h * 0.07, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.68, width: w * 0.28, height: h * 0.07, rx: CORNER, fill: GLYPH_COLOR })] })) : (_jsxs(_Fragment, { children: [_jsx(Rect, { x: w * 0.1, y: h * 0.12, width: w * 0.8, height: h * 0.08, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.1, y: h * 0.26, width: w * 0.6, height: h * 0.05, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.1, y: h * 0.36, width: w * 0.65, height: h * 0.05, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.1, y: h * 0.56, width: w * 0.3, height: h * 0.28, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.6, width: w * 0.44, height: h * 0.05, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.7, width: w * 0.4, height: h * 0.05, rx: CORNER, fill: GLYPH_COLOR }), _jsx(Rect, { x: w * 0.46, y: h * 0.8, width: w * 0.3, height: h * 0.05, rx: CORNER, fill: GLYPH_COLOR })] }))] }));
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=use_smile_id_document_frame_glyph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use_smile_id_document_frame_glyph.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_frame_glyph.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { ScanHeadTurnDirection } from "usesmileid_bridge";
|
|
2
|
-
import { type UseSmileIDOverlayState as OverlayState } from "../state/use_smile_id_overlay_state";
|
|
3
|
-
export type UseSmileIDEnhancedSmartSelfieAnimationProps = {
|
|
4
|
-
readonly overlayState: OverlayState;
|
|
5
|
-
/** Active head-turn direction from the scan state, null outside a turn. */
|
|
6
|
-
readonly direction: ScanHeadTurnDirection | null;
|
|
7
|
-
readonly containerWidth: number;
|
|
8
|
-
readonly containerHeight: number;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Enhanced Smart Selfie head-turn cue. One composition
|
|
12
|
-
* (`si_ess_animation_all_directions`) carries all three turns:
|
|
13
|
-
*
|
|
14
|
-
* - No active direction while idle / pre-capture → the whole
|
|
15
|
-
* composition loops as the pre-turn primer.
|
|
16
|
-
* - During a head turn → only that direction's frame sub-range plays,
|
|
17
|
-
* ping-ponging until the turn completes.
|
|
18
|
-
* - Reduced motion → the clip's final (turned-head) frame holds.
|
|
19
|
-
*
|
|
20
|
-
* The caller gates rendering to selfie capture with Enhanced Smart
|
|
21
|
-
* Selfie enabled.
|
|
22
|
-
*/
|
|
23
|
-
export declare function UseSmileIDEnhancedSmartSelfieAnimation(props: UseSmileIDEnhancedSmartSelfieAnimationProps): import("react").JSX.Element | null;
|
|
24
|
-
//# sourceMappingURL=use_smile_id_enhanced_smart_selfie_animation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use_smile_id_enhanced_smart_selfie_animation.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_enhanced_smart_selfie_animation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAEL,KAAK,sBAAsB,IAAI,YAAY,EAC5C,MAAM,qCAAqC,CAAC;AAuB7C,MAAM,MAAM,2CAA2C,GAAG;IACxD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,2CAA2C,sCAkFnD"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef } from "react";
|
|
3
|
-
import { Animated, Easing, View } from "react-native";
|
|
4
|
-
import LottieView from "lottie-react-native";
|
|
5
|
-
import { UseSmileIDOverlayState, } from "../state/use_smile_id_overlay_state";
|
|
6
|
-
import { useReducedMotion } from "../utils/use_reduced_motion";
|
|
7
|
-
import { FaceOvalDefaults } from "./face_oval_defaults";
|
|
8
|
-
import { ENHANCED_SMART_SELFIE_FRAME_RATE, ENHANCED_SMART_SELFIE_TOTAL_FRAMES, EnhancedSmartSelfieAnimationFrames, } from "./helpers/enhanced_smart_selfie_animation_frames";
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
10
|
-
const ALL_DIRECTIONS_ANIMATION = require("../assets/si_ess_animation_all_directions.json");
|
|
11
|
-
/** Square box the head-turn cue renders in, centred on the oval. */
|
|
12
|
-
const ENHANCED_SMART_SELFIE_ANIMATION_SIZE = 383;
|
|
13
|
-
/** Nudge so the composition's face lands on the oval centre. */
|
|
14
|
-
const VERTICAL_ALIGNMENT_OFFSET = -15;
|
|
15
|
-
// Widens `progress` to accept an Animated.Value (lottie-react-native
|
|
16
|
-
// types it as `number`, but the runtime accepts the value) without an
|
|
17
|
-
// unsafe cast.
|
|
18
|
-
const AnimatedLottieView = Animated.createAnimatedComponent(LottieView);
|
|
19
|
-
/**
|
|
20
|
-
* Enhanced Smart Selfie head-turn cue. One composition
|
|
21
|
-
* (`si_ess_animation_all_directions`) carries all three turns:
|
|
22
|
-
*
|
|
23
|
-
* - No active direction while idle / pre-capture → the whole
|
|
24
|
-
* composition loops as the pre-turn primer.
|
|
25
|
-
* - During a head turn → only that direction's frame sub-range plays,
|
|
26
|
-
* ping-ponging until the turn completes.
|
|
27
|
-
* - Reduced motion → the clip's final (turned-head) frame holds.
|
|
28
|
-
*
|
|
29
|
-
* The caller gates rendering to selfie capture with Enhanced Smart
|
|
30
|
-
* Selfie enabled.
|
|
31
|
-
*/
|
|
32
|
-
export function UseSmileIDEnhancedSmartSelfieAnimation(props) {
|
|
33
|
-
const reducedMotion = useReducedMotion();
|
|
34
|
-
const progress = useRef(new Animated.Value(0)).current;
|
|
35
|
-
const direction = props.direction;
|
|
36
|
-
const showFullLoop = direction === null &&
|
|
37
|
-
(props.overlayState === UseSmileIDOverlayState.INSTRUCTION ||
|
|
38
|
-
props.overlayState === UseSmileIDOverlayState.IDLE);
|
|
39
|
-
const visible = direction !== null || showFullLoop;
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
if (!visible)
|
|
42
|
-
return undefined;
|
|
43
|
-
const range = direction
|
|
44
|
-
? EnhancedSmartSelfieAnimationFrames[direction]
|
|
45
|
-
: { startFrame: 0, endFrame: ENHANCED_SMART_SELFIE_TOTAL_FRAMES };
|
|
46
|
-
const startProgress = range.startFrame / ENHANCED_SMART_SELFIE_TOTAL_FRAMES;
|
|
47
|
-
const endProgress = range.endFrame / ENHANCED_SMART_SELFIE_TOTAL_FRAMES;
|
|
48
|
-
if (reducedMotion) {
|
|
49
|
-
progress.setValue(endProgress);
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
const duration = ((range.endFrame - range.startFrame) /
|
|
53
|
-
ENHANCED_SMART_SELFIE_FRAME_RATE) *
|
|
54
|
-
1000;
|
|
55
|
-
progress.setValue(startProgress);
|
|
56
|
-
const forward = Animated.timing(progress, {
|
|
57
|
-
toValue: endProgress,
|
|
58
|
-
duration,
|
|
59
|
-
easing: Easing.linear,
|
|
60
|
-
useNativeDriver: false,
|
|
61
|
-
});
|
|
62
|
-
const animation = direction
|
|
63
|
-
? // Ping-pong the direction's clip so the cue keeps gesturing
|
|
64
|
-
// without snapping back to the forward pose.
|
|
65
|
-
Animated.loop(Animated.sequence([
|
|
66
|
-
forward,
|
|
67
|
-
Animated.timing(progress, {
|
|
68
|
-
toValue: startProgress,
|
|
69
|
-
duration,
|
|
70
|
-
easing: Easing.linear,
|
|
71
|
-
useNativeDriver: false,
|
|
72
|
-
}),
|
|
73
|
-
]))
|
|
74
|
-
: Animated.loop(forward);
|
|
75
|
-
animation.start();
|
|
76
|
-
return () => animation.stop();
|
|
77
|
-
}, [visible, direction, reducedMotion, progress]);
|
|
78
|
-
if (!visible || props.containerWidth <= 0 || props.containerHeight <= 0) {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
const size = ENHANCED_SMART_SELFIE_ANIMATION_SIZE;
|
|
82
|
-
const ovalCenterY = props.containerHeight * FaceOvalDefaults.ovalCenterYRatio;
|
|
83
|
-
return (_jsx(View, { pointerEvents: "none", style: {
|
|
84
|
-
position: "absolute",
|
|
85
|
-
left: (props.containerWidth - size) / 2,
|
|
86
|
-
top: ovalCenterY - size / 2 + VERTICAL_ALIGNMENT_OFFSET,
|
|
87
|
-
width: size,
|
|
88
|
-
height: size,
|
|
89
|
-
}, testID: "si_ess_direction_animation", children: _jsx(AnimatedLottieView, { source: ALL_DIRECTIONS_ANIMATION, progress: progress, style: { width: "100%", height: "100%" } }) }));
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=use_smile_id_enhanced_smart_selfie_animation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use_smile_id_enhanced_smart_selfie_animation.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_enhanced_smart_selfie_animation.tsx"],"names":[],"mappings":"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"}
|