@wise/dynamic-flow-client-internal 5.16.1 → 5.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/main.js +252 -179
- package/build/main.mjs +214 -141
- package/build/tsconfig.types.tsbuildinfo +1 -1
- package/build/types/dynamicFlow/DynamicFlowWiseProps.d.ts +1 -1
- package/build/types/dynamicFlow/DynamicFlowWiseProps.d.ts.map +1 -1
- package/build/types/dynamicFlow/context-menu/useDFContextMenu.d.ts.map +1 -1
- package/build/types/dynamicFlow/useCreateSnackBar.d.ts +7 -0
- package/build/types/dynamicFlow/useCreateSnackBar.d.ts.map +1 -0
- package/build/types/dynamicFlow/useWiseToCoreProps.d.ts +1 -1
- package/build/types/dynamicFlow/useWiseToCoreProps.d.ts.map +1 -1
- package/package.json +27 -27
package/build/main.js
CHANGED
|
@@ -141,7 +141,7 @@ var import_dynamic_flow_client4 = require("@wise/dynamic-flow-client");
|
|
|
141
141
|
// src/dynamicFlow/telemetry/app-version.ts
|
|
142
142
|
var appVersion = (
|
|
143
143
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
144
|
-
typeof process !== "undefined" ? "5.
|
|
144
|
+
typeof process !== "undefined" ? "5.18.1" : "0.0.0"
|
|
145
145
|
);
|
|
146
146
|
|
|
147
147
|
// src/dynamicFlow/context-menu/useContextMenu.tsx
|
|
@@ -226,27 +226,29 @@ var useDFContextMenu = (controller) => {
|
|
|
226
226
|
}
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
|
-
label: "
|
|
229
|
+
label: "Copy step JSON",
|
|
230
230
|
onClick: () => {
|
|
231
|
-
|
|
231
|
+
copyToClipboard(getCurrentStep());
|
|
232
232
|
}
|
|
233
233
|
},
|
|
234
234
|
{
|
|
235
|
-
label: "Open in
|
|
235
|
+
label: "Open in Studio (experimental)",
|
|
236
236
|
onClick: () => {
|
|
237
|
-
|
|
237
|
+
openIn("studio", getEncodedCurrentStep());
|
|
238
238
|
}
|
|
239
239
|
},
|
|
240
240
|
{
|
|
241
|
-
label: "
|
|
241
|
+
label: "Open in Sandbox",
|
|
242
242
|
onClick: () => {
|
|
243
|
-
|
|
243
|
+
openIn("sandbox", getEncodedCurrentStep());
|
|
244
244
|
}
|
|
245
245
|
},
|
|
246
246
|
{
|
|
247
|
-
label: "
|
|
247
|
+
label: "Open in Sandbox (with model)",
|
|
248
248
|
onClick: () => {
|
|
249
|
-
void
|
|
249
|
+
void getEncodedCurrentStepWithModel().then(
|
|
250
|
+
(base64Step) => openIn("sandbox", base64Step)
|
|
251
|
+
);
|
|
250
252
|
}
|
|
251
253
|
}
|
|
252
254
|
] : []
|
|
@@ -257,9 +259,9 @@ var toBase64 = (str) => {
|
|
|
257
259
|
const binString = Array.from(bytes, (b) => String.fromCharCode(b)).join("");
|
|
258
260
|
return btoa(binString);
|
|
259
261
|
};
|
|
260
|
-
var
|
|
262
|
+
var openIn = (editor, base64Step) => {
|
|
261
263
|
if (base64Step) {
|
|
262
|
-
window.open(`https://df.wise.com
|
|
264
|
+
window.open(`https://df.wise.com/${editor}#${base64Step}`, "_blank", "noopener,noreferrer");
|
|
263
265
|
}
|
|
264
266
|
};
|
|
265
267
|
var openVersionPage = (version) => {
|
|
@@ -323,56 +325,10 @@ var recursivelyRemoveNullish = (element) => {
|
|
|
323
325
|
};
|
|
324
326
|
|
|
325
327
|
// src/dynamicFlow/useWiseToCoreProps.tsx
|
|
326
|
-
var
|
|
327
|
-
|
|
328
|
-
// src/dynamicFlow/telemetry/getLogEvent.ts
|
|
329
|
-
var getLogEvent = (onLog) => (level, message, extra) => {
|
|
330
|
-
const extraWithVersion = __spreadProps(__spreadValues({}, extra), {
|
|
331
|
-
dfWiseVersion: appVersion
|
|
332
|
-
});
|
|
333
|
-
if (level !== "info" && onLog) {
|
|
334
|
-
if (onLog) {
|
|
335
|
-
onLog(level, message, extraWithVersion);
|
|
336
|
-
} else {
|
|
337
|
-
logToRollbar(level, message, extraWithVersion);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
};
|
|
341
|
-
var logToRollbar = (level, message, extra) => {
|
|
342
|
-
try {
|
|
343
|
-
const rollbar = typeof window.Rollbar !== "undefined" ? window.Rollbar : void 0;
|
|
344
|
-
rollbar == null ? void 0 : rollbar[level](message, extra);
|
|
345
|
-
} catch (error) {
|
|
346
|
-
console.error("Failed to log to Rollbar", error);
|
|
347
|
-
}
|
|
348
|
-
};
|
|
328
|
+
var import_react26 = require("react");
|
|
349
329
|
|
|
350
|
-
// src/dynamicFlow/
|
|
351
|
-
var
|
|
352
|
-
var prefix = "Dynamic Flow - ";
|
|
353
|
-
var getTrackEvent = (onEvent, onAnalytics) => (name, properties) => {
|
|
354
|
-
onEvent == null ? void 0 : onEvent(name, properties);
|
|
355
|
-
if (includeInAnalytics(name)) {
|
|
356
|
-
onAnalytics == null ? void 0 : onAnalytics(name, properties);
|
|
357
|
-
}
|
|
358
|
-
};
|
|
359
|
-
var includeInAnalytics = (name) => {
|
|
360
|
-
const eventName = name.startsWith(prefix) ? name.slice(prefix.length) : name;
|
|
361
|
-
if (isCoreEventName(eventName)) {
|
|
362
|
-
return true;
|
|
363
|
-
}
|
|
364
|
-
if (eventName in customEventsToAnalytics) {
|
|
365
|
-
return customEventsToAnalytics[eventName];
|
|
366
|
-
}
|
|
367
|
-
return true;
|
|
368
|
-
};
|
|
369
|
-
var isCoreEventName = (eventName) => {
|
|
370
|
-
return import_dynamic_flow_client.eventNames.includes(eventName);
|
|
371
|
-
};
|
|
372
|
-
var customEventsToAnalytics = {
|
|
373
|
-
"Theme Required": false
|
|
374
|
-
// Excluded from analytics
|
|
375
|
-
};
|
|
330
|
+
// src/dynamicFlow/getMergedRenderers.tsx
|
|
331
|
+
var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
|
|
376
332
|
|
|
377
333
|
// ../renderers/src/AlertRenderer.tsx
|
|
378
334
|
var import_components = require("@transferwise/components");
|
|
@@ -911,6 +867,18 @@ var getPriority = (control, tags) => {
|
|
|
911
867
|
|
|
912
868
|
// ../renderers/src/components/FieldInput.tsx
|
|
913
869
|
var import_components8 = require("@transferwise/components");
|
|
870
|
+
var import_react4 = require("react");
|
|
871
|
+
|
|
872
|
+
// ../renderers/src/utils/scroll-to-if-not-visible.ts
|
|
873
|
+
var scrollToIfNotVisible = (ref) => {
|
|
874
|
+
const rect = ref == null ? void 0 : ref.getBoundingClientRect();
|
|
875
|
+
if (!ref || !rect) {
|
|
876
|
+
return;
|
|
877
|
+
}
|
|
878
|
+
if (rect.bottom > window.innerHeight || rect.top < 0) {
|
|
879
|
+
ref.scrollIntoView({ behavior: "smooth" });
|
|
880
|
+
}
|
|
881
|
+
};
|
|
914
882
|
|
|
915
883
|
// ../renderers/src/components/Help.tsx
|
|
916
884
|
var import_components7 = require("@transferwise/components");
|
|
@@ -954,28 +922,47 @@ function LabelContentWithHelp({ text, help }) {
|
|
|
954
922
|
|
|
955
923
|
// ../renderers/src/components/FieldInput.tsx
|
|
956
924
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
957
|
-
function FieldInput({
|
|
925
|
+
function FieldInput({
|
|
926
|
+
id,
|
|
927
|
+
children,
|
|
928
|
+
label,
|
|
929
|
+
validation,
|
|
930
|
+
description,
|
|
931
|
+
help,
|
|
932
|
+
loadingState = "idle",
|
|
933
|
+
inlineAlert
|
|
934
|
+
}) {
|
|
958
935
|
const labelContent = label && help ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LabelContentWithHelp, { text: label, help }) : label;
|
|
959
|
-
|
|
936
|
+
const message = validation == null ? void 0 : validation.message;
|
|
937
|
+
const ref = (0, import_react4.useRef)(null);
|
|
938
|
+
(0, import_react4.useEffect)(() => {
|
|
939
|
+
if (message) {
|
|
940
|
+
scrollToIfNotVisible(ref.current);
|
|
941
|
+
}
|
|
942
|
+
}, [message]);
|
|
943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
960
944
|
import_components8.Field,
|
|
961
945
|
{
|
|
962
946
|
id,
|
|
963
947
|
label: labelContent,
|
|
964
948
|
description,
|
|
965
|
-
message:
|
|
966
|
-
|
|
949
|
+
message: message != null ? message : inlineAlert == null ? void 0 : inlineAlert.content,
|
|
950
|
+
messageLoading: loadingState !== "idle",
|
|
951
|
+
sentiment: mapStatusToSentiment(validation, inlineAlert == null ? void 0 : inlineAlert.context),
|
|
967
952
|
children
|
|
968
953
|
}
|
|
969
|
-
);
|
|
954
|
+
) });
|
|
970
955
|
}
|
|
971
|
-
var mapStatusToSentiment = (validation) => {
|
|
972
|
-
if (validation) {
|
|
973
|
-
|
|
974
|
-
|
|
956
|
+
var mapStatusToSentiment = (validation, defaultContext) => {
|
|
957
|
+
if (validation == null ? void 0 : validation.message) {
|
|
958
|
+
switch (validation.status) {
|
|
959
|
+
case "valid":
|
|
960
|
+
return "positive";
|
|
961
|
+
case "invalid":
|
|
962
|
+
return "negative";
|
|
975
963
|
}
|
|
976
|
-
return "negative";
|
|
977
964
|
}
|
|
978
|
-
return
|
|
965
|
+
return defaultContext;
|
|
979
966
|
};
|
|
980
967
|
var FieldInput_default = FieldInput;
|
|
981
968
|
|
|
@@ -1043,7 +1030,19 @@ var CheckboxComponent = (props) => {
|
|
|
1043
1030
|
"value"
|
|
1044
1031
|
]);
|
|
1045
1032
|
const checkboxProps = __spreadProps(__spreadValues({}, rest), { label: title, secondary: description, checked: value });
|
|
1046
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1034
|
+
FieldInput_default,
|
|
1035
|
+
{
|
|
1036
|
+
id,
|
|
1037
|
+
label: "",
|
|
1038
|
+
description: "",
|
|
1039
|
+
validation: validationState,
|
|
1040
|
+
help,
|
|
1041
|
+
inlineAlert: rest.inlineAlert,
|
|
1042
|
+
loadingState: rest.fieldLoadingState,
|
|
1043
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components11.Checkbox, __spreadValues({ id }, checkboxProps))
|
|
1044
|
+
}
|
|
1045
|
+
);
|
|
1047
1046
|
};
|
|
1048
1047
|
var CheckboxItemComponent = (props) => {
|
|
1049
1048
|
const {
|
|
@@ -1098,7 +1097,7 @@ var SwitchItemComponent = (props) => {
|
|
|
1098
1097
|
);
|
|
1099
1098
|
};
|
|
1100
1099
|
var getInlineAlertOrValidation = (validationState, inlineAlert) => {
|
|
1101
|
-
if (validationState
|
|
1100
|
+
if ((validationState == null ? void 0 : validationState.status) === "invalid") {
|
|
1102
1101
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components11.ListItem.Prompt, { sentiment: "negative", children: validationState.message });
|
|
1103
1102
|
}
|
|
1104
1103
|
return getInlineAlert(inlineAlert);
|
|
@@ -1235,6 +1234,8 @@ var DateInputRenderer = {
|
|
|
1235
1234
|
label: title,
|
|
1236
1235
|
description,
|
|
1237
1236
|
validation: validationState,
|
|
1237
|
+
inlineAlert: props.inlineAlert,
|
|
1238
|
+
loadingState: props.fieldLoadingState,
|
|
1238
1239
|
help,
|
|
1239
1240
|
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(VariableDateInput_default, { control, inputProps })
|
|
1240
1241
|
}
|
|
@@ -1278,7 +1279,7 @@ var shouldUseAvatar = (control, tags) => {
|
|
|
1278
1279
|
|
|
1279
1280
|
// ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
|
|
1280
1281
|
var import_components15 = require("@transferwise/components");
|
|
1281
|
-
var
|
|
1282
|
+
var import_react5 = require("react");
|
|
1282
1283
|
var import_react_intl8 = require("react-intl");
|
|
1283
1284
|
|
|
1284
1285
|
// ../renderers/src/messages/filter.messages.ts
|
|
@@ -1424,7 +1425,7 @@ var UnfilteredDecisionList = (_a) => {
|
|
|
1424
1425
|
};
|
|
1425
1426
|
var FilteredDecisionList = (props) => {
|
|
1426
1427
|
const { formatMessage } = (0, import_react_intl8.useIntl)();
|
|
1427
|
-
const [query, setQuery] = (0,
|
|
1428
|
+
const [query, setQuery] = (0, import_react5.useState)("");
|
|
1428
1429
|
const { control, options, renderDecisionList: renderDecisionList2 } = props;
|
|
1429
1430
|
const filteredOptions = (query == null ? void 0 : query.length) > 0 ? filterAndSortDecisionOptions(options, query) : options;
|
|
1430
1431
|
const isGrouped = isGroupedDecision(options);
|
|
@@ -1541,7 +1542,7 @@ var external_confirmation_messages_default = (0, import_react_intl9.defineMessag
|
|
|
1541
1542
|
|
|
1542
1543
|
// ../renderers/src/ExternalConfirmationRenderer.tsx
|
|
1543
1544
|
var import_react_intl10 = require("react-intl");
|
|
1544
|
-
var
|
|
1545
|
+
var import_react6 = require("react");
|
|
1545
1546
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1546
1547
|
var ExternalConfirmationRenderer = {
|
|
1547
1548
|
canRenderType: "external-confirmation",
|
|
@@ -1554,7 +1555,7 @@ function ExternalConfirmationRendererComponent({
|
|
|
1554
1555
|
onCancel
|
|
1555
1556
|
}) {
|
|
1556
1557
|
const { formatMessage } = (0, import_react_intl10.useIntl)();
|
|
1557
|
-
(0,
|
|
1558
|
+
(0, import_react6.useEffect)(() => {
|
|
1558
1559
|
open();
|
|
1559
1560
|
}, []);
|
|
1560
1561
|
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
@@ -1668,7 +1669,7 @@ var HeadingRenderer_default = HeadingRenderer;
|
|
|
1668
1669
|
|
|
1669
1670
|
// ../renderers/src/ImageRenderer/UrlImage.tsx
|
|
1670
1671
|
var import_components21 = require("@transferwise/components");
|
|
1671
|
-
var
|
|
1672
|
+
var import_react7 = require("react");
|
|
1672
1673
|
|
|
1673
1674
|
// ../renderers/src/utils/api-utils.ts
|
|
1674
1675
|
function isRelativePath(url = "") {
|
|
@@ -1687,8 +1688,8 @@ function UrlImage({
|
|
|
1687
1688
|
uri,
|
|
1688
1689
|
httpClient
|
|
1689
1690
|
}) {
|
|
1690
|
-
const [imageSource, setImageSource] = (0,
|
|
1691
|
-
(0,
|
|
1691
|
+
const [imageSource, setImageSource] = (0, import_react7.useState)("");
|
|
1692
|
+
(0, import_react7.useEffect)(() => {
|
|
1692
1693
|
if (!uri.startsWith("urn:")) {
|
|
1693
1694
|
void getImageSource(httpClient, uri).then(setImageSource);
|
|
1694
1695
|
}
|
|
@@ -1751,7 +1752,7 @@ function UrnFlagImage({
|
|
|
1751
1752
|
|
|
1752
1753
|
// ../renderers/src/ImageRenderer/UrnIllustration.tsx
|
|
1753
1754
|
var import_art4 = require("@wise/art");
|
|
1754
|
-
var
|
|
1755
|
+
var import_react9 = require("react");
|
|
1755
1756
|
|
|
1756
1757
|
// ../renderers/src/ImageRenderer/isAnimated.ts
|
|
1757
1758
|
var isAnimated = (uri) => {
|
|
@@ -1761,9 +1762,9 @@ var isAnimated = (uri) => {
|
|
|
1761
1762
|
|
|
1762
1763
|
// ../renderers/src/ImageRenderer/SafeIllustration3D.tsx
|
|
1763
1764
|
var import_art3 = require("@wise/art");
|
|
1764
|
-
var
|
|
1765
|
+
var import_react8 = require("react");
|
|
1765
1766
|
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
1766
|
-
var Illustration3DErrorBoundary = class extends
|
|
1767
|
+
var Illustration3DErrorBoundary = class extends import_react8.Component {
|
|
1767
1768
|
constructor(props) {
|
|
1768
1769
|
super(props);
|
|
1769
1770
|
this.state = { hasError: false };
|
|
@@ -1801,7 +1802,7 @@ function UrnIllustration({
|
|
|
1801
1802
|
size,
|
|
1802
1803
|
uri
|
|
1803
1804
|
}) {
|
|
1804
|
-
const [has3DFailed, setHas3DFailed] = (0,
|
|
1805
|
+
const [has3DFailed, setHas3DFailed] = (0, import_react9.useState)(false);
|
|
1805
1806
|
const illustrationSize = getIllustrationSize(size);
|
|
1806
1807
|
const illustrationName = getIllustrationName(uri);
|
|
1807
1808
|
const illustration3DName = getIllustration3DName(uri);
|
|
@@ -1924,6 +1925,8 @@ var IntegerInputRenderer = {
|
|
|
1924
1925
|
label: title,
|
|
1925
1926
|
description,
|
|
1926
1927
|
validation: validationState,
|
|
1928
|
+
inlineAlert: props.inlineAlert,
|
|
1929
|
+
loadingState: props.fieldLoadingState,
|
|
1927
1930
|
help,
|
|
1928
1931
|
children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components23.InputGroup, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
1929
1932
|
import_components23.Input,
|
|
@@ -2139,7 +2142,7 @@ var mapAvatarMediaSize = (size) => {
|
|
|
2139
2142
|
|
|
2140
2143
|
// ../renderers/src/ModalLayoutRenderer.tsx
|
|
2141
2144
|
var import_components29 = require("@transferwise/components");
|
|
2142
|
-
var
|
|
2145
|
+
var import_react10 = require("react");
|
|
2143
2146
|
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
2144
2147
|
var ModalLayoutRenderer = {
|
|
2145
2148
|
canRenderType: "modal-layout",
|
|
@@ -2147,7 +2150,7 @@ var ModalLayoutRenderer = {
|
|
|
2147
2150
|
};
|
|
2148
2151
|
var ModalLayoutRenderer_default = ModalLayoutRenderer;
|
|
2149
2152
|
function DFModal({ content, margin, trigger }) {
|
|
2150
|
-
const [visible, setVisible] = (0,
|
|
2153
|
+
const [visible, setVisible] = (0, import_react10.useState)(false);
|
|
2151
2154
|
const { children, title } = content;
|
|
2152
2155
|
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: getMargin(margin), children: [
|
|
2153
2156
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components29.Button, { v2: true, priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
|
|
@@ -2177,7 +2180,7 @@ var ModalRenderer = {
|
|
|
2177
2180
|
|
|
2178
2181
|
// ../renderers/src/MoneyInputRenderer.tsx
|
|
2179
2182
|
var import_components31 = require("@transferwise/components");
|
|
2180
|
-
var
|
|
2183
|
+
var import_react11 = require("react");
|
|
2181
2184
|
var import_react_intl11 = require("react-intl");
|
|
2182
2185
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2183
2186
|
var groupingTags2 = Object.keys(group_messages_default).filter((key) => key !== "all");
|
|
@@ -2200,7 +2203,7 @@ function MoneyInputRendererComponent(props) {
|
|
|
2200
2203
|
onAmountChange,
|
|
2201
2204
|
onCurrencyChange
|
|
2202
2205
|
} = props;
|
|
2203
|
-
(0,
|
|
2206
|
+
(0, import_react11.useEffect)(() => {
|
|
2204
2207
|
if (!isValidIndex(selectedCurrencyIndex, currencies.length)) {
|
|
2205
2208
|
onCurrencyChange(0);
|
|
2206
2209
|
}
|
|
@@ -2342,7 +2345,7 @@ function InlineComponent(props) {
|
|
|
2342
2345
|
|
|
2343
2346
|
// ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
|
|
2344
2347
|
var import_components33 = require("@transferwise/components");
|
|
2345
|
-
var
|
|
2348
|
+
var import_react12 = require("react");
|
|
2346
2349
|
var import_react_intl13 = require("react-intl");
|
|
2347
2350
|
|
|
2348
2351
|
// ../renderers/src/messages/multi-select.messages.ts
|
|
@@ -2359,7 +2362,7 @@ var multi_select_messages_default = (0, import_react_intl12.defineMessages)({
|
|
|
2359
2362
|
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2360
2363
|
function DefaultComponent(props) {
|
|
2361
2364
|
const { formatMessage } = (0, import_react_intl13.useIntl)();
|
|
2362
|
-
const [stagedIndices, setStagedIndices] = (0,
|
|
2365
|
+
const [stagedIndices, setStagedIndices] = (0, import_react12.useState)();
|
|
2363
2366
|
const {
|
|
2364
2367
|
id,
|
|
2365
2368
|
autoComplete,
|
|
@@ -2517,6 +2520,7 @@ var MultiSelectInputRenderer = {
|
|
|
2517
2520
|
var import_components36 = require("@transferwise/components");
|
|
2518
2521
|
|
|
2519
2522
|
// ../renderers/src/components/UploadFieldInput.tsx
|
|
2523
|
+
var import_react13 = require("react");
|
|
2520
2524
|
var import_components35 = require("@transferwise/components");
|
|
2521
2525
|
var import_classnames4 = __toESM(require_classnames());
|
|
2522
2526
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
@@ -2530,9 +2534,17 @@ function UploadFieldInput({
|
|
|
2530
2534
|
}) {
|
|
2531
2535
|
const labelContent = label && help ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(LabelContentWithHelp, { text: label, help }) : label;
|
|
2532
2536
|
const descriptionId = description ? `${id}-description` : void 0;
|
|
2537
|
+
const message = validation == null ? void 0 : validation.message;
|
|
2538
|
+
const ref = (0, import_react13.useRef)(null);
|
|
2539
|
+
(0, import_react13.useEffect)(() => {
|
|
2540
|
+
if (message) {
|
|
2541
|
+
scrollToIfNotVisible(ref.current);
|
|
2542
|
+
}
|
|
2543
|
+
}, [message]);
|
|
2533
2544
|
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
2534
2545
|
"div",
|
|
2535
2546
|
{
|
|
2547
|
+
ref,
|
|
2536
2548
|
className: (0, import_classnames4.default)("form-group d-block", {
|
|
2537
2549
|
"has-error": (validation == null ? void 0 : validation.status) === "invalid"
|
|
2538
2550
|
}),
|
|
@@ -2657,6 +2669,8 @@ var NumberInputRenderer = {
|
|
|
2657
2669
|
label: title,
|
|
2658
2670
|
description,
|
|
2659
2671
|
validation: validationState,
|
|
2672
|
+
inlineAlert: props.inlineAlert,
|
|
2673
|
+
loadingState: props.fieldLoadingState,
|
|
2660
2674
|
help,
|
|
2661
2675
|
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_components37.InputGroup, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2662
2676
|
import_components37.Input,
|
|
@@ -2683,9 +2697,9 @@ var import_react_intl15 = require("react-intl");
|
|
|
2683
2697
|
|
|
2684
2698
|
// ../renderers/src/hooks/useSnackBarIfAvailable.ts
|
|
2685
2699
|
var import_components38 = require("@transferwise/components");
|
|
2686
|
-
var
|
|
2700
|
+
var import_react14 = require("react");
|
|
2687
2701
|
function useSnackBarIfAvailable() {
|
|
2688
|
-
const context = (0,
|
|
2702
|
+
const context = (0, import_react14.useContext)(import_components38.SnackbarContext);
|
|
2689
2703
|
return context ? context.createSnackbar : () => {
|
|
2690
2704
|
};
|
|
2691
2705
|
}
|
|
@@ -2779,7 +2793,7 @@ var ProgressRenderer = {
|
|
|
2779
2793
|
var import_components41 = require("@transferwise/components");
|
|
2780
2794
|
var import_icons = require("@transferwise/icons");
|
|
2781
2795
|
var import_classnames6 = __toESM(require_classnames());
|
|
2782
|
-
var
|
|
2796
|
+
var import_react15 = require("react");
|
|
2783
2797
|
var import_react_intl17 = require("react-intl");
|
|
2784
2798
|
|
|
2785
2799
|
// ../renderers/src/messages/repeatable.messages.ts
|
|
@@ -2828,7 +2842,7 @@ function Repeatable(props) {
|
|
|
2828
2842
|
onRemove
|
|
2829
2843
|
} = props;
|
|
2830
2844
|
const { formatMessage } = (0, import_react_intl17.useIntl)();
|
|
2831
|
-
const [openModalType, setOpenModalType] = (0,
|
|
2845
|
+
const [openModalType, setOpenModalType] = (0, import_react15.useState)(null);
|
|
2832
2846
|
const onAddItem = () => {
|
|
2833
2847
|
onAdd();
|
|
2834
2848
|
setOpenModalType("add");
|
|
@@ -3047,7 +3061,7 @@ var ReviewRenderer_default = ReviewRenderer2;
|
|
|
3047
3061
|
|
|
3048
3062
|
// ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
|
|
3049
3063
|
var import_components45 = require("@transferwise/components");
|
|
3050
|
-
var
|
|
3064
|
+
var import_react16 = require("react");
|
|
3051
3065
|
var import_react_intl22 = require("react-intl");
|
|
3052
3066
|
|
|
3053
3067
|
// ../renderers/src/messages/search.messages.ts
|
|
@@ -3109,7 +3123,7 @@ function BlockSearchRendererComponent({
|
|
|
3109
3123
|
trackEvent,
|
|
3110
3124
|
onChange
|
|
3111
3125
|
}) {
|
|
3112
|
-
const [hasSearched, setHasSearched] = (0,
|
|
3126
|
+
const [hasSearched, setHasSearched] = (0, import_react16.useState)(false);
|
|
3113
3127
|
const { formatMessage } = (0, import_react_intl22.useIntl)();
|
|
3114
3128
|
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: getMargin(margin), children: [
|
|
3115
3129
|
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_components45.InputGroup, { addonStart: { content: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_icons3.Search, { size: 24 }) }, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
@@ -3190,7 +3204,7 @@ var BlockSearchRendererComponent_default = BlockSearchRendererComponent;
|
|
|
3190
3204
|
// ../renderers/src/SearchRenderer/InlineSearchRendererComponent.tsx
|
|
3191
3205
|
var import_components46 = require("@transferwise/components");
|
|
3192
3206
|
var import_icons4 = require("@transferwise/icons");
|
|
3193
|
-
var
|
|
3207
|
+
var import_react17 = require("react");
|
|
3194
3208
|
var import_react_intl23 = require("react-intl");
|
|
3195
3209
|
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
3196
3210
|
function InlineSearchRenderer({
|
|
@@ -3203,7 +3217,7 @@ function InlineSearchRenderer({
|
|
|
3203
3217
|
title,
|
|
3204
3218
|
trackEvent
|
|
3205
3219
|
}) {
|
|
3206
|
-
const [hasSearched, setHasSearched] = (0,
|
|
3220
|
+
const [hasSearched, setHasSearched] = (0, import_react17.useState)(false);
|
|
3207
3221
|
const intl = (0, import_react_intl23.useIntl)();
|
|
3208
3222
|
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: getMargin(margin), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
3209
3223
|
import_components46.Typeahead,
|
|
@@ -3363,7 +3377,7 @@ function RadioInputRendererComponent(props) {
|
|
|
3363
3377
|
|
|
3364
3378
|
// ../renderers/src/SelectInputRenderer/TabInputRendererComponent.tsx
|
|
3365
3379
|
var import_components49 = require("@transferwise/components");
|
|
3366
|
-
var
|
|
3380
|
+
var import_react18 = require("react");
|
|
3367
3381
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
3368
3382
|
function TabInputRendererComponent(props) {
|
|
3369
3383
|
const {
|
|
@@ -3378,7 +3392,7 @@ function TabInputRendererComponent(props) {
|
|
|
3378
3392
|
validationState,
|
|
3379
3393
|
onSelect
|
|
3380
3394
|
} = props;
|
|
3381
|
-
(0,
|
|
3395
|
+
(0, import_react18.useEffect)(() => {
|
|
3382
3396
|
if (!isValidIndex2(selectedIndex, options.length)) {
|
|
3383
3397
|
onSelect(0);
|
|
3384
3398
|
}
|
|
@@ -3491,7 +3505,7 @@ function SelectInputRendererComponent(props) {
|
|
|
3491
3505
|
}
|
|
3492
3506
|
|
|
3493
3507
|
// ../renderers/src/SelectInputRenderer/SegmentedInputRendererComponent.tsx
|
|
3494
|
-
var
|
|
3508
|
+
var import_react19 = require("react");
|
|
3495
3509
|
var import_components51 = require("@transferwise/components");
|
|
3496
3510
|
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
3497
3511
|
function SegmentedInputRendererComponent(props) {
|
|
@@ -3506,7 +3520,7 @@ function SegmentedInputRendererComponent(props) {
|
|
|
3506
3520
|
validationState,
|
|
3507
3521
|
onSelect
|
|
3508
3522
|
} = props;
|
|
3509
|
-
(0,
|
|
3523
|
+
(0, import_react19.useEffect)(() => {
|
|
3510
3524
|
if (!isValidIndex3(selectedIndex, options.length)) {
|
|
3511
3525
|
onSelect(0);
|
|
3512
3526
|
}
|
|
@@ -3674,12 +3688,12 @@ var StatusListRenderer_default = StatusListRenderer;
|
|
|
3674
3688
|
|
|
3675
3689
|
// ../renderers/src/utils/useCustomTheme.ts
|
|
3676
3690
|
var import_components_theming = require("@wise/components-theming");
|
|
3677
|
-
var
|
|
3691
|
+
var import_react20 = require("react");
|
|
3678
3692
|
var ThemeRequiredEventName = "Theme Required";
|
|
3679
3693
|
var useCustomTheme = (theme, trackEvent) => {
|
|
3680
3694
|
const theming = (0, import_components_theming.useTheme)();
|
|
3681
|
-
const previousTheme = (0,
|
|
3682
|
-
(0,
|
|
3695
|
+
const previousTheme = (0, import_react20.useMemo)(() => theming.theme, []);
|
|
3696
|
+
(0, import_react20.useEffect)(() => {
|
|
3683
3697
|
theming.setTheme(theme);
|
|
3684
3698
|
trackEvent(ThemeRequiredEventName, { theme });
|
|
3685
3699
|
return theme !== previousTheme ? () => {
|
|
@@ -3692,7 +3706,7 @@ var useCustomTheme = (theme, trackEvent) => {
|
|
|
3692
3706
|
|
|
3693
3707
|
// ../renderers/src/step/StepFooter.tsx
|
|
3694
3708
|
var import_components54 = require("@transferwise/components");
|
|
3695
|
-
var
|
|
3709
|
+
var import_react21 = require("react");
|
|
3696
3710
|
var import_react_intl25 = require("react-intl");
|
|
3697
3711
|
|
|
3698
3712
|
// ../renderers/src/messages/step.messages.ts
|
|
@@ -3720,7 +3734,7 @@ var DefaultFooter = ({ footer }) => {
|
|
|
3720
3734
|
};
|
|
3721
3735
|
var FooterWithScrollButton = ({ footer }) => {
|
|
3722
3736
|
const { formatMessage } = (0, import_react_intl25.useIntl)();
|
|
3723
|
-
const endOfLayoutRef = (0,
|
|
3737
|
+
const endOfLayoutRef = (0, import_react21.useRef)(null);
|
|
3724
3738
|
const isElementVisible = useIsElementVisible(endOfLayoutRef);
|
|
3725
3739
|
const scrollButton = /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
3726
3740
|
import_components54.Button,
|
|
@@ -3749,8 +3763,8 @@ var FooterWithScrollButton = ({ footer }) => {
|
|
|
3749
3763
|
] });
|
|
3750
3764
|
};
|
|
3751
3765
|
var useIsElementVisible = (elementRef) => {
|
|
3752
|
-
const [isVisible, setIsVisible] = (0,
|
|
3753
|
-
(0,
|
|
3766
|
+
const [isVisible, setIsVisible] = (0, import_react21.useState)(false);
|
|
3767
|
+
(0, import_react21.useEffect)(() => {
|
|
3754
3768
|
const element = elementRef.current;
|
|
3755
3769
|
if (!element) return;
|
|
3756
3770
|
const observer = new IntersectionObserver(([entry]) => {
|
|
@@ -3870,9 +3884,11 @@ var getIconButtonPriority = (control) => {
|
|
|
3870
3884
|
|
|
3871
3885
|
// ../renderers/src/step/topbar/TopBar.tsx
|
|
3872
3886
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
3873
|
-
function TopBar({ back, toolbar }) {
|
|
3874
|
-
|
|
3875
|
-
|
|
3887
|
+
function TopBar({ back, toolbar, tags }) {
|
|
3888
|
+
const isBackAllowed = !(tags == null ? void 0 : tags.includes("non-dismissible"));
|
|
3889
|
+
const backCTA = isBackAllowed ? back : void 0;
|
|
3890
|
+
return backCTA || toolbar ? /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "d-flex m-b-2", children: [
|
|
3891
|
+
backCTA ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(BackButton, __spreadValues({}, backCTA)) : null,
|
|
3876
3892
|
toolbar ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Toolbar, __spreadValues({}, toolbar)) : null
|
|
3877
3893
|
] }) : null;
|
|
3878
3894
|
}
|
|
@@ -3888,7 +3904,7 @@ function SplashCelebrationStepRendererComponent(props) {
|
|
|
3888
3904
|
const { back, title, description, toolbar, children, footer, tags, trackEvent } = props;
|
|
3889
3905
|
useCustomTheme("forest-green", trackEvent);
|
|
3890
3906
|
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "splash-screen m-t-5", children: [
|
|
3891
|
-
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(TopBar, { back, toolbar }),
|
|
3907
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(TopBar, { back, toolbar, tags }),
|
|
3892
3908
|
title || description ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "m-b-4", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(StepHeader, { title, description, tags }) }) : void 0,
|
|
3893
3909
|
children,
|
|
3894
3910
|
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(StepFooter, { footer, tags })
|
|
@@ -3905,7 +3921,7 @@ var SplashStepRenderer = {
|
|
|
3905
3921
|
function SplashStepRendererComponent(props) {
|
|
3906
3922
|
const { back, title, description, toolbar, children, footer, tags } = props;
|
|
3907
3923
|
return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "splash-screen m-t-5", children: [
|
|
3908
|
-
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(TopBar, { back, toolbar }),
|
|
3924
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(TopBar, { back, toolbar, tags }),
|
|
3909
3925
|
title || description ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "m-b-4", children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(StepHeader, { title, description, tags }) }) : void 0,
|
|
3910
3926
|
children,
|
|
3911
3927
|
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(StepFooter, { footer, tags })
|
|
@@ -3922,7 +3938,7 @@ var StepRenderer = {
|
|
|
3922
3938
|
function StepRendererComponent(props) {
|
|
3923
3939
|
const { back, description, error, title, children, toolbar, footer, tags } = props;
|
|
3924
3940
|
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
|
|
3925
|
-
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(TopBar, { back, toolbar }),
|
|
3941
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(TopBar, { back, toolbar, tags }),
|
|
3926
3942
|
title || description ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "m-b-4", children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(StepHeader, { title, description, tags }) }) : void 0,
|
|
3927
3943
|
error ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_components58.Alert, { type: "negative", className: "m-b-2", message: error }) : null,
|
|
3928
3944
|
children,
|
|
@@ -3932,7 +3948,7 @@ function StepRendererComponent(props) {
|
|
|
3932
3948
|
|
|
3933
3949
|
// ../renderers/src/TabsRenderer.tsx
|
|
3934
3950
|
var import_components59 = require("@transferwise/components");
|
|
3935
|
-
var
|
|
3951
|
+
var import_react22 = require("react");
|
|
3936
3952
|
var import_jsx_runtime85 = require("react/jsx-runtime");
|
|
3937
3953
|
var TabsRenderer = {
|
|
3938
3954
|
canRenderType: "tabs",
|
|
@@ -3951,7 +3967,7 @@ var TabsRenderer = {
|
|
|
3951
3967
|
}
|
|
3952
3968
|
};
|
|
3953
3969
|
function TabsRendererComponent({ uid, margin, tabs }) {
|
|
3954
|
-
const [selectedIndex, setSelectedIndex] = (0,
|
|
3970
|
+
const [selectedIndex, setSelectedIndex] = (0, import_react22.useState)(0);
|
|
3955
3971
|
return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: getMargin(margin), children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
3956
3972
|
import_components59.Tabs,
|
|
3957
3973
|
{
|
|
@@ -3972,7 +3988,7 @@ function TabsRendererComponent({ uid, margin, tabs }) {
|
|
|
3972
3988
|
}
|
|
3973
3989
|
function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
|
|
3974
3990
|
var _a;
|
|
3975
|
-
const [selectedIndex, setSelectedIndex] = (0,
|
|
3991
|
+
const [selectedIndex, setSelectedIndex] = (0, import_react22.useState)(0);
|
|
3976
3992
|
return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: getMargin(margin), children: [
|
|
3977
3993
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
3978
3994
|
import_components59.SegmentedControl,
|
|
@@ -3994,7 +4010,7 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
|
|
|
3994
4010
|
}
|
|
3995
4011
|
function ChipsTabsRendererComponent({ margin, tabs }) {
|
|
3996
4012
|
var _a;
|
|
3997
|
-
const [selectedIndex, setSelectedIndex] = (0,
|
|
4013
|
+
const [selectedIndex, setSelectedIndex] = (0, import_react22.useState)(0);
|
|
3998
4014
|
return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: getMargin(margin), children: [
|
|
3999
4015
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "chips-container", children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
4000
4016
|
import_components59.Chips,
|
|
@@ -4102,6 +4118,8 @@ var TextInputRenderer = {
|
|
|
4102
4118
|
label: title,
|
|
4103
4119
|
description,
|
|
4104
4120
|
validation: validationState,
|
|
4121
|
+
inlineAlert: props.inlineAlert,
|
|
4122
|
+
loadingState: props.fieldLoadingState,
|
|
4105
4123
|
help,
|
|
4106
4124
|
children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_components61.InputGroup, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(VariableTextInput, __spreadValues({}, inputProps)) })
|
|
4107
4125
|
}
|
|
@@ -4231,7 +4249,7 @@ var LargeUploadRenderer = {
|
|
|
4231
4249
|
|
|
4232
4250
|
// ../renderers/src/UpsellRenderer.tsx
|
|
4233
4251
|
var import_components63 = require("@transferwise/components");
|
|
4234
|
-
var
|
|
4252
|
+
var import_react23 = require("react");
|
|
4235
4253
|
var import_jsx_runtime89 = require("react/jsx-runtime");
|
|
4236
4254
|
var UpsellRenderer = {
|
|
4237
4255
|
canRenderType: "upsell",
|
|
@@ -4239,7 +4257,7 @@ var UpsellRenderer = {
|
|
|
4239
4257
|
};
|
|
4240
4258
|
function UpsellRendererComponent(props) {
|
|
4241
4259
|
const { text, callToAction, media, margin, onDismiss } = props;
|
|
4242
|
-
const [isVisible, setIsVisible] = (0,
|
|
4260
|
+
const [isVisible, setIsVisible] = (0, import_react23.useState)(true);
|
|
4243
4261
|
return isVisible ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
|
|
4244
4262
|
import_components63.Nudge,
|
|
4245
4263
|
{
|
|
@@ -4380,8 +4398,104 @@ var InitialLoadingStateRenderer = {
|
|
|
4380
4398
|
)
|
|
4381
4399
|
};
|
|
4382
4400
|
|
|
4401
|
+
// src/dynamicFlow/DynamicFlowModal.tsx
|
|
4402
|
+
var import_dynamic_flow_client = require("@wise/dynamic-flow-client");
|
|
4403
|
+
var import_components66 = require("@transferwise/components");
|
|
4404
|
+
var import_jsx_runtime92 = require("react/jsx-runtime");
|
|
4405
|
+
function DynamicFlowModal(props) {
|
|
4406
|
+
const _a = props, { className = "" } = _a, rest = __objRest(_a, ["className"]);
|
|
4407
|
+
const dfProps = useWiseToCoreProps(rest);
|
|
4408
|
+
const df = (0, import_dynamic_flow_client.useDynamicFlowModal)(dfProps);
|
|
4409
|
+
return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
|
|
4410
|
+
import_components66.Modal,
|
|
4411
|
+
__spreadProps(__spreadValues({
|
|
4412
|
+
className: `dynamic-flow-modal ${className}`,
|
|
4413
|
+
disableDimmerClickToClose: true
|
|
4414
|
+
}, df.modal), {
|
|
4415
|
+
body: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "dynamic-flow-modal", children: df.modal.body })
|
|
4416
|
+
})
|
|
4417
|
+
);
|
|
4418
|
+
}
|
|
4419
|
+
|
|
4420
|
+
// src/dynamicFlow/getMergedRenderers.tsx
|
|
4421
|
+
var import_jsx_runtime93 = require("react/jsx-runtime");
|
|
4422
|
+
var wiseRenderers = getWiseRenderers();
|
|
4423
|
+
var getMergedRenderers = (props) => {
|
|
4424
|
+
var _d, _e;
|
|
4425
|
+
const _a = props, { initialAction, initialStep } = _a, restProps = __objRest(_a, ["initialAction", "initialStep"]);
|
|
4426
|
+
const subflowFeatures = __spreadProps(__spreadValues({}, props.features), { nativeBack: true });
|
|
4427
|
+
const subflowRenderer = (0, import_dynamic_flow_client2.getDynamicSubflowRenderer)({
|
|
4428
|
+
Component: (_b) => {
|
|
4429
|
+
var _c = _b, { presentation, initialRequest } = _c, rest = __objRest(_c, ["presentation", "initialRequest"]);
|
|
4430
|
+
const action = {
|
|
4431
|
+
url: initialRequest.url,
|
|
4432
|
+
method: initialRequest.method,
|
|
4433
|
+
data: initialRequest.body
|
|
4434
|
+
};
|
|
4435
|
+
return presentation.type === "push" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
4436
|
+
DynamicFlowModal,
|
|
4437
|
+
__spreadProps(__spreadValues(__spreadValues({}, restProps), rest), {
|
|
4438
|
+
features: subflowFeatures,
|
|
4439
|
+
initialAction: action
|
|
4440
|
+
})
|
|
4441
|
+
);
|
|
4442
|
+
}
|
|
4443
|
+
});
|
|
4444
|
+
const loadingStateRenderer = ((_d = props.features) == null ? void 0 : _d.initialLoader) ? [InitialLoadingStateRenderer] : [];
|
|
4445
|
+
return [...(_e = props.renderers) != null ? _e : [], subflowRenderer, ...loadingStateRenderer, ...wiseRenderers];
|
|
4446
|
+
};
|
|
4447
|
+
|
|
4448
|
+
// src/dynamicFlow/telemetry/getLogEvent.ts
|
|
4449
|
+
var getLogEvent = (onLog) => (level, message, extra) => {
|
|
4450
|
+
const extraWithVersion = __spreadProps(__spreadValues({}, extra), {
|
|
4451
|
+
dfWiseVersion: appVersion
|
|
4452
|
+
});
|
|
4453
|
+
if (level !== "info" && onLog) {
|
|
4454
|
+
if (onLog) {
|
|
4455
|
+
onLog(level, message, extraWithVersion);
|
|
4456
|
+
} else {
|
|
4457
|
+
logToRollbar(level, message, extraWithVersion);
|
|
4458
|
+
}
|
|
4459
|
+
}
|
|
4460
|
+
};
|
|
4461
|
+
var logToRollbar = (level, message, extra) => {
|
|
4462
|
+
try {
|
|
4463
|
+
const rollbar = typeof window.Rollbar !== "undefined" ? window.Rollbar : void 0;
|
|
4464
|
+
rollbar == null ? void 0 : rollbar[level](message, extra);
|
|
4465
|
+
} catch (error) {
|
|
4466
|
+
console.error("Failed to log to Rollbar", error);
|
|
4467
|
+
}
|
|
4468
|
+
};
|
|
4469
|
+
|
|
4470
|
+
// src/dynamicFlow/telemetry/getTrackEvent.ts
|
|
4471
|
+
var import_dynamic_flow_client3 = require("@wise/dynamic-flow-client");
|
|
4472
|
+
var prefix = "Dynamic Flow - ";
|
|
4473
|
+
var getTrackEvent = (onEvent, onAnalytics) => (name, properties) => {
|
|
4474
|
+
onEvent == null ? void 0 : onEvent(name, properties);
|
|
4475
|
+
if (includeInAnalytics(name)) {
|
|
4476
|
+
onAnalytics == null ? void 0 : onAnalytics(name, properties);
|
|
4477
|
+
}
|
|
4478
|
+
};
|
|
4479
|
+
var includeInAnalytics = (name) => {
|
|
4480
|
+
const eventName = name.startsWith(prefix) ? name.slice(prefix.length) : name;
|
|
4481
|
+
if (isCoreEventName(eventName)) {
|
|
4482
|
+
return true;
|
|
4483
|
+
}
|
|
4484
|
+
if (eventName in customEventsToAnalytics) {
|
|
4485
|
+
return customEventsToAnalytics[eventName];
|
|
4486
|
+
}
|
|
4487
|
+
return true;
|
|
4488
|
+
};
|
|
4489
|
+
var isCoreEventName = (eventName) => {
|
|
4490
|
+
return import_dynamic_flow_client3.eventNames.includes(eventName);
|
|
4491
|
+
};
|
|
4492
|
+
var customEventsToAnalytics = {
|
|
4493
|
+
"Theme Required": false
|
|
4494
|
+
// Excluded from analytics
|
|
4495
|
+
};
|
|
4496
|
+
|
|
4383
4497
|
// src/dynamicFlow/useOnCopy.tsx
|
|
4384
|
-
var
|
|
4498
|
+
var import_react24 = require("react");
|
|
4385
4499
|
var import_react_intl29 = require("react-intl");
|
|
4386
4500
|
|
|
4387
4501
|
// src/dynamicFlow/messages.ts
|
|
@@ -4403,7 +4517,7 @@ var messages_default = (0, import_react_intl28.defineMessages)({
|
|
|
4403
4517
|
var useOnCopy = () => {
|
|
4404
4518
|
const { formatMessage } = (0, import_react_intl29.useIntl)();
|
|
4405
4519
|
const createSnackBar = useSnackBarIfAvailable();
|
|
4406
|
-
return (0,
|
|
4520
|
+
return (0, import_react24.useCallback)(
|
|
4407
4521
|
(copiedContent) => {
|
|
4408
4522
|
if (copiedContent) {
|
|
4409
4523
|
createSnackBar({ text: formatMessage(messages_default.copied) });
|
|
@@ -4416,11 +4530,11 @@ var useOnCopy = () => {
|
|
|
4416
4530
|
};
|
|
4417
4531
|
|
|
4418
4532
|
// src/dynamicFlow/useWiseHttpClient.tsx
|
|
4419
|
-
var
|
|
4533
|
+
var import_react25 = require("react");
|
|
4420
4534
|
var import_react_intl30 = require("react-intl");
|
|
4421
4535
|
var useWiseHttpClient = (httpClient) => {
|
|
4422
4536
|
const { locale } = (0, import_react_intl30.useIntl)();
|
|
4423
|
-
return (0,
|
|
4537
|
+
return (0, import_react25.useCallback)(
|
|
4424
4538
|
async (input, init = {}) => {
|
|
4425
4539
|
const headers = new Headers(init.headers);
|
|
4426
4540
|
headers.set("accept-language", locale);
|
|
@@ -4441,54 +4555,10 @@ var handleRejection = (error) => {
|
|
|
4441
4555
|
throw error;
|
|
4442
4556
|
};
|
|
4443
4557
|
|
|
4444
|
-
// src/dynamicFlow/
|
|
4445
|
-
var
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
|
|
4449
|
-
var import_components66 = require("@transferwise/components");
|
|
4450
|
-
var import_jsx_runtime92 = require("react/jsx-runtime");
|
|
4451
|
-
function DynamicFlowModal(props) {
|
|
4452
|
-
const _a = props, { className = "" } = _a, rest = __objRest(_a, ["className"]);
|
|
4453
|
-
const dfProps = useWiseToCoreProps(rest);
|
|
4454
|
-
const df = (0, import_dynamic_flow_client2.useDynamicFlowModal)(dfProps);
|
|
4455
|
-
return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
|
|
4456
|
-
import_components66.Modal,
|
|
4457
|
-
__spreadProps(__spreadValues({
|
|
4458
|
-
className: `dynamic-flow-modal ${className}`,
|
|
4459
|
-
disableDimmerClickToClose: true
|
|
4460
|
-
}, df.modal), {
|
|
4461
|
-
body: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "dynamic-flow-modal", children: df.modal.body })
|
|
4462
|
-
})
|
|
4463
|
-
);
|
|
4464
|
-
}
|
|
4465
|
-
|
|
4466
|
-
// src/dynamicFlow/getMergedRenderers.tsx
|
|
4467
|
-
var import_jsx_runtime93 = require("react/jsx-runtime");
|
|
4468
|
-
var wiseRenderers = getWiseRenderers();
|
|
4469
|
-
var getMergedRenderers = (props) => {
|
|
4470
|
-
var _d, _e;
|
|
4471
|
-
const _a = props, { initialAction, initialStep } = _a, restProps = __objRest(_a, ["initialAction", "initialStep"]);
|
|
4472
|
-
const subflowFeatures = __spreadProps(__spreadValues({}, props.features), { nativeBack: true });
|
|
4473
|
-
const subflowRenderer = (0, import_dynamic_flow_client3.getDynamicSubflowRenderer)({
|
|
4474
|
-
Component: (_b) => {
|
|
4475
|
-
var _c = _b, { presentation, initialRequest } = _c, rest = __objRest(_c, ["presentation", "initialRequest"]);
|
|
4476
|
-
const action = {
|
|
4477
|
-
url: initialRequest.url,
|
|
4478
|
-
method: initialRequest.method,
|
|
4479
|
-
data: initialRequest.body
|
|
4480
|
-
};
|
|
4481
|
-
return presentation.type === "push" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
4482
|
-
DynamicFlowModal,
|
|
4483
|
-
__spreadProps(__spreadValues(__spreadValues({}, restProps), rest), {
|
|
4484
|
-
features: subflowFeatures,
|
|
4485
|
-
initialAction: action
|
|
4486
|
-
})
|
|
4487
|
-
);
|
|
4488
|
-
}
|
|
4489
|
-
});
|
|
4490
|
-
const loadingStateRenderer = ((_d = props.features) == null ? void 0 : _d.initialLoader) ? [InitialLoadingStateRenderer] : [];
|
|
4491
|
-
return [...(_e = props.renderers) != null ? _e : [], subflowRenderer, ...loadingStateRenderer, ...wiseRenderers];
|
|
4558
|
+
// src/dynamicFlow/useCreateSnackBar.tsx
|
|
4559
|
+
var useCreateSnackBar = () => {
|
|
4560
|
+
const createSnackBar = useSnackBarIfAvailable();
|
|
4561
|
+
return createSnackBar;
|
|
4492
4562
|
};
|
|
4493
4563
|
|
|
4494
4564
|
// src/dynamicFlow/useWiseToCoreProps.tsx
|
|
@@ -4501,12 +4571,14 @@ var useWiseToCoreProps = (props) => {
|
|
|
4501
4571
|
onAnalytics,
|
|
4502
4572
|
onEvent,
|
|
4503
4573
|
onLink = openLinkInNewTab,
|
|
4574
|
+
onNotification,
|
|
4504
4575
|
onLog
|
|
4505
4576
|
} = props;
|
|
4506
4577
|
const httpClient = useWiseHttpClient(customFetch);
|
|
4507
|
-
const mergedRenderers = (0,
|
|
4508
|
-
const
|
|
4509
|
-
const
|
|
4578
|
+
const mergedRenderers = (0, import_react26.useMemo)(() => getMergedRenderers(props), [renderers]);
|
|
4579
|
+
const createSnackBar = useCreateSnackBar();
|
|
4580
|
+
const logEvent = (0, import_react26.useMemo)(() => getLogEvent(onLog), [onLog]);
|
|
4581
|
+
const trackEvent = (0, import_react26.useMemo)(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
|
|
4510
4582
|
const onCopy = useOnCopy();
|
|
4511
4583
|
return __spreadProps(__spreadValues({}, props), {
|
|
4512
4584
|
httpClient,
|
|
@@ -4515,6 +4587,7 @@ var useWiseToCoreProps = (props) => {
|
|
|
4515
4587
|
onEvent: trackEvent,
|
|
4516
4588
|
onLog: logEvent,
|
|
4517
4589
|
onCopy,
|
|
4590
|
+
onNotification: onNotification != null ? onNotification : createSnackBar,
|
|
4518
4591
|
onLink
|
|
4519
4592
|
});
|
|
4520
4593
|
};
|
|
@@ -4550,14 +4623,14 @@ function DynamicFlow(props) {
|
|
|
4550
4623
|
}
|
|
4551
4624
|
|
|
4552
4625
|
// src/dynamicFlow/DynamicFlowWithRef.tsx
|
|
4553
|
-
var
|
|
4626
|
+
var import_react27 = require("react");
|
|
4554
4627
|
var import_dynamic_flow_client5 = require("@wise/dynamic-flow-client");
|
|
4555
4628
|
var import_jsx_runtime95 = require("react/jsx-runtime");
|
|
4556
|
-
var DynamicFlowWithRef = (0,
|
|
4629
|
+
var DynamicFlowWithRef = (0, import_react27.forwardRef)(function DynamicFlowWithRef2(props, ref) {
|
|
4557
4630
|
const { className = "" } = props;
|
|
4558
4631
|
const dfProps = useWiseToCoreProps(props);
|
|
4559
4632
|
const df = (0, import_dynamic_flow_client5.useDynamicFlow)(dfProps);
|
|
4560
|
-
(0,
|
|
4633
|
+
(0, import_react27.useImperativeHandle)(
|
|
4561
4634
|
ref,
|
|
4562
4635
|
() => ({
|
|
4563
4636
|
getValue: async () => {
|