@wise/dynamic-flow-client 3.3.1 → 3.4.0-experimental-9862ccf

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 (168) hide show
  1. package/build/common/httpClientContext/HttpClientContext.js +35 -0
  2. package/build/common/httpClientContext/index.js +1 -0
  3. package/build/common/makeHttpClient/index.js +1 -0
  4. package/build/common/makeHttpClient/makeHttpClient.js +34 -0
  5. package/build/common/messages/generic-error.messages.js +18 -0
  6. package/build/common/messages/help.messages.js +8 -0
  7. package/build/common/messages/multi-file-upload.messages.js +18 -0
  8. package/build/common/messages/paragraph.messages.js +13 -0
  9. package/build/common/messages/repeatable.messages.js +23 -0
  10. package/build/common/messages/validation.array.messages.js +13 -0
  11. package/build/common/messages/validation.messages.js +53 -0
  12. package/build/common/utils/api-utils.js +4 -0
  13. package/build/legacy/common/constants/DateMode.js +4 -0
  14. package/build/legacy/common/constants/FeatureName.js +4 -0
  15. package/build/legacy/common/constants/FormControlType.js +21 -0
  16. package/build/legacy/common/constants/MonthFormat.js +4 -0
  17. package/build/legacy/common/constants/Size.js +7 -0
  18. package/build/legacy/common/constants/index.js +4 -0
  19. package/build/legacy/common/contexts/dynamicFlowContexts/DynamicFlowContexts.js +36 -0
  20. package/build/legacy/common/contexts/dynamicFlowContexts/usePendingPromiseCounter.js +13 -0
  21. package/build/legacy/common/contexts/eventsContext/EventsContext.js +38 -0
  22. package/build/legacy/common/contexts/featureContext/FeatureContext.js +22 -0
  23. package/build/legacy/common/contexts/index.js +3 -0
  24. package/build/legacy/common/contexts/logContext/LogContext.js +44 -0
  25. package/build/legacy/common/hooks/index.js +7 -0
  26. package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.js +9 -0
  27. package/build/legacy/common/hooks/useExternal/useExternal.js +15 -0
  28. package/build/legacy/common/hooks/useExternalStepPolling/useExternalStepPolling.js +70 -0
  29. package/build/legacy/common/hooks/usePersistAsync/usePersistAsync.js +172 -0
  30. package/build/legacy/common/hooks/usePolling/usePolling.js +51 -0
  31. package/build/legacy/common/hooks/usePrevious/usePrevious.js +8 -0
  32. package/build/legacy/common/hooks/useStepPolling/useStepPolling.js +43 -0
  33. package/build/legacy/common/messages.js +8 -0
  34. package/build/legacy/common/utils/api-utils.js +6 -0
  35. package/build/legacy/common/utils/date-utils.js +22 -0
  36. package/build/legacy/common/utils/debounce.js +38 -0
  37. package/build/legacy/common/utils/file-utils.js +45 -0
  38. package/build/legacy/common/utils/id-utils.js +5 -0
  39. package/build/legacy/common/utils/index.js +11 -0
  40. package/build/legacy/common/utils/is-equal.js +21 -0
  41. package/build/legacy/common/utils/misc-utils.js +4 -0
  42. package/build/legacy/common/utils/mobile-utils.js +23 -0
  43. package/build/legacy/common/utils/model-utils.js +33 -0
  44. package/build/legacy/common/utils/schema-utils.js +97 -0
  45. package/build/legacy/common/utils/step-utils.js +32 -0
  46. package/build/legacy/common/validators/index.js +5 -0
  47. package/build/legacy/common/validators/models/model-utils.js +119 -0
  48. package/build/legacy/common/validators/models/model-validators.js +62 -0
  49. package/build/legacy/common/validators/schemas/schema-validators.js +101 -0
  50. package/build/legacy/common/validators/types/type-validators.js +14 -0
  51. package/build/legacy/common/validators/validationFailures/validation-failures.js +139 -0
  52. package/build/legacy/common/validators/validationFailures/validation-failures.utils.js +40 -0
  53. package/build/legacy/common/validators/values/value-validators.js +6 -0
  54. package/build/legacy/dynamic-flow-types.js +1 -0
  55. package/build/legacy/dynamicFlow/BackButton.js +22 -0
  56. package/build/legacy/dynamicFlow/DynamicFlowStep.js +37 -0
  57. package/build/legacy/formControl/FormControl.js +266 -0
  58. package/build/legacy/formControl/index.js +1 -0
  59. package/build/legacy/formControl/utils/getAutocompleteString.js +80 -0
  60. package/build/legacy/formControl/utils/index.js +2 -0
  61. package/build/legacy/formControl/utils/value-utils.js +108 -0
  62. package/build/legacy/jsonSchemaForm/allOfSchema/AllOfSchema.js +50 -0
  63. package/build/legacy/jsonSchemaForm/allOfSchema/index.js +1 -0
  64. package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +25 -0
  65. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +30 -0
  66. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/MultipleFileUploadSchema.js +141 -0
  67. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/index.js +1 -0
  68. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/index.js +2 -0
  69. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/upload-utils.js +79 -0
  70. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/useFormattedDefaultErrorMessages.js +14 -0
  71. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/ItemSummary.js +7 -0
  72. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +134 -0
  73. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +85 -0
  74. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +135 -0
  75. package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +1 -0
  76. package/build/legacy/jsonSchemaForm/basicTypeSchema/BasicTypeSchema.js +111 -0
  77. package/build/legacy/jsonSchemaForm/basicTypeSchema/index.js +1 -0
  78. package/build/legacy/jsonSchemaForm/controlFeedback/ControlFeedback.js +86 -0
  79. package/build/legacy/jsonSchemaForm/controlFeedback/index.js +1 -0
  80. package/build/legacy/jsonSchemaForm/help/Help.js +20 -0
  81. package/build/legacy/jsonSchemaForm/help/index.js +1 -0
  82. package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +77 -0
  83. package/build/legacy/jsonSchemaForm/objectSchema/index.js +1 -0
  84. package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +155 -0
  85. package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +1 -0
  86. package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +68 -0
  87. package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +26 -0
  88. package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +1 -0
  89. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/PersistAsyncBasicSchema.js +165 -0
  90. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +1 -0
  91. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +131 -0
  92. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +31 -0
  93. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +1 -0
  94. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +72 -0
  95. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +1 -0
  96. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +8 -0
  97. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +27 -0
  98. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +31 -0
  99. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +32 -0
  100. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +54 -0
  101. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +13 -0
  102. package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +1 -0
  103. package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.js +133 -0
  104. package/build/legacy/jsonSchemaForm/schemaFormControl/index.js +1 -0
  105. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/index.js +1 -0
  106. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.js +107 -0
  107. package/build/legacy/layout/DynamicLayout.js +68 -0
  108. package/build/legacy/layout/alert/DynamicAlert.js +29 -0
  109. package/build/legacy/layout/box/DynamicBox.js +41 -0
  110. package/build/legacy/layout/button/DynamicButton.js +27 -0
  111. package/build/legacy/layout/button/utils.js +45 -0
  112. package/build/legacy/layout/columns/DynamicColumns.js +38 -0
  113. package/build/legacy/layout/decision/DynamicDecision.js +21 -0
  114. package/build/legacy/layout/divider/DynamicDivider.js +9 -0
  115. package/build/legacy/layout/external/DynamicExternal.js +32 -0
  116. package/build/legacy/layout/external/DynamicExternal.messages.js +8 -0
  117. package/build/legacy/layout/form/DynamicForm.js +22 -0
  118. package/build/legacy/layout/heading/DynamicHeading.js +51 -0
  119. package/build/legacy/layout/icon/DynamicIcon.js +17 -0
  120. package/build/legacy/layout/icon/FlagIcon.js +198 -0
  121. package/build/legacy/layout/icon/NamedIcon.js +19 -0
  122. package/build/legacy/layout/image/DynamicImage.js +111 -0
  123. package/build/legacy/layout/index.js +20 -0
  124. package/build/legacy/layout/instructions/DynamicInstructions.js +30 -0
  125. package/build/legacy/layout/list/DynamicStatusList.js +37 -0
  126. package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.js +11 -0
  127. package/build/legacy/layout/markdown/DynamicMarkdown.js +23 -0
  128. package/build/legacy/layout/modal/DynamicModal.js +26 -0
  129. package/build/legacy/layout/paragraph/DynamicParagraph.js +46 -0
  130. package/build/legacy/layout/paragraph/useSnackBarIfAvailable.js +9 -0
  131. package/build/legacy/layout/review/DynamicReview.js +58 -0
  132. package/build/legacy/layout/search/DynamicSearch.js +58 -0
  133. package/build/legacy/layout/search/SearchInput.js +17 -0
  134. package/build/legacy/layout/search/SearchResults.js +31 -0
  135. package/build/legacy/layout/search/useSearch.js +137 -0
  136. package/build/legacy/layout/utils/getNavigationOptionMedia.js +28 -0
  137. package/build/legacy/layout/utils/index.js +32 -0
  138. package/build/legacy/step/cameraStep/CameraStep.js +124 -0
  139. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +161 -0
  140. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.messages.js +58 -0
  141. package/build/legacy/step/cameraStep/cameraCapture/components/bottomBar/BottomBar.js +28 -0
  142. package/build/legacy/step/cameraStep/cameraCapture/components/index.js +3 -0
  143. package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.js +19 -0
  144. package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.messages.js +8 -0
  145. package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +60 -0
  146. package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +80 -0
  147. package/build/legacy/step/cameraStep/cameraCapture/index.js +1 -0
  148. package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +77 -0
  149. package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +18 -0
  150. package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +1 -0
  151. package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +109 -0
  152. package/build/legacy/step/cameraStep/cameraCapture/types/index.js +7 -0
  153. package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +107 -0
  154. package/build/legacy/step/cameraStep/index.js +1 -0
  155. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +64 -0
  156. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.messages.js +23 -0
  157. package/build/legacy/step/externalConfirmationStep/index.js +1 -0
  158. package/build/legacy/step/index.js +3 -0
  159. package/build/legacy/step/layoutStep/LayoutStep.js +33 -0
  160. package/build/legacy/step/layoutStep/index.js +1 -0
  161. package/build/legacy/step/layoutStep/utils/index.js +2 -0
  162. package/build/legacy/step/layoutStep/utils/inline-reference-utils.js +105 -0
  163. package/build/legacy/step/layoutStep/utils/layout-utils.js +212 -0
  164. package/build/main.js +14 -29
  165. package/build/main.min.js +1 -1
  166. package/build/main.mjs +14 -29
  167. package/build/types/revamp/domain/features/events.d.ts +1 -1
  168. package/package.json +2 -2
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FlagIcon, isFlagIcon } from './FlagIcon';
3
+ import { NamedIcon, isNamedIcon } from './NamedIcon';
4
+ function DynamicIcon(_a) {
5
+ var type = _a.type;
6
+ if (isFlagIcon(type)) {
7
+ return _jsx(FlagIcon, { name: type });
8
+ }
9
+ if (isNamedIcon(type)) {
10
+ return _jsx(NamedIcon, { name: type });
11
+ }
12
+ return null;
13
+ }
14
+ export function isValidIconName(name) {
15
+ return isNamedIcon(name) || isFlagIcon(name);
16
+ }
17
+ export default DynamicIcon;
@@ -0,0 +1,198 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export var isFlagIcon = function (name) { return isCurrencyFlagIcon(name) || isCountryFlagIcon(name); };
3
+ var isCurrencyFlagIcon = function (name) {
4
+ return currencyCodes.some(function (currencyCode) { return name === "flag-".concat(currencyCode); });
5
+ };
6
+ var isCountryFlagIcon = function (name) {
7
+ return countryCodes.some(function (countryCode) { return name === "flag-".concat(countryCode); });
8
+ };
9
+ export function FlagIcon(_a) {
10
+ var name = _a.name;
11
+ if (!isFlagIcon(name)) {
12
+ return null;
13
+ }
14
+ var code = name.substring(5);
15
+ return (_jsx("img", { src: "https://wise.com/web-art/assets/flags/".concat(code, ".svg"), alt: "", "data-testid": "img-flag-".concat(code), width: "24px" }));
16
+ }
17
+ var currencyCodes = [
18
+ 'aed',
19
+ 'ars',
20
+ 'aud',
21
+ 'bdt',
22
+ 'bgn',
23
+ 'bhd',
24
+ 'bnd',
25
+ 'brl',
26
+ 'bwp',
27
+ 'cad',
28
+ 'chf',
29
+ 'clp',
30
+ 'cny',
31
+ 'cop',
32
+ 'crc',
33
+ 'czk',
34
+ 'dkk',
35
+ 'egp',
36
+ 'eur',
37
+ 'fjd',
38
+ 'gbp',
39
+ 'gel',
40
+ 'ghs',
41
+ 'gtq',
42
+ 'hkd',
43
+ 'hrk',
44
+ 'huf',
45
+ 'idr',
46
+ 'ils',
47
+ 'imp',
48
+ 'inr',
49
+ 'isk',
50
+ 'jmd',
51
+ 'jpy',
52
+ 'kes',
53
+ 'krw',
54
+ 'kwd',
55
+ 'lak',
56
+ 'lkr',
57
+ 'lsl',
58
+ 'mad',
59
+ 'mur',
60
+ 'mxn',
61
+ 'myr',
62
+ 'mzn',
63
+ 'nad',
64
+ 'ngn',
65
+ 'nok',
66
+ 'npr',
67
+ 'nzd',
68
+ 'omr',
69
+ 'pab',
70
+ 'pen',
71
+ 'php',
72
+ 'pkr',
73
+ 'pln',
74
+ 'qar',
75
+ 'ron',
76
+ 'rub',
77
+ 'sar',
78
+ 'sek',
79
+ 'sgd',
80
+ 'thb',
81
+ 'tmt',
82
+ 'try',
83
+ 'twd',
84
+ 'tzs',
85
+ 'uah',
86
+ 'ugx',
87
+ 'usd',
88
+ 'uyu',
89
+ 'vnd',
90
+ 'xof',
91
+ 'zar',
92
+ 'zmw',
93
+ ];
94
+ var countryCodes = [
95
+ 'ad',
96
+ 'ae',
97
+ 'ar',
98
+ 'at',
99
+ 'au',
100
+ 'bd',
101
+ 'be',
102
+ 'bg',
103
+ 'bh',
104
+ 'bn',
105
+ 'br',
106
+ 'bw',
107
+ 'ca',
108
+ 'ch',
109
+ 'cl',
110
+ 'cn',
111
+ 'co',
112
+ 'cr',
113
+ 'cy',
114
+ 'cz',
115
+ 'de',
116
+ 'dk',
117
+ 'ee',
118
+ 'eg',
119
+ 'es',
120
+ 'eu',
121
+ 'fi',
122
+ 'fj',
123
+ 'fr',
124
+ 'gb',
125
+ 'ge',
126
+ 'gg',
127
+ 'gh',
128
+ 'gp',
129
+ 'gr',
130
+ 'gt',
131
+ 'hk',
132
+ 'hr',
133
+ 'hu',
134
+ 'id',
135
+ 'ie',
136
+ 'il',
137
+ 'im',
138
+ 'in',
139
+ 'is',
140
+ 'it',
141
+ 'je',
142
+ 'jm',
143
+ 'jp',
144
+ 'ke',
145
+ 'kr',
146
+ 'kw',
147
+ 'la',
148
+ 'li',
149
+ 'lk',
150
+ 'ls',
151
+ 'lt',
152
+ 'lu',
153
+ 'lv',
154
+ 'ma',
155
+ 'mc',
156
+ 'mt',
157
+ 'mu',
158
+ 'mx',
159
+ 'my',
160
+ 'mz',
161
+ 'na',
162
+ 'ng',
163
+ 'nl',
164
+ 'no',
165
+ 'np',
166
+ 'nz',
167
+ 'om',
168
+ 'pa',
169
+ 'pe',
170
+ 'ph',
171
+ 'pk',
172
+ 'pl',
173
+ 'pt',
174
+ 'qa',
175
+ 'ro',
176
+ 'ru',
177
+ 'sa',
178
+ 'se',
179
+ 'sg',
180
+ 'si',
181
+ 'sk',
182
+ 'sm',
183
+ 'th',
184
+ 'tm',
185
+ 'tr',
186
+ 'tw',
187
+ 'tz',
188
+ 'ua',
189
+ 'ug',
190
+ 'us',
191
+ 'uy',
192
+ 'va',
193
+ 'vn',
194
+ 'wi',
195
+ 'xo',
196
+ 'za',
197
+ 'zm',
198
+ ];
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as icons from '@transferwise/icons';
3
+ export var isNamedIcon = function (name) {
4
+ var iconName = toCapitalisedCamelCase(name);
5
+ return Object.keys(icons).includes(iconName);
6
+ };
7
+ export function NamedIcon(_a) {
8
+ var name = _a.name;
9
+ if (!isNamedIcon(name)) {
10
+ return null;
11
+ }
12
+ var iconName = toCapitalisedCamelCase(name);
13
+ var Icon = icons[iconName];
14
+ return _jsx(Icon, { size: 24 });
15
+ }
16
+ var toCapitalisedCamelCase = function (value) {
17
+ return value.split('-').map(capitaliseFirstChar).join('');
18
+ };
19
+ var capitaliseFirstChar = function (value) { return "".concat(value[0].toUpperCase()).concat(value.slice(1)); };
@@ -0,0 +1,111 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx } from "react/jsx-runtime";
49
+ import { Image } from '@transferwise/components';
50
+ import { useEffect, useState } from 'react';
51
+ import { isRelativePath } from '../../../common/utils/api-utils';
52
+ import { getMargin } from '../utils';
53
+ import { useHttpClient } from '../../../common/httpClientContext';
54
+ function DynamicImage(_a) {
55
+ var image = _a.component;
56
+ var url = image.url, size = image.size, text = image.text, margin = image.margin, accessibilityDescription = image.accessibilityDescription;
57
+ var httpClient = useHttpClient();
58
+ var _b = useState(''), imageSource = _b[0], setImageSource = _b[1];
59
+ useEffect(function () {
60
+ void getImageSource(httpClient, url).then(setImageSource);
61
+ }, [url, httpClient]);
62
+ var imageProps = {
63
+ alt: accessibilityDescription || text || '',
64
+ src: imageSource,
65
+ stretch: true,
66
+ shrink: true
67
+ };
68
+ if (!imageSource) {
69
+ return null;
70
+ }
71
+ return (_jsx("div", __assign({ className: "df-image ".concat(size || 'md') }, { children: _jsx(Image, __assign({ className: "img-responsive ".concat(getMargin(margin || 'md')) }, imageProps)) })));
72
+ }
73
+ var readImageBlobAsDataURL = function (imageBlob) {
74
+ // we can safely assume the type of reader.result is string
75
+ // because we're calling reader.readAsDataURL
76
+ // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result
77
+ return new Promise(function (resolve, reject) {
78
+ var reader = new FileReader();
79
+ reader.addEventListener('loadend', function () { return resolve(reader.result); });
80
+ reader.addEventListener('error', function (error) { return reject(error); });
81
+ reader.readAsDataURL(imageBlob);
82
+ });
83
+ };
84
+ var getImageSource = function (httpClient, imageUrl) { return __awaiter(void 0, void 0, void 0, function () {
85
+ var _a;
86
+ return __generator(this, function (_b) {
87
+ try {
88
+ if (isRelativePath(imageUrl) || (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.startsWith("".concat((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.origin, "/")))) {
89
+ // eslint-disable-next-line @typescript-eslint/return-await
90
+ return [2 /*return*/, httpClient(imageUrl, {
91
+ method: 'GET',
92
+ headers: { 'Content-Type': 'image/image' },
93
+ credentials: 'same-origin'
94
+ })
95
+ .then(function (response) {
96
+ if (response.ok) {
97
+ return response.blob();
98
+ }
99
+ throw new Error('Image fetching failed');
100
+ })
101
+ .then(readImageBlobAsDataURL)["catch"](function () { return imageUrl; })];
102
+ }
103
+ return [2 /*return*/, imageUrl];
104
+ }
105
+ catch (_c) {
106
+ return [2 /*return*/, imageUrl];
107
+ }
108
+ return [2 /*return*/];
109
+ });
110
+ }); };
111
+ export default DynamicImage;
@@ -0,0 +1,20 @@
1
+ export { default as DynamicAlert } from './alert/DynamicAlert';
2
+ export { default as DynamicBox } from './box/DynamicBox';
3
+ export { default as DynamicButton } from './button/DynamicButton';
4
+ export { default as DynamicColumns } from './columns/DynamicColumns';
5
+ export { default as DynamicDecision } from './decision/DynamicDecision';
6
+ export { default as DynamicDivider } from './divider/DynamicDivider';
7
+ export { default as DynamicExternal } from './external/DynamicExternal';
8
+ export { default as DynamicForm } from './form/DynamicForm';
9
+ export { default as DynamicHeading } from './heading/DynamicHeading';
10
+ export { default as DynamicIcon } from './icon/DynamicIcon';
11
+ export { DynamicInfo, DynamicMarkdown } from './markdown/DynamicMarkdown';
12
+ export { default as DynamicImage } from './image/DynamicImage';
13
+ export { default as DynamicInstructions } from './instructions/DynamicInstructions';
14
+ export { default as DynamicLayout } from './DynamicLayout';
15
+ export { default as DynamicStatusList } from './list/DynamicStatusList';
16
+ export { default as DynamicLoadingIndicator } from './loadingIndicator/DynamicLoadingIndicator';
17
+ export { default as DynamicParagraph } from './paragraph/DynamicParagraph';
18
+ export { default as DynamicReview } from './review/DynamicReview';
19
+ export { default as DynamicSearch } from './search/DynamicSearch';
20
+ export { default as DynamicModal } from './modal/DynamicModal';
@@ -0,0 +1,30 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Header, InstructionsList } from '@transferwise/components';
14
+ import { getMargin } from '../utils';
15
+ var doContext = ['positive', 'neutral'];
16
+ var dontContext = ['warning', 'negative'];
17
+ var DynamicInstructions = function (_a) {
18
+ var component = _a.component;
19
+ var items = component.items;
20
+ var dos = items.filter(function (item) { return doContext.includes(item.context); }).map(function (_a) {
21
+ var text = _a.text;
22
+ return text;
23
+ });
24
+ var donts = items.filter(function (item) { return dontContext.includes(item.context); }).map(function (_a) {
25
+ var text = _a.text;
26
+ return text;
27
+ });
28
+ return (_jsxs("div", __assign({ className: getMargin(component.margin || 'md') }, { children: [component.title ? _jsx(Header, { title: component.title }) : null, _jsx(InstructionsList, { dos: dos, donts: donts })] })));
29
+ };
30
+ export default DynamicInstructions;
@@ -0,0 +1,37 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
14
+ import { Header, Summary } from '@transferwise/components';
15
+ import { DynamicIcon } from '..';
16
+ import { getMargin } from '../utils';
17
+ var DynamicStatusList = function (_a) {
18
+ var component = _a.component;
19
+ return (_jsxs("div", __assign({ className: getMargin(component.margin || 'md') }, { children: [component.title ? _jsx(Header, { title: component.title }) : null, component.items.map(mapListItemToSummary)] })));
20
+ };
21
+ var mapListItemToSummary = function (_a) {
22
+ var title = _a.title, description = _a.description, icon = _a.icon, status = _a.status;
23
+ var props = __assign(__assign({ key: "".concat(title, "/").concat(description || ''), title: title, description: description }, ((icon === null || icon === void 0 ? void 0 : icon.name) ? { icon: _jsx(DynamicIcon, { type: icon.name }) } : {})), (status ? { status: statusMap[status] } : {}));
24
+ return _jsx(Summary, __assign({}, props));
25
+ };
26
+ var statusListMap = {
27
+ done: 'done',
28
+ pending: 'pending',
29
+ 'not-done': 'notDone'
30
+ };
31
+ var legacyStatusMap = {
32
+ positive: 'done',
33
+ warning: 'pending',
34
+ neutral: 'notDone'
35
+ };
36
+ var statusMap = __assign(__assign({}, statusListMap), legacyStatusMap);
37
+ export default DynamicStatusList;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Loader } from '@transferwise/components';
3
+ import { getMargin } from '../utils';
4
+ var DynamicLoadingIndicator = function (_a) {
5
+ var component = _a.component;
6
+ var _b = component.margin, margin = _b === void 0 ? 'md' : _b, _c = component.size, size = _c === void 0 ? 'md' : _c;
7
+ return (_jsx(Loader, { size: size, classNames: {
8
+ 'tw-loader': "tw-loader m-x-auto ".concat(getMargin(margin))
9
+ }, "data-testid": "loading-indicator" }));
10
+ };
11
+ export default DynamicLoadingIndicator;
@@ -0,0 +1,23 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Markdown } from '@transferwise/components';
14
+ import { getTextAlignmentAndMargin } from '../utils';
15
+ export var DynamicMarkdown = function (_a) {
16
+ var component = _a.component;
17
+ var content = component.content, align = component.align, margin = component.margin;
18
+ return (_jsx("div", __assign({ className: getTextAlignmentAndMargin({ align: align, margin: margin }) }, { children: _jsx(Markdown, __assign({ config: { link: { target: '_blank' } } }, { children: content })) })));
19
+ };
20
+ export var DynamicInfo = function (_a) {
21
+ var component = _a.component;
22
+ return (_jsx("div", __assign({ className: getTextAlignmentAndMargin(component) }, { children: _jsx(Markdown, __assign({ config: { link: { target: '_blank' } } }, { children: component.markdown })) })));
23
+ };
@@ -0,0 +1,26 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Button, Modal } from '@transferwise/components';
14
+ import { useState } from 'react';
15
+ import DynamicLayout from '../DynamicLayout';
16
+ import { getTextAlignmentAndMargin } from '../utils';
17
+ function DynamicModal(props) {
18
+ var _a = useState(false), visible = _a[0], isVisible = _a[1];
19
+ var component = props.component, onAction = props.onAction;
20
+ var _b = component.margin, margin = _b === void 0 ? 'md' : _b;
21
+ return (_jsxs("div", __assign({ className: getTextAlignmentAndMargin({ margin: margin }) }, { children: [_jsx(Button, __assign({ priority: "tertiary", block: true, onClick: function () { return isVisible(true); } }, { children: component.trigger.title })), _jsx(Modal, { scroll: "content", open: visible, size: "lg", body: _jsx(DynamicLayout, __assign({}, props, { components: component.content.components, onAction: function (action) {
22
+ isVisible(false);
23
+ onAction(action);
24
+ } })), onClose: function () { return isVisible(false); } })] })));
25
+ }
26
+ export default DynamicModal;
@@ -0,0 +1,46 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Button } from '@transferwise/components';
14
+ import { useIntl } from 'react-intl';
15
+ import { getTextAlignmentAndMargin } from '../utils';
16
+ import messages from '../../../common/messages/paragraph.messages';
17
+ import { useSnackBarIfAvailable } from './useSnackBarIfAvailable';
18
+ function DynamicParagraph(_a) {
19
+ var component = _a.component;
20
+ return component.control === 'copyable' ? (_jsx(CopyableDynamicParagraph, { component: component })) : (_jsx(BasicDynamicParagraph, { component: component }));
21
+ }
22
+ function BasicDynamicParagraph(_a) {
23
+ var component = _a.component;
24
+ return _jsxs("p", __assign({ className: getTextAlignmentAndMargin(component) }, { children: [" ", component.text, " "] }));
25
+ }
26
+ function CopyableDynamicParagraph(_a) {
27
+ var component = _a.component;
28
+ var formatMessage = useIntl().formatMessage;
29
+ var createSnackbar = useSnackBarIfAvailable();
30
+ var text = component.text;
31
+ var copy = function () {
32
+ var _a;
33
+ (_a = navigator.clipboard) === null || _a === void 0 ? void 0 : _a.writeText(text).then(function () { return createSnackbar({ text: formatMessage(messages.copied) }); })["catch"](noop);
34
+ };
35
+ var classNames = "".concat(getTextAlignmentAndMargin({
36
+ align: component.align,
37
+ margin: 'sm'
38
+ }), " form-control");
39
+ return (_jsxs("div", __assign({ className: getTextAlignmentAndMargin(component) }, { children: [_jsx("input", { type: "text", className: classNames, value: text, readOnly: true,
40
+ // eslint-disable-next-line react/forbid-dom-props
41
+ style: { textOverflow: 'ellipsis' } }), _jsx(Button, __assign({ block: true, onClick: copy }, { children: formatMessage(messages.copy) }))] })));
42
+ }
43
+ function noop() {
44
+ //
45
+ }
46
+ export default DynamicParagraph;
@@ -0,0 +1,9 @@
1
+ import { SnackbarContext } from '@transferwise/components';
2
+ import { useContext } from 'react';
3
+ export function useSnackBarIfAvailable() {
4
+ var context = useContext(SnackbarContext);
5
+ return context ? context.createSnackbar : noop;
6
+ }
7
+ function noop() {
8
+ //
9
+ }
@@ -0,0 +1,58 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { DefinitionList, Header } from '@transferwise/components';
14
+ import Help from '../../jsonSchemaForm/help/Help';
15
+ import { getMargin } from '../utils';
16
+ var getDefinitions = function (orientation, review) {
17
+ return review.fields.map(function (_a, index) {
18
+ var label = _a.label, value = _a.value, help = _a.help;
19
+ return ({
20
+ key: String(index),
21
+ title: label,
22
+ value: getFieldValue(value, help, orientation)
23
+ });
24
+ });
25
+ };
26
+ var getFieldValue = function (value, help, orientation) {
27
+ if (help) {
28
+ return orientation === 'HORIZONTAL_RIGHT_ALIGNED' ? (_jsxs(_Fragment, { children: [_jsx(Help, { help: help }), " ", value] })) : (_jsxs(_Fragment, { children: [value, " ", _jsx(Help, { help: help })] }));
29
+ }
30
+ return value;
31
+ };
32
+ var getReviewLayout = function (review) {
33
+ var orientation = review.control || review.orientation;
34
+ return orientation === 'horizontal' ? 'HORIZONTAL_RIGHT_ALIGNED' : 'VERTICAL_ONE_COLUMN';
35
+ };
36
+ function DynamicReview(props) {
37
+ var review = props.component;
38
+ var margin = getMargin(review.margin || 'xs');
39
+ var getReviewAction = function (title, action) { return ({
40
+ text: title !== null && title !== void 0 ? title : '',
41
+ href: action.url,
42
+ onClick: function (event) {
43
+ event.preventDefault();
44
+ if (action) {
45
+ props.onAction(action);
46
+ }
47
+ }
48
+ }); };
49
+ var orientation = getReviewLayout(review);
50
+ var callToAction = review.callToAction
51
+ ? getReviewAction(review.callToAction.title, review.callToAction.action)
52
+ : null;
53
+ var legacyCallToAction = !callToAction && review.action
54
+ ? getReviewAction(review.action.title || '', review.action)
55
+ : null;
56
+ return (_jsxs("div", __assign({ className: margin }, { children: [review.title && (_jsx(Header, { title: review.title, action: callToAction || legacyCallToAction || undefined })), _jsx("div", __assign({ className: margin }, { children: _jsx(DefinitionList, { layout: orientation, definitions: getDefinitions(orientation, review) }) }))] })));
57
+ }
58
+ export default DynamicReview;