@wise/dynamic-flow-client-internal 3.9.0 → 3.9.1-experimental-152372b
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/dynamicFlow/DynamicFlow.js +86 -0
- package/build/dynamicFlow/utils/mergeRequestInit.js +23 -0
- package/build/index.js +4 -0
- package/build/main.js +38 -4
- package/build/main.min.js +1 -1
- package/build/main.mjs +39 -5
- package/build/stories/DynamicFlow.story.js +52 -0
- package/build/stories/DynamicFragment.story.js +132 -0
- package/build/stories/Editable.story.js +70 -0
- package/build/stories/Examples.story.js +20 -0
- package/build/stories/Features.story.js +27 -0
- package/build/stories/VisualTests.story.js +39 -0
- package/build/stories/utils/DynamicFlowSideBySide.js +30 -0
- package/build/stories/utils/fixtureHttpClient.js +119 -0
- package/build/test-utils/NeptuneProviders.js +23 -0
- package/build/test-utils/rtl-utils.js +20 -0
- package/build/types/dynamicFlow/utils/mergeRequestInit.d.ts +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,86 @@
|
|
|
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 { forwardRef, useCallback } from 'react';
|
|
50
|
+
import { useIntl } from 'react-intl';
|
|
51
|
+
import { DynamicFlow as DynamicFlowCoreLegacy, DynamicFlowRevamp as DynamicFlowCoreRevamp, DynamicFragmentWise, } from '@wise/dynamic-flow-client';
|
|
52
|
+
import { mergeRequestInit } from './utils/mergeRequestInit';
|
|
53
|
+
export function DynamicFlowLegacy(props) {
|
|
54
|
+
var _a = props.customFetch, customFetch = _a === void 0 ? globalThis.fetch : _a;
|
|
55
|
+
var httpClient = useWiseHttpClient(customFetch);
|
|
56
|
+
var coreProps = __assign(__assign({}, props), { httpClient: httpClient });
|
|
57
|
+
return _jsx(DynamicFlowCoreLegacy, __assign({}, coreProps));
|
|
58
|
+
}
|
|
59
|
+
export function DynamicFlowRevamp(props) {
|
|
60
|
+
var _a = props.customFetch, customFetch = _a === void 0 ? globalThis.fetch : _a;
|
|
61
|
+
var httpClient = useWiseHttpClient(customFetch);
|
|
62
|
+
var coreProps = __assign(__assign({}, props), { httpClient: httpClient });
|
|
63
|
+
return _jsx(DynamicFlowCoreRevamp, __assign({}, coreProps));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* DynamicFragment is like DynamicFlowRevamp, but it also accepts a ForwardedRef.
|
|
67
|
+
* This ref conforms to the DynamicFragmentController type, containing two functions: `getValue` and `validate`.
|
|
68
|
+
* @experimental This component may be changed in the future without notice.
|
|
69
|
+
*/
|
|
70
|
+
export var DynamicFragment = forwardRef(function DynamicFragment(props, ref) {
|
|
71
|
+
var _a = props.customFetch, customFetch = _a === void 0 ? globalThis.fetch : _a;
|
|
72
|
+
var httpClient = useWiseHttpClient(customFetch);
|
|
73
|
+
var coreProps = __assign(__assign({}, props), { httpClient: httpClient });
|
|
74
|
+
return _jsx(DynamicFragmentWise, __assign({}, coreProps, { ref: ref }));
|
|
75
|
+
});
|
|
76
|
+
var useWiseHttpClient = function (httpClient) {
|
|
77
|
+
var locale = useIntl().locale;
|
|
78
|
+
return useCallback(function (input, init) { return __awaiter(void 0, void 0, void 0, function () {
|
|
79
|
+
return __generator(this, function (_a) {
|
|
80
|
+
return [2 /*return*/, httpClient(input, mergeRequestInit(init, {
|
|
81
|
+
credentials: 'include',
|
|
82
|
+
headers: { 'accept-language': locale },
|
|
83
|
+
}))];
|
|
84
|
+
});
|
|
85
|
+
}); }, [httpClient, locale]);
|
|
86
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
export var mergeRequestInit = function (init, additionalInit) { return (__assign(__assign(__assign({}, init), additionalInit), { headers: mergeHeaders(init === null || init === void 0 ? void 0 : init.headers, additionalInit === null || additionalInit === void 0 ? void 0 : additionalInit.headers) })); };
|
|
13
|
+
var mergeHeaders = function (initHeaders, additionalHeaders) {
|
|
14
|
+
if (!initHeaders && !additionalHeaders) {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
var headers = new Headers(initHeaders);
|
|
18
|
+
for (var _i = 0, _a = Object.entries(additionalHeaders !== null && additionalHeaders !== void 0 ? additionalHeaders : {}); _i < _a.length; _i++) {
|
|
19
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
|
20
|
+
headers.set(key, value);
|
|
21
|
+
}
|
|
22
|
+
return headers;
|
|
23
|
+
};
|
package/build/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { makeHttpClient } from '@wise/dynamic-flow-client';
|
|
2
|
+
export { translations, JsonSchemaForm, isValidSchema } from '@wise/dynamic-flow-client';
|
|
3
|
+
export { DynamicFlowLegacy as DynamicFlow, DynamicFlowLegacy, DynamicFlowRevamp, DynamicFragment, } from './dynamicFlow/DynamicFlow';
|
|
4
|
+
export var makeCustomFetch = makeHttpClient;
|
package/build/main.js
CHANGED
|
@@ -51,24 +51,58 @@ var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
|
|
|
51
51
|
var import_dynamic_flow_client3 = require("@wise/dynamic-flow-client");
|
|
52
52
|
|
|
53
53
|
// src/dynamicFlow/DynamicFlow.tsx
|
|
54
|
-
var import_dynamic_flow_client = require("@wise/dynamic-flow-client");
|
|
55
54
|
var import_react = require("react");
|
|
55
|
+
var import_react_intl = require("react-intl");
|
|
56
|
+
var import_dynamic_flow_client = require("@wise/dynamic-flow-client");
|
|
57
|
+
|
|
58
|
+
// src/dynamicFlow/utils/mergeRequestInit.ts
|
|
59
|
+
var mergeRequestInit = (init, additionalInit) => __spreadProps(__spreadValues(__spreadValues({}, init), additionalInit), {
|
|
60
|
+
headers: mergeHeaders(init == null ? void 0 : init.headers, additionalInit == null ? void 0 : additionalInit.headers)
|
|
61
|
+
});
|
|
62
|
+
var mergeHeaders = (initHeaders, additionalHeaders) => {
|
|
63
|
+
if (!initHeaders && !additionalHeaders) {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
const headers = new Headers(initHeaders);
|
|
67
|
+
for (const [key, value] of Object.entries(additionalHeaders != null ? additionalHeaders : {})) {
|
|
68
|
+
headers.set(key, value);
|
|
69
|
+
}
|
|
70
|
+
return headers;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// src/dynamicFlow/DynamicFlow.tsx
|
|
56
74
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
57
75
|
function DynamicFlowLegacy(props) {
|
|
58
76
|
const { customFetch = globalThis.fetch } = props;
|
|
59
|
-
const
|
|
77
|
+
const httpClient = useWiseHttpClient(customFetch);
|
|
78
|
+
const coreProps = __spreadProps(__spreadValues({}, props), { httpClient });
|
|
60
79
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dynamic_flow_client.DynamicFlow, __spreadValues({}, coreProps));
|
|
61
80
|
}
|
|
62
81
|
function DynamicFlowRevamp(props) {
|
|
63
82
|
const { customFetch = globalThis.fetch } = props;
|
|
64
|
-
const
|
|
83
|
+
const httpClient = useWiseHttpClient(customFetch);
|
|
84
|
+
const coreProps = __spreadProps(__spreadValues({}, props), { httpClient });
|
|
65
85
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dynamic_flow_client.DynamicFlowRevamp, __spreadValues({}, coreProps));
|
|
66
86
|
}
|
|
67
87
|
var DynamicFragment = (0, import_react.forwardRef)(function DynamicFragment2(props, ref) {
|
|
68
88
|
const { customFetch = globalThis.fetch } = props;
|
|
69
|
-
const
|
|
89
|
+
const httpClient = useWiseHttpClient(customFetch);
|
|
90
|
+
const coreProps = __spreadProps(__spreadValues({}, props), { httpClient });
|
|
70
91
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dynamic_flow_client.DynamicFragmentWise, __spreadProps(__spreadValues({}, coreProps), { ref }));
|
|
71
92
|
});
|
|
93
|
+
var useWiseHttpClient = (httpClient) => {
|
|
94
|
+
const { locale } = (0, import_react_intl.useIntl)();
|
|
95
|
+
return (0, import_react.useCallback)(
|
|
96
|
+
async (input, init) => httpClient(
|
|
97
|
+
input,
|
|
98
|
+
mergeRequestInit(init, {
|
|
99
|
+
credentials: "include",
|
|
100
|
+
headers: { "accept-language": locale }
|
|
101
|
+
})
|
|
102
|
+
),
|
|
103
|
+
[httpClient, locale]
|
|
104
|
+
);
|
|
105
|
+
};
|
|
72
106
|
|
|
73
107
|
// src/index.ts
|
|
74
108
|
var makeCustomFetch = import_dynamic_flow_client2.makeHttpClient;
|
package/build/main.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var s=Object.defineProperty,v=Object.defineProperties,I=Object.getOwnPropertyDescriptor,W=Object.getOwnPropertyDescriptors,x=Object.getOwnPropertyNames,w=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var D=(t,e,o)=>e in t?s(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,n=(t,e)=>{for(var o in e||(e={}))h.call(e,o)&&D(t,o,e[o]);if(w)for(var o of w(e))L.call(e,o)&&D(t,o,e[o]);return t},r=(t,e)=>v(t,W(e));var b=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},S=(t,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of x(e))!h.call(t,a)&&a!==o&&s(t,a,{get:()=>e[a],enumerable:!(c=I(e,a))||c.enumerable});return t};var q=t=>S(s({},"__esModule",{value:!0}),t);var T={};b(T,{DynamicFlow:()=>y,DynamicFlowLegacy:()=>y,DynamicFlowRevamp:()=>u,DynamicFragment:()=>P,JsonSchemaForm:()=>i.JsonSchemaForm,isValidSchema:()=>i.isValidSchema,makeCustomFetch:()=>O,translations:()=>i.translations});module.exports=q(T);var R=require("@wise/dynamic-flow-client"),i=require("@wise/dynamic-flow-client");var p=require("react"),g=require("react-intl"),m=require("@wise/dynamic-flow-client");var f=(t,e)=>r(n(n({},t),e),{headers:A(t==null?void 0:t.headers,e==null?void 0:e.headers)}),A=(t,e)=>{if(!t&&!e)return{};let o=new Headers(t);for(let[c,a]of Object.entries(e!=null?e:{}))o.set(c,a);return o};var l=require("react/jsx-runtime");function y(t){let{customFetch:e=globalThis.fetch}=t,o=F(e),c=r(n({},t),{httpClient:o});return(0,l.jsx)(m.DynamicFlow,n({},c))}function u(t){let{customFetch:e=globalThis.fetch}=t,o=F(e),c=r(n({},t),{httpClient:o});return(0,l.jsx)(m.DynamicFlowRevamp,n({},c))}var P=(0,p.forwardRef)(function(e,o){let{customFetch:c=globalThis.fetch}=e,a=F(c),C=r(n({},e),{httpClient:a});return(0,l.jsx)(m.DynamicFragmentWise,r(n({},C),{ref:o}))}),F=t=>{let{locale:e}=(0,g.useIntl)();return(0,p.useCallback)(async(o,c)=>t(o,f(c,{credentials:"include",headers:{"accept-language":e}})),[t,e])};var O=R.makeHttpClient;
|
package/build/main.mjs
CHANGED
|
@@ -23,28 +23,62 @@ import { makeHttpClient } from "@wise/dynamic-flow-client";
|
|
|
23
23
|
import { translations, JsonSchemaForm, isValidSchema } from "@wise/dynamic-flow-client";
|
|
24
24
|
|
|
25
25
|
// src/dynamicFlow/DynamicFlow.tsx
|
|
26
|
+
import { forwardRef, useCallback } from "react";
|
|
27
|
+
import { useIntl } from "react-intl";
|
|
26
28
|
import {
|
|
27
|
-
DynamicFlowRevamp as DynamicFlowCoreRevamp,
|
|
28
29
|
DynamicFlow as DynamicFlowCoreLegacy,
|
|
30
|
+
DynamicFlowRevamp as DynamicFlowCoreRevamp,
|
|
29
31
|
DynamicFragmentWise
|
|
30
32
|
} from "@wise/dynamic-flow-client";
|
|
31
|
-
|
|
33
|
+
|
|
34
|
+
// src/dynamicFlow/utils/mergeRequestInit.ts
|
|
35
|
+
var mergeRequestInit = (init, additionalInit) => __spreadProps(__spreadValues(__spreadValues({}, init), additionalInit), {
|
|
36
|
+
headers: mergeHeaders(init == null ? void 0 : init.headers, additionalInit == null ? void 0 : additionalInit.headers)
|
|
37
|
+
});
|
|
38
|
+
var mergeHeaders = (initHeaders, additionalHeaders) => {
|
|
39
|
+
if (!initHeaders && !additionalHeaders) {
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
const headers = new Headers(initHeaders);
|
|
43
|
+
for (const [key, value] of Object.entries(additionalHeaders != null ? additionalHeaders : {})) {
|
|
44
|
+
headers.set(key, value);
|
|
45
|
+
}
|
|
46
|
+
return headers;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/dynamicFlow/DynamicFlow.tsx
|
|
32
50
|
import { jsx } from "react/jsx-runtime";
|
|
33
51
|
function DynamicFlowLegacy(props) {
|
|
34
52
|
const { customFetch = globalThis.fetch } = props;
|
|
35
|
-
const
|
|
53
|
+
const httpClient = useWiseHttpClient(customFetch);
|
|
54
|
+
const coreProps = __spreadProps(__spreadValues({}, props), { httpClient });
|
|
36
55
|
return /* @__PURE__ */ jsx(DynamicFlowCoreLegacy, __spreadValues({}, coreProps));
|
|
37
56
|
}
|
|
38
57
|
function DynamicFlowRevamp(props) {
|
|
39
58
|
const { customFetch = globalThis.fetch } = props;
|
|
40
|
-
const
|
|
59
|
+
const httpClient = useWiseHttpClient(customFetch);
|
|
60
|
+
const coreProps = __spreadProps(__spreadValues({}, props), { httpClient });
|
|
41
61
|
return /* @__PURE__ */ jsx(DynamicFlowCoreRevamp, __spreadValues({}, coreProps));
|
|
42
62
|
}
|
|
43
63
|
var DynamicFragment = forwardRef(function DynamicFragment2(props, ref) {
|
|
44
64
|
const { customFetch = globalThis.fetch } = props;
|
|
45
|
-
const
|
|
65
|
+
const httpClient = useWiseHttpClient(customFetch);
|
|
66
|
+
const coreProps = __spreadProps(__spreadValues({}, props), { httpClient });
|
|
46
67
|
return /* @__PURE__ */ jsx(DynamicFragmentWise, __spreadProps(__spreadValues({}, coreProps), { ref }));
|
|
47
68
|
});
|
|
69
|
+
var useWiseHttpClient = (httpClient) => {
|
|
70
|
+
const { locale } = useIntl();
|
|
71
|
+
return useCallback(
|
|
72
|
+
async (input, init) => httpClient(
|
|
73
|
+
input,
|
|
74
|
+
mergeRequestInit(init, {
|
|
75
|
+
credentials: "include",
|
|
76
|
+
headers: { "accept-language": locale }
|
|
77
|
+
})
|
|
78
|
+
),
|
|
79
|
+
[httpClient, locale]
|
|
80
|
+
);
|
|
81
|
+
};
|
|
48
82
|
|
|
49
83
|
// src/index.ts
|
|
50
84
|
var makeCustomFetch = makeHttpClient;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { action } from '@storybook/addon-actions';
|
|
14
|
+
import { layouts, features, examples, schemas } from '@wise/dynamic-flow-fixtures';
|
|
15
|
+
import { DynamicFlowLegacy, DynamicFlowRevamp } from '../index';
|
|
16
|
+
import { fixtureHttpClient } from './utils/fixtureHttpClient';
|
|
17
|
+
var fixtures = __assign(__assign(__assign(__assign({}, examples), schemas), layouts), features);
|
|
18
|
+
function DynamicFlowRenderer(_a) {
|
|
19
|
+
var _b = _a.initialStepName, initialStepName = _b === void 0 ? '' : _b, _c = _a.revampEnabled, revampEnabled = _c === void 0 ? false : _c;
|
|
20
|
+
var selectedStep = fixtures[initialStepName] || {};
|
|
21
|
+
var props = {
|
|
22
|
+
flowId: 'storybook',
|
|
23
|
+
customFetch: fixtureHttpClient,
|
|
24
|
+
onCompletion: action('onCompletion'),
|
|
25
|
+
onError: action('onError'),
|
|
26
|
+
onEvent: action('onEvent'),
|
|
27
|
+
onLog: action('onLog'),
|
|
28
|
+
};
|
|
29
|
+
return revampEnabled ? (_jsx(DynamicFlowRevamp, __assign({}, props, { initialAction: { method: 'GET', url: "/steps/".concat(initialStepName) } }), selectedStep.id)) : (_jsx(DynamicFlowLegacy, __assign({}, props, { initialAction: { method: 'GET', url: "/steps/".concat(initialStepName) }, loaderConfig: { size: 'xl', initial: true, submission: false } }), selectedStep.id));
|
|
30
|
+
}
|
|
31
|
+
var meta = {
|
|
32
|
+
title: 'Multi-fixture',
|
|
33
|
+
component: DynamicFlowRenderer,
|
|
34
|
+
};
|
|
35
|
+
export var AllFixtures = {
|
|
36
|
+
argTypes: {
|
|
37
|
+
initialStepName: {
|
|
38
|
+
label: 'Initial Step',
|
|
39
|
+
control: 'select',
|
|
40
|
+
options: Object.keys(fixtures),
|
|
41
|
+
},
|
|
42
|
+
revampEnabled: {
|
|
43
|
+
label: 'Enable revamp',
|
|
44
|
+
control: 'boolean',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
args: { initialStepName: Object.keys(fixtures)[1], revampEnabled: false },
|
|
48
|
+
parameters: {
|
|
49
|
+
chromatic: { disableSnapshot: true },
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
export default meta;
|
|
@@ -0,0 +1,132 @@
|
|
|
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, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
49
|
+
/* eslint-disable no-nested-ternary */
|
|
50
|
+
import { action } from '@storybook/addon-actions';
|
|
51
|
+
import { Button } from '@transferwise/components';
|
|
52
|
+
import { useRef, useState } from 'react';
|
|
53
|
+
import { DynamicFragment } from '..';
|
|
54
|
+
import { fixtureHttpClient } from './utils/fixtureHttpClient';
|
|
55
|
+
var step = {
|
|
56
|
+
id: 'dynamic-fragment-story',
|
|
57
|
+
title: 'Dynamic Fragment',
|
|
58
|
+
schemas: [
|
|
59
|
+
{
|
|
60
|
+
$id: '#form',
|
|
61
|
+
type: 'object',
|
|
62
|
+
displayOrder: ['name', 'city'],
|
|
63
|
+
required: ['name'],
|
|
64
|
+
properties: {
|
|
65
|
+
name: { type: 'string', title: 'Name', minLength: 2 },
|
|
66
|
+
city: {
|
|
67
|
+
title: 'City',
|
|
68
|
+
oneOf: [
|
|
69
|
+
{ title: 'London', const: 'London', icon: { name: 'flag-gb' } },
|
|
70
|
+
{ title: 'Paris', const: 'Paris', icon: { name: 'flag-fr' } },
|
|
71
|
+
{ title: 'New York', const: 'New York', icon: { name: 'flag-us' } },
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
layout: [
|
|
78
|
+
{
|
|
79
|
+
type: 'form',
|
|
80
|
+
schemaId: '#form',
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
function DynamicFragmentStory() {
|
|
85
|
+
var _this = this;
|
|
86
|
+
var ref = useRef(null);
|
|
87
|
+
var props = {
|
|
88
|
+
flowId: 'storybook',
|
|
89
|
+
analyticsId: 'storybook',
|
|
90
|
+
customFetch: fixtureHttpClient,
|
|
91
|
+
onCompletion: action('onCompletion'),
|
|
92
|
+
onValueChange: action('onValueChange'),
|
|
93
|
+
onError: action('onError'),
|
|
94
|
+
onEvent: action('onEvent'),
|
|
95
|
+
onLog: action('onLog'),
|
|
96
|
+
};
|
|
97
|
+
var _a = useState(''), currentValue = _a[0], setCurrentValue = _a[1];
|
|
98
|
+
var _b = useState(null), isValid = _b[0], setValid = _b[1];
|
|
99
|
+
var backgroundColor = isValid === null ? '#eeeeee' : isValid ? '#eeffee' : '#ffeeee';
|
|
100
|
+
var validityText = isValid === null ? '' : isValid ? '✅ valid\n\n' : '❌ invalid\n\n';
|
|
101
|
+
return (_jsxs(_Fragment, { children: [_jsx(DynamicFragment, __assign({ ref: ref }, props, { initialStep: step, onValueChange: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
102
|
+
var newValue;
|
|
103
|
+
var _a, _b;
|
|
104
|
+
return __generator(this, function (_c) {
|
|
105
|
+
switch (_c.label) {
|
|
106
|
+
case 0: return [4 /*yield*/, ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.getValue())];
|
|
107
|
+
case 1:
|
|
108
|
+
newValue = (_b = (_c.sent())) !== null && _b !== void 0 ? _b : null;
|
|
109
|
+
setCurrentValue(JSON.stringify(newValue, null, 2));
|
|
110
|
+
return [2 /*return*/];
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}); } }), JSON.stringify(step)), _jsx(Button, { onClick: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
114
|
+
var ok;
|
|
115
|
+
var _a, _b;
|
|
116
|
+
return __generator(this, function (_c) {
|
|
117
|
+
ok = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.validate()) !== null && _b !== void 0 ? _b : false;
|
|
118
|
+
setValid(ok);
|
|
119
|
+
return [2 /*return*/];
|
|
120
|
+
});
|
|
121
|
+
}); }, children: "validate()" }), _jsx("hr", {}), _jsxs("pre", { style: { backgroundColor: backgroundColor }, children: [validityText, currentValue] })] }));
|
|
122
|
+
}
|
|
123
|
+
var meta = {
|
|
124
|
+
title: 'Dynamic Fragment',
|
|
125
|
+
component: DynamicFragmentStory,
|
|
126
|
+
};
|
|
127
|
+
export var AllFixtures = {
|
|
128
|
+
parameters: {
|
|
129
|
+
chromatic: { disableSnapshot: true },
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
export default meta;
|
|
@@ -0,0 +1,70 @@
|
|
|
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, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
|
+
/* eslint-disable react/forbid-dom-props */
|
|
14
|
+
import { layouts, schemas, examples, features } from '@wise/dynamic-flow-fixtures';
|
|
15
|
+
import { useMemo, useState } from 'react';
|
|
16
|
+
import DynamicFlowSideBySide from './utils/DynamicFlowSideBySide';
|
|
17
|
+
var fixtures = __assign(__assign(__assign(__assign({}, features), schemas), layouts), examples);
|
|
18
|
+
export function Editable(_a) {
|
|
19
|
+
var _b = _a.initialStepName, initialStepName = _b === void 0 ? '' : _b;
|
|
20
|
+
var selectedStep = fixtures[initialStepName] || {};
|
|
21
|
+
var selectedInitialStep = JSON.stringify(selectedStep, null, 2);
|
|
22
|
+
return _jsx(InteractiveDemo, { selectedInitialStep: selectedInitialStep }, selectedInitialStep);
|
|
23
|
+
}
|
|
24
|
+
function InteractiveDemo(_a) {
|
|
25
|
+
var selectedInitialStep = _a.selectedInitialStep;
|
|
26
|
+
var _b = useState(200), initialStatusCode = _b[0], setInitialStatusCode = _b[1];
|
|
27
|
+
var _c = useState(selectedInitialStep), initialStep = _c[0], setInitialStep = _c[1];
|
|
28
|
+
var onTextAreaChange = function (event) {
|
|
29
|
+
setInitialStep(event.target.value);
|
|
30
|
+
};
|
|
31
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx("h3", { children: "Editable Demo" }), _jsx("p", { children: "You can specify a response status code and body, and DF will load your step below." }), _jsxs("fieldset", { children: [_jsx("label", { htmlFor: "status-code", children: "Response Status code: " }), _jsx(StatusCodeSelect, { id: "status-code", state: [initialStatusCode, setInitialStatusCode] })] }), _jsxs("fieldset", { children: [_jsx("label", { htmlFor: "textarea", children: "Response Body:" }), _jsx(InvalidJsonWarning, { initialStep: initialStep }), _jsx("textarea", { id: "textarea", wrap: "off", rows: 40, style: {
|
|
32
|
+
fontFamily: 'monospace',
|
|
33
|
+
fontSize: '0.9em',
|
|
34
|
+
width: '100%',
|
|
35
|
+
maxHeight: '200px',
|
|
36
|
+
}, value: initialStep, onChange: onTextAreaChange })] })] }), isValidJson(initialStep) ? (_jsx(DynamicFlowSideBySide, { initialStep: JSON.parse(initialStep) }, "".concat(initialStep, "-").concat(initialStatusCode))) : null] }));
|
|
37
|
+
}
|
|
38
|
+
function InvalidJsonWarning(_a) {
|
|
39
|
+
var initialStep = _a.initialStep;
|
|
40
|
+
var validJson = useMemo(function () { return isValidJson(initialStep); }, [initialStep]);
|
|
41
|
+
return !validJson ? (_jsx("p", { children: "\u274C Invalid syntax or missing elements are preventing the JSON code you entered from being parsed." })) : null;
|
|
42
|
+
}
|
|
43
|
+
var isValidJson = function (value) {
|
|
44
|
+
try {
|
|
45
|
+
JSON.parse(value);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch (_a) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
function StatusCodeSelect(_a) {
|
|
53
|
+
var id = _a.id, _b = _a.state, value = _b[0], setValue = _b[1];
|
|
54
|
+
return (_jsxs("select", { id: id, value: value, onChange: function (event) { return setValue(Number.parseInt(event.target.value, 10)); }, children: [_jsx("option", { children: "200" }), _jsx("option", { children: "400" }), _jsx("option", { children: "500" })] }));
|
|
55
|
+
}
|
|
56
|
+
export default {
|
|
57
|
+
component: Editable,
|
|
58
|
+
title: 'Multi-fixture',
|
|
59
|
+
parameters: {
|
|
60
|
+
chromatic: { disableSnapshot: true },
|
|
61
|
+
},
|
|
62
|
+
argTypes: {
|
|
63
|
+
initialStepName: {
|
|
64
|
+
label: 'Initial Step',
|
|
65
|
+
control: 'select',
|
|
66
|
+
options: Object.keys(fixtures),
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
args: { initialStepName: Object.keys(fixtures)[0] },
|
|
70
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
import { examples } from '@wise/dynamic-flow-fixtures';
|
|
4
|
+
import DynamicFlowSideBySide from './utils/DynamicFlowSideBySide';
|
|
5
|
+
import { getObjectKeys } from './utils/fixtureHttpClient';
|
|
6
|
+
var storyMap = {};
|
|
7
|
+
var allStepNames = getObjectKeys(examples);
|
|
8
|
+
allStepNames.forEach(function (stepName) {
|
|
9
|
+
// eslint-disable-next-line import/namespace
|
|
10
|
+
var label = examples[stepName].id;
|
|
11
|
+
if (label) {
|
|
12
|
+
var _a = label.split('/'), group = _a[0], name_1 = _a[1];
|
|
13
|
+
storyMap[group] || (storyMap[group] = storiesOf("Examples/".concat(group), module).addParameters({
|
|
14
|
+
chromatic: { disableSnapshot: true },
|
|
15
|
+
}));
|
|
16
|
+
storyMap[group].add(name_1, function () { return (
|
|
17
|
+
// eslint-disable-next-line import/namespace
|
|
18
|
+
_jsx(DynamicFlowSideBySide, { initialStep: examples[stepName] }, stepName)); });
|
|
19
|
+
}
|
|
20
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
import { features } from '@wise/dynamic-flow-fixtures';
|
|
4
|
+
import DynamicFlowSideBySide from './utils/DynamicFlowSideBySide';
|
|
5
|
+
var storyMap = {};
|
|
6
|
+
var selectedStepNames = [
|
|
7
|
+
'actionResponse',
|
|
8
|
+
'arrayUploadBase64',
|
|
9
|
+
'external',
|
|
10
|
+
'persistAsync',
|
|
11
|
+
'polling',
|
|
12
|
+
'search',
|
|
13
|
+
'modal',
|
|
14
|
+
];
|
|
15
|
+
selectedStepNames.forEach(function (stepName) {
|
|
16
|
+
// eslint-disable-next-line import/namespace
|
|
17
|
+
var label = features[stepName].id;
|
|
18
|
+
if (label) {
|
|
19
|
+
var _a = label.split('/'), group = _a[0], name_1 = _a[1];
|
|
20
|
+
storyMap[group] || (storyMap[group] = storiesOf("Examples/".concat(group), module).addParameters({
|
|
21
|
+
chromatic: { disableSnapshot: true },
|
|
22
|
+
}));
|
|
23
|
+
storyMap[group].add(name_1, function () { return (
|
|
24
|
+
// eslint-disable-next-line import/namespace
|
|
25
|
+
_jsx(DynamicFlowSideBySide, { initialStep: features[stepName] }, stepName)); });
|
|
26
|
+
}
|
|
27
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { action } from '@storybook/addon-actions';
|
|
14
|
+
import { storiesOf } from '@storybook/react';
|
|
15
|
+
import { step, layouts, schemas, generatedJson as generatedFixtures, } from '@wise/dynamic-flow-fixtures';
|
|
16
|
+
import { getObjectKeys } from './utils/fixtureHttpClient';
|
|
17
|
+
import DynamicFlowSideBySide from './utils/DynamicFlowSideBySide';
|
|
18
|
+
var fixtures = __assign(__assign(__assign({}, step), layouts), schemas);
|
|
19
|
+
var storyMap = {};
|
|
20
|
+
var allStepNames = getObjectKeys(fixtures);
|
|
21
|
+
allStepNames.forEach(function (stepName) {
|
|
22
|
+
var label = fixtures[stepName].id;
|
|
23
|
+
if (label) {
|
|
24
|
+
var _a = label.split('/'), group = _a[0], name_1 = _a[1];
|
|
25
|
+
storyMap[group] || (storyMap[group] = storiesOf("Visual Tests/".concat(group), module));
|
|
26
|
+
storyMap[group].add(name_1, function () { return (_jsx(DynamicFlowSideBySide, { initialStep: fixtures[stepName] }, stepName)); });
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
storyMap.generated || (storyMap.generated = storiesOf("Visual Tests/Generated", module));
|
|
30
|
+
Object.keys(generatedFixtures).forEach(function (fixtureName) {
|
|
31
|
+
var _a;
|
|
32
|
+
var initialStep = JSON.parse(
|
|
33
|
+
// eslint-disable-next-line import/namespace
|
|
34
|
+
generatedFixtures[fixtureName]);
|
|
35
|
+
(_a = storyMap.generated) === null || _a === void 0 ? void 0 : _a.add(initialStep.id ? initialStep.id.replaceAll(/([A-Z])/g, ' $1').trim() : 'Invalid id', function () {
|
|
36
|
+
action('Render Step')(initialStep);
|
|
37
|
+
return _jsx(DynamicFlowSideBySide, { initialStep: initialStep }, fixtureName);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { action } from '@storybook/addon-actions';
|
|
14
|
+
import { DynamicFlowRevamp } from '../../dynamicFlow/DynamicFlow';
|
|
15
|
+
import { fixtureHttpClient } from './fixtureHttpClient';
|
|
16
|
+
import { DynamicFlowLegacy } from '../..';
|
|
17
|
+
function DynamicFlowSideBySide(_a) {
|
|
18
|
+
var key = _a.key, initialStep = _a.initialStep;
|
|
19
|
+
var props = {
|
|
20
|
+
flowId: 'storybook',
|
|
21
|
+
customFetch: fixtureHttpClient,
|
|
22
|
+
features: [],
|
|
23
|
+
onCompletion: action('onCompletion'),
|
|
24
|
+
onError: action('onError'),
|
|
25
|
+
onEvent: action('onEvent'),
|
|
26
|
+
onLog: action('onLog'),
|
|
27
|
+
};
|
|
28
|
+
return (_jsxs("div", { className: "df-side-by-side-container", children: [_jsx("div", { className: "df-side-by-side-column", children: _jsx(DynamicFlowLegacy, __assign({}, props, { loaderConfig: { size: 'xl', initial: true, submission: false }, initialStep: initialStep }), "".concat(key, "-original")) }), _jsx("div", { className: "df-side-by-side-column", children: _jsx(DynamicFlowRevamp, __assign({}, props, { initialStep: initialStep }), "".concat(key, "-revamp")) })] }));
|
|
29
|
+
}
|
|
30
|
+
export default DynamicFlowSideBySide;
|
|
@@ -0,0 +1,119 @@
|
|
|
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 { action } from '@storybook/addon-actions';
|
|
49
|
+
import { layouts, features, examples, schemas, responses } from '@wise/dynamic-flow-fixtures';
|
|
50
|
+
export var getObjectKeys = Object.keys;
|
|
51
|
+
var fixtures = __assign(__assign(__assign(__assign({}, examples), schemas), layouts), features);
|
|
52
|
+
var isObject = function (val) {
|
|
53
|
+
return typeof val === 'object' && val !== null;
|
|
54
|
+
};
|
|
55
|
+
export var fixtureHttpClient = function (input, init) { return __awaiter(void 0, void 0, void 0, function () {
|
|
56
|
+
var url;
|
|
57
|
+
return __generator(this, function (_a) {
|
|
58
|
+
action('httpClient')(input, init);
|
|
59
|
+
url = getURL(input);
|
|
60
|
+
if (url.pathname.startsWith('/steps/')) {
|
|
61
|
+
return [2 /*return*/, respondWithFixture(fixtures, url, init)];
|
|
62
|
+
}
|
|
63
|
+
if (url.pathname.startsWith('/responses/')) {
|
|
64
|
+
return [2 /*return*/, respondWithFixture(responses, url, init)];
|
|
65
|
+
}
|
|
66
|
+
if (url.pathname.startsWith('/validate')) {
|
|
67
|
+
return [2 /*return*/, new Response(JSON.stringify({ message: 'Validation-async OK' }))];
|
|
68
|
+
}
|
|
69
|
+
return [2 /*return*/, new Response(null, { status: 404 })];
|
|
70
|
+
});
|
|
71
|
+
}); };
|
|
72
|
+
var getURL = function (input) {
|
|
73
|
+
if (input instanceof URL) {
|
|
74
|
+
return input;
|
|
75
|
+
}
|
|
76
|
+
if (input instanceof Request) {
|
|
77
|
+
return new URL(input.url, 'http://foo');
|
|
78
|
+
}
|
|
79
|
+
return new URL(input, 'http://foo');
|
|
80
|
+
};
|
|
81
|
+
var respondWithFixture = function (fixtureList, url, init) { return __awaiter(void 0, void 0, void 0, function () {
|
|
82
|
+
var fixtureNames, name, fixture, body;
|
|
83
|
+
var _a;
|
|
84
|
+
return __generator(this, function (_b) {
|
|
85
|
+
switch (_b.label) {
|
|
86
|
+
case 0:
|
|
87
|
+
fixtureNames = getObjectKeys(fixtureList);
|
|
88
|
+
name = url.pathname
|
|
89
|
+
.split('/')
|
|
90
|
+
.filter(function (part) { return Boolean(part); })
|
|
91
|
+
.pop();
|
|
92
|
+
if (!fixtureNames.includes(name !== null && name !== void 0 ? name : '')) return [3 /*break*/, 3];
|
|
93
|
+
fixture = fixtureList[name];
|
|
94
|
+
if (!url.searchParams.has('delay')) return [3 /*break*/, 2];
|
|
95
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
96
|
+
setTimeout(resolve, Number(url.searchParams.get('delay')));
|
|
97
|
+
})];
|
|
98
|
+
case 1:
|
|
99
|
+
_b.sent();
|
|
100
|
+
_b.label = 2;
|
|
101
|
+
case 2:
|
|
102
|
+
// by convention if the url contains a "refresh"query parameterm we use the payload as model
|
|
103
|
+
if (url.searchParams.has('refresh') &&
|
|
104
|
+
(init === null || init === void 0 ? void 0 : init.body) &&
|
|
105
|
+
typeof init.body === 'string' &&
|
|
106
|
+
isObject(fixture)) {
|
|
107
|
+
body = JSON.parse(init.body);
|
|
108
|
+
return [2 /*return*/, new Response(JSON.stringify(__assign(__assign({}, fixture), { model: __assign(__assign({}, ((_a = fixture.model) !== null && _a !== void 0 ? _a : {})), body) })))];
|
|
109
|
+
}
|
|
110
|
+
if (url.pathname.includes('exit')) {
|
|
111
|
+
return [2 /*return*/, new Response(JSON.stringify(fixture), { headers: { 'X-DF-Exit': 'true' } })];
|
|
112
|
+
}
|
|
113
|
+
return [2 /*return*/, new Response(JSON.stringify(fixture))];
|
|
114
|
+
case 3:
|
|
115
|
+
action('ERROR 404')(url);
|
|
116
|
+
return [2 /*return*/, new Response(null, { status: 404 })];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}); };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { Provider as ComponentProvider, DEFAULT_LANG, DEFAULT_LOCALE, SnackbarProvider, translations as componentTranslations, getLangFromLocale, } from '@transferwise/components';
|
|
14
|
+
import { ThemeProvider } from '@wise/components-theming';
|
|
15
|
+
import { translations } from '@wise/dynamic-flow-client';
|
|
16
|
+
var locale = DEFAULT_LOCALE;
|
|
17
|
+
var lang = getLangFromLocale(locale) || DEFAULT_LANG;
|
|
18
|
+
var messages = __assign(__assign({}, componentTranslations[lang]), translations[lang]);
|
|
19
|
+
function NeptuneProviders(_a) {
|
|
20
|
+
var children = _a.children;
|
|
21
|
+
return (_jsx(ThemeProvider, { theme: "personal", screenMode: "light", children: _jsx(SnackbarProvider, { children: _jsx(ComponentProvider, { i18n: { locale: locale, messages: messages }, children: children }) }) }));
|
|
22
|
+
}
|
|
23
|
+
export default NeptuneProviders;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { render } from '@testing-library/react';
|
|
14
|
+
import NeptuneProviders from './NeptuneProviders';
|
|
15
|
+
export var renderWithProviders = function (children, options) {
|
|
16
|
+
var renderedResult = render(_jsx(NeptuneProviders, { children: children }), options);
|
|
17
|
+
return __assign(__assign({}, renderedResult), { rerender: function (ui, renderOptions) {
|
|
18
|
+
return renderWithProviders(ui, __assign({ container: renderedResult.container }, renderOptions));
|
|
19
|
+
} });
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mergeRequestInit: (init?: RequestInit, additionalInit?: RequestInit) => RequestInit;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wise/dynamic-flow-client-internal",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.1-experimental-152372b",
|
|
4
4
|
"description": "Dynamic Flow web client for Wise",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "./build/main.min.js",
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
"stylelint-value-no-unknown-custom-properties": "6.0.1",
|
|
73
73
|
"typescript": "5.1.6",
|
|
74
74
|
"webpack": "5.91.0",
|
|
75
|
-
"@wise/dynamic-flow-
|
|
76
|
-
"@wise/dynamic-flow-
|
|
75
|
+
"@wise/dynamic-flow-fixtures": "0.0.1",
|
|
76
|
+
"@wise/dynamic-flow-types": "2.15.0-experimental-152372b"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"react": "^18",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"react-intl": "^6"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@wise/dynamic-flow-client": "3.9.
|
|
84
|
+
"@wise/dynamic-flow-client": "3.9.1-experimental-152372b"
|
|
85
85
|
},
|
|
86
86
|
"scripts": {
|
|
87
87
|
"dev": "storybook dev -p 3005",
|