@wise/dynamic-flow-client-internal 4.7.0-experimental-33a9fbb → 4.7.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "df.wise.ArraySchema.addItem": "Uložit",
3
- "df.wise.ArraySchema.addItemTitle": "Add Item",
3
+ "df.wise.ArraySchema.addItemTitle": "Přidat položku",
4
4
  "df.wise.ArraySchema.editItem": "Uložit",
5
5
  "df.wise.ArraySchema.maxItemsError": "Přidejte {maxItems} nebo méně.",
6
6
  "df.wise.ArraySchema.minItemsError": "Přidejte alespoň {minItems}.",
@@ -20,9 +20,9 @@
20
20
  "df.wise.ErrorBoundary.errorAlert": "Něco se pokazilo.",
21
21
  "df.wise.ErrorBoundary.retry": "Zkusit znovu",
22
22
  "df.wise.ExternalConfirmation.cancel": "Zrušit",
23
- "df.wise.ExternalConfirmation.description": "Please confirm you want to open **{origin}** in a new browser tab.",
24
- "df.wise.ExternalConfirmation.open": "Open in new tab",
25
- "df.wise.ExternalConfirmation.title": "Please confirm",
23
+ "df.wise.ExternalConfirmation.description": "Potvrďte, že chcete otevřít **{origin}** v nové kartě prohlížeče.",
24
+ "df.wise.ExternalConfirmation.open": "Otevřít v nové kartě",
25
+ "df.wise.ExternalConfirmation.title": "Potvrďte",
26
26
  "df.wise.Help.ariaLabel": "Pro více informací klikněte sem.",
27
27
  "df.wise.MultiSelect.summary": "{first} a {count} více",
28
28
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Pardon, tento soubor je příliš velký. Nahrajte prosím menší soubor.",
@@ -665,7 +665,7 @@ var translations = languages.reduce(
665
665
  var i18n_default = translations;
666
666
 
667
667
  // src/dynamicFlow/DynamicFlow.tsx
668
- var import_react14 = require("react");
668
+ var import_react12 = require("react");
669
669
  var import_react_intl16 = require("react-intl");
670
670
  var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
671
671
 
@@ -3162,33 +3162,52 @@ var getWiseRenderers = () => [
3162
3162
  StepRenderer
3163
3163
  ];
3164
3164
 
3165
- // src/dynamicFlow/filters/useFilteredOnEvent.ts
3166
- var import_react12 = require("react");
3167
- var import_components_theming2 = require("@wise/components-theming");
3168
- var useFilteredOnEvent = (onEvent, onAnalytics, onThemeChange) => (0, import_react12.useMemo)(
3169
- () => (name, properties) => {
3170
- onEvent == null ? void 0 : onEvent(name, properties);
3171
- if (name.includes(ThemeRequiredEventName)) {
3172
- const { theme } = properties != null ? properties : { theme: "personal" };
3173
- if (theme && (0, import_components_theming2.isThemeModern)(theme)) {
3174
- onThemeChange == null ? void 0 : onThemeChange(theme);
3175
- }
3165
+ // src/dynamicFlow/telemetry/app-version.ts
3166
+ var appVersion = "4.7.1";
3167
+
3168
+ // src/dynamicFlow/telemetry/getLogEvent.ts
3169
+ var getLogEvent = (onLog) => (level, message, extra) => {
3170
+ const extraWithVersion = __spreadProps(__spreadValues({}, extra), {
3171
+ dfWiseVersion: appVersion
3172
+ });
3173
+ if (level !== "info" && onLog) {
3174
+ if (onLog) {
3175
+ onLog(level, message, extraWithVersion);
3176
3176
  } else {
3177
- onAnalytics == null ? void 0 : onAnalytics(name, properties);
3177
+ logToRollbar(level, message, extraWithVersion);
3178
3178
  }
3179
- },
3180
- [onEvent, onAnalytics, onThemeChange]
3181
- );
3179
+ }
3180
+ };
3181
+ var logToRollbar = (level, message, extra) => {
3182
+ try {
3183
+ const rollbar = typeof window.Rollbar !== "undefined" ? window.Rollbar : void 0;
3184
+ rollbar == null ? void 0 : rollbar[level](message, extra);
3185
+ } catch (error) {
3186
+ console.error("Failed to log to Rollbar", error);
3187
+ }
3188
+ };
3182
3189
 
3183
- // src/dynamicFlow/filters/useFilteredOnLog.ts
3184
- var import_react13 = require("react");
3185
- var useFilteredOnLog = (onLog) => (0, import_react13.useMemo)(() => {
3186
- return (level, message, extra) => {
3187
- if (level !== "info") {
3188
- onLog == null ? void 0 : onLog(level, message, extra);
3190
+ // src/dynamicFlow/telemetry/getTrackEvent.ts
3191
+ var import_components_theming2 = require("@wise/components-theming");
3192
+ var getTrackEvent = (onEvent, onAnalytics, onThemeChange, onLog) => (name, properties) => {
3193
+ onEvent == null ? void 0 : onEvent(name, properties);
3194
+ if (name.includes(ThemeRequiredEventName)) {
3195
+ const { theme } = properties != null ? properties : { theme: "personal" };
3196
+ if (theme && (0, import_components_theming2.isThemeModern)(theme)) {
3197
+ onThemeChange == null ? void 0 : onThemeChange(theme);
3189
3198
  }
3190
- };
3191
- }, [onLog]);
3199
+ } else {
3200
+ onAnalytics == null ? void 0 : onAnalytics(name, properties);
3201
+ }
3202
+ if (name !== "DynamicFlow - Initiated") {
3203
+ if ((properties == null ? void 0 : properties.stepId) === void 0) {
3204
+ onLog == null ? void 0 : onLog("warning", "DynamicFlow warning. `stepId` is not defined in the event properties", {
3205
+ eventName: name,
3206
+ properties: Object.keys(properties != null ? properties : {})
3207
+ });
3208
+ }
3209
+ }
3210
+ };
3192
3211
 
3193
3212
  // src/dynamicFlow/DynamicFlow.tsx
3194
3213
  var import_jsx_runtime57 = require("react/jsx-runtime");
@@ -3209,19 +3228,22 @@ function DynamicFlowRevamp(props) {
3209
3228
  onThemeChange
3210
3229
  } = props;
3211
3230
  const httpClient = useWiseHttpClient(customFetch);
3212
- const mergedRenderers = (0, import_react14.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3213
- const filteredOnLog = useFilteredOnLog(onLog);
3214
- const filteredOnEvent = useFilteredOnEvent(onEvent, onAnalytics, onThemeChange);
3231
+ const mergedRenderers = (0, import_react12.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3232
+ const logEvent = (0, import_react12.useMemo)(() => getLogEvent(onLog), [onLog]);
3233
+ const trackEvent = (0, import_react12.useMemo)(
3234
+ () => getTrackEvent(onEvent, onAnalytics, onThemeChange, logEvent),
3235
+ [onEvent, onAnalytics, onThemeChange, logEvent]
3236
+ );
3215
3237
  const coreProps = __spreadProps(__spreadValues({}, props), {
3216
3238
  httpClient,
3217
3239
  renderers: mergedRenderers,
3218
- onEvent: filteredOnEvent,
3219
- onLink,
3220
- onLog: filteredOnLog
3240
+ onEvent: trackEvent,
3241
+ onLog: logEvent,
3242
+ onLink
3221
3243
  });
3222
3244
  return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_dynamic_flow_client2.DynamicFlowCoreRevamp, __spreadValues({}, coreProps));
3223
3245
  }
3224
- var DynamicForm = (0, import_react14.forwardRef)(function DynamicForm2(props, ref) {
3246
+ var DynamicForm = (0, import_react12.forwardRef)(function DynamicForm2(props, ref) {
3225
3247
  const {
3226
3248
  customFetch = globalThis.fetch,
3227
3249
  renderers,
@@ -3232,21 +3254,24 @@ var DynamicForm = (0, import_react14.forwardRef)(function DynamicForm2(props, re
3232
3254
  onThemeChange
3233
3255
  } = props;
3234
3256
  const httpClient = useWiseHttpClient(customFetch);
3235
- const mergedRenderers = (0, import_react14.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3236
- const filteredOnEvent = useFilteredOnEvent(onEvent, onAnalytics, onThemeChange);
3237
- const filteredOnLog = useFilteredOnLog(onLog);
3257
+ const mergedRenderers = (0, import_react12.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3258
+ const logEvent = (0, import_react12.useMemo)(() => getLogEvent(onLog), [onLog]);
3259
+ const trackEvent = (0, import_react12.useMemo)(
3260
+ () => getTrackEvent(onEvent, onAnalytics, onThemeChange, logEvent),
3261
+ [onEvent, onAnalytics, onThemeChange, logEvent]
3262
+ );
3238
3263
  const coreProps = __spreadProps(__spreadValues({}, props), {
3239
3264
  httpClient,
3240
3265
  renderers: mergedRenderers,
3241
- onEvent: filteredOnEvent,
3242
- onLink,
3243
- onLog: filteredOnLog
3266
+ onEvent: trackEvent,
3267
+ onLog: logEvent,
3268
+ onLink
3244
3269
  });
3245
3270
  return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_dynamic_flow_client2.DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref }));
3246
3271
  });
3247
3272
  var useWiseHttpClient = (httpClient) => {
3248
3273
  const { locale } = (0, import_react_intl16.useIntl)();
3249
- return (0, import_react14.useCallback)(
3274
+ return (0, import_react12.useCallback)(
3250
3275
  async (input, init = {}) => {
3251
3276
  const headers = new Headers(init.headers);
3252
3277
  headers.set("accept-language", locale);
@@ -627,7 +627,7 @@ var translations = languages.reduce(
627
627
  var i18n_default = translations;
628
628
 
629
629
  // src/dynamicFlow/DynamicFlow.tsx
630
- import { forwardRef, useCallback, useMemo as useMemo4 } from "react";
630
+ import { forwardRef, useCallback, useMemo as useMemo2 } from "react";
631
631
  import { useIntl as useIntl9 } from "react-intl";
632
632
  import {
633
633
  DynamicFlow as DynamicFlowCoreLegacy,
@@ -3138,33 +3138,52 @@ var getWiseRenderers = () => [
3138
3138
  StepRenderer
3139
3139
  ];
3140
3140
 
3141
- // src/dynamicFlow/filters/useFilteredOnEvent.ts
3142
- import { useMemo as useMemo2 } from "react";
3143
- import { isThemeModern } from "@wise/components-theming";
3144
- var useFilteredOnEvent = (onEvent, onAnalytics, onThemeChange) => useMemo2(
3145
- () => (name, properties) => {
3146
- onEvent == null ? void 0 : onEvent(name, properties);
3147
- if (name.includes(ThemeRequiredEventName)) {
3148
- const { theme } = properties != null ? properties : { theme: "personal" };
3149
- if (theme && isThemeModern(theme)) {
3150
- onThemeChange == null ? void 0 : onThemeChange(theme);
3151
- }
3141
+ // src/dynamicFlow/telemetry/app-version.ts
3142
+ var appVersion = "4.7.1";
3143
+
3144
+ // src/dynamicFlow/telemetry/getLogEvent.ts
3145
+ var getLogEvent = (onLog) => (level, message, extra) => {
3146
+ const extraWithVersion = __spreadProps(__spreadValues({}, extra), {
3147
+ dfWiseVersion: appVersion
3148
+ });
3149
+ if (level !== "info" && onLog) {
3150
+ if (onLog) {
3151
+ onLog(level, message, extraWithVersion);
3152
3152
  } else {
3153
- onAnalytics == null ? void 0 : onAnalytics(name, properties);
3153
+ logToRollbar(level, message, extraWithVersion);
3154
3154
  }
3155
- },
3156
- [onEvent, onAnalytics, onThemeChange]
3157
- );
3155
+ }
3156
+ };
3157
+ var logToRollbar = (level, message, extra) => {
3158
+ try {
3159
+ const rollbar = typeof window.Rollbar !== "undefined" ? window.Rollbar : void 0;
3160
+ rollbar == null ? void 0 : rollbar[level](message, extra);
3161
+ } catch (error) {
3162
+ console.error("Failed to log to Rollbar", error);
3163
+ }
3164
+ };
3158
3165
 
3159
- // src/dynamicFlow/filters/useFilteredOnLog.ts
3160
- import { useMemo as useMemo3 } from "react";
3161
- var useFilteredOnLog = (onLog) => useMemo3(() => {
3162
- return (level, message, extra) => {
3163
- if (level !== "info") {
3164
- onLog == null ? void 0 : onLog(level, message, extra);
3166
+ // src/dynamicFlow/telemetry/getTrackEvent.ts
3167
+ import { isThemeModern } from "@wise/components-theming";
3168
+ var getTrackEvent = (onEvent, onAnalytics, onThemeChange, onLog) => (name, properties) => {
3169
+ onEvent == null ? void 0 : onEvent(name, properties);
3170
+ if (name.includes(ThemeRequiredEventName)) {
3171
+ const { theme } = properties != null ? properties : { theme: "personal" };
3172
+ if (theme && isThemeModern(theme)) {
3173
+ onThemeChange == null ? void 0 : onThemeChange(theme);
3165
3174
  }
3166
- };
3167
- }, [onLog]);
3175
+ } else {
3176
+ onAnalytics == null ? void 0 : onAnalytics(name, properties);
3177
+ }
3178
+ if (name !== "DynamicFlow - Initiated") {
3179
+ if ((properties == null ? void 0 : properties.stepId) === void 0) {
3180
+ onLog == null ? void 0 : onLog("warning", "DynamicFlow warning. `stepId` is not defined in the event properties", {
3181
+ eventName: name,
3182
+ properties: Object.keys(properties != null ? properties : {})
3183
+ });
3184
+ }
3185
+ }
3186
+ };
3168
3187
 
3169
3188
  // src/dynamicFlow/DynamicFlow.tsx
3170
3189
  import { jsx as jsx57 } from "react/jsx-runtime";
@@ -3185,15 +3204,18 @@ function DynamicFlowRevamp(props) {
3185
3204
  onThemeChange
3186
3205
  } = props;
3187
3206
  const httpClient = useWiseHttpClient(customFetch);
3188
- const mergedRenderers = useMemo4(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3189
- const filteredOnLog = useFilteredOnLog(onLog);
3190
- const filteredOnEvent = useFilteredOnEvent(onEvent, onAnalytics, onThemeChange);
3207
+ const mergedRenderers = useMemo2(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3208
+ const logEvent = useMemo2(() => getLogEvent(onLog), [onLog]);
3209
+ const trackEvent = useMemo2(
3210
+ () => getTrackEvent(onEvent, onAnalytics, onThemeChange, logEvent),
3211
+ [onEvent, onAnalytics, onThemeChange, logEvent]
3212
+ );
3191
3213
  const coreProps = __spreadProps(__spreadValues({}, props), {
3192
3214
  httpClient,
3193
3215
  renderers: mergedRenderers,
3194
- onEvent: filteredOnEvent,
3195
- onLink,
3196
- onLog: filteredOnLog
3216
+ onEvent: trackEvent,
3217
+ onLog: logEvent,
3218
+ onLink
3197
3219
  });
3198
3220
  return /* @__PURE__ */ jsx57(DynamicFlowCoreRevamp, __spreadValues({}, coreProps));
3199
3221
  }
@@ -3208,15 +3230,18 @@ var DynamicForm = forwardRef(function DynamicForm2(props, ref) {
3208
3230
  onThemeChange
3209
3231
  } = props;
3210
3232
  const httpClient = useWiseHttpClient(customFetch);
3211
- const mergedRenderers = useMemo4(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3212
- const filteredOnEvent = useFilteredOnEvent(onEvent, onAnalytics, onThemeChange);
3213
- const filteredOnLog = useFilteredOnLog(onLog);
3233
+ const mergedRenderers = useMemo2(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
3234
+ const logEvent = useMemo2(() => getLogEvent(onLog), [onLog]);
3235
+ const trackEvent = useMemo2(
3236
+ () => getTrackEvent(onEvent, onAnalytics, onThemeChange, logEvent),
3237
+ [onEvent, onAnalytics, onThemeChange, logEvent]
3238
+ );
3214
3239
  const coreProps = __spreadProps(__spreadValues({}, props), {
3215
3240
  httpClient,
3216
3241
  renderers: mergedRenderers,
3217
- onEvent: filteredOnEvent,
3218
- onLink,
3219
- onLog: filteredOnLog
3242
+ onEvent: trackEvent,
3243
+ onLog: logEvent,
3244
+ onLink
3220
3245
  });
3221
3246
  return /* @__PURE__ */ jsx57(DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref }));
3222
3247
  });
@@ -1,4 +1,4 @@
1
- import type { DynamicFlowProps as DynamicFlowCoreLegacyProps, DynamicFlowRevampProps as DynamicFlowCoreRevampProps, DynamicFlowRevampPropsWithInitialAction, DynamicFlowRevampPropsWithInitialStep, DynamicFormController, DynamicFlowLegacyPropsWithInitialAction, DynamicFlowLegacyPropsWithInitialStep } from '@wise/dynamic-flow-client';
1
+ import type { DynamicFlowProps as DynamicFlowCoreLegacyProps, DynamicFlowRevampProps as DynamicFlowCoreRevampProps, DynamicFlowLegacyPropsWithInitialAction, DynamicFlowLegacyPropsWithInitialStep, DynamicFlowRevampPropsWithInitialAction, DynamicFlowRevampPropsWithInitialStep, DynamicFormController } from '@wise/dynamic-flow-client';
2
2
  import { Theming } from '@wise/components-theming';
3
3
  /**
4
4
  * @deprecated Use DynamicFlowRevampProps instead. See https://transferwise.atlassian.net/wiki/x/B0FJwg
@@ -0,0 +1 @@
1
+ export declare const appVersion: string;
@@ -0,0 +1,14 @@
1
+ import { DynamicFlowRevampProps } from '@wise/dynamic-flow-client';
2
+ declare global {
3
+ interface Window {
4
+ Rollbar?: Rollbar;
5
+ }
6
+ }
7
+ type Rollbar = {
8
+ info: (message: Error | string, extra: unknown) => void;
9
+ warning: (message: Error | string, extra: unknown) => void;
10
+ error: (message: Error | string, extra: unknown) => void;
11
+ };
12
+ type OnLog = DynamicFlowRevampProps['onLog'];
13
+ export declare const getLogEvent: (onLog: OnLog) => OnLog;
14
+ export {};
@@ -0,0 +1,6 @@
1
+ import { DynamicFlowRevampProps } from '@wise/dynamic-flow-client';
2
+ import { OnThemeChange } from '../DynamicFlow';
3
+ type OnEvent = DynamicFlowRevampProps['onEvent'];
4
+ type OnLog = DynamicFlowRevampProps['onLog'];
5
+ export declare const getTrackEvent: (onEvent: OnEvent, onAnalytics: OnEvent, onThemeChange: OnThemeChange | undefined, onLog: OnLog) => OnEvent;
6
+ export {};
@@ -0,0 +1,2 @@
1
+ export { getLogEvent } from './getLogEvent';
2
+ export { getTrackEvent } from './getTrackEvent';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client-internal",
3
- "version": "4.7.0-experimental-33a9fbb",
3
+ "version": "4.7.1",
4
4
  "description": "Dynamic Flow web client for Wise",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.js",
@@ -13,15 +13,10 @@
13
13
  "exports": {
14
14
  ".": {
15
15
  "types": "./build/types/index.d.ts",
16
- "import": "./build/index.mjs",
17
- "require": "./build/index.js"
16
+ "import": "./build/main.mjs",
17
+ "require": "./build/main.js"
18
18
  },
19
- "./build/main.css": "./build/main.css",
20
- "./renderers": {
21
- "types": "./build/types/renderers.d.ts",
22
- "import": "./build/renderers.mjs",
23
- "require": "./build/renderers.js"
24
- }
19
+ "./build/main.css": "./build/main.css"
25
20
  },
26
21
  "sideEffects": [
27
22
  "*.css"
@@ -40,18 +35,18 @@
40
35
  "@babel/plugin-transform-react-jsx": "7.25.9",
41
36
  "@babel/preset-env": "7.26.9",
42
37
  "@babel/preset-react": "7.26.3",
43
- "@babel/preset-typescript": "7.26.0",
38
+ "@babel/preset-typescript": "7.27.0",
44
39
  "@chromatic-com/storybook": "3.2.6",
45
- "@formatjs/cli": "^6.6.2",
46
- "@storybook/addon-a11y": "^8.6.8",
47
- "@storybook/addon-actions": "^8.6.8",
48
- "@storybook/addon-essentials": "^8.6.8",
49
- "@storybook/addon-interactions": "^8.6.8",
50
- "@storybook/addon-links": "^8.6.8",
40
+ "@formatjs/cli": "^6.6.3",
41
+ "@storybook/addon-a11y": "^8.6.11",
42
+ "@storybook/addon-actions": "^8.6.11",
43
+ "@storybook/addon-essentials": "^8.6.11",
44
+ "@storybook/addon-interactions": "^8.6.11",
45
+ "@storybook/addon-links": "^8.6.11",
51
46
  "@storybook/addon-webpack5-compiler-babel": "^3.0.5",
52
- "@storybook/react": "^8.6.8",
53
- "@storybook/react-webpack5": "^8.6.8",
54
- "@storybook/test": "^8.6.8",
47
+ "@storybook/react": "^8.6.11",
48
+ "@storybook/react-webpack5": "^8.6.11",
49
+ "@storybook/test": "^8.6.11",
55
50
  "@testing-library/dom": "10.4.0",
56
51
  "@testing-library/jest-dom": "6.6.3",
57
52
  "@testing-library/react": "16.2.0",
@@ -79,17 +74,17 @@
79
74
  "react": "18.3.1",
80
75
  "react-dom": "18.3.1",
81
76
  "react-intl": "6.8.9",
82
- "storybook": "^8.6.8",
83
- "stylelint": "16.16.0",
77
+ "storybook": "^8.6.11",
78
+ "stylelint": "16.17.0",
84
79
  "stylelint-config-standard": "36.0.1",
85
80
  "stylelint-no-unsupported-browser-features": "8.0.4",
86
81
  "stylelint-value-no-unknown-custom-properties": "6.0.1",
87
82
  "tsx": "4.19.3",
88
83
  "typescript": "5.8.2",
89
84
  "webpack": "5.98.0",
90
- "@wise/dynamic-flow-fixtures": "0.0.1",
91
85
  "@wise/dynamic-flow-renderers": "0.0.0",
92
- "@wise/dynamic-flow-types": "3.1.2"
86
+ "@wise/dynamic-flow-types": "3.1.2",
87
+ "@wise/dynamic-flow-fixtures": "0.0.1"
93
88
  },
94
89
  "peerDependencies": {
95
90
  "@transferwise/components": "^46.92.0",
@@ -104,7 +99,7 @@
104
99
  },
105
100
  "dependencies": {
106
101
  "classnames": "2.5.1",
107
- "@wise/dynamic-flow-client": "4.3.2",
102
+ "@wise/dynamic-flow-client": "4.3.5",
108
103
  "@wise/dynamic-flow-types": "3.1.2"
109
104
  },
110
105
  "scripts": {