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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/build/common/httpClientContext/HttpClientContext.js +35 -0
  2. package/build/common/httpClientContext/index.js +1 -0
  3. package/build/common/makeHttpClient/index.js +1 -0
  4. package/build/common/makeHttpClient/makeHttpClient.js +34 -0
  5. package/build/common/messages/generic-error.messages.js +18 -0
  6. package/build/common/messages/help.messages.js +8 -0
  7. package/build/common/messages/multi-file-upload.messages.js +18 -0
  8. package/build/common/messages/paragraph.messages.js +13 -0
  9. package/build/common/messages/repeatable.messages.js +23 -0
  10. package/build/common/messages/validation.array.messages.js +13 -0
  11. package/build/common/messages/validation.messages.js +53 -0
  12. package/build/common/utils/api-utils.js +4 -0
  13. package/build/legacy/common/constants/DateMode.js +4 -0
  14. package/build/legacy/common/constants/FeatureName.js +4 -0
  15. package/build/legacy/common/constants/FormControlType.js +21 -0
  16. package/build/legacy/common/constants/MonthFormat.js +4 -0
  17. package/build/legacy/common/constants/Size.js +7 -0
  18. package/build/legacy/common/constants/index.js +4 -0
  19. package/build/legacy/common/contexts/dynamicFlowContexts/DynamicFlowContexts.js +36 -0
  20. package/build/legacy/common/contexts/dynamicFlowContexts/usePendingPromiseCounter.js +13 -0
  21. package/build/legacy/common/contexts/eventsContext/EventsContext.js +38 -0
  22. package/build/legacy/common/contexts/featureContext/FeatureContext.js +22 -0
  23. package/build/legacy/common/contexts/index.js +3 -0
  24. package/build/legacy/common/contexts/logContext/LogContext.js +44 -0
  25. package/build/legacy/common/hooks/index.js +7 -0
  26. package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.js +9 -0
  27. package/build/legacy/common/hooks/useExternal/useExternal.js +15 -0
  28. package/build/legacy/common/hooks/useExternalStepPolling/useExternalStepPolling.js +70 -0
  29. package/build/legacy/common/hooks/usePersistAsync/usePersistAsync.js +172 -0
  30. package/build/legacy/common/hooks/usePolling/usePolling.js +51 -0
  31. package/build/legacy/common/hooks/usePrevious/usePrevious.js +8 -0
  32. package/build/legacy/common/hooks/useStepPolling/useStepPolling.js +43 -0
  33. package/build/legacy/common/messages.js +8 -0
  34. package/build/legacy/common/utils/api-utils.js +6 -0
  35. package/build/legacy/common/utils/date-utils.js +22 -0
  36. package/build/legacy/common/utils/debounce.js +38 -0
  37. package/build/legacy/common/utils/file-utils.js +45 -0
  38. package/build/legacy/common/utils/id-utils.js +5 -0
  39. package/build/legacy/common/utils/index.js +11 -0
  40. package/build/legacy/common/utils/is-equal.js +21 -0
  41. package/build/legacy/common/utils/misc-utils.js +4 -0
  42. package/build/legacy/common/utils/mobile-utils.js +23 -0
  43. package/build/legacy/common/utils/model-utils.js +33 -0
  44. package/build/legacy/common/utils/schema-utils.js +97 -0
  45. package/build/legacy/common/utils/step-utils.js +32 -0
  46. package/build/legacy/common/validators/index.js +5 -0
  47. package/build/legacy/common/validators/models/model-utils.js +119 -0
  48. package/build/legacy/common/validators/models/model-validators.js +62 -0
  49. package/build/legacy/common/validators/schemas/schema-validators.js +101 -0
  50. package/build/legacy/common/validators/types/type-validators.js +14 -0
  51. package/build/legacy/common/validators/validationFailures/validation-failures.js +139 -0
  52. package/build/legacy/common/validators/validationFailures/validation-failures.utils.js +40 -0
  53. package/build/legacy/common/validators/values/value-validators.js +6 -0
  54. package/build/legacy/dynamic-flow-types.js +1 -0
  55. package/build/legacy/dynamicFlow/BackButton.js +22 -0
  56. package/build/legacy/dynamicFlow/DynamicFlowStep.js +37 -0
  57. package/build/legacy/formControl/FormControl.js +266 -0
  58. package/build/legacy/formControl/index.js +1 -0
  59. package/build/legacy/formControl/utils/getAutocompleteString.js +80 -0
  60. package/build/legacy/formControl/utils/index.js +2 -0
  61. package/build/legacy/formControl/utils/value-utils.js +108 -0
  62. package/build/legacy/jsonSchemaForm/allOfSchema/AllOfSchema.js +50 -0
  63. package/build/legacy/jsonSchemaForm/allOfSchema/index.js +1 -0
  64. package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +25 -0
  65. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +30 -0
  66. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/MultipleFileUploadSchema.js +141 -0
  67. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/index.js +1 -0
  68. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/index.js +2 -0
  69. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/upload-utils.js +79 -0
  70. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/multipleFileUploadSchema/utils/useFormattedDefaultErrorMessages.js +14 -0
  71. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/ItemSummary.js +7 -0
  72. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +134 -0
  73. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +85 -0
  74. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +135 -0
  75. package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +1 -0
  76. package/build/legacy/jsonSchemaForm/basicTypeSchema/BasicTypeSchema.js +111 -0
  77. package/build/legacy/jsonSchemaForm/basicTypeSchema/index.js +1 -0
  78. package/build/legacy/jsonSchemaForm/controlFeedback/ControlFeedback.js +86 -0
  79. package/build/legacy/jsonSchemaForm/controlFeedback/index.js +1 -0
  80. package/build/legacy/jsonSchemaForm/help/Help.js +20 -0
  81. package/build/legacy/jsonSchemaForm/help/index.js +1 -0
  82. package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +77 -0
  83. package/build/legacy/jsonSchemaForm/objectSchema/index.js +1 -0
  84. package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +155 -0
  85. package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +1 -0
  86. package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +68 -0
  87. package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +26 -0
  88. package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +1 -0
  89. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/PersistAsyncBasicSchema.js +165 -0
  90. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +1 -0
  91. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +131 -0
  92. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +31 -0
  93. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +1 -0
  94. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +72 -0
  95. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +1 -0
  96. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +8 -0
  97. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +27 -0
  98. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +31 -0
  99. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +32 -0
  100. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +54 -0
  101. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +13 -0
  102. package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +1 -0
  103. package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.js +133 -0
  104. package/build/legacy/jsonSchemaForm/schemaFormControl/index.js +1 -0
  105. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/index.js +1 -0
  106. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.js +107 -0
  107. package/build/legacy/layout/DynamicLayout.js +68 -0
  108. package/build/legacy/layout/alert/DynamicAlert.js +29 -0
  109. package/build/legacy/layout/box/DynamicBox.js +41 -0
  110. package/build/legacy/layout/button/DynamicButton.js +27 -0
  111. package/build/legacy/layout/button/utils.js +45 -0
  112. package/build/legacy/layout/columns/DynamicColumns.js +38 -0
  113. package/build/legacy/layout/decision/DynamicDecision.js +21 -0
  114. package/build/legacy/layout/divider/DynamicDivider.js +9 -0
  115. package/build/legacy/layout/external/DynamicExternal.js +32 -0
  116. package/build/legacy/layout/external/DynamicExternal.messages.js +8 -0
  117. package/build/legacy/layout/form/DynamicForm.js +22 -0
  118. package/build/legacy/layout/heading/DynamicHeading.js +51 -0
  119. package/build/legacy/layout/icon/DynamicIcon.js +17 -0
  120. package/build/legacy/layout/icon/FlagIcon.js +198 -0
  121. package/build/legacy/layout/icon/NamedIcon.js +19 -0
  122. package/build/legacy/layout/image/DynamicImage.js +111 -0
  123. package/build/legacy/layout/index.js +20 -0
  124. package/build/legacy/layout/instructions/DynamicInstructions.js +30 -0
  125. package/build/legacy/layout/list/DynamicStatusList.js +37 -0
  126. package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.js +11 -0
  127. package/build/legacy/layout/markdown/DynamicMarkdown.js +23 -0
  128. package/build/legacy/layout/modal/DynamicModal.js +26 -0
  129. package/build/legacy/layout/paragraph/DynamicParagraph.js +46 -0
  130. package/build/legacy/layout/paragraph/useSnackBarIfAvailable.js +9 -0
  131. package/build/legacy/layout/review/DynamicReview.js +58 -0
  132. package/build/legacy/layout/search/DynamicSearch.js +58 -0
  133. package/build/legacy/layout/search/SearchInput.js +17 -0
  134. package/build/legacy/layout/search/SearchResults.js +31 -0
  135. package/build/legacy/layout/search/useSearch.js +137 -0
  136. package/build/legacy/layout/utils/getNavigationOptionMedia.js +28 -0
  137. package/build/legacy/layout/utils/index.js +32 -0
  138. package/build/legacy/step/cameraStep/CameraStep.js +124 -0
  139. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +161 -0
  140. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.messages.js +58 -0
  141. package/build/legacy/step/cameraStep/cameraCapture/components/bottomBar/BottomBar.js +28 -0
  142. package/build/legacy/step/cameraStep/cameraCapture/components/index.js +3 -0
  143. package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.js +19 -0
  144. package/build/legacy/step/cameraStep/cameraCapture/components/orientationLockOverlay/OrientationLockOverlay.messages.js +8 -0
  145. package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +60 -0
  146. package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +80 -0
  147. package/build/legacy/step/cameraStep/cameraCapture/index.js +1 -0
  148. package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +77 -0
  149. package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +18 -0
  150. package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +1 -0
  151. package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +109 -0
  152. package/build/legacy/step/cameraStep/cameraCapture/types/index.js +7 -0
  153. package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +107 -0
  154. package/build/legacy/step/cameraStep/index.js +1 -0
  155. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +64 -0
  156. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.messages.js +23 -0
  157. package/build/legacy/step/externalConfirmationStep/index.js +1 -0
  158. package/build/legacy/step/index.js +3 -0
  159. package/build/legacy/step/layoutStep/LayoutStep.js +33 -0
  160. package/build/legacy/step/layoutStep/index.js +1 -0
  161. package/build/legacy/step/layoutStep/utils/index.js +2 -0
  162. package/build/legacy/step/layoutStep/utils/inline-reference-utils.js +105 -0
  163. package/build/legacy/step/layoutStep/utils/layout-utils.js +212 -0
  164. package/build/main.js +13 -28
  165. package/build/main.min.js +1 -1
  166. package/build/main.mjs +13 -28
  167. package/build/types/revamp/domain/features/events.d.ts +1 -1
  168. package/package.json +1 -1
@@ -0,0 +1,141 @@
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 } from "react/jsx-runtime";
49
+ import { Status, UploadInput, } from '@transferwise/components';
50
+ import classNames from 'classnames';
51
+ import { useMemo, useState } from 'react';
52
+ import { useEventDispatcher } from '../../../../common/contexts';
53
+ import { usePersistAsync } from '../../../../common/hooks';
54
+ import { areFilesSame, toKilobytes, generateRandomId, isBlobSchema, } from '../../../../common/utils';
55
+ import { isNumber, isString, getArrayValidationFailures } from '../../../../common/validators';
56
+ import ControlFeedback from '../../../controlFeedback';
57
+ import { constructUploadResponse, constructUploadError, createPayload } from './utils';
58
+ import { useFormattedDefaultErrorMessages } from './utils/useFormattedDefaultErrorMessages';
59
+ function MultipleFileUploadSchema(props) {
60
+ var _this = this;
61
+ var _a, _b;
62
+ var onChange = props.onChange, schema = props.schema;
63
+ var onEvent = useEventDispatcher();
64
+ var defaultErrorMessages = useFormattedDefaultErrorMessages(schema);
65
+ var uid = useMemo(function () { return schema.$id || generateRandomId(); }, [schema.$id]);
66
+ var _c = useState(false), inputChanged = _c[0], setInputChanged = _c[1];
67
+ var _d = useState(function () { return convertFileIdsToComponentFileObjects(props.model || []); }), files = _d[0], setFiles = _d[1];
68
+ var performPersistAsync = usePersistAsync(schema.items.persistAsync);
69
+ var fileSchemaDescriptor = schema.items.persistAsync.schema;
70
+ var isBlob = isBlobSchema(fileSchemaDescriptor);
71
+ var uploadFile = function (userUploadedFile) { return __awaiter(_this, void 0, void 0, function () {
72
+ var payload, response, error_1;
73
+ return __generator(this, function (_a) {
74
+ switch (_a.label) {
75
+ case 0:
76
+ setInputChanged(true);
77
+ _a.label = 1;
78
+ case 1:
79
+ _a.trys.push([1, 4, , 5]);
80
+ return [4 /*yield*/, createPayload(userUploadedFile, isBlob)];
81
+ case 2:
82
+ payload = _a.sent();
83
+ onEvent('Dynamic Flow - PersistAsync', { status: 'pending', schemaId: schema.$id });
84
+ return [4 /*yield*/, performPersistAsync(payload)];
85
+ case 3:
86
+ response = _a.sent();
87
+ onEvent('Dynamic Flow - PersistAsync', { status: 'success', schemaId: schema.$id });
88
+ return [2 /*return*/, constructUploadResponse(response)];
89
+ case 4:
90
+ error_1 = _a.sent();
91
+ onEvent('Dynamic Flow - PersistAsync', { status: 'failure', schemaId: schema.$id });
92
+ return [2 /*return*/, Promise.reject(constructUploadError(error_1))];
93
+ case 5: return [2 /*return*/];
94
+ }
95
+ });
96
+ }); };
97
+ function onFilesChange(newFiles) {
98
+ if (areFilesSame(newFiles, files)) {
99
+ return;
100
+ }
101
+ setFiles(newFiles);
102
+ var validFiles = getSuccessfullyProcessedFiles(newFiles);
103
+ var data = validFiles.map(function (file) { return file.id; });
104
+ onChange({
105
+ model: data,
106
+ triggerSchema: schema,
107
+ triggerModel: data
108
+ });
109
+ }
110
+ var validFiles = getSuccessfullyProcessedFiles(files);
111
+ var fileIds = validFiles.map(function (file) { return file.id; });
112
+ var fileListValidationFailures = getArrayValidationFailures(fileIds, schema, props.required);
113
+ var showError = Boolean(props.errors) ||
114
+ ((inputChanged || props.submitted) && Boolean(fileListValidationFailures.length));
115
+ var accepts = 'accepts' in fileSchemaDescriptor && fileSchemaDescriptor.accepts;
116
+ var maxSize = 'maxSize' in fileSchemaDescriptor && fileSchemaDescriptor.maxSize;
117
+ var uploadInputProps = __assign(__assign(__assign({ multiple: true, className: 'form-control', files: files, fileInputName: uid, id: uid }, (accepts ? { fileTypes: accepts } : undefined)), (maxSize ? { sizeLimit: toKilobytes(maxSize) } : undefined)), { sizeLimitErrorMessage: ((_a = fileSchemaDescriptor.validationMessages) === null || _a === void 0 ? void 0 : _a.maxSize) ||
118
+ defaultErrorMessages.maxFileSizeErrorMessage, maxFiles: props.schema.maxItems, maxFilesErrorMessage: ((_b = props.schema.validationMessages) === null || _b === void 0 ? void 0 : _b.maxItems) || defaultErrorMessages.maxItemsErrorMessage, uploadButtonTitle: fileSchemaDescriptor.title, description: fileSchemaDescriptor.description, disabled: props.disabled, onUploadFile: function (formData) { return uploadFile(formData.get(uid)); }, onFilesChange: onFilesChange, onDeleteFile: function () { return Promise.resolve(); } });
119
+ var feedbackId = "".concat(uid, "-feedback");
120
+ return (_jsxs("div", __assign({ className: classNames('form-group', { 'has-error': showError }) }, { children: [_jsx("label", __assign({ className: "d-block control-label", htmlFor: uid }, { children: props.schema.title })), _jsx("div", __assign({ "aria-describedby": feedbackId }, { children: _jsx(UploadInput, __assign({}, uploadInputProps)) })), _jsx(ControlFeedback, { id: feedbackId, changed: inputChanged, submitted: props.submitted, errors: props.errors, schema: props.schema, validations: fileListValidationFailures, validationMessages: getValidationMessages(schema, Boolean(props.required), defaultErrorMessages), infoMessage: null, focused: false, blurred: true })] })));
121
+ }
122
+ MultipleFileUploadSchema.defaultProps = {
123
+ errors: null,
124
+ required: false
125
+ };
126
+ export default MultipleFileUploadSchema;
127
+ function getSuccessfullyProcessedFiles(allFiles) {
128
+ return allFiles.filter(function (file) { return !file.error && file.status === 'succeeded'; });
129
+ }
130
+ function convertFileIdsToComponentFileObjects(fileIds) {
131
+ return fileIds
132
+ .map(function (id) { return (isValidId(id) ? { id: id, status: Status.SUCCEEDED } : null); })
133
+ .filter(function (item) { return item !== null; });
134
+ }
135
+ function isValidId(id) {
136
+ return isNumber(id) || isString(id);
137
+ }
138
+ function getValidationMessages(schema, required, defaultErrorMessages) {
139
+ var minItems = schema.minItems, maxItems = schema.maxItems;
140
+ return __assign(__assign(__assign({}, (required && { required: defaultErrorMessages.requiredMessage })), (minItems && { minItems: defaultErrorMessages.minItemsErrorMessage })), (maxItems && { maxItems: defaultErrorMessages.maxItemsErrorMessage }));
141
+ }
@@ -0,0 +1 @@
1
+ export { default } from './MultipleFileUploadSchema';
@@ -0,0 +1,2 @@
1
+ export * from './upload-utils';
2
+ export * from './useFormattedDefaultErrorMessages';
@@ -0,0 +1,79 @@
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 { toBase64, generateRandomId } from '../../../../../common/utils';
49
+ import { isObject, isString } from '../../../../../common/validators';
50
+ export function createPayload(userUploadedFile, isBlobSchema) {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ return __generator(this, function (_a) {
53
+ if (isBlobSchema) {
54
+ return [2 /*return*/, userUploadedFile];
55
+ }
56
+ if (userUploadedFile instanceof Blob) {
57
+ return [2 /*return*/, toBase64(userUploadedFile)];
58
+ }
59
+ throw new Error('Error creating payload for MultipleFileUploadSchema. Uploaded file is not an instance of Blob.');
60
+ });
61
+ });
62
+ }
63
+ export function constructUploadResponse(response) {
64
+ var id = response.data;
65
+ return __assign({ id: id }, response);
66
+ }
67
+ export function constructUploadError(response) {
68
+ var isError = response instanceof Error;
69
+ var hasValidData = isObject(response) && 'data' in response;
70
+ var isInvalidResponseData = !hasValidData && !isError;
71
+ if (isInvalidResponseData) {
72
+ return isString(response) ? response : undefined;
73
+ }
74
+ if (isError) {
75
+ var error = response;
76
+ return { id: generateRandomId(), message: error.message };
77
+ }
78
+ return __assign({ message: isString(response.message) ? response.message : '' }, response);
79
+ }
@@ -0,0 +1,14 @@
1
+ import { useIntl } from 'react-intl';
2
+ import CommonMessages from '../../../../../common/messages';
3
+ import MultiFileUploadMessages from '../../../../../../common/messages/multi-file-upload.messages';
4
+ export function useFormattedDefaultErrorMessages(_a) {
5
+ var maxItems = _a.maxItems, minItems = _a.minItems;
6
+ var formatMessage = useIntl().formatMessage;
7
+ var maxFileSizeError = MultiFileUploadMessages.maxFileSizeError, maxItemsError = MultiFileUploadMessages.maxItemsError, minItemsError = MultiFileUploadMessages.minItemsError;
8
+ return {
9
+ maxFileSizeErrorMessage: formatMessage(maxFileSizeError),
10
+ maxItemsErrorMessage: formatMessage(maxItemsError, { maxItems: maxItems }),
11
+ minItemsErrorMessage: formatMessage(minItemsError, { minItems: minItems }),
12
+ requiredMessage: formatMessage(CommonMessages.required)
13
+ };
14
+ }
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { NavigationOption } from '@transferwise/components';
3
+ import { getNavigationOptionMedia } from '../../../../layout/utils';
4
+ export function ItemSummaryOption(_a) {
5
+ var item = _a.item, onClick = _a.onClick;
6
+ return (_jsx(NavigationOption, { media: getNavigationOptionMedia(item), title: item.title, content: item.description, showMediaAtAllSizes: true, onClick: onClick }));
7
+ }
@@ -0,0 +1,134 @@
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { Header, Modal, NavigationOption } from '@transferwise/components';
23
+ import { Plus } from '@transferwise/icons';
24
+ import { useMemo, useState } from 'react';
25
+ import { useIntl } from 'react-intl';
26
+ import { getValidationFailures, isArray, isEmpty, isObject, isValidSchema, } from '../../../../common/validators';
27
+ import { ItemSummaryOption } from './ItemSummary';
28
+ import messages from '../../../../../common/messages/repeatable.messages';
29
+ import RepeatableSchemaStep from './RepeatableSchemaStep';
30
+ import { getItemSummaryFromSchema } from './utils/summary-utils';
31
+ import classNames from 'classnames';
32
+ import ControlFeedback from '../../../controlFeedback';
33
+ import { generateRandomId } from '../../../../common/utils';
34
+ import { useFormattedDefaultErrorMessages } from '../multipleFileUploadSchema/utils';
35
+ function RepeatableSchema(_a) {
36
+ var _b;
37
+ var schema = _a.schema, model = _a.model, errors = _a.errors, submitted = _a.submitted, _c = _a.required, required = _c === void 0 ? false : _c, onChange = _a.onChange;
38
+ var _d = useState(null), openModalType = _d[0], setOpenModalType = _d[1];
39
+ var _e = useState(false), changed = _e[0], setChanged = _e[1];
40
+ var _f = useState(function () {
41
+ if (isObject(model) && !isArray(model)) {
42
+ throw new Error('RepeatableSchema does not support object models. Ensure your array schema is wrapped inside an object schema.');
43
+ }
44
+ return model
45
+ ? model.map(function (item) { return getItemSummaryFromSchema(schema.items, item, schema === null || schema === void 0 ? void 0 : schema.summary); })
46
+ : null;
47
+ }), itemSummaries = _f[0], setItemSummaries = _f[1];
48
+ var _g = useState({ item: null, model: null }), editableItem = _g[0], setEditableItem = _g[1];
49
+ var id = useMemo(function () { return schema.$id || generateRandomId(); }, [schema.$id]);
50
+ var broadcastModelChange = function (updatedItems) {
51
+ var updatedModel = updatedItems
52
+ ? updatedItems.map(function (_a) {
53
+ var value = _a.value;
54
+ return value;
55
+ })
56
+ : null;
57
+ onChange({
58
+ model: updatedModel,
59
+ triggerSchema: schema.items,
60
+ triggerModel: updatedModel
61
+ });
62
+ };
63
+ var onAddItem = function () {
64
+ setOpenModalType('add');
65
+ };
66
+ var onEditItem = function (item) {
67
+ setEditableItem({ item: item, model: item.value });
68
+ setOpenModalType('edit');
69
+ };
70
+ var onSaveItem = function (action, summaryTextOverride) {
71
+ var _a;
72
+ setChanged(true);
73
+ var updatedItem = action === 'remove'
74
+ ? null
75
+ : getItemSummaryFromSchema(schema.items, editableItem.model, schema.summary, summaryTextOverride);
76
+ if (action !== 'remove' && !isValidSchema((_a = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.value) !== null && _a !== void 0 ? _a : null, schema.items)) {
77
+ return;
78
+ }
79
+ var updatedItemSummaries = getUpdatedItemSummaries(action, {
80
+ originalItem: editableItem.item,
81
+ updatedItem: updatedItem,
82
+ itemSummaries: itemSummaries
83
+ });
84
+ setItemSummaries(updatedItemSummaries);
85
+ broadcastModelChange(updatedItemSummaries);
86
+ setEditableItem({ item: null, model: null });
87
+ setOpenModalType(null);
88
+ };
89
+ var onCancelEdit = function () {
90
+ setEditableItem({ item: null, model: null });
91
+ setOpenModalType(null);
92
+ };
93
+ var formatMessage = useIntl().formatMessage;
94
+ var validations = getValidationFailures(model, schema, required);
95
+ var base64ValidationMessages = useFormattedDefaultErrorMessages({
96
+ minItems: schema.minItems,
97
+ maxItems: schema.maxItems
98
+ });
99
+ var validationMessages = schema.items.type === 'string' && schema.items.format === 'base64url'
100
+ ? {
101
+ minItems: base64ValidationMessages.minItemsErrorMessage,
102
+ maxItems: base64ValidationMessages.maxItemsErrorMessage,
103
+ required: base64ValidationMessages.requiredMessage
104
+ }
105
+ : undefined;
106
+ var formGroupClasses = {
107
+ 'has-error': (_b = (errors && !isEmpty(errors))) !== null && _b !== void 0 ? _b : (submitted && validations.length)
108
+ };
109
+ return (_jsxs("div", __assign({ id: id, className: classNames(formGroupClasses) }, { children: [schema.title && _jsx(Header, { title: schema.title }), itemSummaries === null || itemSummaries === void 0 ? void 0 : itemSummaries.map(function (itemSummary) { return (_jsx(ItemSummaryOption, { item: itemSummary, onClick: function () { return onEditItem(itemSummary); } }, JSON.stringify(itemSummary))); }), _jsx(NavigationOption, { media: _jsx(Plus, {}), title: schema.addItemTitle || formatMessage(messages.addItemTitle), showMediaAtAllSizes: true, onClick: onAddItem }), _jsx(Modal, { open: openModalType !== null, title: (openModalType === 'add' ? schema.addItemTitle : schema.editItemTitle) ||
110
+ formatMessage(messages.addItemTitle), body: _jsx(RepeatableSchemaStep, { type: openModalType !== null && openModalType !== void 0 ? openModalType : 'add', schema: schema, model: editableItem.model, errors: errors, submitted: submitted, onAction: onSaveItem, onModelChange: function (_a) {
111
+ var model = _a.model;
112
+ return setEditableItem(__assign(__assign({}, editableItem), { model: model }));
113
+ } }), onClose: onCancelEdit }), _jsx(ControlFeedback, { id: "".concat(id, "-feedback"), changed: changed, focused: false, blurred: false, errors: typeof errors === 'string' ? errors : undefined, submitted: submitted, schema: schema, validations: validations, validationMessages: validationMessages, infoMessage: null })] })));
114
+ }
115
+ var getUpdatedItemSummaries = function (action, _a) {
116
+ var originalItem = _a.originalItem, updatedItem = _a.updatedItem, itemSummaries = _a.itemSummaries;
117
+ if (action === 'remove') {
118
+ return (itemSummaries || []).filter(function (itemSummary) { return itemSummary !== originalItem; });
119
+ }
120
+ if (!updatedItem) {
121
+ return itemSummaries;
122
+ }
123
+ switch (action) {
124
+ case 'add':
125
+ return __spreadArray(__spreadArray([], (itemSummaries || []), true), [updatedItem], false);
126
+ case 'edit':
127
+ return (itemSummaries || []).map(function (itemSummary) {
128
+ return itemSummary === originalItem ? updatedItem : itemSummary;
129
+ });
130
+ default:
131
+ return null;
132
+ }
133
+ };
134
+ export default RepeatableSchema;
@@ -0,0 +1,85 @@
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 __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
32
+ import { jsx as _jsx } from "react/jsx-runtime";
33
+ import { useState } from 'react';
34
+ import { useIntl } from 'react-intl';
35
+ import { DynamicFlowStep } from '../../../../dynamicFlow/DynamicFlowStep';
36
+ import messages from '../../../../../common/messages/repeatable.messages';
37
+ function RepeatableSchemaStep(_a) {
38
+ var type = _a.type, schema = _a.schema, model = _a.model, errors = _a.errors, submitted = _a.submitted, onModelChange = _a.onModelChange, onAction = _a.onAction;
39
+ var formatMessage = useIntl().formatMessage;
40
+ var _b = useState(undefined), filename = _b[0], setFilename = _b[1];
41
+ var step = {
42
+ layout: __spreadArray([
43
+ {
44
+ type: 'form',
45
+ schema: schema.items
46
+ },
47
+ {
48
+ type: 'button',
49
+ control: 'primary',
50
+ action: {
51
+ url: type,
52
+ title: formatMessage(type === 'add' ? messages.addItem : messages.editItem)
53
+ }
54
+ }
55
+ ], (type === 'edit'
56
+ ? [
57
+ {
58
+ type: 'button',
59
+ context: 'negative',
60
+ action: {
61
+ url: 'remove',
62
+ title: formatMessage(messages.removeItem)
63
+ }
64
+ },
65
+ ]
66
+ : []), true),
67
+ title: '',
68
+ actions: [],
69
+ schemas: []
70
+ };
71
+ var onChange = function (props) {
72
+ var metadata = props.metadata, model = props.model, modelChangeProps = __rest(props, ["metadata", "model"]);
73
+ if (schema.items.format === 'base64url' &&
74
+ typeof model === 'string' &&
75
+ typeof (metadata === null || metadata === void 0 ? void 0 : metadata.filename) === 'string') {
76
+ setFilename(metadata.filename);
77
+ }
78
+ onModelChange(__assign(__assign({}, modelChangeProps), { model: model }));
79
+ };
80
+ return (_jsx(DynamicFlowStep, { step: step, model: model, stepLayoutOptions: { displayStepTitle: false }, submitted: submitted, formErrors: errors, globalError: null, onAction: function (action) {
81
+ onAction(action.url, filename);
82
+ setFilename(undefined);
83
+ }, onModelChange: onChange }));
84
+ }
85
+ export default RepeatableSchemaStep;
@@ -0,0 +1,135 @@
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 { getSchemaType, isConstSchema, isNullableStringModel, isObjectModel, isOneOfObjectSchema, } from '../../../../../common/utils';
13
+ import { isString } from '../../../../../common/validators';
14
+ import { getActiveSchemaIndex, getBestMatchingSchemaIndexForValue, } from '../../../../oneOfSchema/utils';
15
+ export var getItemSummaryFromSchema = function (schema, model, defaults, summaryTextOverride) {
16
+ if (defaults === void 0) { defaults = {}; }
17
+ var _a = defaults.defaultTitle, defaultTitle = _a === void 0 ? '' : _a, _b = defaults.defaultDescription, defaultDescription = _b === void 0 ? '' : _b, defaultIcon = defaults.defaultIcon, defaultImage = defaults.defaultImage;
18
+ var title = getSummaryPropFromSchema({
19
+ schema: schema,
20
+ model: model,
21
+ providesProp: 'providesTitle',
22
+ getValueFromSchema: function (schema, model) {
23
+ return summaryTextOverride !== null && summaryTextOverride !== void 0 ? summaryTextOverride : getStringValueFromSchema(schema, model);
24
+ }
25
+ });
26
+ var description = getSummaryPropFromSchema({
27
+ schema: schema,
28
+ model: model,
29
+ providesProp: 'providesDescription',
30
+ getValueFromSchema: function (schema, model) {
31
+ return summaryTextOverride !== null && summaryTextOverride !== void 0 ? summaryTextOverride : getStringValueFromSchema(schema, model);
32
+ }
33
+ });
34
+ var icon = getSummaryPropFromSchema({
35
+ schema: schema,
36
+ model: model,
37
+ providesProp: 'providesIcon',
38
+ getValueFromSchema: function (schema) { var _a; return (_a = schema.icon) !== null && _a !== void 0 ? _a : null; }
39
+ });
40
+ var image = getSummaryPropFromSchema({
41
+ schema: schema,
42
+ model: model,
43
+ providesProp: 'providesImage',
44
+ getValueFromSchema: function (schema) { var _a; return (_a = schema.image) !== null && _a !== void 0 ? _a : null; }
45
+ });
46
+ return {
47
+ value: model,
48
+ title: title || defaultTitle,
49
+ description: description || defaultDescription,
50
+ icon: icon || defaultIcon,
51
+ image: image || defaultImage
52
+ };
53
+ };
54
+ var getSummaryPropFromSchema = function (props) {
55
+ var schema = props.schema, model = props.model, providesProp = props.providesProp, getValueFromSchema = props.getValueFromSchema;
56
+ var type = getSchemaType(schema);
57
+ if (schemaSummaryProvides(schema.summary, providesProp)) {
58
+ return getValueFromSchema(schema, model);
59
+ }
60
+ switch (type) {
61
+ case 'object': {
62
+ return getObjectValueFromSchema(props);
63
+ }
64
+ case 'oneOf': {
65
+ return getOneOfValueFromSchema(props);
66
+ }
67
+ case 'allOf': {
68
+ return getAllOfValueFromSchema(props);
69
+ }
70
+ default:
71
+ return null;
72
+ }
73
+ };
74
+ var getObjectValueFromSchema = function (props) {
75
+ var schema = props.schema, model = props.model;
76
+ var objectSchema = schema;
77
+ // eslint-disable-next-line guard-for-in, no-restricted-syntax
78
+ for (var propertyKey in objectSchema.properties) {
79
+ var propertySchema = objectSchema.properties[propertyKey];
80
+ var propertyModel = isObjectModel(model) && propertyKey in model ? model[propertyKey] : null;
81
+ var result = getSummaryPropFromSchema(__assign(__assign({}, props), { schema: propertySchema, model: propertyModel }));
82
+ if (result) {
83
+ return result;
84
+ }
85
+ }
86
+ return null;
87
+ };
88
+ var getOneOfValueFromSchema = function (props) {
89
+ var schema = props.schema, model = props.model;
90
+ if (isOneOfObjectSchema(schema)) {
91
+ if (!isObjectModel(model)) {
92
+ return null;
93
+ }
94
+ var activeSchemaIndex_1 = getBestMatchingSchemaIndexForValue(schema, model);
95
+ if (activeSchemaIndex_1 === null || activeSchemaIndex_1 < 0) {
96
+ return null;
97
+ }
98
+ var activeSchema = schema.oneOf[activeSchemaIndex_1];
99
+ return getSummaryPropFromSchema(__assign(__assign({}, props), { schema: activeSchema }));
100
+ }
101
+ var oneOfSchema = schema;
102
+ var activeSchemaIndex = getActiveSchemaIndex(oneOfSchema, model);
103
+ if (activeSchemaIndex === null || activeSchemaIndex < 0) {
104
+ return null;
105
+ }
106
+ return getSummaryPropFromSchema(__assign(__assign({}, props), { schema: oneOfSchema.oneOf[activeSchemaIndex] }));
107
+ };
108
+ var getAllOfValueFromSchema = function (props) {
109
+ var schema = props.schema;
110
+ var allOfSchema = schema;
111
+ for (var _i = 0, _a = allOfSchema.allOf; _i < _a.length; _i++) {
112
+ var childSchema = _a[_i];
113
+ var result = getSummaryPropFromSchema(__assign(__assign({}, props), { schema: childSchema }));
114
+ if (result) {
115
+ return result;
116
+ }
117
+ }
118
+ return null;
119
+ };
120
+ var getStringValueFromSchema = function (schema, model) {
121
+ if (isConstSchema(schema)) {
122
+ if (schema.title) {
123
+ return schema.title;
124
+ }
125
+ if (isString(schema["const"])) {
126
+ return schema["const"];
127
+ }
128
+ return null;
129
+ }
130
+ return isNullableStringModel(model) ? model : null;
131
+ };
132
+ var schemaSummaryProvides = function (summary, providesProp) {
133
+ // eslint-disable-next-line prefer-object-has-own, no-implicit-coercion
134
+ return !!summary && Object.hasOwnProperty.call(summary, providesProp) && Boolean(summary[providesProp]);
135
+ };
@@ -0,0 +1 @@
1
+ export { default } from './ArraySchema';