@qite/tide-booking-component 1.2.0 → 1.2.2

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.
Files changed (66) hide show
  1. package/build/build-cjs/booking-product/components/footer.d.ts +1 -0
  2. package/build/build-cjs/booking-product/components/icon.d.ts +2 -0
  3. package/build/build-cjs/booking-product/types.d.ts +2 -1
  4. package/build/build-cjs/booking-wizard/components/icon.d.ts +2 -0
  5. package/build/build-cjs/{booking-product → booking-wizard}/components/multi-range-filter.d.ts +0 -1
  6. package/build/build-cjs/booking-wizard/types.d.ts +1 -0
  7. package/build/build-cjs/index.js +1851 -558
  8. package/build/build-cjs/shared/utils/localization-util.d.ts +17 -10
  9. package/build/build-esm/booking-product/components/footer.d.ts +1 -0
  10. package/build/build-esm/booking-product/components/icon.d.ts +2 -0
  11. package/build/build-esm/booking-product/types.d.ts +2 -1
  12. package/build/build-esm/booking-wizard/components/icon.d.ts +2 -0
  13. package/build/build-esm/{booking-product → booking-wizard}/components/multi-range-filter.d.ts +0 -1
  14. package/build/build-esm/booking-wizard/types.d.ts +1 -0
  15. package/build/build-esm/index.js +1853 -560
  16. package/build/build-esm/shared/utils/localization-util.d.ts +17 -10
  17. package/package.json +4 -3
  18. package/src/booking-product/components/amount-input.tsx +8 -20
  19. package/src/booking-product/components/date-range-picker/calendar.tsx +3 -3
  20. package/src/booking-product/components/dates.tsx +26 -20
  21. package/src/booking-product/components/footer.tsx +4 -2
  22. package/src/booking-product/components/header.tsx +4 -4
  23. package/src/booking-product/components/icon.tsx +187 -11
  24. package/src/booking-product/components/product.tsx +31 -16
  25. package/src/{shared → booking-product}/components/rating.tsx +3 -3
  26. package/src/booking-product/components/rooms.tsx +116 -113
  27. package/src/booking-product/settings-context.ts +0 -1
  28. package/src/booking-product/types.ts +2 -1
  29. package/src/booking-wizard/components/icon.tsx +42 -15
  30. package/src/{booking-product → booking-wizard}/components/multi-range-filter.tsx +0 -1
  31. package/src/booking-wizard/declarations.d.ts +4 -0
  32. package/src/booking-wizard/features/booking/booking-self-contained.tsx +3 -2
  33. package/src/booking-wizard/features/booking/booking.tsx +3 -2
  34. package/src/booking-wizard/features/confirmation/confirmation.tsx +8 -4
  35. package/src/booking-wizard/features/flight-options/flight-filter.tsx +7 -6
  36. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +29 -28
  37. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +193 -192
  38. package/src/booking-wizard/features/room-options/index.tsx +1 -5
  39. package/src/booking-wizard/features/summary/summary.tsx +23 -26
  40. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +0 -2
  41. package/src/booking-wizard/features/travelers-form/validate-form.ts +1 -1
  42. package/src/booking-wizard/index.tsx +2 -2
  43. package/src/booking-wizard/types.ts +1 -0
  44. package/src/shared/tide-sprites.svg +117 -0
  45. package/src/shared/translations/fr-BE.json +230 -222
  46. package/src/shared/translations/nl-BE.json +229 -222
  47. package/styles/booking-product-variables.scss +288 -0
  48. package/styles/booking-product.scss +440 -0
  49. package/styles/booking-wizard-variables.scss +0 -0
  50. package/styles/booking-wizard.scss +4 -0
  51. package/styles/components/_animations.scss +39 -0
  52. package/styles/components/_base.scss +106 -0
  53. package/styles/components/_button.scss +185 -0
  54. package/styles/components/_cta.scss +67 -0
  55. package/styles/components/_date-range-picker.scss +224 -0
  56. package/styles/components/_decrement-increment.scss +37 -0
  57. package/styles/components/_dropdown.scss +74 -0
  58. package/styles/components/_form.scss +136 -0
  59. package/styles/components/_loader.scss +71 -0
  60. package/styles/components/_mixins.scss +518 -0
  61. package/styles/components/_placeholders.scss +166 -0
  62. package/styles/components/_qsm.scss +20 -0
  63. package/styles/components/_variables.scss +89 -0
  64. package/src/booking-product/components/multi-range-filter.css +0 -115
  65. /package/build/build-cjs/{shared → booking-product}/components/rating.d.ts +0 -0
  66. /package/build/build-esm/{shared → booking-product}/components/rating.d.ts +0 -0
@@ -1,13 +1,13 @@
1
1
  /* eslint-disable */
2
- import React, { useContext, useState, useEffect } from 'react';
2
+ import React, { useLayoutEffect as useLayoutEffect$1, useEffect, useContext, useState } from 'react';
3
3
  import JsonURL from '@jsonurl/jsonurl';
4
4
  import { isToday, getDate, getYear, getMonth, startOfWeek, startOfMonth, endOfWeek, addWeeks, endOfMonth, eachDayOfInterval, format as format$1, getISOWeek, getISODay, isSameMonth, startOfDay, isAfter, isEqual, isWithinInterval, endOfDay, isBefore, addMonths, addDays, formatISO, differenceInYears, parseISO, differenceInMinutes, differenceInCalendarDays, parse } from 'date-fns';
5
5
  import { isNil, isArray, compact, isEmpty, range, chunk, isFunction, clamp, omit, sum, first, orderBy, uniq, uniqBy, sortBy, last, findIndex, set, get as get$2 } from 'lodash';
6
6
  import { nlBE, fr } from 'date-fns/locale';
7
7
  import { usePopper } from 'react-popper';
8
- import { useDispatch, useSelector, Provider } from 'react-redux';
9
- import { createSlice, createSelector, createAsyncThunk, configureStore } from '@reduxjs/toolkit';
8
+ import { useSelector, useDispatch, Provider } from 'react-redux';
10
9
  import { navigate, Link, useLocation, Router } from '@reach/router';
10
+ import { createSlice, createSelector, createAsyncThunk, configureStore } from '@reduxjs/toolkit';
11
11
  import flat from 'flat';
12
12
  import { useFormik } from 'formik';
13
13
  import produce from 'immer';
@@ -99,69 +99,73 @@ var STEPS$1 = {
99
99
  ERROR: "Échec de réservation",
100
100
  PREVIOUS: "Étape précédente",
101
101
  NEXT: "Étape suivante",
102
- SUBMIT: "Confirmer la réservation",
102
+ SUBMIT_BOOKING: "Confirmer la réservation",
103
+ SUBMIT_OFFER: "Demander un devis",
103
104
  COMPOSE: "Composer",
104
- ROOM_OPTIONS: "",
105
- FLIGHT_OPTIONS: ""
105
+ ROOM_OPTIONS: "Options de chambre",
106
+ FLIGHT_OPTIONS: "Options de vol"
106
107
  };
107
108
  var INPUT$1 = {
108
- INCREASE: "",
109
- DECREASE: ""
109
+ INCREASE: "Augmenter",
110
+ DECREASE: "Diminuer"
110
111
  };
111
112
  var FLIGHTS_FORM$1 = {
112
- OUTWARD_FLIGHTS: "",
113
- OUTWARD_FLIGHT: "",
114
- RETURN_FLIGHTS: "",
115
- RETURN_FLIGHT: "",
116
- DIRECT_FLIGHT: "",
117
- STOP: "",
118
- STOPS: "",
119
- FLIGHT_STOPS: "",
120
- DIFFERENT_OPTION_WARNING: "",
121
- FILTER_OPTIONS: "",
122
- AIRLINES: "",
123
- AIRPORTS: "",
124
- NUMBER_OF_STOPS: "",
125
- FLIGHT_OUTWARD: "",
126
- DEPARTURE_TIME: "",
127
- TRAVEL_DURATION: "",
128
- CHANGE_TIME: "",
129
- FLIGHT_RETURN: "",
130
- NO_FLIGHTS_FOUND: "",
131
- STARTING: "",
132
- LOWEST_PRICE: "",
133
- CHOOSE_YOUR_CLASS: "",
134
- PLUS_ONE_DAY: "",
135
- STOP_TIME: "",
136
- NIGHT_DEPARTURE: "",
137
- MORNING_DEPARTURE: "",
138
- AFTERNOON_DEPARTURE: "",
139
- EVENING_DEPARTURE: ""
113
+ OUTWARD_FLIGHTS: "Vols aller",
114
+ OUTWARD_FLIGHT: "Vol aller",
115
+ RETURN_FLIGHTS: "Vols retour",
116
+ RETURN_FLIGHT: "Vol retour",
117
+ DIRECT_FLIGHT: "Vol direct",
118
+ STOP: "escale",
119
+ STOPS: "escales",
120
+ FLIGHT_STOPS: "escale(s)",
121
+ DIFFERENT_OPTION_WARNING: "Attention : Ce vol modifie la durée du séjour.",
122
+ FILTER_OPTIONS: "Options de filtre",
123
+ AIRLINES: "Compagnies aériennes",
124
+ AIRPORTS: "Aéroports",
125
+ NUMBER_OF_STOPS: "Nombre d'escales",
126
+ FLIGHT_OUTWARD: "Vol aller",
127
+ DEPARTURE_TIME: "Heure de départ",
128
+ TRAVEL_DURATION: "Durée du voyage",
129
+ CHANGE_TIME: "Temps de correspondance",
130
+ FLIGHT_RETURN: "Vol retour",
131
+ NO_FLIGHTS_FOUND: "Aucun vol trouvé.",
132
+ STARTING: "À partir de",
133
+ LOWEST_PRICE: "Prix le plus bas",
134
+ CHOOSE_YOUR_CLASS: "Choisissez votre classe :",
135
+ PLUS_ONE_DAY: "+1 jour",
136
+ STOP_TIME: "Temps d'escale",
137
+ NIGHT_DEPARTURE: "Nuit (00:00 - 05:00)",
138
+ MORNING_DEPARTURE: "Matin (05:00 - 12:00)",
139
+ AFTERNOON_DEPARTURE: "Après-midi (12:00 - 18:00)",
140
+ EVENING_DEPARTURE: "Soir (18:00 - 00:00)"
140
141
  };
141
142
  var PRODUCT$1 = {
142
- STAY_INCLUDED: "",
143
- FLIGHT_INCLUDED: "",
144
- TRANSFER_INCLUDED: "",
145
- LOADING_PRICE: "",
146
- PER_PERSON: "",
147
- PER_NIGHT: "",
148
- PER_PERSON_PER_NIGHT: "",
149
- BOOK_NOW: "",
150
- NOT_AVAILABLE: "",
151
- NUMBER_OF_ROOMS: "",
152
- AGE_BY_DEPARTURE_DATE: "",
153
- YEAR: "",
154
- APPLY: "",
155
- EDIT: "",
156
- DEPARTURE: "",
157
- DEPARTURE_DATE: "",
158
- RETURN: "",
159
- RETURN_DATE: "",
160
- WHO_YOU_TRAVELING_WITH: "",
161
- TRAVEL_PERIOD: ""
143
+ STAY_INCLUDED: "Séjour inclus",
144
+ FLIGHT_INCLUDED: "Vol inclus",
145
+ TRANSFER_INCLUDED: "Transfert inclus",
146
+ LOADING_PRICE: "Votre prix est en cours de composition.",
147
+ PER_PERSON: "Par personne",
148
+ PER_NIGHT: "Par nuit",
149
+ PER_PERSON_PER_NIGHT: "Par personne / par nuit",
150
+ BOOK_NOW: "Réserver maintenant",
151
+ TO_YOUR_OFFER: "Vers votre devis",
152
+ NOT_AVAILABLE: "Non disponible",
153
+ NUMBER_OF_ROOMS: "Nombre de chambres",
154
+ AGE_BY_DEPARTURE_DATE: "Âge des enfants à la date de départ",
155
+ YEAR: "Année",
156
+ APPLY: "Appliquer",
157
+ EDIT: "Modifier",
158
+ DEPARTURE: "Départ",
159
+ DEPARTURE_DATE: "Date de départ",
160
+ RETURN: "Retour",
161
+ RETURN_DATE: "Date de retour",
162
+ WHO_YOU_TRAVELING_WITH: "Avec qui voyagez-vous ?",
163
+ TRAVEL_PERIOD: "Période de voyage",
164
+ CLOSE: "Fermer"
162
165
  };
163
166
  var MAIN$1 = {
164
167
  PREPARING_BOOKING: "Veuillez patienter, nous préparons votre réservation",
168
+ PREPARING_OFFER: "Veuillez patienter, nous préparons votre devis",
165
169
  PRODUCT_UNAVAILABLE: "Produit non disponible"
166
170
  };
167
171
  var SHARED$1 = {
@@ -170,8 +174,8 @@ var SHARED$1 = {
170
174
  TOTAL_PRICE: "Prix total",
171
175
  ADULTS: "Adultes",
172
176
  CHILDREN: "Enfants",
173
- SELECT: "Selecteer",
174
- SELECTED: "Geselecteerd"
177
+ SELECT: "Sélectionner",
178
+ SELECTED: "Sélectionné"
175
179
  };
176
180
  var SIDEBAR$1 = {
177
181
  OVERVIEW: "Aperçu",
@@ -205,7 +209,7 @@ var SIDEBAR$1 = {
205
209
  FLIGHT_DEPARTURE: "Départ",
206
210
  FLIGHT_ARRIVAL: "Arrivée",
207
211
  ON_REQUEST: "Sur demande",
208
- CHANGES: "Changements"
212
+ CHANGES: "correspondances"
209
213
  };
210
214
  var TRAVELERS_FORM$1 = {
211
215
  TRAVELER: "Voyageur",
@@ -213,7 +217,7 @@ var TRAVELERS_FORM$1 = {
213
217
  ADULTS: "adultes",
214
218
  CHILD: "enfant",
215
219
  CHILDREN: "enfants",
216
- GENDER: "Civilité",
220
+ GENDER: "Titre",
217
221
  MALE: "Monsieur",
218
222
  FEMALE: "Madame",
219
223
  OTHER: "Autre",
@@ -233,31 +237,26 @@ var TRAVELERS_FORM$1 = {
233
237
  PHONE: "Numéro de téléphone",
234
238
  EMAIL: "E-mail",
235
239
  REPEAT_EMAIL: "Répéter l'e-mail",
236
- VALIDATION_MESSAGE: "Veuillez vérifier les champs du formulaire ci-dessous et les remplir correctement.",
240
+ VALIDATION_MESSAGE: "Veuillez vérifier les champs du formulaire ci-dessous et remplissez-les correctement.",
237
241
  BOOK_WITH_AGENT: "Je souhaite réserver auprès de mon agent de voyage local",
238
242
  CHOOSE_OFFICE: "Je choisis une agence",
239
- CHOOSE_AGENT_PLACEHOLDER: "Choisissez votre agent de voyage",
240
243
  COUNTRIES: {
241
244
  BELGIUM: "Belgique",
242
245
  NETHERLANDS: "Pays-Bas",
243
246
  FRANCE: "France"
244
247
  },
248
+ CHOOSE_AGENT_PLACEHOLDER: "Choisissez votre agent de voyage",
245
249
  VALIDATION: {
246
- TRAVELER_X_FIELD: "Chambre {0} - Voyageur {1}: {2}",
247
- TRAVELER_X_IS_NO_ADULT: "Chambre {0} - Voyageur {1}: n'est pas un adulte",
248
- TRAVELER_X_IS_NO_CHILD: "Chambre {0} - Voyageur {1}: n'est pas un enfant",
249
- NO_MAIN_BOOKER_SELECTED: "Aucun principal réservant n'a été sélectionné",
250
- MAIN_BOOKER_FIELD: "Principal réservant: {0}",
251
- MAIN_BOOKER_EMAIL_IS_INVALID: "Principal réservant: l'e-mail n'est pas valide",
252
- MAIN_BOOKER_EMAIL_DOES_NOT_MATCH: "Principal réservant: l'e-mail ne correspond pas",
253
- AGENT_IS_REQUIRED: "Agent de voyage est requis"
250
+ TRAVELER_X_FIELD: "Chambre {0} - Voyageur {1} : {2}",
251
+ TRAVELER_X_IS_NO_ADULT: "Chambre {0} - Voyageur {1} : n'est pas un adulte",
252
+ TRAVELER_X_IS_NO_CHILD: "Chambre {0} - Voyageur {1} : n'est pas un enfant",
253
+ NO_MAIN_BOOKER_SELECTED: "Aucun réservant principal n'a été sélectionné",
254
+ MAIN_BOOKER_FIELD: "Principal réservant : {0}",
255
+ MAIN_BOOKER_EMAIL_IS_INVALID: "Principal réservant : e-mail invalide",
256
+ MAIN_BOOKER_EMAIL_DOES_NOT_MATCH: "Principal réservant : e-mail ne correspond pas",
257
+ AGENT_IS_REQUIRED: "Agent de voyage requis"
254
258
  }
255
259
  };
256
- var ROOM_OPTIONS_FORM$1 = {
257
- TRAVELER_GROUP: "",
258
- ALTERNATIVES_TRAVELER_GROUP: "",
259
- SHOW_ALTERNATIVES: ""
260
- };
261
260
  var OPTIONS_FORM$1 = {
262
261
  NO_OPTIONS_TITLE: "Aucune option",
263
262
  NO_OPTIONS_MESSAGE: "Ce voyage n'a pas d'options supplémentaires.",
@@ -267,10 +266,15 @@ var OPTIONS_FORM$1 = {
267
266
  DAYS: "jours",
268
267
  NIGHT: "nuit",
269
268
  NIGHTS: "nuits",
270
- PER_PAX_TITLE: "Composer par voyageur",
271
- PER_BOOKING_TITLE: "Composer par dossier",
272
- PER_UNIT_TITLE: "Composer par groupe",
273
- NONE: "Aucun"
269
+ PER_PAX_TITLE: "Sélectionner les options par voyageur",
270
+ PER_BOOKING_TITLE: "Sélectionner les options par dossier",
271
+ PER_UNIT_TITLE: "Sélectionner les options par groupe",
272
+ NONE: "Aucune"
273
+ };
274
+ var ROOM_OPTIONS_FORM$1 = {
275
+ TRAVELER_GROUP: "Groupe de voyageurs",
276
+ ALTERNATIVES_TRAVELER_GROUP: "Options de chambre alternatives pour le groupe de voyageurs",
277
+ SHOW_ALTERNATIVES: "Afficher les options de chambre alternatives"
274
278
  };
275
279
  var SUMMARY$1 = {
276
280
  PERSONAL_DETAILS: "Coordonnées personnelles",
@@ -280,27 +284,30 @@ var SUMMARY$1 = {
280
284
  ADULT: "adulte",
281
285
  CHILDREN: "enfants",
282
286
  CHILD: "enfant",
283
- MAIN_BOOKER: "Principal réservataire",
287
+ MAIN_BOOKER: "Principal réservant",
284
288
  NOTIFICATIONS_TITLE: "Attention",
285
289
  VALIDATE_TITLE: "Vérifiez vos données",
286
- VALIDATE_TEXT: "Vous êtes sur le point de confirmer votre réservation. Veuillez vérifier que toutes les informations sont correctes. Elles sont définitives et ne peuvent plus être modifiées.",
290
+ VALIDATE_TEXT_BOOKING: "Vous êtes sur le point de confirmer votre réservation. Veuillez vérifier que toutes les informations sont correctes et que les noms sont tels qu'ils apparaissent sur votre carte d'identité ou votre passeport. Elles sont définitives et ne peuvent plus être modifiées.",
291
+ VALIDATE_TEXT_OFFER: "Vous êtes sur le point de demander un devis. Veuillez vérifier que toutes les informations sont correctes et que les noms sont tels qu'ils apparaissent sur votre carte d'identité ou votre passeport. Cela nous permettra d'éviter les problèmes en cas de réservation.",
287
292
  OPTIONS: "Options",
288
293
  REMARKS: "Remarques",
289
294
  VOUCHERS: "Bons",
290
295
  VOUCHER_VALIDATE: "Valider le bon",
291
296
  ADD_VOUCHER: "Ajouter un bon",
292
- VOUCHER_VALID: "Le bon est valide",
293
- VOUCHER_INVALID: "Le bon n'est pas valide"
297
+ VOUCHER_VALID: "Bon valide",
298
+ VOUCHER_INVALID: "Bon invalide"
294
299
  };
295
300
  var CONFIRMATION$1 = {
296
- TITLE_TEXT: "Votre réservation avec le numéro {0} est confirmée",
301
+ TITLE_TEXT_OFFER: "Votre devis numéro {0} a été demandé",
302
+ TITLE_TEXT_BOOKING: "Votre réservation avec le numéro {0} est confirmée",
297
303
  MESSAGE_TEXT1: "Votre voyage de rêve est maintenant très proche.",
298
- MESSAGE_TEXT2: "Nos spécialistes du voyage traitent votre réservation et vous contacteront dans les 48 heures.",
304
+ MESSAGE_TEXT2_OFFER: "Nos spécialistes voyages traitent votre demande et vous contacteront dans les 48 heures.",
305
+ MESSAGE_TEXT2_BOOKING: "Nos spécialistes voyages traitent votre réservation et vous contacteront dans les 48 heures.",
299
306
  QUESTIONS_TEXT1: "Avez-vous d'autres questions? ",
300
307
  QUESTIONS_TEXT2: "Faites-le nous savoir",
301
308
  QUESTIONS_TEXT3: ".",
302
309
  QUESTIONS_ALT: "Contactez-nous",
303
- MAIL_SUBJECT: "Informations sur la réservation"
310
+ MAIL_SUBJECT: "Infos réservation"
304
311
  };
305
312
  var ERROR$1 = {
306
313
  TRY_AGAIN: "Réessayez de réserver",
@@ -320,8 +327,8 @@ var frJson = {
320
327
  SHARED: SHARED$1,
321
328
  SIDEBAR: SIDEBAR$1,
322
329
  TRAVELERS_FORM: TRAVELERS_FORM$1,
323
- ROOM_OPTIONS_FORM: ROOM_OPTIONS_FORM$1,
324
330
  OPTIONS_FORM: OPTIONS_FORM$1,
331
+ ROOM_OPTIONS_FORM: ROOM_OPTIONS_FORM$1,
325
332
  SUMMARY: SUMMARY$1,
326
333
  CONFIRMATION: CONFIRMATION$1,
327
334
  ERROR: ERROR$1
@@ -335,7 +342,8 @@ var STEPS = {
335
342
  ERROR: "Boeken mislukt",
336
343
  PREVIOUS: "Vorige stap",
337
344
  NEXT: "Volgende stap",
338
- SUBMIT: "Bevestig boeking",
345
+ SUBMIT_BOOKING: "Bevestig boeking",
346
+ SUBMIT_OFFER: "Vraag offerte aan",
339
347
  COMPOSE: "Samenstellen",
340
348
  ROOM_OPTIONS: "Kamer opties",
341
349
  FLIGHT_OPTIONS: "Vlucht opties"
@@ -358,7 +366,7 @@ var FLIGHTS_FORM = {
358
366
  AIRLINES: "Luchtvaartmaatschappijen",
359
367
  AIRPORTS: "Luchthavens",
360
368
  NUMBER_OF_STOPS: "Aantal stops",
361
- FLIGHT_OUTWARD: "Vlucht heenrijs",
369
+ FLIGHT_OUTWARD: "Vlucht heenreis",
362
370
  DEPARTURE_TIME: "Vertrektijd",
363
371
  TRAVEL_DURATION: "Reisduur",
364
372
  CHANGE_TIME: "Overstaptijd",
@@ -368,7 +376,7 @@ var FLIGHTS_FORM = {
368
376
  LOWEST_PRICE: "Laagste prijs",
369
377
  CHOOSE_YOUR_CLASS: "Kies uw klasse:",
370
378
  PLUS_ONE_DAY: "+1 dag",
371
- STOP_TIME: "Stoptijd",
379
+ STOP_TIME: "Overstaptijd",
372
380
  NIGHT_DEPARTURE: "Nacht (00:00 - 05:00)",
373
381
  MORNING_DEPARTURE: "Ochtend (05:00 - 12:00)",
374
382
  AFTERNOON_DEPARTURE: "Namiddag (12:00 - 18:00)",
@@ -383,9 +391,10 @@ var PRODUCT = {
383
391
  PER_NIGHT: "Per nacht",
384
392
  PER_PERSON_PER_NIGHT: "Per persoon / per nacht",
385
393
  BOOK_NOW: "Boek nu",
394
+ TO_YOUR_OFFER: "Naar uw offerte",
386
395
  NOT_AVAILABLE: "Niet beschikbaar",
387
396
  NUMBER_OF_ROOMS: "Aantal kamers",
388
- AGE_BY_DEPARTURE_DATE: "Leeftijd kindren op vertrekdatum",
397
+ AGE_BY_DEPARTURE_DATE: "Leeftijd kinderen op vertrekdatum",
389
398
  YEAR: "Jaar",
390
399
  APPLY: "Toepassen",
391
400
  EDIT: "Wijzigen",
@@ -394,10 +403,12 @@ var PRODUCT = {
394
403
  RETURN: "Terugkeer",
395
404
  RETURN_DATE: "Terugkeerdatum",
396
405
  WHO_YOU_TRAVELING_WITH: "Met wie ga je?",
397
- TRAVEL_PERIOD: "Reisperiode"
406
+ TRAVEL_PERIOD: "Reisperiode",
407
+ CLOSE: "Sluiten"
398
408
  };
399
409
  var MAIN = {
400
410
  PREPARING_BOOKING: "Even geduld, we bereiden uw boeking voor",
411
+ PREPARING_OFFER: "Even geduld, we bereiden uw offerte voor",
401
412
  PRODUCT_UNAVAILABLE: "Product niet beschikbaar"
402
413
  };
403
414
  var SHARED = {
@@ -519,7 +530,8 @@ var SUMMARY = {
519
530
  MAIN_BOOKER: "Hoofdboeker",
520
531
  NOTIFICATIONS_TITLE: "Aandacht",
521
532
  VALIDATE_TITLE: "Controleer je gegevens",
522
- VALIDATE_TEXT: "Je staat op het punt je boeking te bevestigen. Contoleer of alle gegevens correct zijn. Deze zijn definitief en niet meer aanpasbaar.",
533
+ VALIDATE_TEXT_BOOKING: "Je staat op het punt je boeking te bevestigen. Controleer of alle gegevens correct zijn en de namen zoals vermeld op je identiteitskaart of paspoort gebruikt worden. Deze zijn definitief en niet meer aanpasbaar.",
534
+ VALIDATE_TEXT_OFFER: "Je staat op het punt een offerte aan te vragen. Controleer of alle gegevens correct zijn en de namen zoals vermeld op je identiteitskaart of paspoort gebruikt worden. Zo vermijden we problemen bij een eventuele boeking.",
523
535
  OPTIONS: "Opties",
524
536
  REMARKS: "Opmerkingen",
525
537
  VOUCHERS: "Vouchers",
@@ -529,9 +541,11 @@ var SUMMARY = {
529
541
  VOUCHER_INVALID: "Voucher is niet geldig"
530
542
  };
531
543
  var CONFIRMATION = {
532
- TITLE_TEXT: "Je boeking met nummer {0} is bevestigd",
544
+ TITLE_TEXT_OFFER: "Je offerte met nummer {0} is aangevraagd",
545
+ TITLE_TEXT_BOOKING: "Je boeking met nummer {0} is bevestigd",
533
546
  MESSAGE_TEXT1: "Jouw droomreis komt nu heel dichtbij.",
534
- MESSAGE_TEXT2: "Onze reisspecialisten verwerken je reservatie en nemen binnen de 48u contact met je op.",
547
+ MESSAGE_TEXT2_OFFER: "Onze reisspecialisten verwerken je aanvraag en nemen binnen de 48u contact met je op.",
548
+ MESSAGE_TEXT2_BOOKING: "Onze reisspecialisten verwerken je reservatie en nemen binnen de 48u contact met je op.",
535
549
  QUESTIONS_TEXT1: "Heb je nog vragen? ",
536
550
  QUESTIONS_TEXT2: "Laat het ons weten",
537
551
  QUESTIONS_TEXT3: ".",
@@ -680,7 +694,6 @@ var SettingsContext$1 = React.createContext({
680
694
  officeId: 1,
681
695
  catalogueId: 1,
682
696
  language: "nl-BE",
683
- currency: "EUR",
684
697
  basePath: 'boeken',
685
698
  priceMode: 0
686
699
  });
@@ -7506,73 +7519,6 @@ var buildClassName = function (parts) {
7506
7519
  return compact(sanitizedParts).join(" ");
7507
7520
  };
7508
7521
 
7509
- var SettingsContext = React.createContext({
7510
- language: "nl-BE",
7511
- generatePaymentUrl: false,
7512
- currency: "EUR",
7513
- officeId: 1,
7514
- tagIds: [],
7515
- hideAgentSelection: false,
7516
- agentAdressId: undefined,
7517
- affiliateSlug: undefined,
7518
- productPath: "/",
7519
- basePath: "/boeken",
7520
- roomOptions: {
7521
- pathSuffix: "/",
7522
- },
7523
- flightOptions: {
7524
- pathSuffix: "/vluchten",
7525
- },
7526
- options: {
7527
- pathSuffix: "/opties",
7528
- },
7529
- travellers: {
7530
- pathSuffix: "/reizigers",
7531
- },
7532
- summary: {
7533
- pathSuffix: "/samenvatting",
7534
- checkboxes: null,
7535
- },
7536
- confirmation: {
7537
- pathSuffix: "/bevestiging",
7538
- },
7539
- error: {
7540
- pathSuffix: "/mislukt",
7541
- },
7542
- companyContactEmail: "info@tidesoftware.be",
7543
- companyContactPhone: "093362299",
7544
- showProductCardRating: false,
7545
- showSidebarDeposit: false,
7546
- sidebarHeaderComponent: null,
7547
- sidebarFooterComponent: null,
7548
- loaderComponent: null,
7549
- icons: null,
7550
- bookingOptions: {
7551
- b2b: {
7552
- entryStatus: 0,
7553
- },
7554
- b2b2c: {
7555
- entryStatus: 0,
7556
- },
7557
- b2c: {
7558
- entryStatus: 0,
7559
- },
7560
- },
7561
- });
7562
-
7563
- var Icon$1 = function (_a) {
7564
- var name = _a.name, className = _a.className, title = _a.title;
7565
- var icons = useContext(SettingsContext).icons;
7566
- if (!icons) {
7567
- return null;
7568
- }
7569
- return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
7570
- .filter(function (className) { return !isEmpty(className); })
7571
- .join(" ") },
7572
- title && React.createElement("title", null, title),
7573
- React.createElement("use", { href: "".concat(icons, "#").concat(name) })));
7574
- };
7575
-
7576
7522
  var CalendarDay = function (_a) {
7577
7523
  var day = _a.day, isSelected = _a.isSelected, isDisabled = _a.isDisabled, isOutsideMonth = _a.isOutsideMonth, _b = _a.extraClassNames, extraClassNames = _b === void 0 ? [] : _b, children = _a.children, onClick = _a.onClick, onMouseOver = _a.onMouseOver;
7578
7524
  var handleClick = function () {
@@ -7597,198 +7543,1473 @@ var CalendarDay = function (_a) {
7597
7543
  children));
7598
7544
  };
7599
7545
 
7600
- var Calendar = function (_a) {
7601
- var _b = _a.year, year = _b === void 0 ? getYear(new Date()) : _b, _c = _a.month, month = _c === void 0 ? getMonth(new Date()) : _c, _d = _a.hasPreviousButton, hasPreviousButton = _d === void 0 ? true : _d, _e = _a.hasNextButton, hasNextButton = _e === void 0 ? true : _e, _f = _a.hasFixedHeight, hasFixedHeight = _f === void 0 ? true : _f, _g = _a.weekStartsOn, weekStartsOn = _g === void 0 ? 1 : _g, disabledDaysFunction = _a.disabledDaysFunction, selectedDaysFunction = _a.selectedDaysFunction, extraClassNamesFunction = _a.extraClassNamesFunction, dayContentFunction = _a.dayContentFunction, onDayClick = _a.onDayClick, onDayMouseOver = _a.onDayMouseOver, onNextClick = _a.onNextClick, onPreviousClick = _a.onPreviousClick;
7602
- var language = useContext(SettingsContext$1).language;
7603
- var locale = getLocale(language);
7604
- var handleDayClick = function (day) {
7605
- if (onDayClick) {
7606
- onDayClick(day);
7607
- }
7608
- };
7609
- var handleDayMouseOver = function (day) {
7610
- if (onDayMouseOver) {
7611
- onDayMouseOver(day);
7612
- }
7613
- };
7614
- var handleNextClick = function () {
7615
- var nextMonth = (month + 1) % 12;
7616
- var nextMonthsYear = nextMonth < month ? year + 1 : year;
7617
- if (onNextClick) {
7618
- onNextClick(nextMonthsYear, nextMonth);
7619
- }
7620
- };
7621
- var handlePreviousClick = function () {
7622
- var previousMonth = (month - 1) % 12;
7623
- var previousMonthsYear = previousMonth > month ? year - 1 : year;
7624
- if (onPreviousClick) {
7625
- onPreviousClick(previousMonthsYear, previousMonth);
7626
- }
7627
- };
7628
- var focusDate = new Date(year, month);
7629
- var firstDay = startOfWeek(startOfMonth(focusDate), { weekStartsOn: weekStartsOn });
7630
- var lastDay = hasFixedHeight
7631
- ? endOfWeek(addWeeks(firstDay, 5), { weekStartsOn: weekStartsOn })
7632
- : endOfWeek(endOfMonth(focusDate), { weekStartsOn: weekStartsOn });
7633
- var calendarDays = eachDayOfInterval({ start: firstDay, end: lastDay });
7634
- var mapDay = function (day) {
7635
- var isoDay = getISODay(day);
7636
- var isDisabled = isFunction(disabledDaysFunction) && disabledDaysFunction(day);
7637
- var isSelected = isFunction(selectedDaysFunction) && selectedDaysFunction(day);
7638
- var isOutsideMonth = !isSameMonth(day, focusDate);
7639
- var extraClassNames = isFunction(extraClassNamesFunction)
7640
- ? extraClassNamesFunction(day)
7641
- : undefined;
7642
- return (React.createElement(CalendarDay, { key: "day_".concat(isoDay), day: day, isSelected: isSelected, isDisabled: isDisabled, isOutsideMonth: isOutsideMonth, extraClassNames: extraClassNames, onClick: handleDayClick, onMouseOver: handleDayMouseOver }, isFunction(dayContentFunction) ? dayContentFunction(day) : undefined));
7643
- };
7644
- var mapWeek = function (weekDays) {
7645
- if (weekDays.length === 0) {
7646
- return null;
7647
- }
7648
- var isoWeek = getISOWeek(weekDays[0]);
7649
- return (React.createElement("div", { className: "calendar__week", key: "week_".concat(isoWeek) }, weekDays.map(mapDay)));
7650
- };
7651
- return (React.createElement("div", { className: "calendar" },
7652
- React.createElement("div", { className: "calendar__header" },
7653
- React.createElement("div", { className: "calendar__pager" },
7654
- React.createElement("div", { className: buildClassName([
7655
- "calendar__previous",
7656
- !hasPreviousButton && "calendar__previous--disabled",
7657
- ]), onClick: handlePreviousClick },
7658
- React.createElement(Icon$1, { name: "ui-chevron-left" })),
7659
- React.createElement("div", { className: "calendar__current-month" }, format$1(focusDate, "MMMM yyyy", { locale: locale })),
7660
- React.createElement("div", { className: buildClassName([
7661
- "calendar__next",
7662
- !hasNextButton && "calendar__next--disabled",
7663
- ]), onClick: handleNextClick },
7664
- React.createElement(Icon$1, { name: "ui-chevron-right" }))),
7665
- React.createElement("div", { className: "calendar__day-labels" }, range(0, 7).map(function (i) { return (React.createElement("div", { className: "calendar__day-label", key: "day_".concat(i) }, format$1(calendarDays[i], "EEEEEE", { locale: locale }))); }))),
7666
- React.createElement("div", { className: "calendar__body" }, chunk(calendarDays, 7).map(mapWeek))));
7667
- };
7546
+ var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect$1 : useEffect;
7547
+ var useLayoutEffect = useIsomorphicLayoutEffect;
7668
7548
 
7669
- var DateRangePicker = function (props) {
7670
- var _a, _b, _c, _d;
7671
- var _e = useState(props.fromDate), fromDate = _e[0], setFromDate = _e[1];
7672
- var _f = useState(props.toDate), toDate = _f[0], setToDate = _f[1];
7673
- var _g = useState((_a = props.focusMonth) !== null && _a !== void 0 ? _a : { year: getYear(new Date()), month: getMonth(new Date()) }), focusMonth = _g[0], setFocusMonth = _g[1];
7674
- var _h = useState(false), isWaitingForToDate = _h[0], setWaitingForToDate = _h[1];
7675
- var handleDayClick = function (day) {
7676
- var onSelectionChange = props.onSelectionChange;
7677
- if (isWaitingForToDate && !isNil(fromDate) && isAfter(day, fromDate)) {
7678
- setToDate(day);
7679
- setWaitingForToDate(false);
7680
- if (props.onToDateChange) {
7681
- props.onToDateChange(undefined);
7682
- }
7683
- if (onSelectionChange) {
7684
- onSelectionChange(fromDate, day);
7685
- }
7686
- }
7687
- else {
7688
- setFromDate(day);
7689
- if (props.duration) {
7690
- var to = new Date(Date.UTC(day.getFullYear(), day.getMonth(), day.getDate() + props.duration));
7691
- setToDate(to);
7692
- if (onSelectionChange) {
7693
- onSelectionChange(day, to);
7694
- }
7695
- }
7696
- else {
7697
- setToDate(undefined);
7698
- setWaitingForToDate(true);
7699
- }
7700
- if (props.onFromDateChange) {
7701
- props.onFromDateChange(day);
7702
- }
7703
- }
7704
- };
7705
- var handleDayMouseOver = function (day) {
7706
- if (isWaitingForToDate &&
7707
- (isNil(fromDate) || isEqual(day, fromDate) || isAfter(day, fromDate))) {
7708
- setToDate(day);
7709
- }
7710
- };
7711
- var handlePreviousClick = function () {
7712
- var month = focusMonth.month, year = focusMonth.year;
7713
- var previousMonth = (month - 1) % 12;
7714
- var previousMonthsYear = previousMonth > month ? year - 1 : year;
7715
- var newFocusMonth = { year: previousMonthsYear, month: previousMonth };
7716
- setFocusMonth(newFocusMonth);
7717
- if (props.onFocusMonthChange) {
7718
- props.onFocusMonthChange(newFocusMonth);
7719
- }
7720
- };
7721
- var handleNextClick = function () {
7722
- var month = focusMonth.month, year = focusMonth.year;
7723
- var nextMonth = (month + 1) % 12;
7724
- var nextMonthsYear = nextMonth < month ? year + 1 : year;
7725
- var newFocusMonth = { year: nextMonthsYear, month: nextMonth };
7726
- setFocusMonth(newFocusMonth);
7727
- if (props.onFocusMonthChange) {
7728
- props.onFocusMonthChange(newFocusMonth);
7729
- }
7730
- };
7731
- var today = startOfDay(new Date());
7732
- var firstCalendarYear = focusMonth.year;
7733
- var firstCalendarMonth = focusMonth.month;
7734
- var secondCalendarMonth = (firstCalendarMonth + 1) % 12;
7735
- var secondCalendarYear = secondCalendarMonth < firstCalendarMonth ? firstCalendarYear + 1 : firstCalendarYear;
7736
- var checkIfDateIsSelected = function (date) {
7737
- return isNil(toDate)
7738
- ? !isNil(fromDate) && isEqual(date, fromDate)
7739
- : !isNil(fromDate) &&
7740
- isWithinInterval(date, { start: startOfDay(fromDate), end: endOfDay(toDate) });
7741
- };
7742
- useEffect(function () {
7743
- setFromDate(props.fromDate);
7744
- setToDate(props.toDate);
7745
- }, [(_b = props.fromDate) === null || _b === void 0 ? void 0 : _b.valueOf(), (_c = props.toDate) === null || _c === void 0 ? void 0 : _c.valueOf()]);
7746
- useEffect(function () {
7747
- if (props.fromDate) {
7748
- setFocusMonth({ month: props.fromDate.getMonth(), year: props.fromDate.getFullYear() });
7749
- }
7750
- }, [(_d = props.fromDate) === null || _d === void 0 ? void 0 : _d.valueOf()]);
7751
- return (React.createElement("div", { className: "date-range-picker" },
7752
- React.createElement("div", { className: "date-range-picker__from" },
7753
- React.createElement(Calendar, { year: firstCalendarYear, month: firstCalendarMonth, onDayClick: handleDayClick, onDayMouseOver: handleDayMouseOver, onPreviousClick: handlePreviousClick, hasPreviousButton: isAfter(new Date(firstCalendarYear, firstCalendarMonth), endOfMonth(today)), hasNextButton: false, selectedDaysFunction: checkIfDateIsSelected, disabledDaysFunction: props.disabledDaysFunction, extraClassNamesFunction: props.extraClassNamesFunction, dayContentFunction: props.dayContentFunction, hasFixedHeight: true })),
7754
- React.createElement("div", { className: "date-range-picker__to" },
7755
- React.createElement(Calendar, { year: secondCalendarYear, month: secondCalendarMonth, onDayClick: handleDayClick, onDayMouseOver: handleDayMouseOver, onNextClick: handleNextClick, hasPreviousButton: false, selectedDaysFunction: checkIfDateIsSelected, disabledDaysFunction: props.disabledDaysFunction, extraClassNamesFunction: props.extraClassNamesFunction, dayContentFunction: props.dayContentFunction, hasFixedHeight: true }))));
7756
- };
7549
+ function createCommonjsModule(fn, module) {
7550
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
7551
+ }
7757
7552
 
7758
- var Icon = function (_a) {
7759
- var name = _a.name, className = _a.className, title = _a.title;
7760
- var icons = useContext(SettingsContext$1).icons;
7761
- if (!icons) {
7762
- return null;
7763
- }
7764
- return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
7765
- .filter(function (className) { return !isEmpty(className); })
7766
- .join(" ") },
7767
- title && React.createElement("title", null, title),
7768
- React.createElement("use", { href: "".concat(icons, "#").concat(name) })));
7769
- };
7553
+ /** @license React v16.13.1
7554
+ * react-is.production.min.js
7555
+ *
7556
+ * Copyright (c) Facebook, Inc. and its affiliates.
7557
+ *
7558
+ * This source code is licensed under the MIT license found in the
7559
+ * LICENSE file in the root directory of this source tree.
7560
+ */
7561
+ var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?
7562
+ Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119;
7563
+ function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}var AsyncMode=l;var ConcurrentMode=m;var ContextConsumer=k;var ContextProvider=h;var Element=c;var ForwardRef=n;var Fragment=e;var Lazy=t;var Memo=r;var Portal=d;
7564
+ var Profiler=g;var StrictMode=f;var Suspense=p;var isAsyncMode=function(a){return A(a)||z(a)===l};var isConcurrentMode=A;var isContextConsumer=function(a){return z(a)===k};var isContextProvider=function(a){return z(a)===h};var isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};var isForwardRef=function(a){return z(a)===n};var isFragment=function(a){return z(a)===e};var isLazy=function(a){return z(a)===t};
7565
+ var isMemo=function(a){return z(a)===r};var isPortal=function(a){return z(a)===d};var isProfiler=function(a){return z(a)===g};var isStrictMode=function(a){return z(a)===f};var isSuspense=function(a){return z(a)===p};
7566
+ var isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};var typeOf=z;
7567
+
7568
+ var reactIs_production_min = {
7569
+ AsyncMode: AsyncMode,
7570
+ ConcurrentMode: ConcurrentMode,
7571
+ ContextConsumer: ContextConsumer,
7572
+ ContextProvider: ContextProvider,
7573
+ Element: Element,
7574
+ ForwardRef: ForwardRef,
7575
+ Fragment: Fragment,
7576
+ Lazy: Lazy,
7577
+ Memo: Memo,
7578
+ Portal: Portal,
7579
+ Profiler: Profiler,
7580
+ StrictMode: StrictMode,
7581
+ Suspense: Suspense,
7582
+ isAsyncMode: isAsyncMode,
7583
+ isConcurrentMode: isConcurrentMode,
7584
+ isContextConsumer: isContextConsumer,
7585
+ isContextProvider: isContextProvider,
7586
+ isElement: isElement,
7587
+ isForwardRef: isForwardRef,
7588
+ isFragment: isFragment,
7589
+ isLazy: isLazy,
7590
+ isMemo: isMemo,
7591
+ isPortal: isPortal,
7592
+ isProfiler: isProfiler,
7593
+ isStrictMode: isStrictMode,
7594
+ isSuspense: isSuspense,
7595
+ isValidElementType: isValidElementType,
7596
+ typeOf: typeOf
7597
+ };
7598
+
7599
+ var reactIs_development = createCommonjsModule(function (module, exports) {
7600
+
7601
+
7602
+
7603
+ if (process.env.NODE_ENV !== "production") {
7604
+ (function() {
7605
+
7606
+ // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
7607
+ // nor polyfill, then a plain number is used for performance.
7608
+ var hasSymbol = typeof Symbol === 'function' && Symbol.for;
7609
+ var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
7610
+ var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
7611
+ var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
7612
+ var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
7613
+ var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
7614
+ var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
7615
+ var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
7616
+ // (unstable) APIs that have been removed. Can we remove the symbols?
7617
+
7618
+ var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
7619
+ var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
7620
+ var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
7621
+ var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
7622
+ var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
7623
+ var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
7624
+ var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
7625
+ var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
7626
+ var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
7627
+ var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
7628
+ var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
7629
+
7630
+ function isValidElementType(type) {
7631
+ return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
7632
+ type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
7633
+ }
7770
7634
 
7771
- var Dates = function (_a) {
7772
- var value = _a.value, duration = _a.duration, onChange = _a.onChange;
7773
- var language = useContext(SettingsContext$1).language;
7774
- var translations = getTranslations(language);
7775
- var mql = typeof window !== "undefined" ? window.matchMedia("(min-width: 1200px)") : undefined;
7776
- var _b = useState(null), referenceElement = _b[0], setReferenceElement = _b[1];
7777
- var _c = useState(null), popperElement = _c[0], setPopperElement = _c[1];
7778
- var _d = useState(false), panelActive = _d[0], setPanelActive = _d[1];
7779
- var _e = usePopper(referenceElement, popperElement, {
7780
- placement: "top",
7781
- modifiers: [
7782
- {
7783
- name: "offset",
7784
- options: {
7785
- offset: [0, 20],
7786
- },
7787
- },
7788
- {
7789
- name: "preventOverflow",
7790
- options: {
7791
- padding: 40,
7635
+ function typeOf(object) {
7636
+ if (typeof object === 'object' && object !== null) {
7637
+ var $$typeof = object.$$typeof;
7638
+
7639
+ switch ($$typeof) {
7640
+ case REACT_ELEMENT_TYPE:
7641
+ var type = object.type;
7642
+
7643
+ switch (type) {
7644
+ case REACT_ASYNC_MODE_TYPE:
7645
+ case REACT_CONCURRENT_MODE_TYPE:
7646
+ case REACT_FRAGMENT_TYPE:
7647
+ case REACT_PROFILER_TYPE:
7648
+ case REACT_STRICT_MODE_TYPE:
7649
+ case REACT_SUSPENSE_TYPE:
7650
+ return type;
7651
+
7652
+ default:
7653
+ var $$typeofType = type && type.$$typeof;
7654
+
7655
+ switch ($$typeofType) {
7656
+ case REACT_CONTEXT_TYPE:
7657
+ case REACT_FORWARD_REF_TYPE:
7658
+ case REACT_LAZY_TYPE:
7659
+ case REACT_MEMO_TYPE:
7660
+ case REACT_PROVIDER_TYPE:
7661
+ return $$typeofType;
7662
+
7663
+ default:
7664
+ return $$typeof;
7665
+ }
7666
+
7667
+ }
7668
+
7669
+ case REACT_PORTAL_TYPE:
7670
+ return $$typeof;
7671
+ }
7672
+ }
7673
+
7674
+ return undefined;
7675
+ } // AsyncMode is deprecated along with isAsyncMode
7676
+
7677
+ var AsyncMode = REACT_ASYNC_MODE_TYPE;
7678
+ var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
7679
+ var ContextConsumer = REACT_CONTEXT_TYPE;
7680
+ var ContextProvider = REACT_PROVIDER_TYPE;
7681
+ var Element = REACT_ELEMENT_TYPE;
7682
+ var ForwardRef = REACT_FORWARD_REF_TYPE;
7683
+ var Fragment = REACT_FRAGMENT_TYPE;
7684
+ var Lazy = REACT_LAZY_TYPE;
7685
+ var Memo = REACT_MEMO_TYPE;
7686
+ var Portal = REACT_PORTAL_TYPE;
7687
+ var Profiler = REACT_PROFILER_TYPE;
7688
+ var StrictMode = REACT_STRICT_MODE_TYPE;
7689
+ var Suspense = REACT_SUSPENSE_TYPE;
7690
+ var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
7691
+
7692
+ function isAsyncMode(object) {
7693
+ {
7694
+ if (!hasWarnedAboutDeprecatedIsAsyncMode) {
7695
+ hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
7696
+
7697
+ console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
7698
+ }
7699
+ }
7700
+
7701
+ return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
7702
+ }
7703
+ function isConcurrentMode(object) {
7704
+ return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
7705
+ }
7706
+ function isContextConsumer(object) {
7707
+ return typeOf(object) === REACT_CONTEXT_TYPE;
7708
+ }
7709
+ function isContextProvider(object) {
7710
+ return typeOf(object) === REACT_PROVIDER_TYPE;
7711
+ }
7712
+ function isElement(object) {
7713
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
7714
+ }
7715
+ function isForwardRef(object) {
7716
+ return typeOf(object) === REACT_FORWARD_REF_TYPE;
7717
+ }
7718
+ function isFragment(object) {
7719
+ return typeOf(object) === REACT_FRAGMENT_TYPE;
7720
+ }
7721
+ function isLazy(object) {
7722
+ return typeOf(object) === REACT_LAZY_TYPE;
7723
+ }
7724
+ function isMemo(object) {
7725
+ return typeOf(object) === REACT_MEMO_TYPE;
7726
+ }
7727
+ function isPortal(object) {
7728
+ return typeOf(object) === REACT_PORTAL_TYPE;
7729
+ }
7730
+ function isProfiler(object) {
7731
+ return typeOf(object) === REACT_PROFILER_TYPE;
7732
+ }
7733
+ function isStrictMode(object) {
7734
+ return typeOf(object) === REACT_STRICT_MODE_TYPE;
7735
+ }
7736
+ function isSuspense(object) {
7737
+ return typeOf(object) === REACT_SUSPENSE_TYPE;
7738
+ }
7739
+
7740
+ exports.AsyncMode = AsyncMode;
7741
+ exports.ConcurrentMode = ConcurrentMode;
7742
+ exports.ContextConsumer = ContextConsumer;
7743
+ exports.ContextProvider = ContextProvider;
7744
+ exports.Element = Element;
7745
+ exports.ForwardRef = ForwardRef;
7746
+ exports.Fragment = Fragment;
7747
+ exports.Lazy = Lazy;
7748
+ exports.Memo = Memo;
7749
+ exports.Portal = Portal;
7750
+ exports.Profiler = Profiler;
7751
+ exports.StrictMode = StrictMode;
7752
+ exports.Suspense = Suspense;
7753
+ exports.isAsyncMode = isAsyncMode;
7754
+ exports.isConcurrentMode = isConcurrentMode;
7755
+ exports.isContextConsumer = isContextConsumer;
7756
+ exports.isContextProvider = isContextProvider;
7757
+ exports.isElement = isElement;
7758
+ exports.isForwardRef = isForwardRef;
7759
+ exports.isFragment = isFragment;
7760
+ exports.isLazy = isLazy;
7761
+ exports.isMemo = isMemo;
7762
+ exports.isPortal = isPortal;
7763
+ exports.isProfiler = isProfiler;
7764
+ exports.isStrictMode = isStrictMode;
7765
+ exports.isSuspense = isSuspense;
7766
+ exports.isValidElementType = isValidElementType;
7767
+ exports.typeOf = typeOf;
7768
+ })();
7769
+ }
7770
+ });
7771
+ reactIs_development.AsyncMode;
7772
+ reactIs_development.ConcurrentMode;
7773
+ reactIs_development.ContextConsumer;
7774
+ reactIs_development.ContextProvider;
7775
+ reactIs_development.Element;
7776
+ reactIs_development.ForwardRef;
7777
+ reactIs_development.Fragment;
7778
+ reactIs_development.Lazy;
7779
+ reactIs_development.Memo;
7780
+ reactIs_development.Portal;
7781
+ reactIs_development.Profiler;
7782
+ reactIs_development.StrictMode;
7783
+ reactIs_development.Suspense;
7784
+ reactIs_development.isAsyncMode;
7785
+ reactIs_development.isConcurrentMode;
7786
+ reactIs_development.isContextConsumer;
7787
+ reactIs_development.isContextProvider;
7788
+ reactIs_development.isElement;
7789
+ reactIs_development.isForwardRef;
7790
+ reactIs_development.isFragment;
7791
+ reactIs_development.isLazy;
7792
+ reactIs_development.isMemo;
7793
+ reactIs_development.isPortal;
7794
+ reactIs_development.isProfiler;
7795
+ reactIs_development.isStrictMode;
7796
+ reactIs_development.isSuspense;
7797
+ reactIs_development.isValidElementType;
7798
+ reactIs_development.typeOf;
7799
+
7800
+ var reactIs = createCommonjsModule(function (module) {
7801
+
7802
+ if (process.env.NODE_ENV === 'production') {
7803
+ module.exports = reactIs_production_min;
7804
+ } else {
7805
+ module.exports = reactIs_development;
7806
+ }
7807
+ });
7808
+
7809
+ /*
7810
+ object-assign
7811
+ (c) Sindre Sorhus
7812
+ @license MIT
7813
+ */
7814
+ /* eslint-disable no-unused-vars */
7815
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
7816
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
7817
+ var propIsEnumerable = Object.prototype.propertyIsEnumerable;
7818
+
7819
+ function toObject(val) {
7820
+ if (val === null || val === undefined) {
7821
+ throw new TypeError('Object.assign cannot be called with null or undefined');
7822
+ }
7823
+
7824
+ return Object(val);
7825
+ }
7826
+
7827
+ function shouldUseNative() {
7828
+ try {
7829
+ if (!Object.assign) {
7830
+ return false;
7831
+ }
7832
+
7833
+ // Detect buggy property enumeration order in older V8 versions.
7834
+
7835
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
7836
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
7837
+ test1[5] = 'de';
7838
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
7839
+ return false;
7840
+ }
7841
+
7842
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
7843
+ var test2 = {};
7844
+ for (var i = 0; i < 10; i++) {
7845
+ test2['_' + String.fromCharCode(i)] = i;
7846
+ }
7847
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
7848
+ return test2[n];
7849
+ });
7850
+ if (order2.join('') !== '0123456789') {
7851
+ return false;
7852
+ }
7853
+
7854
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
7855
+ var test3 = {};
7856
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
7857
+ test3[letter] = letter;
7858
+ });
7859
+ if (Object.keys(Object.assign({}, test3)).join('') !==
7860
+ 'abcdefghijklmnopqrst') {
7861
+ return false;
7862
+ }
7863
+
7864
+ return true;
7865
+ } catch (err) {
7866
+ // We don't expect any of the above to throw, but better to be safe.
7867
+ return false;
7868
+ }
7869
+ }
7870
+
7871
+ var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
7872
+ var from;
7873
+ var to = toObject(target);
7874
+ var symbols;
7875
+
7876
+ for (var s = 1; s < arguments.length; s++) {
7877
+ from = Object(arguments[s]);
7878
+
7879
+ for (var key in from) {
7880
+ if (hasOwnProperty.call(from, key)) {
7881
+ to[key] = from[key];
7882
+ }
7883
+ }
7884
+
7885
+ if (getOwnPropertySymbols) {
7886
+ symbols = getOwnPropertySymbols(from);
7887
+ for (var i = 0; i < symbols.length; i++) {
7888
+ if (propIsEnumerable.call(from, symbols[i])) {
7889
+ to[symbols[i]] = from[symbols[i]];
7890
+ }
7891
+ }
7892
+ }
7893
+ }
7894
+
7895
+ return to;
7896
+ };
7897
+
7898
+ /**
7899
+ * Copyright (c) 2013-present, Facebook, Inc.
7900
+ *
7901
+ * This source code is licensed under the MIT license found in the
7902
+ * LICENSE file in the root directory of this source tree.
7903
+ */
7904
+
7905
+ var ReactPropTypesSecret$2 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
7906
+
7907
+ var ReactPropTypesSecret_1 = ReactPropTypesSecret$2;
7908
+
7909
+ var has$2 = Function.call.bind(Object.prototype.hasOwnProperty);
7910
+
7911
+ var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;
7912
+
7913
+ var has$1 = has$2;
7914
+
7915
+ var printWarning$1 = function() {};
7916
+
7917
+ if (process.env.NODE_ENV !== 'production') {
7918
+ var ReactPropTypesSecret = ReactPropTypesSecret$1;
7919
+ var loggedTypeFailures = {};
7920
+ var has = has$1;
7921
+
7922
+ printWarning$1 = function(text) {
7923
+ var message = 'Warning: ' + text;
7924
+ if (typeof console !== 'undefined') {
7925
+ console.error(message);
7926
+ }
7927
+ try {
7928
+ // --- Welcome to debugging React ---
7929
+ // This error was thrown as a convenience so that you can use this stack
7930
+ // to find the callsite that caused this warning to fire.
7931
+ throw new Error(message);
7932
+ } catch (x) { /**/ }
7933
+ };
7934
+ }
7935
+
7936
+ /**
7937
+ * Assert that the values match with the type specs.
7938
+ * Error messages are memorized and will only be shown once.
7939
+ *
7940
+ * @param {object} typeSpecs Map of name to a ReactPropType
7941
+ * @param {object} values Runtime values that need to be type-checked
7942
+ * @param {string} location e.g. "prop", "context", "child context"
7943
+ * @param {string} componentName Name of the component for error messages.
7944
+ * @param {?Function} getStack Returns the component stack.
7945
+ * @private
7946
+ */
7947
+ function checkPropTypes$1(typeSpecs, values, location, componentName, getStack) {
7948
+ if (process.env.NODE_ENV !== 'production') {
7949
+ for (var typeSpecName in typeSpecs) {
7950
+ if (has(typeSpecs, typeSpecName)) {
7951
+ var error;
7952
+ // Prop type validation may throw. In case they do, we don't want to
7953
+ // fail the render phase where it didn't fail before. So we log it.
7954
+ // After these have been cleaned up, we'll let them throw.
7955
+ try {
7956
+ // This is intentionally an invariant that gets caught. It's the same
7957
+ // behavior as without this statement except with a better message.
7958
+ if (typeof typeSpecs[typeSpecName] !== 'function') {
7959
+ var err = Error(
7960
+ (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
7961
+ 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +
7962
+ 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
7963
+ );
7964
+ err.name = 'Invariant Violation';
7965
+ throw err;
7966
+ }
7967
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
7968
+ } catch (ex) {
7969
+ error = ex;
7970
+ }
7971
+ if (error && !(error instanceof Error)) {
7972
+ printWarning$1(
7973
+ (componentName || 'React class') + ': type specification of ' +
7974
+ location + ' `' + typeSpecName + '` is invalid; the type checker ' +
7975
+ 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
7976
+ 'You may have forgotten to pass an argument to the type checker ' +
7977
+ 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
7978
+ 'shape all require an argument).'
7979
+ );
7980
+ }
7981
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
7982
+ // Only monitor this failure once because there tends to be a lot of the
7983
+ // same error.
7984
+ loggedTypeFailures[error.message] = true;
7985
+
7986
+ var stack = getStack ? getStack() : '';
7987
+
7988
+ printWarning$1(
7989
+ 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
7990
+ );
7991
+ }
7992
+ }
7993
+ }
7994
+ }
7995
+ }
7996
+
7997
+ /**
7998
+ * Resets warning cache when testing.
7999
+ *
8000
+ * @private
8001
+ */
8002
+ checkPropTypes$1.resetWarningCache = function() {
8003
+ if (process.env.NODE_ENV !== 'production') {
8004
+ loggedTypeFailures = {};
8005
+ }
8006
+ };
8007
+
8008
+ var checkPropTypes_1 = checkPropTypes$1;
8009
+
8010
+ var checkPropTypes = checkPropTypes_1;
8011
+
8012
+ var printWarning = function() {};
8013
+
8014
+ if (process.env.NODE_ENV !== 'production') {
8015
+ printWarning = function(text) {
8016
+ var message = 'Warning: ' + text;
8017
+ if (typeof console !== 'undefined') {
8018
+ console.error(message);
8019
+ }
8020
+ try {
8021
+ // --- Welcome to debugging React ---
8022
+ // This error was thrown as a convenience so that you can use this stack
8023
+ // to find the callsite that caused this warning to fire.
8024
+ throw new Error(message);
8025
+ } catch (x) {}
8026
+ };
8027
+ }
8028
+
8029
+ function emptyFunctionThatReturnsNull() {
8030
+ return null;
8031
+ }
8032
+
8033
+ var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {
8034
+ /* global Symbol */
8035
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
8036
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
8037
+
8038
+ /**
8039
+ * Returns the iterator method function contained on the iterable object.
8040
+ *
8041
+ * Be sure to invoke the function with the iterable as context:
8042
+ *
8043
+ * var iteratorFn = getIteratorFn(myIterable);
8044
+ * if (iteratorFn) {
8045
+ * var iterator = iteratorFn.call(myIterable);
8046
+ * ...
8047
+ * }
8048
+ *
8049
+ * @param {?object} maybeIterable
8050
+ * @return {?function}
8051
+ */
8052
+ function getIteratorFn(maybeIterable) {
8053
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
8054
+ if (typeof iteratorFn === 'function') {
8055
+ return iteratorFn;
8056
+ }
8057
+ }
8058
+
8059
+ /**
8060
+ * Collection of methods that allow declaration and validation of props that are
8061
+ * supplied to React components. Example usage:
8062
+ *
8063
+ * var Props = require('ReactPropTypes');
8064
+ * var MyArticle = React.createClass({
8065
+ * propTypes: {
8066
+ * // An optional string prop named "description".
8067
+ * description: Props.string,
8068
+ *
8069
+ * // A required enum prop named "category".
8070
+ * category: Props.oneOf(['News','Photos']).isRequired,
8071
+ *
8072
+ * // A prop named "dialog" that requires an instance of Dialog.
8073
+ * dialog: Props.instanceOf(Dialog).isRequired
8074
+ * },
8075
+ * render: function() { ... }
8076
+ * });
8077
+ *
8078
+ * A more formal specification of how these methods are used:
8079
+ *
8080
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
8081
+ * decl := ReactPropTypes.{type}(.isRequired)?
8082
+ *
8083
+ * Each and every declaration produces a function with the same signature. This
8084
+ * allows the creation of custom validation functions. For example:
8085
+ *
8086
+ * var MyLink = React.createClass({
8087
+ * propTypes: {
8088
+ * // An optional string or URI prop named "href".
8089
+ * href: function(props, propName, componentName) {
8090
+ * var propValue = props[propName];
8091
+ * if (propValue != null && typeof propValue !== 'string' &&
8092
+ * !(propValue instanceof URI)) {
8093
+ * return new Error(
8094
+ * 'Expected a string or an URI for ' + propName + ' in ' +
8095
+ * componentName
8096
+ * );
8097
+ * }
8098
+ * }
8099
+ * },
8100
+ * render: function() {...}
8101
+ * });
8102
+ *
8103
+ * @internal
8104
+ */
8105
+
8106
+ var ANONYMOUS = '<<anonymous>>';
8107
+
8108
+ // Important!
8109
+ // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
8110
+ var ReactPropTypes = {
8111
+ array: createPrimitiveTypeChecker('array'),
8112
+ bigint: createPrimitiveTypeChecker('bigint'),
8113
+ bool: createPrimitiveTypeChecker('boolean'),
8114
+ func: createPrimitiveTypeChecker('function'),
8115
+ number: createPrimitiveTypeChecker('number'),
8116
+ object: createPrimitiveTypeChecker('object'),
8117
+ string: createPrimitiveTypeChecker('string'),
8118
+ symbol: createPrimitiveTypeChecker('symbol'),
8119
+
8120
+ any: createAnyTypeChecker(),
8121
+ arrayOf: createArrayOfTypeChecker,
8122
+ element: createElementTypeChecker(),
8123
+ elementType: createElementTypeTypeChecker(),
8124
+ instanceOf: createInstanceTypeChecker,
8125
+ node: createNodeChecker(),
8126
+ objectOf: createObjectOfTypeChecker,
8127
+ oneOf: createEnumTypeChecker,
8128
+ oneOfType: createUnionTypeChecker,
8129
+ shape: createShapeTypeChecker,
8130
+ exact: createStrictShapeTypeChecker,
8131
+ };
8132
+
8133
+ /**
8134
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
8135
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
8136
+ */
8137
+ /*eslint-disable no-self-compare*/
8138
+ function is(x, y) {
8139
+ // SameValue algorithm
8140
+ if (x === y) {
8141
+ // Steps 1-5, 7-10
8142
+ // Steps 6.b-6.e: +0 != -0
8143
+ return x !== 0 || 1 / x === 1 / y;
8144
+ } else {
8145
+ // Step 6.a: NaN == NaN
8146
+ return x !== x && y !== y;
8147
+ }
8148
+ }
8149
+ /*eslint-enable no-self-compare*/
8150
+
8151
+ /**
8152
+ * We use an Error-like object for backward compatibility as people may call
8153
+ * PropTypes directly and inspect their output. However, we don't use real
8154
+ * Errors anymore. We don't inspect their stack anyway, and creating them
8155
+ * is prohibitively expensive if they are created too often, such as what
8156
+ * happens in oneOfType() for any type before the one that matched.
8157
+ */
8158
+ function PropTypeError(message, data) {
8159
+ this.message = message;
8160
+ this.data = data && typeof data === 'object' ? data: {};
8161
+ this.stack = '';
8162
+ }
8163
+ // Make `instanceof Error` still work for returned errors.
8164
+ PropTypeError.prototype = Error.prototype;
8165
+
8166
+ function createChainableTypeChecker(validate) {
8167
+ if (process.env.NODE_ENV !== 'production') {
8168
+ var manualPropTypeCallCache = {};
8169
+ var manualPropTypeWarningCount = 0;
8170
+ }
8171
+ function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
8172
+ componentName = componentName || ANONYMOUS;
8173
+ propFullName = propFullName || propName;
8174
+
8175
+ if (secret !== ReactPropTypesSecret$1) {
8176
+ if (throwOnDirectAccess) {
8177
+ // New behavior only for users of `prop-types` package
8178
+ var err = new Error(
8179
+ 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
8180
+ 'Use `PropTypes.checkPropTypes()` to call them. ' +
8181
+ 'Read more at http://fb.me/use-check-prop-types'
8182
+ );
8183
+ err.name = 'Invariant Violation';
8184
+ throw err;
8185
+ } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
8186
+ // Old behavior for people using React.PropTypes
8187
+ var cacheKey = componentName + ':' + propName;
8188
+ if (
8189
+ !manualPropTypeCallCache[cacheKey] &&
8190
+ // Avoid spamming the console because they are often not actionable except for lib authors
8191
+ manualPropTypeWarningCount < 3
8192
+ ) {
8193
+ printWarning(
8194
+ 'You are manually calling a React.PropTypes validation ' +
8195
+ 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +
8196
+ 'and will throw in the standalone `prop-types` package. ' +
8197
+ 'You may be seeing this warning due to a third-party PropTypes ' +
8198
+ 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
8199
+ );
8200
+ manualPropTypeCallCache[cacheKey] = true;
8201
+ manualPropTypeWarningCount++;
8202
+ }
8203
+ }
8204
+ }
8205
+ if (props[propName] == null) {
8206
+ if (isRequired) {
8207
+ if (props[propName] === null) {
8208
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
8209
+ }
8210
+ return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
8211
+ }
8212
+ return null;
8213
+ } else {
8214
+ return validate(props, propName, componentName, location, propFullName);
8215
+ }
8216
+ }
8217
+
8218
+ var chainedCheckType = checkType.bind(null, false);
8219
+ chainedCheckType.isRequired = checkType.bind(null, true);
8220
+
8221
+ return chainedCheckType;
8222
+ }
8223
+
8224
+ function createPrimitiveTypeChecker(expectedType) {
8225
+ function validate(props, propName, componentName, location, propFullName, secret) {
8226
+ var propValue = props[propName];
8227
+ var propType = getPropType(propValue);
8228
+ if (propType !== expectedType) {
8229
+ // `propValue` being instance of, say, date/regexp, pass the 'object'
8230
+ // check, but we can offer a more precise error message here rather than
8231
+ // 'of type `object`'.
8232
+ var preciseType = getPreciseType(propValue);
8233
+
8234
+ return new PropTypeError(
8235
+ 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),
8236
+ {expectedType: expectedType}
8237
+ );
8238
+ }
8239
+ return null;
8240
+ }
8241
+ return createChainableTypeChecker(validate);
8242
+ }
8243
+
8244
+ function createAnyTypeChecker() {
8245
+ return createChainableTypeChecker(emptyFunctionThatReturnsNull);
8246
+ }
8247
+
8248
+ function createArrayOfTypeChecker(typeChecker) {
8249
+ function validate(props, propName, componentName, location, propFullName) {
8250
+ if (typeof typeChecker !== 'function') {
8251
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
8252
+ }
8253
+ var propValue = props[propName];
8254
+ if (!Array.isArray(propValue)) {
8255
+ var propType = getPropType(propValue);
8256
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
8257
+ }
8258
+ for (var i = 0; i < propValue.length; i++) {
8259
+ var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret$1);
8260
+ if (error instanceof Error) {
8261
+ return error;
8262
+ }
8263
+ }
8264
+ return null;
8265
+ }
8266
+ return createChainableTypeChecker(validate);
8267
+ }
8268
+
8269
+ function createElementTypeChecker() {
8270
+ function validate(props, propName, componentName, location, propFullName) {
8271
+ var propValue = props[propName];
8272
+ if (!isValidElement(propValue)) {
8273
+ var propType = getPropType(propValue);
8274
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
8275
+ }
8276
+ return null;
8277
+ }
8278
+ return createChainableTypeChecker(validate);
8279
+ }
8280
+
8281
+ function createElementTypeTypeChecker() {
8282
+ function validate(props, propName, componentName, location, propFullName) {
8283
+ var propValue = props[propName];
8284
+ if (!reactIs.isValidElementType(propValue)) {
8285
+ var propType = getPropType(propValue);
8286
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
8287
+ }
8288
+ return null;
8289
+ }
8290
+ return createChainableTypeChecker(validate);
8291
+ }
8292
+
8293
+ function createInstanceTypeChecker(expectedClass) {
8294
+ function validate(props, propName, componentName, location, propFullName) {
8295
+ if (!(props[propName] instanceof expectedClass)) {
8296
+ var expectedClassName = expectedClass.name || ANONYMOUS;
8297
+ var actualClassName = getClassName(props[propName]);
8298
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
8299
+ }
8300
+ return null;
8301
+ }
8302
+ return createChainableTypeChecker(validate);
8303
+ }
8304
+
8305
+ function createEnumTypeChecker(expectedValues) {
8306
+ if (!Array.isArray(expectedValues)) {
8307
+ if (process.env.NODE_ENV !== 'production') {
8308
+ if (arguments.length > 1) {
8309
+ printWarning(
8310
+ 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
8311
+ 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
8312
+ );
8313
+ } else {
8314
+ printWarning('Invalid argument supplied to oneOf, expected an array.');
8315
+ }
8316
+ }
8317
+ return emptyFunctionThatReturnsNull;
8318
+ }
8319
+
8320
+ function validate(props, propName, componentName, location, propFullName) {
8321
+ var propValue = props[propName];
8322
+ for (var i = 0; i < expectedValues.length; i++) {
8323
+ if (is(propValue, expectedValues[i])) {
8324
+ return null;
8325
+ }
8326
+ }
8327
+
8328
+ var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
8329
+ var type = getPreciseType(value);
8330
+ if (type === 'symbol') {
8331
+ return String(value);
8332
+ }
8333
+ return value;
8334
+ });
8335
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
8336
+ }
8337
+ return createChainableTypeChecker(validate);
8338
+ }
8339
+
8340
+ function createObjectOfTypeChecker(typeChecker) {
8341
+ function validate(props, propName, componentName, location, propFullName) {
8342
+ if (typeof typeChecker !== 'function') {
8343
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
8344
+ }
8345
+ var propValue = props[propName];
8346
+ var propType = getPropType(propValue);
8347
+ if (propType !== 'object') {
8348
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
8349
+ }
8350
+ for (var key in propValue) {
8351
+ if (has$1(propValue, key)) {
8352
+ var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret$1);
8353
+ if (error instanceof Error) {
8354
+ return error;
8355
+ }
8356
+ }
8357
+ }
8358
+ return null;
8359
+ }
8360
+ return createChainableTypeChecker(validate);
8361
+ }
8362
+
8363
+ function createUnionTypeChecker(arrayOfTypeCheckers) {
8364
+ if (!Array.isArray(arrayOfTypeCheckers)) {
8365
+ process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
8366
+ return emptyFunctionThatReturnsNull;
8367
+ }
8368
+
8369
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
8370
+ var checker = arrayOfTypeCheckers[i];
8371
+ if (typeof checker !== 'function') {
8372
+ printWarning(
8373
+ 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
8374
+ 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
8375
+ );
8376
+ return emptyFunctionThatReturnsNull;
8377
+ }
8378
+ }
8379
+
8380
+ function validate(props, propName, componentName, location, propFullName) {
8381
+ var expectedTypes = [];
8382
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
8383
+ var checker = arrayOfTypeCheckers[i];
8384
+ var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret$1);
8385
+ if (checkerResult == null) {
8386
+ return null;
8387
+ }
8388
+ if (checkerResult.data && has$1(checkerResult.data, 'expectedType')) {
8389
+ expectedTypes.push(checkerResult.data.expectedType);
8390
+ }
8391
+ }
8392
+ var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';
8393
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));
8394
+ }
8395
+ return createChainableTypeChecker(validate);
8396
+ }
8397
+
8398
+ function createNodeChecker() {
8399
+ function validate(props, propName, componentName, location, propFullName) {
8400
+ if (!isNode(props[propName])) {
8401
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
8402
+ }
8403
+ return null;
8404
+ }
8405
+ return createChainableTypeChecker(validate);
8406
+ }
8407
+
8408
+ function invalidValidatorError(componentName, location, propFullName, key, type) {
8409
+ return new PropTypeError(
8410
+ (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +
8411
+ 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'
8412
+ );
8413
+ }
8414
+
8415
+ function createShapeTypeChecker(shapeTypes) {
8416
+ function validate(props, propName, componentName, location, propFullName) {
8417
+ var propValue = props[propName];
8418
+ var propType = getPropType(propValue);
8419
+ if (propType !== 'object') {
8420
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
8421
+ }
8422
+ for (var key in shapeTypes) {
8423
+ var checker = shapeTypes[key];
8424
+ if (typeof checker !== 'function') {
8425
+ return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
8426
+ }
8427
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret$1);
8428
+ if (error) {
8429
+ return error;
8430
+ }
8431
+ }
8432
+ return null;
8433
+ }
8434
+ return createChainableTypeChecker(validate);
8435
+ }
8436
+
8437
+ function createStrictShapeTypeChecker(shapeTypes) {
8438
+ function validate(props, propName, componentName, location, propFullName) {
8439
+ var propValue = props[propName];
8440
+ var propType = getPropType(propValue);
8441
+ if (propType !== 'object') {
8442
+ return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
8443
+ }
8444
+ // We need to check all keys in case some are required but missing from props.
8445
+ var allKeys = objectAssign({}, props[propName], shapeTypes);
8446
+ for (var key in allKeys) {
8447
+ var checker = shapeTypes[key];
8448
+ if (has$1(shapeTypes, key) && typeof checker !== 'function') {
8449
+ return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
8450
+ }
8451
+ if (!checker) {
8452
+ return new PropTypeError(
8453
+ 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
8454
+ '\nBad object: ' + JSON.stringify(props[propName], null, ' ') +
8455
+ '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')
8456
+ );
8457
+ }
8458
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret$1);
8459
+ if (error) {
8460
+ return error;
8461
+ }
8462
+ }
8463
+ return null;
8464
+ }
8465
+
8466
+ return createChainableTypeChecker(validate);
8467
+ }
8468
+
8469
+ function isNode(propValue) {
8470
+ switch (typeof propValue) {
8471
+ case 'number':
8472
+ case 'string':
8473
+ case 'undefined':
8474
+ return true;
8475
+ case 'boolean':
8476
+ return !propValue;
8477
+ case 'object':
8478
+ if (Array.isArray(propValue)) {
8479
+ return propValue.every(isNode);
8480
+ }
8481
+ if (propValue === null || isValidElement(propValue)) {
8482
+ return true;
8483
+ }
8484
+
8485
+ var iteratorFn = getIteratorFn(propValue);
8486
+ if (iteratorFn) {
8487
+ var iterator = iteratorFn.call(propValue);
8488
+ var step;
8489
+ if (iteratorFn !== propValue.entries) {
8490
+ while (!(step = iterator.next()).done) {
8491
+ if (!isNode(step.value)) {
8492
+ return false;
8493
+ }
8494
+ }
8495
+ } else {
8496
+ // Iterator will provide entry [k,v] tuples rather than values.
8497
+ while (!(step = iterator.next()).done) {
8498
+ var entry = step.value;
8499
+ if (entry) {
8500
+ if (!isNode(entry[1])) {
8501
+ return false;
8502
+ }
8503
+ }
8504
+ }
8505
+ }
8506
+ } else {
8507
+ return false;
8508
+ }
8509
+
8510
+ return true;
8511
+ default:
8512
+ return false;
8513
+ }
8514
+ }
8515
+
8516
+ function isSymbol(propType, propValue) {
8517
+ // Native Symbol.
8518
+ if (propType === 'symbol') {
8519
+ return true;
8520
+ }
8521
+
8522
+ // falsy value can't be a Symbol
8523
+ if (!propValue) {
8524
+ return false;
8525
+ }
8526
+
8527
+ // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
8528
+ if (propValue['@@toStringTag'] === 'Symbol') {
8529
+ return true;
8530
+ }
8531
+
8532
+ // Fallback for non-spec compliant Symbols which are polyfilled.
8533
+ if (typeof Symbol === 'function' && propValue instanceof Symbol) {
8534
+ return true;
8535
+ }
8536
+
8537
+ return false;
8538
+ }
8539
+
8540
+ // Equivalent of `typeof` but with special handling for array and regexp.
8541
+ function getPropType(propValue) {
8542
+ var propType = typeof propValue;
8543
+ if (Array.isArray(propValue)) {
8544
+ return 'array';
8545
+ }
8546
+ if (propValue instanceof RegExp) {
8547
+ // Old webkits (at least until Android 4.0) return 'function' rather than
8548
+ // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
8549
+ // passes PropTypes.object.
8550
+ return 'object';
8551
+ }
8552
+ if (isSymbol(propType, propValue)) {
8553
+ return 'symbol';
8554
+ }
8555
+ return propType;
8556
+ }
8557
+
8558
+ // This handles more types than `getPropType`. Only used for error messages.
8559
+ // See `createPrimitiveTypeChecker`.
8560
+ function getPreciseType(propValue) {
8561
+ if (typeof propValue === 'undefined' || propValue === null) {
8562
+ return '' + propValue;
8563
+ }
8564
+ var propType = getPropType(propValue);
8565
+ if (propType === 'object') {
8566
+ if (propValue instanceof Date) {
8567
+ return 'date';
8568
+ } else if (propValue instanceof RegExp) {
8569
+ return 'regexp';
8570
+ }
8571
+ }
8572
+ return propType;
8573
+ }
8574
+
8575
+ // Returns a string that is postfixed to a warning about an invalid type.
8576
+ // For example, "undefined" or "of type array"
8577
+ function getPostfixForTypeWarning(value) {
8578
+ var type = getPreciseType(value);
8579
+ switch (type) {
8580
+ case 'array':
8581
+ case 'object':
8582
+ return 'an ' + type;
8583
+ case 'boolean':
8584
+ case 'date':
8585
+ case 'regexp':
8586
+ return 'a ' + type;
8587
+ default:
8588
+ return type;
8589
+ }
8590
+ }
8591
+
8592
+ // Returns class name of the object, if any.
8593
+ function getClassName(propValue) {
8594
+ if (!propValue.constructor || !propValue.constructor.name) {
8595
+ return ANONYMOUS;
8596
+ }
8597
+ return propValue.constructor.name;
8598
+ }
8599
+
8600
+ ReactPropTypes.checkPropTypes = checkPropTypes;
8601
+ ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
8602
+ ReactPropTypes.PropTypes = ReactPropTypes;
8603
+
8604
+ return ReactPropTypes;
8605
+ };
8606
+
8607
+ function emptyFunction() {}
8608
+ function emptyFunctionWithReset() {}
8609
+ emptyFunctionWithReset.resetWarningCache = emptyFunction;
8610
+
8611
+ var factoryWithThrowingShims = function() {
8612
+ function shim(props, propName, componentName, location, propFullName, secret) {
8613
+ if (secret === ReactPropTypesSecret$1) {
8614
+ // It is still safe when called from React.
8615
+ return;
8616
+ }
8617
+ var err = new Error(
8618
+ 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
8619
+ 'Use PropTypes.checkPropTypes() to call them. ' +
8620
+ 'Read more at http://fb.me/use-check-prop-types'
8621
+ );
8622
+ err.name = 'Invariant Violation';
8623
+ throw err;
8624
+ } shim.isRequired = shim;
8625
+ function getShim() {
8626
+ return shim;
8627
+ } // Important!
8628
+ // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
8629
+ var ReactPropTypes = {
8630
+ array: shim,
8631
+ bigint: shim,
8632
+ bool: shim,
8633
+ func: shim,
8634
+ number: shim,
8635
+ object: shim,
8636
+ string: shim,
8637
+ symbol: shim,
8638
+
8639
+ any: shim,
8640
+ arrayOf: getShim,
8641
+ element: shim,
8642
+ elementType: shim,
8643
+ instanceOf: getShim,
8644
+ node: shim,
8645
+ objectOf: getShim,
8646
+ oneOf: getShim,
8647
+ oneOfType: getShim,
8648
+ shape: getShim,
8649
+ exact: getShim,
8650
+
8651
+ checkPropTypes: emptyFunctionWithReset,
8652
+ resetWarningCache: emptyFunction
8653
+ };
8654
+
8655
+ ReactPropTypes.PropTypes = ReactPropTypes;
8656
+
8657
+ return ReactPropTypes;
8658
+ };
8659
+
8660
+ var require$$1 = factoryWithTypeCheckers;
8661
+
8662
+ var require$$2 = factoryWithThrowingShims;
8663
+
8664
+ var propTypes = createCommonjsModule(function (module) {
8665
+ /**
8666
+ * Copyright (c) 2013-present, Facebook, Inc.
8667
+ *
8668
+ * This source code is licensed under the MIT license found in the
8669
+ * LICENSE file in the root directory of this source tree.
8670
+ */
8671
+
8672
+ if (process.env.NODE_ENV !== 'production') {
8673
+ var ReactIs = reactIs;
8674
+
8675
+ // By explicitly using `prop-types` you are opting into new development behavior.
8676
+ // http://fb.me/prop-types-in-prod
8677
+ var throwOnDirectAccess = true;
8678
+ module.exports = require$$1(ReactIs.isElement, throwOnDirectAccess);
8679
+ } else {
8680
+ // By explicitly using `prop-types` you are opting into new production behavior.
8681
+ // http://fb.me/prop-types-in-prod
8682
+ module.exports = require$$2();
8683
+ }
8684
+ });
8685
+
8686
+ var PropTypes = propTypes;
8687
+
8688
+ /**
8689
+ * @param {{text: string}} props
8690
+ */
8691
+ var HTMLComment = function HTMLComment(props) {
8692
+ var text = props.text;
8693
+ var ref = /*#__PURE__*/React.createRef();
8694
+ useLayoutEffect(function () {
8695
+ var el = null;
8696
+ var parent = null;
8697
+ var comm = null;
8698
+ if (ref.current) {
8699
+ el = ref.current;
8700
+ parent = el.parentNode;
8701
+ comm = (window || global).document.createComment(" ".concat(text.trim(), " "));
8702
+ try {
8703
+ if (parent && parent.contains(el)) {
8704
+ parent.replaceChild(comm, el);
8705
+ }
8706
+ } catch (err) {
8707
+ console.error(err);
8708
+ }
8709
+ }
8710
+ return function () {
8711
+ if (parent && el && comm) {
8712
+ parent.replaceChild(el, comm);
8713
+ }
8714
+ };
8715
+ }, []);
8716
+ return /*#__PURE__*/React.createElement("span", {
8717
+ ref: ref,
8718
+ style: {
8719
+ display: 'none'
8720
+ }
8721
+ });
8722
+ };
8723
+ HTMLComment.propTypes = {
8724
+ text: PropTypes.string
8725
+ };
8726
+
8727
+ var Icon$1 = function (_a) {
8728
+ var name = _a.name, className = _a.className, title = _a.title, width = _a.width, height = _a.height;
8729
+ var icons = useContext(SettingsContext$1).icons;
8730
+ if (icons) {
8731
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8732
+ .filter(function (className) { return !isEmpty(className); })
8733
+ .join(" "), width: width, height: height },
8734
+ title && React.createElement("title", null, title),
8735
+ React.createElement("use", { href: "".concat(icons, "#").concat(name) })));
8736
+ }
8737
+ switch (name) {
8738
+ case "ui-close":
8739
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8740
+ .filter(function (className) { return !isEmpty(className); })
8741
+ .join(" "), width: width, height: height, viewBox: "0 0 384 512" },
8742
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8743
+ title && React.createElement("title", null, title),
8744
+ React.createElement("path", { d: "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z" })));
8745
+ case "ui-plus":
8746
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8747
+ .filter(function (className) { return !isEmpty(className); })
8748
+ .join(" "), width: width, height: height, viewBox: "0 0 448 512" },
8749
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8750
+ title && React.createElement("title", null, title),
8751
+ React.createElement("path", { d: "M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z" })));
8752
+ case "ui-min":
8753
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8754
+ .filter(function (className) { return !isEmpty(className); })
8755
+ .join(" "), width: width, height: height, viewBox: "0 0 448 512" },
8756
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8757
+ title && React.createElement("title", null, title),
8758
+ React.createElement("path", { d: "M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z" })));
8759
+ case "ui-chevron":
8760
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8761
+ .filter(function (className) { return !isEmpty(className); })
8762
+ .join(" "), width: width, height: height, viewBox: "0 0 320 512" },
8763
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8764
+ title && React.createElement("title", null, title),
8765
+ React.createElement("path", { d: "M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z" })));
8766
+ case "ui-calendar":
8767
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8768
+ .filter(function (className) { return !isEmpty(className); })
8769
+ .join(" "), width: width, height: height, viewBox: "0 0 448 512" },
8770
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8771
+ title && React.createElement("title", null, title),
8772
+ React.createElement("path", { d: "M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272z" })));
8773
+ case "ui-bed":
8774
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8775
+ .filter(function (className) { return !isEmpty(className); })
8776
+ .join(" "), width: width, height: height, viewBox: "0 0 640 512" },
8777
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8778
+ title && React.createElement("title", null, title),
8779
+ React.createElement("path", { d: "M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z" })));
8780
+ case "ui-flight":
8781
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8782
+ .filter(function (className) { return !isEmpty(className); })
8783
+ .join(" "), width: width, height: height, viewBox: "0 0 576 512" },
8784
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8785
+ title && React.createElement("title", null, title),
8786
+ React.createElement("path", { d: "M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z" })));
8787
+ case "ui-transfer":
8788
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8789
+ .filter(function (className) { return !isEmpty(className); })
8790
+ .join(" "), width: width, height: height, viewBox: "0 0 512 512" },
8791
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8792
+ title && React.createElement("title", null, title),
8793
+ React.createElement("path", { d: "M192 0c-17.7 0-32 14.3-32 32l0 32 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288L0 432l0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 320 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 0-144c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1l0-.2 0-32c0-17.7-14.3-32-32-32L192 0zM165.4 128l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 224l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z" })));
8794
+ case "ui-star":
8795
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8796
+ .filter(function (className) { return !isEmpty(className); })
8797
+ .join(" "), width: width, height: height, viewBox: "0 0 576 512" },
8798
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8799
+ title && React.createElement("title", null, title),
8800
+ React.createElement("path", { d: "M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z" })));
8801
+ case "ui-halfstar":
8802
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8803
+ .filter(function (className) { return !isEmpty(className); })
8804
+ .join(" "), width: width, height: height, viewBox: "0 0 576 512" },
8805
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8806
+ title && React.createElement("title", null, title),
8807
+ React.createElement("path", { d: "M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8 288 0zM429.9 512c1.1 .1 2.1 .1 3.2 0l-3.2 0z" })));
8808
+ case "ui-user":
8809
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8810
+ .filter(function (className) { return !isEmpty(className); })
8811
+ .join(" "), width: width, height: height, viewBox: "0 0 448 512" },
8812
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8813
+ title && React.createElement("title", null, title),
8814
+ React.createElement("path", { d: "M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z" })));
8815
+ case "ui-pencil":
8816
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8817
+ .filter(function (className) { return !isEmpty(className); })
8818
+ .join(" "), width: width, height: height, viewBox: "0 0 512 512" },
8819
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8820
+ title && React.createElement("title", null, title),
8821
+ React.createElement("path", { d: "M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1 0 32c0 8.8 7.2 16 16 16l32 0zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z" })));
8822
+ case "ui-check":
8823
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
8824
+ .filter(function (className) { return !isEmpty(className); })
8825
+ .join(" "), width: width, height: height, viewBox: "0 0 448 512" },
8826
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
8827
+ title && React.createElement("title", null, title),
8828
+ React.createElement("path", { d: "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z" })));
8829
+ default:
8830
+ return null;
8831
+ }
8832
+ };
8833
+
8834
+ var Calendar = function (_a) {
8835
+ var _b = _a.year, year = _b === void 0 ? getYear(new Date()) : _b, _c = _a.month, month = _c === void 0 ? getMonth(new Date()) : _c, _d = _a.hasPreviousButton, hasPreviousButton = _d === void 0 ? true : _d, _e = _a.hasNextButton, hasNextButton = _e === void 0 ? true : _e, _f = _a.hasFixedHeight, hasFixedHeight = _f === void 0 ? true : _f, _g = _a.weekStartsOn, weekStartsOn = _g === void 0 ? 1 : _g, disabledDaysFunction = _a.disabledDaysFunction, selectedDaysFunction = _a.selectedDaysFunction, extraClassNamesFunction = _a.extraClassNamesFunction, dayContentFunction = _a.dayContentFunction, onDayClick = _a.onDayClick, onDayMouseOver = _a.onDayMouseOver, onNextClick = _a.onNextClick, onPreviousClick = _a.onPreviousClick;
8836
+ var language = useContext(SettingsContext$1).language;
8837
+ var locale = getLocale(language);
8838
+ var handleDayClick = function (day) {
8839
+ if (onDayClick) {
8840
+ onDayClick(day);
8841
+ }
8842
+ };
8843
+ var handleDayMouseOver = function (day) {
8844
+ if (onDayMouseOver) {
8845
+ onDayMouseOver(day);
8846
+ }
8847
+ };
8848
+ var handleNextClick = function () {
8849
+ var nextMonth = (month + 1) % 12;
8850
+ var nextMonthsYear = nextMonth < month ? year + 1 : year;
8851
+ if (onNextClick) {
8852
+ onNextClick(nextMonthsYear, nextMonth);
8853
+ }
8854
+ };
8855
+ var handlePreviousClick = function () {
8856
+ var previousMonth = (month - 1) % 12;
8857
+ var previousMonthsYear = previousMonth > month ? year - 1 : year;
8858
+ if (onPreviousClick) {
8859
+ onPreviousClick(previousMonthsYear, previousMonth);
8860
+ }
8861
+ };
8862
+ var focusDate = new Date(year, month);
8863
+ var firstDay = startOfWeek(startOfMonth(focusDate), { weekStartsOn: weekStartsOn });
8864
+ var lastDay = hasFixedHeight
8865
+ ? endOfWeek(addWeeks(firstDay, 5), { weekStartsOn: weekStartsOn })
8866
+ : endOfWeek(endOfMonth(focusDate), { weekStartsOn: weekStartsOn });
8867
+ var calendarDays = eachDayOfInterval({ start: firstDay, end: lastDay });
8868
+ var mapDay = function (day) {
8869
+ var isoDay = getISODay(day);
8870
+ var isDisabled = isFunction(disabledDaysFunction) && disabledDaysFunction(day);
8871
+ var isSelected = isFunction(selectedDaysFunction) && selectedDaysFunction(day);
8872
+ var isOutsideMonth = !isSameMonth(day, focusDate);
8873
+ var extraClassNames = isFunction(extraClassNamesFunction)
8874
+ ? extraClassNamesFunction(day)
8875
+ : undefined;
8876
+ return (React.createElement(CalendarDay, { key: "day_".concat(isoDay), day: day, isSelected: isSelected, isDisabled: isDisabled, isOutsideMonth: isOutsideMonth, extraClassNames: extraClassNames, onClick: handleDayClick, onMouseOver: handleDayMouseOver }, isFunction(dayContentFunction) ? dayContentFunction(day) : undefined));
8877
+ };
8878
+ var mapWeek = function (weekDays) {
8879
+ if (weekDays.length === 0) {
8880
+ return null;
8881
+ }
8882
+ var isoWeek = getISOWeek(weekDays[0]);
8883
+ return (React.createElement("div", { className: "calendar__week", key: "week_".concat(isoWeek) }, weekDays.map(mapDay)));
8884
+ };
8885
+ return (React.createElement("div", { className: "calendar" },
8886
+ React.createElement("div", { className: "calendar__header" },
8887
+ React.createElement("div", { className: "calendar__pager" },
8888
+ React.createElement("div", { className: buildClassName([
8889
+ "calendar__previous",
8890
+ !hasPreviousButton && "calendar__previous--disabled",
8891
+ ]), onClick: handlePreviousClick },
8892
+ React.createElement(Icon$1, { name: "ui-chevron" })),
8893
+ React.createElement("div", { className: "calendar__current-month" }, format$1(focusDate, "MMMM yyyy", { locale: locale })),
8894
+ React.createElement("div", { className: buildClassName([
8895
+ "calendar__next",
8896
+ !hasNextButton && "calendar__next--disabled",
8897
+ ]), onClick: handleNextClick },
8898
+ React.createElement(Icon$1, { name: "ui-chevron" }))),
8899
+ React.createElement("div", { className: "calendar__day-labels" }, range(0, 7).map(function (i) { return (React.createElement("div", { className: "calendar__day-label", key: "day_".concat(i) }, format$1(calendarDays[i], "EEEEEE", { locale: locale }))); }))),
8900
+ React.createElement("div", { className: "calendar__body" }, chunk(calendarDays, 7).map(mapWeek))));
8901
+ };
8902
+
8903
+ var DateRangePicker = function (props) {
8904
+ var _a, _b, _c, _d;
8905
+ var _e = useState(props.fromDate), fromDate = _e[0], setFromDate = _e[1];
8906
+ var _f = useState(props.toDate), toDate = _f[0], setToDate = _f[1];
8907
+ var _g = useState((_a = props.focusMonth) !== null && _a !== void 0 ? _a : { year: getYear(new Date()), month: getMonth(new Date()) }), focusMonth = _g[0], setFocusMonth = _g[1];
8908
+ var _h = useState(false), isWaitingForToDate = _h[0], setWaitingForToDate = _h[1];
8909
+ var handleDayClick = function (day) {
8910
+ var onSelectionChange = props.onSelectionChange;
8911
+ if (isWaitingForToDate && !isNil(fromDate) && isAfter(day, fromDate)) {
8912
+ setToDate(day);
8913
+ setWaitingForToDate(false);
8914
+ if (props.onToDateChange) {
8915
+ props.onToDateChange(undefined);
8916
+ }
8917
+ if (onSelectionChange) {
8918
+ onSelectionChange(fromDate, day);
8919
+ }
8920
+ }
8921
+ else {
8922
+ setFromDate(day);
8923
+ if (props.duration) {
8924
+ var to = new Date(Date.UTC(day.getFullYear(), day.getMonth(), day.getDate() + props.duration));
8925
+ setToDate(to);
8926
+ if (onSelectionChange) {
8927
+ onSelectionChange(day, to);
8928
+ }
8929
+ }
8930
+ else {
8931
+ setToDate(undefined);
8932
+ setWaitingForToDate(true);
8933
+ }
8934
+ if (props.onFromDateChange) {
8935
+ props.onFromDateChange(day);
8936
+ }
8937
+ }
8938
+ };
8939
+ var handleDayMouseOver = function (day) {
8940
+ if (isWaitingForToDate &&
8941
+ (isNil(fromDate) || isEqual(day, fromDate) || isAfter(day, fromDate))) {
8942
+ setToDate(day);
8943
+ }
8944
+ };
8945
+ var handlePreviousClick = function () {
8946
+ var month = focusMonth.month, year = focusMonth.year;
8947
+ var previousMonth = (month - 1) % 12;
8948
+ var previousMonthsYear = previousMonth > month ? year - 1 : year;
8949
+ var newFocusMonth = { year: previousMonthsYear, month: previousMonth };
8950
+ setFocusMonth(newFocusMonth);
8951
+ if (props.onFocusMonthChange) {
8952
+ props.onFocusMonthChange(newFocusMonth);
8953
+ }
8954
+ };
8955
+ var handleNextClick = function () {
8956
+ var month = focusMonth.month, year = focusMonth.year;
8957
+ var nextMonth = (month + 1) % 12;
8958
+ var nextMonthsYear = nextMonth < month ? year + 1 : year;
8959
+ var newFocusMonth = { year: nextMonthsYear, month: nextMonth };
8960
+ setFocusMonth(newFocusMonth);
8961
+ if (props.onFocusMonthChange) {
8962
+ props.onFocusMonthChange(newFocusMonth);
8963
+ }
8964
+ };
8965
+ var today = startOfDay(new Date());
8966
+ var firstCalendarYear = focusMonth.year;
8967
+ var firstCalendarMonth = focusMonth.month;
8968
+ var secondCalendarMonth = (firstCalendarMonth + 1) % 12;
8969
+ var secondCalendarYear = secondCalendarMonth < firstCalendarMonth ? firstCalendarYear + 1 : firstCalendarYear;
8970
+ var checkIfDateIsSelected = function (date) {
8971
+ return isNil(toDate)
8972
+ ? !isNil(fromDate) && isEqual(date, fromDate)
8973
+ : !isNil(fromDate) &&
8974
+ isWithinInterval(date, { start: startOfDay(fromDate), end: endOfDay(toDate) });
8975
+ };
8976
+ useEffect(function () {
8977
+ setFromDate(props.fromDate);
8978
+ setToDate(props.toDate);
8979
+ }, [(_b = props.fromDate) === null || _b === void 0 ? void 0 : _b.valueOf(), (_c = props.toDate) === null || _c === void 0 ? void 0 : _c.valueOf()]);
8980
+ useEffect(function () {
8981
+ if (props.fromDate) {
8982
+ setFocusMonth({ month: props.fromDate.getMonth(), year: props.fromDate.getFullYear() });
8983
+ }
8984
+ }, [(_d = props.fromDate) === null || _d === void 0 ? void 0 : _d.valueOf()]);
8985
+ return (React.createElement("div", { className: "date-range-picker" },
8986
+ React.createElement("div", { className: "date-range-picker__from" },
8987
+ React.createElement(Calendar, { year: firstCalendarYear, month: firstCalendarMonth, onDayClick: handleDayClick, onDayMouseOver: handleDayMouseOver, onPreviousClick: handlePreviousClick, hasPreviousButton: isAfter(new Date(firstCalendarYear, firstCalendarMonth), endOfMonth(today)), hasNextButton: false, selectedDaysFunction: checkIfDateIsSelected, disabledDaysFunction: props.disabledDaysFunction, extraClassNamesFunction: props.extraClassNamesFunction, dayContentFunction: props.dayContentFunction, hasFixedHeight: true })),
8988
+ React.createElement("div", { className: "date-range-picker__to" },
8989
+ React.createElement(Calendar, { year: secondCalendarYear, month: secondCalendarMonth, onDayClick: handleDayClick, onDayMouseOver: handleDayMouseOver, onNextClick: handleNextClick, hasPreviousButton: false, selectedDaysFunction: checkIfDateIsSelected, disabledDaysFunction: props.disabledDaysFunction, extraClassNamesFunction: props.extraClassNamesFunction, dayContentFunction: props.dayContentFunction, hasFixedHeight: true }))));
8990
+ };
8991
+
8992
+ var Dates = function (_a) {
8993
+ var value = _a.value, duration = _a.duration, onChange = _a.onChange;
8994
+ var language = useContext(SettingsContext$1).language;
8995
+ var translations = getTranslations(language);
8996
+ var mql = typeof window !== "undefined" ? window.matchMedia("(min-width: 1200px)") : undefined;
8997
+ var _b = useState(null), referenceElement = _b[0], setReferenceElement = _b[1];
8998
+ var _c = useState(null), popperElement = _c[0], setPopperElement = _c[1];
8999
+ var _d = useState(false), panelActive = _d[0], setPanelActive = _d[1];
9000
+ var _e = usePopper(referenceElement, popperElement, {
9001
+ placement: "top",
9002
+ modifiers: [
9003
+ {
9004
+ name: "offset",
9005
+ options: {
9006
+ offset: [0, -40],
9007
+ },
9008
+ },
9009
+ {
9010
+ name: "preventOverflow",
9011
+ options: {
9012
+ padding: 40,
7792
9013
  },
7793
9014
  }
7794
9015
  ],
@@ -7817,7 +9038,7 @@ var Dates = function (_a) {
7817
9038
  };
7818
9039
  return (React.createElement("div", { className: "booking-product__dates", ref: setReferenceElement },
7819
9040
  React.createElement("div", { className: "booking-product__dates-title" },
7820
- React.createElement(Icon, { name: "ui-calendar" }),
9041
+ React.createElement(Icon$1, { name: "ui-calendar", width: 25, height: 25 }),
7821
9042
  translations.PRODUCT.TRAVEL_PERIOD),
7822
9043
  React.createElement("div", { className: "form__group form__group--datepicker form__group--icon" },
7823
9044
  React.createElement("div", { className: "form__group-input" },
@@ -7829,8 +9050,11 @@ var Dates = function (_a) {
7829
9050
  React.createElement("div", __assign({ ref: setPopperElement, className: buildClassName([
7830
9051
  "qsm__panel qsm__panel--bordered qsm__panel--dates-pricing",
7831
9052
  panelActive && "qsm__panel--active",
9053
+ !(mql === null || mql === void 0 ? void 0 : mql.matches) && "qsm__panel--mobile"
7832
9054
  ]), style: (mql === null || mql === void 0 ? void 0 : mql.matches) ? styles.popper : undefined }, attributes.popper),
7833
- React.createElement(DateRangePicker, { fromDate: value === null || value === void 0 ? void 0 : value.fromDate, toDate: value === null || value === void 0 ? void 0 : value.toDate, duration: duration, disabledDaysFunction: function (date) { return isBefore(date, startOfDay(new Date())); }, onSelectionChange: handleSelectionChange })))));
9055
+ React.createElement(DateRangePicker, { fromDate: value === null || value === void 0 ? void 0 : value.fromDate, toDate: value === null || value === void 0 ? void 0 : value.toDate, duration: duration, disabledDaysFunction: function (date) { return isBefore(date, startOfDay(new Date())); }, onSelectionChange: handleSelectionChange }),
9056
+ !(mql === null || mql === void 0 ? void 0 : mql.matches) && (React.createElement("div", { className: "qsm__close", onClick: function () { return setPanelActive(false); } },
9057
+ React.createElement(Icon$1, { name: "ui-close", height: 25, width: 25 })))))));
7834
9058
  };
7835
9059
 
7836
9060
  var Loader = function (_a) {
@@ -7841,7 +9065,7 @@ var Loader = function (_a) {
7841
9065
  };
7842
9066
 
7843
9067
  var Footer = function (_a) {
7844
- var priceText = _a.priceText, isLoading = _a.isLoading, handleBookClick = _a.handleBookClick;
9068
+ var priceText = _a.priceText, isLoading = _a.isLoading, isOffer = _a.isOffer, handleBookClick = _a.handleBookClick;
7845
9069
  var _b = useContext(SettingsContext$1), language = _b.language, alternativeActionText = _b.alternativeActionText, alternativeAction = _b.alternativeAction;
7846
9070
  var translations = getTranslations(language);
7847
9071
  return (React.createElement("div", { className: "booking-product__footer" }, isLoading
@@ -7849,8 +9073,8 @@ var Footer = function (_a) {
7849
9073
  : (React.createElement(React.Fragment, null,
7850
9074
  priceText && (React.createElement("div", { className: "booking-product__footer-total" },
7851
9075
  React.createElement("div", { className: "booking-product__footer-label" }, translations.SHARED.TOTAL_PRICE),
7852
- React.createElement("div", { className: "booking-summary__footer-price" }, priceText))),
7853
- React.createElement("div", { className: "booking-product_footer-actions" }, priceText ? (React.createElement("button", { type: "button", className: "cta", onClick: handleBookClick }, translations.PRODUCT.BOOK_NOW)) : ((alternativeActionText && alternativeAction)
9076
+ React.createElement("div", { className: "booking-product__footer-price" }, priceText))),
9077
+ React.createElement("div", { className: "booking-product_footer-actions" }, priceText ? (React.createElement("button", { type: "button", className: "cta", onClick: handleBookClick }, isOffer ? translations.PRODUCT.TO_YOUR_OFFER : translations.PRODUCT.BOOK_NOW)) : ((alternativeActionText && alternativeAction)
7854
9078
  ? (React.createElement("a", { href: "#offer-form", className: "cta", onClick: alternativeAction }, alternativeActionText))
7855
9079
  : (React.createElement(React.Fragment, null, translations.PRODUCT.NOT_AVAILABLE))))))));
7856
9080
  };
@@ -7859,8 +9083,8 @@ var Rating = function (_a) {
7859
9083
  var rating = _a.rating;
7860
9084
  var clampedRating = clamp(rating, 0, 5);
7861
9085
  return (React.createElement("div", { className: "rating" },
7862
- range(0, Math.floor(clampedRating)).map(function (i) { return (React.createElement(Icon$1, { name: "product-star", key: "rating-star-".concat(i) })); }),
7863
- clampedRating % 1 > 0 && React.createElement(Icon$1, { name: "product-halfstar" })));
9086
+ range(0, Math.floor(clampedRating)).map(function (i) { return (React.createElement(Icon$1, { name: "ui-star", key: "rating-star-".concat(i), width: 25, height: 25 })); }),
9087
+ rating % 1 > 0 && React.createElement(Icon$1, { name: "ui-halfstar", width: 25, height: 25 })));
7864
9088
  };
7865
9089
 
7866
9090
  var Header = function (_a) {
@@ -7877,11 +9101,11 @@ var Header = function (_a) {
7877
9101
  React.createElement("div", { className: "pricing__header pricing__price" }, priceText),
7878
9102
  React.createElement("div", { className: "package-icons" },
7879
9103
  priceText && (React.createElement("div", { className: "package-icons__icon" },
7880
- React.createElement(Icon, { name: "ui-bed", title: translations.PRODUCT.STAY_INCLUDED }))),
9104
+ React.createElement(Icon$1, { name: "ui-bed", title: translations.PRODUCT.STAY_INCLUDED, width: 25, height: 25 }))),
7881
9105
  hasFlight && (React.createElement("div", { className: "package-icons__icon" },
7882
- React.createElement(Icon, { name: "ui-flight", title: translations.PRODUCT.FLIGHT_INCLUDED }))),
9106
+ React.createElement(Icon$1, { name: "ui-flight", title: translations.PRODUCT.FLIGHT_INCLUDED, width: 25, height: 25 }))),
7883
9107
  hasTransfer && (React.createElement("div", { className: "package-icons__icon" },
7884
- React.createElement(Icon, { name: "ui-transfer", title: translations.PRODUCT.TRANSFER_INCLUDED })))))))));
9108
+ React.createElement(Icon$1, { name: "ui-transfer", title: translations.PRODUCT.TRANSFER_INCLUDED, width: 25, height: 25 })))))))));
7885
9109
  };
7886
9110
 
7887
9111
  var AgeSelect = function (_a) {
@@ -7914,18 +9138,14 @@ var AmountInput = function (_a) {
7914
9138
  onChange(Math.max(value - 1, min !== null && min !== void 0 ? min : 0));
7915
9139
  }
7916
9140
  };
7917
- var handleInputChange = function (event) {
7918
- if (onChange) {
7919
- var value_1 = event.target.valueAsNumber < (min !== null && min !== void 0 ? min : 0) ? min !== null && min !== void 0 ? min : 0 : event.target.valueAsNumber;
7920
- onChange(value_1);
7921
- }
7922
- };
7923
- return (React.createElement("div", { className: "decrement-increment" },
9141
+ return (React.createElement("div", { className: buildClassName(["decrement-increment", disabled && "decrement-increment--disabled"]) },
7924
9142
  React.createElement("label", { className: "decrement-increment__label" }, label),
7925
9143
  React.createElement("div", { className: "decrement-increment__ui" },
7926
- React.createElement("button", { type: "button", className: "button button--decrement", title: translations.INPUT.DECREASE, disabled: disabled, onClick: handleDecreaseClick }),
7927
- React.createElement("input", { type: "number", min: min, value: value, className: "decrement-increment__input", onChange: handleInputChange }),
7928
- React.createElement("button", { type: "button", className: "button button--increment", title: translations.INPUT.INCREASE, disabled: disabled, onClick: handleIncreaseClick }))));
9144
+ !disabled && (React.createElement("button", { type: "button", className: "button button--decrement", title: translations.INPUT.DECREASE, disabled: disabled, onClick: handleDecreaseClick },
9145
+ React.createElement(Icon$1, { name: "ui-min" }))),
9146
+ React.createElement("span", null, value),
9147
+ !disabled && (React.createElement("button", { type: "button", className: "button button--increment", title: translations.INPUT.INCREASE, disabled: disabled, onClick: handleIncreaseClick },
9148
+ React.createElement(Icon$1, { name: "ui-plus" }))))));
7929
9149
  };
7930
9150
 
7931
9151
  var Rooms = function (_a) {
@@ -7942,62 +9162,63 @@ var Rooms = function (_a) {
7942
9162
  };
7943
9163
  return (React.createElement("div", { className: "booking-product__rooms" },
7944
9164
  React.createElement("div", { className: "booking-product__rooms-title" },
7945
- React.createElement(Icon, { name: "ui-user" }),
9165
+ React.createElement(Icon$1, { name: "ui-user", width: 25, height: 25 }),
7946
9166
  translations.PRODUCT.WHO_YOU_TRAVELING_WITH),
7947
- React.createElement("div", { className: "booking-product__rooms__header" },
7948
- React.createElement("div", { className: "booking-product__rooms__heading" }, translations.SHARED.ROOMS),
7949
- React.createElement("div", { className: "booking-product__rooms__actions" },
7950
- React.createElement(AmountInput, { label: translations.PRODUCT.NUMBER_OF_ROOMS, value: currentRooms.length, disabled: isDisabled, min: 1, onChange: function (value) {
7951
- setRoomState(range(0, value).map(function (roomIndex) { var _a; return (_a = currentRooms[roomIndex]) !== null && _a !== void 0 ? _a : { adults: 2, children: 0, childAges: [] }; }));
7952
- setIsTouched(true);
7953
- } }))),
7954
- React.createElement("div", { className: "booking-product__rooms-body" }, currentRooms.map(function (room, roomIndex) { return (React.createElement("div", { className: "booking-product__room", key: roomIndex },
7955
- React.createElement("div", { className: "booking-product__room__header" },
7956
- React.createElement("h3", { className: "booking-product__room__heading" }, translations.SHARED.ROOM + " " + (roomIndex + 1)),
7957
- React.createElement("div", { className: "booking-product__room__actions" },
7958
- React.createElement(AmountInput, { label: translations.SHARED.ADULTS, value: room.adults, disabled: isDisabled, min: 1, onChange: function (value) {
7959
- setRoomState(currentRooms.map(function (room, i) {
7960
- return i === roomIndex ? __assign(__assign({}, room), { adults: value }) : room;
7961
- }));
7962
- setIsTouched(true);
7963
- } }),
7964
- React.createElement(AmountInput, { label: translations.SHARED.CHILDREN, value: room.children, disabled: isDisabled, onChange: function (value) {
7965
- setRoomState(currentRooms.map(function (room, i) {
7966
- return i === roomIndex
7967
- ? __assign(__assign({}, room), { children: value, childAges: range(0, value).map(function (childIndex) { var _a; return (_a = room.childAges[childIndex]) !== null && _a !== void 0 ? _a : 0; }) }) : room;
7968
- }));
7969
- setIsTouched(true);
7970
- } }))),
7971
- room.children > 0 && (React.createElement("div", { className: "booking-product__room-children" },
7972
- React.createElement("label", { className: "booking-product__room-children-label" }, translations.PRODUCT.AGE_BY_DEPARTURE_DATE),
7973
- React.createElement("div", { className: "booking-product__room-children-ages" }, range(0, room.children).map(function (childIndex) { return (React.createElement(AgeSelect, { key: childIndex, value: room.childAges[childIndex], disabled: isDisabled, onChange: function (value) {
7974
- setRoomState(currentRooms.map(function (room, selectorRoomIndex) {
7975
- return roomIndex === selectorRoomIndex
7976
- ? __assign(__assign({}, room), { childAges: room.childAges
7977
- .map(function (age, i) { return (childIndex === i ? value : age); })
7978
- .sort(function (a, b) { return b - a; }) }) : room;
7979
- }));
7980
- setIsTouched(true);
7981
- } })); })))))); })),
7982
- React.createElement("div", { className: "booking-product__rooms-footer" }, isDisabled
7983
- ? (React.createElement("button", { type: "button", className: buildClassName(["cta", "cta--primary", "cta--add"]), title: translations.PRODUCT.EDIT, onClick: function () {
7984
- console.log('EDIT CLICK');
7985
- setIsDisabled(false);
7986
- setIsTouched(false);
7987
- } },
7988
- React.createElement("span", null,
7989
- React.createElement(Icon, { name: "ui-pencil" }),
7990
- translations.PRODUCT.EDIT)))
7991
- : (React.createElement("button", { type: "button", className: buildClassName(["cta", (isTouched ? "cta--primary" : "cta--secondary"), "cta--add"]), title: translations.PRODUCT.APPLY, onClick: handleCloseClick },
7992
- React.createElement("span", null,
7993
- React.createElement(Icon, { name: "ui-check" }),
7994
- translations.PRODUCT.APPLY))))));
9167
+ React.createElement("div", { className: "booking-product__rooms__container" },
9168
+ React.createElement("div", { className: "booking-product__rooms__wrapper" },
9169
+ React.createElement("div", { className: "booking-product__rooms__header" },
9170
+ React.createElement("div", { className: "booking-product__rooms__heading" }, translations.SHARED.ROOMS),
9171
+ React.createElement("div", { className: "booking-product__rooms__actions" },
9172
+ React.createElement(AmountInput, { label: translations.PRODUCT.NUMBER_OF_ROOMS, value: currentRooms.length, disabled: isDisabled, min: 1, onChange: function (value) {
9173
+ setRoomState(range(0, value).map(function (roomIndex) { var _a; return (_a = currentRooms[roomIndex]) !== null && _a !== void 0 ? _a : { adults: 2, children: 0, childAges: [] }; }));
9174
+ setIsTouched(true);
9175
+ } }))),
9176
+ React.createElement("div", { className: "booking-product__rooms-body" }, currentRooms.map(function (room, roomIndex) { return (React.createElement("div", { className: "booking-product__room", key: roomIndex },
9177
+ React.createElement("div", { className: "booking-product__room__header" },
9178
+ React.createElement("h3", { className: "booking-product__room__heading" }, translations.SHARED.ROOM + " " + (roomIndex + 1)),
9179
+ React.createElement("div", { className: "booking-product__room__actions" },
9180
+ React.createElement(AmountInput, { label: translations.SHARED.ADULTS, value: room.adults, disabled: isDisabled, min: 1, onChange: function (value) {
9181
+ setRoomState(currentRooms.map(function (room, i) {
9182
+ return i === roomIndex ? __assign(__assign({}, room), { adults: value }) : room;
9183
+ }));
9184
+ setIsTouched(true);
9185
+ } }),
9186
+ React.createElement(AmountInput, { label: translations.SHARED.CHILDREN, value: room.children, disabled: isDisabled, onChange: function (value) {
9187
+ setRoomState(currentRooms.map(function (room, i) {
9188
+ return i === roomIndex
9189
+ ? __assign(__assign({}, room), { children: value, childAges: range(0, value).map(function (childIndex) { var _a; return (_a = room.childAges[childIndex]) !== null && _a !== void 0 ? _a : 0; }) }) : room;
9190
+ }));
9191
+ setIsTouched(true);
9192
+ } }))),
9193
+ room.children > 0 && (React.createElement("div", { className: "booking-product__room-children" },
9194
+ React.createElement("label", { className: "booking-product__room-children-label" }, translations.PRODUCT.AGE_BY_DEPARTURE_DATE),
9195
+ React.createElement("div", { className: "booking-product__room-children-ages" }, range(0, room.children).map(function (childIndex) { return (React.createElement(AgeSelect, { key: childIndex, value: room.childAges[childIndex], disabled: isDisabled, onChange: function (value) {
9196
+ setRoomState(currentRooms.map(function (room, selectorRoomIndex) {
9197
+ return roomIndex === selectorRoomIndex
9198
+ ? __assign(__assign({}, room), { childAges: room.childAges
9199
+ .map(function (age, i) { return (childIndex === i ? value : age); })
9200
+ .sort(function (a, b) { return b - a; }) }) : room;
9201
+ }));
9202
+ setIsTouched(true);
9203
+ } })); })))))); }))),
9204
+ React.createElement("div", { className: "booking-product__rooms-footer" }, isDisabled
9205
+ ? (React.createElement("button", { type: "button", className: buildClassName(["cta--secondary", "cta--add"]), title: translations.PRODUCT.EDIT, onClick: function () {
9206
+ setIsDisabled(false);
9207
+ setIsTouched(false);
9208
+ } },
9209
+ React.createElement("span", null,
9210
+ React.createElement(Icon$1, { name: "ui-pencil", width: 25, height: 25 }),
9211
+ translations.PRODUCT.EDIT)))
9212
+ : (React.createElement("button", { type: "button", className: buildClassName(["cta", (isTouched ? "cta--secondary" : "cta--secondary"), "cta--add"]), title: translations.PRODUCT.APPLY, onClick: handleCloseClick },
9213
+ React.createElement("span", null,
9214
+ React.createElement(Icon$1, { name: "ui-check" }),
9215
+ translations.PRODUCT.APPLY)))))));
7995
9216
  };
7996
9217
 
7997
9218
  var Product = function (_a) {
7998
9219
  var _b, _c;
7999
9220
  var productCode = _a.productCode, productName = _a.productName, duration = _a.duration, rating = _a.rating;
8000
- var _d = useContext(SettingsContext$1), apiKey = _d.apiKey, apiUrl = _d.apiUrl, officeId = _d.officeId, agentId = _d.agentId, catalogueId = _d.catalogueId, includeFlights = _d.includeFlights, language = _d.language, basePath = _d.basePath, priceMode = _d.priceMode;
9221
+ var _d = useContext(SettingsContext$1), apiKey = _d.apiKey, apiUrl = _d.apiUrl, officeId = _d.officeId, agentId = _d.agentId, catalogueId = _d.catalogueId, includeFlights = _d.includeFlights, language = _d.language, basePath = _d.basePath, priceMode = _d.priceMode, addProductToQuery = _d.addProductToQuery, isOffer = _d.isOffer;
8001
9222
  var translations = getTranslations(language);
8002
9223
  var _e = useState(false), loaded = _e[0], setLoaded = _e[1];
8003
9224
  var _f = useState(false), isLoading = _f[0], setIsLoading = _f[1];
@@ -8006,11 +9227,11 @@ var Product = function (_a) {
8006
9227
  var _j = useState(false), hasTransfer = _j[0], setHasTransfer = _j[1];
8007
9228
  var _k = useState([{ adults: 2, children: 0, childAges: [] }]), rooms = _k[0], setRooms = _k[1];
8008
9229
  var _l = useState(), dateRange = _l[0], setDateRange = _l[1];
9230
+ var _m = useState(productName), packageProductName = _m[0], setPackageProductName = _m[1];
8009
9231
  var fetchPackage = function (signal) { return __awaiter$1(void 0, void 0, void 0, function () {
8010
9232
  var apiSettingsState, startDate, endDate, requestRooms, request, response, selectedOption, hasFlight_1, hasTranfer;
8011
- var _a;
8012
- return __generator$1(this, function (_b) {
8013
- switch (_b.label) {
9233
+ return __generator$1(this, function (_a) {
9234
+ switch (_a.label) {
8014
9235
  case 0:
8015
9236
  if (!(loaded &&
8016
9237
  productCode &&
@@ -8056,15 +9277,18 @@ var Product = function (_a) {
8056
9277
  setIsLoading(true);
8057
9278
  return [4 /*yield*/, packageApi$1.fetchDetails(request, signal, language, apiSettingsState)];
8058
9279
  case 1:
8059
- response = _b.sent();
8060
- if (!response.errorCode) {
8061
- selectedOption = (_a = response.payload) === null || _a === void 0 ? void 0 : _a.options.find(function (x) { return x.isSelected; });
9280
+ response = _a.sent();
9281
+ if (!response.errorCode && response.payload) {
9282
+ selectedOption = response.payload.options.find(function (x) { return x.isSelected; });
8062
9283
  if (selectedOption) {
8063
9284
  hasFlight_1 = selectedOption.includedServiceTypes.some(function (x) { return x === 7; });
8064
9285
  hasTranfer = selectedOption.includedServiceTypes.some(function (x) { return x === 13; });
8065
9286
  setPrice(selectedOption.price);
8066
9287
  setHasFlight(hasFlight_1);
8067
9288
  setHasTransfer(hasTranfer);
9289
+ if (!productName) {
9290
+ setPackageProductName(selectedOption.name);
9291
+ }
8068
9292
  }
8069
9293
  }
8070
9294
  else {
@@ -8073,7 +9297,7 @@ var Product = function (_a) {
8073
9297
  setHasTransfer(false);
8074
9298
  }
8075
9299
  setIsLoading(false);
8076
- _b.label = 2;
9300
+ _a.label = 2;
8077
9301
  case 2: return [2 /*return*/];
8078
9302
  }
8079
9303
  });
@@ -8093,11 +9317,17 @@ var Product = function (_a) {
8093
9317
  params["endDate"] = format$1(dateRange.toDate, "yyyy-MM-dd");
8094
9318
  }
8095
9319
  params["catalog"] = catalogueId.toString();
9320
+ if (addProductToQuery) {
9321
+ params["productCode"] = productCode;
9322
+ params["productName"] = JsonURL.stringify(packageProductName, { AQF: true });
9323
+ }
8096
9324
  var path = window.location.pathname;
8097
9325
  var paramString = Object.keys(params)
8098
9326
  .map(function (key) { return "".concat(key, "=").concat(params[key]); })
8099
9327
  .join("&");
8100
- window.location.href = "".concat(path).concat(path.endsWith("/") ? "" : "/").concat(basePath, "?").concat(paramString);
9328
+ window.location.href = basePath.startsWith('/')
9329
+ ? "".concat(window.location.protocol, "//").concat(window.location.host).concat(basePath, "?").concat(paramString)
9330
+ : "".concat(path).concat(path.endsWith("/") ? "" : "/").concat(basePath, "?").concat(paramString);
8101
9331
  };
8102
9332
  var handleRoomChange = function (rooms) {
8103
9333
  setRooms(rooms);
@@ -8155,11 +9385,11 @@ var Product = function (_a) {
8155
9385
  var durationCount = 0;
8156
9386
  var priceText = formatPriceByMode(price, priceMode, personCount, durationCount, translations.PRODUCT.PER_PERSON, translations.PRODUCT.PER_NIGHT, translations.PRODUCT.PER_PERSON_PER_NIGHT);
8157
9387
  return (React.createElement("div", { className: "booking-product" },
8158
- React.createElement(Header, { name: productName, rating: rating, priceText: priceText, isLoading: isLoading, hasFlight: hasFlight, hasTransfer: hasTransfer }),
9388
+ React.createElement(Header, { name: packageProductName, rating: rating, priceText: priceText, isLoading: isLoading, hasFlight: hasFlight, hasTransfer: hasTransfer }),
8159
9389
  React.createElement("div", { className: "booking-product__body" },
8160
9390
  React.createElement(Rooms, { rooms: rooms, onChange: handleRoomChange }),
8161
9391
  React.createElement(Dates, { value: dateRange, duration: duration, onChange: handleDateChange })),
8162
- React.createElement(Footer, { priceText: priceText, handleBookClick: handleBookClick, isLoading: isLoading })));
9392
+ React.createElement(Footer, { priceText: priceText, isLoading: isLoading, isOffer: isOffer, handleBookClick: handleBookClick })));
8163
9393
  };
8164
9394
 
8165
9395
  var BookingProduct = function (_a) {
@@ -8168,33 +9398,13 @@ var BookingProduct = function (_a) {
8168
9398
  React.createElement(Product, { productCode: productCode, productName: productName, rating: rating })));
8169
9399
  };
8170
9400
 
8171
- var _a$2;
8172
- var initialState$3 = {
8173
- apiUrl: "",
8174
- apiKey: "",
8175
- };
8176
- var apiSettingsSlice = createSlice({
8177
- name: "settings",
8178
- initialState: initialState$3,
8179
- reducers: {
8180
- setApiUrl: function (state, action) {
8181
- state.apiUrl = action.payload;
8182
- },
8183
- setApiKey: function (state, action) {
8184
- state.apiKey = action.payload;
8185
- },
8186
- },
8187
- });
8188
- (_a$2 = apiSettingsSlice.actions, _a$2.setApiUrl); _a$2.setApiKey;
8189
- var apiSettingsReducer = apiSettingsSlice.reducer;
8190
-
8191
9401
  var CHILD_MAX_AGE = 17;
8192
- var initialState$2 = {
9402
+ var initialState$3 = {
8193
9403
  formValues: undefined,
8194
9404
  };
8195
9405
  var travelersFormSlice = createSlice({
8196
9406
  name: "travelersForm",
8197
- initialState: initialState$2,
9407
+ initialState: initialState$3,
8198
9408
  reducers: {
8199
9409
  setFormValues: function (state, action) {
8200
9410
  state.formValues = action.payload;
@@ -8359,7 +9569,7 @@ var updateBookingGroups = function (groups, changedLines) {
8359
9569
  }) })); });
8360
9570
  };
8361
9571
 
8362
- var _a$1;
9572
+ var _a$2;
8363
9573
  var fetchPriceDetails = createAsyncThunk("priceDetails/fetchPriceDetails", function (_, _a) {
8364
9574
  var dispatch = _a.dispatch, getState = _a.getState, signal = _a.signal;
8365
9575
  return __awaiter$1(void 0, void 0, void 0, function () {
@@ -8457,7 +9667,7 @@ var selectNotifications = function (state) {
8457
9667
  return state.priceDetails.notifications;
8458
9668
  };
8459
9669
  var setFetchingPriceDetails = priceDetailsSlice.actions.setFetchingPriceDetails;
8460
- var resetPriceDetails = (_a$1 = priceDetailsSlice.actions, _a$1.resetPriceDetails), setNotifications = _a$1.setNotifications;
9670
+ var resetPriceDetails = (_a$2 = priceDetailsSlice.actions, _a$2.resetPriceDetails), setNotifications = _a$2.setNotifications;
8461
9671
  var priceDetailsReducer = priceDetailsSlice.reducer;
8462
9672
 
8463
9673
  var selectGeneratePaymentUrl = function (state) {
@@ -8720,8 +9930,8 @@ var parseGender = function (gender) {
8720
9930
  }
8721
9931
  };
8722
9932
 
8723
- var _a;
8724
- var initialState$1 = {
9933
+ var _a$1;
9934
+ var initialState$2 = {
8725
9935
  officeId: 1,
8726
9936
  languageCode: "nl-BE",
8727
9937
  bookingOptions: {
@@ -8973,7 +10183,7 @@ var changePackageOption = function (state) {
8973
10183
  };
8974
10184
  var bookingSlice = createSlice({
8975
10185
  name: "booking",
8976
- initialState: initialState$1,
10186
+ initialState: initialState$2,
8977
10187
  reducers: {
8978
10188
  setOfficeId: function (state, action) {
8979
10189
  state.officeId = action.payload;
@@ -9187,37 +10397,62 @@ var bookingSlice = createSlice({
9187
10397
  });
9188
10398
  },
9189
10399
  });
9190
- var setOfficeId = (_a = bookingSlice.actions, _a.setOfficeId), setLanguageCode = _a.setLanguageCode, setTranslations = _a.setTranslations, setBookingOptions = _a.setBookingOptions, setBookingType = _a.setBookingType, setProductAttributes = _a.setProductAttributes, setBookingAttributes = _a.setBookingAttributes, setCalculateDeposit = _a.setCalculateDeposit, setBookingNumber = _a.setBookingNumber, setIsRetry = _a.setIsRetry, setFetchingPackage = _a.setFetchingPackage, setPackage = _a.setPackage, setPackageRooms = _a.setPackageRooms, setPackageOptionPax = _a.setPackageOptionPax, setPackageOptionUnits = _a.setPackageOptionUnits, setPackageGroups = _a.setPackageGroups, setSkipPayment = _a.setSkipPayment, setGeneratePaymentUrl = _a.setGeneratePaymentUrl, setTagIds = _a.setTagIds, setAgentAdressId = _a.setAgentAdressId, setBookingRemarks = _a.setBookingRemarks, setVoucherCodes = _a.setVoucherCodes, setCurrentStep = _a.setCurrentStep, setPackageAirlineGroups = _a.setPackageAirlineGroups, setPackageAirportGroups = _a.setPackageAirportGroups, setFlights = _a.setFlights, setAccommodationViewId = _a.setAccommodationViewId;
10400
+ var setOfficeId = (_a$1 = bookingSlice.actions, _a$1.setOfficeId), setLanguageCode = _a$1.setLanguageCode, setTranslations = _a$1.setTranslations, setBookingOptions = _a$1.setBookingOptions, setBookingType = _a$1.setBookingType, setProductAttributes = _a$1.setProductAttributes, setBookingAttributes = _a$1.setBookingAttributes, setCalculateDeposit = _a$1.setCalculateDeposit, setBookingNumber = _a$1.setBookingNumber, setIsRetry = _a$1.setIsRetry, setFetchingPackage = _a$1.setFetchingPackage, setPackage = _a$1.setPackage, setPackageRooms = _a$1.setPackageRooms, setPackageOptionPax = _a$1.setPackageOptionPax, setPackageOptionUnits = _a$1.setPackageOptionUnits, setPackageGroups = _a$1.setPackageGroups, setSkipPayment = _a$1.setSkipPayment, setGeneratePaymentUrl = _a$1.setGeneratePaymentUrl, setTagIds = _a$1.setTagIds, setAgentAdressId = _a$1.setAgentAdressId, setBookingRemarks = _a$1.setBookingRemarks, setVoucherCodes = _a$1.setVoucherCodes, setCurrentStep = _a$1.setCurrentStep, setPackageAirlineGroups = _a$1.setPackageAirlineGroups, setPackageAirportGroups = _a$1.setPackageAirportGroups, setFlights = _a$1.setFlights, setAccommodationViewId = _a$1.setAccommodationViewId;
9191
10401
  var bookingReducer = bookingSlice.reducer;
9192
10402
 
9193
- var initialState = {
9194
- userValidated: false,
9195
- };
9196
- var summarySlice = createSlice({
9197
- name: "summary",
9198
- initialState: initialState,
9199
- reducers: {
9200
- setUserValidated: function (state, action) {
9201
- state.userValidated = action.payload;
9202
- },
10403
+ var SettingsContext = React.createContext({
10404
+ language: "nl-BE",
10405
+ generatePaymentUrl: false,
10406
+ currency: "EUR",
10407
+ officeId: 1,
10408
+ tagIds: [],
10409
+ hideAgentSelection: false,
10410
+ agentAdressId: undefined,
10411
+ affiliateSlug: undefined,
10412
+ productPath: "/",
10413
+ basePath: "/boeken",
10414
+ roomOptions: {
10415
+ pathSuffix: "/",
9203
10416
  },
9204
- });
9205
- var setUserValidated = summarySlice.actions.setUserValidated;
9206
- var selectUserValidated = function (state) {
9207
- return state.summary.userValidated;
9208
- };
9209
- var summaryReducer = summarySlice.reducer;
9210
-
9211
- var store = configureStore({
9212
- reducer: {
9213
- booking: bookingReducer,
9214
- travelersForm: travelersFormReducer,
9215
- priceDetails: priceDetailsReducer,
9216
- summary: summaryReducer,
9217
- apiSettings: apiSettingsReducer,
10417
+ flightOptions: {
10418
+ pathSuffix: "/vluchten",
9218
10419
  },
9219
- });
9220
- var useAppDispatch = function () { return useDispatch(); };
10420
+ options: {
10421
+ pathSuffix: "/opties",
10422
+ },
10423
+ travellers: {
10424
+ pathSuffix: "/reizigers",
10425
+ },
10426
+ summary: {
10427
+ pathSuffix: "/samenvatting",
10428
+ checkboxes: null,
10429
+ },
10430
+ confirmation: {
10431
+ pathSuffix: "/bevestiging",
10432
+ },
10433
+ error: {
10434
+ pathSuffix: "/mislukt",
10435
+ },
10436
+ companyContactEmail: "info@tidesoftware.be",
10437
+ companyContactPhone: "093362299",
10438
+ showProductCardRating: false,
10439
+ showSidebarDeposit: false,
10440
+ sidebarHeaderComponent: null,
10441
+ sidebarFooterComponent: null,
10442
+ loaderComponent: null,
10443
+ icons: null,
10444
+ bookingOptions: {
10445
+ b2b: {
10446
+ entryStatus: 0,
10447
+ },
10448
+ b2b2c: {
10449
+ entryStatus: 0,
10450
+ },
10451
+ b2c: {
10452
+ entryStatus: 0,
10453
+ },
10454
+ },
10455
+ });
9221
10456
 
9222
10457
  var StepIndicators = function (_a) {
9223
10458
  var currentStep = _a.currentStep;
@@ -9257,6 +10492,91 @@ var StepRoute = function (_a) {
9257
10492
  React.createElement("div", { className: "booking__panel-body" }, component))));
9258
10493
  };
9259
10494
 
10495
+ var _a;
10496
+ var initialState$1 = {
10497
+ apiUrl: "",
10498
+ apiKey: "",
10499
+ };
10500
+ var apiSettingsSlice = createSlice({
10501
+ name: "settings",
10502
+ initialState: initialState$1,
10503
+ reducers: {
10504
+ setApiUrl: function (state, action) {
10505
+ state.apiUrl = action.payload;
10506
+ },
10507
+ setApiKey: function (state, action) {
10508
+ state.apiKey = action.payload;
10509
+ },
10510
+ },
10511
+ });
10512
+ (_a = apiSettingsSlice.actions, _a.setApiUrl); _a.setApiKey;
10513
+ var apiSettingsReducer = apiSettingsSlice.reducer;
10514
+
10515
+ var initialState = {
10516
+ userValidated: false,
10517
+ };
10518
+ var summarySlice = createSlice({
10519
+ name: "summary",
10520
+ initialState: initialState,
10521
+ reducers: {
10522
+ setUserValidated: function (state, action) {
10523
+ state.userValidated = action.payload;
10524
+ },
10525
+ },
10526
+ });
10527
+ var setUserValidated = summarySlice.actions.setUserValidated;
10528
+ var selectUserValidated = function (state) {
10529
+ return state.summary.userValidated;
10530
+ };
10531
+ var summaryReducer = summarySlice.reducer;
10532
+
10533
+ var store = configureStore({
10534
+ reducer: {
10535
+ booking: bookingReducer,
10536
+ travelersForm: travelersFormReducer,
10537
+ priceDetails: priceDetailsReducer,
10538
+ summary: summaryReducer,
10539
+ apiSettings: apiSettingsReducer,
10540
+ },
10541
+ });
10542
+ var useAppDispatch = function () { return useDispatch(); };
10543
+
10544
+ var Icon = function (_a) {
10545
+ var name = _a.name, className = _a.className, title = _a.title, width = _a.width, height = _a.height;
10546
+ var icons = useContext(SettingsContext).icons;
10547
+ if (icons) {
10548
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10549
+ .filter(function (className) { return !isEmpty(className); })
10550
+ .join(" "), width: width, height: height },
10551
+ title && React.createElement("title", null, title),
10552
+ React.createElement("use", { href: "".concat(icons, "#").concat(name) })));
10553
+ }
10554
+ switch (name) {
10555
+ case "ui-chevron":
10556
+ case "ui-error":
10557
+ case "ui-tel":
10558
+ case "ui-mail":
10559
+ case "ui-home":
10560
+ case "ui-filter":
10561
+ case "ui-close":
10562
+ case "ui-ticket":
10563
+ case "ui-payback":
10564
+ case "ui-backpack":
10565
+ case "ui-suitcase":
10566
+ case "ui-business-lounge":
10567
+ case "ui-shopping-bag":
10568
+ case "ui-priority":
10569
+ case "ui-tooltip":
10570
+ case "ui-tooltip":
10571
+ case "ui-qsm-location":
10572
+ case "ui-plane-depart":
10573
+ case "ui-plane-arrive":
10574
+ case "ui-clock":
10575
+ default:
10576
+ return null;
10577
+ }
10578
+ };
10579
+
9260
10580
  var Message = function (_a) {
9261
10581
  var type = _a.type, title = _a.title, actionComponent = _a.actionComponent, children = _a.children;
9262
10582
  return (React.createElement("div", { className: buildClassName([
@@ -9264,7 +10584,7 @@ var Message = function (_a) {
9264
10584
  type === "error" && "booking-message--error",
9265
10585
  type === "success" && "booking-message--success",
9266
10586
  ]) },
9267
- type === "error" && React.createElement(Icon$1, { name: "ui-error" }),
10587
+ type === "error" && React.createElement(Icon, { name: "ui-error" }),
9268
10588
  React.createElement("h4", { className: "booking-message__heading" }, title),
9269
10589
  React.createElement("div", { className: "booking-message__text" }, children),
9270
10590
  actionComponent && (React.createElement("div", { className: "booking-message__actions" }, actionComponent))));
@@ -9285,21 +10605,24 @@ var Confirmation = function () {
9285
10605
  }
9286
10606
  var translations = useSelector(selectTranslations);
9287
10607
  var encodedMailSubject = encodeURI(translations.CONFIRMATION.MAIL_SUBJECT);
10608
+ var titleText = settings.isOffer
10609
+ ? format(translations.CONFIRMATION.TITLE_TEXT_OFFER, [bookingNumber])
10610
+ : format(translations.CONFIRMATION.TITLE_TEXT_BOOKING, [bookingNumber]);
9288
10611
  return (React.createElement("div", { className: "form", id: "booking--confirmation" },
9289
10612
  React.createElement("div", { className: "form__region" },
9290
10613
  React.createElement("div", { className: "form__row" },
9291
10614
  React.createElement("div", { className: "form__group" },
9292
- React.createElement(Message, { type: "success", title: format(translations.CONFIRMATION.TITLE_TEXT, [bookingNumber]), actionComponent: React.createElement("div", { className: "sm" },
10615
+ React.createElement(Message, { type: "success", title: titleText, actionComponent: React.createElement("div", { className: "sm" },
9293
10616
  React.createElement("a", { href: "tel://".concat(settings.companyContactPhone), className: "sm__icon" },
9294
- React.createElement(Icon$1, { name: "tel" })),
10617
+ React.createElement(Icon, { name: "tel" })),
9295
10618
  React.createElement("a", { href: "mailto://".concat(settings.companyContactEmail), className: "sm__icon" },
9296
- React.createElement(Icon$1, { name: "mail" })),
10619
+ React.createElement(Icon, { name: "mail" })),
9297
10620
  React.createElement("a", { href: "/", className: "sm__icon" },
9298
- React.createElement(Icon$1, { name: "home" }))) },
10621
+ React.createElement(Icon, { name: "home" }))) },
9299
10622
  React.createElement("p", null,
9300
10623
  translations.CONFIRMATION.MESSAGE_TEXT1,
9301
10624
  React.createElement("br", null),
9302
- translations.CONFIRMATION.MESSAGE_TEXT2),
10625
+ settings.isOffer ? translations.CONFIRMATION.MESSAGE_TEXT2_OFFER : translations.CONFIRMATION.MESSAGE_TEXT2_BOOKING),
9303
10626
  React.createElement("p", null,
9304
10627
  translations.CONFIRMATION.QUESTIONS_TEXT1,
9305
10628
  " ",
@@ -9805,8 +11128,7 @@ var FlightFilter = function (_a) {
9805
11128
  };
9806
11129
  return (React.createElement(React.Fragment, null,
9807
11130
  React.createElement("button", { type: "button", className: "cta cta--filter", onClick: function () { return setFiltersVisible(!filtersVisible); } },
9808
- React.createElement("svg", { width: 11, height: 10 },
9809
- React.createElement("use", { href: "/icons/svg-sprite.svg#filter" })),
11131
+ React.createElement(Icon, { name: "filter", width: 11, height: 10 }),
9810
11132
  React.createElement("span", null, translations.FLIGHTS_FORM.FILTER_OPTIONS),
9811
11133
  filtersVisible),
9812
11134
  React.createElement("div", { className: buildClassName(["flight__filter", filtersVisible && "flight__filter--active"]) },
@@ -10009,7 +11331,7 @@ var FlightOptionFlight = function (_a) {
10009
11331
  React.createElement("div", { className: "flight__flight__container" },
10010
11332
  React.createElement("div", { className: "flight__flight__wrapper" },
10011
11333
  React.createElement("div", { className: "flight__logo__wrapper" },
10012
- React.createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/".concat(details.airlineCode, ".png?height=30"), alt: "", className: "flight__logo" }),
11334
+ React.createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/".concat(details.airlineCode, ".png?height=256"), alt: "", className: "flight__logo" }),
10013
11335
  React.createElement("span", null, details.airline)),
10014
11336
  React.createElement("div", { className: "flight__info" },
10015
11337
  React.createElement("div", { className: "flight__info__times" },
@@ -10035,8 +11357,7 @@ var FlightOptionFlight = function (_a) {
10035
11357
  details.isNextDay && (React.createElement("span", { className: "flight__info__times__days" }, translations.FLIGHTS_FORM.PLUS_ONE_DAY))))),
10036
11358
  React.createElement("div", { className: "flight__detail__btn__wrapper" },
10037
11359
  React.createElement("div", { className: buildClassName(["flight__detail__btn", isDetailVisible && "flight__detail__btn--active"]), onClick: function () { return setIsDetailVisible(!isDetailVisible); } },
10038
- React.createElement("svg", { width: 16, height: 16, className: "flight__detail__btn__arrow" },
10039
- React.createElement("use", { href: "/icons/svg-sprite.svg#chevron" }))))),
11360
+ React.createElement(Icon, { name: "chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
10040
11361
  React.createElement("div", { className: buildClassName(["flight__detail", isDetailVisible && "flight__detail--active"]) }, details.flightLines.map(function (flightLine, flightLineIndex) { return (React.createElement(React.Fragment, { key: flightLineIndex },
10041
11362
  React.createElement("div", { className: "flight__info" },
10042
11363
  React.createElement("div", { className: "flight__info__times__wrapper" },
@@ -10047,8 +11368,7 @@ var FlightOptionFlight = function (_a) {
10047
11368
  flightLine.departureAirport),
10048
11369
  React.createElement("p", null, getDateText(flightLine.departureDate))),
10049
11370
  React.createElement("div", null,
10050
- React.createElement("svg", { width: 30, height: 20 },
10051
- React.createElement("use", { href: "/icons/svg-sprite.svg#plane-depart" })))),
11371
+ React.createElement(Icon, { name: "plane-depart", width: 30, height: 20 }))),
10052
11372
  React.createElement("div", { className: "flight__info__duration" },
10053
11373
  React.createElement("p", null, flightLine.travelDuration),
10054
11374
  React.createElement("div", { className: "flight__info__duration__stops" }),
@@ -10056,8 +11376,7 @@ var FlightOptionFlight = function (_a) {
10056
11376
  React.createElement("strong", null, flightLine.number)),
10057
11377
  React.createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
10058
11378
  React.createElement("div", null,
10059
- React.createElement("svg", { width: 35, height: 25 },
10060
- React.createElement("use", { href: "/icons/svg-sprite.svg#plane-arive" }))),
11379
+ React.createElement(Icon, { name: "plane-arive", width: 35, height: 25 })),
10061
11380
  React.createElement("div", { className: "flight__info__times flight__info__times--arrival" },
10062
11381
  React.createElement("strong", null,
10063
11382
  flightLine.arrivalTime,
@@ -10068,8 +11387,7 @@ var FlightOptionFlight = function (_a) {
10068
11387
  React.createElement("div", { className: "flight__info__times" }),
10069
11388
  React.createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
10070
11389
  React.createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
10071
- React.createElement("svg", { width: 20, height: 20 },
10072
- React.createElement("use", { href: "/icons/svg-sprite.svg#clock" }))),
11390
+ React.createElement(Icon, { name: "clock", width: 20, height: 20 })),
10073
11391
  React.createElement("div", { className: "flight__info__duration__stoptime" },
10074
11392
  React.createElement("span", null, translations.FLIGHTS_FORM.STOP_TIME),
10075
11393
  React.createElement("strong", null, flightLine.waitDuration))),
@@ -10113,8 +11431,7 @@ var FlightOptionModal = function (_a) {
10113
11431
  React.createElement("div", { className: "flight__rate__modal__header" },
10114
11432
  React.createElement("h3", { className: "flight__rate__modal__header__title" }, "Selecteer een tarief"),
10115
11433
  React.createElement("button", { className: "flight__rate__modal__header__close" },
10116
- React.createElement("svg", { width: 18, height: 18 },
10117
- React.createElement("use", { href: "/icons/svg-sprite.svg#close" })))),
11434
+ React.createElement(Icon, { name: "close", width: 18, height: 18 }))),
10118
11435
  React.createElement("div", { className: "flight__rate__modal__tabs" },
10119
11436
  React.createElement("button", { className: "flight__rate__modal__tab flight__rate__modal__tab--active" }, "Economy / Economy premium"),
10120
11437
  React.createElement("button", { className: "flight__rate__modal__tab" }, "Business / Business premium")),
@@ -10126,33 +11443,28 @@ var FlightOptionModal = function (_a) {
10126
11443
  React.createElement("p", { className: "flight__rate__modal__card__header__class" }, "Klasse: Economy")),
10127
11444
  React.createElement("div", { className: "flight__rate__modal__card__items flight__rate__modal__card__items--top" },
10128
11445
  React.createElement("div", { className: "flight__rate__modal__card__item flight__rate__modal__card__item--disabled" },
10129
- React.createElement("svg", { width: 20, height: 20 },
10130
- React.createElement("use", { href: "/icons/svg-sprite.svg#ticket" })),
11446
+ React.createElement(Icon, { name: "ticket", width: 20, height: 20 }),
10131
11447
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10132
11448
  React.createElement("strong", null, "Wijzigingen in het ticket"),
10133
11449
  React.createElement("p", null, "Wijzigingen toestaan"))),
10134
11450
  React.createElement("div", { className: "flight__rate__modal__card__item flight__rate__modal__card__item--disabled" },
10135
- React.createElement("svg", { width: 20, height: 20 },
10136
- React.createElement("use", { href: "/icons/svg-sprite.svg#payback" })),
11451
+ React.createElement(Icon, { name: "payback", width: 20, height: 20 }),
10137
11452
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10138
11453
  React.createElement("strong", null, "Terugbetaling van ticket"),
10139
11454
  React.createElement("p", null, "Ticket retourneerbaar")))),
10140
11455
  React.createElement("div", { className: "flight__rate__modal__card__items" },
10141
11456
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10142
- React.createElement("svg", { width: 20, height: 20 },
10143
- React.createElement("use", { href: "/icons/svg-sprite.svg#shopping-bag" })),
11457
+ React.createElement(Icon, { name: "shopping-bag", width: 20, height: 20 }),
10144
11458
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10145
11459
  React.createElement("strong", null, "persoonlijke items"),
10146
11460
  React.createElement("p", null, "Gratis"))),
10147
11461
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10148
- React.createElement("svg", { width: 20, height: 20 },
10149
- React.createElement("use", { href: "/icons/svg-sprite.svg#backpack" })),
11462
+ React.createElement(Icon, { name: "backpack", width: 20, height: 20 }),
10150
11463
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10151
11464
  React.createElement("strong", null, "Handbagage"),
10152
11465
  React.createElement("p", null, "Gratis: 2 x 8kg"))),
10153
11466
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10154
- React.createElement("svg", { width: 20, height: 20 },
10155
- React.createElement("use", { href: "/icons/svg-sprite.svg#suitcase" })),
11467
+ React.createElement(Icon, { name: "suitcase", width: 20, height: 20 }),
10156
11468
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10157
11469
  React.createElement("strong", null, "Ingecheckte bagage"),
10158
11470
  React.createElement("p", null, "Gratis: 2 x 32kg"))))),
@@ -10166,33 +11478,28 @@ var FlightOptionModal = function (_a) {
10166
11478
  React.createElement("p", { className: "flight__rate__modal__card__header__class" }, "Klasse: Economy")),
10167
11479
  React.createElement("div", { className: "flight__rate__modal__card__items flight__rate__modal__card__items--top" },
10168
11480
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10169
- React.createElement("svg", { width: 20, height: 20 },
10170
- React.createElement("use", { href: "/icons/svg-sprite.svg#ticket" })),
11481
+ React.createElement(Icon, { name: "ticket", width: 20, height: 20 }),
10171
11482
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10172
11483
  React.createElement("strong", null, "Wijzigingen in het ticket"),
10173
11484
  React.createElement("p", null, "Wijzigingen toestaan"))),
10174
11485
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10175
- React.createElement("svg", { width: 20, height: 20 },
10176
- React.createElement("use", { href: "/icons/svg-sprite.svg#payback" })),
11486
+ React.createElement(Icon, { name: "payback", width: 20, height: 20 }),
10177
11487
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10178
11488
  React.createElement("strong", null, "Terugbetaling van ticket"),
10179
11489
  React.createElement("p", null, "Ticket retourneerbaar")))),
10180
11490
  React.createElement("div", { className: "flight__rate__modal__card__items" },
10181
11491
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10182
- React.createElement("svg", { width: 20, height: 20 },
10183
- React.createElement("use", { href: "/icons/svg-sprite.svg#shopping-bag" })),
11492
+ React.createElement(Icon, { name: "shopping-bag", width: 20, height: 20 }),
10184
11493
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10185
11494
  React.createElement("strong", null, "persoonlijke items"),
10186
11495
  React.createElement("p", null, "Gratis"))),
10187
11496
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10188
- React.createElement("svg", { width: 20, height: 20 },
10189
- React.createElement("use", { href: "/icons/svg-sprite.svg#backpack" })),
11497
+ React.createElement(Icon, { name: "backpack", width: 20, height: 20 }),
10190
11498
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10191
11499
  React.createElement("strong", null, "Handbagage"),
10192
11500
  React.createElement("p", null, "Gratis: 2 x 8kg"))),
10193
11501
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10194
- React.createElement("svg", { width: 20, height: 20 },
10195
- React.createElement("use", { href: "/icons/svg-sprite.svg#suitcase" })),
11502
+ React.createElement(Icon, { name: "suitcase", width: 20, height: 20 }),
10196
11503
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10197
11504
  React.createElement("strong", null, "Ingecheckte bagage"),
10198
11505
  React.createElement("p", null, "Gratis: 2 x 32kg"))))),
@@ -10206,57 +11513,48 @@ var FlightOptionModal = function (_a) {
10206
11513
  React.createElement("p", { className: "flight__rate__modal__card__header__class" }, "Klasse: Economy")),
10207
11514
  React.createElement("div", { className: "flight__rate__modal__card__items flight__rate__modal__card__items--top" },
10208
11515
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10209
- React.createElement("svg", { width: 20, height: 20 },
10210
- React.createElement("use", { href: "/icons/svg-sprite.svg#ticket" })),
11516
+ React.createElement(Icon, { name: "ticket", width: 20, height: 20 }),
10211
11517
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10212
11518
  React.createElement("strong", null, "Wijzigingen in het ticket"),
10213
11519
  React.createElement("p", null, "Wijzigingen toestaan"))),
10214
11520
  React.createElement("div", { className: "flight__rate__modal__card__item flight__rate__modal__card__item--disabled" },
10215
- React.createElement("svg", { width: 20, height: 20 },
10216
- React.createElement("use", { href: "/icons/svg-sprite.svg#payback" })),
11521
+ React.createElement(Icon, { name: "payback", width: 20, height: 20 }),
10217
11522
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10218
11523
  React.createElement("strong", null, "Terugbetaling van ticket"),
10219
11524
  React.createElement("p", null, "Ticket retourneerbaar")))),
10220
11525
  React.createElement("div", { className: "flight__rate__modal__card__items" },
10221
11526
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10222
- React.createElement("svg", { width: 20, height: 20 },
10223
- React.createElement("use", { href: "/icons/svg-sprite.svg#shopping-bag" })),
11527
+ React.createElement(Icon, { name: "shopping-bag", width: 20, height: 20 }),
10224
11528
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10225
11529
  React.createElement("strong", null, "persoonlijke items"),
10226
11530
  React.createElement("p", null, "Gratis"))),
10227
11531
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10228
- React.createElement("svg", { width: 20, height: 20 },
10229
- React.createElement("use", { href: "/icons/svg-sprite.svg#backpack" })),
11532
+ React.createElement(Icon, { name: "backpack", width: 20, height: 20 }),
10230
11533
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10231
11534
  React.createElement("strong", null, "Handbagage"),
10232
11535
  React.createElement("p", null, "Gratis: 2 x 8kg"))),
10233
11536
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10234
- React.createElement("svg", { width: 20, height: 20 },
10235
- React.createElement("use", { href: "/icons/svg-sprite.svg#suitcase" })),
11537
+ React.createElement(Icon, { name: "suitcase", width: 20, height: 20 }),
10236
11538
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10237
11539
  React.createElement("strong", null, "Ingecheckte bagage"),
10238
11540
  React.createElement("p", null, "Gratis: 2 x 32kg"))),
10239
11541
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10240
- React.createElement("svg", { width: 20, height: 20 },
10241
- React.createElement("use", { href: "/icons/svg-sprite.svg#seat-selection" })),
11542
+ React.createElement(Icon, { name: "seat-selection", width: 20, height: 20 }),
10242
11543
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10243
11544
  React.createElement("strong", null, "Stoelselectie"),
10244
11545
  React.createElement("p", null, "kies uw stoel in het vliegtijg"))),
10245
11546
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10246
- React.createElement("svg", { width: 20, height: 20 },
10247
- React.createElement("use", { href: "/icons/svg-sprite.svg#check-in" })),
11547
+ React.createElement(Icon, { name: "check-in", width: 20, height: 20 }),
10248
11548
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10249
11549
  React.createElement("strong", null, "Sneller inchecken"),
10250
11550
  React.createElement("p", null, "Sla de wachtrijen voor de veiligheidscontrole over"))),
10251
11551
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10252
- React.createElement("svg", { width: 20, height: 20 },
10253
- React.createElement("use", { href: "/icons/svg-sprite.svg#business-lounge" })),
11552
+ React.createElement(Icon, { name: "business-lounge", width: 20, height: 20 }),
10254
11553
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10255
11554
  React.createElement("strong", null, "Zakenlunge"),
10256
11555
  React.createElement("p", null, "Ontspan voor uw vlucht"))),
10257
11556
  React.createElement("div", { className: "flight__rate__modal__card__item" },
10258
- React.createElement("svg", { width: 20, height: 20 },
10259
- React.createElement("use", { href: "/icons/svg-sprite.svg#priority" })),
11557
+ React.createElement(Icon, { name: "priority", width: 20, height: 20 }),
10260
11558
  React.createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
10261
11559
  React.createElement("strong", null, "Prioriteit"),
10262
11560
  React.createElement("p", null, "Stap voor anderen aan boord"))))),
@@ -11442,12 +12740,7 @@ var RoomOptionsForm = function () {
11442
12740
  };
11443
12741
  var handleSubmit = function (e) {
11444
12742
  if (settings.skipRouter) {
11445
- if (settings.flightOptions.isHidden) {
11446
- dispatch(setCurrentStep(OPTIONS_FORM_STEP));
11447
- }
11448
- else {
11449
- dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
11450
- }
12743
+ dispatch(setCurrentStep(OPTIONS_FORM_STEP));
11451
12744
  }
11452
12745
  else {
11453
12746
  navigate("".concat(settings.basePath).concat(settings.options.pathSuffix, "?").concat(bookingQueryString));
@@ -12111,7 +13404,7 @@ var Summary = function () {
12111
13404
  React.createElement("div", { className: "form__row" },
12112
13405
  React.createElement("div", { className: "form__group" },
12113
13406
  React.createElement("div", { className: "info-message" },
12114
- React.createElement(Icon$1, { name: "ui-tooltip", className: "icon--secondary-color" }),
13407
+ React.createElement(Icon, { name: "ui-tooltip", className: "icon--secondary-color" }),
12115
13408
  React.createElement("div", { className: "info-message__copy" },
12116
13409
  React.createElement("h5", null, translations.SUMMARY.NOTIFICATIONS_TITLE),
12117
13410
  React.createElement(React.Fragment, null,
@@ -12138,10 +13431,10 @@ var Summary = function () {
12138
13431
  React.createElement("div", { className: "form__row" },
12139
13432
  React.createElement("div", { className: "form__group" },
12140
13433
  React.createElement("div", { className: "info-message" },
12141
- React.createElement(Icon$1, { name: "ui-tooltip", className: "icon--secondary-color" }),
13434
+ React.createElement(Icon, { name: "ui-tooltip", className: "icon--secondary-color" }),
12142
13435
  React.createElement("div", { className: "info-message__copy" },
12143
13436
  React.createElement("h5", null, translations.SUMMARY.VALIDATE_TITLE),
12144
- React.createElement("p", null, translations.SUMMARY.VALIDATE_TEXT),
13437
+ React.createElement("p", null, settings.isOffer ? translations.SUMMARY.VALIDATE_TEXT_OFFER : translations.SUMMARY.VALIDATE_TEXT_BOOKING),
12145
13438
  checkboxes &&
12146
13439
  checkboxes.map(function (checkbox) { return (React.createElement("div", { className: "checkbox", key: checkbox.id },
12147
13440
  React.createElement("label", { className: "checkbox__label" },
@@ -12153,10 +13446,10 @@ var Summary = function () {
12153
13446
  } })))); })))))),
12154
13447
  React.createElement("div", { className: "booking__navigator" },
12155
13448
  settings.skipRouter ? (React.createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: function () { return goPrevious(); }, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) : (React.createElement(Link, { to: "".concat(settings.basePath).concat(settings.travellers.pathSuffix, "?").concat(bookingQueryString), title: translations.STEPS.PREVIOUS, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)),
12156
- React.createElement("button", { title: translations.STEPS.SUBMIT, className: buildClassName([
13449
+ React.createElement("button", { title: settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING, className: buildClassName([
12157
13450
  "cta",
12158
13451
  !userValidated && "cta--disabled",
12159
- ]), disabled: !userValidated }, translations.STEPS.SUBMIT))))));
13452
+ ]), disabled: !userValidated }, settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING))))));
12160
13453
  };
12161
13454
 
12162
13455
  var LabeledInput = function (_a) {
@@ -12198,7 +13491,7 @@ var TypeAheadInput = function (_a) {
12198
13491
  };
12199
13492
  return (React.createElement("div", { className: "typeahead" },
12200
13493
  React.createElement("div", { className: "typeahead__trigger typeahead__trigger--icon" },
12201
- React.createElement(Icon$1, { name: "qsm-location" }),
13494
+ React.createElement(Icon, { name: "qsm-location" }),
12202
13495
  React.createElement("input", { type: "text", className: "form__input", name: name, value: value, onChange: handleChange, placeholder: placeholder, required: true, autoComplete: "off", onKeyDown: function (e) {
12203
13496
  if (e.key === "Tab" && options && onSelect) {
12204
13497
  onSelect(options[0].key);
@@ -12226,7 +13519,7 @@ var TypeAheadInput = function (_a) {
12226
13519
  };
12227
13520
 
12228
13521
  function isValidEmail(email) {
12229
- return !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(email);
13522
+ return !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i.test(email);
12230
13523
  }
12231
13524
  function getAge(birthDateText, startDateText) {
12232
13525
  var birthDate = new Date(birthDateText);
@@ -12596,13 +13889,13 @@ var TravelersForm = function () {
12596
13889
  React.createElement("div", { className: "form__twocolumn" },
12597
13890
  React.createElement("div", { className: "form__twocolumn-column" },
12598
13891
  React.createElement("div", { className: "form__row" },
12599
- React.createElement(LabeledInput, { hasError: hasVisibleError("street"), extraClassName: "form__group--50 form__group--sm-60", label: translations.TRAVELERS_FORM.STREET, required: true, name: "street", onChange: formik.handleChange, onBlur: formik.handleBlur, placeholder: translations.TRAVELERS_FORM.STREET_PLACEHOLDER, value: formik.values.street }),
13892
+ React.createElement(LabeledInput, { hasError: hasVisibleError("street"), extraClassName: "form__group--50 form__group--sm-60", label: translations.TRAVELERS_FORM.STREET, required: true, name: "street", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.street }),
12600
13893
  React.createElement(LabeledInput, { hasError: hasVisibleError("houseNumber"), extraClassName: "form__group--30 form__group--sm-20", label: translations.TRAVELERS_FORM.HOUSE_NUMBER, required: true, name: "houseNumber", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.houseNumber }),
12601
13894
  React.createElement(LabeledInput, { hasError: hasVisibleError("box"), extraClassName: "form__group--20", label: translations.TRAVELERS_FORM.POST_BOX, name: "box", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.box }))),
12602
13895
  React.createElement("div", { className: "form__twocolumn-column" },
12603
13896
  React.createElement("div", { className: "form__row" },
12604
13897
  React.createElement(LabeledInput, { hasError: hasVisibleError("zipCode"), extraClassName: "form__group--40 form__group--sm-20", label: translations.TRAVELERS_FORM.ZIPCODE, required: true, name: "zipCode", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.zipCode }),
12605
- React.createElement(LabeledInput, { hasError: hasVisibleError("place"), extraClassName: "form__group--60 form__group--sm-40", label: translations.TRAVELERS_FORM.CITY, required: true, name: "place", placeholder: translations.TRAVELERS_FORM.CITY_PLACEHOLDER, onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.place }),
13898
+ React.createElement(LabeledInput, { hasError: hasVisibleError("place"), extraClassName: "form__group--60 form__group--sm-40", label: translations.TRAVELERS_FORM.CITY, required: true, name: "place", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.place }),
12606
13899
  React.createElement(LabeledSelect, { hasError: hasVisibleError("country"), extraClassName: "form__group--sm-40", label: translations.TRAVELERS_FORM.COUNTRY, required: true, name: "country", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.country, options: [
12607
13900
  {
12608
13901
  key: "empty",
@@ -12659,7 +13952,7 @@ var TravelersForm = function () {
12659
13952
 
12660
13953
  var Booking = function (_a) {
12661
13954
  var productCode = _a.productCode, productName = _a.productName, thumbnailUrl = _a.thumbnailUrl;
12662
- var _b = useContext(SettingsContext), officeId = _b.officeId, bookingOptions = _b.bookingOptions, basePath = _b.basePath, roomOptions = _b.roomOptions, flightOptions = _b.flightOptions, options = _b.options, travellers = _b.travellers, summary = _b.summary, confirmation = _b.confirmation, error = _b.error, showSidebarDeposit = _b.showSidebarDeposit, includeFlights = _b.includeFlights, loaderComponent = _b.loaderComponent, skipPaymentWithAgent = _b.skipPaymentWithAgent, generatePaymentUrl = _b.generatePaymentUrl, tagIds = _b.tagIds, agentAdressId = _b.agentAdressId, language = _b.language, translationFiles = _b.translationFiles, accommodationViewId = _b.accommodationViewId;
13955
+ var _b = useContext(SettingsContext), officeId = _b.officeId, bookingOptions = _b.bookingOptions, basePath = _b.basePath, roomOptions = _b.roomOptions, flightOptions = _b.flightOptions, options = _b.options, travellers = _b.travellers, summary = _b.summary, confirmation = _b.confirmation, error = _b.error, showSidebarDeposit = _b.showSidebarDeposit, includeFlights = _b.includeFlights, loaderComponent = _b.loaderComponent, skipPaymentWithAgent = _b.skipPaymentWithAgent, generatePaymentUrl = _b.generatePaymentUrl, tagIds = _b.tagIds, agentAdressId = _b.agentAdressId, language = _b.language, translationFiles = _b.translationFiles, accommodationViewId = _b.accommodationViewId, isOffer = _b.isOffer;
12663
13956
  var dispatch = useAppDispatch();
12664
13957
  var location = useLocation();
12665
13958
  var productAttributes = useSelector(selectProductAttributes);
@@ -12834,7 +14127,7 @@ var Booking = function (_a) {
12834
14127
  !packageDetails && !bookingNumber && !isUnvailable && (React.createElement("div", { className: "booking" },
12835
14128
  React.createElement("div", { className: "booking__loader" },
12836
14129
  loaderComponent,
12837
- React.createElement("p", { className: "booking__loader-text" }, translations.MAIN.PREPARING_BOOKING)))),
14130
+ React.createElement("p", { className: "booking__loader-text" }, isOffer ? translations.MAIN.PREPARING_OFFER : translations.MAIN.PREPARING_BOOKING)))),
12838
14131
  isUnvailable && (React.createElement("div", { className: "booking" },
12839
14132
  React.createElement("div", { className: "booking__loader" },
12840
14133
  React.createElement("p", { className: "booking__loader-text" }, translations.MAIN.PRODUCT_UNAVAILABLE))))));