@wise/dynamic-flow-client 5.13.2-experimental-e750b58 → 5.13.2
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/DynamicFlowCore.js +5 -0
- package/build/common/errorBoundary/ErrorBoundary.js +26 -0
- package/build/common/errorBoundary/ErrorBoundary.test.js +29 -0
- package/build/common/errorBoundary/ErrorBoundaryAlert.js +11 -0
- package/build/common/makeHttpClient/api-utils.js +3 -0
- package/build/common/makeHttpClient/index.js +1 -0
- package/build/common/makeHttpClient/makeHttpClient.js +10 -0
- package/build/common/makeHttpClient/makeHttpClient.test.js +186 -0
- package/build/common/messages/external-confirmation.messages.js +23 -0
- package/build/common/messages/file-upload.messages.js +13 -0
- package/build/common/messages/generic-error.messages.js +18 -0
- package/build/common/messages/help.messages.js +8 -0
- package/build/common/messages/multi-file-upload.messages.js +18 -0
- package/build/common/messages/multi-select.messages.js +8 -0
- package/build/common/messages/paragraph.messages.js +13 -0
- package/build/common/messages/repeatable.messages.js +23 -0
- package/build/common/messages/search.messages.js +8 -0
- package/build/common/messages/validation.array.messages.js +13 -0
- package/build/common/messages/validation.messages.js +53 -0
- package/build/controller/FlowController.js +378 -0
- package/build/controller/executePoll.js +64 -0
- package/build/controller/executeRefresh.js +45 -0
- package/build/controller/executeRequest.js +80 -0
- package/build/controller/executeSubmission.js +70 -0
- package/build/controller/getErrorMessage.js +7 -0
- package/build/controller/getRequestAbortController.js +13 -0
- package/build/controller/getResponseType.js +35 -0
- package/build/controller/getSafeHttpClient.js +8 -0
- package/build/controller/getStepCounter.js +16 -0
- package/build/controller/handleErrorResponse.js +26 -0
- package/build/controller/makeSafeHttpClient.js +8 -0
- package/build/controller/response-utils.js +72 -0
- package/build/controller/response-utils.test.js +52 -0
- package/build/domain/components/AlertComponent.js +1 -0
- package/build/domain/components/AllOfComponent.js +40 -0
- package/build/domain/components/BooleanInputComponent.js +50 -0
- package/build/domain/components/BoxComponent.js +3 -0
- package/build/domain/components/ButtonComponent.js +1 -0
- package/build/domain/components/ColumnsComponent.js +3 -0
- package/build/domain/components/ConstComponent.js +18 -0
- package/build/domain/components/ContainerComponent.js +3 -0
- package/build/domain/components/DateInputComponent.js +75 -0
- package/build/domain/components/DecisionComponent.js +1 -0
- package/build/domain/components/DividerComponent.js +1 -0
- package/build/domain/components/FormComponent.js +3 -0
- package/build/domain/components/FormattedValueComponent.js +44 -0
- package/build/domain/components/HeadingComponent.js +1 -0
- package/build/domain/components/ImageComponent.js +1 -0
- package/build/domain/components/InstructionsComponent.js +1 -0
- package/build/domain/components/IntegerInputComponent.js +74 -0
- package/build/domain/components/ListComponent.js +1 -0
- package/build/domain/components/LoadingIndicatorComponent.js +1 -0
- package/build/domain/components/MarkdownComponent.js +1 -0
- package/build/domain/components/MediaComponent.js +1 -0
- package/build/domain/components/ModalComponent.js +16 -0
- package/build/domain/components/ModalLayoutComponent.js +3 -0
- package/build/domain/components/MoneyInputComponent.js +57 -0
- package/build/domain/components/MultiSelectInputComponent.js +81 -0
- package/build/domain/components/MultiUploadInputComponent.js +88 -0
- package/build/domain/components/NumberInputComponent.js +73 -0
- package/build/domain/components/ObjectComponent.js +45 -0
- package/build/domain/components/ParagraphComponent.js +1 -0
- package/build/domain/components/PersistAsyncComponent.js +92 -0
- package/build/domain/components/ProgressComponent.js +1 -0
- package/build/domain/components/RepeatableComponent.js +103 -0
- package/build/domain/components/ReviewComponent.js +1 -0
- package/build/domain/components/RootDomainComponent.js +173 -0
- package/build/domain/components/SectionComponent.js +5 -0
- package/build/domain/components/SelectInputComponent.js +88 -0
- package/build/domain/components/StatusListComponent.js +1 -0
- package/build/domain/components/SubflowDomainComponent.js +9 -0
- package/build/domain/components/TabsComponent.js +1 -0
- package/build/domain/components/TextInputComponent.js +76 -0
- package/build/domain/components/TupleComponent.js +41 -0
- package/build/domain/components/UploadInputComponent.js +83 -0
- package/build/domain/components/UpsellComponent.js +25 -0
- package/build/domain/components/searchComponent/SearchComponent.js +92 -0
- package/build/domain/components/searchComponent/SearchComponent.test.js +190 -0
- package/build/domain/components/step/ExternalConfirmationComponent.js +24 -0
- package/build/domain/components/step/StepDomainComponent.js +78 -0
- package/build/domain/components/step/ToolbarComponent.js +1 -0
- package/build/domain/components/utils/WithUpdate.js +1 -0
- package/build/domain/components/utils/component-utils.js +12 -0
- package/build/domain/components/utils/debounce.js +34 -0
- package/build/domain/components/utils/debounce.test.js +67 -0
- package/build/domain/components/utils/file-utils.js +21 -0
- package/build/domain/components/utils/file-utils.test.js +27 -0
- package/build/domain/components/utils/getRandomId.js +1 -0
- package/build/domain/components/utils/isExactLocalValueMatch.js +14 -0
- package/build/domain/components/utils/isOrWasValid.js +5 -0
- package/build/domain/components/utils/isPartialModelMatch.js +18 -0
- package/build/domain/components/utils/isPartialModelMatch.test.js +74 -0
- package/build/domain/features/eventNames.js +24 -0
- package/build/domain/features/events.js +1 -0
- package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +50 -0
- package/build/domain/features/persistAsync/getInitialPersistedState.js +7 -0
- package/build/domain/features/persistAsync/getPerformPersistAsync.js +43 -0
- package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +139 -0
- package/build/domain/features/polling/getStepPolling.js +50 -0
- package/build/domain/features/polling/getStepPolling.test.js +115 -0
- package/build/domain/features/prefetch/getStepPrefetch.js +43 -0
- package/build/domain/features/prefetch/request-cache.js +49 -0
- package/build/domain/features/prefetch/request-cache.test.js +70 -0
- package/build/domain/features/refreshAfter/getStepRefreshAfter.js +24 -0
- package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +40 -0
- package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +50 -0
- package/build/domain/features/schema-on-change/getSchemaOnChange.js +34 -0
- package/build/domain/features/search/getPerformSearchFunction.js +75 -0
- package/build/domain/features/search/getPerformSearchFunction.test.js +301 -0
- package/build/domain/features/summary/summary-utils.js +40 -0
- package/build/domain/features/summary/summary-utils.test.js +125 -0
- package/build/domain/features/utils/http-utils.js +21 -0
- package/build/domain/features/utils/response-utils.js +9 -0
- package/build/domain/features/validation/spec-utils.js +19 -0
- package/build/domain/features/validation/validateStringPattern.js +24 -0
- package/build/domain/features/validation/validation-functions.js +6 -0
- package/build/domain/features/validation/validation-functions.test.js +108 -0
- package/build/domain/features/validation/value-checks.js +125 -0
- package/build/domain/features/validation/value-checks.test.js +262 -0
- package/build/domain/features/validationAsync/getComponentValidationAsync.js +53 -0
- package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +67 -0
- package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +5 -0
- package/build/domain/features/validationAsync/getPerformValidationAsync.js +45 -0
- package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +143 -0
- package/build/domain/mappers/layout/alertLayoutToComponent.js +16 -0
- package/build/domain/mappers/layout/boxLayoutToComponent.js +13 -0
- package/build/domain/mappers/layout/buttonLayoutToComponent.js +77 -0
- package/build/domain/mappers/layout/columnsLayoutToComponent.js +13 -0
- package/build/domain/mappers/layout/decisionLayoutToComponent.js +22 -0
- package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +30 -0
- package/build/domain/mappers/layout/dividerLayoutToComponent.js +2 -0
- package/build/domain/mappers/layout/formLayoutToComponent.js +19 -0
- package/build/domain/mappers/layout/headingLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/imageLayoutToComponent.js +20 -0
- package/build/domain/mappers/layout/infoLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/instructionsLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/listLayoutToComponent.js +39 -0
- package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +9 -0
- package/build/domain/mappers/layout/markdownLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/mediaLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/modalLayoutToComponent.js +17 -0
- package/build/domain/mappers/layout/modalToComponent.js +8 -0
- package/build/domain/mappers/layout/paragraphLayoutToComponent.js +12 -0
- package/build/domain/mappers/layout/progressLayoutToComponent.js +15 -0
- package/build/domain/mappers/layout/reviewLayoutToComponent.js +48 -0
- package/build/domain/mappers/layout/searchLayoutToComponent.js +44 -0
- package/build/domain/mappers/layout/sectionLayoutToComponent.js +15 -0
- package/build/domain/mappers/layout/statusListLayoutToComponent.js +15 -0
- package/build/domain/mappers/layout/tabsLayoutToComponent.js +16 -0
- package/build/domain/mappers/layout/upsellLayoutToComponent.js +25 -0
- package/build/domain/mappers/mapLayoutToComponent.js +81 -0
- package/build/domain/mappers/mapSchemaToComponent.js +61 -0
- package/build/domain/mappers/mapSchemaToComponent.test.js +112 -0
- package/build/domain/mappers/mapStepSchemas.js +15 -0
- package/build/domain/mappers/mapStepToComponent.js +133 -0
- package/build/domain/mappers/mapStepToComponent.test.js +221 -0
- package/build/domain/mappers/mapToolbarToComponent.js +15 -0
- package/build/domain/mappers/schema/allOfSchemaToComponent.js +16 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +26 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +55 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +67 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +57 -0
- package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +20 -0
- package/build/domain/mappers/schema/blobSchemaToComponent.js +15 -0
- package/build/domain/mappers/schema/booleanSchemaToComponent.js +29 -0
- package/build/domain/mappers/schema/constSchemaToComponent.js +23 -0
- package/build/domain/mappers/schema/integerSchemaToComponent.js +28 -0
- package/build/domain/mappers/schema/numberSchemaToComponent.js +26 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +23 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +9 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +119 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +96 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +31 -0
- package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +99 -0
- package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +66 -0
- package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +225 -0
- package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +29 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +18 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +133 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +48 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +38 -0
- package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +28 -0
- package/build/domain/mappers/schema/tests/test-utils.js +16 -0
- package/build/domain/mappers/schema/types.js +1 -0
- package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +19 -0
- package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +23 -0
- package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +16 -0
- package/build/domain/mappers/types.js +1 -0
- package/build/domain/mappers/utils/FeatureFlags.js +22 -0
- package/build/domain/mappers/utils/behavior-utils.js +44 -0
- package/build/domain/mappers/utils/call-to-action-utils.js +21 -0
- package/build/domain/mappers/utils/getAutocompleteString.js +76 -0
- package/build/domain/mappers/utils/getAutocompleteString.test.js +21 -0
- package/build/domain/mappers/utils/groupLayoutByPinned.js +38 -0
- package/build/domain/mappers/utils/groupLayoutByPinned.test.js +166 -0
- package/build/domain/mappers/utils/image.js +9 -0
- package/build/domain/mappers/utils/layout-utils.js +11 -0
- package/build/domain/mappers/utils/legacy-utils.js +49 -0
- package/build/domain/mappers/utils/media-utils.js +14 -0
- package/build/domain/mappers/utils/suggestions-utils.js +26 -0
- package/build/domain/mappers/utils/suggestions-utils.test.js +36 -0
- package/build/domain/mappers/utils/tags-utils.js +1 -0
- package/build/domain/mappers/utils/utils.js +35 -0
- package/build/domain/types.js +1 -0
- package/build/getSubflowCallbacks.js +38 -0
- package/build/i18n/index.js +40 -0
- package/build/index.js +8 -0
- package/build/main.js +11 -4
- package/build/main.mjs +11 -4
- package/build/renderers/CoreContainerRenderer.js +5 -0
- package/build/renderers/CoreRootRenderer.js +12 -0
- package/build/renderers/EmptyLoadingStateRenderer.js +5 -0
- package/build/renderers/getRenderFunction.js +24 -0
- package/build/renderers/getSchemaErrorMessageFunction.js +97 -0
- package/build/renderers/mappers/alertComponentToProps.js +2 -0
- package/build/renderers/mappers/allOfComponentToProps.js +6 -0
- package/build/renderers/mappers/booleanInputComponentToProps.js +5 -0
- package/build/renderers/mappers/boxComponentToProps.js +13 -0
- package/build/renderers/mappers/buttonComponentToProps.js +4 -0
- package/build/renderers/mappers/columnsComponentToProps.js +11 -0
- package/build/renderers/mappers/componentToRendererProps.js +164 -0
- package/build/renderers/mappers/constComponentToProps.js +5 -0
- package/build/renderers/mappers/containerComponentToProps.js +7 -0
- package/build/renderers/mappers/dateInputComponentToProps.js +2 -0
- package/build/renderers/mappers/decisionComponentToProps.js +16 -0
- package/build/renderers/mappers/dividerComponentToProps.js +2 -0
- package/build/renderers/mappers/externalComponentToProps.js +3 -0
- package/build/renderers/mappers/formComponentToProps.js +12 -0
- package/build/renderers/mappers/formattedValueComponentToProps.js +5 -0
- package/build/renderers/mappers/headingComponentToProps.js +2 -0
- package/build/renderers/mappers/hiddenComponentToProps.js +4 -0
- package/build/renderers/mappers/imageComponentToProps.js +2 -0
- package/build/renderers/mappers/instructionsComponentToProps.js +2 -0
- package/build/renderers/mappers/integerInputComponentToProps.js +2 -0
- package/build/renderers/mappers/listComponentToProps.js +2 -0
- package/build/renderers/mappers/loadingIndicatorComponentToProps.js +2 -0
- package/build/renderers/mappers/markdownComponentToProps.js +2 -0
- package/build/renderers/mappers/mediaComponentToProps.js +2 -0
- package/build/renderers/mappers/modalComponentToProps.js +11 -0
- package/build/renderers/mappers/modalLayoutComponentToProps.js +16 -0
- package/build/renderers/mappers/moneyInputComponentToProps.js +36 -0
- package/build/renderers/mappers/multiSelectComponentToProps.js +23 -0
- package/build/renderers/mappers/multiUploadInputComponentToProps.js +12 -0
- package/build/renderers/mappers/numberInputComponentToProps.js +2 -0
- package/build/renderers/mappers/objectComponentToProps.js +8 -0
- package/build/renderers/mappers/paragraphComponentToProps.js +2 -0
- package/build/renderers/mappers/persistAsyncComponentToProps.js +8 -0
- package/build/renderers/mappers/progressComponentToProps.js +2 -0
- package/build/renderers/mappers/repeatableComponentToProps.js +30 -0
- package/build/renderers/mappers/reviewComponentToProps.js +2 -0
- package/build/renderers/mappers/rootComponentToProps.js +21 -0
- package/build/renderers/mappers/searchComponentToProps.js +57 -0
- package/build/renderers/mappers/sectionComponentToProps.js +6 -0
- package/build/renderers/mappers/selectInputComponentToProps.js +34 -0
- package/build/renderers/mappers/statusListComponentToProps.js +2 -0
- package/build/renderers/mappers/subflowComponentToRendererProps.js +4 -0
- package/build/renderers/mappers/tabsComponentToProps.js +14 -0
- package/build/renderers/mappers/textInputComponentToProps.js +2 -0
- package/build/renderers/mappers/tupleComponentToProps.js +8 -0
- package/build/renderers/mappers/uploadInputComponentToProps.js +8 -0
- package/build/renderers/mappers/upsellComponentToProps.js +2 -0
- package/build/renderers/mappers/utils/getValidationState.js +12 -0
- package/build/renderers/mappers/utils/inputComponentToProps.js +26 -0
- package/build/renderers/mappers/utils/mapErrorsToValidationState.js +9 -0
- package/build/renderers/mappers/utils/pick.js +8 -0
- package/build/renderers/mappers/utils/selectInputOptionsToProps.js +11 -0
- package/build/renderers/stepComponentToProps.js +32 -0
- package/build/renderers/utils.js +69 -0
- package/build/renderers/utils.test.js +70 -0
- package/build/stories/dev-tools/ContainerQueries.story.js +66 -0
- package/build/stories/dev-tools/Debugger.story.js +38 -0
- package/build/stories/dev-tools/FixtureSelect.story.js +23 -0
- package/build/stories/dev-tools/TestServer.story.js +32 -0
- package/build/stories/examples/NativeFlow.story.js +80 -0
- package/build/stories/examples/Recipients.story.js +568 -0
- package/build/stories/spec/behavior/Copy.story.js +71 -0
- package/build/stories/spec/behavior/Link.story.js +40 -0
- package/build/stories/spec/behavior/Modal.story.js +79 -0
- package/build/stories/spec/behavior/Subflow.story.js +267 -0
- package/build/stories/spec/layouts/Decision.story.js +241 -0
- package/build/stories/spec/layouts/Image.Illustrations.Animated.story.js +37 -0
- package/build/stories/spec/layouts/Image.Sizes.story.js +58 -0
- package/build/stories/spec/layouts/Modal.story.js +81 -0
- package/build/stories/spec/layouts/Search.story.js +325 -0
- package/build/stories/spec/layouts/Upsell.story.js +55 -0
- package/build/stories/spec/layouts/button/Button.story.js +100 -0
- package/build/stories/spec/layouts/button/PinnedButton.story.js +81 -0
- package/build/stories/spec/response/ActionResponse.story.js +66 -0
- package/build/stories/spec/schemas/MultiSelect.story.js +148 -0
- package/build/stories/spec/schemas/Upload.story.js +168 -0
- package/build/stories/spec/schemas/const/ConstLayout.story.js +159 -0
- package/build/stories/spec/schemas/const/ObjectConst.story.js +94 -0
- package/build/stories/spec/schemas/features/PersistAsync.story.js +211 -0
- package/build/stories/spec/schemas/features/ValidationAsync.story.js +103 -0
- package/build/stories/spec/schemas/object/FormattedValue.story.js +92 -0
- package/build/stories/spec/schemas/object/MoneyInput.story.js +240 -0
- package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +55 -0
- package/build/stories/spec/schemas/oneOf/OneOfWithSingleOption.story.js +114 -0
- package/build/stories/spec/step/Controls.story.js +109 -0
- package/build/stories/spec/step/DFModal.story.js +58 -0
- package/build/stories/spec/step/Footer.story.js +70 -0
- package/build/stories/spec/step/Navigation.story.js +20 -0
- package/build/stories/spec/step/ScrollToBottom.story.js +103 -0
- package/build/stories/spec/step/Tags.story.js +39 -0
- package/build/stories/spec/step/ToolBar.story.js +60 -0
- package/build/stories/spec/step/features/ErrorHandling.story.js +92 -0
- package/build/stories/spec/step/features/External.story.js +91 -0
- package/build/stories/spec/step/features/Polling.story.js +108 -0
- package/build/stories/spec/step/features/RefreshAfter.story.js +92 -0
- package/build/stories/spec/step/features/refresh/Refresh.story.js +258 -0
- package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +958 -0
- package/build/stories/types.js +1 -0
- package/build/stories/utils/fixtureHttpClient.js +70 -0
- package/build/stories/utils/getBasicStep.js +223 -0
- package/build/stories/utils/mockSearchHandler.js +71 -0
- package/build/stories/utils/render-utils.js +41 -0
- package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +17 -0
- package/build/test-utils/DynamicFlowWise.js +37 -0
- package/build/test-utils/DynamicFlowWiseModal.js +34 -0
- package/build/test-utils/NeptuneProviders.js +11 -0
- package/build/test-utils/component-utils.js +5 -0
- package/build/test-utils/fetch-utils.js +45 -0
- package/build/test-utils/getMergedTestRenderers.js +34 -0
- package/build/test-utils/getRandomId.js +1 -0
- package/build/test-utils/index.js +3 -0
- package/build/test-utils/openLinkInNewTab.js +15 -0
- package/build/test-utils/rtl-utils.js +7 -0
- package/build/test-utils/step-utils.js +6 -0
- package/build/test-utils/wait.js +3 -0
- package/build/tests/AlertLayout.test.js +78 -0
- package/build/tests/ArrayTuple.test.js +118 -0
- package/build/tests/ButtonLayout.test.js +308 -0
- package/build/tests/ConstLayout.test.js +95 -0
- package/build/tests/DateInput.test.js +163 -0
- package/build/tests/DecisionLayout.test.js +146 -0
- package/build/tests/DynamicFlow.test.js +147 -0
- package/build/tests/External.test.js +169 -0
- package/build/tests/Flow.test.js +328 -0
- package/build/tests/FormLayout.test.js +28 -0
- package/build/tests/FormattedValue.test.js +107 -0
- package/build/tests/ImageRenderer.test.js +78 -0
- package/build/tests/InitialAction.test.js +179 -0
- package/build/tests/InitialStep.test.js +168 -0
- package/build/tests/InstructionsLayout.test.js +45 -0
- package/build/tests/ListLayout.test.js +168 -0
- package/build/tests/Logging.test.js +53 -0
- package/build/tests/ModalBehavior.test.js +149 -0
- package/build/tests/MoneyInput.test.js +316 -0
- package/build/tests/MultiUpload.test.js +293 -0
- package/build/tests/NativeBack.test.js +267 -0
- package/build/tests/NoOp.test.js +194 -0
- package/build/tests/OneOfInitialisation.test.js +571 -0
- package/build/tests/PersistAsync.test.js +687 -0
- package/build/tests/Polling.test.js +702 -0
- package/build/tests/Prefetching.test.js +230 -0
- package/build/tests/RefreshAfter.test.js +63 -0
- package/build/tests/RefreshOnChange.ResponseHandling.test.js +205 -0
- package/build/tests/RefreshOnChange.test.js +233 -0
- package/build/tests/RefreshOnChange.with.Segmented.test.js +350 -0
- package/build/tests/RefreshOnChange.with.Tabs.test.js +358 -0
- package/build/tests/RefreshOnChangePreserve.test.js +224 -0
- package/build/tests/RendererProps.test.js +361 -0
- package/build/tests/Repeatable.test.js +107 -0
- package/build/tests/Rerendering.test.js +67 -0
- package/build/tests/ReviewLayout.test.js +274 -0
- package/build/tests/SchemaOnChange.test.js +133 -0
- package/build/tests/SchemaReferences.test.js +88 -0
- package/build/tests/ScrollToBottom.test.js +122 -0
- package/build/tests/ScrollToError.test.js +217 -0
- package/build/tests/SegmentedControl.test.js +49 -0
- package/build/tests/SingleFileUpload.test.js +168 -0
- package/build/tests/StatusList.test.js +85 -0
- package/build/tests/Subflow.test.js +887 -0
- package/build/tests/Submission.ResponseHandling.test.js +557 -0
- package/build/tests/Submission.merging.test.js +202 -0
- package/build/tests/Submission.test.js +748 -0
- package/build/tests/Tags.test.js +475 -0
- package/build/tests/Upsell.test.js +154 -0
- package/build/tests/ValidationAsync.test.js +295 -0
- package/build/tests/legacy/Actions.test.js +158 -0
- package/build/tests/legacy/BackButton.test.js +114 -0
- package/build/tests/legacy/HiddenSchemas.test.js +246 -0
- package/build/tests/legacy/MultiSelect.test.js +501 -0
- package/build/tests/legacy/MultipleFileUploadSchema.test.js +350 -0
- package/build/tests/legacy/PersistAsync.blob-schema.test.js +224 -0
- package/build/tests/legacy/PersistAsync.string-schema.test.js +211 -0
- package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +209 -0
- package/build/tests/legacy/RefreshStepOnChange.test.js +424 -0
- package/build/tests/legacy/Search.test.js +439 -0
- package/build/tests/renderers/MultiSelectInputRendererProps.test.js +58 -0
- package/build/tests/renderers/SelectInputRendererProps.test.js +43 -0
- package/build/tests/renderers/TextInputRenderer.test.js +51 -0
- package/build/tsconfig.types.tsbuildinfo +1 -1
- package/build/types/domain/features/polling/getStepPolling.d.ts.map +1 -1
- package/build/types.js +1 -0
- package/build/useDynamicFlow.js +105 -0
- package/build/useDynamicFlowModal.js +58 -0
- package/build/utils/analyse-step.js +14 -0
- package/build/utils/component-utils.js +8 -0
- package/build/utils/component-utils.test.js +113 -0
- package/build/utils/getScrollToTop.js +12 -0
- package/build/utils/normalise-flow-id.js +1 -0
- package/build/utils/normalise-flow-id.test.js +24 -0
- package/build/utils/recursiveMerge.js +40 -0
- package/build/utils/recursiveMerge.test.js +93 -0
- package/build/utils/type-utils.js +21 -0
- package/build/utils/type-validators.js +11 -0
- package/build/utils/type-validators.test.js +180 -0
- package/build/utils/useStableCallback.js +15 -0
- package/package.json +37 -38
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { groupLayoutByPinned } from './groupLayoutByPinned';
|
|
2
|
+
describe('groupLayoutByPinned', () => {
|
|
3
|
+
it('should handle empty layouts array', () => {
|
|
4
|
+
const result = groupLayoutByPinned([]);
|
|
5
|
+
expect(result.pinned).toEqual([]);
|
|
6
|
+
expect(result.nonPinned).toEqual([]);
|
|
7
|
+
});
|
|
8
|
+
it('should leave unpinned layouts as is', () => {
|
|
9
|
+
const layouts = [
|
|
10
|
+
{ type: 'button' },
|
|
11
|
+
{ type: 'heading', text: 'Heading' },
|
|
12
|
+
{ type: 'paragraph', text: 'Paragraph' },
|
|
13
|
+
{
|
|
14
|
+
type: 'columns',
|
|
15
|
+
left: [
|
|
16
|
+
{ type: 'button' },
|
|
17
|
+
{ type: 'heading', text: 'Heading' },
|
|
18
|
+
{ type: 'paragraph', text: 'Paragraph' },
|
|
19
|
+
],
|
|
20
|
+
right: [
|
|
21
|
+
{ type: 'button' },
|
|
22
|
+
{ type: 'heading', text: 'Heading' },
|
|
23
|
+
{ type: 'paragraph', text: 'Paragraph' },
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const result = groupLayoutByPinned(layouts);
|
|
28
|
+
expect(result.pinned).toEqual([]);
|
|
29
|
+
expect(result.nonPinned).toEqual(layouts);
|
|
30
|
+
});
|
|
31
|
+
it('should group layouts by pinned', () => {
|
|
32
|
+
const layouts = [
|
|
33
|
+
{ type: 'button', pinOrder: 1 },
|
|
34
|
+
{ type: 'button', pinOrder: 2 },
|
|
35
|
+
{ type: 'button' },
|
|
36
|
+
];
|
|
37
|
+
const result = groupLayoutByPinned(layouts);
|
|
38
|
+
expect(result.pinned).toEqual([
|
|
39
|
+
{ type: 'button', pinOrder: 1 },
|
|
40
|
+
{ type: 'button', pinOrder: 2 },
|
|
41
|
+
]);
|
|
42
|
+
expect(result.nonPinned).toEqual([{ type: 'button' }]);
|
|
43
|
+
});
|
|
44
|
+
it('should group layouts by pinned in nested layout', () => {
|
|
45
|
+
const layouts = [
|
|
46
|
+
{
|
|
47
|
+
type: 'columns',
|
|
48
|
+
left: [
|
|
49
|
+
{
|
|
50
|
+
type: 'button',
|
|
51
|
+
pinOrder: 1,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'heading',
|
|
55
|
+
text: 'Money for here, there and everywhere',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'button',
|
|
59
|
+
pinOrder: 2,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
right: [
|
|
63
|
+
{
|
|
64
|
+
type: 'paragraph',
|
|
65
|
+
text: "Sending money shouldn't cost the earth. That's why we charge you as little as possible when you transfer and exchange money internationally – you can save up to 9x compared to UK high street banks.",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'button',
|
|
69
|
+
pinOrder: 3,
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
{ type: 'button' },
|
|
74
|
+
];
|
|
75
|
+
const result = groupLayoutByPinned(layouts);
|
|
76
|
+
expect(result.pinned).toEqual([
|
|
77
|
+
{ type: 'button', pinOrder: 1 },
|
|
78
|
+
{ type: 'button', pinOrder: 2 },
|
|
79
|
+
{ type: 'button', pinOrder: 3 },
|
|
80
|
+
]);
|
|
81
|
+
expect(result.nonPinned).toEqual([
|
|
82
|
+
{
|
|
83
|
+
type: 'columns',
|
|
84
|
+
left: [
|
|
85
|
+
{
|
|
86
|
+
type: 'heading',
|
|
87
|
+
text: 'Money for here, there and everywhere',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
right: [
|
|
91
|
+
{
|
|
92
|
+
type: 'paragraph',
|
|
93
|
+
text: "Sending money shouldn't cost the earth. That's why we charge you as little as possible when you transfer and exchange money internationally – you can save up to 9x compared to UK high street banks.",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
{ type: 'button' },
|
|
98
|
+
]);
|
|
99
|
+
});
|
|
100
|
+
it('should handle layouts with child components', () => {
|
|
101
|
+
const layouts = [
|
|
102
|
+
{
|
|
103
|
+
type: 'section',
|
|
104
|
+
title: 'Container',
|
|
105
|
+
components: [
|
|
106
|
+
{ type: 'button', pinOrder: 0 },
|
|
107
|
+
{ type: 'paragraph', text: 'Some text' },
|
|
108
|
+
{ type: 'button', pinOrder: 1 },
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{ type: 'button' },
|
|
112
|
+
];
|
|
113
|
+
const result = groupLayoutByPinned(layouts);
|
|
114
|
+
expect(result.pinned).toEqual([
|
|
115
|
+
{ type: 'button', pinOrder: 0 },
|
|
116
|
+
{ type: 'button', pinOrder: 1 },
|
|
117
|
+
]);
|
|
118
|
+
expect(result.nonPinned).toEqual([
|
|
119
|
+
{
|
|
120
|
+
type: 'section',
|
|
121
|
+
title: 'Container',
|
|
122
|
+
components: [{ type: 'paragraph', text: 'Some text' }],
|
|
123
|
+
},
|
|
124
|
+
{ type: 'button' },
|
|
125
|
+
]);
|
|
126
|
+
});
|
|
127
|
+
it('should handle mixed nested structures', () => {
|
|
128
|
+
const layouts = [
|
|
129
|
+
{
|
|
130
|
+
type: 'columns',
|
|
131
|
+
left: [
|
|
132
|
+
{
|
|
133
|
+
type: 'section',
|
|
134
|
+
title: 'Left Container',
|
|
135
|
+
components: [
|
|
136
|
+
{ type: 'button', pinOrder: 1 },
|
|
137
|
+
{ type: 'paragraph', text: 'Left text' },
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
right: [
|
|
142
|
+
{ type: 'button', pinOrder: 2 },
|
|
143
|
+
{ type: 'paragraph', text: 'Right paragraph' },
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
const result = groupLayoutByPinned(layouts);
|
|
148
|
+
expect(result.pinned).toEqual([
|
|
149
|
+
{ type: 'button', pinOrder: 1 },
|
|
150
|
+
{ type: 'button', pinOrder: 2 },
|
|
151
|
+
]);
|
|
152
|
+
expect(result.nonPinned).toEqual([
|
|
153
|
+
{
|
|
154
|
+
type: 'columns',
|
|
155
|
+
left: [
|
|
156
|
+
{
|
|
157
|
+
type: 'section',
|
|
158
|
+
title: 'Left Container',
|
|
159
|
+
components: [{ type: 'paragraph', text: 'Left text' }],
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
right: [{ type: 'paragraph', text: 'Right paragraph' }],
|
|
163
|
+
},
|
|
164
|
+
]);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const mapSpecImage = (image) => {
|
|
2
|
+
var _a, _b, _c;
|
|
3
|
+
return image
|
|
4
|
+
? {
|
|
5
|
+
uri: (_b = (_a = image.uri) !== null && _a !== void 0 ? _a : image.url) !== null && _b !== void 0 ? _b : '',
|
|
6
|
+
accessibilityDescription: (_c = image.accessibilityDescription) !== null && _c !== void 0 ? _c : image.text,
|
|
7
|
+
}
|
|
8
|
+
: undefined;
|
|
9
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalizes the margin of the last layout component in the container by removing its margin if it is not explicitly set.
|
|
3
|
+
* @param container The array of layout components.
|
|
4
|
+
* @returns The array of layout components with the last component's margin normalized if needed.
|
|
5
|
+
*/
|
|
6
|
+
export const normaliseMarginInLastComponent = (container) => {
|
|
7
|
+
return container.map((component, index) => {
|
|
8
|
+
const shouldRemoveMargin = index === container.length - 1 && component.margin === undefined;
|
|
9
|
+
return shouldRemoveMargin ? Object.assign(Object.assign({}, component), { margin: 'xs' }) : component;
|
|
10
|
+
});
|
|
11
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const mapLegacyContext = (context) => {
|
|
2
|
+
switch (context) {
|
|
3
|
+
case 'success':
|
|
4
|
+
return 'positive';
|
|
5
|
+
case 'failure':
|
|
6
|
+
return 'negative';
|
|
7
|
+
case 'info':
|
|
8
|
+
case 'primary':
|
|
9
|
+
return 'neutral';
|
|
10
|
+
default:
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export const mapLegacyBias = (bias) => {
|
|
15
|
+
switch (bias) {
|
|
16
|
+
case 'left':
|
|
17
|
+
return 'start';
|
|
18
|
+
case 'right':
|
|
19
|
+
return 'end';
|
|
20
|
+
default:
|
|
21
|
+
return bias;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const mapLegacyAlign = (align) => {
|
|
25
|
+
switch (align) {
|
|
26
|
+
case 'left':
|
|
27
|
+
return 'start';
|
|
28
|
+
case 'right':
|
|
29
|
+
return 'end';
|
|
30
|
+
default:
|
|
31
|
+
return align;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const legacyActionTypeToContext = {
|
|
35
|
+
positive: 'positive',
|
|
36
|
+
negative: 'negative',
|
|
37
|
+
primary: 'neutral',
|
|
38
|
+
secondary: 'neutral',
|
|
39
|
+
link: 'neutral',
|
|
40
|
+
};
|
|
41
|
+
export const mapLegacyActionTypeToContext = (type) => type && type in legacyActionTypeToContext ? legacyActionTypeToContext[type] : 'neutral';
|
|
42
|
+
const legacyActionTypeToControl = {
|
|
43
|
+
primary: 'primary',
|
|
44
|
+
secondary: 'secondary',
|
|
45
|
+
link: 'tertiary',
|
|
46
|
+
positive: 'primary',
|
|
47
|
+
negative: 'primary',
|
|
48
|
+
};
|
|
49
|
+
export const mapLegacyActionTypeToControl = (type) => type && type in legacyActionTypeToControl ? legacyActionTypeToControl[type] : 'secondary';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { mapSpecImage } from './image';
|
|
2
|
+
export const getDomainLayerMedia = ({ icon, image, media }) => {
|
|
3
|
+
if (media) {
|
|
4
|
+
return media;
|
|
5
|
+
}
|
|
6
|
+
if (icon || image) {
|
|
7
|
+
return {
|
|
8
|
+
type: 'legacy',
|
|
9
|
+
icon,
|
|
10
|
+
image: mapSpecImage(image),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { getDomainLayerMedia } from './media-utils';
|
|
13
|
+
import { mapTags } from './tags-utils';
|
|
14
|
+
export const mapStringSchemaSuggestions = (suggestions, logEvent) => {
|
|
15
|
+
if (!suggestions)
|
|
16
|
+
return undefined;
|
|
17
|
+
return {
|
|
18
|
+
values: suggestions.values.map((_a) => {
|
|
19
|
+
var { icon, image, media, value } = _a, rest = __rest(_a, ["icon", "image", "media", "value"]);
|
|
20
|
+
if (typeof value !== 'string') {
|
|
21
|
+
logEvent('warning', `Suggestion values for string schemas must be of type string. Found ${typeof value} instead.`);
|
|
22
|
+
}
|
|
23
|
+
return Object.assign(Object.assign({}, rest), { media: getDomainLayerMedia({ icon, image, media }), value, tags: mapTags(rest) });
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { mapStringSchemaSuggestions } from './suggestions-utils';
|
|
2
|
+
import { vi } from 'vitest';
|
|
3
|
+
describe('mapStringSchemaSuggestions', () => {
|
|
4
|
+
it('logs a warning when the value is a not a string', () => {
|
|
5
|
+
const logEvent = vi.fn();
|
|
6
|
+
const suggestions = {
|
|
7
|
+
values: [{ value: 123, label: 'Number suggestion' }],
|
|
8
|
+
};
|
|
9
|
+
mapStringSchemaSuggestions(suggestions, logEvent);
|
|
10
|
+
expect(logEvent).toHaveBeenCalledWith('warning', 'Suggestion values for string schemas must be of type string. Found number instead.');
|
|
11
|
+
});
|
|
12
|
+
it('logs a warning when the value is null', () => {
|
|
13
|
+
const logEvent = vi.fn();
|
|
14
|
+
const suggestions = {
|
|
15
|
+
values: [{ value: null, label: 'Null suggestion' }],
|
|
16
|
+
};
|
|
17
|
+
mapStringSchemaSuggestions(suggestions, logEvent);
|
|
18
|
+
expect(logEvent).toHaveBeenCalledWith('warning', 'Suggestion values for string schemas must be of type string. Found object instead.');
|
|
19
|
+
});
|
|
20
|
+
it('does not log a warning when the value is a string', () => {
|
|
21
|
+
const logEvent = vi.fn();
|
|
22
|
+
const suggestions = {
|
|
23
|
+
values: [{ value: 'string', label: 'String suggestion' }],
|
|
24
|
+
};
|
|
25
|
+
mapStringSchemaSuggestions(suggestions, logEvent);
|
|
26
|
+
expect(logEvent).not.toHaveBeenCalled();
|
|
27
|
+
});
|
|
28
|
+
it('does not log a warning when the value is an empty string', () => {
|
|
29
|
+
const logEvent = vi.fn();
|
|
30
|
+
const suggestions = {
|
|
31
|
+
values: [{ value: '', label: 'Empty string suggestion' }],
|
|
32
|
+
};
|
|
33
|
+
mapStringSchemaSuggestions(suggestions, logEvent);
|
|
34
|
+
expect(logEvent).not.toHaveBeenCalled();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const mapTags = ({ tag, tags }) => tags !== null && tags !== void 0 ? tags : (tag != null ? [tag] : undefined);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getDomainLayerBehavior } from './behavior-utils';
|
|
2
|
+
import { mapLegacyContext } from './legacy-utils';
|
|
3
|
+
export const mapInlineAlert = (alert) => {
|
|
4
|
+
return alert
|
|
5
|
+
? {
|
|
6
|
+
content: alert.content,
|
|
7
|
+
context: alert.context ? mapLegacyContext(alert.context) : 'neutral',
|
|
8
|
+
}
|
|
9
|
+
: undefined;
|
|
10
|
+
};
|
|
11
|
+
export const mapAdditionalInfo = (info, mapperProps) => {
|
|
12
|
+
const { onBehavior, registerSubmissionBehavior } = mapperProps;
|
|
13
|
+
if (info) {
|
|
14
|
+
const behavior = getDomainLayerBehavior(info, [], registerSubmissionBehavior);
|
|
15
|
+
return {
|
|
16
|
+
text: info.text,
|
|
17
|
+
href: behavior.type === 'link' ? behavior.url : undefined,
|
|
18
|
+
accessibilityDescription: info.accessibilityDescription,
|
|
19
|
+
onClick: behavior.type === 'none'
|
|
20
|
+
? undefined
|
|
21
|
+
: () => {
|
|
22
|
+
void onBehavior(behavior);
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
};
|
|
28
|
+
export const mapSchemaAlert = (alert) => {
|
|
29
|
+
return alert
|
|
30
|
+
? {
|
|
31
|
+
content: alert.markdown,
|
|
32
|
+
context: alert.context ? mapLegacyContext(alert.context) : 'neutral',
|
|
33
|
+
}
|
|
34
|
+
: undefined;
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { recursiveMerge } from './utils/recursiveMerge';
|
|
2
|
+
export const getSubflowCallbacks = ({ behavior, close, restart, onBehavior, onError, onEvent, }) => {
|
|
3
|
+
const { onCompletion: onCompletionBehavior, onError: onErrorBehavior, referrerId, resultKey, } = behavior;
|
|
4
|
+
return {
|
|
5
|
+
onCompletion: (result) => {
|
|
6
|
+
var _a;
|
|
7
|
+
restart();
|
|
8
|
+
if (!onCompletionBehavior) {
|
|
9
|
+
close();
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (onCompletionBehavior.type === 'action') {
|
|
13
|
+
const newActionData = recursiveMerge((_a = onCompletionBehavior.action.data) !== null && _a !== void 0 ? _a : null, resultKey ? { [resultKey]: result } : result);
|
|
14
|
+
void onBehavior(Object.assign(Object.assign({}, onCompletionBehavior), { action: Object.assign(Object.assign({}, onCompletionBehavior.action), { data: newActionData }) }));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
void onBehavior(onCompletionBehavior);
|
|
18
|
+
close();
|
|
19
|
+
},
|
|
20
|
+
onError: (error, status) => {
|
|
21
|
+
if (!onErrorBehavior) {
|
|
22
|
+
onError(error, {}, status);
|
|
23
|
+
close();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
restart();
|
|
27
|
+
void onBehavior(onErrorBehavior);
|
|
28
|
+
close();
|
|
29
|
+
},
|
|
30
|
+
onEvent: (name, properties) => {
|
|
31
|
+
onEvent(name, Object.assign({ referrerId }, properties));
|
|
32
|
+
},
|
|
33
|
+
onCancellation: () => {
|
|
34
|
+
restart();
|
|
35
|
+
close();
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import cs from './cs.json';
|
|
2
|
+
import de from './de.json';
|
|
3
|
+
import en from './en.json';
|
|
4
|
+
import es from './es.json';
|
|
5
|
+
import fr from './fr.json';
|
|
6
|
+
import hu from './hu.json';
|
|
7
|
+
import id from './id.json';
|
|
8
|
+
import it from './it.json';
|
|
9
|
+
import ja from './ja.json';
|
|
10
|
+
import nl from './nl.json';
|
|
11
|
+
import pl from './pl.json';
|
|
12
|
+
import pt from './pt.json';
|
|
13
|
+
import ro from './ro.json';
|
|
14
|
+
import ru from './ru.json';
|
|
15
|
+
import th from './th.json';
|
|
16
|
+
import tr from './tr.json';
|
|
17
|
+
import zhCN from './zh_CN.json';
|
|
18
|
+
import zhHK from './zh_HK.json';
|
|
19
|
+
const translations = {
|
|
20
|
+
cs,
|
|
21
|
+
en,
|
|
22
|
+
de,
|
|
23
|
+
es,
|
|
24
|
+
fr,
|
|
25
|
+
hu,
|
|
26
|
+
id,
|
|
27
|
+
it,
|
|
28
|
+
ja,
|
|
29
|
+
nl,
|
|
30
|
+
pl,
|
|
31
|
+
pt,
|
|
32
|
+
ro,
|
|
33
|
+
ru,
|
|
34
|
+
th,
|
|
35
|
+
tr,
|
|
36
|
+
zh: zhCN,
|
|
37
|
+
'zh-CN': zhCN,
|
|
38
|
+
'zh-HK': zhHK,
|
|
39
|
+
};
|
|
40
|
+
export default translations;
|
package/build/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { makeHttpClient } from './common/makeHttpClient';
|
|
2
|
+
export { default as translations } from './i18n';
|
|
3
|
+
export { findRendererPropsByType } from './renderers/utils';
|
|
4
|
+
export { useDynamicFlow } from './useDynamicFlow';
|
|
5
|
+
export { useDynamicFlowModal } from './useDynamicFlowModal';
|
|
6
|
+
export { DynamicFlowCore as DynamicFlow } from './DynamicFlowCore';
|
|
7
|
+
export { makeRequestCache } from './domain/features/prefetch/request-cache';
|
|
8
|
+
export { eventNames } from './domain/features/eventNames';
|
package/build/main.js
CHANGED
|
@@ -2650,6 +2650,7 @@ var getStepPolling = ({
|
|
|
2650
2650
|
const { interval, delay = interval, maxAttempts, url, onError } = pollingConfig;
|
|
2651
2651
|
let abortController = new AbortController();
|
|
2652
2652
|
let intervalRef = null;
|
|
2653
|
+
let hasCompleted = false;
|
|
2653
2654
|
if (delay == null) {
|
|
2654
2655
|
throw new Error("Polling configuration must include delay or interval");
|
|
2655
2656
|
}
|
|
@@ -2662,18 +2663,24 @@ var getStepPolling = ({
|
|
|
2662
2663
|
const { signal } = abortController;
|
|
2663
2664
|
onPoll(url, onErrorBehavior, signal).then((result) => {
|
|
2664
2665
|
if (result) {
|
|
2665
|
-
|
|
2666
|
+
complete();
|
|
2666
2667
|
return;
|
|
2667
2668
|
}
|
|
2668
2669
|
if (attempts >= maxAttempts && !signal.aborted) {
|
|
2670
|
+
complete();
|
|
2669
2671
|
void onBehavior(onErrorBehavior);
|
|
2670
|
-
stop();
|
|
2671
2672
|
}
|
|
2672
2673
|
}).catch(() => {
|
|
2673
2674
|
});
|
|
2674
2675
|
};
|
|
2676
|
+
const complete = () => {
|
|
2677
|
+
hasCompleted = true;
|
|
2678
|
+
stop();
|
|
2679
|
+
};
|
|
2675
2680
|
const start = () => {
|
|
2676
|
-
|
|
2681
|
+
if (hasCompleted) {
|
|
2682
|
+
return;
|
|
2683
|
+
}
|
|
2677
2684
|
intervalRef = setInterval(poll, delay * 1e3);
|
|
2678
2685
|
poll();
|
|
2679
2686
|
};
|
|
@@ -2682,7 +2689,7 @@ var getStepPolling = ({
|
|
|
2682
2689
|
logEvent("warning", "Attempted to stop polling but it was not started");
|
|
2683
2690
|
return;
|
|
2684
2691
|
}
|
|
2685
|
-
|
|
2692
|
+
clearInterval(intervalRef);
|
|
2686
2693
|
abortController.abort();
|
|
2687
2694
|
};
|
|
2688
2695
|
return { start, stop };
|
package/build/main.mjs
CHANGED
|
@@ -2620,6 +2620,7 @@ var getStepPolling = ({
|
|
|
2620
2620
|
const { interval, delay = interval, maxAttempts, url, onError } = pollingConfig;
|
|
2621
2621
|
let abortController = new AbortController();
|
|
2622
2622
|
let intervalRef = null;
|
|
2623
|
+
let hasCompleted = false;
|
|
2623
2624
|
if (delay == null) {
|
|
2624
2625
|
throw new Error("Polling configuration must include delay or interval");
|
|
2625
2626
|
}
|
|
@@ -2632,18 +2633,24 @@ var getStepPolling = ({
|
|
|
2632
2633
|
const { signal } = abortController;
|
|
2633
2634
|
onPoll(url, onErrorBehavior, signal).then((result) => {
|
|
2634
2635
|
if (result) {
|
|
2635
|
-
|
|
2636
|
+
complete();
|
|
2636
2637
|
return;
|
|
2637
2638
|
}
|
|
2638
2639
|
if (attempts >= maxAttempts && !signal.aborted) {
|
|
2640
|
+
complete();
|
|
2639
2641
|
void onBehavior(onErrorBehavior);
|
|
2640
|
-
stop();
|
|
2641
2642
|
}
|
|
2642
2643
|
}).catch(() => {
|
|
2643
2644
|
});
|
|
2644
2645
|
};
|
|
2646
|
+
const complete = () => {
|
|
2647
|
+
hasCompleted = true;
|
|
2648
|
+
stop();
|
|
2649
|
+
};
|
|
2645
2650
|
const start = () => {
|
|
2646
|
-
|
|
2651
|
+
if (hasCompleted) {
|
|
2652
|
+
return;
|
|
2653
|
+
}
|
|
2647
2654
|
intervalRef = setInterval(poll, delay * 1e3);
|
|
2648
2655
|
poll();
|
|
2649
2656
|
};
|
|
@@ -2652,7 +2659,7 @@ var getStepPolling = ({
|
|
|
2652
2659
|
logEvent("warning", "Attempted to stop polling but it was not started");
|
|
2653
2660
|
return;
|
|
2654
2661
|
}
|
|
2655
|
-
|
|
2662
|
+
clearInterval(intervalRef);
|
|
2656
2663
|
abortController.abort();
|
|
2657
2664
|
};
|
|
2658
2665
|
return { start, stop };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { findRendererPropsByType } from './utils';
|
|
3
|
+
export const CoreRootRenderer = {
|
|
4
|
+
canRenderType: 'root',
|
|
5
|
+
render: ({ children, childrenProps, subflow }) => {
|
|
6
|
+
if ((subflow === null || subflow === void 0 ? void 0 : subflow.presentation.type) === 'push') {
|
|
7
|
+
return _jsx(_Fragment, { children: subflow.children });
|
|
8
|
+
}
|
|
9
|
+
const [stepProps] = findRendererPropsByType(childrenProps, 'step');
|
|
10
|
+
return (_jsxs("div", { id: stepProps === null || stepProps === void 0 ? void 0 : stepProps.id, className: "dynamic-flow-step", children: [children, (subflow === null || subflow === void 0 ? void 0 : subflow.presentation.type) === 'modal' ? subflow.children : undefined] }));
|
|
11
|
+
},
|
|
12
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const getRenderFunction = (renderers) => {
|
|
3
|
+
function ComponentRenderer(props) {
|
|
4
|
+
const { type } = props;
|
|
5
|
+
if (type === 'hidden') {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const renderer = renderers.find(({ canRenderType, canRender = () => true }) =>
|
|
9
|
+
// once the type is matched, we know the props are of the correct type
|
|
10
|
+
canRenderType === type && canRender(props));
|
|
11
|
+
if (!renderer) {
|
|
12
|
+
throw new Error(`Could not find a renderer for ${type}`);
|
|
13
|
+
}
|
|
14
|
+
// if renderer defined, we know props are of the correct type
|
|
15
|
+
return renderer.render(props);
|
|
16
|
+
}
|
|
17
|
+
const render = (props) => {
|
|
18
|
+
if (!props) {
|
|
19
|
+
return _jsx(_Fragment, {});
|
|
20
|
+
}
|
|
21
|
+
return _jsx(ComponentRenderer, Object.assign({}, props), props.uid);
|
|
22
|
+
};
|
|
23
|
+
return render;
|
|
24
|
+
};
|