@wise/dynamic-flow-client 3.5.0-experimental-6654c72 → 3.5.0-experimental-b041af5

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 (130) hide show
  1. package/build/main.js +14 -18
  2. package/build/main.min.js +1 -1
  3. package/build/main.mjs +14 -18
  4. package/package.json +2 -2
  5. package/build/common/errorBoundary/ErrorBoundary.js +0 -44
  6. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -12
  7. package/build/common/messages/external-confirmation.messages.js +0 -23
  8. package/build/i18n/index.js +0 -36
  9. package/build/legacy/dynamicFlow/BackButton.js +0 -22
  10. package/build/legacy/dynamicFlow/DynamicFlow.js +0 -346
  11. package/build/legacy/dynamicFlow/DynamicFlowStep.js +0 -37
  12. package/build/legacy/dynamicFlow/DynamicFlowTypes.js +0 -1
  13. package/build/legacy/dynamicFlow/index.js +0 -1
  14. package/build/legacy/dynamicFlow/utils/index.js +0 -5
  15. package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.js +0 -185
  16. package/build/legacy/dynamicFlow/utils/useDebouncedRefresh/useDebouncedRefresh.js +0 -26
  17. package/build/legacy/dynamicFlow/utils/useDynamicFlowState.js +0 -137
  18. package/build/legacy/dynamicFlow/utils/useLoader.js +0 -22
  19. package/build/legacy/jsonSchemaForm/JsonSchemaForm.js +0 -24
  20. package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +0 -25
  21. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +0 -34
  22. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +0 -134
  23. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +0 -85
  24. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +0 -135
  25. package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +0 -1
  26. package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.js +0 -85
  27. package/build/legacy/jsonSchemaForm/genericSchema/index.js +0 -1
  28. package/build/legacy/jsonSchemaForm/index.js +0 -1
  29. package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +0 -77
  30. package/build/legacy/jsonSchemaForm/objectSchema/index.js +0 -1
  31. package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +0 -155
  32. package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +0 -1
  33. package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +0 -68
  34. package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +0 -26
  35. package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +0 -1
  36. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +0 -1
  37. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +0 -131
  38. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +0 -31
  39. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +0 -1
  40. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +0 -72
  41. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +0 -1
  42. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +0 -8
  43. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +0 -27
  44. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +0 -31
  45. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +0 -32
  46. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +0 -54
  47. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +0 -13
  48. package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +0 -1
  49. package/build/legacy/jsonSchemaForm/validationAsyncSchema/ValidationAsyncSchema.js +0 -150
  50. package/build/legacy/jsonSchemaForm/validationAsyncSchema/index.js +0 -1
  51. package/build/legacy/step/cameraStep/CameraStep.js +0 -124
  52. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +0 -161
  53. package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +0 -60
  54. package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +0 -80
  55. package/build/legacy/step/cameraStep/cameraCapture/index.js +0 -1
  56. package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +0 -77
  57. package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +0 -18
  58. package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +0 -1
  59. package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +0 -109
  60. package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +0 -107
  61. package/build/legacy/step/cameraStep/index.js +0 -1
  62. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +0 -64
  63. package/build/legacy/step/externalConfirmationStep/index.js +0 -1
  64. package/build/legacy/step/index.js +0 -3
  65. package/build/revamp/domain/components/AlertComponent.js +0 -50
  66. package/build/revamp/domain/components/AllOfComponent.js +0 -72
  67. package/build/revamp/domain/components/BooleanInputComponent.js +0 -108
  68. package/build/revamp/domain/components/BoxComponent.js +0 -65
  69. package/build/revamp/domain/components/ButtonComponent.js +0 -50
  70. package/build/revamp/domain/components/ColumnsComponent.js +0 -74
  71. package/build/revamp/domain/components/ConstComponent.js +0 -50
  72. package/build/revamp/domain/components/ContainerComponent.js +0 -65
  73. package/build/revamp/domain/components/DateInputComponent.js +0 -127
  74. package/build/revamp/domain/components/DecisionComponent.js +0 -50
  75. package/build/revamp/domain/components/DividerComponent.js +0 -50
  76. package/build/revamp/domain/components/FormComponent.js +0 -65
  77. package/build/revamp/domain/components/HeadingComponent.js +0 -50
  78. package/build/revamp/domain/components/ImageComponent.js +0 -50
  79. package/build/revamp/domain/components/InstructionsComponent.js +0 -50
  80. package/build/revamp/domain/components/IntegerInputComponent.js +0 -125
  81. package/build/revamp/domain/components/LoadingIndicatorComponent.js +0 -50
  82. package/build/revamp/domain/components/MarkdownComponent.js +0 -50
  83. package/build/revamp/domain/components/ModalComponent.js +0 -65
  84. package/build/revamp/domain/components/MultiUploadInputComponent.js +0 -190
  85. package/build/revamp/domain/components/NumberInputComponent.js +0 -125
  86. package/build/revamp/domain/components/ObjectComponent.js +0 -104
  87. package/build/revamp/domain/components/ParagraphComponent.js +0 -50
  88. package/build/revamp/domain/components/ReviewComponent.js +0 -50
  89. package/build/revamp/domain/components/SelectInputComponent.js +0 -138
  90. package/build/revamp/domain/components/StatusListComponent.js +0 -50
  91. package/build/revamp/domain/components/StepDomainComponent.js +0 -93
  92. package/build/revamp/domain/components/TextInputComponent.js +0 -125
  93. package/build/revamp/domain/components/UploadInputComponent.js +0 -151
  94. package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.js +0 -148
  95. package/build/revamp/domain/components/searchComponent/SearchComponent.js +0 -108
  96. package/build/revamp/domain/components/utils/component-utils.js +0 -18
  97. package/build/revamp/domain/components/utils/debounce.js +0 -38
  98. package/build/revamp/domain/components/utils/file-utils.js +0 -46
  99. package/build/revamp/domain/components/utils/getComponentForLocalValueKey.js +0 -31
  100. package/build/revamp/domain/components/utils/isPartialLocalValueMatch.js +0 -40
  101. package/build/revamp/domain/features/events.js +0 -1
  102. package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.js +0 -133
  103. package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.js +0 -103
  104. package/build/revamp/domain/features/refresh/getPerformRefresh.js +0 -53
  105. package/build/revamp/domain/features/summary/summary-utils.js +0 -39
  106. package/build/revamp/domain/features/utils/http-utils.js +0 -34
  107. package/build/revamp/domain/features/utils/response-utils.js +0 -9
  108. package/build/revamp/domain/features/validation/validation-functions.js +0 -12
  109. package/build/revamp/domain/features/validation/value-checks.js +0 -111
  110. package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.js +0 -94
  111. package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.js +0 -107
  112. package/build/revamp/domain/mappers/types.js +0 -1
  113. package/build/revamp/domain/types.js +0 -1
  114. package/build/revamp/flow/response-utils.js +0 -88
  115. package/build/revamp/renderers/CoreContainerRenderer.js +0 -8
  116. package/build/revamp/renderers/LoadingContext.js +0 -7
  117. package/build/revamp/renderers/types.js +0 -1
  118. package/build/revamp/types.js +0 -1
  119. package/build/revamp/utils/component-utils.js +0 -86
  120. package/build/revamp/utils/type-utils.js +0 -56
  121. package/build/revamp/utils/type-validators.js +0 -16
  122. package/build/revamp/wise/renderers/AlertRenderer.js +0 -11
  123. package/build/revamp/wise/renderers/BooleanInputRenderer.js +0 -34
  124. package/build/revamp/wise/renderers/BoxRenderer.js +0 -30
  125. package/build/revamp/wise/renderers/ButtonRenderer.js +0 -64
  126. package/build/revamp/wise/renderers/ColumnsRenderer.js +0 -25
  127. package/build/revamp/wise/renderers/components/FieldInput.js +0 -20
  128. package/build/revamp/wise/renderers/components/Help.js +0 -21
  129. package/build/revamp/wise/renderers/components/LabelContentWithHelp.js +0 -6
  130. package/build/revamp/wise/renderers/utils/layout-utils.js +0 -31
package/build/main.mjs CHANGED
@@ -18617,10 +18617,8 @@ var arraySchemaTupleSchema = z.lazy(
18617
18617
  alert: alertLayoutSchema.optional()
18618
18618
  })
18619
18619
  );
18620
- function validateStep(step) {
18621
- return validate(step, stepSchema);
18622
- }
18623
- function validate(value, schema) {
18620
+ var validateStep = (step) => validate(step, stepSchema);
18621
+ var validate = (value, schema) => {
18624
18622
  const parseResult = schema.safeParse(value);
18625
18623
  if (parseResult.success) {
18626
18624
  return { valid: true };
@@ -18629,20 +18627,18 @@ function validate(value, schema) {
18629
18627
  valid: false,
18630
18628
  errors: JSON.stringify(flattenZodErrors(parseResult.error.errors))
18631
18629
  };
18632
- }
18633
- function flattenZodErrors(zodError) {
18634
- return zodError.flatMap((e) => {
18635
- if (e.code === "invalid_type") {
18636
- return e;
18637
- }
18638
- if (e.code === "invalid_union") {
18639
- return e.unionErrors.flatMap(
18640
- (ue) => ue.issues.every((issue) => issue.code !== "invalid_literal") ? flattenZodErrors(ue.issues) : void 0
18641
- );
18642
- }
18643
- return void 0;
18644
- }).filter(Boolean);
18645
- }
18630
+ };
18631
+ var flattenZodErrors = (zodError) => zodError.flatMap((e) => {
18632
+ if (e.code === "invalid_type") {
18633
+ return e;
18634
+ }
18635
+ if (e.code === "invalid_union") {
18636
+ return e.unionErrors.flatMap(
18637
+ (ue) => ue.issues.every((issue) => issue.code !== "invalid_literal") ? flattenZodErrors(ue.issues) : void 0
18638
+ );
18639
+ }
18640
+ return void 0;
18641
+ }).filter(Boolean);
18646
18642
 
18647
18643
  // src/revamp/DynamicFlowCore.tsx
18648
18644
  import { jsx as jsx121 } from "react/jsx-runtime";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client",
3
- "version": "3.5.0-experimental-6654c72",
3
+ "version": "3.5.0-experimental-b041af5",
4
4
  "description": "Dynamic Flow web client",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.min.js",
@@ -92,7 +92,7 @@
92
92
  "classnames": "2.5.1",
93
93
  "react-webcam": "^7.2.0",
94
94
  "screenfull": "^5.2.0",
95
- "@wise/dynamic-flow-types": "2.12.0-experimental-6654c72"
95
+ "@wise/dynamic-flow-types": "2.12.0-experimental-b041af5"
96
96
  },
97
97
  "scripts": {
98
98
  "dev": "storybook dev -p 3003",
@@ -1,44 +0,0 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- if (typeof b !== "function" && b !== null)
10
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
- extendStatics(d, b);
12
- function __() { this.constructor = d; }
13
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
- };
15
- })();
16
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
17
- import { Component } from 'react';
18
- import { ErrorBoundaryAlert } from './ErrorBoundaryAlert';
19
- var noop = function () { };
20
- var ErrorBoundary = /** @class */ (function (_super) {
21
- __extends(ErrorBoundary, _super);
22
- function ErrorBoundary(props) {
23
- var _this = _super.call(this, props) || this;
24
- _this.handleErrorReset = function () {
25
- _this.setState({ hasError: false, isFatalError: false });
26
- };
27
- _this.state = { hasError: false, isFatalError: false };
28
- return _this;
29
- }
30
- ErrorBoundary.getDerivedStateFromError = function () {
31
- return { hasError: true, isFatalError: true };
32
- };
33
- ErrorBoundary.prototype.componentDidCatch = function (error) {
34
- var _a = this.props.onError, onError = _a === void 0 ? noop : _a;
35
- onError(error);
36
- };
37
- ErrorBoundary.prototype.render = function () {
38
- var children = this.props.children;
39
- var _a = this.state, hasError = _a.hasError, isFatalError = _a.isFatalError;
40
- return (_jsxs(_Fragment, { children: [hasError && _jsx(ErrorBoundaryAlert, { onDismiss: this.handleErrorReset }), !isFatalError && children] }));
41
- };
42
- return ErrorBoundary;
43
- }(Component));
44
- export default ErrorBoundary;
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Alert, Sentiment } from '@transferwise/components';
3
- import { useIntl } from 'react-intl';
4
- import messages from '../messages/generic-error.messages';
5
- export function ErrorBoundaryAlert(_a) {
6
- var onDismiss = _a.onDismiss;
7
- var formatMessage = useIntl().formatMessage;
8
- return (_jsx(Alert, { action: {
9
- text: formatMessage(messages.retry),
10
- href: window.location.href
11
- }, message: formatMessage(messages.genericError), type: Sentiment.NEGATIVE, className: "m-b-3", onDismiss: onDismiss }));
12
- }
@@ -1,23 +0,0 @@
1
- import { defineMessages } from 'react-intl';
2
- export default defineMessages({
3
- title: {
4
- id: 'dynamicFlows.ExternalConfirmation.title',
5
- defaultMessage: 'Please confirm',
6
- description: 'Heading for the confirmation screen.'
7
- },
8
- description: {
9
- id: 'dynamicFlows.ExternalConfirmation.description',
10
- defaultMessage: 'Please confirm you want to open **{origin}** in a new browser tab.',
11
- description: 'Description for the confirmation screen.'
12
- },
13
- open: {
14
- id: 'dynamicFlows.ExternalConfirmation.open',
15
- defaultMessage: 'Open in new tab',
16
- description: 'Button text confirming opening a new browser tab.'
17
- },
18
- cancel: {
19
- id: 'dynamicFlows.ExternalConfirmation.cancel',
20
- defaultMessage: 'Cancel',
21
- description: 'Button text rejecting opening a new browser tab.'
22
- }
23
- });
@@ -1,36 +0,0 @@
1
- import de from './de.json';
2
- import en from './en.json';
3
- import es from './es.json';
4
- import fr from './fr.json';
5
- import hu from './hu.json';
6
- import id from './id.json';
7
- import it from './it.json';
8
- import ja from './ja.json';
9
- import pl from './pl.json';
10
- import pt from './pt.json';
11
- import ro from './ro.json';
12
- import ru from './ru.json';
13
- import th from './th.json';
14
- import tr from './tr.json';
15
- import zhCN from './zh_CN.json';
16
- import zhHK from './zh_HK.json';
17
- var translations = {
18
- en: en,
19
- de: de,
20
- es: es,
21
- fr: fr,
22
- hu: hu,
23
- id: id,
24
- it: it,
25
- ja: ja,
26
- pl: pl,
27
- pt: pt,
28
- ro: ro,
29
- ru: ru,
30
- th: th,
31
- tr: tr,
32
- zh: zhCN,
33
- 'zh-CN': zhCN,
34
- 'zh-HK': zhHK
35
- };
36
- export default translations;
@@ -1,22 +0,0 @@
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 { Avatar } from '@transferwise/components';
14
- import { ArrowLeft } from '@transferwise/icons';
15
- function BackButton(_a) {
16
- var title = _a.title, action = _a.action, onAction = _a.onAction;
17
- return (_jsxs("a", __assign({ href: "/", className: "df-back-btn", "aria-label": title, onClick: function (event) {
18
- event.preventDefault();
19
- onAction(__assign(__assign({}, action), { skipValidation: true }));
20
- } }, { children: [_jsx("span", __assign({ className: "sr-only" }, { children: title })), _jsx(Avatar, __assign({ type: "icon" }, { children: _jsx(ArrowLeft, { size: "24" }) }))] })));
21
- }
22
- export default BackButton;
@@ -1,346 +0,0 @@
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 { useCallback, useEffect, useMemo, useState } from 'react';
50
- import { useIntl } from 'react-intl';
51
- import { DynamicFlowProvider, getEventDispatcher, EventsContextProvider, LogProvider, getLogger, } from '../common/contexts';
52
- import { FeatureContextProvider } from '../common/contexts/featureContext/FeatureContext';
53
- import { isObjectModel } from '../common/utils';
54
- import { isValidSchema } from '../common/validators';
55
- import { DynamicFlowStep } from './DynamicFlowStep';
56
- import { ErrorBoundary, useLoader, useDynamicFlowState, useDebouncedRefresh, parseFetchResponse, getJsonObjectOrNull, parseErrorResponse, } from './utils';
57
- import { HttpClientProvider } from '../../common/httpClientContext';
58
- // eslint-disable-next-line @typescript-eslint/no-empty-function
59
- var noop = function () { };
60
- /**
61
- * ## DynamicFlow
62
- *
63
- * The dynamic flow component is responsible for the asynchronous actions occuring
64
- * within a dynamic flow, managing transitions between steps as well as refreshing
65
- * requirements. It doesn't control any view logic, but takes the step definition
66
- * and reformats it to use a LayoutStep for presentation.
67
- *
68
- */
69
- // eslint-disable-next-line react/function-component-definition
70
- var DynamicFlowComponent = function (_a) {
71
- var flowId = _a.flowId, httpClient = _a.httpClient, initialAction = _a.initialAction, initialStep = _a.initialStep, loaderConfig = _a.loaderConfig, _b = _a.displayStepTitle, displayStepTitle = _b === void 0 ? true : _b, features = _a.features, onCompletion = _a.onCompletion, onError = _a.onError, _c = _a.onEvent, onEvent = _c === void 0 ? noop : _c, _d = _a.onLog, onLog = _d === void 0 ? noop : _d;
72
- var locale = useIntl().locale;
73
- var _e = useDynamicFlowState(initialStep), formErrors = _e.formErrors, globalError = _e.globalError, step = _e.step, models = _e.models, etag = _e.etag, modelIsValid = _e.modelIsValid, setFormErrors = _e.setFormErrors, setGlobalError = _e.setGlobalError, setStepAndEtag = _e.setStepAndEtag, setSchemaModel = _e.setSchemaModel;
74
- var _f = useState(false), submitted = _f[0], setSubmitted = _f[1];
75
- var _g = useLoader(loaderConfig, initialStep ? 'idle' : 'initial'), isLoading = _g.isLoading, loader = _g.loader, setLoadingState = _g.setLoadingState;
76
- var logCritical = getLogger('critical', onLog, flowId, (step === null || step === void 0 ? void 0 : step.id) || (step === null || step === void 0 ? void 0 : step.key));
77
- var logWarning = getLogger('warning', onLog, flowId, (step === null || step === void 0 ? void 0 : step.id) || (step === null || step === void 0 ? void 0 : step.key));
78
- var warnIfNoStepLayout = function (step) {
79
- if (step && !step.layout) {
80
- logWarning('Deprecation warning', 'Support for steps with no layout is being dropped. Please add a layout array to your step.', {
81
- stepId: step.id || step.key
82
- });
83
- }
84
- };
85
- var analyticsMetadata = useMemo(function () { var _a; return (__assign({ flowId: flowId, stepId: (step === null || step === void 0 ? void 0 : step.id) || (step === null || step === void 0 ? void 0 : step.key) }, ((_a = step === null || step === void 0 ? void 0 : step.analytics) !== null && _a !== void 0 ? _a : {}))); }, [flowId, step]);
86
- var dispatchEvent = useMemo(function () { return getEventDispatcher(onEvent, analyticsMetadata); }, [onEvent, analyticsMetadata]);
87
- var dfHttpClient = useCallback(function (_a) {
88
- var action = _a.action, data = _a.data, etag = _a.etag;
89
- var url = action.url, _b = action.method, method = _b === void 0 ? 'POST' : _b;
90
- return httpClient(url !== null && url !== void 0 ? url : '', {
91
- method: method,
92
- headers: __assign({ 'accept-language': locale, 'Content-Type': 'application/json' }, (etag ? { 'If-None-Match': etag } : {})),
93
- credentials: 'include',
94
- body: method === 'GET' ? undefined : JSON.stringify(data)
95
- });
96
- }, [httpClient, locale]);
97
- var performAction = function (action, data) {
98
- if (data === void 0) { data = {}; }
99
- return __awaiter(void 0, void 0, void 0, function () {
100
- var response, error_1;
101
- return __generator(this, function (_a) {
102
- switch (_a.label) {
103
- case 0:
104
- setLoadingState(!step ? 'initial' : 'submission');
105
- dispatchEvent('Dynamic Flow - Step Submitted', { actionId: action.id || action.$id });
106
- _a.label = 1;
107
- case 1:
108
- _a.trys.push([1, 6, , 7]);
109
- return [4 /*yield*/, dfHttpClient({ action: action, data: data })];
110
- case 2:
111
- response = _a.sent();
112
- if (!(action.exit && response.ok)) return [3 /*break*/, 4];
113
- return [4 /*yield*/, handleExitResponse(response, action.result)];
114
- case 3:
115
- _a.sent();
116
- return [2 /*return*/];
117
- case 4: return [4 /*yield*/, handleResponse(response, 'submission')];
118
- case 5:
119
- _a.sent();
120
- return [3 /*break*/, 7];
121
- case 6:
122
- error_1 = _a.sent();
123
- completeWithError(error_1, action.exit ? 'Error fetching exit result' : 'Error fetching next step');
124
- return [3 /*break*/, 7];
125
- case 7: return [2 /*return*/];
126
- }
127
- });
128
- });
129
- };
130
- var performRefresh = function (url, data, etag) { return __awaiter(void 0, void 0, void 0, function () {
131
- var response, error_2;
132
- return __generator(this, function (_a) {
133
- switch (_a.label) {
134
- case 0:
135
- setLoadingState('refresh');
136
- dispatchEvent('Dynamic Flow - Step Refreshed', { status: 'pending' });
137
- _a.label = 1;
138
- case 1:
139
- _a.trys.push([1, 4, , 5]);
140
- return [4 /*yield*/, dfHttpClient({ action: { url: url, method: 'POST' }, data: data, etag: etag })];
141
- case 2:
142
- response = _a.sent();
143
- return [4 /*yield*/, handleResponse(response, 'refresh')];
144
- case 3:
145
- _a.sent();
146
- return [3 /*break*/, 5];
147
- case 4:
148
- error_2 = _a.sent();
149
- completeWithError(error_2, 'Error fetching refresh step');
150
- return [3 /*break*/, 5];
151
- case 5: return [2 /*return*/];
152
- }
153
- });
154
- }); };
155
- var handleExitResponse = function (response, actionResult) { return __awaiter(void 0, void 0, void 0, function () {
156
- var exitResult;
157
- return __generator(this, function (_a) {
158
- switch (_a.label) {
159
- case 0: return [4 /*yield*/, getJsonObjectOrNull(response)];
160
- case 1:
161
- exitResult = _a.sent();
162
- dispatchEventAndComplete(__assign(__assign({}, exitResult), actionResult));
163
- return [2 /*return*/];
164
- }
165
- });
166
- }); };
167
- var debouncedRefresh = useDebouncedRefresh(performRefresh);
168
- var dispatchEventAndComplete = useCallback(function (result) {
169
- dispatchEvent('Dynamic Flow - Flow Finished', { result: 'success' });
170
- onCompletion(result);
171
- }, [onCompletion, dispatchEvent]);
172
- useEffect(function () {
173
- dispatchEvent('Dynamic Flow - Flow Started', {});
174
- }, []);
175
- useEffect(function () {
176
- if (!initialStep) {
177
- var action = __assign({ id: '#initial-step-request', method: 'GET' }, initialAction);
178
- void performAction(action, action.data);
179
- }
180
- if (initialStep) {
181
- warnIfNoStepLayout(initialStep);
182
- }
183
- // eslint-disable-next-line react-hooks/exhaustive-deps
184
- }, [httpClient, locale, JSON.stringify(initialStep), JSON.stringify(initialAction)]);
185
- var handleResponse = function (response, fetchType) { return __awaiter(void 0, void 0, void 0, function () {
186
- var errorResponse, result, error_3;
187
- return __generator(this, function (_a) {
188
- switch (_a.label) {
189
- case 0:
190
- _a.trys.push([0, 4, , 5]);
191
- if (response.status === 304) {
192
- setLoadingState('idle');
193
- return [2 /*return*/];
194
- }
195
- if (!!response.ok) return [3 /*break*/, 2];
196
- return [4 /*yield*/, parseErrorResponse(response)];
197
- case 1:
198
- errorResponse = _a.sent();
199
- void updateAfterError(errorResponse);
200
- return [2 /*return*/];
201
- case 2: return [4 /*yield*/, parseFetchResponse(response)];
202
- case 3:
203
- result = _a.sent();
204
- if (result.type === 'action') {
205
- void performAction(result.action, result.action.data);
206
- }
207
- else if (result.type === 'exit') {
208
- dispatchEventAndComplete(result.result);
209
- }
210
- else {
211
- updateStep(result.step, result.etag, fetchType);
212
- }
213
- return [3 /*break*/, 5];
214
- case 4:
215
- error_3 = _a.sent();
216
- completeWithError(error_3, 'Error parsing fetch response', fetchType, response.status);
217
- return [3 /*break*/, 5];
218
- case 5: return [2 /*return*/];
219
- }
220
- });
221
- }); };
222
- var updateStep = function (newStep, etag, fetchType) {
223
- warnIfNoStepLayout(newStep);
224
- setStepAndEtag(newStep, etag);
225
- setLoadingState('idle');
226
- if (fetchType === 'submission') {
227
- setSubmitted(false);
228
- dispatchEvent('Dynamic Flow - Step Started', __assign({ stepId: newStep.id || newStep.key }, newStep === null || newStep === void 0 ? void 0 : newStep.analytics));
229
- }
230
- else {
231
- dispatchEvent('Dynamic Flow - Step Refreshed', { status: 'success' });
232
- }
233
- };
234
- var updateAfterError = function (errorBody) { return __awaiter(void 0, void 0, void 0, function () {
235
- var refreshUrl;
236
- return __generator(this, function (_a) {
237
- switch (_a.label) {
238
- case 0:
239
- refreshUrl = errorBody.refreshUrl || errorBody.refreshFormUrl;
240
- if (!refreshUrl) return [3 /*break*/, 2];
241
- return [4 /*yield*/, performRefresh(refreshUrl, combineModels(models), etag)];
242
- case 1:
243
- _a.sent();
244
- _a.label = 2;
245
- case 2:
246
- if (errorBody.validation) {
247
- setFormErrors(errorBody.validation);
248
- }
249
- if (errorBody.error) {
250
- setGlobalError(errorBody.error);
251
- }
252
- setLoadingState('idle');
253
- return [2 /*return*/];
254
- }
255
- });
256
- }); };
257
- var completeWithError = function (error, message, fetchType, responseStatus) {
258
- logCritical('Error fetching', message);
259
- if (fetchType === 'refresh') {
260
- dispatchEvent('Dynamic Flow - Step Refreshed', { status: 'failure' });
261
- }
262
- dispatchEvent('Dynamic Flow - Flow Finished', { status: 'failure' });
263
- onError(error, responseStatus);
264
- setLoadingState('idle');
265
- };
266
- var onModelChange = function (onModelChangeProps) {
267
- var model = onModelChangeProps.model, formSchema = onModelChangeProps.formSchema;
268
- var _a = formSchema.$id, $id = _a === void 0 ? '' : _a;
269
- setGlobalError(null);
270
- if (!isObjectModel(model)) {
271
- // TODO: DF-473 - Remove type assertions once we're confident people have had time to fix any errors
272
- logCritical('Invalid model on change', 'onModelChange was called but the model argument is not an object');
273
- }
274
- var objectModel = model;
275
- setSchemaModel($id, objectModel, function (updatedModels) {
276
- refreshOnChangeIfNeeded(onModelChangeProps, updatedModels);
277
- });
278
- };
279
- var refreshOnChangeIfNeeded = function (props, updatedModels) {
280
- var triggerSchema = props.triggerSchema;
281
- if (shouldTriggerRefresh(props)) {
282
- var triggerSchemaRefreshUrl = triggerSchema.refreshUrl || triggerSchema.refreshFormUrl;
283
- var stepRefreshUrl = (step === null || step === void 0 ? void 0 : step.refreshUrl) || (step === null || step === void 0 ? void 0 : step.refreshFormUrl);
284
- var refreshUrl = triggerSchemaRefreshUrl || stepRefreshUrl;
285
- if (refreshUrl) {
286
- debouncedRefresh(refreshUrl, combineModels(updatedModels), etag, triggerSchema);
287
- }
288
- }
289
- };
290
- // FIXME: We should annotate the entire onAction function with the type OnAction
291
- var onAction = function (action) { return __awaiter(void 0, void 0, void 0, function () {
292
- var data, method, skipValidation, submissionData;
293
- return __generator(this, function (_a) {
294
- switch (_a.label) {
295
- case 0:
296
- if (isLoading || action.disabled) {
297
- return [2 /*return*/];
298
- }
299
- if (action.exit && !action.url) {
300
- dispatchEventAndComplete(action.result);
301
- return [2 /*return*/];
302
- }
303
- data = action.data, method = action.method, skipValidation = action.skipValidation;
304
- submissionData = __assign(__assign({}, combineModels(models)), data);
305
- if (!isSubmissionMethod(method)) return [3 /*break*/, 3];
306
- setFormErrors(null);
307
- if (!skipValidation) {
308
- setSubmitted(true);
309
- }
310
- if (!(modelIsValid || skipValidation)) return [3 /*break*/, 2];
311
- return [4 /*yield*/, performAction(action, submissionData)];
312
- case 1:
313
- _a.sent();
314
- _a.label = 2;
315
- case 2: return [3 /*break*/, 5];
316
- case 3: return [4 /*yield*/, performAction(action)];
317
- case 4:
318
- _a.sent();
319
- _a.label = 5;
320
- case 5: return [2 /*return*/];
321
- }
322
- });
323
- }); };
324
- return (_jsx(LogProvider, __assign({ flowId: flowId, stepId: (step === null || step === void 0 ? void 0 : step.id) || (step === null || step === void 0 ? void 0 : step.key), onLog: onLog }, { children: _jsx(EventsContextProvider, __assign({ metadata: analyticsMetadata, onEvent: onEvent }, { children: _jsx(DynamicFlowProvider, __assign({ loading: isLoading }, { children: _jsx(HttpClientProvider, __assign({ httpClient: httpClient }, { children: _jsx(FeatureContextProvider, __assign({ features: features }, { children: loader !== null ? (loader) : (_jsx(DynamicFlowStep, { step: step, model: combineModels(models), submitted: submitted, globalError: globalError, formErrors: formErrors, stepLayoutOptions: { displayStepTitle: displayStepTitle }, onAction: function (action) {
325
- void onAction(action);
326
- }, onModelChange: onModelChange })) })) })) })) })) })));
327
- };
328
- function DynamicFlow(props) {
329
- return (_jsx(ErrorBoundary, __assign({ onError: props.onError }, { children: _jsx(DynamicFlowComponent, __assign({}, props)) })));
330
- }
331
- export default DynamicFlow;
332
- var combineModels = function (formModels) {
333
- return Object.values(formModels).reduce(function (previous, model) { return (__assign(__assign({}, previous), model)); }, {});
334
- };
335
- var isSubmissionMethod = function (method) {
336
- if (method === void 0) { method = 'POST'; }
337
- var submissionMethods = ['POST', 'PUT', 'PATCH'];
338
- return submissionMethods.includes(method.toUpperCase());
339
- };
340
- var shouldTriggerRefresh = function (props) {
341
- var type = props.type, triggerSchema = props.triggerSchema, triggerModel = props.triggerModel, _a = props.lastTriggerModel, lastTriggerModel = _a === void 0 ? null : _a;
342
- var isValid = function () { return isValidSchema(triggerModel, triggerSchema); };
343
- var wasValid = function () { return isValidSchema(lastTriggerModel, triggerSchema); };
344
- var hasRefreshOnChange = (triggerSchema === null || triggerSchema === void 0 ? void 0 : triggerSchema.refreshStepOnChange) || (triggerSchema === null || triggerSchema === void 0 ? void 0 : triggerSchema.refreshFormOnChange);
345
- return type !== 'init' && hasRefreshOnChange && (isValid() || wasValid());
346
- };
@@ -1,37 +0,0 @@
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 { useExternal } from '../common/hooks';
14
- import { isCameraStep } from '../common/utils';
15
- import { DynamicAlert } from '../layout';
16
- import { CameraStep, LayoutStep, ExternalConfirmationStep } from '../step';
17
- import BackButton from './BackButton';
18
- export function DynamicFlowStep(props) {
19
- var _a, _b, _c;
20
- var step = props.step, globalError = props.globalError, onAction = props.onAction;
21
- var externalUrl = (_a = step === null || step === void 0 ? void 0 : step.external) === null || _a === void 0 ? void 0 : _a.url;
22
- var backButton = ((_b = step === null || step === void 0 ? void 0 : step.navigation) === null || _b === void 0 ? void 0 : _b.back) || ((_c = step === null || step === void 0 ? void 0 : step.navigation) === null || _c === void 0 ? void 0 : _c.backButton);
23
- var _d = useExternal(externalUrl), requiresManualTrigger = _d.requiresManualTrigger, dismissConfirmation = _d.dismissConfirmation;
24
- if (step === undefined) {
25
- if (globalError) {
26
- return (_jsx(DynamicAlert, { component: { context: 'negative', markdown: globalError, margin: 'lg' } }));
27
- }
28
- return null;
29
- }
30
- if (externalUrl && requiresManualTrigger) {
31
- return _jsx(ExternalConfirmationStep, { url: externalUrl, onClose: dismissConfirmation });
32
- }
33
- if (isCameraStep(step)) {
34
- return _jsx(CameraStep, __assign({}, props, { step: step }));
35
- }
36
- return (_jsxs(_Fragment, { children: [backButton && _jsx(BackButton, __assign({}, backButton, { onAction: onAction })), globalError ? (_jsx(DynamicAlert, { component: { context: 'negative', markdown: globalError, margin: 'lg' } })) : null, _jsx(LayoutStep, __assign({}, props, { stepSpecification: step }))] }));
37
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export { default } from './DynamicFlow';
@@ -1,5 +0,0 @@
1
- export * from './useDebouncedRefresh/useDebouncedRefresh';
2
- export * from './useDynamicFlowState';
3
- export * from './useLoader';
4
- export { default as ErrorBoundary } from '../../../common/errorBoundary/ErrorBoundary';
5
- export * from './responseParsers/response-parsers';