@nuralogix.ai/web-measurement-embedded-app 0.1.0-alpha.4 → 0.1.0-alpha.6

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.
@@ -0,0 +1,23 @@
1
+ {
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "Kameraberechtigung erforderlich",
3
+ "CAMERA_START_ERROR": "Die Kamera kann nicht gestartet werden. Stellen Sie sicher, dass die Kamera angeschlossen ist und nicht von einer anderen Anwendung verwendet wird.",
4
+ "CANCEL": "Abbrechen",
5
+ "ERR_FACE_NONE": "Bitte halten Sie Ihr Gesicht während der gesamten Messung zentriert im Umriss",
6
+ "ERR_MSG_SNR": "Die Messung des Blutflusses war nicht zuverlässig\nBitte sorgen Sie für gleichmäßige Beleuchtung auf Ihrem Gesicht und bleiben Sie ruhig",
7
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "Die Messung ist fehlgeschlagen, weil der Tab gewechselt oder das Browserfenster minimiert wurde. Bitte stellen Sie sicher, dass der Tab geöffnet und aktiv bleibt.",
8
+ "HELP_ACCESSORIES": "Entfernen Sie Accessoires wie Brillen und Hüte sowie eventuell aufgetragenes Make-up, bevor Sie die Messung durchführen.",
9
+ "HELP_CAMERA": "Richten Sie Ihr Gesicht zur Kamera aus und positionieren Sie es während der gesamten Messung innerhalb des Kreises.",
10
+ "HELP_STAY": "Bleiben Sie während der Messung für 30 Sekunden still, bis die Messung abgeschlossen ist.",
11
+ "HELP_TITLE": "Hilfe",
12
+ "MEASURE_INSTRUCTION1": "Bitte halten Sie still",
13
+ "MEASURE_INSTRUCTION2": "Bereit zur Messung",
14
+ "MEASURE_INSTRUCTIONS_NO_FACE": "Bitte zentrieren Sie Ihr Gesicht im Kreis",
15
+ "NO_DEVICES_FOUND": "Keine Geräte gefunden",
16
+ "PLEASE_WAIT": "Bitte warten, die Messung beginnt in Kürze…",
17
+ "SELECT_CAMERA": "Wählen Sie eine Kamera, um zu beginnen",
18
+ "START_CAMERA": "Kamera starten",
19
+ "START_MEASUREMENT": "Messung starten",
20
+ "WAITING_FOR_RESULTS": "Warten auf Ergebnisse",
21
+ "WARNING_CONSTRAINT_DISTANCE": "Das Gesicht ist zu weit entfernt\nBitte bewegen Sie sich näher zur Kamera",
22
+ "WARNING_CONSTRAINT_GAZE": "Bitte schauen Sie direkt in die Kamera"
23
+ }
@@ -1,25 +1,26 @@
1
1
  {
2
- "BTN_START_MEASUREMENT": "Start Measurement",
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "Camera permission required",
3
+ "CAMERA_START_ERROR": "Can not start the camera, please make sure that the camera is connected and it is not being used by another application.",
3
4
  "CANCEL": "Cancel",
4
5
  "ERR_FACE_NONE": "Please keep your face centred within the outline throughout the measurement",
5
6
  "ERROR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "Measurement failed because the tab was switched or the browser window was minimized. Please ensure the tab remains open and active.",
6
- "KIOSK_HELP_CAMERA": "Face the camera and position your face within the circle throughout the measurement.",
7
- "KIOSK_HELP_ACCESSORIES": "Remove any accessories such as glasses and hats, including any makeup products on your face before measuring.",
8
- "KIOSK_HELP_STAY": "When the measurement has started, stay in position for 30 seconds until the measurement is completed.",
7
+ "ERR_MSG_SNR": "The blood flow measurement was not reliable.\nPlease try to allow the light to fall evenly across your face while holding still",
8
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "Measurement failed because the tab was switched or the browser window was minimized. Please ensure the tab remains open and active.",
9
+ "HELP_ACCESSORIES": "Remove any accessories such as glasses and hats, including any makeup products on your face before measuring.",
10
+ "HELP_CAMERA": "Face the camera and position your face within the circle throughout the measurement.",
11
+ "HELP_STAY": "When the measurement has started, stay in position for 30 seconds until the measurement is completed.",
9
12
  "HELP_TITLE": "Help",
13
+ "MEASURE_INSTRUCTIONS_NO_FACE": "Please center your face in the shape and wait while detecting faces",
10
14
  "NO_DEVICES_FOUND": "No devices found",
15
+ "PLEASE_HOLD_STILL": "Please hold still",
16
+ "PLEASE_WAIT": "Please wait, measurement will start soon…",
17
+ "READY_TO_MEASURE": "Ready to measure",
18
+ "SELECT_CAMERA": "Select a camera to begin",
19
+ "START_CAMERA": "Start Camera",
20
+ "START_MEASUREMENT": "Start Measurement",
11
21
  "STOP_CAMERA": "Stop camera",
12
- "WEB_BTN_SELECT_CAMERA": "Select a camera to begin",
13
- "WEB_BTN_START_CAMERA": "Start Camera",
14
- "WEB_CAMERA_START_ERROR": "Can not start the camera, please make sure that the camera is connected and it is not being used by another application.",
15
- "WEB_CAMERA_PERMISSION_REQUIRED_TITLE": "Camera permission required",
16
- "WEB_MEASURE_INSTRUCTIONS_NO_FACE": "Please center your face in the shape and wait while detecting faces",
17
- "WEB_PLEASE_WAIT": "Please wait, measurement will start soon…",
18
22
  "WAITING_FOR_RESULTS": "Waiting for results",
19
- "WARNING_CONSTRAINT_GAZE": "Please look directly into the camera",
20
23
  "WARNING_CONSTRAINT_DISTANCE": "The face is too far. Please try to move closer to the camera",
21
- "PLEASE_HOLD_STILL": "Please hold still",
22
- "READY_TO_MEASURE": "Ready to measure",
23
- "ERR_LOADING_CONFIGURATIONS": "You cannot access this service due to a configuration loading error. Please contact your system administrator for assistance.",
24
- "ERR_MSG_SNR": "The blood flow measurement was not reliable.\nPlease try to allow the light to fall evenly across your face while holding still"
24
+ "WARNING_CONSTRAINT_GAZE": "Please look directly into the camera",
25
+ "ERR_LOADING_CONFIGURATIONS": "You cannot access this service due to a configuration loading error. Please contact your system administrator for assistance."
25
26
  }
@@ -0,0 +1,23 @@
1
+ {
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "Se requiere permiso de cámara",
3
+ "CAMERA_START_ERROR": "No se puede iniciar la cámara, asegúrese de que la cámara esté conectada y de que no la esté usando otra aplicación.",
4
+ "CANCEL": "Cancelar",
5
+ "ERR_FACE_NONE": "Mantenga su cara centrada en el contorno durante toda la medición",
6
+ "ERR_MSG_SNR": "La medición del flujo sanguíneo no es fiable\nIntente que la luz le dé en la cara de manera uniforme y permanezca quieto",
7
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "La medición falló porque se cambió la pestaña o se minimizó la ventana del navegador. Asegúrese de que la pestaña permanezca abierta y activa.",
8
+ "HELP_ACCESSORIES": "Quite todos los complementos como gafas y sombreros, incluido cualquier producto de maquillaje de su cara antes de la medición.",
9
+ "HELP_CAMERA": "Mire a la cámara y sitúe su cara dentro del círculo durante toda la medición.",
10
+ "HELP_STAY": "Una vez comenzada la medición, permanezca quieto/a durante 30 segundos hasta que se haya completado la medición.",
11
+ "HELP_TITLE": "Ayuda",
12
+ "MEASURE_INSTRUCTION1": "No se mueva.",
13
+ "MEASURE_INSTRUCTION2": "Todo está listo para comenzar\nla medición.",
14
+ "MEASURE_INSTRUCTIONS_NO_FACE": "Ubique su rostro en el centro del círculo.",
15
+ "NO_DEVICES_FOUND": "No se encontraron dispositivos",
16
+ "PLEASE_WAIT": "Por favor, espere, la medición comenzará pronto…",
17
+ "SELECT_CAMERA": "Para comenzar, seleccione una cámara",
18
+ "START_CAMERA": "Iniciar la cámara",
19
+ "START_MEASUREMENT": "Comenzar medición",
20
+ "WAITING_FOR_RESULTS": "Esperando resultados.",
21
+ "WARNING_CONSTRAINT_DISTANCE": "Su cara está demasiado lejos\nAcérquese más a la cámara",
22
+ "WARNING_CONSTRAINT_GAZE": "Por favor, mire directamente a la cámara"
23
+ }
@@ -1,12 +1,16 @@
1
1
  {
2
- "BTN_START_MEASUREMENT": "Démarrer la mesure",
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "Autorisation requise pour utiliser la caméra",
3
+ "CAMERA_START_ERROR": "Impossible de démarrer la caméra. Veuillez vous assurer que la caméra est connectée et qu’elle n’est pas utilisée par une autre application.",
3
4
  "CANCEL": "Annuler",
4
5
  "ERR_FACE_NONE": "Veuillez garder votre visage centré dans le contour pendant toute la mesure",
5
6
  "ERROR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "La mesure a échoué car l’onglet a été changé ou la fenêtre du navigateur a été minimisée. Veuillez vous assurer que l’onglet reste ouvert et actif.",
6
- "KIOSK_HELP_CAMERA": "Veuillez faire face à l'appareil photo et positionner votre visage dans le cercle pendant toute la durée de la mesure.",
7
- "KIOSK_HELP_ACCESSORIES": "Veuillez retirer tous les accessoires de votre visage avant la mesure, par exemple des lunettes, un chapeau ou le maquillage.",
8
- "KIOSK_HELP_STAY": "Lorsque la mesure a commencé, gardez la même position pendant 30 secondes, jusqu'à la fin de l'opération.",
7
+ "ERR_MSG_SNR": "Le mesure du flux sanguin n'est pas fiable.\nVeuillez rester immobile et ajuster l'éclairage afin que la lumière soit uniformément répartie sur votre visage",
8
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "La mesure a échoué car l’onglet a été changé ou la fenêtre du navigateur a été minimisée. Veuillez vous assurer que l’onglet reste ouvert et actif.",
9
+ "HELP_ACCESSORIES": "Veuillez retirer tous les accessoires de votre visage avant la mesure, par exemple des lunettes, un chapeau ou le maquillage.",
10
+ "HELP_CAMERA": "Veuillez faire face à l'appareil photo et positionner votre visage dans le cercle pendant toute la durée de la mesure.",
11
+ "HELP_STAY": "Lorsque la mesure a commencé, gardez la même position pendant 30 secondes, jusqu'à la fin de l'opération.",
9
12
  "HELP_TITLE": "Aide",
13
+ "MEASURE_INSTRUCTIONS_NO_FACE": "Veuillez centrer votre visage dans le cercle",
10
14
  "NO_DEVICES_FOUND": "Aucun appareil détecté",
11
15
  "STOP_CAMERA": "Arrêter la caméra",
12
16
  "WEB_BTN_SELECT_CAMERA": "Sélectionner une caméra pour commencer",
@@ -15,10 +19,14 @@
15
19
  "WEB_CAMERA_PERMISSION_REQUIRED_TITLE": "Autorisation requise pour utiliser la caméra",
16
20
  "WEB_PLEASE_WAIT": "Veuillez patienter, la mesure va bientôt commencer…",
17
21
  "WEB_MEASURE_INSTRUCTIONS_NO_FACE": "Veuillez centrer votre visage dans le cercle",
18
- "WARNING_CONSTRAINT_GAZE": "Veuillez regarder directement l'appareil photo",
19
- "WARNING_CONSTRAINT_DISTANCE": "Votre visage est trop éloigné. Essayez de vous rapprocher de la caméra",
20
22
  "PLEASE_HOLD_STILL": "Veuillez rester immobile",
23
+ "PLEASE_WAIT": "Veuillez patienter, la mesure va bientôt commencer…",
24
+ "SELECT_CAMERA": "Sélectionner une caméra pour commencer",
25
+ "START_CAMERA": "Démarrer la caméra",
26
+ "START_MEASUREMENT": "Démarrer la mesure",
21
27
  "WAITING_FOR_RESULTS": "Dans l’attente des résultats",
22
- "ERR_LOADING_CONFIGURATIONS": "Vous ne pouvez pas accéder à ce service en raison d'une erreur de chargement de la configuration. Veuillez contacter votre administrateur système pour obtenir de l'aide.",
23
- "ERR_MSG_SNR": "Le mesure du flux sanguin n'est pas fiable.\nVeuillez rester immobile et ajuster l'éclairage afin que la lumière soit uniformément répartie sur votre visage"
28
+ "READY_TO_MEASURE": "Prêt à mesurer",
29
+ "WARNING_CONSTRAINT_DISTANCE": "Votre visage est trop éloigné. Essayez de vous rapprocher de la caméra",
30
+ "WARNING_CONSTRAINT_GAZE": "Veuillez regarder directement l'appareil photo",
31
+ "ERR_LOADING_CONFIGURATIONS": "Vous ne pouvez pas accéder à ce service en raison d'une erreur de chargement de la configuration. Veuillez contacter votre administrateur système pour obtenir de l'aide."
24
32
  }
@@ -0,0 +1,23 @@
1
+ {
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "È necessaria l'autorizzazione per l’uso della telecamera",
3
+ "CAMERA_START_ERROR": "Impossibile avviare la fotocamera, assicurati che sia correttamente collegata e che non la stia utilizzando nessun'altra applicazione.",
4
+ "CANCEL": "Indietro",
5
+ "ERR_FACE_NONE": "Per favore mantieni il viso all'interno del contorno per tutta la durata della misurazione ",
6
+ "ERR_MSG_SNR": "La misurazione del flusso sanguigno non è affidabile Per favore cerca di stare fermo e di far cadere la luce sul volto in maniera uniforme",
7
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "La misurazione non è riuscita perché la scheda è stata cambiata o la finestra del browser è stata minimizzata. Assicurati che la scheda rimanga aperta e attiva.",
8
+ "HELP_ACCESSORIES": "Prima della misurazione togliere tutti gli accessori come occhiali e cappelli, compresi i prodotti di make up dal viso.",
9
+ "HELP_CAMERA": "Posizionarsi davanti alla fotocamera con il viso all'interno del cerchio per tutta la durata della misurazione.",
10
+ "HELP_STAY": "Iniziata la misurazione, rimanere in posizione per 30 secondi fino al completamento della misurazione.",
11
+ "HELP_TITLE": "Guida",
12
+ "MEASURE_INSTRUCTION1": "Sei pregato di rimanere immobile",
13
+ "MEASURE_INSTRUCTION2": "Pronto per iniziare la misurazione",
14
+ "MEASURE_INSTRUCTIONS_NO_FACE": "Centra il tuo volto nel cerchio",
15
+ "NO_DEVICES_FOUND": "Nessun dispositivo trovato",
16
+ "PLEASE_WAIT": "Per favore, aspetta, la misurazione inizierà presto…",
17
+ "SELECT_CAMERA": "Selezionare una fotocamera per iniziare",
18
+ "START_CAMERA": "Avviare Fotocamera",
19
+ "START_MEASUREMENT": "Inizia la misurazione",
20
+ "WAITING_FOR_RESULTS": "In attesa dei risultati",
21
+ "WARNING_CONSTRAINT_DISTANCE": "Il tuo volto è troppo lontano\nPer favore avvicinati alla fotocamera",
22
+ "WARNING_CONSTRAINT_GAZE": "Per favore guarda direttamente in camera"
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "カメラ権限が必要です",
3
+ "CAMERA_START_ERROR": "カメラを起動できません。カメラが接続されており、別のアプリケーションによって使用中でないことを確認してください。",
4
+ "CANCEL": "キャンセル",
5
+ "ERR_FACE_NONE": "測定中は枠線内の中心に顔を配置したままにしてください",
6
+ "ERR_MSG_SNR": "血流の測定結果の信頼性を確保できませんでした\n身体を動かさずに、ユーザーの顔全体が均等に照らされるようにしてください",
7
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "タブが切り替えられたか、ブラウザのウィンドウが最小化されたため、測定に失敗しました。タブが開いたままでアクティブであることを確認してください。",
8
+ "HELP_ACCESSORIES": "メガネや帽子などのアクセサリを外し、お顔の化粧を落としてから測定してください。",
9
+ "HELP_CAMERA": "カメラに顔を向け、測定中は顔が円の中に収まるように位置を合わせてください。",
10
+ "HELP_STAY": "測定が開始したら、測定が完了するまで30秒間は動かないでください。",
11
+ "HELP_TITLE": "ヘルプ",
12
+ "MEASURE_INSTRUCTION1": "身体を動かさないでください",
13
+ "MEASURE_INSTRUCTION2": "測定準備完了",
14
+ "MEASURE_INSTRUCTIONS_NO_FACE": "顔の位置を円の中心に合わせてください",
15
+ "NO_DEVICES_FOUND": "デバイスが見つかりません",
16
+ "PLEASE_WAIT": "お待ちください、測定がまもなく開始されます…",
17
+ "SELECT_CAMERA": "カメラを選択して開始",
18
+ "START_CAMERA": "カメラを起動",
19
+ "START_MEASUREMENT": "測定を開始する",
20
+ "WAITING_FOR_RESULTS": "結果が出るまで待機しています",
21
+ "WARNING_CONSTRAINT_DISTANCE": "顔が離れすぎています\nカメラにもっと近付いてみてください",
22
+ "WARNING_CONSTRAINT_GAZE": "カメラの方を真っ直ぐ見てください"
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "CAMERA_PERMISSION_REQUIRED_TITLE": "É necessária permissão para câmara",
3
+ "CAMERA_START_ERROR": "Não é possível iniciar a câmara, certifique-se de que a câmara está ligada e não está a ser utilizada por outra aplicação.",
4
+ "CANCEL": "Cancelar",
5
+ "ERR_FACE_NONE": "Mantenha o seu rosto no centro, dentro dos limites traçados, durante a medição",
6
+ "ERR_MSG_SNR": "A medição do fluxo sanguíneo não foi fiável\nTente fazer com que a luz incida uniformemente em todo o seu rosto enquanto se mantém imóvel",
7
+ "ERR_TAB_SWITCHED_OR_WINDOW_MINIMIZED": "A medição falhou porque o separador foi trocado ou a janela do navegador foi minimizada. Certifique-se de que o separador permanece aberto e ativo.",
8
+ "HELP_ACCESSORIES": "Remova todos os acessórios, tais como óculos e chapéus, incluindo todos os produtos de maquilhagem do seu rosto, antes de medir.",
9
+ "HELP_CAMERA": "Olhe para a câmara e posicione o seu rosto dentro do círculo durante a medição.",
10
+ "HELP_STAY": "Assim que a medição começar, mantenha a sua posição durante 30 segundos até que a medição seja concluída.",
11
+ "HELP_TITLE": "Ajuda",
12
+ "MEASURE_INSTRUCTION1": "Não se mexa",
13
+ "MEASURE_INSTRUCTION2": "Pronto para realizar a medição",
14
+ "MEASURE_INSTRUCTIONS_NO_FACE": "Centre a sua cara no círculo",
15
+ "NO_DEVICES_FOUND": "Nenhum dispositivo encontrado",
16
+ "PLEASE_WAIT": "Por favor, espere, a medição começará em breve…",
17
+ "SELECT_CAMERA": "Selecionar câmara para começar",
18
+ "START_CAMERA": "Iniciar câmara",
19
+ "START_MEASUREMENT": "Iniciar medição",
20
+ "WAITING_FOR_RESULTS": "À espera de resultados",
21
+ "WARNING_CONSTRAINT_DISTANCE": "O seu rosto está demasiado longe\nTente aproximar-se da câmara",
22
+ "WARNING_CONSTRAINT_GAZE": "Olhe diretamente para a câmara"
23
+ }
package/dist/stylex.css CHANGED
@@ -67,16 +67,20 @@
67
67
  justify-content: center;
68
68
  }
69
69
 
70
- .justifyContent-x1qughib {
71
- justify-content: space-between;
70
+ .justifyContent-x1nhvcw1 {
71
+ justify-content: flex-start;
72
+ }
73
+
74
+ .position-x10l6tqk {
75
+ position: absolute;
72
76
  }
73
77
 
74
78
  .position-x1n2onr6 {
75
79
  position: relative;
76
80
  }
77
81
 
78
- .textAlign-x2b8uid {
79
- text-align: center;
82
+ .transform-xuuh30 {
83
+ transform: translateX(-50%);
80
84
  }
81
85
 
82
86
  .visibility-xlshs6z {
@@ -89,6 +93,10 @@
89
93
  height: 100%;
90
94
  }
91
95
 
96
+ .left-x1nrll8i {
97
+ left: 50%;
98
+ }
99
+
92
100
  .marginTop-x1mjqqkp {
93
101
  margin-top: .5rem;
94
102
  }
package/lib/index.d.ts CHANGED
@@ -826,14 +826,20 @@ declare const DFX_POINTS: {
826
826
  };
827
827
  type DfxPointId = keyof typeof DFX_POINTS;
828
828
  interface Demographics {
829
+ /** age: 13-120 years */
829
830
  age: number;
831
+ /** height: 120-220 cm */
830
832
  height: number;
833
+ /** weight: 30-300 kg */
831
834
  weight: number;
835
+ /** sex: 0 (not provided), 2 (male), 3 (female) */
832
836
  sex: number;
837
+ /** smoking: 1 (non-smoker), 0 (smoker) */
833
838
  smoking: number;
839
+ /** bloodPressureMedication: 0 (not on medication), 1 (on medication) */
834
840
  bloodPressureMedication: number;
841
+ /** diabetes: 4 (none), 5 (type 1), 6 (type 2) */
835
842
  diabetes: number;
836
- unit: 'Metric' | 'Imperial';
837
843
  }
838
844
  interface ResultsError {
839
845
  code: RealtimeResultErrors | 'OK';
@@ -843,6 +849,18 @@ interface ResultsError {
843
849
  };
844
850
  };
845
851
  }
852
+ /**
853
+ * "metadata" |
854
+ * "physical" |
855
+ * "generalRisks" |
856
+ * "vitals" |
857
+ * "physiological" |
858
+ * "metabolicRisks" |
859
+ * "bloodBiomarkers" |
860
+ * "overall" |
861
+ * "mental" |
862
+ * "surveys"
863
+ */
846
864
  type PointGroupType = typeof pointGroup[keyof typeof pointGroup];
847
865
  type BandColors = ('YELLOW' | 'LIGHT_GREEN' | 'GREEN' | 'LIGHT_RED' | 'RED')[];
848
866
  interface IMeta {
@@ -907,14 +925,28 @@ interface AppSettings {
907
925
  refreshToken: string;
908
926
  studyId: string;
909
927
  }
910
- type SupportedLanguage = 'en' | 'fr';
928
+ type SupportedLanguage = 'en' | 'ja' | 'cn' | 'es' | 'pt' | 'it' | 'fr' | 'de' | 'br';
929
+ interface Config {
930
+ constraints?: {
931
+ distanceConstraintsEnabled?: boolean;
932
+ directionConstraintsEnabled?: boolean;
933
+ movementConstraintsEnabled?: boolean;
934
+ };
935
+ cameraFacingMode?: 'user' | 'environment';
936
+ cameraAutoStart?: boolean;
937
+ measurementAutoStart?: boolean;
938
+ }
939
+ interface Profile extends Demographics {
940
+ bypassProfile: boolean;
941
+ }
911
942
  interface MeasurementEmbeddedAppOptions {
912
943
  container: HTMLDivElement;
913
944
  top?: string;
914
945
  appPath: string;
915
946
  settings: AppSettings;
916
- profile?: Demographics;
947
+ profile: Profile;
917
948
  language?: SupportedLanguage;
949
+ config?: Config;
918
950
  loadError?: (error: string) => void;
919
951
  }
920
952
  interface MeasurementEmbedded {
@@ -953,6 +985,18 @@ declare const webhookEventSeverity: {
953
985
  };
954
986
  declare const webhookEvent: {
955
987
  readonly CAMERA_STARTED: "CAMERA_STARTED";
988
+ readonly APP_LOADED: "APP_LOADED";
989
+ readonly MEASUREMENT_STARTED: "MEASUREMENT_STARTED";
990
+ readonly MEASUREMENT_COMPLETED: "MEASUREMENT_COMPLETED";
991
+ readonly CAMERA_PERMISSION_DENIED: "CAMERA_PERMISSION_DENIED";
992
+ readonly CAMERA_PERMISSION_GRANTED: "CAMERA_PERMISSION_GRANTED";
993
+ readonly INTERMEDIATE_RESULTS: "INTERMEDIATE_RESULTS";
994
+ readonly RESULTS_RECEIVED: "RESULTS_RECEIVED";
995
+ readonly MEASUREMENT_CANCELED: "MEASUREMENT_CANCELED";
996
+ readonly CONSTRAINT_VIOLATION: "CONSTRAINT_VIOLATION";
997
+ readonly PAGE_UNLOADED: "PAGE_UNLOADED";
998
+ readonly WEBSOCKET_DISCONNECTED: "WEBSOCKET_DISCONNECTED";
999
+ readonly PAGE_VISIBILITY_CHANGE: "PAGE_VISIBILITY_CHANGE";
956
1000
  };
957
1001
  interface WebhookEvent {
958
1002
  event: keyof typeof webhookEvent;
@@ -960,6 +1004,7 @@ interface WebhookEvent {
960
1004
  }
961
1005
  declare const measurementError: {
962
1006
  readonly WORKER_ERROR: "WORKER_ERROR";
1007
+ readonly PROFILE_INFO_NOT_SET: "PROFILE_INFO_NOT_SET";
963
1008
  };
964
1009
 
965
1010
  declare class MeasurementEmbeddedApp implements MeasurementEmbedded {
@@ -989,7 +1034,8 @@ declare class MeasurementEmbeddedApp implements MeasurementEmbedded {
989
1034
  init(options: MeasurementEmbeddedAppOptions): void;
990
1035
  destroy(): void;
991
1036
  setTheme(theme: 'light' | 'dark'): void;
1037
+ setLanguage(language: SupportedLanguage): void;
992
1038
  }
993
1039
 
994
- export { MeasurementEmbeddedApp as default, faceAttributeValue, measurementEmbeddedAppEvents };
995
- export type { AppSettings, Demographics, DfxPointId, MeasurementEmbeddedAppOptions, Results };
1040
+ export { MeasurementEmbeddedApp as default, faceAttributeValue, measurementEmbeddedAppEvents, measurementError };
1041
+ export type { AppSettings, DfxPointId, MeasurementEmbeddedAppOptions, Point, Profile, Results };
package/lib/index.mjs CHANGED
@@ -1 +1 @@
1
- const h={RESULTS:"results",ERROR:"error",WEBHOOK:"webhook",CANCEL:"cancel"},O={DESTROY:"destroy",SET_THEME:"setTheme"};var R=s=>{throw TypeError(s)},_=(s,e,n)=>e.has(s)||R("Cannot "+n),t=(s,e,n)=>(_(s,e,"read from private field"),n?n.call(s):e.get(s)),m=(s,e,n)=>e.has(s)?R("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,n),I=(s,e,n,r)=>(_(s,e,"write to private field"),e.set(s,n),n),i,l,c,a;const S=class o{constructor(e){m(this,a),I(this,a,new Int32Array(e))}lock(){for(;;){if(Atomics.compareExchange(t(this,a),t(o,c),t(o,l),t(o,i))==t(o,l))return;Atomics.wait(t(this,a),t(o,c),t(o,i))}}unlock(){if(Atomics.compareExchange(t(this,a),t(o,c),t(o,i),t(o,l))!=t(o,i))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(t(this,a),t(o,c))}AsyncLock(e){const n=this;async function r(){for(;;){if(Atomics.compareExchange(t(n,a),t(o,c),t(o,l),t(o,i))==t(o,l)){e(),n.unlock();return}await Atomics.waitAsync(t(n,a),t(o,c),t(o,i)).value}}r()}};i=new WeakMap,l=new WeakMap,c=new WeakMap,a=new WeakMap,m(S,i,1),m(S,l,0),m(S,c,0);const $={SEX_NOT_PROVIDED:1,SEX_ASSIGNED_MALE_AT_BIRTH:2,SEX_ASSIGNED_FEMALE_AT_BIRTH:3,DIABETES_NONE:4,DIABETES_TYPE1:5,DIABETES_TYPE2:6,SMOKER_TRUE:0,SMOKER_FALSE:1,BLOOD_PRESSURE_MEDICATION_TRUE:1,BLOOD_PRESSURE_MEDICATION_FALSE:0},N=document.documentElement.style.overflow;class g{#e=document.createElement("div");#t=document.createElement("div");on={results:null,error:null,webhook:null,cancel:null};constructor(){this.#e.style.height="100%"}init(e){const{container:n,appPath:r,settings:w,profile:T,loadError:u,top:f=0,language:k}=e;this.#t=n,Object.assign(n.style,{position:"fixed",top:f,left:"0",width:"100vw",height:`calc(100vh - ${f})`}),document.body.appendChild(n);const p=n.attachShadow({mode:"open"});document.documentElement.style.overflow="hidden";const y="app",v=document.createElement("link");v.rel="stylesheet",v.href=`${r}/stylex.css`,p.appendChild(v);const A=document.createElement("link");A.rel="stylesheet",A.href=`${r}/${y}.css`,p.appendChild(A);const C=d=>{this.on.results&&this.on.results({...d.detail})},L=d=>{this.on.error&&this.on.error({...d.detail})},D=d=>{this.on.webhook&&this.on.webhook({...d.detail})},M=()=>{this.on.cancel&&this.on.cancel()};this.#e.addEventListener(h.RESULTS,C),this.#e.addEventListener(h.ERROR,L),this.#e.addEventListener(h.WEBHOOK,D),this.#e.addEventListener(h.CANCEL,M),p.appendChild(this.#e);const E=document.createElement("script");E.type="module",E.src=`${r}/${y}.mjs`,E.onload=()=>{import(E.src).then(d=>{d.app.init(this.#e,r,w,T,k)}).catch(()=>{u&&u("Failed to initialize Measurement Embedded React app")})},E.onerror=()=>{u&&u("Failed to load the measurement embedded app script")},p.appendChild(E)}destroy(){const e=new CustomEvent("measurement-embedded-app-action",{detail:{action:O.DESTROY,data:{}}});this.#e.dispatchEvent(e),document.documentElement.style.overflow=N,this.#t&&document.body.contains(this.#t)&&document.body.removeChild(this.#t)}setTheme(e){const n=new CustomEvent("measurement-embedded-app-action",{detail:{action:O.SET_THEME,data:{theme:e}}});this.#e.dispatchEvent(n)}}export{g as default,$ as faceAttributeValue,h as measurementEmbeddedAppEvents};
1
+ const h={RESULTS:"results",ERROR:"error",WEBHOOK:"webhook",CANCEL:"cancel"},S={DESTROY:"destroy",SET_THEME:"setTheme",SET_LANGUAGE:"setLanguage"},D={WORKER_ERROR:"WORKER_ERROR",PROFILE_INFO_NOT_SET:"PROFILE_INFO_NOT_SET"};var L=o=>{throw TypeError(o)},f=(o,e,n)=>e.has(o)||L("Cannot "+n),t=(o,e,n)=>(f(o,e,"read from private field"),n?n.call(o):e.get(o)),p=(o,e,n)=>e.has(o)?L("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(o):e.set(o,n),M=(o,e,n,r)=>(f(o,e,"write to private field"),e.set(o,n),n),i,l,c,s;const v=class a{constructor(e){p(this,s),M(this,s,new Int32Array(e))}lock(){for(;;){if(Atomics.compareExchange(t(this,s),t(a,c),t(a,l),t(a,i))==t(a,l))return;Atomics.wait(t(this,s),t(a,c),t(a,i))}}unlock(){if(Atomics.compareExchange(t(this,s),t(a,c),t(a,i),t(a,l))!=t(a,i))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(t(this,s),t(a,c))}AsyncLock(e){const n=this;async function r(){for(;;){if(Atomics.compareExchange(t(n,s),t(a,c),t(a,l),t(a,i))==t(a,l)){e(),n.unlock();return}await Atomics.waitAsync(t(n,s),t(a,c),t(a,i)).value}}r()}};i=new WeakMap,l=new WeakMap,c=new WeakMap,s=new WeakMap,p(v,i,1),p(v,l,0),p(v,c,0);const $={SEX_NOT_PROVIDED:1,SEX_ASSIGNED_MALE_AT_BIRTH:2,SEX_ASSIGNED_FEMALE_AT_BIRTH:3,DIABETES_NONE:4,DIABETES_TYPE1:5,DIABETES_TYPE2:6,SMOKER_TRUE:0,SMOKER_FALSE:1,BLOOD_PRESSURE_MEDICATION_TRUE:1,BLOOD_PRESSURE_MEDICATION_FALSE:0},b=document.documentElement.style.overflow;class x{#e=document.createElement("div");#t=document.createElement("div");on={results:null,error:null,webhook:null,cancel:null};constructor(){this.#e.style.height="100%"}init(e){const{container:n,appPath:r,settings:O,profile:T,config:y,loadError:u,top:_=0,language:C}=e;this.#t=n,Object.assign(n.style,{position:"fixed",top:_,left:"0",width:"100vw",height:`calc(100vh - ${_})`}),document.body.appendChild(n);const m=n.attachShadow({mode:"open"});document.documentElement.style.overflow="hidden";const w="app",R=document.createElement("link");R.rel="stylesheet",R.href=`${r}/stylex.css`,m.appendChild(R);const A=document.createElement("link");A.rel="stylesheet",A.href=`${r}/${w}.css`,m.appendChild(A);const g=d=>{this.on.results&&this.on.results({...d.detail})},k=d=>{this.on.error&&this.on.error({...d.detail})},I=d=>{this.on.webhook&&this.on.webhook({...d.detail})},N=()=>{this.on.cancel&&this.on.cancel()};this.#e.addEventListener(h.RESULTS,g),this.#e.addEventListener(h.ERROR,k),this.#e.addEventListener(h.WEBHOOK,I),this.#e.addEventListener(h.CANCEL,N),m.appendChild(this.#e);const E=document.createElement("script");E.type="module",E.src=`${r}/${w}.mjs`,E.onload=()=>{import(E.src).then(d=>{d.app.init(this.#e,r,O,T,y,C)}).catch(()=>{u&&u("Failed to initialize Measurement Embedded React app")})},E.onerror=()=>{u&&u("Failed to load the measurement embedded app script")},m.appendChild(E)}destroy(){const e=new CustomEvent("measurement-embedded-app-action",{detail:{action:S.DESTROY,data:{}}});this.#e.dispatchEvent(e),document.documentElement.style.overflow=b,this.#t&&document.body.contains(this.#t)&&document.body.removeChild(this.#t)}setTheme(e){const n=new CustomEvent("measurement-embedded-app-action",{detail:{action:S.SET_THEME,data:{theme:e}}});this.#e.dispatchEvent(n)}setLanguage(e){const n=new CustomEvent("measurement-embedded-app-action",{detail:{action:S.SET_LANGUAGE,data:{language:e}}});this.#e.dispatchEvent(n)}}export{x as default,$ as faceAttributeValue,h as measurementEmbeddedAppEvents,D as measurementError};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuralogix.ai/web-measurement-embedded-app",
3
- "version": "0.1.0-alpha.4",
3
+ "version": "0.1.0-alpha.6",
4
4
  "description": "Web Measurement Embedded App",
5
5
  "contributors": [
6
6
  "Hamed Hassanzadeh Amin",